Convert-Binary-C-0.76/0000755000175000001440000000000011550665107013211 5ustar mhxusersConvert-Binary-C-0.76/bin/0000755000175000001440000000000011550665107013761 5ustar mhxusersConvert-Binary-C-0.76/bin/elf.PL0000755000175000001440000004726011550664613015001 0ustar mhxusersuse Config; $file = @ARGV ? shift : 'examples/elf.pl'; open OUT, ">$file" or die "Can't create $file: $!"; print OUT <<"!GROK!THIS!"; $Config{startperl} -w !GROK!THIS! print OUT <<'!NO!SUBS!'; ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:12 +0200 $ # $Revision: 8 $ # $Source: /bin/elf.PL $ # ################################################################################ # # Copyright (c) 2005-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Convert::Binary::C; use Data::Dumper; use Getopt::Long; use strict; #------------------------------------------------- # Constants for accessing ELF identification data #------------------------------------------------- use constant EI_CLASS => 4; use constant EI_DATA => 5; my %opt; Getopt::Long::Configure('bundling'); unless (GetOptions(\%opt, qw( list|l info|i debug section|s=s symbols ))) { eval q{ require Pod::Usage; Pod::Usage::pod2usage(2); }; print "Cannot show help, please consider installing Pod::Usage.\n"; exit; } unless (@ARGV) { print "No input file (try '$0 -h' for usage).\n"; exit; } #--------------------------------------------------- # Compiler Configuration (generated using ccconfig) #--------------------------------------------------- my %config = ( Alignment => 4, CharSize => 1, CompoundAlignment => 1, IntSize => 4, LongLongSize => 8, LongSize => 4, ShortSize => 2, UnsignedChars => 0 ); #----------- # ELF Types #----------- my @elftype = qw( ET_NONE ET_REL ET_EXEC ET_DYN ET_CORE ); #------------------- # ELF Section Types #------------------- my @sectype = qw( SHT_NULL SHT_PROGBITS SHT_SYMTAB SHT_STRTAB SHT_RELA SHT_HASH SHT_DYNAMIC SHT_NOTE SHT_NOBITS SHT_REL SHT_SHLIB SHT_DYNSYM ); #------------------- # ELF Segment Types #------------------- my @segtype = qw( PT_NULL PT_LOAD PT_DYNAMIC PT_INTERP PT_NOTE PT_SHLIB PT_PHDR ); #------------------- # ELF Machine Types #------------------- my %machine = ( 0 => 'EM_NONE (No machine)', 1 => 'EM_M32 (AT&T WE 32100)', 2 => 'EM_SPARC (SUN SPARC)', 3 => 'EM_386 (Intel 80386)', 4 => 'EM_68K (Motorola m68k family)', 5 => 'EM_88K (Motorola m88k family)', 7 => 'EM_860 (Intel 80860)', 8 => 'EM_MIPS (MIPS R3000 big-endian)', 9 => 'EM_S370 (IBM System/370)', 10 => 'EM_MIPS_RS3_LE (MIPS R3000 little-endian)', 15 => 'EM_PARISC (HPPA)', 17 => 'EM_VPP500 (Fujitsu VPP500)', 18 => 'EM_SPARC32PLUS (Sun\'s "v8plus")', 19 => 'EM_960 (Intel 80960)', 20 => 'EM_PPC (PowerPC)', 21 => 'EM_PPC64 (PowerPC 64-bit)', 22 => 'EM_S390 (IBM S390)', 36 => 'EM_V800 (NEC V800 series)', 37 => 'EM_FR20 (Fujitsu FR20)', 38 => 'EM_RH32 (TRW RH-32)', 39 => 'EM_RCE (Motorola RCE)', 40 => 'EM_ARM (ARM)', 41 => 'EM_FAKE_ALPHA (Digital Alpha)', 42 => 'EM_SH (Hitachi SH)', 43 => 'EM_SPARCV9 (SPARC v9 64-bit)', 44 => 'EM_TRICORE (Siemens Tricore)', 45 => 'EM_ARC (Argonaut RISC Core)', 46 => 'EM_H8_300 (Hitachi H8/300)', 47 => 'EM_H8_300H (Hitachi H8/300H)', 48 => 'EM_H8S (Hitachi H8S)', 49 => 'EM_H8_500 (Hitachi H8/500)', 50 => 'EM_IA_64 (Intel Merced)', 51 => 'EM_MIPS_X (Stanford MIPS-X)', 52 => 'EM_COLDFIRE (Motorola Coldfire)', 53 => 'EM_68HC12 (Motorola M68HC12)', 54 => 'EM_MMA (Fujitsu MMA Multimedia Accelerator)', 55 => 'EM_PCP (Siemens PCP)', 56 => 'EM_NCPU (Sony nCPU embeeded RISC)', 57 => 'EM_NDR1 (Denso NDR1 microprocessor)', 58 => 'EM_STARCORE (Motorola Start*Core processor)', 59 => 'EM_ME16 (Toyota ME16 processor)', 60 => 'EM_ST100 (STMicroelectronic ST100 processor)', 61 => 'EM_TINYJ (Advanced Logic Corp. Tinyj emb.fam)', 62 => 'EM_X86_64 (AMD x86-64 architecture)', 63 => 'EM_PDSP (Sony DSP Processor)', 66 => 'EM_FX66 (Siemens FX66 microcontroller)', 67 => 'EM_ST9PLUS (STMicroelectronics ST9+ 8/16 mc)', 68 => 'EM_ST7 (STmicroelectronics ST7 8 bit mc)', 69 => 'EM_68HC16 (Motorola MC68HC16 microcontroller)', 70 => 'EM_68HC11 (Motorola MC68HC11 microcontroller)', 71 => 'EM_68HC08 (Motorola MC68HC08 microcontroller)', 72 => 'EM_68HC05 (Motorola MC68HC05 microcontroller)', 73 => 'EM_SVX (Silicon Graphics SVx)', 74 => 'EM_ST19 (STMicroelectronics ST19 8 bit mc)', 75 => 'EM_VAX (Digital VAX)', 76 => 'EM_CRIS (Axis Communications 32-bit embedded processor)', 77 => 'EM_JAVELIN (Infineon Technologies 32-bit embedded processor)', 78 => 'EM_FIREPATH (Element 14 64-bit DSP Processor)', 79 => 'EM_ZSP (LSI Logic 16-bit DSP Processor)', 80 => 'EM_MMIX (Donald Knuth\'s educational 64-bit processor)', 81 => 'EM_HUANY (Harvard University machine-independent object files)', 82 => 'EM_PRISM (SiTera Prism)', 83 => 'EM_AVR (Atmel AVR 8-bit microcontroller)', 84 => 'EM_FR30 (Fujitsu FR30)', 85 => 'EM_D10V (Mitsubishi D10V)', 86 => 'EM_D30V (Mitsubishi D30V)', 87 => 'EM_V850 (NEC v850)', 88 => 'EM_M32R (Mitsubishi M32R)', 89 => 'EM_MN10300 (Matsushita MN10300)', 90 => 'EM_MN10200 (Matsushita MN10200)', 91 => 'EM_PJ (picoJava)', 92 => 'EM_OPENRISC (OpenRISC 32-bit embedded processor)', 93 => 'EM_ARC_A5 (ARC Cores Tangent-A5)', 94 => 'EM_XTENSA (Tensilica Xtensa Architecture)', ); #----------------------------- # ELF Symbol Binding and Type #----------------------------- my %symbind = ( 0 => 'STB_LOCAL', 1 => 'STB_GLOBAL', 2 => 'STB_WEAK', 3 => 'STB_NUM', 10 => 'STB_LOOS', 12 => 'STB_HIOS', 13 => 'STB_LOPROC', 15 => 'STB_HIPROC', ); my %symtype = ( 0 => 'STT_NOTYPE', 1 => 'STT_OBJECT', 2 => 'STT_FUNC', 3 => 'STT_SECTION', 4 => 'STT_FILE', 5 => 'STT_COMMON', 6 => 'STT_TLS', 7 => 'STT_NUM', 10 => 'STT_LOOS', 12 => 'STT_HIOS', 13 => 'STT_LOPROC', 15 => 'STT_HIPROC', ); #-------------------------------------------------------- # Create a C::B::C object to convert ELF data structures #-------------------------------------------------------- my $ep = Convert::Binary::C->new(%config)->parse(elf_header()); #------------------------------------------- # Attach hooks to certain interesting types #------------------------------------------- my %hook = ( 'Ehdr.e_machine' => \%machine, 'Ehdr.e_type' => \@elftype, 'Shdr.sh_type' => \@sectype, 'Phdr.p_type' => \@segtype, ); for my $c (qw( Elf32 Elf64 )) { while (my($k,$v) = each %hook) { $ep->tag("$c\_$k", Hooks => { unpack => sub { my $x = shift; (ref $v eq 'HASH' ? $v->{$x} : $v->[$x]) || "Unknown ($x)" }}); } $ep->tag("$c\_Sym.st_info", Hooks => { unpack => sub { my $x = shift; my $b = $x >> 4; my $t = $x & 0xf; { sti_bind => $symbind{$b} || "Unknown ($b)", sti_type => $symtype{$t} || "Unknown ($t)", } }}); } #--------------------------------------- # Read the whole ELF file (inefficient) #--------------------------------------- my $elf = do { local($/, *FH); open FH, $ARGV[0] or die "$ARGV[0]: $!\n"; binmode FH; ; }; #--------------------------------- # Process ELF identification data #--------------------------------- my @ident = unpack "C16", substr $elf, 0, 16; #----------------------------- # Is this really an ELF file? #----------------------------- unless ($ident[0] == 0x7F && pack("C*", @ident[1..3]) eq 'ELF') { die "not an ELF file\n" } #----------------------------- # Check ELF class (32/64-Bit) #----------------------------- if ($ident[EI_CLASS] == 0) { die "invalid ELF class ($ident[EI_CLASS])\n" } if ($ident[EI_CLASS] > 2) { die "unsupported ELF class ($ident[EI_CLASS])\n" } my $class = $ident[EI_CLASS] == 1 ? 'Elf32' : 'Elf64'; #------------------------------------------- # Check Byte Order (BigEndian/LittleEndian) #------------------------------------------- if ($ident[EI_DATA] == 0) { die "invalid data encoding ($ident[EI_DATA])\n" } if ($ident[EI_DATA] > 2) { die "unsupported data encoding ($ident[EI_DATA])\n" } $ep->ByteOrder($ident[EI_DATA] == 1 ? 'LittleEndian' : 'BigEndian'); sub get { my($type, $off, $len) = @_; $ep->unpack("$class\_$type", @_ > 2 ? substr $elf, $off, $len : substr $elf, $off); } #--------------------------------------------------- # Unpack ELF header and section header string table #--------------------------------------------------- my $header = get('Ehdr', 0); my $shstrtab = get('Shdr', $header->{e_shoff} + $header->{e_shstrndx}*$header->{e_shentsize}); print Data::Dumper->Dump([$header], ["*$class\_Ehdr"]) if $opt{debug}; #---------------------------- # Get Name from String Table #---------------------------- sub get_name { my($tab, $off) = @_; return unpack "Z*", substr $elf, $tab->{sh_offset} + $off; } #-------------------------- # Read all program headers #-------------------------- for my $ix (0 .. $header->{e_phnum}-1) { my $phdr = get('Phdr', $header->{e_phoff} + $ix*$header->{e_phentsize}); print Data::Dumper->Dump([$phdr], ["*$class\_Phdr"]) if $opt{debug}; } #-------------------------- # Read all section headers #-------------------------- my %section; # for lookup by section name my @section; # for lookup by section index for my $ix (0 .. $header->{e_shnum}-1) { my $shdr = get('Shdr', $header->{e_shoff} + $ix*$header->{e_shentsize}); print Data::Dumper->Dump([$shdr], ["*$class\_Shdr"]) if $opt{debug}; $section{get_name($shstrtab, $shdr->{sh_name})} = $shdr; push @section, $shdr; } #----------------------------------- # Get Section Name by Section Index #----------------------------------- sub get_section_name { my $sec = shift; if ($sec == 0 || $sec >= 0xff00) { my %res = (0 => 'SHN_UNDEF', 0xfff1 => 'SHN_ABS', 0xfff2 => 'SHN_COMMON'); return $res{$sec} || sprintf "reserved section 0x%04X", $sec; } return $sec < @section ? get_name($shstrtab, $section[$sec]{sh_name}) : "invalid section $sec"; } #-------------------------- # Print Header Information #-------------------------- if ($opt{info}) { printf "Byte Order: %s\n", $ep->ByteOrder; printf "ELF Class : %s\n", $class; printf "ELF Type : %s\n", $header->{e_type}; printf "Machine : %s\n", $header->{e_machine}; } #------------------------ # Print List Of Sections #------------------------ if ($opt{list}) { printf "%-3s %-38s %-13s %-9s %-9s\n%s\n", 'Idx', 'Section', 'Type', 'Offset', 'Size', '-'x80; for my $ix (0 .. $#section) { my $sh = $section[$ix]; printf "%3d %-38s %-13s %9d %9d\n", $ix, get_name($shstrtab, $sh->{sh_name}), $sh->{sh_type}, $sh->{sh_offset}, $sh->{sh_size}; } } #-------------------- # Print Symbol Table #-------------------- if ($opt{symbols}) { my $symtab = $section{'.symtab'} or die "got no symbol table\n"; my $strtab = $section{'.strtab'} or die "got no symbol string table\n"; my @sym = get('Sym', $symtab->{sh_offset}, $symtab->{sh_size}); printf "%-6s %-30s %-9s %-9s %-11s %-11s %-30s\n%s\n", 'Index', 'Symbol', 'Value', 'Size', 'Bind', 'Type', 'Section', '-'x120; for my $ix (0 .. $#sym) { my $s = $sym[$ix]; print Data::Dumper->Dump([$s], ['*sym']) if $opt{debug}; printf "%6d %-30s %9d %9d %-11s %-11s %-30s\n", $ix, get_name($strtab, $s->{st_name}), $s->{st_value}, $s->{st_size}, $s->{st_info}{sti_bind}, $s->{st_info}{sti_type}, get_section_name($s->{st_shndx}); } } #------------------------- # Write Section to stdout #------------------------- if ($opt{section}) { my $sec = $opt{section} =~ /^\d+$/ ? $section[$opt{section}] : $section{$opt{section}}; die "no such section ($opt{section})\n" unless defined $sec; binmode STDOUT; print substr $elf, $sec->{sh_offset}, $sec->{sh_size}; } exit; ############################################################################### # # This routine contains the ELF data structures and was generated using: # # perl -MConvert::Binary::C -e'print Convert::Binary::C->new(%{require \ # "devel/gcc-config.pl"})->parse_file("elf.h")->sourcify' # ############################################################################### sub elf_header { return <<'ENDC'; /* typedef predeclarations */ typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; typedef long long int int64_t; typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned long long int uint64_t; typedef signed char int_least8_t; typedef short int int_least16_t; typedef int int_least32_t; typedef long long int int_least64_t; typedef unsigned char uint_least8_t; typedef unsigned short int uint_least16_t; typedef unsigned int uint_least32_t; typedef unsigned long long int uint_least64_t; typedef signed char int_fast8_t; typedef int int_fast16_t; typedef int int_fast32_t; typedef long long int int_fast64_t; typedef unsigned char uint_fast8_t; typedef unsigned int uint_fast16_t; typedef unsigned int uint_fast32_t; typedef unsigned long long int uint_fast64_t; typedef int intptr_t; typedef unsigned int uintptr_t; typedef long long int intmax_t; typedef unsigned long long int uintmax_t; /* typedefs */ typedef uint16_t Elf32_Half; typedef uint16_t Elf64_Half; typedef uint32_t Elf32_Word; typedef int32_t Elf32_Sword; typedef uint32_t Elf64_Word; typedef int32_t Elf64_Sword; typedef uint64_t Elf32_Xword; typedef int64_t Elf32_Sxword; typedef uint64_t Elf64_Xword; typedef int64_t Elf64_Sxword; typedef uint32_t Elf32_Addr; typedef uint64_t Elf64_Addr; typedef uint32_t Elf32_Off; typedef uint64_t Elf64_Off; typedef uint16_t Elf32_Section; typedef uint16_t Elf64_Section; typedef Elf32_Half Elf32_Versym; typedef Elf64_Half Elf64_Versym; typedef struct { unsigned char e_ident[16]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx; } Elf32_Ehdr; typedef struct { unsigned char e_ident[16]; Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; Elf64_Off e_phoff; Elf64_Off e_shoff; Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; typedef struct { Elf32_Word sh_name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; Elf32_Word sh_size; Elf32_Word sh_link; Elf32_Word sh_info; Elf32_Word sh_addralign; Elf32_Word sh_entsize; } Elf32_Shdr; typedef struct { Elf64_Word sh_name; Elf64_Word sh_type; Elf64_Xword sh_flags; Elf64_Addr sh_addr; Elf64_Off sh_offset; Elf64_Xword sh_size; Elf64_Word sh_link; Elf64_Word sh_info; Elf64_Xword sh_addralign; Elf64_Xword sh_entsize; } Elf64_Shdr; typedef struct { Elf32_Word st_name; Elf32_Addr st_value; Elf32_Word st_size; unsigned char st_info; unsigned char st_other; Elf32_Section st_shndx; } Elf32_Sym; typedef struct { Elf64_Word st_name; unsigned char st_info; unsigned char st_other; Elf64_Section st_shndx; Elf64_Addr st_value; Elf64_Xword st_size; } Elf64_Sym; typedef struct { Elf32_Half si_boundto; Elf32_Half si_flags; } Elf32_Syminfo; typedef struct { Elf64_Half si_boundto; Elf64_Half si_flags; } Elf64_Syminfo; typedef struct { Elf32_Addr r_offset; Elf32_Word r_info; } Elf32_Rel; typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; } Elf64_Rel; typedef struct { Elf32_Addr r_offset; Elf32_Word r_info; Elf32_Sword r_addend; } Elf32_Rela; typedef struct { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend; } Elf64_Rela; typedef struct { Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; Elf32_Word p_align; } Elf32_Phdr; typedef struct { Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; Elf64_Addr p_vaddr; Elf64_Addr p_paddr; Elf64_Xword p_filesz; Elf64_Xword p_memsz; Elf64_Xword p_align; } Elf64_Phdr; typedef struct { Elf32_Sword d_tag; union { Elf32_Word d_val; Elf32_Addr d_ptr; } d_un; } Elf32_Dyn; typedef struct { Elf64_Sxword d_tag; union { Elf64_Xword d_val; Elf64_Addr d_ptr; } d_un; } Elf64_Dyn; typedef struct { Elf32_Half vd_version; Elf32_Half vd_flags; Elf32_Half vd_ndx; Elf32_Half vd_cnt; Elf32_Word vd_hash; Elf32_Word vd_aux; Elf32_Word vd_next; } Elf32_Verdef; typedef struct { Elf64_Half vd_version; Elf64_Half vd_flags; Elf64_Half vd_ndx; Elf64_Half vd_cnt; Elf64_Word vd_hash; Elf64_Word vd_aux; Elf64_Word vd_next; } Elf64_Verdef; typedef struct { Elf32_Word vda_name; Elf32_Word vda_next; } Elf32_Verdaux; typedef struct { Elf64_Word vda_name; Elf64_Word vda_next; } Elf64_Verdaux; typedef struct { Elf32_Half vn_version; Elf32_Half vn_cnt; Elf32_Word vn_file; Elf32_Word vn_aux; Elf32_Word vn_next; } Elf32_Verneed; typedef struct { Elf64_Half vn_version; Elf64_Half vn_cnt; Elf64_Word vn_file; Elf64_Word vn_aux; Elf64_Word vn_next; } Elf64_Verneed; typedef struct { Elf32_Word vna_hash; Elf32_Half vna_flags; Elf32_Half vna_other; Elf32_Word vna_name; Elf32_Word vna_next; } Elf32_Vernaux; typedef struct { Elf64_Word vna_hash; Elf64_Half vna_flags; Elf64_Half vna_other; Elf64_Word vna_name; Elf64_Word vna_next; } Elf64_Vernaux; typedef struct { int a_type; union { long int a_val; void *a_ptr; void *a_fcn; } a_un; } Elf32_auxv_t; typedef struct { long int a_type; union { long int a_val; void *a_ptr; void *a_fcn; } a_un; } Elf64_auxv_t; typedef struct { Elf32_Word n_namesz; Elf32_Word n_descsz; Elf32_Word n_type; } Elf32_Nhdr; typedef struct { Elf64_Word n_namesz; Elf64_Word n_descsz; Elf64_Word n_type; } Elf64_Nhdr; typedef struct { Elf32_Xword m_value; Elf32_Word m_info; Elf32_Word m_poffset; Elf32_Half m_repeat; Elf32_Half m_stride; } Elf32_Move; typedef struct { Elf64_Xword m_value; Elf64_Xword m_info; Elf64_Xword m_poffset; Elf64_Half m_repeat; Elf64_Half m_stride; } Elf64_Move; typedef union { struct { Elf32_Word gt_current_g_value; Elf32_Word gt_unused; } gt_header; struct { Elf32_Word gt_g_value; Elf32_Word gt_bytes; } gt_entry; } Elf32_gptab; typedef struct { Elf32_Word ri_gprmask; Elf32_Word ri_cprmask[4]; Elf32_Sword ri_gp_value; } Elf32_RegInfo; typedef struct { unsigned char kind; unsigned char size; Elf32_Section section; Elf32_Word info; } Elf_Options; typedef struct { Elf32_Word hwp_flags1; Elf32_Word hwp_flags2; } Elf_Options_Hw; typedef struct { Elf32_Word l_name; Elf32_Word l_time_stamp; Elf32_Word l_checksum; Elf32_Word l_version; Elf32_Word l_flags; } Elf32_Lib; typedef struct { Elf64_Word l_name; Elf64_Word l_time_stamp; Elf64_Word l_checksum; Elf64_Word l_version; Elf64_Word l_flags; } Elf64_Lib; typedef Elf32_Addr Elf32_Conflict; ENDC } __END__ =head1 NAME elf.pl - Read ELF Files =head1 SYNOPSIS elf.pl {I} elf-file I: -i --info print information -l --list print section list --symbols print symbol table -s --section NAME write section to stdout --debug enable debug output example: elf.pl -il C.o =cut !NO!SUBS! close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; Convert-Binary-C-0.76/bin/perltypes.PL0000755000175000001440000000542111550664613016253 0ustar mhxusersuse Config; $file = @ARGV ? shift : 'examples/perltypes.pl'; open OUT, ">$file" or die "Can't create $file: $!"; print OUT <<"!GROK!THIS!"; $Config{startperl} -w !GROK!THIS! print OUT <<'!NO!SUBS!'; ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:13 +0200 $ # $Revision: 18 $ # $Source: /bin/perltypes.PL $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ #=============================================================================== # # Parse perl's header files and play around with the types they define. # #=============================================================================== use Convert::Binary::C; use Data::Dumper; use strict; my $base; -d "$_/include" and $base = "$_/include" and last for qw( tests ../tests ); defined $base or die <parse_file( "$base/include.c" ) }; #----------------------- # Check for parse error. #----------------------- if( $@ ) { die "Parse error: $@"; } #---------------------------- # Dump out the configuration. #---------------------------- print Dumper( $c->configure ); #---------------------------- # Print all the enumerations. #---------------------------- my @enums = $c->enum_names; print "\nenums: @enums\n\n"; #--------------------------------------------------------------------------- # Print all structs, sorted by size; skip all structs smaller than 50 bytes. #--------------------------------------------------------------------------- print "large structs:\n\n"; my @structs = sort { $c->sizeof( $b ) <=> $c->sizeof( $a ) } grep { $c->sizeof( $_ ) >= 50 } $c->struct_names; for my $struct ( @structs ) { printf "struct %-20s => %4d bytes\n", $struct, $c->sizeof( $struct ); } print "\n"; #----------------------------------------------- # Dump the definition of the __socket_type enum #----------------------------------------------- print Data::Dumper->Dump( [$c->enum('__socket_type')], ['__socket_type'] ); !NO!SUBS! close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; Convert-Binary-C-0.76/bin/ccconfig0000755000175000001440000023344711550664613015500 0ustar mhxusers#!/usr/bin/perl -w ################################################################################ # # PROGRAM: ccconfig # ################################################################################ # # DESCRIPTION: Get Convert::Binary::C configuration for a compiler. # ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:12 +0200 $ # $Revision: 69 $ # $Source: /bin/ccconfig $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use IO::File; use Getopt::Long; use Data::Dumper; use strict; my($NAME) = $0 =~ /([\w\.]+)$/; my $VERSION = ('$Snapshot: /Convert-Binary-C/0.76 $' =~ /([^\/\s]+)\s*\$$/)[0]; my $MESSAGE = "\nThis is $NAME, v$VERSION ($0).\n"; my %OPT = ( 'output-format' => 'dumper', ); unless( GetOptions( \%OPT, qw( cc|c=s inc-path|I=s@ basename=s output-file|o=s output-format|f=s preprocess=s compile-obj=s compile-exe=s obj-ext=s exe-ext=s c-ext=s pp-ext=s version debug quiet status! run! delete! ) ) ) { # poor man's pod2usage... my($USAGE) = do { local(@ARGV,$/)=($0); <> } =~ /^__END__.*?^=head\d\s+SYNOPSIS(.*?)^=/ms; my %M = ( 'I' => '*' ); # minimal markup $USAGE =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; $USAGE =~ s/^/ /gm; print STDERR "\nUsage:$USAGE", "Try `perldoc $NAME' for more information.\n\n"; exit 2; } if( $OPT{version} ) { print <autoflush(1); $OPT{quiet} or print STDERR $MESSAGE, "\n"; my $output = \*STDOUT; if (exists $OPT{'output-file'}) { $output = new IO::File ">$OPT{'output-file'}" or die "Cannot open $OPT{'output-file'}: $!\n"; } my %format = ( dumper => sub { my $cfg = shift; local $Data::Dumper::Sortkeys = 1; return Data::Dumper->Dump([$cfg], ['*config']); }, require => sub { my $cfg = shift; local $Data::Dumper::Indent = 1; local $Data::Dumper::Sortkeys = 1; my $dump = Data::Dumper->Dump([$cfg], ['config']); $dump =~ s/.*(?={)//; return $dump; }, ); unless (exists $format{$OPT{'output-format'}}) { my $valid = join ', ', sort keys %format; die < [@ARGV]; my $cfg = $cc->get_config; $cc->cleanup; unless( $OPT{quiet} ) { my($wall, $usr, $sys, $cusr, $csys) = (time - $^T, times); my $cpu = sprintf "%.2f", $usr + $sys + $cusr + $csys; $usr = sprintf "%.2f", $usr + $cusr; $sys = sprintf "%.2f", $sys + $csys; print STDERR <($cfg); exit 0; package Compiler::Config; use IO::File; use Data::Dumper; use Text::Wrap; use Text::ParseWords; use Carp; use strict; use constant SUCCESS => 0; use constant ERR_REQUIRE => 1; use constant ERR_CREATE => 2; use constant ERR_CONFIG => 3; use constant UNKNOWN => 0; use constant GNU_GCC => 1; use constant INTEL_ICC => 2; use constant MS_VCPP => 3; my %type_map; BEGIN { %type_map = ( &MS_VCPP => { 'long long' => '__int64' } ); }; ######################################################################## # # CONSTANT / AUTOGENERATED STUFF # ######################################################################## sub ANSI_headers { qw( assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h ) } sub _preset_names { qw( __386BSD__ __3dNOW__ __3dNOW_A__ __64BIT__ ____386BSD____ a29k ABI64 ABIN32 ADDR64 aegis AES_SOURCE AIX AIX32 AIX370 AIX41 AIX42 AIX43 AIX51 AIX64 AIX_SOURCE aixpc ALL_SOURCE alliant ALMOST_STDC alpha ALPHA_ Alpha_AXP alpha_bwx alpha_cix alpha_ev4 alpha_ev5 alpha_ev6 alpha_fix alpha_max alpha_vxworks ALTIVEC AM29000 am29050 AM29K AM33 AM33_2 AMD64 amiga AMIGAOS AMIX ansi ANSI_C_SOURCE ANSI_COMPAT AOUT APCS_26 APCS_32 apollo APOLLO_SOURCE APPLE APPLE_CC APX386 arc arch64 arch_ arch__v3 arch__v8 ARCH_COM ARCH_PPC ARCH_PPC64 ARCH_PWR ARCH_PWR2 arch_v10 arch_v3 arch_v32 arch_v8 ARCHITECTURE ardent arm arm2 arm32 arm6 ARM_ARCH_2 ARM_ARCH_3 ARM_ARCH_3M ARM_ARCH_4 ARM_ARCH_4T ARM_ARCH_5 ARM_ARCH_5E ARM_ARCH_5T ARM_ARCH_5TE arm_elf arm_oabi ARMEB ARMEL ARMWEL atarist athlon athlon_sse att386 att3b AUX AUX_SOURCE AVR AVR_ARCH AVR_ASM_ONLY AVR_AT43USB320 AVR_AT43USB355 AVR_AT76C711 AVR_AT90C8534 AVR_AT90S1200 AVR_AT90S2313 AVR_AT90S2323 AVR_AT90S2333 AVR_AT90S2343 AVR_AT90S4414 AVR_AT90S4433 AVR_AT90S4434 AVR_AT90S8515 AVR_AT90S8535 AVR_AT94K AVR_ATmega103 AVR_ATmega128 AVR_ATmega16 AVR_ATmega161 AVR_ATmega163 AVR_ATmega32 AVR_ATmega323 AVR_ATmega603 AVR_ATmega64 AVR_ATmega8 AVR_ATmega83 AVR_ATmega85 AVR_ATtiny11 AVR_ATtiny12 AVR_ATtiny15 AVR_ATtiny22 AVR_ATtiny28 AVR_ENHANCED AVR_MEGA base BeOS BIG_ENDIAN BIGMODEL BIT_MSF bool BSD bsd43 bsd4_2 BSD4_3 bsd4_4 BSD_4_3 BSD_4_4 BSD_C BSD_NET2 BSD_SOURCE BSD_TIME BSD_TYPES BSDCOMPAT bsdi BUFSIZ bull BULL_SOURCE BYTE_MSF BYTE_ORDER c C30 C31 C32 C33 C3x C40 C44 C4x cadmus CALL_AIX CALL_AIXDESC CALL_NT CALL_SYSV cdecl CHAR_UNSIGNED CLASSIFY_TYPE clipper CMU COFF COMPATMATH COMPILER_VERSION CONCURRENT CONIX convex convex_c1 convex_c2 convex_c32 convex_c34 convex_c38 CONVEX_FLOAT_ CONVEX_SOURCE cplusplus CPU CPU_FAMILY CPU_VARIANT CRAY CRAYIEEE CRAYMPP CRAYT3E CRIS CRIS_ABI_version CRIS_arch_tune CRIS_arch_version ctix CX_UX CYGWIN CYGWIN32 D30V DCC DCE_THREADS DCPLUSPLUS declspec DGUX DGUX_SOURCE DGUX_TARGET DIAB_TOOL DJGPP dmert DOLPHIN DOUBLE_IS_32BITS DPX2 DSO DSP1600 DSP1610 DYNAMIC Dynix DynixPTX EABI ECOFF ELF elinux elxsi embedded EMBEDDED_CROSS encore EPI EXTENSIONS EXTERN_PREFIX FAVOR_BSD FILE_OFFSET_BITS FILENAME_MAX float128 float80 fpreg fr30 FreeBSD frv FRV_ACC FRV_DWORD FRV_FPR FRV_GPR FRV_HARD_FLOAT FRV_UNDERSCORE FRV_VLIW G_FLOAT gcc GCC_NEW_VARARGS gcos gcx GFLOAT gimpel GLIBC GLIBC_MINOR gmicro GNU GNU_CRIS gnu_hurd GNU_LIBRARY gnu_linux GNU_SOURCE GNUC GNUC_MINOR GNUC_PATCHLEVEL GO32 gould GOULD_PN GP_SUPPORT H3050R H3050RX H8300 H8300H H8300S hardfp HAVE_68881 HAVE_CE HAVE_FPA HAVE_FPU HAVE_SHORT_DOUBLE HAVE_SHORT_INT HAVE_SKY hbullx20 hcx HITACHI HIUX_SOURCE host_mips hp200 hp300 hp64000 hp64902 hp64903 HP700 hp800 hp9000 hp9000ipc hp9000s200 hp9000s300 hp9000s400 hp9000s500 hp9000s700 hp9000s800 hp9k8 HP_aCC hp_osf hppa hpux HPUX_ASM HPUX_SOURCE hypersparc i186 i286 i370 i386 i486 i586 i686 i8086 I80960 i860 i960 i960_CA i960_CC i960_CF i960_KA i960_KB i960_MC i960_SA i960_SB i960CA i960CC i960CF i960JA i960JD i960JF i960KA i960KB i960MC i960RP i960SA i960SB IA64 iAPX286 IBITS32 ibm ibm032 ibmesa IBMR2 ibmrt IEEE_FLOAT IEEE_FLOAT_ IEEE_FP IEEE_FP_INEXACT ILP32 ILP64 INCLUDE__STDC__ INCLUDE_LONGLONG INLINE INLINE_INTRINSICS INT int128 INT64 INT_MAX INTEL interdata INTERIX INTRINSICS IP2K is68k itanium IWMMXT ix86 k6 k6_2 k6_3 KPRINTF_ATTRIBUTE KR ksr1 LANGUAGE_ASSEMBLY LANGUAGE_C LANGUAGE_C_PLUS_PLUS LANGUAGE_OBJECTIVE_C LARGE_FILE_API LARGEFILE64_SOURCE LARGEFILE_SOURCE LD64 LDBL LE370 LFS64_LARGEFILE LFS_LARGEFILE lint Linux LITTLE_ENDIAN LITTLE_ENDIAN_DATA LONG64 LONG_DOUBLE LONG_DOUBLE_128 LONG_DOUBLE_64 LONG_LONG LONG_LONG_MAX LONG_MAX LONGDOUBLE LONGLONG LP64 luna luna88k Lynx M210 M32R m32r2 m32rx M340 m68 M68000 m68020 m68030 m68040 m68332 m68k m88000 m88100 m88110 m88k M88KBCS_TARGET M_ALPHA M_BITFIELDS M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_INTERNAT M_IX86 M_SDATA M_STEXT M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_WORDSWAP M_XENIX MACH machine MachTen macII MASSCOMP MATH_HAS_NO_SIDE_EFFECTS MAVERICK MBCS mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040 mc68060 MC6811 MC6812 mc68302 mc68332 mc68881 mc68hc11 mc68hc12 mc68hc1x mc68hcs12 mc68k mc68k32 mc700 mc88000 mc88100 mc88110 mcf5200 MCORE MCORE__ALIGN_4 MCORE_ALIGN_8 MCOREBE MCORELE mcpu32 merlin mert MINGW32 MiNT mips mips16 mips64 mips_eabi mips_fpr MIPS_FPSET MIPS_ISA MIPS_SIM mips_single_float mips_soft_float MIPS_SZINT MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MMIX MMIX_ABI_GNU MMIX_ABI_MMIXWARE MMX MN10200 MN10300 MODERN_C moss motorola mpc505 mpc604 mpc750 mpc821 mpc860 mpeix MSC_VER MSDOS MSVCRT MT MTXINU MULTIMAX MULTITHREADED mvs n16 NATURAL_ALIGNMENT ncl_el ncl_mr NetBSD netware news1500 news1700 news1800 news1900 news3700 news700 news800 news900 NeXT NEXT_SOURCE NLS NO_INLINE NO_INLINE_MATH NO_INLINE_STDLIB NO_INTERRUPTS NO_LEADING_UNDERSCORES NO_PROTOTYPE NO_UNDERSCORES NODE nofp nonstopux ns16000 ns32000 ns32016 ns32332 ns32532 ns32k nsc32000 OCS88 OEMVS OPEN_NAMESPACE OpenBSD openedition OPENNT OPTIMIZE OS OS2 OS390 osf OSF1 OSF_SOURCE pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON PARISC PC532 pdp11 pe pentium pentium2 pentium3 pentium4 pentium__mmx pentiumpro PGC pic PIC_ pj plexus PORTAR POSIX POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE POSIX_C_SOURCE POSIX_SOURCE POSIX_THREADS POWER PowerPC powerpc64 PPC ppc403 ppc601 ppc602 ppc603 ppc603e PPC64 PPC64_ PPC_ PRAGMA_REDEFINE_EXTNAME pro PROTOTYPES ps2 psos PTHREAD_USE_D4 PTHREADS PTHREADS95 PTRDIFF_TYPE PWB pyr QNX R3000 R4000 REENTRANT REGPARM RELOCATABLE RES REVARGV Rhapsody rios RISC6000 riscbsd riscix riscos ROSE rs6000 RT rtasim rtems RTP s390 s390x s64_t SA110 SCO SCO_C_DIALECT SCO_COFF SCO_DS SCO_ELF SCO_ODS_30 SCO_XPG_VERS score3 scs semi sequent SEQUENT_ sgi SGI_SOURCE sh sh1 sh2 sh3 SH3E SH4 SH4_100 SH4_200 SH4_300 SH4_340 SH4_400 SH4_500 SH4_NOFPU SH4_SINGLE SH4_SINGLE_ONLY SH5 SHARED SHMEDIA SHRT_MAX simulator sinix SIZE_INT SIZE_LONG SIZE_PTR SIZE_TYPE SNI SOCKET_SOURCE SOCKETS_SOURCE SOFT_FLOAT SOFTFP SOLARIS_THREADS sony sony_news sonyrisc sparc sparc64 sparc_v8 sparc_v9 sparclet sparclite sparclite86x sparcv9 spectrum spur SSE SSE2 stardent STATIC STD_INCLUDE_DIR STDC STDC_EXT STDC_HOSTED STDC_VERSION stdcall STDCPP stratos STRICT_ANSI STRICT_BSD STRICT_NAMES sun sun3 sun386 Sun386i supersparc SVID SVR3 SVR4 SVR4_2 SVR4_ABI SVR4_SOURCE svr5 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5 sysV68 sysV88 SYSV_SOURCE tahoe Tek4132 Tek4300 THREAD_SAFE THREADS_POSIX4ad4 thumb THUMB_INTERWORK THUMBEB THUMBEL titan TM3200 TM5400 TM5600 TMS320C30 TMS320C31 TMS320C32 TMS320C33 TMS320C3x TMS320C40 TMS320C44 TMS320C4x tower tower32 tower32_200 tower32_600 tower32_700 tower32_800 tower32_850 TOWER_ASM tss tune_ tune_athlon tune_athlon_sse tune_i386 tune_i486 tune_i586 tune_i686 tune_k6 tune_k6_2 tune_k6_3 tune_pentium tune_pentium2 tune_pentium3 tune_pentium4 tune_pentium_mmx tune_pentiumpro tune_v tune_v10 tune_v3 tune_v8 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5 u64_t uclinux UINT128_T ultrix UMAXV unaligned UnicomPBB UnicomPBD UNICOS UNICOSMK unix UNIX95 UNIX99 unixpc unos USE_BSD USE_FILE_OFFSET64 USE_GNU USE_INIT_FINI USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2 USE_REENTRANT USE_RTC USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED USES_INITFINI USG USGr4 USGr4_2 UTek Utek UTS UWIN uxpm uxps v20 v33 v850 v850e v850e1 v850ea v851 vax venix VMESA VMS VSTA VTHREADS vxworks vxworks_5 wchar_t WCHAR_TYPE we32000 WIN32 WINNT WINT_TYPE WRS_R3K_EXC_SUPPORT X86_ x86_64 X_FLOAT xenix Xenix286 XOPEN_C XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED XSCALE xstormy16 XTENSA XTENSA_EB XTENSA_EL XTENSA_SOFT_FLOAT z8000 ) } sub _assert { { 'cpu' => [qw( a29k alpha arc arm bwx cix clipper convex elxsi ev4 ev5 ev6 fix h8300 h8300h h8300s hppa i370 i386 i860 i960 ia64 ibm032 m32r m68k m88k max mc68000 mc68020 mc68030 mc68040 mips ns32k parisc powerpc powerpc64 pyr rs6000 sh sparc sparc64 spur tahoe tron v850 vax we32000 x86_64 xtensa )], 'endian' => [qw( big little )], 'lint' => [qw( off )], 'machine' => [qw( a29k alpha arc arm bigendian clipper convex d30v elxsi fr30 h8300 h8300h h8300s hppa i370 i386 i860 i960 ia64 ibm032 littleendian m32r m68k m88k macII mc68000 mips ns32k parisc powerpc powerpc64 pyr rs6000 sgi sh sparc sparc64 sparcv9 spur tahoe tron v850 vax we32000 x86_64 xstormy16 xtensa )], 'model' => [qw( ilp32 lp64 )], 'system' => [qw( aix AUX beos bsd embedded FreeBSD gnu hiux hpux hurd interix linux lynx mach msdos mvs NetBSD netware OpenBSD openedition osf1 posix ptx4 rtems simulator svr3 svr4 unix vms vsta vxworks winnt xpg4 )] } } ######################################################################## # # CONSTRUCTOR # ######################################################################## sub new { my $class = shift; my $self = bless { 'headers' => [&ANSI_headers], 'ppline' => qr/^\s*#\s*(?:line\s*)?(\d+)\s*"([^"]*)"/, # TODO: make configurable? 'debug' => 0, 'quiet' => 0, 'status' => 1, 'run' => 1, 'delete' => 1, 'timeout' => 30, 'basename' => '_t_e_s_t', 'c-ext' => '.c', @_ }, $class; $self->{fatal} = 0; $self->{__int__} = 0; $SIG{INT} = sub { $self->{__int__} = 1; $SIG{INT} = 'DEFAULT' }; $self->_configure; $self->{fatal} = 1; $self; } ######################################################################## # # CONFIGURATION # ######################################################################## sub _getwarn { my @warn = @_; for( @warn ) { s/\s+at\s+\Q$0\E\s+line\s+\d+\.//m; s/^\s*included\s+from\s+\[buffer\]:\d+[\r\n]+//m; s/[\r\n]+$//; }; @warn; } sub check_config { my $self = shift; my $config = shift; my @headers = @_; my %inc; eval { require Convert::Binary::C }; $@ and return {code => ERR_REQUIRE}; $self->{debug} and import Convert::Binary::C debug => 'all'; my $c = eval { new Convert::Binary::C }; $@ and return {code => ERR_CREATE}; eval { $c->configure( %$config ) }; $@ and return {code => ERR_CONFIG}; @inc{@headers} = (undef) x @headers; my %res = ( code => SUCCESS, header => \%inc, fail => [], succ => [], warnings => [], ); for my $hdr ( keys %inc ) { my $code = "#include <$hdr>\n"; my @warn; { local $^W = 1; local $SIG{__WARN__} = sub { push @warn, @_ }; eval { $c->clean->parse( $code ) }; } $inc{$hdr} = { warnings => [_getwarn(@warn)] }; push @{$res{warnings}}, _getwarn(@warn); if( $@ ) { ($inc{$hdr}{error}) = _getwarn($@); push @{$res{fail}}, $hdr; } else { push @{$res{succ}}, $hdr; } } return \%res; } sub get_config { my $self = shift; exists $self->{config} or $self->run_checks; my @headers; my @missing; $self->_msg( "\nChecking for ANSI headers..." ); for my $hdr ( @{$self->{headers}} ) { my $found = 0; for my $inc ( @{$self->{'inc-path'}} ) { if( -e $inc.$hdr ) { $found = 1; last; } } push @{ $found ? \@headers : \@missing }, $hdr; } if( @missing ) { $self->_msg("The following ANSI headers are missing:"); $self->_wrapped_list( @missing ); } else { $self->_msg("All ANSI headers found."); } $self->_msg( "\nAssembling the configuration..." ); my %predef = %{$self->{predefined} || {}}; my %def; my $compiler = $self->_compiler; if( $compiler == GNU_GCC ) { $self->_msg( "You're using the GNU compiler." ); %def = ( '__attribute(x)' => '', '__attribute__(x)' => '', '__typeof(x)' => 'int', '__typeof__(x)' => 'int', '__alignof(x)' => '1', '__alignof__(x)' => '1', '__label__' => 'int', '__builtin_va_list' => 'int', ); } elsif( $compiler == INTEL_ICC ) { $self->_msg( "You're using the Intel compiler." ); %def = ( '__attribute(x)' => '', '__attribute__(x)' => '', '__typeof(x)' => 'int', '__typeof__(x)' => 'int', '__alignof(x)' => '1', '__alignof__(x)' => '1', '__label__' => 'int', '__builtin_va_list' => 'int', ); } elsif( $compiler == MS_VCPP ) { $self->_msg( "You're using the Microsoft compiler." ); $def{'__int64'} = 'long long'; } if( exists $predef{__CYGWIN__} || exists $predef{_WIN32} ) { $self->_msg( "This is a Windows compiler." ); $def{'__cdecl'} = ''; $def{'__declspec(x)'} = ''; } my %cfg; my $define = sub { [ map { "$_=$predef{$_}" } sort keys %{$_[0]} ] }; if( exists $self->{basic_sizes} ) { my %sizes = %{$self->{basic_sizes}}; my %valid = ( PointerSize => [ 0, 1, 2, 4, 8 ], EnumSize => [-1, 0, 1, 2, 4, 8 ], IntSize => [ 0, 1, 2, 4, 8 ], CharSize => [ 0, 1, 2, 4, 8 ], ShortSize => [ 0, 1, 2, 4, 8 ], LongSize => [ 0, 1, 2, 4, 8 ], LongLongSize => [ 0, 1, 2, 4, 8 ], FloatSize => [ 0, 1, 2, 4, 8, 12, 16], DoubleSize => [ 0, 1, 2, 4, 8, 12, 16], LongDoubleSize => [ 0, 1, 2, 4, 8, 12, 16], ); for my $type ( keys %sizes ) { my $opt = join( '', map ucfirst, split ' ', $type ) . 'Size'; if( exists $valid{$opt} ) { if( grep { $sizes{$type} == $_ } @{$valid{$opt}} ) { $cfg{$opt} = $sizes{$type}; } else { $self->_msg( "Strange size '$sizes{$type}' for type '$type'." ); } } else { $self->_msg( "Strange type '$type' with size '$sizes{$type}'." ); } } } if( exists $self->{unsigned_chars} and defined $self->{unsigned_chars} ) { $cfg{UnsignedChars} = $self->{unsigned_chars}; } if( exists $self->{alignment} and defined $self->{alignment} ) { if( grep { $self->{alignment} == $_ } 1, 2, 4, 8, 16 ) { $cfg{Alignment} = $self->{alignment}; } else { $self->_msg( "Strange alignment '$self->{alignment}'." ); } } if( exists $self->{compound_alignment} and defined $self->{compound_alignment} ) { if( grep { $self->{compound_alignment} == $_ } 1, 2, 4, 8, 16 ) { $cfg{CompoundAlignment} = $self->{compound_alignment}; } else { $self->_msg( "Strange compound alignment '$self->{compound_alignment}'." ); } } if( exists $self->{invalid_keywords} and @{$self->{invalid_keywords}} > 0 ) { $cfg{DisabledKeywords} = $self->{invalid_keywords}; } if( exists $self->{keyword_map} and keys %{$self->{keyword_map}} > 0 ) { $cfg{KeywordMap} = $self->{keyword_map}; } if( exists $self->{byteorder} and $self->{byteorder} ) { $cfg{ByteOrder} = $self->{byteorder}; } if( exists $self->{cpp_comments} ) { $cfg{HasCPPComments} = $self->{cpp_comments}; } if( exists $self->{stdc_version} ) { $cfg{StdCVersion} = $self->{stdc_version}; } if( exists $self->{stdc_hosted} ) { $cfg{HostedC} = $self->{stdc_hosted}; } if( exists $self->{'inc-path'} and @{$self->{'inc-path'}} > 0 ) { $cfg{Include} = [ map { s/[\\\/]+$//; $_ } @{$self->{'inc-path'}} ]; } keys %{$self->{preasserted}} and $cfg{Assert} = [sort keys %{$self->{preasserted}}]; unless (keys %cfg) { $self->_msg("\nI could not get any useful compiler information."); $self->_quit; } $self->_msg( "\nTesting configuration..." ); $self->_debug(sub { Data::Dumper->Dump( [\%def, \%predef, \%cfg], [qw(*def *predef *cfg)] ) }); # First, check if the configuration works without additional defines my $warnings = 0; my $failures = 0; keys %predef and $cfg{Define} = $define->( \%predef ); my $res = $self->check_config( \%cfg, @headers ); $self->_debug(sub { Data::Dumper->Dump( [$res], [qw(res)] ) }); if( $res->{code} == SUCCESS ) { $failures = @{$res->{fail}}; $warnings = @{$res->{warnings}}; if( $failures ) { $self->_msg( "Plain configuration failed for these headers:" ); $self->_wrapped_list( sort @{$res->{fail}} ); } else { if( $warnings == 0 ) { goto finish; } $self->_msg( "Plain configuration works fine, but there are some warnings:" ); $self->_out( "| ", @{$res->{warnings}} ); } } else { goto finish; } # There were errors or warnings. Let's see if there's something we can try... unless( keys %def ) { if( $res->{code} == SUCCESS ) { $self->_msg( "\nHowever, there's nothing I can do about it." ); } goto finish; } $self->_msg( "\nI will try to add couple of defines..." ); for my $key ( keys %def ) { my($name) = $key =~ /(\w+)/; delete $predef{$name}; $predef{$key} = $def{$key}; } keys %predef and $cfg{Define} = $define->( \%predef ); my $newres = $self->check_config( \%cfg, @headers ); $self->_debug(sub { Data::Dumper->Dump( [$res], [qw(res)] ) }); if( $res->{code} != SUCCESS ) { $res = $newres; goto finish; } if( @{$newres->{fail}} < $failures or @{$newres->{fail}} == $failures && @{$newres->{warnings}} < $warnings ) { $self->_msg( "This configuration feels better." ); if( $failures ) { if( @{$newres->{fail}} ) { $self->_msg( "Only these headers still fail:" ); $self->_wrapped_list( sort @{$newres->{fail}} ); } else { $self->_msg( "No more headers that fail." ); } } $res = $newres; $failures = @{$res->{fail}}; $warnings = @{$res->{warnings}}; } else { if( $failures == 0 and @{$newres->{fail}} > 0 ) { $self->_msg( "Whoa, now it fails. Restoring original configuration." ); } else { $self->_msg( "Doesn't help. Restoring original configuration." ); } goto finish; } # Try to remove as many defines as possible $self->_msg( "\nNow let's see which defines aren't neccessary..." ); my %orgdef = %{$self->{predefined}}; my @additional; my $tested = 0; for my $key ( sort keys %def ) { my($name) = $key =~ /(\w+)/; delete $predef{$key}; exists $orgdef{$name} and $predef{$name} = $orgdef{$name}; keys %predef and $cfg{Define} = $define->( \%predef ); $newres = $self->check_config( \%cfg, @headers ); $self->_debug(sub { Data::Dumper->Dump( [$res], [qw(res)] ) }); if( $newres->{code} == SUCCESS and @{$newres->{fail}} <= $failures and @{$newres->{warnings}} <= $warnings ) { $res = $newres; $failures = @{$res->{fail}}; $warnings = @{$res->{warnings}}; } else { push @additional, $name; delete $predef{$name}; $predef{$key} = $def{$key}; } $self->_work_in_progress( sprintf "%d/%d needed", scalar @additional, ++$tested ); } $self->_work_done; if( @additional ) { $self->_msg( "Additionally defining the following symbols:" ); $self->_wrapped_list( sort @additional ); } else { $self->_msg( "Not defining any additional symbols." ); } finish: if( $res->{code} == SUCCESS ) { if( @{$res->{succ}} > 0 ) { $self->_msg( "\n>>>>>>>>>> Successfully tested configuration! <<<<<<<<<<" ); } else { $self->_msg( "\n>>>>>>>>>> Configuration test FAILED! <<<<<<<<<<" ); } if( @{$res->{fail}} ) { $self->_msg( "\nThese headers fail:" ); for my $hdr ( sort keys %{$res->{header}} ) { exists $res->{header}{$hdr}{error} or next; $self->_msg( " <$hdr> $res->{header}{$hdr}{error}" ); } } elsif( @{$res->{warnings}} ) { $self->_msg( "\nHowever, there are some warnings that I can't get rid of:" ); $self->_out( "| ", @{$res->{warnings}} ); } if( defined $self->{float_format} ) { if( $self->{float_format} eq 'IEEE' ) { Convert::Binary::C::feature('ieeefp') or $self->_msg( <{float_format} eq 'native' ) { Convert::Binary::C::feature('ieeefp') and $self->_msg( <_msg( <{code} == ERR_REQUIRE and $self->_msg( "Failed to load Convert::Binary::C, cannot test configuration." ); $res->{code} == ERR_CREATE and $self->_msg( "Could not create Convert::Binary::C object." ); $res->{code} == ERR_CONFIG and $self->_msg( "Could not configure Convert::Binary::C object." ); } keys %predef and $cfg{Define} = $define->( \%predef ); return \%cfg; } ######################################################################## # # COMPILER TESTING # ######################################################################## sub cleanup { my $self = shift; if( $self->{'delete'} ) { for( qw( c pp obj exe ) ) { my $meth = "_${_}file"; my $file = $self->$meth(); -e $file and unlink $file; } for( glob "$self->{basename}.*" ) { -e and unlink } } } sub run_checks { my $self = shift; my $asserts; if ($self->{'inc-path'}) { for (@{$self->{'inc-path'}}) { $_ .= _OS('file-sep') unless /[:\/\\]$/ } } elsif ($self->{can_read_ppout}) { $self->{'inc-path'} = $self->_run_incpath; } else { $self->{'inc-path'} = []; } ($self->{names}, $asserts) = $self->_names( $self->{'inc-path'} ); if ($self->{can_preprocess}) { $self->{predefined} = $self->_get_predefined( $self->{names} ); $self->{preasserted} = $self->_get_preasserted( $asserts ); $self->{stdc_version} = delete $self->{predefined}{__STDC_VERSION__}; $self->{stdc_hosted} = delete $self->{predefined}{__STDC_HOSTED__}; $self->{stdc_version} =~ s/L$// if defined $self->{stdc_version}; } if ($self->{can_compile} || $self->{can_run}) { $self->{invalid_keywords} = $self->_get_invalid_keywords; $self->{keyword_map} = $self->_get_keyword_map; $self->{cpp_comments} = $self->_get_cpp_comments; $self->{basic_sizes} = $self->_get_basic_sizes; $self->{byteorder} = $self->_get_byteorder; $self->{unsigned_chars} = $self->_get_unsigned_chars; $self->{alignment} = $self->_get_alignment; $self->{compound_alignment} = $self->_get_compound_alignment; # run _after_ byteorder test $self->{float_format} = $self->_get_float_format; } } sub _compiler { my $self = shift; exists $self->{predefined}{__GNUC__} and return GNU_GCC; exists $self->{predefined}{__ICC} || exists $self->{predefined}{__INTEL_COMPILER} and return INTEL_ICC; exists $self->{predefined}{_MSC_VER} and return MS_VCPP; return UNKNOWN; } sub _test_type { my($self, $type, $init, $width) = @_; my $begin = "\x21\x05\x19\x77*MHXCBC*\xDE\xAD\xBE\xEF"; my $end = "\x21\x05\x19\x77*MARCUS*\xDE\xAD\xBE\xEF"; my $cvt = sub { join ', ', map { sprintf "0x%02X", $_ } unpack "C*", $_[0] }; my $c_begin = $cvt->( $begin ); my $c_end = $cvt->( $end ); $self->_temp( <_compile_temp; $res->{status} and return undef; my $fh = new IO::File $self->_objfile or return undef; binmode $fh; my $obj = do { local $/; <$fh> }; $obj =~ /\Q$begin\E(.{1,$width}?)\Q$end\E/s and return $1; return undef; } #----------------------------------------------------------------------- # FLOATING POINT FORMAT #----------------------------------------------------------------------- sub _get_float_format_run { my $self = shift; my $value = shift; my %res; TYPE: for my $type ( qw( float double ) ) { $self->_work_in_progress; $self->_temp( < union fp { $type val; unsigned char byte[sizeof($type)]; }; int main() { union fp x; int i; x.val = $value; printf("size=%d:", sizeof($type)); for( i=0; i_build_temp; if( -e $self->_exefile ) { local $self->{fatal} = 0; $res = $self->_run_temp; } else { $self->_msg( "Got no output from compiler for '($type) $value'." ); next; } if( $res->{didnotrun} or $res->{status} ) { $self->_msg( "It seems I cannot run your compiler's executables." ); last; } for my $line ( @{$res->{stdout}} ) { if( my($size, $hex) = $line =~ /^size=(\d+):\s*(.*)/ ) { my $bits = pack 'C*', map hex, $hex =~ /0x(\S{2})/g; length($bits) == $size or last; $res{$type} = $bits; next TYPE; } } $self->_msg( "Strange output for '($type) $value'" ); } return \%res; } sub _get_float_format_compile { my $self = shift; my $value = shift; my %res; for my $type ( qw( float double ) ) { $self->_work_in_progress; $res{$type} = $self->_test_type( $type, $value, 32 ); unless( defined $res{$type} ) { $self->_msg( "Got no output from compiler for '($type) $value'." ); } } return \%res; } sub _get_float_format { my $self = shift; $self->_msg( "\nTrying to determine floating point format..." ); my @test = ( { value => '-1.0', double => pack( 'C*', 0xBF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0xBF, 0x80, 0x00, 0x00 ), }, { value => '0.0', double => pack( 'C*', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x00, 0x00, 0x00, 0x00 ), }, { value => '0.4', double => pack( 'C*', 0x3F, 0xD9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A ), single => pack( 'C*', 0x3E, 0xCC, 0xCC, 0xCD ), }, { value => '1.0', double => pack( 'C*', 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x3F, 0x80, 0x00, 0x00 ), }, { value => '3.1415926535', double => pack( 'C*', 0x40, 0x09, 0x21, 0xFB, 0x54, 0x41, 0x17, 0x44 ), single => pack( 'C*', 0x40, 0x49, 0x0F, 0xDB ), }, { value => '1.220703125e-4', double => pack( 'C*', 0x3F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x39, 0x00, 0x00, 0x00 ), }, ); my $meth = $self->{can_run} ? "_get_float_format_run" : "_get_float_format_compile"; for my $t ( @test ) { my $res = $self->$meth( $t->{value} ); $t->{result}{single} = $res->{float}; $t->{result}{double} = $res->{double}; } my $fail_nat = 0; my $fail_i3e = 0; my @tests; for my $t ( @test ) { my $s_nat = pack 'f', $t->{value}; my $d_nat = pack 'd', $t->{value}; my $s_i3e = $t->{single}; my $d_i3e = $t->{double}; if( defined $self->{byteorder} && $self->{byteorder} eq 'LittleEndian' ) { $_ = reverse $_ for $s_i3e, $d_i3e; } if( defined $t->{result}{single} ) { push @tests, { value => $t->{value}, format => 'single', ieee => $s_i3e, native => $s_nat, got => $t->{result}{single} }; $t->{result}{single} eq $s_nat or $fail_nat++; $t->{result}{single} eq $s_i3e or $fail_i3e++; } if( defined $t->{result}{double} ) { push @tests, { value => $t->{value}, format => 'double', ieee => $d_i3e, native => $d_nat, got => $t->{result}{double} }; $t->{result}{double} eq $d_nat or $fail_nat++; $t->{result}{double} eq $d_i3e or $fail_i3e++; } } $self->_work_done; my $fp_format; if( @tests == 0 ) { $self->_msg( "Could not determine floating point format." ); } elsif( $fail_i3e == 0 ) { $fp_format = 'IEEE'; $self->_msg( "Seems to be IEEE floating point format." ); } elsif( $fail_nat == 0 ) { $fp_format = 'native'; $self->_msg( "No IEEE, but at least the natively supported floating point format." ); } else { $fp_format = 'unknown'; $self->_msg( "Neither IEEE nor natively supported floating point format." ); $self->_msg( "\nFYI, this is what I got:" ); $self->_msg( "\nvalue format IEEE representation Native representation Compiler representation" ); $self->_msg( '-'x97 ); my $hex = sub { join ' ', map { sprintf "%02X", $_ } unpack "C*", $_[0] }; for my $t ( @tests ) { $self->_msg( sprintf( "%-15s %-7s %-24s %-24s %-24s", $t->{value}, $t->{format}, $hex->($t->{ieee}), $hex->($t->{native}), $hex->($t->{got}) ) ); } $self->_msg( '-'x97 ); } return $fp_format; } #----------------------------------------------------------------------- # ALIGNMENT #----------------------------------------------------------------------- sub _get_alignment_run { my $self = shift; my $type = shift; $self->_work_in_progress; $self->_temp( < #include struct align { char a; $type b; }; int main() { printf("align=%d\\n", offsetof(struct align, b)); return 0; } ENDC my $res = $self->_build_temp; if( -e $self->_exefile ) { local $self->{fatal} = 0; $res = $self->_run_temp; } else { $self->_work_done; $self->_msg( "Got no output from compiler for '$type'." ); return undef; } if( $res->{didnotrun} or $res->{status} ) { $self->_work_done; $self->_msg( "It seems I cannot run your compiler's executables." ); return undef; } for my $line ( @{$res->{stdout}} ) { $line =~ /^align=(\d+)/ and return $1; } $self->_work_done; $self->_msg( "Strange output..." ); return undef; } sub _get_alignment_compile { my $self = shift; my $type = shift; $self->_work_in_progress; my $init = $type =~ /(struct|union)\s+(\w+)/ ? "{ sizeof(struct align) - sizeof($1 $2) }" : "{ sizeof(struct align) - sizeof($type), ($type) -1 }"; my $res = $self->_test_type( "struct align { char a; $type b; }", $init, 32 ); unless( defined $res ) { $self->_work_done; $self->_msg( "Got no output from compiler for '$type'." ); return undef; } my $off = unpack "C", $res; if( $off == 0 ) { $self->_work_done; $self->_msg( "Strange output..." ); return undef; } return $off; } sub _get_alignment { my $self = shift; $self->_msg( "\nTrying to determine struct member alignment..." ); my $meth = $self->{can_run} ? "_get_alignment_run" : "_get_alignment_compile"; my $align; my $compiler = $self->_compiler; for my $type ( 'int', 'short', 'long', 'long long', 'float', 'double', 'int *' ) { my $real_type = $type_map{$compiler}{$type} || $type; if( defined( my $rv = $self->$meth( $real_type ) ) ) { !defined($align) || $rv > $align and $align = $rv; } } $self->_work_done; if( defined $align ) { $self->_msg( "Struct members are aligned to $align-byte boundaries." ); } else { $self->_msg( "Could not determine struct member alignment." ); } return $align; } sub _get_compound_alignment { my $self = shift; $self->_msg( "\nTrying to determine compound alignment..." ); my $meth = $self->{can_run} ? "_get_alignment_run" : "_get_alignment_compile"; my $s_align = $self->$meth("struct testit { char a; }"); my $u_align = $self->$meth("union testit { char a; }"); $self->_work_done; if( defined($s_align) && defined($u_align) && $s_align == $u_align ) { $self->_msg( "Compounds are aligned to $s_align-byte boundaries." ); return $s_align; } else { $self->_msg( "Could not determine compound alignment." ); return undef; } } #----------------------------------------------------------------------- # BASIC TYPE SIZES #----------------------------------------------------------------------- sub _get_basic_sizes_run { my $self = shift; my $type = shift; $self->_work_in_progress; $self->_temp( < typedef $type _t_y_p_e_; int main() { printf("sizeof=%d\\n", sizeof(_t_y_p_e_)); return 0; } ENDC my $res = $self->_build_temp; if( -e $self->_exefile ) { local $self->{fatal} = 0; $res = $self->_run_temp; } else { $self->_work_done; $self->_msg( "Got no output from compiler for '$type'." ); return undef; } if( $res->{didnotrun} or $res->{status} ) { $self->_work_done; $self->_msg( "It seems I cannot run your compiler's executables." ); return undef; } for my $line ( @{$res->{stdout}} ) { $line =~ /^sizeof=(\d+)/ and return $1; } $self->_work_done; $self->_msg( "Strange output..." ); return undef; } sub _get_basic_sizes_compile { my $self = shift; my $type = shift; $self->_work_in_progress; my $res = $self->_test_type( $type, "0", 16 ); unless( defined $res ) { $self->_work_done; $self->_msg( "Got no output from compiler for '$type'." ); return undef; } return length $res; } sub _get_basic_sizes { my $self = shift; $self->_msg( "\nTrying to determine basic type sizes..." ); my $meth = $self->{can_run} ? "_get_basic_sizes_run" : "_get_basic_sizes_compile"; my %sizes; my $compiler = $self->_compiler; for my $type ( 'int', 'char', 'short', 'long', 'long long', 'float', 'double', 'long double', 'int *' ) { my $real_type = $type_map{$compiler}{$type} || $type; my $rv = $self->$meth( $real_type ) or next; $sizes{$type =~ y/*// ? 'pointer' : $type} = $rv; } my %enum; for my $type ( "enum pbyte { PB1 = 0, PB2 = 255 }", "enum nbyte { NB1 = -128, NB2 = 127 }", "enum pword { PW1 = 0, PW2 = 65535 }", "enum nword { NW1 = -32768, NW2 = 32767 }", "enum plong { PL1 = 0, PL2 = 65536 }", "enum nlong { NL1 = -32768, NL2 = 32768 }", ) { my $rv = $self->$meth( $type ) or next; my($name) = $type =~ /^enum\s+(\w+)/; $enum{$name} = $rv; } $self->_work_done; if( keys %enum == 6 ) { if( $enum{pbyte} == 2 && $enum{nbyte} == 1 && $enum{pword} == 4 && $enum{nword} == 2 && $enum{plong} == 4 && $enum{nlong} == 4 ) { $sizes{enum} = -1; } elsif( $enum{pbyte} == 1 && $enum{nbyte} == 1 && $enum{pword} == 2 && $enum{nword} == 2 && $enum{plong} == 4 && $enum{nlong} == 4 ) { $sizes{enum} = 0; } elsif( $enum{pbyte} == $enum{nbyte} && $enum{pbyte} == $enum{pword} && $enum{pbyte} == $enum{nword} && $enum{pbyte} == $enum{plong} && $enum{pbyte} == $enum{nlong} ) { $sizes{enum} = $enum{pbyte}; } else { $self->_msg( "Hmm, your compiler has strange enums." ); } } $self->_msg( "Got size information for the following types:" ); $self->_wrapped_list( sort @{[map {y/ /_/; $_} keys %sizes]} ); $self->_debug(sub { Data::Dumper->Dump( [\%sizes], ['*sizes'] ) }); \%sizes; } #----------------------------------------------------------------------- # UNSIGNED CHARACTERS #----------------------------------------------------------------------- sub _get_unsigned_chars_run { my $self = shift; $self->_temp( < int main() { char c; int i; c = -1; i = c; printf("result=%d\\n", i); } ENDC my $res = $self->_build_temp; if( $res->{status} == 0 and -e $self->_exefile ) { { local $self->{fatal} = 0; $res = $self->_run_temp; } if( $res->{didnotrun} ) { $self->_msg( "It seems I cannot run your compiler executables." ); return undef; } for my $line ( @{$res->{stdout}} ) { $line =~ /^result=(-?\d+)/ and return $1; } } else { $self->_msg( "Could not build the test program." ); $self->_out( '| ', @{$res->{stderr}} ); } return undef; } sub _get_unsigned_chars_compile { my $self = shift; my $res = $self->_test_type( "int", "(int)((char)-1)", 8 ); if( defined $res ) { $res =~ /^\xFF+$/ and return -1; $res =~ /^\x00+\xFF$/ || $res =~ /^\xFF\x00+$/ and return 255; } $self->_msg( "Could not determine character signedness." ); return undef; } sub _get_unsigned_chars { my $self = shift; $self->_msg( "\nTrying to find out if your chars are unsigned..." ); my $meth = $self->{can_run} ? "_get_unsigned_chars_run" : "_get_unsigned_chars_compile"; my $result = $self->$meth(); if( defined $result ) { if( $result == -1 ) { $self->_msg( "Your chars are signed." ); return 0; } elsif( $result == 255 ) { $self->_msg( "Your chars are unsigned." ); return 1; } elsif( $result >= 0 ) { $self->_msg( "Your chars seem to be unsigned." ); return 1; } else { $self->_msg( "Your chars seem to be signed." ); return 0; } } $self->_msg( "No idea." ); return undef; } #----------------------------------------------------------------------- # BYTEORDER #----------------------------------------------------------------------- sub _get_byteorder_run { my $self = shift; $self->_temp( < typedef unsigned long UVAL; typedef union { UVAL multi; char byte[sizeof(UVAL)]; } order; int main() { order test; int i; if( sizeof(UVAL) > 4 ) test.multi = (((UVAL)0x08070605) << 32) | ((UVAL)0x04030201); else test.multi = (UVAL)0x04030201; printf("order="); for( i=0; i_build_temp; if( $res->{status} == 0 and -e $self->_exefile ) { { local $self->{fatal} = 0; $res = $self->_run_temp; } if( $res->{didnotrun} ) { $self->_msg( "It seems I cannot run your compiler executables." ); return ''; } my $order; for my $line ( @{$res->{stdout}} ) { $line =~ /^order=(\d+)/ and $order = $1; } if( defined $order ) { my %bo = ( '87654321' => 'BigEndian', '4321' => 'BigEndian', '21' => 'BigEndian', '12345678' => 'LittleEndian', '1234' => 'LittleEndian', '12' => 'LittleEndian', ); if( exists $bo{$order} ) { $self->_msg( "The byte order appears to be $bo{$order}." ); return $bo{$order}; } $self->_msg( "Your compiler seems to have a strange byte order ($order)." ); } else { $self->_msg( "The test program delivered some strange output." ); $self->_out( '| ', @{$res->{stdout}} ); } } else { $self->_msg( "Could not build the test program." ); $self->_out( '| ', @{$res->{stderr}} ); } return ''; } sub _get_byteorder_compile { my $self = shift; my $res = $self->_test_type( "unsigned long", < 4 ? (((unsigned long)0x08070605) << 32) | ((unsigned long)0x04030201) : (unsigned long)0x04030201 ENDINIT unless( defined $res ) { $self->_msg( "Could not determine byte order." ); return ''; } my %bo = ( "\x08\x07\x06\x05\x04\x03\x02\x01" => 'BigEndian', "\x04\x03\x02\x01" => 'BigEndian', "\x02\x01" => 'BigEndian', "\x01\x02\x03\x04\x05\x06\x07\x08" => 'LittleEndian', "\x01\x02\x03\x04" => 'LittleEndian', "\x01\x02" => 'LittleEndian', ); if( exists $bo{$res} ) { $self->_msg( "The byte order appears to be $bo{$res}." ); return $bo{$res}; } my $str = join '', map { sprintf "%02X", $_ } unpack "C*", $res; $self->_msg( "Your compiler seems to have a strange byte order (0x$str)." ); return ''; } sub _get_byteorder { my $self = shift; $self->_msg( "\nTrying to determine byte order..." ); my $meth = $self->{can_run} ? "_get_byteorder_run" : "_get_byteorder_compile"; return $self->$meth(); } #----------------------------------------------------------------------- # C++ COMMENTS #----------------------------------------------------------------------- sub _get_cpp_comments { my $self = shift; $self->_msg( "\nTrying to find out if your compiler understands C++ comments..." ); $self->_temp( <_compile_or_build_temp; if( $res->{status} ) { $self->_msg( "No, it doesn't." ); return 0; } else { $self->_msg( "Yes, it does." ); return 1; } } #----------------------------------------------------------------------- # KEYWORD MAP #----------------------------------------------------------------------- sub _get_keyword_map { my $self = shift; $self->_msg( "\nTrying to find out which special keywords your compiler knows..." ); my @remap = qw( asm break case char continue default do else for goto if int return sizeof struct switch typedef union while auto const double enum extern float long register short signed static unsigned void volatile inline restrict ); my @keywords = map { ("_${_}", "__${_}", "__${_}__") } sort @remap, qw( bounded unbounded imag real complex extension ); my @known; my $count = 0; for my $key ( sort @keywords ) { $self->_work_in_progress( sprintf "%d/%d keywords", scalar @known, $count++ ); $self->_temp( <_compile_or_build_temp; $res->{status} and push @known, $key; } $self->_work_done; if( @known ) { $self->_msg( "Your compiler recognizes the following special keywords:" ); $self->_wrapped_list( sort @known ); } else { $self->_msg( "None." ); } $self->_debug(sub { Data::Dumper->Dump( [\@known], ['*known'] ) }); my $remap = join '|', @remap; return { map { ( $_ => (/^_*($remap)_*$/ ? $1 : undef) ) } @known } } #----------------------------------------------------------------------- # INVALID KEYWORDS #----------------------------------------------------------------------- sub _get_invalid_keywords { my $self = shift; $self->_msg( "\nTrying to find out which keywords your compiler doesn't know..." ); my @keywords = qw( inline restrict auto const double enum extern float long register short signed static unsigned void volatile asm ); my @invalid; my $count = 0; for my $key ( sort @keywords ) { $self->_work_in_progress( sprintf "%d/%d keywords", scalar @invalid, $count++ ); $self->_temp( <_compile_or_build_temp; $res->{status} == 0 and push @invalid, $key; } $self->_work_done; if( @invalid ) { $self->_msg( "Your compiler doesn't recognize the following keywords:" ); $self->_wrapped_list( sort @invalid ); } else { $self->_msg( "Your compiler recognizes all keywords." ); } $self->_debug(sub { Data::Dumper->Dump( [\@invalid], ['*invalid'] ) }); \@invalid; } #----------------------------------------------------------------------- # PREDEFINED ASSERTIONS #----------------------------------------------------------------------- sub _get_preasserted { my $self = shift; my $assert = shift; $self->_msg( "\nChecking for assertions (this may take a while)..." ); my $code; for my $pred ( keys %$assert ) { for my $ans ( @{$assert->{$pred}} ) { $code .= <_temp( $code ); my $res = $self->_preprocess_temp; if( $res->{status} ) { $self->_msg( "Your compiler doesn't seem to like assertions." ); return {}; } my %results; for my $line ($self->_read_pp($res)) { chomp $line; next if $line =~ /^\s*#/; next if $line =~ /^\s*$/; $line =~ /"\s*([^"]+?)\s*"\s*;/ or next; $results{$1} = 1; } if( my $count = keys %results ) { my $what = $count > 1 ? "these $count assertions" : "this assertion"; $self->_msg( "Your compiler makes $what:" ); $self->_wrapped_list( sort keys %results ); } else { $self->_msg( "Your compiler doesn't seem to assert anything." ); } \%results; } #----------------------------------------------------------------------- # PREDEFINED MACROS #----------------------------------------------------------------------- sub _get_predefined { my $self = shift; my $names = shift; my $pos = 0; my @stdnames = qw( __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ _Pragma ); $self->_msg( "\nChecking for predefined macros (this may take a while)..." ); my %defs; for my $name ( &_preset_names ) { my @words = map { ("$_", "_$_", "__$_", "__${_}__" ) } $name, uc($name), lc($name); @defs{@words} = (1)x@words; } my %results = (); my $count = 0; my $max = @$names; while(1) { delete @defs{@stdnames}; $self->_work_in_progress( "($count) $pos/$max" ); my $code; for my $def ( keys %defs ) { $code .= <_temp( $code ); my $res = $self->_preprocess_temp; if( $res->{status} ) { $self->_work_done; $self->_msg( "Your compiler exited unexpectedly:" ); $self->_out( '| ', @{$res->{stderr}} ); return {}; } my $out = join '', $self->_read_pp($res); while( $out =~ /"\s*([^\s"]+)\s*"\s*;\s*\(\s*([^\r\n]*?)\s*\)\s*;/g ) { $results{$1} = $2; } $count = keys %results; %defs = (); last if $pos >= @$names; my $last = $pos+999; $last = $#$names if $last > $#$names; @defs{@{$names}[$pos..$last]} = (1)x($last-$pos+1); $pos = $last+1; } delete @results{@stdnames}; $self->_work_done; if( my $count = keys %results ) { my $what = $count > 1 ? "these $count symbols" : "this symbol"; $self->_msg( "Your compiler defines $what:" ); $self->_wrapped_list( sort keys %results ); } else { $self->_msg( "Your compiler doesn't seem to define anything." ); } $self->_debug(sub { Data::Dumper->Dump( [\%results], ['*results'] ) }); \%results; } #----------------------------------------------------------------------- # INCLUDE PATH #----------------------------------------------------------------------- sub _incpath_main { my($self, $quiet, @headers) = @_; my %resolve; for my $hdr ( @headers ) { $self->_work_in_progress; $self->_temp( < TEMP my $res = $self->_preprocess_temp; if( $res->{status} ) { $quiet or $self->_msg("Compiler choked on including '$hdr'. Maybe a missing ANSI header..."); next; } for my $line ($self->_read_pp($res)) { if( $line =~ $self->{ppline} ) { my $file = $2; if( $file =~ /^(.*)\Q$hdr\E$/ ) { my $inc = $1; $inc =~ y{\\}{/}s; $resolve{$hdr} = [$inc]; last; } } } } %resolve; } sub _get_files { my($dir, $rex) = @_; local *DIR; opendir DIR, $dir or return (); my @files = readdir DIR; closedir DIR; if( defined $rex ) { return grep $_ =~ $rex, @files; } @files; } sub _run_incpath { my $self = shift; my(@inc,@newhdr,%resolve); my @headers = @{$self->{headers}}; $self->_msg( "\nTrying to determine include path..." ); %resolve = $self->_incpath_main(0, @headers); @inc = _unique( map $_->[0], values %resolve ); if( @inc > 1 ) { my @files; for my $path ( @inc ) { push @files, grep !-d $path.$_, _get_files( $path ); } for my $hdr ( _unique( @files ) ) { my @f = grep { -e "$_$hdr" } @inc; @f > 1 && push @newhdr, $hdr; } push @headers, @newhdr; %resolve = ( %resolve, $self->_incpath_main(1, @newhdr) ); for my $hdr ( @headers ) { for my $path ( @inc ) { next unless exists $resolve{$hdr}; next if $path eq $resolve{$hdr}[0]; -e $path.$hdr and push @{$resolve{$hdr}}, $path; } } $self->_debug(sub { Data::Dumper->Dump( [\%resolve], ['*resolve'] ) }); my($i,$j); my @h = grep { @{$resolve{$_}} > 1 } keys %resolve; for( $i = 0; $i < @inc; ++$i ) { for( $j = $i+1; $j < @inc; ++$j ) { for my $h ( @h ) { my($a,$b) = @inc[$i,$j]; my @r = @{$resolve{$h}}; $b eq $r[0] or next; for( my $k = 1; $k < @r; ++$k ) { $r[$k] eq $a and @inc[$i,$j] = @inc[$j,$i]; } } } } } $self->_work_done; $self->_debug(sub { Data::Dumper->Dump( [\@inc], ['*inc'] ) }); $self->_msg( "The include path appears to be:" ); $self->_msg( " ($_) $inc[$_-1]" ) for 1 .. @inc; \@inc; } #----------------------------------------------------------------------- # GATHER MACRO / ASSERTION NAMES #----------------------------------------------------------------------- sub _names { my $self = shift; my $inc_path = shift; my @ppkey = qw( define undef include line error pragma if ifdef ifndef defined elif else endif ); my %files; my %names; my %asserts; $self->_msg( "\nSearching macro names and assertions..." ); my @files = map { my $p = $_; map { $p.$_ } _get_files( $p, qr/\.[hH]$/ ) } @$inc_path; my $ff = 0; while( @files ) { my $file = shift @files; -e $file or next; exists $files{$file} and next; $files{$file} = 1; $ff = keys %files; $self->_work_in_progress( "$ff files found" ); my $fh = new IO::File $file; next unless defined $fh; while( <$fh> ) { if( /^\s*#\s*include\s*[<"]([^>"]+)[>"]/ ) { for( '', @$inc_path ) { my $f = $_.$1; exists $files{$f} or push @files, $f; } } } } $self->_debug(sub { Data::Dumper->Dump([\%files], ['*files']) }); $ff = keys %files; my $fs = 0; for my $name ( keys %files ) { my $count = keys %names; $fs++; $self->_work_in_progress( "($count) $fs/$ff files scanned" ); -e $name or next; my $fh = new IO::File $name; next unless defined $fh; my $file = do { local $/; <$fh> }; $file =~ s{\\\s*$/}{}g; while( $file =~ /\b([A-Za-z_]\w*)\b/g ) { $names{$1} ||= 1; } for my $line ( $file =~ /^\s*#(?:el)?if(.*)/gm ) { while( $line =~ /#\s*(\w+)\s*\(\s*(\w+)\s*\)/g ) { $asserts{$1}{$2} ||= 1; } } } delete @names{@ppkey}; my @names = keys %names; my $assertions = 0; for( keys %asserts ) { $assertions += keys %{$asserts{$_}}; } # merge assertions with fixed assertions from _assert() my $asserts = _assert(); for my $q ( keys %$asserts ) { for my $a ( @{$asserts->{$q}} ) { $asserts{$q}{$a} ||= 1; } } for( keys %asserts ) { $asserts{$_} = [sort keys %{$asserts{$_}}]; } $self->_work_done; $self->{debug} and $self->_debug(sub { Data::Dumper->Dump([\@names, \%asserts], [qw(*names *asserts)]) }); $assertions = $assertions ? " and $assertions potential assertions" : ''; $self->_msg( sprintf "Found %d potential macro names$assertions.", scalar @names ); (\@names, \%asserts); } ######################################################################## # # CONFIGURE # ######################################################################## sub _configure { my $self = shift; ### Purpose of _configure: ### Populate these options unless set by the user and ### check if they do what they're supposed to. ### ### --cc the C compiler ### --preprocess how to get preprocessor output from the compiler ### --compile-obj how to compile C file to object file ### --compile-exe how to compile C file to executable file ### ### TODO: detect a.out. (Probably glob <*> before and after running the compiler?) ### Save user values... my $user = {}; for my $c (qw( cc preprocess compile-obj compile-exe )) { $user->{$c} = $self->{$c} if exists $self->{$c}; } ### Let's go! $self->_cleanup_basename; $self->_msg("Checking if your compiler works..."); ### First, try to find a working CC that we can run... my @CC = exists $user->{cc} ? ($user->{cc}) : (qw( cc gcc icc cl )); my $res; my $didnotrun; my $fullcc; do { my $ccname = shift @CC; $fullcc = which($ccname); $fullcc = $ccname if !defined $fullcc && -x $ccname; $didnotrun = 1; if (defined $fullcc) { $self->{cc} = $fullcc; $res = $self->_runprog($self->{cc}); $didnotrun = $res->{didnotrun}; } if ($didnotrun and exists $user->{cc}) { if (defined $fullcc) { $self->_msg("It seems your compiler '$self->{cc}' did not run."); } else { $self->_msg("I could not find your compiler '$self->{cc}'."); } $self->_quit; } } while ($didnotrun && @CC); if ($didnotrun) { $self->_msg("None of the compilers I know seemed to run."); $self->_msg("Try specifying a compiler using the --cc option."); $self->_quit; }; $self->_msg("Found a working compiler at $self->{cc}\n"); ### Ok, so we have a compiler. Let's see how to get preprocessor output... my $line = 'char*lotr="Very useful, no doubt, that was to Saruman; yet it seems that he was not content.";'; $self->_temp(<{preprocess} ? ($user->{preprocess}) : ('-E %c |', '-c -E %c |', '-sp %c'); my @PPE = exists $user->{'pp-ext'} ? ($user->{'pp-ext'}) : ('.i', '.p'); my($have_source, $have_ppline, $pp_ext); do { $have_source = 0; $have_ppline = 0; $self->{preprocess} = shift @PP; $res = $self->_preprocess_temp; for my $ext (@PPE) { $self->{'pp-ext'} = $ext; if (-f $self->_ppfile) { $pp_ext = $ext; last; } } my @ppout = $self->_read_pp($res); for (@ppout) { /\Q$line/ and $have_source = 1; $_ =~ $self->{ppline} && $2 =~ /\Q$self->{basename}/ and $have_ppline = 1; } } while (!$have_source && @PP); $self->{'pp-ext'} = $pp_ext || ''; $self->{can_preprocess} = $have_source; $self->{can_read_ppout} = $have_ppline; if (!$self->{can_preprocess}) { $self->_msg("I couldn't figure out how to get usable preprocessor output from the compiler."); } else { $self->_msg("I can get preprocessor output using rule [$self->{preprocess}]."); $self->_msg("But I don't understand the preprocessor output.") unless $self->{can_read_ppout}; } ### Compile/build executable files $self->{can_compile} = 0; $self->{can_build} = 0; $self->{can_run} = 0; $self->_cleanup_basename; $self->_temp( <{'compile-obj'} ? ($user->{'compile-obj'}) : ('-c -o %o %c', '%c'); my @OBJ = exists $user->{'obj-ext'} ? ($user->{'obj-ext'}) : @{_OS('obj-ext')}; my $obj_ext; do { $self->{'compile-obj'} = shift @CCO; undef $obj_ext; for my $ext (@OBJ) { $self->{'obj-ext'} = $ext; $res = $self->_compile_temp; if (-f $self->_objfile) { $obj_ext = $ext; last; } } $self->{can_compile} = $res->{didnotrun} == 0 && $res->{status} == 0 && defined $obj_ext; } while (!$self->{can_compile} && @CCO); $self->{'obj-ext'} = $obj_ext || ''; if ($self->{can_compile}) { $self->_msg("I can compile object files using rule [$self->{'compile-obj'}]."); } else { $self->_msg("I cannot compile object files."); } if ($self->{run}) { $self->_cleanup_basename; $self->_temp(< int main() { printf("Hello World\\n"); return 0; } TEMP my @CCE = exists $user->{'compile-exe'} ? ($user->{'compile-exe'}) : ('-o %e %c'); my @EXE = exists $user->{'exe-ext'} ? ($user->{'exe-ext'}) : @{_OS('exe-ext')}; my $exe_ext; do { $self->{'compile-exe'} = shift @CCE; undef $exe_ext; for my $ext (@EXE) { $self->{'exe-ext'} = $ext; $res = $self->_build_temp; if (-f $self->_exefile) { $exe_ext = $ext; last; } } $self->{can_build} = $res->{didnotrun} == 0 && $res->{status} == 0 && defined $exe_ext; } while (!$self->{can_build} && @CCE); $self->{'exe-ext'} = $exe_ext || ''; if ($self->{can_build}) { if ($self->{can_compile}) { $self->_msg("I can also build executable files using rule [$self->{'compile-exe'}]."); } else { $self->_msg("But it seems I can build executable files using rule [$self->{'compile-exe'}]."); } $res = $self->_run_temp; $self->{can_run} = $res->{didnotrun} == 0 && $res->{status} == 0 && grep /Hello World/, @{$res->{stdout}}; if ($self->{can_run}) { $self->_msg("And I can run the executables. Great!"); } else { $self->_msg("But I cannot run the executables. That should be fine, too."); } } else { if ($self->{can_compile}) { $self->_msg("But I cannot build executable files. No big deal."); } else { $self->_msg("And I cannot build executable files. Sigh."); } } } else { $self->_msg("No need to check if I can build executables."); } $self->_cleanup_basename; $self->_debug(sub { Data::Dumper->Dump( [$self], [qw(self)] ) }); unless ($self->{can_preprocess} || $self->{can_compile} || $self->{can_run}) { my @opt = map { "--$_" } grep { !exists $user->{$_} } qw( preprocess compile-obj compile-exe ); if (@opt) { my $last = pop @opt; my $opt = @opt ? join(', ', @opt) . " and $last options" : "$last option"; $self->_msg_wrapped("\nTry using the $opt to specify compiler behaviour."); } $self->_quit; } } ######################################################################## # # UTILITY ROUTINES # ######################################################################## sub _OS { my $prop = shift; my %os = ( (map { ( $_ => { 'obj-ext' => ['.obj', '.o'], 'exe-ext' => ['.exe', ''], 'file-sep' => '\\', } ) } qw( MSWin32 dos os2 ) ), ); my %def = ( 'obj-ext' => ['.o', '.obj'], 'exe-ext' => ['', '.exe'], 'file-sep' => '/', ); return exists $os{$^O} ? $os{$^O}{$prop} : $def{$prop}; } sub _cleanup_basename { my $self = shift; my %seen; my @basefiles = grep !$seen{$_}++, glob "$self->{basename}*"; push @basefiles, grep !$seen{$_}++, glob "$self->{basename}.*"; $self->_debug("cleaning up: @basefiles\n"); unlink @basefiles; } sub _unique { my %unique; grep !$unique{$_}++, @_; } sub _cfile { my $self = shift; return $self->{basename} . ($self->{'c-ext'} || ''); } sub _ppfile { my $self = shift; return $self->{basename} . ($self->{'pp-ext'} || ''); } sub _objfile { my $self = shift; return $self->{basename} . ($self->{'obj-ext'} || ''); } sub _exefile { my $self = shift; return $self->{basename} . ($self->{'exe-ext'} || ''); } sub _read_pp { my($self, $res) = @_; if ($self->{preprocess} =~ /\|$/) { return @{$res->{stdout}}; } my $f = new IO::File $self->_ppfile or return; return <$f>; } sub _temp { my $self = shift; my $temp = $self->_cfile; $self->_debug( "creating temporary file '$temp'\n" ); if (-e $temp) { unlink $temp or croak "Could not remove temporary file '$temp': $!\n"; } my $f = new IO::File ">$temp" or croak "Could not open temporary file '$temp': $!\n"; $f->print(@_); } sub _quit { my $self = shift; $self->_msg("\nSorry, cannot continue."); $self->cleanup; exit(1); } sub _run_temp { my $self = shift; $self->_runprog( "." . _OS('file-sep') . $self->_exefile ); } sub _interpolate { my($self, $template) = @_; my %replace = ( c => $self->_cfile, o => $self->_objfile, e => $self->_exefile, i => $self->_ppfile, ); my $match = join '|', keys %replace; $template =~ s/\s+\|$//; $template =~ s/%($match)/$replace{$1}/g; return shellwords($template); } sub _compile_or_build_temp { my $self = shift; my $meth = $self->{can_compile} ? '_compile_temp' : '_build_temp'; $self->$meth(); } sub _build_temp { my $self = shift; unlink $self->_exefile if -f $self->_exefile; # make sure exe is removed $self->_runcc($self->_interpolate($self->{'compile-exe'})); } sub _compile_temp { my $self = shift; unlink $self->_objfile if -f $self->_objfile; # make sure obj is removed $self->_runcc($self->_interpolate($self->{'compile-obj'})); } sub _preprocess_temp { my $self = shift; $self->_runcc($self->_interpolate($self->{'preprocess'})); } sub _runcc { my $self = shift; $self->_runprog($self->{cc}, @{$self->{ccflags}}, @_); } sub _runprog { my $self = shift; my $prog = shift; my @args = @_; eval { alarm 10; alarm 0; }; my $has_alarm = $@ eq ''; my $tmp = '_t_m_p_'; $self->_debug( "running '$prog @args'\n" ); eval { local $SIG{ALRM}; if( $has_alarm ) { $SIG{ALRM} = sub { die "TIMEOUT\n" }; alarm $self->{timeout}; } my $run = $prog =~ m/\s/ ? qq("$prog") : $prog; system "$run @args >$tmp.out 2>$tmp.err"; $has_alarm and alarm 0; }; my %rval = ( status => $? >> 8, ); for my $p (qw(out err)) { my $file = "$tmp.$p"; my @lines; if (-f $file) { { my $fh = IO::File->new($file); if (defined $fh) { @lines = <$fh>; } } unlink $file; } $rval{"std$p"} = \@lines; } $rval{didnotrun} = 0; if( @{$rval{stdout}} && $rval{stdout}[0] =~ /^Can't exec "\Q$prog\E":/ ) { $rval{didnotrun} = 1; } if( $^O eq 'MSWin32' && @{$rval{stdout}} == 0 && @{$rval{stderr}} == 0 && $rval{status} == 1 ) { $rval{didnotrun} = 1; } if( $rval{didnotrun} and $self->{fatal} ) { croak "could not run '$prog @args'\n"; } $? & 128 and $rval{core} = 1; $? & 127 and $rval{signal} = $? & 127; $self->{debug} and $self->_debug(sub { Data::Dumper->Dump( [\%rval], ['*rval'] ) }); if( $self->{__int__} ) { $self->_msg( "\n\nInterrupted..." ); $self->_quit; } \%rval; } sub _work_in_progress { my $self = shift; $self->{quiet} and return; $self->{status} or return; my @prog = qw( ---------- >--------- *>-------- +*>------- -+*>------ --+*>----- ---+*>---- ----+*>--- -----+*>-- ------+*>- -------+*> --------+* ---------+ ---------- ---------< --------<* -------<*+ ------<*+- -----<*+-- ----<*+--- ---<*+---- --<*+----- -<*+------ <*+------- *+-------- +--------- ); my $index = 0; my @t = times; my $t = $t[0]+$t[1]+$t[2]+$t[3]; if( exists $self->{__progress__} ) { $t - $self->{__progress__} < 0.1 and return; $index = ++$self->{__prog_index__} % @prog; } print STDERR "\r", $prog[$index]; if( @_ ) { my $str = ' ' . join( '', @_ ); $str .= ' 'x(40-length($str)); print STDERR $str; } if( $self->{__int__} ) { $self->_msg( "\n\nInterrupted..." ); $self->_quit; } $self->{__progress__} = $t; } sub _work_done { my $self = shift; $self->{quiet} and return; $self->{status} or return; delete $self->{__progress__}; delete $self->{__prog_index__}; print STDERR "\r", ' 'x50, "\r"; } sub _msg { my $self = shift; $self->{quiet} and return; if( $self->{debug} ) { my (undef,undef,$line,$sub) = caller 1; print STDERR "($sub:$line): "; } print STDERR @_, "\n"; } sub _msg_wrapped { my $self = shift; $self->{quiet} and return; my $string = ''; if( $self->{debug} ) { my (undef,undef,$line,$sub) = caller 1; $string .= "($sub:$line): "; } $string .= join '', @_, "\n"; print STDERR wrap('', '', $string); } sub _wrapped_list { my $self = shift; $self->{quiet} and return; my $string = "[@_]\n"; print STDERR wrap( ' ', ' ', $string ); } sub _out { my $self = shift; $self->{quiet} and return; my $pre = shift; my @args = @_; for( @args ) { s/^/$pre/gms; /[\r\n]+$/ or s/$/\n/; } print STDERR @args; } sub _debug { my $self = shift; $self->{debug} or return; my @args = @_; my (undef,undef,$line,$sub) = caller 1; for (@args) { $_ = $_->() if ref $_ eq 'CODE'; s/^/DEBUG | /gms; } print STDERR "DEBUG @ $sub:$line\n", @args; } sub which { my $command = shift; my(@PATH, @PATHEXT, $cfg); my @config = ( { os => 'MSWin32|dos|os2', path_sep => ';' , file_sep => '\\', var => 'PATH' }, { os => 'MacOS' , path_sep => '\,', file_sep => ':' , var => 'Commands' }, { os => '.*' , path_sep => ':' , file_sep => '/' , var => 'PATH' }, ); for( @config ) { if( $^O =~ /^(?:$_->{os})$/ ) { $cfg = $_; last; } } if( index( $command, $cfg->{file_sep} ) >= 0 ) { my $full; if( $^O eq 'MacOS' ) { -e $command and return $command; } else { -x $command and return $command; for my $ext ( @PATHEXT ) { -x "$command$ext" and return "$command$ext"; } } } else { if( exists $ENV{$cfg->{var}} ) { my %uni; @PATH = grep !$uni{$_}++, split /$cfg->{path_sep}/, $ENV{$cfg->{var}}; } if( exists $ENV{PATHEXT} ) { my %uni; @PATHEXT = grep !$uni{$_}++, split /$cfg->{path_sep}/, $ENV{PATHEXT}; } for my $dir ( @PATH ) { my $full; if( $^O eq 'MacOS' ) { $full = "$dir$command"; -e $full and return $full; } else { $full = "$dir$cfg->{file_sep}$command"; -x $full and return $full; for my $ext ( @PATHEXT ) { -x "$full$ext" and return "$full$ext"; } } } } return undef; } __END__ =head1 NAME ccconfig - Get Convert::Binary::C configuration for a compiler =head1 SYNOPSIS ccconfig I [-- compiler-options] I: -c --cc compiler compiler executable to test default: auto-determined -o --output-file file output filename default: output to stdout -f --output-format format output format default: dumper --basename name basename of the temporary test files default: _t_e_s_t -I --inc-path path manually set compiler include path --preprocess rule compiler rule for preprocessing --compile-obj rule compiler rule for compiling objects --compile-exe rule compiler rule for compiling executables --c-ext ext extension of C source files --pp-ext ext extension of preprocessor output files --obj-ext ext extension of object files --exe-ext ext extension of executable files --nodelete don't delete temporary files --norun don't try to run executables --quiet don't display anything --nostatus don't display status indicator --version print version number --debug debug mode Placeholders allowed in compiler rules: %c C source file %o object file %e executable file %i preprocessor output file | result is written to stdout (only at end of rule) =head1 DESCRIPTION C will try to determine a usable configuration for Convert::Binary::C from testing a compiler executable. It is not necessary that the binaries generated by the compiler can be executed, so C can also be used for cross-compilers. This tool is still experimental, and you should neither rely on its output without checking, nor expect it to work in your environment. =head1 OPTIONS =head2 C<--cc> compiler This option allows you to explicitly specify a compiler executable. This is especially useful if you don't want to use your system compiler. If this options is not given, C tries to guess a compiler. =head2 C<--output-file> file Write Convert::Binary::C configuration to the specified file. The default is to write the configuration to C. =head2 C<--output-format> format Specify the output format of the Convert::Binary::C configuration. The following formats are currently supported: dumper Output a %config hash using Data::Dumper require Output in a format suitable for require The default is C. =head2 C<--basename> name Allows you to change the base name of the temporary test files. This is used along with the various C<-ext> options to build the filenames of C source files, preprocessor output files, object files and executables. =head2 C<--inc-path> path This option allows you to manually set the include path of the compiler. This is useful if C cannot determine the include path automatically, most probably because it cannot parse the preprocessor output. This option can be specified more than once. =head2 C<--preprocess> rule Using this option, you can specify a I that C uses to run the compiler to get preprocessor output. Most compilers write the preprocessor output to standard output when given the C<-E> option, i.e. cc -E foo.c will preprocess F to standard output. The corresponding rule for C would be: ccconfig --preprocess='-E %c |' The <%c> will be replaced with the C source filename, and the pipe symbol signals that the result will be written to standard output. The following placeholders can be used in C rules: %c C source file %o object file %e executable file %i preprocessor output file Usually, C tries to figure out the correct rules on its own. =head2 C<--compile-obj> rule Like C<--preprocess>, this option allows you to define a rule for how to compile an object file. For most compilers, this rule will be something like ccconfig --compile-obj='-c -o %o %c' =head2 C<--compile-exe> rule Like C<--preprocess>, this option allows you to define a rule for how to compile an executable file. For most compilers, this rule will be something like ccconfig --compile-exe='-o %e %c' Note that it is sufficient to specify either C<--compile-obj> or C<--compile-exe>. So if your compiler can only create object files, that's just fine. =head2 C<--c-ext> This option is used along with C<--basename> to build the name of a C source file. This is usually set to C<.c>. =head2 C<--pp-ext> This option is used along with C<--basename> to build the name of a preprocessor output file. =head2 C<--obj-ext> This option is used along with C<--basename> to build the name of an object file. =head2 C<--exe-ext> This option is used along with C<--basename> to build the name of an executable file. =head2 C<--nodelete> Don't attempt to delete temporary files that have been created by the compiler. Normally, C will look for all files with the same basename as the temporary test file and delete them. =head2 C<--norun> You can specify this option if the executables generated by your compiler cannot be run on your machine, i.e. if you have a cross-compiler. However, C will automatically find out that it cannot run the executables. When this option is set, a different set of algorithms is used to determine a couple of configuration settings. These algorithms are all based upon placing a special signature in the object file. They are less reliable that the standard algorithms, so you shouldn't use them unless you have to. =head2 C<--quiet> Don't display anything except for the final configuration. =head2 C<--nostatus> Hide the status indicator. Recommended if you want to redirect the script output to a file: ccconfig --nostatus >config.pl 2>ccconfig.log =head2 C<--version> Writes the program name, version and path to standard output. =head2 C<--debug> Generate tons of debug output. Don't use unless you know what you're doing. =head1 EXAMPLES Normally, a simple ccconfig without arguments is enough if you want the configuration for your system compiler. While C is running, it will write lots of status information to C. When it's done, it will usually dump a Perl hash table to C which can be directly used as a configuration for Convert::Binary::C. If you want the configuration for a different compiler, or C cannot determine your system compiler automatically, use ccconfig -c gcc32 if your compiler's name is C. If you want to pass additional options to the compiler, you can do so after a double-dash on the command line: ccconfig -- -g -DDEBUGGING or ccconfig -c gcc32 -- -ansi -fshort-enums If you'd like to interface with the Perl core, you may find a suitable configuration using something like: ccconfig --cc=`perl -MConfig -e 'print $Config{cc}'` \ -- `perl -MConfig -e 'print $Config{ccflags}'` =head1 COPYRIGHT Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO See L. =cut Convert-Binary-C-0.76/bin/convert.PL0000755000175000001440000001022711550664613015704 0ustar mhxusersuse Config; $file = @ARGV ? shift : 'examples/convert.pl'; open OUT, ">$file" or die "Can't create $file: $!"; print OUT <<"!GROK!THIS!"; $Config{startperl} -w !GROK!THIS! print OUT <<'!NO!SUBS!'; ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:12 +0200 $ # $Revision: 14 $ # $Source: /bin/convert.PL $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ #=============================================================================== # # Parse a C struct and use 'pack', 'unpack', 'sizeof' and 'offsetof'. # #=============================================================================== use Convert::Binary::C; use Data::Dumper; use strict; #-------------------------------------------------------------- # Create an object, configure it, and parse some embedded code. #-------------------------------------------------------------- my $c = Convert::Binary::C->new( LongSize => 4, ShortSize => 2 ) ->Alignment( 4 ) ->ByteOrder( 'BigEndian' ) ->parse( <<'ENDC' ); typedef signed long i_32; typedef unsigned long u_32; typedef signed short i_16; typedef unsigned short u_16; typedef signed char i_8; typedef unsigned char u_8; struct convert { i_8 byte; i_16 word[2]; i_32 dword; union { u_32 dword; u_8 bytes[ sizeof( u_32 ) ]; } c32; }; ENDC #----------------------------------------------------------- # Print the offsets and sizes of some of the struct members. #----------------------------------------------------------- for( qw( byte word dword ) ) { print "offsetof( 'convert', '$_' ) = ", $c->offsetof( 'convert', $_ ); print ", sizeof( 'convert.$_' ) = ", $c->sizeof( "convert.$_" ), "\n"; } #------------------------------------------------- # Pack a Perl data structure into a binary string. # Note that not all members need to be specified. #------------------------------------------------- my $binary = $c->pack( 'convert', { word => [-30000, 4711], c32 => { dword => 0x01020304 } } ); #------------------------------------------------------- # Just a demonstration that pack does the right thing... #------------------------------------------------------- if( $c->sizeof( 'convert' ) == length $binary ) { print "\nYup, the size matches!\n"; } #------------------------------------------------------- # Hexdump the binary string. # Note that all padding regions are initialized to zero. #------------------------------------------------------- print "\nBinary: ", hexdump( $binary ), "\n\n"; #--------------------------------------------------------------- # Unpack the binary string and dump the returned data structure. #--------------------------------------------------------------- my $data = $c->unpack( 'convert', $binary ); print Data::Dumper->Dump( [$data], ['data'] ); #------------------------------------------------------ # You can modify selected elements in the binary string # using the 3-argument version of 'pack'. #------------------------------------------------------ # only 'dword' will be modified $c->pack( 'convert', { dword => -559038737 }, $binary ); print "\nBinary: ", hexdump( $binary ), "\n\n"; print Dumper( $c->unpack( 'convert', $binary ) ); #-------------------------------------------------- # You can also use pack/unpack on compound members. #-------------------------------------------------- my $array = $c->unpack( 'convert.c32.bytes', 'ABCD' ); print "\n\$array = [ @$array ]\n"; #========================================================== # SUBROUTINES #========================================================== sub hexdump { join ' ', map { sprintf "%02X", $_ } unpack "C*", $_[0]; } !NO!SUBS! close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; Convert-Binary-C-0.76/bin/memmap.PL0000755000175000001440000000675111550664613015507 0ustar mhxusersuse Config; $file = @ARGV ? shift : 'examples/memmap.pl'; open OUT, ">$file" or die "Can't create $file: $!"; print OUT <<"!GROK!THIS!"; $Config{startperl} -w !GROK!THIS! print OUT <<'!NO!SUBS!'; ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2004/12/24 17:15:00 +0100 $ # $Revision: 8 $ # $Source: /bin/memmap.PL $ # ################################################################################ # # Copyright (c) 2002-2004 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ #=============================================================================== # # Print a simple memory map of a structure. # #=============================================================================== use Convert::Binary::C; use Data::Dumper; use strict; #----------------------------------------------------- # Create an object, configure it, and parse some code. #----------------------------------------------------- my $c = Convert::Binary::C->new( PointerSize => 4, LongSize => 4, ShortSize => 2, Alignment => 4 ) ->parse( <<'ENDC' ); typedef unsigned long u_32; typedef struct _LinkedList * LinkedList; typedef struct _HashTable * HashTable; typedef struct { enum { BO_BIG_ENDIAN, BO_LITTLE_ENDIAN } bo; } ArchSpecs; typedef struct { char *buffer; long pos, length; } Buffer; typedef struct { unsigned alignment; unsigned int_size; unsigned short_size; unsigned long_size; unsigned long_long_size; int enum_size; unsigned ptr_size; unsigned float_size; unsigned double_size; unsigned long_double_size; u_32 flags; u_32 keywords; LinkedList disabled_keywords; LinkedList includes; LinkedList defines; LinkedList assertions; HashTable keyword_map; } CParseConfig; typedef struct { LinkedList enums; LinkedList structs; LinkedList typedef_lists; HashTable htEnumerators; HashTable htEnums; HashTable htStructs; HashTable htTypedefs; HashTable htFiles; char *errstr; } CParseInfo; typedef struct { char *bufptr; unsigned alignment; unsigned align_base; int dataTooShortFlag; Buffer buf; CParseConfig cfg; CParseInfo cpi; ArchSpecs as; enum { ET_INTEGER, ET_STRING, ET_BOTH } enumType; } CBC; ENDC #------------------------------------------------- # Print the memory map for type 'CBC' with a base # address of 0x01500000. #------------------------------------------------- memmap( $c, 'CBC', 0x01500000 ); #========================================================== # SUBROUTINES #========================================================== sub memmap { my($c, $type, $start) = @_; $start ||= 0; my $afmt = '%0' . 2*$c->PointerSize . 'X'; for my $offset ( 0 .. $c->sizeof( $type ) - 1 ) { my $m = $c->member( $type, $offset ); rindex( $m, '+' ) < 0 or next; my $t = $c->typeof( $type.$m ); printf "$afmt %-16s %s\n", $start+$offset, $t, $m; } } !NO!SUBS! close OUT or die "Can't close $file: $!"; chmod 0755, $file or die "Can't reset permissions for $file: $!\n"; Convert-Binary-C-0.76/cbc/0000755000175000001440000000000011550665107013740 5ustar mhxusersConvert-Binary-C-0.76/cbc/debug.c0000644000175000001440000001503511550664613015177 0ustar mhxusers/******************************************************************************* * * MODULE: debug.c * ******************************************************************************** * * DESCRIPTION: C::B::C debugging stuff * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:13 +0200 $ * $Revision: 13 $ * $Source: /cbc/debug.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifdef CBC_DEBUGGING /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctdebug.h" #include "util/hash.h" #include "util/memalloc.h" #include "cbc/cbc.h" #include "cbc/debug.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #ifndef PERLIO_IS_STDIO # ifdef fprintf # undef fprintf # endif # define fprintf PerlIO_printf # ifdef vfprintf # undef vfprintf # endif # define vfprintf PerlIO_vprintf # ifdef stderr # undef stderr # endif # define stderr PerlIO_stderr() # ifdef fopen # undef fopen # endif # define fopen PerlIO_open # ifdef fclose # undef fclose # endif # define fclose PerlIO_close #endif /*===== TYPEDEFS =============================================================*/ #ifdef PerlIO typedef PerlIO * DebugStream; #else typedef FILE * DebugStream; #endif /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void debug_vprintf(const char *f, va_list *l); static void debug_printf(const char *f, ...); static void debug_printf_ctlib(const char *f, ...); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static DebugStream gs_DB_stream; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: debug_* * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Debug output routines. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void debug_vprintf(const char *f, va_list *l) { dTHX; vfprintf(gs_DB_stream, f, *l); } static void debug_printf(const char *f, ...) { dTHX; va_list l; va_start(l, f); vfprintf(gs_DB_stream, f, l); va_end(l); } static void debug_printf_ctlib(const char *f, ...) { dTHX; va_list l; va_start(l, f); debug_printf("DBG: "); vfprintf(gs_DB_stream, f, l); debug_printf("\n"); va_end(l); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: set_debug_options * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void set_debug_options(pTHX_ const char *dbopts) { unsigned long memflags, hashflags, dbgflags; if (strEQ(dbopts, "all")) { memflags = hashflags = dbgflags = 0xFFFFFFFF; } else { memflags = hashflags = dbgflags = 0; while (*dbopts) { switch (*dbopts) { case 'm': memflags |= DB_MEMALLOC_TRACE; break; case 'M': memflags |= DB_MEMALLOC_TRACE | DB_MEMALLOC_ASSERT; break; case 'h': hashflags |= DB_HASH_MAIN; break; case 'd': dbgflags |= DB_CTLIB_MAIN; break; case 'p': dbgflags |= DB_CTLIB_PARSER; break; case 'l': dbgflags |= DB_CTLIB_CLEXER; break; case 'y': dbgflags |= DB_CTLIB_YACC; break; case 'r': dbgflags |= DB_CTLIB_PRAGMA; break; case 'c': dbgflags |= DB_CTLIB_CTLIB; break; case 'H': dbgflags |= DB_CTLIB_HASH; break; case 't': dbgflags |= DB_CTLIB_TYPE; break; case 'P': dbgflags |= DB_CTLIB_PREPROC; break; default: Perl_croak(aTHX_ "Unknown debug option '%c'", *dbopts); break; } dbopts++; } } if (!SetDebugMemAlloc(debug_printf, memflags)) fatal("Cannot enable memory debugging"); if (!SetDebugHash(debug_printf, hashflags)) fatal("Cannot enable hash debugging"); if (!SetDebugCType(debug_printf_ctlib, debug_vprintf, dbgflags)) fatal("Cannot enable debugging"); } /******************************************************************************* * * ROUTINE: set_debug_file * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void set_debug_file(pTHX_ const char *dbfile) { if (gs_DB_stream != stderr && gs_DB_stream != NULL) { fclose(gs_DB_stream); gs_DB_stream = NULL; } gs_DB_stream = dbfile ? fopen(dbfile, "w") : stderr; if (gs_DB_stream == NULL) { WARN((aTHX_ "Cannot open '%s', defaulting to stderr", dbfile)); gs_DB_stream = stderr; } } /******************************************************************************* * * ROUTINE: init_debugging * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void init_debugging(pTHX) { gs_DB_stream = stderr; } #endif /* CBC_DEBUGGING */ Convert-Binary-C-0.76/cbc/debug.h0000644000175000001440000000301011550664613015172 0ustar mhxusers/******************************************************************************* * * HEADER: debug.h * ******************************************************************************** * * DESCRIPTION: C::B::C debugging stuff * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:13 +0200 $ * $Revision: 7 $ * $Source: /cbc/debug.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_DEBUG_H #define _CBC_DEBUG_H #ifdef CBC_DEBUGGING /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define set_debug_options CBC_set_debug_options void set_debug_options(pTHX_ const char *dbopts); #define set_debug_file CBC_set_debug_file void set_debug_file(pTHX_ const char *dbfile); #define init_debugging CBC_init_debugging void init_debugging(pTHX); #endif #endif Convert-Binary-C-0.76/cbc/cbc.h0000644000175000001440000002731611550664613014652 0ustar mhxusers/******************************************************************************* * * HEADER: cbc.h * ******************************************************************************** * * DESCRIPTION: C::B::C common defines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:13 +0200 $ * $Revision: 29 $ * $Source: /cbc/cbc.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_CBC_H #define _CBC_CBC_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/ctdebug.h" #include "ctlib/ctparse.h" #include "ctlib/cttype.h" #include "cbc/basic.h" /*===== DEFINES ==============================================================*/ #define XSCLASS "Convert::Binary::C" #define ARGTYPE_PACKAGE "Convert::Binary::C::ARGTYPE" /*-------------------------------------*/ /* some quick paranoid checks first... */ /*-------------------------------------*/ #if (defined I8SIZE && I8SIZE != 1) || \ (defined U8SIZE && U8SIZE != 1) #error "Your I8/U8 doesn't seem to have 8 bits..." #endif #if (defined I16SIZE && I16SIZE != 2) || \ (defined U16SIZE && U16SIZE != 2) #error "Your I16/U16 doesn't seem to have 16 bits..." #endif #if (defined I32SIZE && I32SIZE != 4) || \ (defined U32SIZE && U32SIZE != 4) #error "Your I32/U32 doesn't seem to have 32 bits..." #endif /*---------------*/ /* some defaults */ /*---------------*/ #ifndef CBC_DEFAULT_PTR_SIZE #define CBC_DEFAULT_PTR_SIZE CTLIB_POINTER_SIZE #else #if CBC_DEFAULT_PTR_SIZE != 1 && \ CBC_DEFAULT_PTR_SIZE != 2 && \ CBC_DEFAULT_PTR_SIZE != 4 && \ CBC_DEFAULT_PTR_SIZE != 8 #error "CBC_DEFAULT_PTR_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_ENUM_SIZE #define CBC_DEFAULT_ENUM_SIZE sizeof( int ) #else #if CBC_DEFAULT_ENUM_SIZE != 0 && \ CBC_DEFAULT_ENUM_SIZE != 1 && \ CBC_DEFAULT_ENUM_SIZE != 2 && \ CBC_DEFAULT_ENUM_SIZE != 4 && \ CBC_DEFAULT_ENUM_SIZE != 8 #error "CBC_DEFAULT_ENUM_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_INT_SIZE #define CBC_DEFAULT_INT_SIZE CTLIB_int_SIZE #else #if CBC_DEFAULT_INT_SIZE != 1 && \ CBC_DEFAULT_INT_SIZE != 2 && \ CBC_DEFAULT_INT_SIZE != 4 && \ CBC_DEFAULT_INT_SIZE != 8 #error "CBC_DEFAULT_INT_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_CHAR_SIZE #define CBC_DEFAULT_CHAR_SIZE CTLIB_char_SIZE #else #if CBC_DEFAULT_CHAR_SIZE != 1 && \ CBC_DEFAULT_CHAR_SIZE != 2 && \ CBC_DEFAULT_CHAR_SIZE != 4 && \ CBC_DEFAULT_CHAR_SIZE != 8 #error "CBC_DEFAULT_CHAR_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_SHORT_SIZE #define CBC_DEFAULT_SHORT_SIZE CTLIB_short_SIZE #else #if CBC_DEFAULT_SHORT_SIZE != 1 && \ CBC_DEFAULT_SHORT_SIZE != 2 && \ CBC_DEFAULT_SHORT_SIZE != 4 && \ CBC_DEFAULT_SHORT_SIZE != 8 #error "CBC_DEFAULT_SHORT_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_LONG_SIZE #define CBC_DEFAULT_LONG_SIZE CTLIB_long_SIZE #else #if CBC_DEFAULT_LONG_SIZE != 1 && \ CBC_DEFAULT_LONG_SIZE != 2 && \ CBC_DEFAULT_LONG_SIZE != 4 && \ CBC_DEFAULT_LONG_SIZE != 8 #error "CBC_DEFAULT_LONG_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_LONG_LONG_SIZE #define CBC_DEFAULT_LONG_LONG_SIZE CTLIB_long_long_SIZE #else #if CBC_DEFAULT_LONG_LONG_SIZE != 1 && \ CBC_DEFAULT_LONG_LONG_SIZE != 2 && \ CBC_DEFAULT_LONG_LONG_SIZE != 4 && \ CBC_DEFAULT_LONG_LONG_SIZE != 8 #error "CBC_DEFAULT_LONG_LONG_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_FLOAT_SIZE #define CBC_DEFAULT_FLOAT_SIZE CTLIB_float_SIZE #else #if CBC_DEFAULT_FLOAT_SIZE != 1 && \ CBC_DEFAULT_FLOAT_SIZE != 2 && \ CBC_DEFAULT_FLOAT_SIZE != 4 && \ CBC_DEFAULT_FLOAT_SIZE != 8 && \ CBC_DEFAULT_FLOAT_SIZE != 12 && \ CBC_DEFAULT_FLOAT_SIZE != 16 #error "CBC_DEFAULT_FLOAT_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_DOUBLE_SIZE #define CBC_DEFAULT_DOUBLE_SIZE CTLIB_double_SIZE #else #if CBC_DEFAULT_DOUBLE_SIZE != 1 && \ CBC_DEFAULT_DOUBLE_SIZE != 2 && \ CBC_DEFAULT_DOUBLE_SIZE != 4 && \ CBC_DEFAULT_DOUBLE_SIZE != 8 && \ CBC_DEFAULT_DOUBLE_SIZE != 12 && \ CBC_DEFAULT_DOUBLE_SIZE != 16 #error "CBC_DEFAULT_DOUBLE_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_LONG_DOUBLE_SIZE #define CBC_DEFAULT_LONG_DOUBLE_SIZE CTLIB_long_double_SIZE #else #if CBC_DEFAULT_LONG_DOUBLE_SIZE != 1 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 2 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 4 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 8 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 12 && \ CBC_DEFAULT_LONG_DOUBLE_SIZE != 16 #error "CBC_DEFAULT_LONG_DOUBLE_SIZE is invalid!" #endif #endif #ifndef CBC_DEFAULT_ALIGNMENT #define CBC_DEFAULT_ALIGNMENT 1 #elif CBC_DEFAULT_ALIGNMENT != 1 && \ CBC_DEFAULT_ALIGNMENT != 2 && \ CBC_DEFAULT_ALIGNMENT != 4 && \ CBC_DEFAULT_ALIGNMENT != 8 && \ CBC_DEFAULT_ALIGNMENT != 16 #error "CBC_DEFAULT_ALIGNMENT is invalid!" #endif #ifndef CBC_DEFAULT_COMPOUND_ALIGNMENT #define CBC_DEFAULT_COMPOUND_ALIGNMENT 1 #elif CBC_DEFAULT_COMPOUND_ALIGNMENT != 1 && \ CBC_DEFAULT_COMPOUND_ALIGNMENT != 2 && \ CBC_DEFAULT_COMPOUND_ALIGNMENT != 4 && \ CBC_DEFAULT_COMPOUND_ALIGNMENT != 8 && \ CBC_DEFAULT_COMPOUND_ALIGNMENT != 16 #error "CBC_DEFAULT_COMPOUND_ALIGNMENT is invalid!" #endif #ifndef CBC_DEFAULT_ENUMTYPE #define CBC_DEFAULT_ENUMTYPE ET_INTEGER #endif #if ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_BIG_ENDIAN #define CBC_NATIVE_BYTEORDER CBO_BIG_ENDIAN #elif ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_LITTLE_ENDIAN #define CBC_NATIVE_BYTEORDER CBO_LITTLE_ENDIAN #else #error "unknown native byte order" #endif #ifndef CBC_DEFAULT_BYTEORDER #define CBC_DEFAULT_BYTEORDER CBC_NATIVE_BYTEORDER #endif /*--------------------------------------*/ /* macros for different checks/warnings */ /*--------------------------------------*/ #if defined G_WARN_ON && defined G_WARN_ALL_ON #define PERL_WARNINGS_ON (PL_dowarn & (G_WARN_ON | G_WARN_ALL_ON)) #else #define PERL_WARNINGS_ON PL_dowarn #endif #define WARN(args) STMT_START { if (PERL_WARNINGS_ON) Perl_warn args; } STMT_END #define WARN2(args) STMT_START { if (PERL_WARNINGS_ON && THIS->cfg.issue_warnings) Perl_warn args; } STMT_END #define WARN_UNSAFE(type) \ WARN((aTHX_ "Unsafe values used in %s('%s')", method, type)) #define WARN_FLAGS(type, flags) \ STMT_START { \ if ((flags) & T_UNSAFE_VAL) \ WARN_UNSAFE(type); \ } STMT_END #define CROAK_UNDEF_STRUCT(ptr) \ Perl_croak(aTHX_ "Got no definition for '%s %s'", \ (ptr)->tflags & T_UNION ? "union" : "struct", \ (ptr)->identifier) #define WARN_UNDEF_STRUCT(ptr) \ WARN((aTHX_ "Got no definition for '%s %s'", \ (ptr)->tflags & T_UNION ? "union" : "struct", \ (ptr)->identifier)) /*----------------------------*/ /* checks if an SV is defined */ /*----------------------------*/ #define DEFINED(sv) ((sv) != NULL && SvOK(sv)) /*----------------------------------*/ /* avoid warnings with older perl's */ /*----------------------------------*/ #if PERL_REVISION == 5 && PERL_VERSION < 6 # define CONST_CHAR(x) ((char *)(x)) #else # define CONST_CHAR(x) (x) #endif /*--------------------------------------------------*/ /* macros to create SV's/HV's with constant strings */ /*--------------------------------------------------*/ #define NEW_SV_PV_CONST(str) \ newSVpvn(str, sizeof(str)/sizeof(char)-1) #define HV_STORE_CONST(hash, key, value) \ STMT_START { \ SV *_val = value; \ if (hv_store(hash, key, sizeof(key)/sizeof(char)-1, _val, 0) == NULL)\ SvREFCNT_dec(_val); \ } STMT_END /*-------------------------*/ /* get the size of an enum */ /*-------------------------*/ #define GET_ENUM_SIZE(pCfg, pES) \ ((pCfg)->layout.enum_size > 0 \ ? (unsigned) (pCfg)->layout.enum_size \ : (pES)->sizes[-(pCfg)->layout.enum_size]) /*------------------------------------------------*/ /* this is needed quite often for unnamed structs */ /*------------------------------------------------*/ #define FOLLOW_AND_CHECK_TSPTR(pTS) \ STMT_START { \ if ((pTS)->tflags & T_TYPE) \ { \ Typedef *_pT = (Typedef *) (pTS)->ptr; \ for(;;) \ { \ if (_pT && _pT->pType->tflags & T_TYPE \ && _pT->pDecl->pointer_flag == 0 \ && _pT->pDecl->array_flag == 0) \ _pT = (Typedef *) _pT->pType->ptr; \ else \ break; \ } \ (pTS) = _pT->pType; \ } \ \ if (((pTS)->tflags & T_COMPOUND) == 0) \ fatal("Unnamed member was not struct or union (type=0x%08X) " \ "in %s line %d", (pTS)->tflags, __FILE__, __LINE__); \ \ if ((pTS)->ptr == NULL) \ fatal("Type pointer to struct/union was NULL in %s line %d", \ __FILE__, __LINE__); \ } STMT_END /*===== TYPEDEFS =============================================================*/ typedef struct { CParseConfig cfg; CParseInfo cpi; enum { ET_INTEGER, ET_STRING, ET_BOTH } enumType; /* boolean options */ unsigned order_members : 1; const char *ixhash; HV *hv; BasicTypes basic; } CBC; /*===== FUNCTION PROTOTYPES ==================================================*/ #endif Convert-Binary-C-0.76/cbc/idl.c0000644000175000001440000000542611550664613014664 0ustar mhxusers/******************************************************************************* * * MODULE: idl.c * ******************************************************************************** * * DESCRIPTION: C::B::C identifier lists * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:14 +0200 $ * $Revision: 8 $ * $Source: /cbc/idl.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/idl.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: idl_to_str * * WRITTEN BY: Marcus Holland-Moritz ON: Jul 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const char *idl_to_str(pTHX_ IDList *idl) { SV *sv; unsigned i; struct IDList_list *cur; sv = sv_2mortal(newSVpvn("", 0)); cur = idl->list; for (i = 0; i < idl->count; ++i, ++cur) { switch (cur->choice) { case IDL_ID: if (i == 0) sv_catpv(sv, CONST_CHAR(cur->val.id)); else sv_catpvf(sv, ".%s", cur->val.id); break; case IDL_IX: sv_catpvf(sv, "[%ld]", cur->val.ix); break; default: fatal("invalid choice (%d) in idl_to_str()", (int) cur->choice); break; } } return SvPV_nolen(sv); } Convert-Binary-C-0.76/cbc/idl.h0000644000175000001440000001055011550664613014663 0ustar mhxusers/******************************************************************************* * * HEADER: idl.h * ******************************************************************************** * * DESCRIPTION: C::B::C identifier lists * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:14 +0200 $ * $Revision: 11 $ * $Source: /cbc/idl.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_IDL_H #define _CBC_IDL_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ /*===== DEFINES ==============================================================*/ #define IDLIST_GRANULARITY 8 #define IDLIST_INITIAL_SIZE (2*IDLIST_GRANULARITY) #define IDLIST_GROW(idl, size) \ STMT_START { \ if ((size) > (idl)->max) \ { \ unsigned grow = ((size)+(IDLIST_GRANULARITY-1))/IDLIST_GRANULARITY;\ grow *= IDLIST_GRANULARITY; \ Renew((idl)->list, grow, struct IDList_list); \ (idl)->max = grow; \ } \ } STMT_END #define IDLIST_INIT(idl) \ STMT_START { \ (idl)->count = 0; \ (idl)->max = IDLIST_INITIAL_SIZE; \ (idl)->cur = NULL; \ New(0, (idl)->list, (idl)->max, struct IDList_list); \ } STMT_END #define IDLIST_FREE(idl) \ STMT_START { \ if ((idl)->list) \ Safefree((idl)->list); \ } STMT_END #define IDLIST_PUSH(idl, what) \ STMT_START { \ IDLIST_GROW(idl, (idl)->count+1); \ (idl)->cur = (idl)->list + (idl)->count++; \ (idl)->cur->choice = IDL_ ## what; \ } STMT_END #define IDLIST_SET_ID(idl, value) \ (idl)->cur->val.id = value #define IDLIST_SET_IX(idl, index) \ (idl)->cur->val.ix = index #define IDLIST_POP(idl) \ STMT_START { \ assert((idl)->count > 0); \ if (--(idl)->count > 0) \ (idl)->cur--; \ else \ (idl)->cur = NULL; \ } STMT_END /*===== TYPEDEFS =============================================================*/ typedef struct { unsigned count, max; struct IDList_list { enum { IDL_ID, IDL_IX } choice; union { const char *id; long ix; } val; } *cur, *list; } IDList; /*===== FUNCTION PROTOTYPES ==================================================*/ #define idl_to_str CBC_idl_to_str const char *idl_to_str(pTHX_ IDList *idl); #endif Convert-Binary-C-0.76/cbc/tag.c0000644000175000001440000002741611550664614014673 0ustar mhxusers/******************************************************************************* * * MODULE: tag.c * ******************************************************************************** * * DESCRIPTION: C::B::C tags * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:16 +0200 $ * $Revision: 22 $ * $Source: /cbc/tag.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #define NO_XSLOCKS #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/hook.h" #include "cbc/dimension.h" #include "cbc/tag.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #define NUM_TAGIDS (sizeof(gs_TagTbl) / sizeof(gs_TagTbl[0]) - 1) #define TAG_INIT(name) void name ## _Init(CtTag *tag) #define TAG_CLONE(name) void name ## _Clone(CtTag *dst, const CtTag *src) #define TAG_FREE(name) void name ## _Free(CtTag *tag) #define TAG_SET(name) TagSetRV name ## _Set(pTHX_ const TagTypeInfo *ptti PERL_UNUSED_DECL, \ CtTag *tag, SV *val) #define TAG_GET(name) SV * name ## _Get(pTHX_ const TagTypeInfo *ptti PERL_UNUSED_DECL, \ const CtTag *tag) #define TAG_VERIFY(name) void name ## _Verify(pTHX_ const TagTypeInfo *ptti PERL_UNUSED_DECL, \ const CtTag *tag PERL_UNUSED_DECL, \ SV *val PERL_UNUSED_DECL) /*===== TYPEDEFS =============================================================*/ typedef enum { TSRV_UPDATE, TSRV_DELETE } TagSetRV; typedef TagSetRV (* TagSetMethod)(pTHX_ const TagTypeInfo *ptti, CtTag *tag, SV *val); typedef SV * (* TagGetMethod)(pTHX_ const TagTypeInfo *ptti, const CtTag *tag); typedef void (* TagVerifyMethod)(pTHX_ const TagTypeInfo *ptti, const CtTag *tag, SV *val); /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ #include "token/t_tag.c" /*===== STATIC FUNCTIONS =====================================================*/ /* * So, how and when are tag methods called? * * Upon tag creation, TAG_INIT() is called to initialize the newly allocated * tag object. This can be used to allocate extra memory to store more tag * information or simply to initialize the flags and any members. * * TAG_CLONE() is obviously called when a tag object is cloned. * * TAG_FREE() is called when when a tag is removed from a taglist and the * tag object is about to be destroyed. * * TAG_SET() is called when the tag is assigned a (new) value. This method * can itself decide whether a SET is an UPDATE or a DELETE. In the latter * case, TAG_FREE() will be called after TAG_SET() returns. * * TAG_GET() is called to get information about the tag object. * * TAG_VERIFY() is optionally called before TAG_SET() / TAG_GET(), but you * usually don't need to implement it if you implement the latter methods. */ /******************************************************************************* * * ROUTINE: croak_on_bitfield * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void croak_on_bitfield(pTHX_ const TagTypeInfo *ptti, const char *tagname) { Declarator *pDecl = ptti->mi.pDecl; if (pDecl && pDecl->bitfield_flag) Perl_croak(aTHX_ "Cannot use '%s' tag on bitfields", tagname); } /******************************************************************************* * * ROUTINE: Format_Verify * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static TAG_VERIFY(Format) { croak_on_bitfield(aTHX_ ptti, "Format"); } /******************************************************************************* * * ROUTINE: ByteOrder_Verify * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static TAG_VERIFY(ByteOrder) { croak_on_bitfield(aTHX_ ptti, "ByteOrder"); } /******************************************************************************* * * ROUTINE: Hooks_* * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static TAG_INIT(Hooks) { tag->any = hook_new(NULL); } static TAG_CLONE(Hooks) { dst->any = hook_new(src->any); } static TAG_FREE(Hooks) { hook_delete(tag->any); } static TAG_SET(Hooks) { if (SvOK(val)) { HV *hooks; TypeHooks newhooks, *p_oldhooks = tag->any; if (!(SvROK(val) && SvTYPE(hooks=(HV *)SvRV(val)) == SVt_PVHV)) Perl_croak(aTHX_ "Need a hash reference to define hooks for '%s'", ptti->type); newhooks = *p_oldhooks; if (find_hooks(aTHX_ ptti->type, hooks, &newhooks) > 0) { hook_update(p_oldhooks, &newhooks); return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET(Hooks) { return newRV_noinc((SV *) get_hooks(aTHX_ tag->any)); } /******************************************************************************* * * ROUTINE: Dimension_* * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static TAG_INIT(Dimension) { tag->any = dimtag_new(NULL); } static TAG_CLONE(Dimension) { dst->any = dimtag_new(src->any); } static TAG_FREE(Dimension) { dimtag_delete(tag->any); } static TAG_SET(Dimension) { if (SvOK(val)) { DimensionTag newdim; if (dimtag_parse(aTHX_ &ptti->mi, ptti->type, val, &newdim) > 0) { dimtag_update(tag->any, &newdim); return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET(Dimension) { return dimtag_get(aTHX_ tag->any); } static TAG_VERIFY(Dimension) { dimtag_verify(aTHX_ &ptti->mi, ptti->type); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_tags * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_tags(pTHX_ const TagTypeInfo *ptti, CtTagList taglist) { HV *hv = newHV(); CtTag *tag; for (tag = taglist; tag; tag = tag->next) { if (tag->type < NUM_TAGIDS) { SV *sv = gs_TagTbl[tag->type].get(aTHX_ ptti, tag); const char *id = gs_TagIdStr[tag->type]; if (hv_store(hv, id, strlen(id), sv, 0) == NULL) fatal("hv_store() failed in get_tags()"); } else fatal("Unknown tag type (%d) in get_tags()", (int) tag->type); } return sv_2mortal(newRV_noinc((SV *) hv)); } /******************************************************************************* * * ROUTINE: handle_tag * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void handle_tag(pTHX_ const TagTypeInfo *ptti, CtTagList *ptl, SV *name, SV *val, SV **rv) { const struct tag_tbl_ent *etbl; const char *tagstr; CtTagType tagid; CtTag *tag; assert(ptl); assert(name); if (SvROK(name)) Perl_croak(aTHX_ "Tag name must be a string, not a reference"); tagstr = SvPV_nolen(name); tagid = get_tag_id(tagstr); if (tagid == CBC_INVALID_TAG) Perl_croak(aTHX_ "Invalid tag name '%s'", tagstr); if (tagid > NUM_TAGIDS) fatal("Unknown tag type (%d) in handle_tag()", (int) tagid); etbl = &gs_TagTbl[tagid]; tag = find_tag(*ptl, tagid); if (etbl->verify) etbl->verify(aTHX_ ptti, tag, val); if (val) { TagSetRV rv; if (tag == NULL) { dTHR; dXCPT; tag = tag_new(tagid, etbl->vtbl); XCPT_TRY_START { rv = etbl->set(aTHX_ ptti, tag, val); } XCPT_TRY_END XCPT_CATCH { tag_delete(tag); XCPT_RETHROW; } insert_tag(ptl, tag); } else rv = etbl->set(aTHX_ ptti, tag, val); switch (rv) { case TSRV_UPDATE: break; case TSRV_DELETE: tag_delete(remove_tag(ptl, tagid)); tag = NULL; break; default: fatal("Invalid return value for tag set method (%d)", rv); } } if (rv) *rv = tag ? etbl->get(aTHX_ ptti, tag) : &PL_sv_undef; } /******************************************************************************* * * ROUTINE: find_taglist_ptr * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTagList *find_taglist_ptr(const void *pType) { if (pType) switch (GET_CTYPE(pType)) { case TYP_STRUCT: return &((Struct *) pType)->tags; case TYP_ENUM: return &((EnumSpecifier *) pType)->tags; case TYP_TYPEDEF: return &((Typedef *) pType)->pDecl->tags; default: fatal("Invalid type (%d) in find_taglist_ptr()", GET_CTYPE(pType)); } return NULL; } /******************************************************************************* * * ROUTINE: delete_all_tags * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void delete_all_tags(CtTagList *ptl) { delete_taglist(ptl); } Convert-Binary-C-0.76/cbc/tag.h0000644000175000001440000000342011550664614014665 0ustar mhxusers/******************************************************************************* * * HEADER: tag.h * ******************************************************************************** * * DESCRIPTION: C::B::C tags * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:16 +0200 $ * $Revision: 14 $ * $Source: /cbc/tag.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_TAG_H #define _CBC_TAG_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/cttags.h" #include "cbc/member.h" #include "token/t_tag.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { const char *type; MemberInfo mi; } TagTypeInfo; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_tags CBC_get_tags SV *get_tags(pTHX_ const TagTypeInfo *ptti, CtTagList taglist); #define handle_tag CBC_handle_tag void handle_tag(pTHX_ const TagTypeInfo *ptti, CtTagList *ptl, SV *name, SV *val, SV **rv); #define find_taglist_ptr CBC_find_taglist_ptr CtTagList *find_taglist_ptr(const void *pType); #define delete_all_tags CBC_delete_all_tags void delete_all_tags(CtTagList *ptl); #endif Convert-Binary-C-0.76/cbc/macros.c0000644000175000001440000001144211550664613015373 0ustar mhxusers/******************************************************************************* * * MODULE: macros.c * ******************************************************************************** * * DESCRIPTION: Handle macro lists * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:14 +0200 $ * $Revision: 5 $ * $Source: /cbc/macros.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/macros.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void get_names_callback(const CMacroInfo *pmi); static void get_defs_callback(const CMacroInfo *pmi); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_names_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ struct get_names_cb_arg { #ifdef PERL_IMPLICIT_CONTEXT void *interp; #endif size_t count; LinkedList ll; }; static void get_names_callback(const CMacroInfo *pmi) { struct get_names_cb_arg *a = pmi->arg; if (a->ll) { dTHXa(a->interp); LL_push(a->ll, newSVpv(pmi->name, 0)); } else { a->count++; } } /******************************************************************************* * * ROUTINE: get_defs_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ struct get_defs_cb_arg { #ifdef PERL_IMPLICIT_CONTEXT void *interp; #endif LinkedList ll; }; static void get_defs_callback(const CMacroInfo *pmi) { struct get_defs_cb_arg *a = pmi->arg; dTHXa(a->interp); LL_push(a->ll, newSVpv(pmi->definition, pmi->definition_len)); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: macros_get_names * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ LinkedList macros_get_names(pTHX_ CParseInfo *pCPI, size_t *count) { struct get_names_cb_arg a; #ifdef PERL_IMPLICIT_CONTEXT a.interp = aTHX; #endif if (count) { a.ll = NULL; a.count = 0; } else { a.ll = LL_new(); } macro_iterate_defs(pCPI, get_names_callback, &a, 0); if (count) { *count = a.count; } return a.ll; } /******************************************************************************* * * ROUTINE: macros_get_definitions * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ LinkedList macros_get_definitions(pTHX_ CParseInfo *pCPI) { struct get_defs_cb_arg a; #ifdef PERL_IMPLICIT_CONTEXT a.interp = aTHX; #endif a.ll = LL_new(); macro_iterate_defs(pCPI, get_defs_callback, &a, CMIF_WITH_DEFINITION); return a.ll; } Convert-Binary-C-0.76/cbc/macros.h0000644000175000001440000000300011550664613015367 0ustar mhxusers/******************************************************************************* * * HEADER: macros.h * ******************************************************************************** * * DESCRIPTION: Handle macro lists * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:14 +0200 $ * $Revision: 5 $ * $Source: /cbc/macros.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_MACROS_H #define _CBC_MACROS_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "util/list.h" #include "ctlib/ctparse.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define macros_get_names CBC_macros_get_names LinkedList macros_get_names(pTHX_ CParseInfo *pCPI, size_t *count); #define macros_get_definitions CBC_macros_get_definitions LinkedList macros_get_definitions(pTHX_ CParseInfo *pCPI); #endif Convert-Binary-C-0.76/cbc/sourcify.c0000644000175000001440000006342011550664614015756 0ustar mhxusers/******************************************************************************* * * MODULE: sourcify.c * ******************************************************************************** * * DESCRIPTION: C::B::C sourcify * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:16 +0200 $ * $Revision: 24 $ * $Source: /cbc/sourcify.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/cttype.h" #include "cbc/cbc.h" #include "cbc/idl.h" #include "cbc/sourcify.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #define T_ALREADY_DUMPED T_USER_FLAG_1 #define F_NEWLINE 0x00000001 #define F_KEYWORD 0x00000002 #define F_DONT_EXPAND 0x00000004 #define F_PRAGMA_PACK_POP 0x00000008 #define SRC_INDENT \ STMT_START { \ if (level > 0) \ add_indent(aTHX_ s, level); \ } STMT_END #define CHECK_SET_KEYWORD \ STMT_START { \ if (pSS->flags & F_KEYWORD) \ sv_catpvn(s, " ", 1); \ else \ SRC_INDENT; \ pSS->flags &= ~F_NEWLINE; \ pSS->flags |= F_KEYWORD; \ } STMT_END #define SvGROW_early(s, granularity) \ STMT_START { \ if (SvCUR(s) + ((granularity)/2) > SvLEN(s)) \ SvGROW(s, SvCUR(s) + (granularity)); \ } STMT_END #define SVG_STRUCT 512 #define SVG_ENUM 512 /*===== TYPEDEFS =============================================================*/ typedef struct { U32 flags; unsigned pack; } SourcifyState; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void check_define_type(pTHX_ SourcifyConfig *pSC, SV *str, TypeSpec *pTS); static void add_type_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *str, SV *s, TypeSpec *pTS, int level, SourcifyState *pSS); static void add_enum_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *s, EnumSpecifier *pES, int level, SourcifyState *pSS); static void add_struct_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *str, SV *s, Struct *pStruct, int level, SourcifyState *pSS); static void add_typedef_list_decl_string(pTHX_ SV *str, TypedefList *pTDL); static void add_typedef_list_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, TypedefList *pTDL); static void add_enum_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, EnumSpecifier *pES); static void add_struct_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, Struct *pStruct); static void pp_macro_callback(const CMacroInfo *pmi); static void add_preprocessor_definitions(pTHX_ CParseInfo *pCPI, SV *str); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: check_define_type * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void check_define_type(pTHX_ SourcifyConfig *pSC, SV *str, TypeSpec *pTS) { u_32 flags = pTS->tflags; CT_DEBUG(MAIN, (XSCLASS "::check_define_type( pTS=(tflags=0x%08lX, ptr=%p) )", (unsigned long) pTS->tflags, pTS->ptr)); if (flags & T_TYPE) { Typedef *pTypedef= (Typedef *) pTS->ptr; while (!pTypedef->pDecl->pointer_flag && pTypedef->pType->tflags & T_TYPE) pTypedef = (Typedef *) pTypedef->pType->ptr; if (pTypedef->pDecl->pointer_flag) return; pTS = pTypedef->pType; flags = pTS->tflags; } if (flags & T_ENUM) { EnumSpecifier *pES = (EnumSpecifier *) pTS->ptr; if (pES && (pES->tflags & T_ALREADY_DUMPED) == 0) add_enum_spec_string(aTHX_ pSC, str, pES); } else if (flags & T_COMPOUND) { Struct *pStruct = (Struct *) pTS->ptr; if (pStruct && (pStruct->tflags & T_ALREADY_DUMPED) == 0) add_struct_spec_string(aTHX_ pSC, str, pStruct); } } /******************************************************************************* * * ROUTINE: add_type_spec_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_type_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *str, SV *s, TypeSpec *pTS, int level, SourcifyState *pSS) { u_32 flags = pTS->tflags; CT_DEBUG(MAIN, (XSCLASS "::add_type_spec_string_rec( pTS=(tflags=0x%08lX, ptr=%p" "), level=%d, pSS->flags=0x%08lX, pSS->pack=%u )", (unsigned long) pTS->tflags, pTS->ptr, level, (unsigned long) pSS->flags, pSS->pack)); if (flags & T_TYPE) { Typedef *pTypedef= (Typedef *) pTS->ptr; if (pTypedef && pTypedef->pDecl->identifier[0]) { CHECK_SET_KEYWORD; sv_catpv(s, pTypedef->pDecl->identifier); } } else if (flags & T_ENUM) { EnumSpecifier *pES = (EnumSpecifier *) pTS->ptr; if (pES) { if (pES->identifier[0] && ((pES->tflags & T_ALREADY_DUMPED) || (pSS->flags & F_DONT_EXPAND))) { CHECK_SET_KEYWORD; sv_catpvf(s, "enum %s", pES->identifier); } else add_enum_spec_string_rec(aTHX_ pSC, s, pES, level, pSS); } } else if (flags & T_COMPOUND) { Struct *pStruct = (Struct *) pTS->ptr; if (pStruct) { if (pStruct->identifier[0] && ((pStruct->tflags & T_ALREADY_DUMPED) || (pSS->flags & F_DONT_EXPAND))) { CHECK_SET_KEYWORD; sv_catpvf(s, "%s %s", flags & T_UNION ? "union" : "struct", pStruct->identifier); } else add_struct_spec_string_rec(aTHX_ pSC, str, s, pStruct, level, pSS); } } else { CHECK_SET_KEYWORD; get_basic_type_spec_string(aTHX_ &s, flags); } } /******************************************************************************* * * ROUTINE: add_enum_spec_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION:\ * \ * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_enum_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *s, EnumSpecifier *pES, int level, SourcifyState *pSS) { CT_DEBUG(MAIN, (XSCLASS "::add_enum_spec_string_rec( pES=(identifier=\"%s\")," " level=%d, pSS->flags=0x%08lX, pSS->pack=%u )", pES->identifier, level, (unsigned long) pSS->flags, pSS->pack)); SvGROW_early(s, SVG_ENUM); pES->tflags |= T_ALREADY_DUMPED; if (pSC->context) { if ((pSS->flags & F_NEWLINE) == 0) { sv_catpvn(s, "\n", 1); pSS->flags &= ~F_KEYWORD; pSS->flags |= F_NEWLINE; } sv_catpvf(s, "#line %lu \"%s\"\n", pES->context.line, pES->context.pFI->name); } if (pSS->flags & F_KEYWORD) sv_catpvn(s, " ", 1); else SRC_INDENT; pSS->flags &= ~(F_NEWLINE|F_KEYWORD); sv_catpvn(s, "enum", 4); if (pES->identifier[0]) sv_catpvf(s, " %s", pES->identifier); if (pES->enumerators) { ListIterator ei; Enumerator *pEnum; int first = 1; Value lastVal; sv_catpvn(s, "\n", 1); SRC_INDENT; sv_catpvn(s, "{", 1); LL_foreach(pEnum, ei, pES->enumerators) { if (!first) sv_catpvn(s, ",", 1); sv_catpvn(s, "\n", 1); SRC_INDENT; if (( first && pEnum->value.iv == 0) || (!first && pEnum->value.iv == lastVal.iv + 1)) sv_catpvf(s, "\t%s", pEnum->identifier); else sv_catpvf(s, "\t%s = %ld", pEnum->identifier, pEnum->value.iv); if (first) first = 0; lastVal = pEnum->value; } sv_catpvn(s, "\n", 1); SRC_INDENT; sv_catpvn(s, "}", 1); } } /******************************************************************************* * * ROUTINE: add_struct_spec_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_struct_spec_string_rec(pTHX_ SourcifyConfig *pSC, SV *str, SV *s, Struct *pStruct, int level, SourcifyState *pSS) { int pack_pushed; CT_DEBUG(MAIN, (XSCLASS "::add_struct_spec_string_rec( pStruct=(identifier=" "\"%s\", pack=%d, tflags=0x%08lX), level=%d" " pSS->flags=0x%08lX, pSS->pack=%u )", pStruct->identifier, pStruct->pack, (unsigned long) pStruct->tflags, level, (unsigned long) pSS->flags, pSS->pack)); SvGROW_early(s, SVG_STRUCT); pStruct->tflags |= T_ALREADY_DUMPED; pack_pushed = pStruct->declarations && pStruct->pack && pStruct->pack != pSS->pack; if (pack_pushed) { if ((pSS->flags & F_NEWLINE) == 0) { sv_catpvn(s, "\n", 1); pSS->flags &= ~F_KEYWORD; pSS->flags |= F_NEWLINE; } sv_catpvf(s, "#pragma pack(push, %u)\n", pStruct->pack); } if (pSC->context) { if ((pSS->flags & F_NEWLINE) == 0) { sv_catpvn(s, "\n", 1); pSS->flags &= ~F_KEYWORD; pSS->flags |= F_NEWLINE; } sv_catpvf(s, "#line %lu \"%s\"\n", pStruct->context.line, pStruct->context.pFI->name); } if (pSS->flags & F_KEYWORD) sv_catpvn(s, " ", 1); else SRC_INDENT; pSS->flags &= ~(F_NEWLINE|F_KEYWORD); if(pStruct->tflags & T_STRUCT) sv_catpvn(s, "struct", 6); else sv_catpvn(s, "union", 5); if (pStruct->identifier[0]) sv_catpvf(s, " %s", pStruct->identifier); if (pStruct->declarations) { ListIterator sdi; StructDeclaration *pStructDecl; sv_catpvn(s, "\n", 1); SRC_INDENT; sv_catpvn(s, "{\n", 2); LL_foreach(pStructDecl, sdi, pStruct->declarations) { ListIterator di; Declarator *pDecl; int first = 1, need_def = 0; SourcifyState ss; ss.flags = F_NEWLINE; ss.pack = pack_pushed ? pStruct->pack : 0; LL_foreach(pDecl, di, pStructDecl->declarators) if (pDecl->pointer_flag == 0) { need_def = 1; break; } if (!need_def) ss.flags |= F_DONT_EXPAND; add_type_spec_string_rec(aTHX_ pSC, str, s, &pStructDecl->type, level+1, &ss); ss.flags &= ~F_DONT_EXPAND; if (ss.flags & F_NEWLINE) add_indent(aTHX_ s, level+1); else if (pStructDecl->declarators) sv_catpvn(s, " ", 1); LL_foreach(pDecl, di, pStructDecl->declarators) { Value *pValue; if (first) first = 0; else sv_catpvn(s, ", ", 2); if (pDecl->bitfield_flag) { sv_catpvf(s, "%s:%d", pDecl->identifier, pDecl->ext.bitfield.bits); } else { sv_catpvf(s, "%s%s", pDecl->pointer_flag ? "*" : "", pDecl->identifier); if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { if (pValue->flags & V_IS_UNDEF) sv_catpvn(s, "[]", 2); else sv_catpvf(s, "[%ld]", pValue->iv); } } } } sv_catpvn(s, ";\n", 2); if (ss.flags & F_PRAGMA_PACK_POP) sv_catpvn(s, "#pragma pack(pop)\n", 18); if (need_def) check_define_type(aTHX_ pSC, str, &pStructDecl->type); } SRC_INDENT; sv_catpvn(s, "}", 1); } if (pack_pushed) pSS->flags |= F_PRAGMA_PACK_POP; } /******************************************************************************* * * ROUTINE: add_typedef_list_decl_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_typedef_list_decl_string(pTHX_ SV *str, TypedefList *pTDL) { ListIterator ti; Typedef *pTypedef; int first = 1; CT_DEBUG(MAIN, (XSCLASS "::add_typedef_list_decl_string( pTDL=%p )", pTDL)); LL_foreach(pTypedef, ti, pTDL->typedefs) { Declarator *pDecl = pTypedef->pDecl; Value *pValue; if (first) first = 0; else sv_catpvn(str, ", ", 2); sv_catpvf(str, "%s%s", pDecl->pointer_flag ? "*" : "", pDecl->identifier); if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { if (pValue->flags & V_IS_UNDEF) sv_catpvn(str, "[]", 2); else sv_catpvf(str, "[%ld]", pValue->iv); } } } } /******************************************************************************* * * ROUTINE: add_typedef_list_spec_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_typedef_list_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, TypedefList *pTDL) { SV *s = newSVpv("typedef", 0); SourcifyState ss; CT_DEBUG(MAIN, (XSCLASS "::add_typedef_list_spec_string( pTDL=%p )", pTDL)); ss.flags = F_KEYWORD; ss.pack = 0; add_type_spec_string_rec(aTHX_ pSC, str, s, &pTDL->type, 0, &ss); if ((ss.flags & F_NEWLINE) == 0) sv_catpvn(s, " ", 1); add_typedef_list_decl_string(aTHX_ s, pTDL); sv_catpvn(s, ";\n", 2); if (ss.flags & F_PRAGMA_PACK_POP) sv_catpvn(s, "#pragma pack(pop)\n", 18); sv_catsv(str, s); SvREFCNT_dec(s); } /******************************************************************************* * * ROUTINE: add_enum_spec_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_enum_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, EnumSpecifier *pES) { SV *s = newSVpvn("", 0); SourcifyState ss; CT_DEBUG(MAIN, (XSCLASS "::add_enum_spec_string( pES=%p )", pES)); ss.flags = 0; ss.pack = 0; add_enum_spec_string_rec(aTHX_ pSC, s, pES, 0, &ss); sv_catpvn(s, ";\n", 2); sv_catsv(str, s); SvREFCNT_dec(s); } /******************************************************************************* * * ROUTINE: add_struct_spec_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_struct_spec_string(pTHX_ SourcifyConfig *pSC, SV *str, Struct *pStruct) { SV *s = newSVpvn("", 0); SourcifyState ss; CT_DEBUG(MAIN, (XSCLASS "::add_struct_spec_string( pStruct=%p )", pStruct)); ss.flags = 0; ss.pack = 0; add_struct_spec_string_rec(aTHX_ pSC, str, s, pStruct, 0, &ss); sv_catpvn(s, ";\n", 2); if (ss.flags & F_PRAGMA_PACK_POP) sv_catpvn(s, "#pragma pack(pop)\n", 18); sv_catsv(str, s); SvREFCNT_dec(s); } /******************************************************************************* * * ROUTINE: pp_macro_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define SvGROWexp(s, amount) \ BEGIN_STMT { \ if (SvCUR(s) + pmi->definition_len + 10 >= SvLEN(s)) \ SvGROW(s, 2*SvLEN(s)); \ } END_STMT struct macro_cb_arg { #ifdef PERL_IMPLICIT_CONTEXT void *interp; #endif SV *string; }; static void pp_macro_callback(const CMacroInfo *pmi) { struct macro_cb_arg *a = pmi->arg; SV *s = a->string; dTHXa(a->interp); if (SvCUR(s) + pmi->definition_len + 10 >= SvLEN(s)) SvGROW(s, 2*SvLEN(s)); sv_catpvn(s, "#define ", 8); sv_catpvn(s, pmi->definition, pmi->definition_len); sv_catpvn(s, "\n", 1); } /******************************************************************************* * * ROUTINE: add_preprocessor_definitions * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_preprocessor_definitions(pTHX_ CParseInfo *pCPI, SV *str) { struct macro_cb_arg a; SV *s = newSVpvn("", 0); #ifdef PERL_IMPLICIT_CONTEXT a.interp = aTHX; #endif a.string = s; SvGROW(s, 512); macro_iterate_defs(pCPI, pp_macro_callback, &a, CMIF_WITH_DEFINITION | CMIF_NO_PREDEFINED); if (SvCUR(s) > 0) { sv_catpv(str, "/* preprocessor defines */\n\n"); sv_catsv(str, s); sv_catpvn(str, "\n", 1); } SvREFCNT_dec(s); } /******************************************************************************* * * ROUTINE: get_sourcify_config_option * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #include "token/t_sourcify.c" /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_sourcify_config * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void get_sourcify_config(pTHX_ HV *cfg, SourcifyConfig *pSC) { HE *opt; (void) hv_iterinit(cfg); while ((opt = hv_iternext(cfg)) != NULL) { const char *key; I32 keylen; SV *value; key = hv_iterkey(opt, &keylen); value = hv_iterval(cfg, opt); switch (get_sourcify_config_option(key)) { case SOURCIFY_OPTION_Context: pSC->context = SvTRUE(value); break; case SOURCIFY_OPTION_Defines: pSC->defines = SvTRUE(value); break; default: Perl_croak(aTHX_ "Invalid option '%s'", key); } } } /******************************************************************************* * * ROUTINE: get_parsed_definitions_string * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_parsed_definitions_string(pTHX_ CParseInfo *pCPI, SourcifyConfig *pSC) { ListIterator li; TypedefList *pTDL; EnumSpecifier *pES; Struct *pStruct; int fTypedefPre = 0, fTypedef = 0, fEnum = 0, fStruct = 0, fUndefEnum = 0, fUndefStruct = 0; SV *s = newSVpvn("", 0); CT_DEBUG(MAIN, (XSCLASS "::get_parsed_definitions_string( pCPI=%p, pSC=%p )", pCPI, pSC)); /* typedef predeclarations */ LL_foreach(pTDL, li, pCPI->typedef_lists) { u_32 tflags = pTDL->type.tflags; if ((tflags & (T_ENUM|T_STRUCT|T_UNION|T_TYPE)) == 0) { if (!fTypedefPre) { sv_catpv(s, "/* typedef predeclarations */\n\n"); fTypedefPre = 1; } add_typedef_list_spec_string(aTHX_ pSC, s, pTDL); } else { const char *what = NULL, *ident; if (tflags & T_ENUM) { EnumSpecifier *pES = (EnumSpecifier *) pTDL->type.ptr; if (pES && pES->identifier[0] != '\0') { what = "enum"; ident = pES->identifier; } } else if (tflags & T_COMPOUND) { Struct *pStruct = (Struct *) pTDL->type.ptr; if (pStruct && pStruct->identifier[0] != '\0') { what = pStruct->tflags & T_STRUCT ? "struct" : "union"; ident = pStruct->identifier; } } if (what != NULL) { if (!fTypedefPre) { sv_catpv(s, "/* typedef predeclarations */\n\n"); fTypedefPre = 1; } sv_catpvf(s, "typedef %s %s ", what, ident); add_typedef_list_decl_string(aTHX_ s, pTDL); sv_catpvn(s, ";\n", 2); } } } /* typedefs */ LL_foreach(pTDL, li, pCPI->typedef_lists) if (pTDL->type.ptr != NULL) if (((pTDL->type.tflags & T_ENUM) && ((EnumSpecifier *) pTDL->type.ptr)->identifier[0] == '\0') || ((pTDL->type.tflags & T_COMPOUND) && ((Struct *) pTDL->type.ptr)->identifier[0] == '\0') || (pTDL->type.tflags & T_TYPE)) { if (!fTypedef) { sv_catpv(s, "\n\n/* typedefs */\n\n"); fTypedef = 1; } add_typedef_list_spec_string(aTHX_ pSC, s, pTDL); sv_catpvn(s, "\n", 1); } /* defined enums */ LL_foreach(pES, li, pCPI->enums) if (pES->enumerators && pES->identifier[0] != '\0' && (pES->tflags & (T_ALREADY_DUMPED)) == 0) { if (!fEnum) { sv_catpv(s, "\n/* defined enums */\n\n"); fEnum = 1; } add_enum_spec_string(aTHX_ pSC, s, pES); sv_catpvn(s, "\n", 1); } /* defined structs and unions */ LL_foreach(pStruct, li, pCPI->structs) if(pStruct->declarations && pStruct->identifier[0] != '\0' && (pStruct->tflags & (T_ALREADY_DUMPED)) == 0) { if (!fStruct) { sv_catpv(s, "\n/* defined structs and unions */\n\n"); fStruct = 1; } add_struct_spec_string(aTHX_ pSC, s, pStruct); sv_catpvn(s, "\n", 1); } /* undefined enums */ LL_foreach(pES, li, pCPI->enums) { if ((pES->tflags & T_ALREADY_DUMPED) == 0 && pES->refcount == 0) { if (pES->enumerators || pES->identifier[0] != '\0') { if (!fUndefEnum) { sv_catpv(s, "\n/* undefined enums */\n\n"); fUndefEnum = 1; } add_enum_spec_string(aTHX_ pSC, s, pES); sv_catpvn(s, "\n", 1); } } pES->tflags &= ~T_ALREADY_DUMPED; } /* undefined structs and unions */ LL_foreach(pStruct, li, pCPI->structs) { if ((pStruct->tflags & T_ALREADY_DUMPED) == 0 && pStruct->refcount == 0) { if (pStruct->declarations || pStruct->identifier[0] != '\0') { if (!fUndefStruct) { sv_catpv(s, "\n/* undefined/unnamed structs and unions */\n\n"); fUndefStruct = 1; } add_struct_spec_string(aTHX_ pSC, s, pStruct); sv_catpvn(s, "\n", 1); } } pStruct->tflags &= ~T_ALREADY_DUMPED; } /* * preprocessor stuff * * NOTE: This _must_ be at the end, because, if placed at the top, some * defines may already interfere with the C code. */ if (pSC->defines) add_preprocessor_definitions(aTHX_ pCPI, s); return s; } Convert-Binary-C-0.76/cbc/sourcify.h0000644000175000001440000000314111550664614015755 0ustar mhxusers/******************************************************************************* * * HEADER: sourcify.h * ******************************************************************************** * * DESCRIPTION: C::B::C sourcify * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:16 +0200 $ * $Revision: 8 $ * $Source: /cbc/sourcify.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_SOURCIFY_H #define _CBC_SOURCIFY_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctparse.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { int context; int defines; } SourcifyConfig; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_sourcify_config CBC_get_sourcify_config void get_sourcify_config(pTHX_ HV *cfg, SourcifyConfig *pSC); #define get_parsed_definitions_string CBC_get_parsed_definitions_string SV *get_parsed_definitions_string(pTHX_ CParseInfo *pCPI, SourcifyConfig *pSC); #endif Convert-Binary-C-0.76/cbc/hook.c0000644000175000001440000004375011550664613015056 0ustar mhxusers/******************************************************************************* * * MODULE: hook.c * ******************************************************************************** * * DESCRIPTION: C::B::C hooks * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:14 +0200 $ * $Revision: 21 $ * $Source: /cbc/hook.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/hook.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void single_hook_deref(pTHX_ const SingleHook *hook); static void single_hook_ref(pTHX_ const SingleHook *hook); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ #include "token/t_hookid.c" /******************************************************************************* * * ROUTINE: single_hook_deref * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void single_hook_deref(pTHX_ const SingleHook *hook) { assert(hook != NULL); if (hook->sub) SvREFCNT_dec(hook->sub); if (hook->arg) SvREFCNT_dec(hook->arg); } /******************************************************************************* * * ROUTINE: single_hook_ref * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void single_hook_ref(pTHX_ const SingleHook *hook) { assert(hook != NULL); if (hook->sub) SvREFCNT_inc(hook->sub); if (hook->arg) SvREFCNT_inc(hook->arg); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: single_hook_fill * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void single_hook_fill(pTHX_ const char *hook, const char *type, SingleHook *sth, SV *sub, U32 allowed_args) { if (!DEFINED(sub)) { sth->sub = NULL; sth->arg = NULL; } else if (SvROK(sub)) { SV *sv = SvRV(sub); switch (SvTYPE(sv)) { case SVt_PVCV: sth->sub = sv; sth->arg = NULL; break; case SVt_PVAV: { AV *in = (AV *) sv; I32 len = av_len(in); if (len < 0) Perl_croak(aTHX_ "Need at least a code reference in %s hook for " "type '%s'", hook, type); else { SV **pSV = av_fetch(in, 0, 0); if (pSV == NULL || !SvROK(*pSV) || SvTYPE(sv = SvRV(*pSV)) != SVt_PVCV) Perl_croak(aTHX_ "%s hook defined for '%s' is not " "a code reference", hook, type); else { I32 ix; AV *out; for (ix = 0; ix < len; ++ix) { pSV = av_fetch(in, ix+1, 0); if (pSV == NULL) fatal("NULL returned by av_fetch() in single_hook_fill()"); if (SvROK(*pSV) && sv_isa(*pSV, ARGTYPE_PACKAGE)) { HookArgType argtype = (HookArgType) SvIV(SvRV(*pSV)); #define CHECK_ARG_TYPE(type) \ case HOOK_ARG_ ## type: \ if ((allowed_args & SHF_ALLOW_ARG_ ## type) == 0) \ Perl_croak(aTHX_ #type " argument not allowed"); \ break switch (argtype) { CHECK_ARG_TYPE(SELF); CHECK_ARG_TYPE(TYPE); CHECK_ARG_TYPE(DATA); CHECK_ARG_TYPE(HOOK); } #undef CHECK_ARG_TYPE } } sth->sub = sv; out = newAV(); av_extend(out, len-1); for (ix = 0; ix < len; ++ix) { pSV = av_fetch(in, ix+1, 0); if (pSV == NULL) fatal("NULL returned by av_fetch() in single_hook_fill()"); SvREFCNT_inc(*pSV); if (av_store(out, ix, *pSV) == NULL) SvREFCNT_dec(*pSV); } sth->arg = (AV *) sv_2mortal((SV *) out); } } } break; default: goto not_code_or_array_ref; } } else { not_code_or_array_ref: Perl_croak(aTHX_ "%s hook defined for '%s' is not " "a code or array reference", hook, type); } } /******************************************************************************* * * ROUTINE: single_hook_new * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SingleHook *single_hook_new(const SingleHook *src) { dTHX; SingleHook *dst; assert(src != NULL); New(0, dst, 1, SingleHook); *dst = *src; single_hook_ref(aTHX_ src); return dst; } /******************************************************************************* * * ROUTINE: hook_new * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ TypeHooks *hook_new(const TypeHooks *h) { dTHX; TypeHooks *r; SingleHook *dst; int i; New(0, r, 1, TypeHooks); dst = &r->hooks[0]; if (h) { const SingleHook *src = &h->hooks[0]; for (i = 0; i < HOOKID_COUNT; i++, src++, dst++) { *dst = *src; single_hook_ref(aTHX_ src); } } else { for (i = 0; i < HOOKID_COUNT; i++, dst++) { dst->sub = NULL; dst->arg = NULL; } } return r; } /******************************************************************************* * * ROUTINE: single_hook_update * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void single_hook_update(SingleHook *dst, const SingleHook *src) { dTHX; assert(src != NULL); assert(dst != NULL); if (dst->sub != src->sub) { if (src->sub) SvREFCNT_inc(src->sub); if (dst->sub) SvREFCNT_dec(dst->sub); } if (dst->arg != src->arg) { if (src->arg) SvREFCNT_inc(src->arg); if (dst->arg) SvREFCNT_dec(dst->arg); } *dst = *src; } /******************************************************************************* * * ROUTINE: hook_update * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void hook_update(TypeHooks *dst, const TypeHooks *src) { dTHX; const SingleHook *hook_src = &src->hooks[0]; SingleHook *hook_dst = &dst->hooks[0]; int i; assert(src != NULL); assert(dst != NULL); for (i = 0; i < HOOKID_COUNT; i++, hook_dst++, hook_src++) single_hook_update(hook_dst, hook_src); } /******************************************************************************* * * ROUTINE: single_hook_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void single_hook_delete(SingleHook *hook) { dTHX; assert(hook != NULL); single_hook_deref(aTHX_ hook); Safefree(hook); } /******************************************************************************* * * ROUTINE: hook_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void hook_delete(TypeHooks *h) { if (h) { dTHX; SingleHook *hook = &h->hooks[0]; int i; for (i = 0; i < HOOKID_COUNT; i++, hook++) single_hook_deref(aTHX_ hook); Safefree(h); } } /******************************************************************************* * * ROUTINE: single_hook_call * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ /* TODO: The hook_call interface is a little ugly, mainly because we cannot * directly influence the arguments. This should probably be refactored. */ SV *single_hook_call(pTHX_ SV *self, const char *hook_id_str, const char *id_pre, const char *id, const SingleHook *hook, SV *in, int mortal) { dSP; int count; SV *out; CT_DEBUG(MAIN, ("single_hook_call(hid='%s', id='%s%s', hook=%p, in=%p(%d), mortal=%d)", hook_id_str, id_pre, id, hook, in, in ? (int) SvREFCNT(in) : 0, mortal)); assert(self != NULL); assert(hook != NULL); if (hook->sub == NULL) return in; ENTER; SAVETMPS; PUSHMARK(SP); if (hook->arg) { I32 ix, len; len = av_len(hook->arg); for (ix = 0; ix <= len; ++ix) { SV **pSV = av_fetch(hook->arg, ix, 0); SV *sv; if (pSV == NULL) fatal("NULL returned by av_fetch() in single_hook_call()"); if (SvROK(*pSV) && sv_isa(*pSV, ARGTYPE_PACKAGE)) { HookArgType type = (HookArgType) SvIV(SvRV(*pSV)); switch (type) { case HOOK_ARG_SELF: sv = sv_mortalcopy(self); break; case HOOK_ARG_DATA: assert(in != NULL); sv = sv_mortalcopy(in); break; case HOOK_ARG_TYPE: assert(id != NULL); sv = sv_newmortal(); if (id_pre) { sv_setpv(sv, id_pre); sv_catpv(sv, CONST_CHAR(id)); } else sv_setpv(sv, id); break; case HOOK_ARG_HOOK: if (hook_id_str) { sv = sv_newmortal(); sv_setpv(sv, hook_id_str); } else { sv = &PL_sv_undef; } break; default: fatal("Invalid hook argument type (%d) in single_hook_call()", type); break; } } else sv = sv_mortalcopy(*pSV); XPUSHs(sv); } } else { if (in) { /* only push the data argument */ XPUSHs(in); } } PUTBACK; count = call_sv(hook->sub, G_SCALAR); SPAGAIN; if (count != 1) fatal("Hook returned %d elements instead of 1", count); out = POPs; CT_DEBUG(MAIN, ("single_hook_call: in=%p(%d), out=%p(%d)", in, in ? (int) SvREFCNT(in) : 0, out, (int) SvREFCNT(out))); if (!mortal && in != NULL) SvREFCNT_dec(in); SvREFCNT_inc(out); PUTBACK; FREETMPS; LEAVE; if (mortal) sv_2mortal(out); CT_DEBUG(MAIN, ("single_hook_call: out=%p(%d)", out, (int) SvREFCNT(out))); return out; } /******************************************************************************* * * ROUTINE: hook_call * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *hook_call(pTHX_ SV *self, const char *id_pre, const char *id, const TypeHooks *pTH, enum HookId hook_id, SV *in, int mortal) { CT_DEBUG(MAIN, ("hook_call(id='%s%s', pTH=%p, in=%p(%d), mortal=%d)", id_pre, id, pTH, in, (int) SvREFCNT(in), mortal)); assert(self != NULL); assert(pTH != NULL); assert(id != NULL); assert(in != NULL); return single_hook_call(aTHX_ self, gs_HookIdStr[hook_id], id_pre, id, &pTH->hooks[hook_id], in, mortal); } /******************************************************************************* * * ROUTINE: find_hooks * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int find_hooks(pTHX_ const char *type, HV *hooks, TypeHooks *pTH) { HE *h; int i, num; assert(type != NULL); assert(hooks != NULL); assert(pTH != NULL); (void) hv_iterinit(hooks); while ((h = hv_iternext(hooks)) != NULL) { const char *key; I32 keylen; SV *sub; enum HookId id; key = hv_iterkey(h, &keylen); sub = hv_iterval(hooks, h); id = get_hook_id(key); if (id >= HOOKID_COUNT) { if (id == HOOKID_INVALID) Perl_croak(aTHX_ "Invalid hook type '%s'", key); else fatal("Invalid hook id %d for hook '%s'", id, key); } single_hook_fill(aTHX_ key, type, &pTH->hooks[id], sub, SHF_ALLOW_ARG_SELF | SHF_ALLOW_ARG_TYPE | SHF_ALLOW_ARG_DATA | SHF_ALLOW_ARG_HOOK); } for (i = num = 0; i < HOOKID_COUNT; i++) if (pTH->hooks[i].sub) num++; return num; } /******************************************************************************* * * ROUTINE: get_single_hook * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_single_hook(pTHX_ const SingleHook *hook) { SV *sv; assert(hook != NULL); sv = hook->sub; if (sv == NULL) return NULL; sv = newRV_inc(sv); if (hook->arg) { AV *av = newAV(); int j, len = 1 + av_len(hook->arg); av_extend(av, len); if (av_store(av, 0, sv) == NULL) fatal("av_store() failed in get_hooks()"); for (j = 0; j < len; j++) { SV **pSV = av_fetch(hook->arg, j, 0); if (pSV == NULL) fatal("NULL returned by av_fetch() in get_hooks()"); SvREFCNT_inc(*pSV); if (av_store(av, j+1, *pSV) == NULL) fatal("av_store() failed in get_hooks()"); } sv = newRV_noinc((SV *) av); } return sv; } /******************************************************************************* * * ROUTINE: get_hooks * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ HV *get_hooks(pTHX_ const TypeHooks *pTH) { int i; HV *hv = newHV(); assert(pTH != NULL); for (i = 0; i < HOOKID_COUNT; i++) { SV *sv = get_single_hook(aTHX_ &pTH->hooks[i]); const char *id; if (sv == NULL) continue; id = gs_HookIdStr[i]; if (hv_store(hv, id, strlen(id), sv, 0) == 0) fatal("hv_store() failed in get_hooks()"); } return hv; } Convert-Binary-C-0.76/cbc/hook.h0000644000175000001440000000601011550664613015047 0ustar mhxusers/******************************************************************************* * * HEADER: hook.h * ******************************************************************************** * * DESCRIPTION: C::B::C hooks * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:14 +0200 $ * $Revision: 13 $ * $Source: /cbc/hook.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_HOOK_H #define _CBC_HOOK_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ /*===== DEFINES ==============================================================*/ #define SHF_ALLOW_ARG_SELF 0x00000001U #define SHF_ALLOW_ARG_TYPE 0x00000002U #define SHF_ALLOW_ARG_DATA 0x00000004U #define SHF_ALLOW_ARG_HOOK 0x00000008U #define SHF_ALLOW_ALL_ARGS 0xFFFFFFFFU /*===== TYPEDEFS =============================================================*/ typedef enum { HOOK_ARG_SELF, HOOK_ARG_TYPE, HOOK_ARG_DATA, HOOK_ARG_HOOK } HookArgType; typedef struct { SV *sub; AV *arg; } SingleHook; #include "token/t_hookid.h" typedef struct { SingleHook hooks[HOOKID_COUNT]; } TypeHooks; /*===== FUNCTION PROTOTYPES ==================================================*/ #define single_hook_fill CBC_single_hook_fill void single_hook_fill(pTHX_ const char *hook, const char *type, SingleHook *sth, SV *sub, U32 allowed_args); #define single_hook_new CBC_single_hook_new SingleHook *single_hook_new(const SingleHook *h); #define hook_new CBC_hook_new TypeHooks *hook_new(const TypeHooks *h); #define single_hook_update CBC_single_hook_update void single_hook_update(SingleHook *dst, const SingleHook *src); #define hook_update CBC_hook_update void hook_update(TypeHooks *dst, const TypeHooks *src); #define single_hook_delete CBC_single_hook_delete void single_hook_delete(SingleHook *hook); #define hook_delete CBC_hook_delete void hook_delete(TypeHooks *h); #define single_hook_call CBC_single_hook_call SV *single_hook_call(pTHX_ SV *self, const char *hook_id_str, const char *id_pre, const char *id, const SingleHook *hook, SV *in, int mortal); #define hook_call CBC_hook_call SV *hook_call(pTHX_ SV *self, const char *id_pre, const char *id, const TypeHooks *pTH, enum HookId hook_id, SV *in, int mortal); #define find_hooks CBC_find_hooks int find_hooks(pTHX_ const char *type, HV *hooks, TypeHooks *pTH); #define get_single_hook CBC_get_single_hook SV *get_single_hook(pTHX_ const SingleHook *hook); #define get_hooks CBC_get_hooks HV *get_hooks(pTHX_ const TypeHooks *pTH); #endif Convert-Binary-C-0.76/cbc/init.c0000644000175000001440000002130311550664613015047 0ustar mhxusers/******************************************************************************* * * MODULE: init.c * ******************************************************************************** * * DESCRIPTION: C::B::C initializer * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:14 +0200 $ * $Revision: 18 $ * $Source: /cbc/init.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "util/list.h" #include "cbc/idl.h" #include "cbc/init.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #define INDENT \ STMT_START { \ if (level > 0) \ add_indent(aTHX_ string, level); \ } STMT_END #define APPEND_COMMA \ STMT_START { \ if (first) \ first = 0; \ else \ sv_catpv(string, ",\n"); \ } STMT_END #define ENTER_LEVEL \ STMT_START { \ INDENT; \ sv_catpv(string, "{\n"); \ } STMT_END #define LEAVE_LEVEL \ STMT_START { \ sv_catpv(string, "\n"); \ INDENT; \ sv_catpv(string, "}"); \ } STMT_END /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void get_init_str_struct(pTHX_ CBC *THIS, Struct *pStruct, SV *init, IDList *idl, int level, SV *string); static void get_init_str_type(pTHX_ CBC *THIS, TypeSpec *pTS, Declarator *pDecl, int dimension, SV *init, IDList *idl, int level, SV *string); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_init_str_struct * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void get_init_str_struct(pTHX_ CBC *THIS, Struct *pStruct, SV *init, IDList *idl, int level, SV *string) { ListIterator sdi; StructDeclaration *pStructDecl; Declarator *pDecl; HV *hash = NULL; int first = 1; CT_DEBUG(MAIN, (XSCLASS "::get_init_str_struct( THIS=%p, pStruct=%p, " "init=%p, idl=%p, level=%d, string=%p )", THIS, pStruct, init, idl, level, string)); if (DEFINED(init)) { SV *h; if (SvROK(init) && SvTYPE(h = SvRV(init)) == SVt_PVHV) hash = (HV *) h; else WARN((aTHX_ "'%s' should be a hash reference", idl_to_str(aTHX_ idl))); } ENTER_LEVEL; IDLIST_PUSH(idl, ID); LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { SV **e; /* skip unnamed bitfield members right here */ if (pDecl->bitfield_flag && pDecl->identifier[0] == '\0') continue; /* skip flexible array members */ if (pDecl->array_flag && pDecl->size == 0) continue; e = hash ? hv_fetch(hash, pDecl->identifier, CTT_IDLEN(pDecl), 0) : NULL; if(e) SvGETMAGIC(*e); IDLIST_SET_ID(idl, pDecl->identifier); APPEND_COMMA; get_init_str_type(aTHX_ THIS, &pStructDecl->type, pDecl, 0, e ? *e : NULL, idl, level+1, string); /* only initialize first union member */ if (pStruct->tflags & T_UNION) goto handle_end; } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); APPEND_COMMA; IDLIST_POP(idl); get_init_str_struct(aTHX_ THIS, (Struct *) pTS->ptr, init, idl, level+1, string); IDLIST_PUSH(idl, ID); /* only initialize first union member */ if (pStruct->tflags & T_UNION) goto handle_end; } } handle_end: IDLIST_POP(idl); LEAVE_LEVEL; } /******************************************************************************* * * ROUTINE: get_init_str_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void get_init_str_type(pTHX_ CBC *THIS, TypeSpec *pTS, Declarator *pDecl, int dimension, SV *init, IDList *idl, int level, SV *string) { CT_DEBUG(MAIN, (XSCLASS "::get_init_str_type( THIS=%p, pTS=%p, pDecl=%p, " "dimension=%d, init=%p, idl=%p, level=%d, string=%p )", THIS, pTS, pDecl, dimension, init, idl, level, string)); if (pDecl && pDecl->array_flag && dimension < LL_count(pDecl->ext.array)) { AV *ary = NULL; long i, s = ((Value *) LL_get(pDecl->ext.array, dimension))->iv; int first = 1; if (DEFINED(init)) { SV *sv; if (SvROK(init) && SvTYPE(sv = SvRV(init)) == SVt_PVAV) ary = (AV *) sv; else WARN((aTHX_ "'%s' should be an array reference", idl_to_str(aTHX_ idl))); } ENTER_LEVEL; IDLIST_PUSH(idl, IX); for (i = 0; i < s; ++i) { SV **e = ary ? av_fetch(ary, i, 0) : NULL; if (e) SvGETMAGIC(*e); IDLIST_SET_IX(idl, i); APPEND_COMMA; get_init_str_type(aTHX_ THIS, pTS, pDecl, dimension+1, e ? *e : NULL, idl, level+1, string); } IDLIST_POP(idl); LEAVE_LEVEL; } else { if (pDecl && pDecl->pointer_flag) goto handle_basic; else if(pTS->tflags & T_TYPE) { Typedef *pTD = (Typedef *) pTS->ptr; get_init_str_type(aTHX_ THIS, pTD->pType, pTD->pDecl, 0, init, idl, level, string); } else if(pTS->tflags & T_COMPOUND) { Struct *pStruct = pTS->ptr; if (pStruct->declarations == NULL) WARN_UNDEF_STRUCT(pStruct); get_init_str_struct(aTHX_ THIS, pStruct, init, idl, level, string); } else { handle_basic: INDENT; if (DEFINED(init)) { if (SvROK(init)) WARN((aTHX_ "'%s' should be a scalar value", idl_to_str(aTHX_ idl))); sv_catsv(string, init); } else sv_catpvn(string, "0", 1); } } } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_initializer_string * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_initializer_string(pTHX_ CBC *THIS, MemberInfo *pMI, SV *init, const char *name) { SV *string = newSVpvn("", 0); IDList idl; IDLIST_INIT(&idl); IDLIST_PUSH(&idl, ID); IDLIST_SET_ID(&idl, name); get_init_str_type(aTHX_ THIS, &pMI->type, pMI->pDecl, pMI->level, init, &idl, 0, string); IDLIST_FREE(&idl); return string; } Convert-Binary-C-0.76/cbc/init.h0000644000175000001440000000264211550664613015061 0ustar mhxusers/******************************************************************************* * * HEADER: init.h * ******************************************************************************** * * DESCRIPTION: C::B::C initializer * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:14 +0200 $ * $Revision: 7 $ * $Source: /cbc/init.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_INIT_H #define _CBC_INIT_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/member.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_initializer_string CBC_get_initializer_string SV *get_initializer_string(pTHX_ CBC *THIS, MemberInfo *pMI, SV *init, const char *name); #endif Convert-Binary-C-0.76/cbc/pack.c0000644000175000001440000016121511550664613015031 0ustar mhxusers/******************************************************************************* * * MODULE: pack.c * ******************************************************************************** * * DESCRIPTION: C::B::C pack/unpack routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 14:17:02 +0200 $ * $Revision: 59 $ * $Source: /cbc/pack.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #define NO_XSLOCKS #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/dimension.h" #include "cbc/hook.h" #include "cbc/idl.h" #include "cbc/pack.h" #include "cbc/tag.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*----------------------*/ /* access configuration */ /*----------------------*/ #define PCONFIG (&PACK->THIS->cfg) /*-----------------------------------*/ /* arguments to store_/fetch_integer */ /*-----------------------------------*/ #define SF_INT_ARGS(pBI) \ (pBI) ? (pBI)->bits : 0, \ (pBI) ? (pBI)->pos : 0, \ (pBI) ? PCONFIG->layout.byte_order : PACK->order, \ pPACKBUF /*--------------------------------*/ /* macros for buffer manipulation */ /*--------------------------------*/ #define PACKPOS PACK->buf.pos #define PACKLEN PACK->buf.length #define pPACKBUF (PACK->buf.buffer + PACKPOS) #define CHECK_BUFFER(size) \ STMT_START { \ if (PACKPOS + (size) > PACKLEN) \ { \ PACKPOS = PACKLEN; \ return newSV(0); \ } \ } STMT_END #define GROW_BUFFER(size, reason) \ STMT_START { \ unsigned long _required_ = PACKPOS + (size); \ if (_required_ > PACKLEN) \ { \ CT_DEBUG(MAIN, ("Growing output SV from %ld to %ld bytes due " \ "to %s", PACKLEN, _required_, reason)); \ PACK->buf.buffer = SvGROW(PACK->bufsv, _required_ + 1); \ SvCUR_set(PACK->bufsv, _required_); \ Zero(PACK->buf.buffer + PACKLEN, _required_ + 1 - PACKLEN, char);\ PACKLEN = _required_; \ } \ } STMT_END /*----------------*/ /* ID list macros */ /*----------------*/ #define IDLP_PUSH(what) IDLIST_PUSH(&(PACK->idl), what) #define IDLP_POP IDLIST_POP(&(PACK->idl)) #define IDLP_SET_ID(value) IDLIST_SET_ID(&(PACK->idl), value) #define IDLP_SET_IX(value) IDLIST_SET_IX(&(PACK->idl), value) /*---------------------------*/ /* handling of ByteOrder tag */ /*---------------------------*/ #define dBYTEORDER const CByteOrder old_byte_order = PACK->order #define SET_BYTEORDER(tags) \ STMT_START { \ const CtTag *BOtag = find_tag(tags, CBC_TAG_BYTE_ORDER); \ if (BOtag) \ switch (BOtag->flags) \ { \ case CBC_TAG_BYTE_ORDER_BIG_ENDIAN: \ PACK->order = CBO_BIG_ENDIAN; \ break; \ \ case CBC_TAG_BYTE_ORDER_LITTLE_ENDIAN: \ PACK->order = CBO_LITTLE_ENDIAN; \ break; \ \ default: \ fatal("Unknown byte order (%d)", BOtag->flags); \ break; \ } \ } STMT_END #define RESTORE_BYTEORDER PACK->order = old_byte_order /*------------*/ /* some flags */ /*------------*/ #define PACK_FLEXIBLE 0x00000001 /*===== TYPEDEFS =============================================================*/ struct PackInfo { Buffer buf; IDList idl; const CBC *THIS; SV *bufsv; SV *self; CByteOrder order; HV *parent; }; typedef enum { FPT_UNKNOWN, FPT_FLOAT, FPT_DOUBLE, FPT_LONG_DOUBLE } FPType; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static FPType get_fp_type(u_32 flags); static void store_float_sv(pPACKARGS, unsigned size, u_32 flags, SV *sv); static SV *fetch_float_sv(pPACKARGS, unsigned size, u_32 flags); static void store_int_sv(pPACKARGS, unsigned size, unsigned sign, const BitfieldInfo *pBI, SV *sv); static SV *fetch_int_sv(pPACKARGS, unsigned size, unsigned sign, const BitfieldInfo *pBI); static unsigned load_size(const CParseConfig *pCfg, u_32 *pFlags, const BitfieldInfo *pBI); static void prepare_pack_format(pPACKARGS, const Declarator *pDecl, const CtTag *dimtag, int *pSize, u_32 *pFlags); static void pack_pointer(pPACKARGS, SV *sv); static void pack_struct(pPACKARGS, const Struct *pStruct, SV *sv, int inlined); static void pack_enum(pPACKARGS, const EnumSpecifier *pEnumSpec, const BitfieldInfo *pBI, SV *sv); static void pack_basic(pPACKARGS, u_32 flags, const BitfieldInfo *pBI, SV *sv); static void pack_format(pPACKARGS, const CtTag *format, unsigned size, u_32 flags, SV *sv); static void pack_type(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, const BitfieldInfo *pBI, SV *sv); static SV *unpack_pointer(pPACKARGS); static SV *unpack_struct(pPACKARGS, const Struct *pStruct, HV *hash); static SV *unpack_enum(pPACKARGS, const EnumSpecifier *pEnumSpec, const BitfieldInfo *pBI); static SV *unpack_basic(pPACKARGS, u_32 flags, const BitfieldInfo *pBI); static SV *unpack_format(pPACKARGS, const CtTag *format, unsigned size, u_32 flags); static SV *unpack_type(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, const BitfieldInfo *pBI); static SV *hook_call_typespec(pTHX_ SV *self, const TypeSpec *pTS, enum HookId hook_id, SV *in, int mortal); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_fp_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static FPType get_fp_type(u_32 flags) { /* mask out irrelevant flags */ flags &= T_VOID | T_CHAR | T_SHORT | T_INT | T_LONG | T_FLOAT | T_DOUBLE | T_SIGNED | T_UNSIGNED | T_LONGLONG; /* only a couple of types are supported */ switch (flags) { case T_LONG | T_DOUBLE: return FPT_LONG_DOUBLE; case T_DOUBLE : return FPT_DOUBLE; case T_FLOAT : return FPT_FLOAT; } return FPT_UNKNOWN; } /******************************************************************************* * * ROUTINE: store_float_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #ifdef CBC_HAVE_IEEE_FP #define STORE_FLOAT(ftype) \ STMT_START { \ union { \ ftype f; \ u_8 c[sizeof(ftype)]; \ } _u; \ int _i; \ u_8 *_p = (u_8 *) pPACKBUF; \ _u.f = (ftype) SvNV(sv); \ if (PACK->order == CBC_NATIVE_BYTEORDER) \ { \ for (_i = 0; _i < (int)sizeof(ftype); _i++) \ *_p++ = _u.c[_i]; \ } \ else /* swap */ \ { \ for (_i = sizeof(ftype)-1; _i >= 0; _i--) \ *_p++ = _u.c[_i]; \ } \ } STMT_END #else /* ! CBC_HAVE_IEEE_FP */ #define STORE_FLOAT(ftype) \ STMT_START { \ if (size == sizeof(ftype)) \ { \ u_8 *_p = (u_8 *) pPACKBUF; \ ftype _v = (ftype) SvNV(sv); \ Copy(&_v, _p, 1, ftype); \ } \ else \ goto non_native; \ } STMT_END #endif /* CBC_HAVE_IEEE_FP */ static void store_float_sv(pPACKARGS, unsigned size, u_32 flags, SV *sv) { FPType type = get_fp_type(flags); if (type == FPT_UNKNOWN) { SV *str = NULL; get_basic_type_spec_string(aTHX_ &str, flags); WARN((aTHX_ "Unsupported floating point type '%s' in pack", SvPV_nolen(str))); SvREFCNT_dec(str); goto finish; } #ifdef CBC_HAVE_IEEE_FP if (size == sizeof(float)) STORE_FLOAT(float); else if (size == sizeof(double)) STORE_FLOAT(double); #if ARCH_HAVE_LONG_DOUBLE else if (size == sizeof(long double)) STORE_FLOAT(long double); #endif else WARN((aTHX_ "Cannot pack %d byte floating point values", size)); #else /* ! CBC_HAVE_IEEE_FP */ if (PACK->order != CBC_NATIVE_BYTEORDER) goto non_native; switch (type) { case FPT_FLOAT : STORE_FLOAT(float); break; case FPT_DOUBLE : STORE_FLOAT(double); break; #if ARCH_HAVE_LONG_DOUBLE case FPT_LONG_DOUBLE : STORE_FLOAT(long double); break; #endif default: goto non_native; } goto finish; non_native: WARN((aTHX_ "Cannot pack non-native floating point values", size)); #endif /* CBC_HAVE_IEEE_FP */ finish: return; } #undef STORE_FLOAT /******************************************************************************* * * ROUTINE: fetch_float_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #ifdef CBC_HAVE_IEEE_FP #define FETCH_FLOAT(ftype) \ STMT_START { \ union { \ ftype f; \ u_8 c[sizeof(ftype)]; \ } _u; \ int _i; \ u_8 *_p = (u_8 *) pPACKBUF; \ if (PACK->order == CBC_NATIVE_BYTEORDER) \ { \ for (_i = 0; _i < (int)sizeof(ftype); _i++) \ _u.c[_i] = *_p++; \ } \ else /* swap */ \ { \ for (_i = sizeof(ftype)-1; _i >= 0; _i--) \ _u.c[_i] = *_p++; \ } \ value = (NV) _u.f; \ } STMT_END #else /* ! CBC_HAVE_IEEE_FP */ #define FETCH_FLOAT(ftype) \ STMT_START { \ if (size == sizeof(ftype)) \ { \ u_8 *_p = (u_8 *) pPACKBUF; \ ftype _v; \ Copy(_p, &_v, 1, ftype); \ value = (NV) _v; \ } \ else \ goto non_native; \ } STMT_END #endif /* CBC_HAVE_IEEE_FP */ static SV *fetch_float_sv(pPACKARGS, unsigned size, u_32 flags) { FPType type = get_fp_type(flags); NV value = 0.0; if (type == FPT_UNKNOWN) { SV *str = NULL; get_basic_type_spec_string(aTHX_ &str, flags); WARN((aTHX_ "Unsupported floating point type '%s' in unpack", SvPV_nolen(str))); SvREFCNT_dec(str); goto finish; } #ifdef CBC_HAVE_IEEE_FP if (size == sizeof(float)) FETCH_FLOAT(float); else if (size == sizeof(double)) FETCH_FLOAT(double); #if ARCH_HAVE_LONG_DOUBLE else if (size == sizeof(long double)) FETCH_FLOAT(long double); #endif else WARN((aTHX_ "Cannot unpack %d byte floating point values", size)); #else /* ! CBC_HAVE_IEEE_FP */ if (PACK->order != CBC_NATIVE_BYTEORDER) goto non_native; switch (type) { case FPT_FLOAT : FETCH_FLOAT(float); break; case FPT_DOUBLE : FETCH_FLOAT(double); break; #if ARCH_HAVE_LONG_DOUBLE case FPT_LONG_DOUBLE : FETCH_FLOAT(long double); break; #endif default: goto non_native; } goto finish; non_native: WARN((aTHX_ "Cannot unpack non-native floating point values", size)); #endif /* CBC_HAVE_IEEE_FP */ finish: return newSVnv(value); } #undef FETCH_FLOAT /******************************************************************************* * * ROUTINE: store_int_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void store_int_sv(pPACKARGS, unsigned size, unsigned sign, const BitfieldInfo *pBI, SV *sv) { IntValue iv; iv.sign = sign; if (SvPOK(sv) && string_is_integer(SvPVX(sv))) iv.string = SvPVX(sv); else { iv.string = NULL; if (sign) { IV val = SvIV(sv); CT_DEBUG(MAIN, ("SvIV( sv ) = %" IVdf, val)); #if ARCH_NATIVE_64_BIT_INTEGER iv.value.s = val; #else iv.value.s.h = val < 0 ? -1 : 0; iv.value.s.l = val; #endif } else { UV val = SvUV(sv); CT_DEBUG(MAIN, ("SvUV( sv ) = %" UVuf, val)); #if ARCH_NATIVE_64_BIT_INTEGER iv.value.u = val; #else iv.value.u.h = 0; iv.value.u.l = val; #endif } } store_integer(size, SF_INT_ARGS(pBI), &iv); } /******************************************************************************* * * ROUTINE: fetch_int_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #if ARCH_NATIVE_64_BIT_INTEGER #define __SIZE_LIMIT sizeof(IV) #else #define __SIZE_LIMIT sizeof(iv.value.u.l) #endif #if defined(newSVuv) && PERL_BCDVERSION >= 0x5006000 #define HAVE_USABLE_NEWSVUV 1 #else #define HAVE_USABLE_NEWSVUV 0 #endif #if HAVE_USABLE_NEWSVUV #define __TO_UV(x) newSVuv((UV) (x)) #else #define __TO_UV(x) newSViv((IV) (x)) #endif static SV *fetch_int_sv(pPACKARGS, unsigned size, unsigned sign, const BitfieldInfo *pBI) { IntValue iv; char buffer[32]; /* * Whew, I guess that could be done better, * but at least it's working... */ #if HAVE_USABLE_NEWSVUV iv.string = size > __SIZE_LIMIT ? buffer : NULL; #else /* older perls don't have newSVuv */ iv.string = size > __SIZE_LIMIT || (size == __SIZE_LIMIT && !sign) ? buffer : NULL; #endif fetch_integer(size, sign, SF_INT_ARGS(pBI), &iv); if (iv.string) return newSVpv(iv.string, 0); #if ARCH_NATIVE_64_BIT_INTEGER return sign ? newSViv(iv.value.s ) : __TO_UV(iv.value.u ); #else return sign ? newSViv((i_32) iv.value.s.l) : __TO_UV(iv.value.u.l); #endif } #undef __SIZE_LIMIT #undef __TO_UV /******************************************************************************* * * ROUTINE: load_size * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static unsigned load_size(const CParseConfig *pCfg, u_32 *pFlags, const BitfieldInfo *pBI) { unsigned size; if (pBI) { size = pBI->size; if (pCfg->unsigned_bitfields && (*pFlags & (T_SIGNED | T_UNSIGNED)) == 0) *pFlags |= T_UNSIGNED; } else { u_32 flags = *pFlags; #define LOAD_SIZE(type) \ size = pCfg->layout.type ## _size ? pCfg->layout.type ## _size \ : CTLIB_ ## type ## _SIZE if (flags & T_VOID) /* XXX: do we want void ? */ size = 1; else if (flags & T_CHAR) { LOAD_SIZE(char); if (pCfg->unsigned_chars && (flags & (T_SIGNED | T_UNSIGNED)) == 0) flags |= T_UNSIGNED; } else if ((flags & (T_LONG | T_DOUBLE)) == (T_LONG | T_DOUBLE)) LOAD_SIZE(long_double); else if (flags & T_LONGLONG) LOAD_SIZE(long_long); else if (flags & T_FLOAT) LOAD_SIZE(float); else if (flags & T_DOUBLE) LOAD_SIZE(double); else if (flags & T_SHORT) LOAD_SIZE(short); else if (flags & T_LONG) LOAD_SIZE(long); else LOAD_SIZE(int); #undef LOAD_SIZE *pFlags = flags; } return size; } /******************************************************************************* * * ROUTINE: prepare_pack_format * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void prepare_pack_format(pPACKARGS, const Declarator *pDecl, const CtTag *dimtag, int *pSize, u_32 *pFlags) { int size, one = 0; assert(pDecl != NULL); if (dimtag || pDecl->size == 0) { if (pDecl->size == 0) { int dim = LL_count(pDecl->ext.array); one = pDecl->item_size; while (dim-- > 1) one *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; } else { one = pDecl->size / ((Value *) LL_get(pDecl->ext.array, 0))->iv; } } /* check if it's an incomplete array type */ if (pDecl->array_flag && (dimtag ? dimtag_is_flexible(aTHX_ dimtag->any) : pDecl->size == 0)) { assert(one > 0); size = one; *pFlags |= PACK_FLEXIBLE; } else { if (dimtag) { assert(!dimtag_is_flexible(aTHX_ dimtag->any)); assert(one > 0); size = one * dimtag_eval(aTHX_ dimtag->any, 0, PACK->self, PACK->parent); } else { size = pDecl->size; } } assert(size > 0); *pSize = size; } /******************************************************************************* * * ROUTINE: pack_pointer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_pointer(pPACKARGS, SV *sv) { unsigned size = PCONFIG->layout.ptr_size ? PCONFIG->layout.ptr_size : sizeof(void *); CT_DEBUG(MAIN, (XSCLASS "::pack_pointer(sv=%p)", sv)); GROW_BUFFER(size, "insufficient space"); if (DEFINED(sv) && !SvROK(sv)) store_int_sv(aPACKARGS, size, 0, NULL, sv); } /******************************************************************************* * * ROUTINE: pack_struct * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_struct(pPACKARGS, const Struct *pStruct, SV *sv, int inlined) { StructDeclaration *pStructDecl; Declarator *pDecl; long pos; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::pack_struct(pStruct=%p, sv=%p, inlined=%d)", pStruct, sv, inlined)); if (pStruct->tags && !inlined) { const CtTag *tag; if ((tag = find_tag(pStruct->tags, CBC_TAG_HOOKS)) != NULL) sv = hook_call(aTHX_ PACK->self, pStruct->tflags & T_STRUCT ? "struct " : "union ", pStruct->identifier, tag->any, HOOKID_pack, sv, 1); if ((tag = find_tag(pStruct->tags, CBC_TAG_FORMAT)) != NULL) { pack_format(aPACKARGS, tag, pStruct->size, 0, sv); return; } SET_BYTEORDER(pStruct->tags); } pos = PACKPOS; if (DEFINED(sv)) { SV *hash; if (SvROK(sv) && SvTYPE(hash = SvRV(sv)) == SVt_PVHV) { ListIterator sdi; HV *h = (HV *) hash; IDLP_PUSH(ID); LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { size_t id_len = CTT_IDLEN(pDecl); if (id_len > 0) { SV **e = hv_fetch(h, pDecl->identifier, id_len, 0); BitfieldInfo *pBI; CT_DEBUG(MAIN, ("packing member '%s'", pDecl->identifier)); if (e) { SvGETMAGIC(*e); IDLP_SET_ID(pDecl->identifier); assert(pDecl->offset >= 0); PACKPOS = pos + pDecl->offset; if (pDecl->bitfield_flag) { pBI = &pDecl->ext.bitfield; assert(pBI->bits > 0); /* because id_len is > 0, too */ assert(pBI->pos < 64); assert(pBI->size > 0 && pBI->size <= 8); } else pBI = NULL; PACK->parent = h; pack_type(aPACKARGS, &pStructDecl->type, pDecl, 0, pBI, e ? *e : NULL); PACK->parent = NULL; } } } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); IDLP_POP; assert(pStructDecl->offset >= 0); PACKPOS = pos + pStructDecl->offset; pack_struct(aPACKARGS, (Struct *) pTS->ptr, sv, 1); IDLP_PUSH(ID); } } IDLP_POP; } else WARN((aTHX_ "'%s' should be a hash reference", idl_to_str(aTHX_ &(PACK->idl)))); } RESTORE_BYTEORDER; } /******************************************************************************* * * ROUTINE: pack_enum * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_enum(pPACKARGS, const EnumSpecifier *pEnumSpec, const BitfieldInfo *pBI, SV *sv) { unsigned size = pBI ? pBI->size : GET_ENUM_SIZE(PCONFIG, pEnumSpec); IV value = 0; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::pack_enum(pEnumSpec=%p, pBI=%p sv=%p)", pEnumSpec, pBI, sv)); if (pEnumSpec->tags) { const CtTag *tag; if ((tag = find_tag(pEnumSpec->tags, CBC_TAG_HOOKS)) != NULL) sv = hook_call(aTHX_ PACK->self, "enum ", pEnumSpec->identifier, tag->any, HOOKID_pack, sv, 1); if ((tag = find_tag(pEnumSpec->tags, CBC_TAG_FORMAT)) != NULL) { assert(pBI == NULL); pack_format(aPACKARGS, tag, size, 0, sv); return; } SET_BYTEORDER(pEnumSpec->tags); } /* TODO: add some checks (range, perhaps even value) */ GROW_BUFFER(size, "insufficient space"); if (DEFINED(sv) && !SvROK(sv)) { IntValue iv; if (SvIOK(sv)) value = SvIVX(sv); else { Enumerator *pEnum = NULL; if (SvPOK(sv)) { STRLEN len; char *str = SvPV(sv, len); pEnum = HT_get(PACK->THIS->cpi.htEnumerators, str, len, 0); if (pEnum) { if (IS_UNSAFE_VAL(pEnum->value)) WARN((aTHX_ "Enumerator value '%s' is unsafe", str)); value = pEnum->value.iv; } } if (pEnum == NULL) value = SvIV(sv); } CT_DEBUG(MAIN, ("value(sv) = %" IVdf, value)); iv.string = NULL; iv.sign = value < 0; #if ARCH_NATIVE_64_BIT_INTEGER iv.value.s = value; #else iv.value.s.h = value < 0 ? -1 : 0; iv.value.s.l = value; #endif store_integer(size, SF_INT_ARGS(pBI), &iv); } RESTORE_BYTEORDER; } /******************************************************************************* * * ROUTINE: pack_basic * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_basic(pPACKARGS, u_32 flags, const BitfieldInfo *pBI, SV *sv) { unsigned size; CT_DEBUG(MAIN, (XSCLASS "::pack_basic(flags=0x%08lX, pBI=%p sv=%p)", (unsigned long) flags, pBI, sv)); CT_DEBUG(MAIN, ("buffer.pos=%lu, buffer.length=%lu", PACKPOS, PACKLEN)); size = load_size(PCONFIG, &flags, pBI); GROW_BUFFER(size, "insufficient space"); if (DEFINED(sv) && !SvROK(sv)) { if (flags & (T_DOUBLE | T_FLOAT)) { assert(pBI == NULL); store_float_sv(aPACKARGS, size, flags, sv); } else store_int_sv(aPACKARGS, size, (flags & T_UNSIGNED) == 0, pBI, sv); } } /******************************************************************************* * * ROUTINE: pack_format * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_format(pPACKARGS, const CtTag *format, unsigned size, u_32 flags, SV *sv) { CT_DEBUG(MAIN, (XSCLASS "::pack_format(format->flags=0x%lX, size=%u, " "flags=0x%lX, sv=%p)", (unsigned long) format->flags, size, (unsigned long) flags, sv)); if (flags & PACK_FLEXIBLE) { if (!DEFINED(sv)) size = 0; } else GROW_BUFFER(size, "insufficient space"); if (DEFINED(sv)) { STRLEN len; const char *p = SvPV(sv, len); if (flags & PACK_FLEXIBLE) { if (format->flags == CBC_TAG_FORMAT_STRING) { STRLEN tmp = 0; while (p[tmp] && tmp < len) tmp++; len = tmp + 1; /* null-termination */ } size = len % size ? (unsigned) (len + size - (len % size)) : (unsigned) len; GROW_BUFFER(size, "incomplete array type"); } if (len > size) { #define COPY_STRING_LENGTH 16 unsigned char *src = (unsigned char *)p; const char *fmtstr = "Unknown"; const char *refstr; char copy[COPY_STRING_LENGTH]; unsigned n; for (n = 0; n < COPY_STRING_LENGTH - 1 && n < len; n++) copy[n] = src[n] < 32 || src[n] > 127 ? '.' : (char) src[n]; if (len > n) for (n -= 3; n < COPY_STRING_LENGTH - 1; n++) copy[n] = '.'; copy[n] = '\0'; switch (format->flags) { case CBC_TAG_FORMAT_BINARY: fmtstr = "Binary"; break; case CBC_TAG_FORMAT_STRING: fmtstr = "String"; break; default: fatal("Unknown format (%d)", format->flags); } /* hint the user that tries to pack format tagged references */ refstr = SvROK(sv) ? " (Are you sure you want to pack a reference type?)" : ""; WARN((aTHX_ "Source string \"%s\" is longer (%d byte%s) than '%s'" " (%d byte%s) while packing '%s' format%s", copy, len, len == 1 ? "" : "s", idl_to_str(aTHX_ &(PACK->idl)), size, size == 1 ? "" : "s", fmtstr, refstr)); len = size; } switch (format->flags) { case CBC_TAG_FORMAT_BINARY: Copy(p, pPACKBUF, len, char); break; case CBC_TAG_FORMAT_STRING: strncpy(pPACKBUF, p, len); break; default: fatal("Unknown format (%d)", format->flags); } } } /******************************************************************************* * * ROUTINE: pack_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void pack_type(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, const BitfieldInfo *pBI, SV *sv) { const CtTag *dimtag = NULL; int dim; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::pack_type(pTS=%p, pDecl=%p, dimension=%d, " "pBI=%p, sv=%p)", pTS, pDecl, dimension, pBI, sv)); assert(sv != NULL); if (pDecl && dimension == 0 && pDecl->tags) { const CtTag *tag; if ((tag = find_tag(pDecl->tags, CBC_TAG_HOOKS)) != NULL) sv = hook_call(aTHX_ PACK->self, NULL, pDecl->identifier, tag->any, HOOKID_pack, sv, 1); dimtag = find_tag(pDecl->tags, CBC_TAG_DIMENSION); if ((tag = find_tag(pDecl->tags, CBC_TAG_FORMAT)) != NULL) { int size; u_32 flags = 0; assert(pBI == NULL); prepare_pack_format(aPACKARGS, pDecl, dimtag, &size, &flags); pack_format(aPACKARGS, tag, size, flags, sv); return; } SET_BYTEORDER(pDecl->tags); } assert(pDecl == NULL || pDecl->bitfield_flag == 0 || pBI != NULL); if (pDecl && pDecl->array_flag && dimension < (dim = LL_count(pDecl->ext.array))) { SV *ary; int size = pDecl->item_size; assert(size > 0); assert(pBI == NULL); if (DEFINED(sv) && SvROK(sv) && SvTYPE(ary = SvRV(sv)) == SVt_PVAV) { Value *v = (Value *) LL_get(pDecl->ext.array, dimension); long i, s, avail; unsigned long pos; AV *a = (AV *) ary; while (dim-- > dimension + 1) size *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; avail = av_len(a)+1; if (dimtag) { assert(dimension == 0); s = dimtag_eval(aTHX_ dimtag->any, avail, PACK->self, PACK->parent); GROW_BUFFER(s*size, "dimension tag"); } else if (v->flags & V_IS_UNDEF) { assert(dimension == 0); s = avail; GROW_BUFFER(s*size, "incomplete array type"); } else s = v->iv; IDLP_PUSH(IX); pos = PACKPOS; for (i = 0; i < s; ++i) { SV **e = av_fetch(a, i, 0); if (e) { SvGETMAGIC(*e); IDLP_SET_IX(i); PACKPOS = pos + i * size; pack_type(aPACKARGS, pTS, pDecl, dimension+1, NULL, e ? *e : NULL); } } IDLP_POP; } else { if (DEFINED(sv)) WARN((aTHX_ "'%s' should be an array reference", idl_to_str(aTHX_ &(PACK->idl)))); /* this is safe with flexible array members */ while (dim-- > dimension) size *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; GROW_BUFFER(size, "insufficient space"); } } else if (pDecl && pDecl->pointer_flag) { assert(pBI == NULL); if (DEFINED(sv) && SvROK(sv)) WARN((aTHX_ "'%s' should be a scalar value", idl_to_str(aTHX_ &(PACK->idl)))); sv = hook_call_typespec(aTHX_ PACK->self, pTS, HOOKID_pack_ptr, sv, 1); pack_pointer(aPACKARGS, sv); } else if (pTS->tflags & T_TYPE) { Typedef *pTD = pTS->ptr; pack_type(aPACKARGS, pTD->pType, pTD->pDecl, 0, pBI, sv); } else if(pTS->tflags & T_COMPOUND) { Struct *pStruct = (Struct *) pTS->ptr; assert(pBI == NULL); if (pStruct->declarations == NULL) WARN_UNDEF_STRUCT(pStruct); else pack_struct(aPACKARGS, pStruct, sv, 0); } else { if (DEFINED(sv) && SvROK(sv)) WARN((aTHX_ "'%s' should be a scalar value", idl_to_str(aTHX_ &(PACK->idl)))); CT_DEBUG(MAIN, ("SET '%s' @ %lu", pDecl ? pDecl->identifier : "", PACKPOS)); if (pTS->tflags & T_ENUM) pack_enum(aPACKARGS, pTS->ptr, pBI, sv); else pack_basic(aPACKARGS, pTS->tflags, pBI, sv); } RESTORE_BYTEORDER; } /******************************************************************************* * * ROUTINE: unpack_pointer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_pointer(pPACKARGS) { unsigned size = PCONFIG->layout.ptr_size ? PCONFIG->layout.ptr_size : sizeof(void *); CT_DEBUG(MAIN, (XSCLASS "::unpack_pointer()")); CHECK_BUFFER(size); return fetch_int_sv(aPACKARGS, size, 0, NULL); } /******************************************************************************* * * ROUTINE: unpack_struct * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_struct(pPACKARGS, const Struct *pStruct, HV *hash) { StructDeclaration *pStructDecl; Declarator *pDecl; HV *h = hash; long pos; int ordered; SV *sv; const CtTag *hooks = NULL; dTHR; dXCPT; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::unpack_struct(pStruct=%p, hash=%p)", pStruct, hash)); if (pStruct->tags && hash == NULL) { const CtTag *format; hooks = find_tag(pStruct->tags, CBC_TAG_HOOKS); if ((format = find_tag(pStruct->tags, CBC_TAG_FORMAT)) != NULL) { sv = unpack_format(aPACKARGS, format, pStruct->size, 0); goto handle_unpack_hook; } SET_BYTEORDER(pStruct->tags); } ordered = PACK->THIS->order_members && PACK->THIS->ixhash != NULL; if (h == NULL) h = ordered ? newHV_indexed(aTHX_ PACK->THIS) : newHV(); pos = PACKPOS; XCPT_TRY_START { ListIterator sdi; LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { U32 klen = CTT_IDLEN(pDecl); if (klen > 0) { CT_DEBUG(MAIN, ("unpacking member '%s'", pDecl->identifier)); if (hv_exists(h, pDecl->identifier, klen)) { WARN((aTHX_ "Member '%s' used more than once in %s%s%s defined in %s(%ld)", pDecl->identifier, pStruct->tflags & T_UNION ? "union" : "struct", pStruct->identifier[0] != '\0' ? " " : "", pStruct->identifier[0] != '\0' ? pStruct->identifier : "", pStruct->context.pFI->name, pStruct->context.line)); } else { SV *value, **didstore; BitfieldInfo *pBI; assert(pDecl->offset >= 0); PACKPOS = pos + pDecl->offset; if (pDecl->bitfield_flag) { pBI = &pDecl->ext.bitfield; assert(pBI->bits > 0); /* because id_len is > 0, too */ assert(pBI->pos < 64); assert(pBI->size > 0 && pBI->size <= 8); } else pBI = NULL; PACK->parent = h; value = unpack_type(aPACKARGS, &pStructDecl->type, pDecl, 0, pBI); PACK->parent = NULL; didstore = hv_store(h, pDecl->identifier, klen, value, 0); if (ordered) SvSETMAGIC(value); if (!didstore) SvREFCNT_dec(value); } } } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); assert(pStructDecl->offset >= 0); PACKPOS = pos + pStructDecl->offset; (void) unpack_struct(aPACKARGS, (Struct *) pTS->ptr, h); } } } XCPT_TRY_END RESTORE_BYTEORDER; XCPT_CATCH { if (hash == NULL) { CT_DEBUG(MAIN, ("freeing hv @ %p in unpack_struct:%d", h, __LINE__)); SvREFCNT_dec((SV *) h); } XCPT_RETHROW; } if (hash) return NULL; sv = newRV_noinc((SV *) h); handle_unpack_hook: if (hooks) { XCPT_TRY_START { sv = hook_call(aTHX_ PACK->self, pStruct->tflags & T_STRUCT ? "struct " : "union ", pStruct->identifier, hooks->any, HOOKID_unpack, sv, 0); } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing sv @ %p in unpack_struct:%d", sv, __LINE__)); SvREFCNT_dec(sv); XCPT_RETHROW; } } return sv; } /******************************************************************************* * * ROUTINE: unpack_enum * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_enum(pPACKARGS, const EnumSpecifier *pEnumSpec, const BitfieldInfo *pBI) { Enumerator *pEnum; unsigned size = pBI ? pBI->size : GET_ENUM_SIZE(PCONFIG, pEnumSpec); IV value; SV *sv; const CtTag *hooks = NULL; IntValue iv; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::unpack_enum(pEnumSpec=%p, pBI=%p)", pEnumSpec, pBI)); if (pEnumSpec->tags) { const CtTag *format; hooks = find_tag(pEnumSpec->tags, CBC_TAG_HOOKS); if ((format = find_tag(pEnumSpec->tags, CBC_TAG_FORMAT)) != NULL) { assert(pBI == NULL); sv = unpack_format(aPACKARGS, format, size, 0); goto handle_unpack_hook; } SET_BYTEORDER(pEnumSpec->tags); } CHECK_BUFFER(size); iv.string = NULL; fetch_integer(size, pEnumSpec->tflags & T_SIGNED, SF_INT_ARGS(pBI), &iv); if (pEnumSpec->tflags & T_SIGNED) /* TODO: handle (un)/signed correctly */ { #if ARCH_NATIVE_64_BIT_INTEGER value = iv.value.s; #else value = (i_32) iv.value.s.l; #endif } else { #if ARCH_NATIVE_64_BIT_INTEGER value = iv.value.u; #else value = iv.value.u.l; #endif } if (PACK->THIS->enumType == ET_INTEGER) sv = newSViv(value); else { ListIterator ei; LL_foreach(pEnum, ei, pEnumSpec->enumerators) if(pEnum->value.iv == value) break; if (pEnumSpec->tflags & T_UNSAFE_VAL) { if (pEnumSpec->identifier[0] != '\0') WARN((aTHX_ "Enumeration '%s' contains unsafe values", pEnumSpec->identifier)); else WARN((aTHX_ "Enumeration contains unsafe values")); } switch (PACK->THIS->enumType) { case ET_BOTH: sv = newSViv(value); if (pEnum) sv_setpv(sv, pEnum->identifier); else sv_setpvf(sv, "", value); SvIOK_on(sv); break; case ET_STRING: if (pEnum) sv = newSVpv(pEnum->identifier, 0); else sv = newSVpvf("", value); break; default: fatal("Invalid enum type (%d) in unpack_enum()!", PACK->THIS->enumType); break; } } RESTORE_BYTEORDER; handle_unpack_hook: if (hooks) { dTHR; dXCPT; XCPT_TRY_START { sv = hook_call(aTHX_ PACK->self, "enum ", pEnumSpec->identifier, hooks->any, HOOKID_unpack, sv, 0); } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing sv @ %p in unpack_enum:%d", sv, __LINE__)); SvREFCNT_dec(sv); XCPT_RETHROW; } } return sv; } /******************************************************************************* * * ROUTINE: unpack_basic * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_basic(pPACKARGS, u_32 flags, const BitfieldInfo *pBI) { unsigned size; CT_DEBUG(MAIN, (XSCLASS "::unpack_basic(flags=0x%08lX, pBI=%p)", (unsigned long) flags, pBI)); CT_DEBUG(MAIN, ("buffer.pos=%lu, buffer.length=%lu", PACKPOS, PACKLEN)); size = load_size(PCONFIG, &flags, pBI); CHECK_BUFFER(size); if (flags & (T_FLOAT | T_DOUBLE)) { assert(pBI == NULL); return fetch_float_sv(aPACKARGS, size, flags); } else return fetch_int_sv(aPACKARGS, size, (flags & T_UNSIGNED) == 0, pBI); } /******************************************************************************* * * ROUTINE: unpack_format * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_format(pPACKARGS, const CtTag *format, unsigned size, u_32 flags) { SV *sv; CT_DEBUG(MAIN, (XSCLASS "::unpack_format(format->flags=0x%lX, size=%u, flags=0x%lX)", (unsigned long) format->flags, size, (unsigned long) flags)); if (PACKPOS + size > PACKLEN) return newSVpvn("", 0); if (flags & PACK_FLEXIBLE) { unsigned remain; assert(PACKPOS <= PACKLEN); remain = PACKLEN - PACKPOS; if (remain % size) remain -= remain % size; size = remain; } switch (format->flags) { case CBC_TAG_FORMAT_BINARY: sv = newSVpvn(pPACKBUF, size); break; case CBC_TAG_FORMAT_STRING: { unsigned n; const char *buf = pPACKBUF; for (n = 0; n < size; n++) if (buf[n] == '\0') break; sv = newSVpvn(pPACKBUF, n); } break; default: fatal("Unknown format (%d)", format->flags); } return sv; } /******************************************************************************* * * ROUTINE: unpack_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *unpack_type(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, const BitfieldInfo *pBI) { SV *rv = NULL; const CtTag *hooks = NULL; const CtTag *dimtag = NULL; int dim; dBYTEORDER; CT_DEBUG(MAIN, (XSCLASS "::unpack_type(pTS=%p, pDecl=%p, dimension=%d, pBI=%p)", pTS, pDecl, dimension, pBI)); if (pDecl && dimension == 0 && pDecl->tags) { const CtTag *format; hooks = find_tag(pDecl->tags, CBC_TAG_HOOKS); dimtag = find_tag(pDecl->tags, CBC_TAG_DIMENSION); if ((format = find_tag(pDecl->tags, CBC_TAG_FORMAT)) != NULL) { int size; u_32 flags = 0; assert(pBI == NULL); prepare_pack_format(aPACKARGS, pDecl, dimtag, &size, &flags); rv = unpack_format(aPACKARGS, format, size, flags); goto handle_unpack_hook; } SET_BYTEORDER(pDecl->tags); } assert(pDecl == NULL || pDecl->bitfield_flag == 0 || pBI != NULL); if (pDecl && pDecl->array_flag && dimension < (dim = LL_count(pDecl->ext.array))) { AV *a = newAV(); Value *v = (Value *) LL_get(pDecl->ext.array, dimension); long i, s, avail; unsigned long pos; int size = pDecl->item_size; dTHR; dXCPT; assert(size > 0); assert(pBI == NULL); XCPT_TRY_START { while (dim-- > dimension + 1) size *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; avail = ((PACKLEN - PACKPOS) + (size - 1)) / size; if (dimtag) { assert(dimension == 0); s = dimtag_eval(aTHX_ dimtag->any, avail, PACK->self, PACK->parent); } else if (v->flags & V_IS_UNDEF) { assert(dimension == 0); s = avail; } else { s = v->iv; } if (s < 0) { /* if we're unpacking a larger "thing" and run out of data, avail may become */ /* negative and we need to protect against creating negatively sized arrays */ s = 0; } av_extend(a, s - 1); pos = PACKPOS; for (i = 0; i < s; ++i) { PACKPOS = pos + i * size; av_store(a, i, unpack_type(aPACKARGS, pTS, pDecl, dimension + 1, NULL)); } } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing av @ %p in unpack_type:%d", a, __LINE__)); SvREFCNT_dec((SV *) a); XCPT_RETHROW; } rv = newRV_noinc((SV *) a); } else if (pDecl && pDecl->pointer_flag) { dTHR; dXCPT; assert(pBI == NULL); rv = unpack_pointer(aPACKARGS); XCPT_TRY_START { rv = hook_call_typespec(aTHX_ PACK->self, pTS, HOOKID_unpack_ptr, rv, 0); } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing rv @ %p in unpack_type:%d", rv, __LINE__)); SvREFCNT_dec(rv); XCPT_RETHROW; } } else if (pTS->tflags & T_TYPE) { Typedef *pTD = pTS->ptr; rv = unpack_type(aPACKARGS, pTD->pType, pTD->pDecl, 0, pBI); } else if (pTS->tflags & T_COMPOUND) { Struct *pStruct = pTS->ptr; assert(pBI == NULL); if (pStruct->declarations == NULL) { WARN_UNDEF_STRUCT(pStruct); rv = newSV(0); } else rv = unpack_struct(aPACKARGS, pTS->ptr, NULL); } else { CT_DEBUG(MAIN, ("GET '%s' @ %lu", pDecl ? pDecl->identifier : "", PACKPOS)); if (pTS->tflags & T_ENUM) rv = unpack_enum(aPACKARGS, pTS->ptr, pBI); else rv = unpack_basic(aPACKARGS, pTS->tflags, pBI); } assert(rv != NULL); RESTORE_BYTEORDER; handle_unpack_hook: if (hooks) { dTHR; dXCPT; assert(pDecl != NULL); XCPT_TRY_START { rv = hook_call(aTHX_ PACK->self, NULL, pDecl->identifier, hooks->any, HOOKID_unpack, rv, 0); } XCPT_TRY_END XCPT_CATCH { CT_DEBUG(MAIN, ("freeing rv @ %p in unpack_type:%d", rv, __LINE__)); SvREFCNT_dec(rv); XCPT_RETHROW; } } return rv; } /******************************************************************************* * * ROUTINE: hook_call_typespec * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *hook_call_typespec(pTHX_ SV *self, const TypeSpec *pTS, enum HookId hook_id, SV *in, int mortal) { const char *id, *pre; CtTagList tags = NULL; if (pTS->tflags & T_TYPE) { const Typedef *p = pTS->ptr; id = p->pDecl->identifier; tags = p->pDecl->tags; pre = NULL; } else if (pTS->tflags & T_COMPOUND) { const Struct *p = pTS->ptr; id = p->identifier; tags = p->tags; pre = pTS->tflags & T_STRUCT ? "struct " : "union "; } else if (pTS->tflags & T_ENUM) { const EnumSpecifier *p = pTS->ptr; id = p->identifier; tags = p->tags; pre = "enum "; } if (tags) { const CtTag *hooks = find_tag(tags, CBC_TAG_HOOKS); if (hooks) return hook_call(aTHX_ self, pre, id, hooks->any, hook_id, in, mortal); } return in; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: pk_create * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ PackHandle pk_create(const CBC *THIS, SV *self) { PackHandle hdl; Newz(0, hdl, 1, struct PackInfo); hdl->THIS = THIS; hdl->self = self; hdl->parent = NULL; return hdl; } /******************************************************************************* * * ROUTINE: pk_set_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_set_type(PackHandle hdl, const char *type) { IDLIST_INIT(&hdl->idl); IDLIST_PUSH(&hdl->idl, ID); IDLIST_SET_ID(&hdl->idl, type); } /******************************************************************************* * * ROUTINE: pk_set_buffer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_set_buffer(PackHandle hdl, SV *bufsv, char *buffer, unsigned long buflen) { hdl->bufsv = bufsv; hdl->buf.buffer = buffer; hdl->buf.length = buflen; } /******************************************************************************* * * ROUTINE: pk_set_buffer_pos * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_set_buffer_pos(PackHandle hdl, unsigned long pos) { hdl->buf.pos = pos; } /******************************************************************************* * * ROUTINE: pk_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_delete(PackHandle hdl) { IDLIST_FREE(&hdl->idl); Safefree(hdl); } /******************************************************************************* * * ROUTINE: pk_pack * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pk_pack(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, SV *sv) { PACK->order = PCONFIG->layout.byte_order; pack_type(aPACKARGS, pTS, pDecl, dimension, NULL, sv); } /******************************************************************************* * * ROUTINE: pk_unpack * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *pk_unpack(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension) { PACK->order = PCONFIG->layout.byte_order; return unpack_type(aPACKARGS, pTS, pDecl, dimension, NULL); } Convert-Binary-C-0.76/cbc/pack.h0000644000175000001440000000421511550664614015033 0ustar mhxusers/******************************************************************************* * * HEADER: pack.h * ******************************************************************************** * * DESCRIPTION: C::B::C pack/unpack routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:15 +0200 $ * $Revision: 14 $ * $Source: /cbc/pack.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_PACK_H #define _CBC_PACK_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/cttype.h" #include "cbc/cbc.h" /*===== DEFINES ==============================================================*/ /* values passed between all packing/unpacking routines */ #define pPACKARGS pTHX_ PackHandle PACK #define aPACKARGS aTHX_ PACK /*===== TYPEDEFS =============================================================*/ typedef struct PackInfo * PackHandle; /*===== FUNCTION PROTOTYPES ==================================================*/ #define pk_create CBC_pk_create PackHandle pk_create(const CBC *THIS, SV *self); #define pk_set_type CBC_pk_set_type void pk_set_type(PackHandle hdl, const char *type); #define pk_set_buffer CBC_pk_set_buffer void pk_set_buffer(PackHandle hdl, SV *bufsv, char *buffer, unsigned long buflen); #define pk_set_buffer_pos CBC_pk_set_buffer_pos void pk_set_buffer_pos(PackHandle hdl, unsigned long pos); #define pk_delete CBC_pk_delete void pk_delete(PackHandle hdl); #define pk_pack CBC_pk_pack void pk_pack(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension, SV *sv); #define pk_unpack CBC_pk_unpack SV *pk_unpack(pPACKARGS, const TypeSpec *pTS, const Declarator *pDecl, int dimension); #endif Convert-Binary-C-0.76/cbc/dimension.c0000644000175000001440000004657211550664613016110 0ustar mhxusers/******************************************************************************* * * MODULE: dimension.c * ******************************************************************************** * * DESCRIPTION: C::B::C dimension tag * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:13 +0200 $ * $Revision: 10 $ * $Source: /cbc/dimension.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #define NO_XSLOCKS #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/hook.h" #include "cbc/util.h" #include "cbc/dimension.h" #include "cbc/type.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void dimtag_init(pTHX_ DimensionTag *dim); static void dimtag_fini(pTHX_ DimensionTag *dim); static void validate_member_expression(pTHX_ const MemberInfo *pmi, const char *member, const char *type); static long sv_to_dimension(pTHX_ SV *sv, const char *member); static long dimension_from_member(pTHX_ const char *member, HV *parent); static long dimension_from_hook(pTHX_ SingleHook *hook, SV *self, HV *parent); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: dimtag_init * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void dimtag_init(pTHX_ DimensionTag *dim) { assert(dim != NULL); switch (dim->type) { case DTT_MEMBER: { STRLEN len; const char *src = dim->u.member; assert(src != NULL); len = strlen(src); New(0, dim->u.member, len+1, char); strcpy(dim->u.member, src); } break; case DTT_HOOK: assert(dim->u.hook != NULL); dim->u.hook = single_hook_new(dim->u.hook); break; default: /* nothing to do */ break; } } /******************************************************************************* * * ROUTINE: dimtag_fini * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void dimtag_fini(pTHX_ DimensionTag *dim) { assert(dim != NULL); switch (dim->type) { case DTT_MEMBER: assert(dim->u.member != NULL); Safefree(dim->u.member); break; case DTT_HOOK: assert(dim->u.hook != NULL); single_hook_delete(dim->u.hook); break; default: break; } } /******************************************************************************* * * ROUTINE: validate_member_expression * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void validate_member_expression(pTHX_ const MemberInfo *pmi, const char *member, const char *type) { MemberInfo mi, mi2; const char *failed_type; assert(pmi != NULL); assert(member != NULL); if (pmi->parent == NULL) { Perl_croak(aTHX_ "Cannot use member expression '%s' as Dimension tag" " for '%s' when not within a compound type", member, type); } mi.type.ptr = pmi->parent; mi.type.tflags = ((Struct *) pmi->parent)->tflags; mi.pDecl = NULL; mi.level = 0; (void) get_member(aTHX_ &mi, member, &mi2, CBC_GM_ACCEPT_DOTLESS_MEMBER | CBC_GM_REJECT_OUT_OF_BOUNDS_INDEX | CBC_GM_REJECT_OFFSET); failed_type = check_allowed_types_string(&mi2, ALLOW_BASIC_TYPES); if (failed_type) { Perl_croak(aTHX_ "Cannot use %s in member '%s' to determine a dimension for '%s'", failed_type, member, type); } if (mi2.offset + (int)mi2.size > pmi->offset) { const char *where; if (mi2.offset == pmi->offset) where = "located at same offset as"; else if (mi2.offset < pmi->offset) where = "overlapping with"; else where = "located behind"; Perl_croak(aTHX_ "Cannot use member '%s' %s '%s' in layout" " to determine a dimension", member, where, type); } } /******************************************************************************* * * ROUTINE: sv_to_dimension * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static long sv_to_dimension(pTHX_ SV *sv, const char *member) { SV *warning; const char *value = NULL; assert(sv != NULL); SvGETMAGIC(sv); if (SvOK(sv) && !SvROK(sv)) { if (looks_like_number(sv)) { return SvIV(sv); } value = SvPV_nolen(sv); } warning = newSVpvn("", 0); if (value) sv_catpvf(warning, " ('%s')", value); if (member) sv_catpvf(warning, " in '%s'", member); WARN((aTHX_ "Cannot use %s%s as dimension", identify_sv(sv), SvPV_nolen(warning))); SvREFCNT_dec(warning); return 0; } /******************************************************************************* * * ROUTINE: dimension_from_member * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static long dimension_from_member(pTHX_ const char *member, HV *parent) { MemberExprWalker walker; int success = 1; SV *sv = NULL; dTHR; dXCPT; assert(member != NULL); if (parent == NULL) { WARN((aTHX_ "Missing parent to look up '%s'", member)); return 0; } CT_DEBUG(MAIN, ("trying to get dimension from member, walking \"%s\"", member)); walker = member_expr_walker_new(aTHX_ member, 0); XCPT_TRY_START { for (;;) { struct me_walk_info mei; member_expr_walker_walk(aTHX_ walker, &mei); if (mei.retval == MERV_END) { break; lookup_failed: success = 0; break; } switch (mei.retval) { case MERV_COMPOUND_MEMBER: { const char *name = mei.u.compound_member.name; HV *hv = parent; SV **psv; CT_DEBUG(MAIN, ("found compound member \"%s\"", name)); if (sv) { SV *hash; if (SvROK(sv) && SvTYPE(hash = SvRV(sv)) == SVt_PVHV) { hv = (HV *) hash; } else { WARN((aTHX_ "Expected a hash reference to look up member '%s'" " in '%s', not %s", name, member, identify_sv(sv))); goto lookup_failed; } } psv = hv_fetch(hv, name, mei.u.compound_member.name_length, 0); if (psv) { SvGETMAGIC(*psv); sv = *psv; } else { WARN((aTHX_ "Cannot find member '%s' in hash (in '%s')", name, member)); goto lookup_failed; } } break; case MERV_ARRAY_INDEX: { long last, index = mei.u.array_index; AV *av; SV *array; SV **psv; assert(sv != NULL); CT_DEBUG(MAIN, ("found array index \"%ld\"", index)); if (SvROK(sv) && SvTYPE(array = SvRV(sv)) == SVt_PVAV) { av = (AV *) array; } else { WARN((aTHX_ "Expected an array reference to look up index '%ld'" " in '%s', not %s", index, member, identify_sv(sv))); goto lookup_failed; } last = (long) av_len(av); if (index > last) { WARN((aTHX_ "Cannot lookup index '%ld' in array of size" " '%ld' (in '%s')", index, last + 1, member)); goto lookup_failed; } psv = av_fetch(av, index, 0); if (psv == NULL) { fatal("cannot find index '%ld' in array of size '%ld' (in '%s')", index, last + 1, member); } SvGETMAGIC(*psv); sv = *psv; } break; default: fatal("unexpected return value (%d) in dimension_from_member('%s')", (int) mei.retval, member); break; } } } XCPT_TRY_END member_expr_walker_delete(aTHX_ walker); XCPT_CATCH { XCPT_RETHROW; } if (success) { assert(sv != NULL); return sv_to_dimension(aTHX_ sv, member); } return 0; } /******************************************************************************* * * ROUTINE: dimension_from_hook * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static long dimension_from_hook(pTHX_ SingleHook *hook, SV *self, HV *parent) { dTHR; dXCPT; SV *sv, *in; long rv; assert(hook != NULL); assert(self != NULL); in = parent ? newRV_inc((SV *) parent) : NULL; sv = NULL; XCPT_TRY_START { sv = single_hook_call(aTHX_ self, "dimension", NULL, NULL, hook, in, 0); } XCPT_TRY_END XCPT_CATCH { if (parent) { CT_DEBUG(MAIN, ("freeing sv @ %p in dimension_from_hook:%d", in, __LINE__)); SvREFCNT_dec(in); } XCPT_RETHROW; } assert(sv != NULL); rv = sv_to_dimension(aTHX_ sv, NULL); SvREFCNT_dec(sv); return rv; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: dimtag_verify * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void dimtag_verify(pTHX_ const MemberInfo *pmi, const char *type) { const char *failed_type; assert(pmi != NULL); assert(type != NULL); assert(pmi->level == 0); failed_type = check_allowed_types_string(pmi, ALLOW_ARRAYS); if (failed_type) { Perl_croak(aTHX_ "Cannot use Dimension tag on %s '%s'", failed_type, type); } } /******************************************************************************* * * ROUTINE: dimtag_new * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ DimensionTag *dimtag_new(const DimensionTag *src) { dTHX; DimensionTag *dst; New(0, dst, 1, DimensionTag); if (src) { *dst = *src; dimtag_init(aTHX_ dst); } else { dst->type = DTT_NONE; } return dst; } /******************************************************************************* * * ROUTINE: dimtag_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void dimtag_delete(DimensionTag *dim) { dTHX; assert(dim != NULL); dimtag_fini(aTHX_ dim); Safefree(dim); } /******************************************************************************* * * ROUTINE: dimtag_parse * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int dimtag_parse(pTHX_ const MemberInfo *pmi, const char *type, SV *tag, DimensionTag *dim) { enum dimension_tag_type tag_type = DTT_NONE; assert(type != NULL); assert(tag != NULL); assert(dim != NULL); assert(SvOK(tag)); if (SvROK(tag)) { SV *sv = SvRV(tag); switch (SvTYPE(sv)) { case SVt_PVCV: case SVt_PVAV: tag_type = DTT_HOOK; break; default: break; } } else { if (SvPOK(tag)) { STRLEN len; const char *str = SvPV(tag, len); if (len > 0) { if (strEQ(str, "*")) { tag_type = DTT_FLEXIBLE; } else if (looks_like_number(tag)) { tag_type = DTT_FIXED; } else { tag_type = DTT_MEMBER; } } } else if (SvIOK(tag)) { tag_type = DTT_FIXED; } } switch (tag_type) { case DTT_NONE: Perl_croak(aTHX_ "Invalid Dimension tag for '%s'", type); break; case DTT_FLEXIBLE: break; case DTT_FIXED: { IV value = SvIV(tag); if (value < 0) Perl_croak(aTHX_ "Cannot use negative value %" IVdf " in Dimension" " tag for '%s'", value, type); dim->u.fixed = value; } break; case DTT_MEMBER: { STRLEN len; const char *src = SvPV(tag, len); validate_member_expression(aTHX_ pmi, src, type); New(0, dim->u.member, len+1, char); Copy(src, dim->u.member, len, char); dim->u.member[len] = '\0'; } break; case DTT_HOOK: { SingleHook newhook; U32 allowed = SHF_ALLOW_ARG_SELF | SHF_ALLOW_ARG_HOOK; if (pmi->parent) allowed |= SHF_ALLOW_ARG_DATA; single_hook_fill(aTHX_ "Dimension", type, &newhook, tag, allowed); dim->u.hook = single_hook_new(&newhook); } break; } dim->type = tag_type; return 1; } /******************************************************************************* * * ROUTINE: dimtag_update * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void dimtag_update(DimensionTag *dst, const DimensionTag *src) { dTHX; assert(dst != NULL); assert(src != NULL); dimtag_fini(aTHX_ dst); *dst = *src; } /******************************************************************************* * * ROUTINE: dimtag_get * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *dimtag_get(pTHX_ const DimensionTag *dim) { SV *sv; assert(dim != NULL); switch (dim->type) { case DTT_FLEXIBLE: sv = newSVpvn("*", 1); break; case DTT_FIXED: sv = newSViv(dim->u.fixed); break; case DTT_MEMBER: sv = newSVpv(dim->u.member, 0); break; case DTT_HOOK: sv = get_single_hook(aTHX_ dim->u.hook); break; case DTT_NONE: fatal("Invalid dimension tag type in dimtag_get()"); break; default: fatal("Unknown dimension tag type (%d) in dimtag_get()", (int) dim->type); break; } return sv; } /******************************************************************************* * * ROUTINE: dimtag_is_flexible * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int dimtag_is_flexible(pTHX_ const DimensionTag *dim) { assert(dim != NULL); return dim->type == DTT_FLEXIBLE; } /******************************************************************************* * * ROUTINE: dimtag_eval * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ long dimtag_eval(pTHX_ const DimensionTag *dim, long avail, SV *self, HV *parent) { assert(dim != NULL); assert(self != NULL); CT_DEBUG(MAIN, ("dimtag_eval(%p(%d), %ld, %p, %p)", dim, (int)dim->type, avail, self, parent)); switch (dim->type) { case DTT_FLEXIBLE: return avail; case DTT_FIXED: return (long) dim->u.fixed; case DTT_MEMBER: return dimension_from_member(aTHX_ dim->u.member, parent); case DTT_HOOK: return dimension_from_hook(aTHX_ dim->u.hook, self, parent); case DTT_NONE: fatal("Invalid dimension tag type in dimtag_get()"); break; default: fatal("Unknown dimension tag type (%d) in dimtag_get()", (int) dim->type); break; } assert(0); return 0; } Convert-Binary-C-0.76/cbc/dimension.h0000644000175000001440000000451711550664613016106 0ustar mhxusers/******************************************************************************* * * HEADER: dimension.h * ******************************************************************************** * * DESCRIPTION: C::B::C dimension tag * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:13 +0200 $ * $Revision: 6 $ * $Source: /cbc/dimension.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_DIMENSION_H #define _CBC_DIMENSION_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/member.h" #include "cbc/hook.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct dimension_tag { enum dimension_tag_type { DTT_NONE, DTT_FLEXIBLE, DTT_FIXED, DTT_MEMBER, DTT_HOOK } type; union { IV fixed; char *member; SingleHook *hook; } u; } DimensionTag; /*===== FUNCTION PROTOTYPES ==================================================*/ #define dimtag_verify CBC_dimtag_verify void dimtag_verify(pTHX_ const MemberInfo *pmi, const char *type); #define dimtag_new CBC_dimtag_new DimensionTag *dimtag_new(const DimensionTag *src); #define dimtag_delete CBC_dimtag_delete void dimtag_delete(DimensionTag *dim); #define dimtag_parse CBC_dimtag_parse int dimtag_parse(pTHX_ const MemberInfo *pmi, const char *type, SV *tag, DimensionTag *dim); #define dimtag_update CBC_dimtag_update void dimtag_update(DimensionTag *dst, const DimensionTag *src); #define dimtag_get CBC_dimtag_get SV *dimtag_get(pTHX_ const DimensionTag *dim); #define dimtag_is_flexible CBC_dimtag_is_flexible int dimtag_is_flexible(pTHX_ const DimensionTag *dim); #define dimtag_eval CBC_dimtag_eval long dimtag_eval(pTHX_ const DimensionTag *dim, long avail, SV *self, HV *parent); #endif Convert-Binary-C-0.76/cbc/typeinfo.c0000644000175000001440000002462711550664614015756 0ustar mhxusers/******************************************************************************* * * MODULE: typeinfo.c * ******************************************************************************** * * DESCRIPTION: C::B::C type information * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:16 +0200 $ * $Revision: 16 $ * $Source: /cbc/typeinfo.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" #include "cbc/typeinfo.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static SV *get_type_spec_def(pTHX_ const CParseConfig *pCfg, const TypeSpec *pTSpec); static SV *get_enumerators_def(pTHX_ LinkedList enumerators); static SV *get_declarators_def(pTHX_ LinkedList declarators); static SV *get_struct_declarations_def(pTHX_ const CParseConfig *pCfg, LinkedList declarations); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_type_spec_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *get_type_spec_def(pTHX_ const CParseConfig *pCfg, const TypeSpec *pTSpec) { u_32 flags = pTSpec->tflags; if (flags & T_TYPE) { Typedef *pTypedef= (Typedef *) pTSpec->ptr; if (pTypedef && pTypedef->pDecl->identifier[0]) return newSVpv(pTypedef->pDecl->identifier, 0); else return NEW_SV_PV_CONST(""); } if (flags & T_ENUM) { EnumSpecifier *pEnumSpec = (EnumSpecifier *) pTSpec->ptr; if (pEnumSpec) { if (pEnumSpec->identifier[0]) return newSVpvf("enum %s", pEnumSpec->identifier); else return get_enum_spec_def(aTHX_ pCfg, pEnumSpec); } else return NEW_SV_PV_CONST("enum "); } if (flags & T_COMPOUND) { Struct *pStruct = (Struct *) pTSpec->ptr; const char *type = flags & T_UNION ? "union" : "struct"; if (pStruct) { if (pStruct->identifier[0]) return newSVpvf("%s %s", type, pStruct->identifier); else return get_struct_spec_def(aTHX_ pCfg, pStruct); } else return newSVpvf("%s ", type); } { SV *sv = NULL; get_basic_type_spec_string(aTHX_ &sv, flags); return sv ? sv : NEW_SV_PV_CONST(""); } } /******************************************************************************* * * ROUTINE: get_enumerators_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *get_enumerators_def(pTHX_ LinkedList enumerators) { ListIterator ei; Enumerator *pEnum; HV *hv = newHV(); LL_foreach(pEnum, ei, enumerators) { SV *val = newSViv(pEnum->value.iv); if (hv_store(hv, pEnum->identifier, CTT_IDLEN(pEnum), val, 0) == NULL) SvREFCNT_dec(val); } return newRV_noinc((SV *) hv); } /******************************************************************************* * * ROUTINE: get_declarators_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *get_declarators_def(pTHX_ LinkedList declarators) { ListIterator di; Declarator *pDecl; AV *av = newAV(); LL_foreach(pDecl, di, declarators) { HV *hv = newHV(); Value *pValue; if (pDecl->bitfield_flag) { HV_STORE_CONST(hv, "declarator", newSVpvf("%s:%d", pDecl->identifier[0] != '\0' ? pDecl->identifier : "", pDecl->ext.bitfield.bits)); } else { SV *sv = newSVpvf("%s%s", pDecl->pointer_flag ? "*" : "", pDecl->identifier); if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { if (pValue->flags & V_IS_UNDEF) sv_catpvn(sv, "[]", 2); else sv_catpvf(sv, "[%ld]", pValue->iv); } } HV_STORE_CONST(hv, "declarator", sv); HV_STORE_CONST(hv, "offset", newSViv(pDecl->offset)); HV_STORE_CONST(hv, "size", newSViv(pDecl->size)); } av_push(av, newRV_noinc((SV *) hv)); } return newRV_noinc((SV *) av); } /******************************************************************************* * * ROUTINE: get_struct_declarations_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static SV *get_struct_declarations_def(pTHX_ const CParseConfig *pCfg, LinkedList declarations) { ListIterator sdi; StructDeclaration *pStructDecl; AV *av = newAV(); LL_foreach(pStructDecl, sdi, declarations) { HV *hv = newHV(); HV_STORE_CONST(hv, "type", get_type_spec_def(aTHX_ pCfg, &pStructDecl->type)); if (pStructDecl->declarators) HV_STORE_CONST(hv, "declarators", get_declarators_def(aTHX_ pStructDecl->declarators)); av_push(av, newRV_noinc((SV *) hv)); } return newRV_noinc((SV *) av); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_typedef_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_typedef_def(pTHX_ const CParseConfig *pCfg, const Typedef *pTypedef) { Declarator *pDecl = pTypedef->pDecl; Value *pValue; HV *hv = newHV(); SV *sv = newSVpvf("%s%s", pDecl->pointer_flag ? "*" : "", pDecl->identifier); if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { if (pValue->flags & V_IS_UNDEF) sv_catpvn(sv, "[]", 2); else sv_catpvf(sv, "[%ld]", pValue->iv); } } HV_STORE_CONST(hv, "declarator", sv); HV_STORE_CONST(hv, "type", get_type_spec_def(aTHX_ pCfg, pTypedef->pType)); return newRV_noinc((SV *) hv); } /******************************************************************************* * * ROUTINE: get_enum_spec_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_enum_spec_def(pTHX_ const CParseConfig *pCfg, const EnumSpecifier *pEnumSpec) { HV *hv = newHV(); if (pEnumSpec->identifier[0]) HV_STORE_CONST(hv, "identifier", newSVpv(pEnumSpec->identifier, 0)); if (pEnumSpec->enumerators) { HV_STORE_CONST(hv, "sign", newSViv(pEnumSpec->tflags & T_SIGNED ? 1 : 0)); HV_STORE_CONST(hv, "size", newSViv(GET_ENUM_SIZE(pCfg, pEnumSpec))); HV_STORE_CONST(hv, "enumerators", get_enumerators_def(aTHX_ pEnumSpec->enumerators)); } HV_STORE_CONST(hv, "context", newSVpvf("%s(%lu)", pEnumSpec->context.pFI->name, pEnumSpec->context.line)); return newRV_noinc((SV *) hv); } /******************************************************************************* * * ROUTINE: get_struct_spec_def * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_struct_spec_def(pTHX_ const CParseConfig *pCfg, const Struct *pStruct) { HV *hv = newHV(); SV *type; if (pStruct->identifier[0]) HV_STORE_CONST(hv, "identifier", newSVpv(pStruct->identifier, 0)); if (pStruct->tflags & T_UNION) type = NEW_SV_PV_CONST("union"); else type = NEW_SV_PV_CONST("struct"); HV_STORE_CONST(hv, "type", type); if (pStruct->declarations) { HV_STORE_CONST(hv, "size", newSViv(pStruct->size)); HV_STORE_CONST(hv, "align", newSViv(pStruct->align)); HV_STORE_CONST(hv, "pack", newSViv(pStruct->pack)); HV_STORE_CONST(hv, "declarations", get_struct_declarations_def(aTHX_ pCfg, pStruct->declarations)); } HV_STORE_CONST(hv, "context", newSVpvf("%s(%lu)", pStruct->context.pFI->name, pStruct->context.line)); return newRV_noinc((SV *) hv); } Convert-Binary-C-0.76/cbc/typeinfo.h0000644000175000001440000000326211550664614015753 0ustar mhxusers/******************************************************************************* * * HEADER: typeinfo.h * ******************************************************************************** * * DESCRIPTION: C::B::C type information * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:17 +0200 $ * $Revision: 8 $ * $Source: /cbc/typeinfo.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_TYPEINFO_H #define _CBC_TYPEINFO_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctparse.h" #include "ctlib/cttype.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_typedef_def CBC_get_typedef_def SV *get_typedef_def(pTHX_ const CParseConfig *pCfg, const Typedef *pTypedef); #define get_enum_spec_def CBC_get_enum_spec_def SV *get_enum_spec_def(pTHX_ const CParseConfig *pCfg, const EnumSpecifier *pEnumSpec); #define get_struct_spec_def CBC_get_struct_spec_def SV *get_struct_spec_def(pTHX_ const CParseConfig *pCfg, const Struct *pStruct); #endif Convert-Binary-C-0.76/cbc/type.c0000644000175000001440000003370311550664614015075 0ustar mhxusers/******************************************************************************* * * MODULE: type.c * ******************************************************************************** * * DESCRIPTION: C::B::C type names * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:16 +0200 $ * $Revision: 27 $ * $Source: /cbc/type.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/basic.h" #include "cbc/cbc.h" #include "cbc/type.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void *get_type_pointer(CBC *THIS, const char *name, const char **pEOS); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_type_pointer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void *get_type_pointer(CBC *THIS, const char *name, const char **pEOS) { const char *c = name; void *ptr = NULL; int len = 0; enum { S_UNKNOWN, S_STRUCT, S_UNION, S_ENUM } type = S_UNKNOWN; if (!THIS->cpi.available) return NULL; while (isSPACE(*c)) c++; if (*c == '\0') return NULL; switch (c[0]) { case 's': if (c[1] == 't' && c[2] == 'r' && c[3] == 'u' && c[4] == 'c' && c[5] == 't' && isSPACE(c[6])) { type = S_STRUCT; c += 6; } break; case 'u': if (c[1] == 'n' && c[2] == 'i' && c[3] == 'o' && c[4] == 'n' && isSPACE(c[5])) { type = S_UNION; c += 5; } break; case 'e': if (c[1] == 'n' && c[2] == 'u' && c[3] == 'm' && isSPACE(c[4])) { type = S_ENUM; c += 4; } break; default: break; } while (isSPACE(*c)) c++; while (c[len] == '_' || isALNUM(c[len])) len++; if (len == 0) return NULL; switch (type) { case S_STRUCT: case S_UNION: { Struct *pStruct = HT_get(THIS->cpi.htStructs, c, len, 0); ptr = (void *) (pStruct && (pStruct->tflags & (type == S_STRUCT ? T_STRUCT : T_UNION)) ? pStruct : NULL); } break; case S_ENUM: ptr = HT_get(THIS->cpi.htEnums, c, len, 0); break; default: if ((ptr = HT_get(THIS->cpi.htTypedefs, c, len, 0)) == NULL) if ((ptr = HT_get(THIS->cpi.htStructs, c, len, 0)) == NULL) ptr = HT_get(THIS->cpi.htEnums, c, len, 0); break; } if (pEOS) { c += len; while (isSPACE(*c)) c++; *pEOS = c; } return ptr; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_member_info * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_member_info(pTHX_ CBC *THIS, const char *name, MemberInfo *pMI, unsigned gmi_flags) { const int do_calc = (gmi_flags & CBC_GMI_NO_CALC) == 0; const char *member; MemberInfo mi; if (get_type_spec(THIS, name, &member, &mi.type) == 0) return 0; if (pMI) { pMI->flags = 0; pMI->parent = NULL; if (member && *member) { mi.pDecl = NULL; mi.level = 0; (void) get_member(aTHX_ &mi, member, pMI, do_calc ? 0 : CBC_GM_NO_OFFSET_SIZE_CALC); } else if (mi.type.ptr == NULL) { Declarator *pDecl = basic_types_get_declarator(THIS->basic, mi.type.tflags); if (pDecl == NULL) { SV *str = NULL; get_basic_type_spec_string(aTHX_ &str, mi.type.tflags); sv_2mortal(str); Perl_croak(aTHX_ "Unsupported basic type '%s'", SvPV_nolen(str)); } if (do_calc && pDecl->size < 0) (void) THIS->cfg.get_type_info(&THIS->cfg.layout, &mi.type, NULL, "si", &pDecl->size, &pDecl->item_size); pMI->pDecl = pDecl; pMI->type = mi.type; pMI->flags = 0; pMI->level = 0; pMI->offset = 0; pMI->size = do_calc ? pDecl->size : 0; } else { void *ptr = mi.type.ptr; /* TODO: improve this... */ switch (GET_CTYPE(ptr)) { case TYP_TYPEDEF: { /* TODO: get rid of get_type_info, add flags to size */ ErrorGTI err; err = THIS->cfg.get_type_info(&THIS->cfg.layout, ((Typedef *) ptr)->pType, ((Typedef *) ptr)->pDecl, "sf", &pMI->size, &pMI->flags); if (err != GTI_NO_ERROR) croak_gti(aTHX_ err, name, 0); } break; case TYP_STRUCT: if (((Struct *) ptr)->declarations == NULL) CROAK_UNDEF_STRUCT((Struct *) ptr); pMI->size = ((Struct *) ptr)->size; pMI->flags = ((Struct *) ptr)->tflags & (T_HASBITFIELD | T_UNSAFE_VAL); break; case TYP_ENUM: pMI->size = GET_ENUM_SIZE(&THIS->cfg, (EnumSpecifier *) ptr); break; default: fatal("get_type_spec returned an invalid type (%d) in " "get_member_info( '%s' )", GET_CTYPE(ptr), name); break; } if (!do_calc) { pMI->size = 0; } pMI->type = mi.type; pMI->pDecl = NULL; pMI->level = 0; pMI->offset = 0; } } return 1; } /******************************************************************************* * * ROUTINE: get_type_spec * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_type_spec(CBC *THIS, const char *name, const char **pEOS, TypeSpec *pTS) { void *ptr = get_type_pointer(THIS, name, pEOS); if (ptr == NULL) { if (pEOS) *pEOS = NULL; return get_basic_type_spec(name, pTS); } switch (GET_CTYPE(ptr)) { case TYP_TYPEDEF: pTS->tflags = T_TYPE; break; case TYP_STRUCT: pTS->tflags = ((Struct *) ptr)->tflags; break; case TYP_ENUM: pTS->tflags = T_ENUM; break; default: fatal("Invalid type (%d) in get_type_spec( '%s' )", GET_CTYPE(ptr), name); break; } pTS->ptr = ptr; return 1; } /******************************************************************************* * * ROUTINE: get_type_name_string * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_type_name_string(pTHX_ const MemberInfo *pMI) { SV *sv; if (pMI == NULL) fatal("get_type_name_string() called with NULL pointer"); if (pMI->type.ptr == NULL) { sv = NULL; get_basic_type_spec_string(aTHX_ &sv, pMI->type.tflags); } else { switch (GET_CTYPE(pMI->type.ptr)) { case TYP_TYPEDEF: sv = newSVpv(((Typedef *) pMI->type.ptr)->pDecl->identifier, 0); break; case TYP_STRUCT: { Struct *pS = (Struct *) pMI->type.ptr; sv = pS->identifier[0] == '\0' ? newSVpv(pS->tflags & T_STRUCT ? "struct" : "union", 0) : newSVpvf("%s %s", pS->tflags & T_STRUCT ? "struct" : "union", pS->identifier); } break; case TYP_ENUM: { EnumSpecifier *pE = (EnumSpecifier *) pMI->type.ptr; sv = pE->identifier[0] == '\0' ? newSVpvn("enum", 4) : newSVpvf("enum %s", pE->identifier); } break; default: fatal("GET_CTYPE() returned an invalid type (%d) " "in get_type_name_string()", GET_CTYPE(pMI->type.ptr)); break; } } if (pMI->pDecl != NULL) { if (pMI->pDecl->bitfield_flag) sv_catpvf(sv, " :%d", pMI->pDecl->ext.bitfield.bits); else { if (pMI->pDecl->pointer_flag) sv_catpv(sv, " *"); if (pMI->pDecl->array_flag) { int level = pMI->level; int count = LL_count(pMI->pDecl->ext.array); if (level < count) { sv_catpv(sv, " "); while (level < count) { Value *pValue = LL_get(pMI->pDecl->ext.array, level); if (pValue->flags & V_IS_UNDEF) sv_catpvn(sv, "[]", 2); else sv_catpvf(sv, "[%ld]", pValue->iv); level++; } } } } } return sv; } /******************************************************************************* * * ROUTINE: is_typedef_defined * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int is_typedef_defined(Typedef *pTypedef) { if (pTypedef->pDecl->pointer_flag) return 1; while (pTypedef->pType->tflags & T_TYPE) { pTypedef = (Typedef *) pTypedef->pType->ptr; if (pTypedef->pDecl->pointer_flag) return 1; } if (pTypedef->pType->tflags & T_COMPOUND) return ((Struct*) pTypedef->pType->ptr)->declarations != NULL; if (pTypedef->pType->tflags & T_ENUM) return ((EnumSpecifier*) pTypedef->pType->ptr)->enumerators != NULL; return 1; } /******************************************************************************* * * ROUTINE: check_allowed_types_string * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define CHECK_ALLOWED(flag, string) \ STMT_START { \ if ((allowed_types & ALLOW_ ## flag) == 0) \ return string; \ return NULL; \ } STMT_END const char *check_allowed_types_string(const MemberInfo *pMI, U32 allowed_types) { const Declarator *pDecl = pMI->pDecl; const TypeSpec *pType = &pMI->type; int level = 0; if (pType->tflags & T_TYPE && (pDecl == NULL || (!pDecl->pointer_flag && !pDecl->array_flag))) { do { const Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } while (!pDecl->pointer_flag && !pDecl->array_flag && pType->tflags & T_TYPE); } else level = pMI->level; if (pDecl != NULL) { if (pDecl->array_flag && level < LL_count(pDecl->ext.array)) CHECK_ALLOWED(ARRAYS, "an array type"); if (pDecl->pointer_flag) CHECK_ALLOWED(POINTERS, "a pointer type"); } if (pType->ptr == NULL) CHECK_ALLOWED(BASIC_TYPES, "a basic type"); if (pType->tflags & T_UNION) CHECK_ALLOWED(UNIONS, "a union"); if (pType->tflags & T_STRUCT) CHECK_ALLOWED(STRUCTS, "a struct"); if (pType->tflags & T_ENUM) CHECK_ALLOWED(ENUMS, "an enum"); return NULL; } /******************************************************************************* * * ROUTINE: check_allowed_types * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void check_allowed_types(pTHX_ const MemberInfo *pMI, const char *method, U32 allowed_types) { const char *failed_type = check_allowed_types_string(pMI, allowed_types); if (failed_type) Perl_croak(aTHX_ "Cannot use %s on %s", method, failed_type); } Convert-Binary-C-0.76/cbc/type.h0000644000175000001440000000444411550664614015102 0ustar mhxusers/******************************************************************************* * * HEADER: type.h * ******************************************************************************** * * DESCRIPTION: C::B::C type names * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:16 +0200 $ * $Revision: 12 $ * $Source: /cbc/type.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_TYPE_H #define _CBC_TYPE_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/cttype.h" #include "cbc/cbc.h" #include "cbc/member.h" /*===== DEFINES ==============================================================*/ #define ALLOW_UNIONS 0x00000001 #define ALLOW_STRUCTS 0x00000002 #define ALLOW_ENUMS 0x00000004 #define ALLOW_POINTERS 0x00000008 #define ALLOW_ARRAYS 0x00000010 #define ALLOW_BASIC_TYPES 0x00000020 #define CBC_GMI_NO_CALC 0x1 /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_member_info CBC_get_member_info int get_member_info(pTHX_ CBC *THIS, const char *name, MemberInfo *pMI, unsigned gmi_flags); #define get_type_spec CBC_get_type_spec int get_type_spec(CBC *THIS, const char *name, const char **pEOS, TypeSpec *pTS); #define get_type_name_string CBC_get_type_name_string SV *get_type_name_string(pTHX_ const MemberInfo *pMI); #define is_typedef_defined CBC_is_typedef_defined int is_typedef_defined(Typedef *pTypedef); #define check_allowed_types_string CBC_check_allowed_types_string const char *check_allowed_types_string(const MemberInfo *pMI, U32 allowed_types); #define check_allowed_types CBC_check_allowed_types void check_allowed_types(pTHX_ const MemberInfo *pMI, const char *method, U32 allowed_types); #endif Convert-Binary-C-0.76/cbc/object.c0000644000175000001440000001631311550664613015357 0ustar mhxusers/******************************************************************************* * * MODULE: object.c * ******************************************************************************** * * DESCRIPTION: C::B::C object * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:15 +0200 $ * $Revision: 18 $ * $Source: /cbc/object.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "util/hash.h" #include "util/list.h" #include "ctlib/ctparse.h" #include "cbc/basic.h" #include "cbc/cbc.h" #include "cbc/object.h" #include "cbc/hook.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: cbc_new * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CBC *cbc_new(pTHX) { SV *sv; CBC *THIS; Newz(0, THIS, 1, CBC); sv = newSViv(PTR2IV(THIS)); SvREADONLY_on(sv); THIS->hv = newHV(); if (hv_store(THIS->hv, "", 0, sv, 0) == NULL) fatal("Couldn't store THIS into object."); THIS->enumType = CBC_DEFAULT_ENUMTYPE; THIS->ixhash = NULL; THIS->basic = basic_types_new(); THIS->cfg.layout.ptr_size = CBC_DEFAULT_PTR_SIZE; THIS->cfg.layout.enum_size = CBC_DEFAULT_ENUM_SIZE; THIS->cfg.layout.int_size = CBC_DEFAULT_INT_SIZE; THIS->cfg.layout.char_size = CBC_DEFAULT_CHAR_SIZE; THIS->cfg.layout.short_size = CBC_DEFAULT_SHORT_SIZE; THIS->cfg.layout.long_size = CBC_DEFAULT_LONG_SIZE; THIS->cfg.layout.long_long_size = CBC_DEFAULT_LONG_LONG_SIZE; THIS->cfg.layout.float_size = CBC_DEFAULT_FLOAT_SIZE; THIS->cfg.layout.double_size = CBC_DEFAULT_DOUBLE_SIZE; THIS->cfg.layout.long_double_size = CBC_DEFAULT_LONG_DOUBLE_SIZE; THIS->cfg.layout.alignment = CBC_DEFAULT_ALIGNMENT; THIS->cfg.layout.compound_alignment = CBC_DEFAULT_COMPOUND_ALIGNMENT; THIS->cfg.layout.byte_order = CBC_DEFAULT_BYTEORDER; THIS->cfg.layout.bflayouter = bl_create("Generic"); THIS->cfg.get_type_info = get_type_info_generic; THIS->cfg.layout_compound = layout_compound_generic; THIS->cfg.includes = LL_new(); THIS->cfg.defines = LL_new(); THIS->cfg.assertions = LL_new(); THIS->cfg.disabled_keywords = LL_new(); THIS->cfg.keyword_map = HT_new(1); THIS->cfg.keywords = HAS_ALL_KEYWORDS; THIS->cfg.has_cpp_comments = 1; THIS->cfg.has_macro_vaargs = 1; THIS->cfg.has_std_c = 1; THIS->cfg.has_std_c_hosted = 1; THIS->cfg.is_std_c_hosted = 1; THIS->cfg.std_c_version = 199901L; init_parse_info(&THIS->cpi); return THIS; } /******************************************************************************* * * ROUTINE: cbc_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void cbc_delete(pTHX_ CBC *THIS) { free_parse_info(&THIS->cpi); LL_destroy(THIS->cfg.includes, (LLDestroyFunc) string_delete); LL_destroy(THIS->cfg.defines, (LLDestroyFunc) string_delete); LL_destroy(THIS->cfg.assertions, (LLDestroyFunc) string_delete); LL_destroy(THIS->cfg.disabled_keywords, (LLDestroyFunc) string_delete); basic_types_delete(THIS->basic); HT_destroy(THIS->cfg.keyword_map, NULL); THIS->cfg.layout.bflayouter->m->destroy(THIS->cfg.layout.bflayouter); Safefree(THIS); } /******************************************************************************* * * ROUTINE: cbc_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CBC *cbc_clone(pTHX_ const CBC *THIS) { SV *sv; CBC *clone; Newz(0, clone, 1, CBC); Copy(THIS, clone, 1, CBC); clone->cfg.includes = clone_string_list(THIS->cfg.includes); clone->cfg.defines = clone_string_list(THIS->cfg.defines); clone->cfg.assertions = clone_string_list(THIS->cfg.assertions); clone->cfg.disabled_keywords = clone_string_list(THIS->cfg.disabled_keywords); clone->basic = basic_types_clone(THIS->basic); clone->cfg.keyword_map = HT_clone(THIS->cfg.keyword_map, NULL); clone->cfg.layout.bflayouter = THIS->cfg.layout.bflayouter->m->clone(THIS->cfg.layout.bflayouter); init_parse_info(&clone->cpi); clone_parse_info(&clone->cpi, &THIS->cpi); sv = newSViv(PTR2IV(clone)); SvREADONLY_on(sv); clone->hv = newHV(); if (hv_store(clone->hv, "", 0, sv, 0) == NULL) fatal("Couldn't store THIS into object."); return clone; } /******************************************************************************* * * ROUTINE: cbc_bless * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *cbc_bless(pTHX_ CBC *THIS, const char *CLASS) { SV *sv; sv = newRV_noinc((SV *) THIS->hv); sv_bless(sv, gv_stashpv(CONST_CHAR(CLASS), 0)); return sv; } Convert-Binary-C-0.76/cbc/object.h0000644000175000001440000000301011550664613015352 0ustar mhxusers/******************************************************************************* * * HEADER: object.h * ******************************************************************************** * * DESCRIPTION: C::B::C object * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:15 +0200 $ * $Revision: 6 $ * $Source: /cbc/object.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_OBJECT_H #define _CBC_OBJECT_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define cbc_new CBC_cbc_new CBC *cbc_new(pTHX); #define cbc_delete CBC_cbc_delete void cbc_delete(pTHX_ CBC *THIS); #define cbc_clone CBC_cbc_clone CBC *cbc_clone(pTHX_ const CBC *THIS); #define cbc_bless CBC_cbc_bless SV *cbc_bless(pTHX_ CBC *THIS, const char *CLASS); #endif Convert-Binary-C-0.76/cbc/util.c0000644000175000001440000004202711550664614015070 0ustar mhxusers/******************************************************************************* * * MODULE: util.c * ******************************************************************************** * * DESCRIPTION: C::B::C utilities * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:17 +0200 $ * $Revision: 23 $ * $Source: /cbc/util.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static int load_indexed_hash_module_ex(pTHX_ CBC *THIS, const char **modlist, int num); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ #define NUM_IX_HASH_MODS (sizeof(gs_IxHashMods)/sizeof(gs_IxHashMods[0])) static const char *gs_IxHashMods[] = { NULL, /* custom preferred module */ "Tie::Hash::Indexed", "Tie::IxHash" }; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: load_indexed_hash_module_ex * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int load_indexed_hash_module_ex(pTHX_ CBC *THIS, const char **modlist, int num) { const char *p = NULL; int i; if (THIS->ixhash != NULL) { /* a module has already been loaded */ return 1; } for (i = 0; i < num; i++) { if (modlist[i]) { SV *sv = newSVpvn("require ", 8); sv_catpv(sv, CONST_CHAR(modlist[i])); CT_DEBUG(MAIN, ("trying to require \"%s\"", modlist[i])); (void) eval_sv(sv, G_DISCARD); SvREFCNT_dec(sv); if ((sv = get_sv("@", 0)) != NULL && strEQ(SvPV_nolen(sv), "")) { p = modlist[i]; break; } if (i == 0) { Perl_warn(aTHX_ "Couldn't load %s for member ordering, " "trying default modules", modlist[i]); } CT_DEBUG(MAIN, ("failed: \"%s\"", sv ? SvPV_nolen(sv) : "[NULL]")); } } if (p == NULL) { SV *sv = newSVpvn("", 0); for (i = 1; i < num; i++) { if (i > 1) { if (i == num-1) sv_catpvn(sv, " or ", 4); else sv_catpvn(sv, ", ", 2); } sv_catpv(sv, CONST_CHAR(modlist[i])); } Perl_warn(aTHX_ "Couldn't load a module for member ordering " "(consider installing %s)", SvPV_nolen(sv)); return 0; } CT_DEBUG(MAIN, ("using \"%s\" for member ordering", p)); THIS->ixhash = p; return 1; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: fatal * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Write fatal error to standard error and abort(). * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void fatal(const char *f, ...) { dTHX; va_list l; SV *sv = newSVpvn("", 0); va_start(l, f); sv_catpv(sv, "============================================\n" " FATAL ERROR in " XSCLASS "!\n" "--------------------------------------------\n" ); sv_vcatpvf(sv, f, &l); sv_catpv(sv, "\n" "--------------------------------------------\n" " please report this error to mhx@cpan.org\n" "============================================\n" ); va_end(l); fprintf(stderr, "%s", SvPVX(sv)); SvREFCNT_dec(sv); abort(); } /******************************************************************************* * * ROUTINE: newHV_indexed * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ HV *newHV_indexed(pTHX_ const CBC *THIS) { dSP; HV *hv, *stash; GV *gv; SV *sv; int count; hv = newHV(); sv = newSVpv(CONST_CHAR(THIS->ixhash), 0); stash = gv_stashpv(CONST_CHAR(THIS->ixhash), 0); gv = gv_fetchmethod(stash, "TIEHASH"); ENTER; SAVETMPS; PUSHMARK(SP); XPUSHs(sv_2mortal(sv)); PUTBACK; count = call_sv((SV*)GvCV(gv), G_SCALAR); SPAGAIN; if (count != 1) fatal("%s::TIEHASH returned %d elements instead of 1", THIS->ixhash, count); sv = POPs; PUTBACK; hv_magic(hv, (GV *)sv, PERL_MAGIC_tied); FREETMPS; LEAVE; return hv; } /******************************************************************************* * * ROUTINE: croak_gti * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void croak_gti(pTHX_ ErrorGTI error, const char *name, int warnOnly) { char *errstr = NULL; switch (error) { case GTI_NO_ERROR: return; case GTI_NO_STRUCT_DECL: errstr = "Got no struct declarations"; break; default: if( name ) fatal("Unknown error %d in resolution of '%s'", error, name); else fatal("Unknown error %d in resolution of typedef", error); break; } if (warnOnly) { if (name) WARN((aTHX_ "%s in resolution of '%s'", errstr, name)); else WARN((aTHX_ "%s in resolution of typedef", errstr)); } else { if (name) Perl_croak(aTHX_ "%s in resolution of '%s'", errstr, name); else Perl_croak(aTHX_ "%s in resolution of typedef", errstr); } } /******************************************************************************* * * ROUTINE: get_basic_type_spec_string * * WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void get_basic_type_spec_string(pTHX_ SV **sv, u_32 flags) { struct { u_32 flag; const char *str; } *pSpec, spec[] = { {T_SIGNED, "signed" }, {T_UNSIGNED, "unsigned"}, {T_SHORT, "short" }, {T_LONGLONG, "long" }, {T_LONG, "long" }, {T_VOID, "void" }, {T_CHAR, "char" }, {T_INT , "int" }, {T_FLOAT , "float" }, {T_DOUBLE , "double" }, {0, NULL } }; int first = 1; CT_DEBUG(MAIN, (XSCLASS "::get_basic_type_spec_string( sv=%p, flags=0x%08lX )", sv, (unsigned long) flags)); for (pSpec = spec; pSpec->flag; ++pSpec) { if (pSpec->flag & flags) { if (*sv) sv_catpvf(*sv, first ? "%s" : " %s", pSpec->str); else *sv = newSVpv(CONST_CHAR(pSpec->str), 0); first = 0; } } } /******************************************************************************* * * ROUTINE: add_indent * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void add_indent(pTHX_ SV *s, int level) { #define MAXINDENT 16 static const char tab[MAXINDENT] = "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; #ifndef CBC_DONT_CLAMP_TO_MAXINDENT if (level > MAXINDENT) level = MAXINDENT; #else while (level > MAXINDENT) { sv_catpvn( s, tab, MAXINDENT ); level -= MAXINDENT; } #endif sv_catpvn(s, CONST_CHAR(tab), level); #undef MAXINDENT } /******************************************************************************* * * ROUTINE: load_indexed_hash_module * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int load_indexed_hash_module(pTHX_ CBC *THIS) { return load_indexed_hash_module_ex(aTHX_ THIS, gs_IxHashMods, NUM_IX_HASH_MODS); } /******************************************************************************* * * ROUTINE: set_preferred_indexed_hash_module * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void set_preferred_indexed_hash_module(const char *module) { gs_IxHashMods[0] = module; } /******************************************************************************* * * ROUTINE: string_new * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ char *string_new(const char *str) { char *cpy = NULL; if (str != NULL) { size_t len = strlen(str) + 1; New(0, cpy, len, char); Copy(str, cpy, len, char); } return cpy; } /******************************************************************************* * * ROUTINE: string_new_fromSV * * WRITTEN BY: Marcus Holland-Moritz ON: May 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ char *string_new_fromSV(pTHX_ SV *sv) { char *cpy = NULL; if (sv != NULL) { char *str; STRLEN len; str = SvPV(sv, len); len++; New(0, cpy, len, char); Copy(str, cpy, len, char); } return cpy; } /******************************************************************************* * * ROUTINE: string_delete * * WRITTEN BY: Marcus Holland-Moritz ON: May 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void string_delete(char *str) { Safefree(str); } /******************************************************************************* * * ROUTINE: clone_string_list * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ LinkedList clone_string_list(LinkedList list) { ListIterator li; const char *str; LinkedList clone; clone = LL_new(); LL_foreach(str, li, list) LL_push(clone, string_new(str)); return clone; } /******************************************************************************* * * ROUTINE: dump_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Dumps an SV similar to (but a lot simpler than) Devel::Peek's * Dump function, but instead of writing to the debug output, it * returns a Perl string that can be used for further processing. * Currently, the only useful information is the reference count. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define DUMP_INDENT \ STMT_START { \ if (level > 0) \ add_indent(aTHX_ buf, level); \ } STMT_END void dump_sv(pTHX_ SV *buf, int level, SV *sv) { char *str; svtype type = SvTYPE(sv); if (SvROK(sv)) { str = "RV"; } else { switch (type) { case SVt_NULL: str = "NULL"; break; case SVt_IV: str = "IV"; break; case SVt_NV: str = "NV"; break; case SVt_PV: str = "PV"; break; case SVt_PVIV: str = "PVIV"; break; case SVt_PVNV: str = "PVNV"; break; case SVt_PVMG: str = "PVMG"; break; case SVt_PVLV: str = "PVLV"; break; case SVt_PVAV: str = "PVAV"; break; case SVt_PVHV: str = "PVHV"; break; case SVt_PVCV: str = "PVCV"; break; case SVt_PVGV: str = "PVGV"; break; case SVt_PVFM: str = "PVFM"; break; case SVt_PVIO: str = "PVIO"; break; default : str = "UNKNOWN"; } } CT_DEBUG(MAIN, (XSCLASS "::dump_sv( level=%d, sv=\"%s\" )", level, str)); #ifndef CBC_USE_LESS_MEMORY /* * This speeds up dump at the cost of memory, * as it prevents a lot of realloc()s. * Actually, it was only inserted to make valgrind * run at acceptable speed... ;-) */ { STRLEN cur, len; cur = SvCUR(buf) + 64; /* estimated new string length */ if (cur > 1024) /* do nothing for small strings */ { len = SvLEN(buf); /* buffer size */ if (cur > len) { len = (len/1024)*2048; /* double buffer size */ (void) sv_grow(buf, len); } } } #endif DUMP_INDENT; level++; sv_catpvf(buf, "SV = %s @ %p (REFCNT = %lu)\n", str, sv, (unsigned long) SvREFCNT(sv)); if (SvROK(sv)) { dump_sv(aTHX_ buf, level, SvRV(sv)); return; } switch (type) { case SVt_PVAV: { AV *av = (AV *) sv; I32 c, n; for (c = 0, n = av_len(av); c <= n; ++c) { SV **p = av_fetch(av, c, 0); if (p) { DUMP_INDENT; sv_catpvf(buf, "index = %ld\n", (long) c); dump_sv(aTHX_ buf, level, *p); } } } break; case SVt_PVHV: { HV *hv = (HV *) sv; SV *v; I32 len; hv_iterinit(hv); while ((v = hv_iternextsv(hv, &str, &len)) != 0) { DUMP_INDENT; sv_catpv(buf, "key = \""); sv_catpvn(buf, str, len); sv_catpv(buf, "\"\n"); dump_sv(aTHX_ buf, level, v); } } break; default: /* nothing */ break; } } /******************************************************************************* * * ROUTINE: identify_sv * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Identify an SV and return a string describing its type. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const char *identify_sv(SV *sv) { if (sv == NULL || !SvOK(sv)) return "an undefined value"; if (SvROK(sv)) { switch (SvTYPE(SvRV(sv))) { case SVt_PVAV: return "an array reference"; case SVt_PVHV: return "a hash reference"; case SVt_PVCV: return "a code reference"; default: return "a reference"; } } if (SvIOK(sv)) return "an integer value"; if (SvNOK(sv)) return "a numeric value"; if (SvPOK(sv)) return "a string value"; return "an unknown value"; } Convert-Binary-C-0.76/cbc/util.h0000644000175000001440000000464311550664614015077 0ustar mhxusers/******************************************************************************* * * HEADER: util.h * ******************************************************************************** * * DESCRIPTION: C::B::C utilities * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:17 +0200 $ * $Revision: 14 $ * $Source: /cbc/util.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_UTIL_H #define _CBC_UTIL_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/cbc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define fatal CBC_fatal void fatal(const char *f, ...) __attribute__((__noreturn__)); #define newHV_indexed CBC_newHV_indexed HV *newHV_indexed(pTHX_ const CBC *THIS); #define croak_gti CBC_croak_gti void croak_gti(pTHX_ ErrorGTI error, const char *name, int warnOnly); #define get_basic_type_spec_string CBC_get_basic_type_spec_string void get_basic_type_spec_string(pTHX_ SV **sv, u_32 flags); #define add_indent CBC_add_indent void add_indent(pTHX_ SV *s, int level); #define load_indexed_hash_module CBC_load_indexed_hash_module int load_indexed_hash_module(pTHX_ CBC *THIS); #define set_preferred_indexed_hash_module CBC_set_preferred_indexed_hash_module void set_preferred_indexed_hash_module(const char *module); #define string_new CBC_string_new char *string_new(const char *str); #define string_new_fromSV CBC_string_new_fromSV char *string_new_fromSV(pTHX_ SV *sv); #define string_delete CBC_string_delete void string_delete(char *sv); #define clone_string_list CBC_clone_string_list LinkedList clone_string_list(LinkedList list); #define dump_sv CBC_dump_sv void dump_sv(pTHX_ SV *buf, int level, SV *sv); #define identify_sv CBC_identify_sv const char *identify_sv(SV *sv); #endif Convert-Binary-C-0.76/cbc/basic.c0000644000175000001440000002026511550664613015173 0ustar mhxusers/******************************************************************************* * * MODULE: basic.c * ******************************************************************************** * * DESCRIPTION: C::B::C basic types * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:13 +0200 $ * $Revision: 8 $ * $Source: /cbc/basic.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/basic.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct basic_type_info { Declarator *pDecl; } BTInfo; enum BTName { BT_CHAR, BT_SIGNED_CHAR, BT_UNSIGNED_CHAR, BT_SHORT, BT_SIGNED_SHORT, BT_UNSIGNED_SHORT, BT_INT, BT_SIGNED_INT, BT_UNSIGNED_INT, BT_LONG, BT_SIGNED_LONG, BT_UNSIGNED_LONG, BT_LONG_LONG, BT_SIGNED_LONG_LONG, BT_UNSIGNED_LONG_LONG, BT_FLOAT, BT_DOUBLE, BT_LONG_DOUBLE, NUM_BT_NAMES }; struct _basic_types { BTInfo ti[NUM_BT_NAMES]; }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: basic_types_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ BasicTypes basic_types_new(void) { BasicTypes bt; int i; New(0, bt, 1, struct _basic_types); for (i = 0; i < NUM_BT_NAMES; i++) bt->ti[i].pDecl = decl_new("", 0); return bt; } /******************************************************************************* * * ROUTINE: basic_types_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void basic_types_delete(BasicTypes bt) { if (bt) { int i; for (i = 0; i < NUM_BT_NAMES; i++) decl_delete(bt->ti[i].pDecl); Safefree(bt); } } /******************************************************************************* * * ROUTINE: basic_types_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ BasicTypes basic_types_clone(const BasicTypes src) { BasicTypes bt; int i; New(0, bt, 1, struct _basic_types); for (i = 0; i < NUM_BT_NAMES; i++) bt->ti[i].pDecl = decl_clone(src->ti[i].pDecl); return bt; } /******************************************************************************* * * ROUTINE: basic_types_reset * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void basic_types_reset(BasicTypes bt) { int i; for (i = 0; i < NUM_BT_NAMES; i++) { Declarator *pDecl = bt->ti[i].pDecl; pDecl->size = -1; pDecl->item_size = -1; } } /******************************************************************************* * * ROUTINE: basic_types_get_declarator * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Declarator *basic_types_get_declarator(BasicTypes bt, unsigned tflags) { BTInfo *bti = &bt->ti[0]; switch (tflags) { case T_CHAR: return bti[BT_CHAR].pDecl; case T_CHAR | T_SIGNED: return bti[BT_SIGNED_CHAR].pDecl; case T_CHAR | T_UNSIGNED: return bti[BT_UNSIGNED_CHAR].pDecl; case T_SHORT | T_INT: case T_SHORT: return bti[BT_SHORT].pDecl; case T_SHORT | T_SIGNED | T_INT: case T_SHORT | T_SIGNED: return bti[BT_SIGNED_SHORT].pDecl; case T_SHORT | T_UNSIGNED | T_INT: case T_SHORT | T_UNSIGNED: return bti[BT_UNSIGNED_SHORT].pDecl; case T_INT: return bti[BT_INT].pDecl; case T_SIGNED: case T_INT | T_SIGNED: return bti[BT_SIGNED_INT].pDecl; case T_UNSIGNED: case T_INT | T_UNSIGNED: return bti[BT_UNSIGNED_INT].pDecl; case T_LONG | T_INT: case T_LONG: return bti[BT_LONG].pDecl; case T_LONG | T_SIGNED | T_INT: case T_LONG | T_SIGNED: return bti[BT_SIGNED_LONG].pDecl; case T_LONG | T_UNSIGNED | T_INT: case T_LONG | T_UNSIGNED: return bti[BT_UNSIGNED_LONG].pDecl; case T_LONG | T_LONGLONG | T_INT: case T_LONG | T_LONGLONG: return bti[BT_LONG_LONG].pDecl; case T_LONG | T_LONGLONG | T_SIGNED | T_INT: case T_LONG | T_LONGLONG | T_SIGNED: return bti[BT_SIGNED_LONG_LONG].pDecl; case T_LONG | T_LONGLONG | T_UNSIGNED | T_INT: case T_LONG | T_LONGLONG | T_UNSIGNED: return bti[BT_UNSIGNED_LONG_LONG].pDecl; case T_FLOAT: return bti[BT_FLOAT].pDecl; case T_DOUBLE: return bti[BT_DOUBLE].pDecl; case T_LONG | T_DOUBLE: return bti[BT_LONG_DOUBLE].pDecl; default: return NULL; } } /******************************************************************************* * * ROUTINE: get_basic_type_spec * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_basic_type_spec(const char *name, TypeSpec *pTS) { const char *c; u_32 tflags = 0; for (;;) { success: /* skip whitespace */ while (isSPACE(*name)) name++; if (*name == '\0') break; if (!isALPHA(*name)) return 0; c = name++; while (isALPHA(*name)) name++; if (*name != '\0' && !isSPACE(*name)) return 0; #include "token/t_basic.c" unknown: return 0; } if (tflags == 0) return 0; if (pTS) { pTS->ptr = NULL; pTS->tflags = tflags; } return 1; } Convert-Binary-C-0.76/cbc/basic.h0000644000175000001440000000361111550664613015174 0ustar mhxusers/******************************************************************************* * * HEADER: basic.h * ******************************************************************************** * * DESCRIPTION: C::B::C basic types * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:13 +0200 $ * $Revision: 7 $ * $Source: /cbc/basic.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_BASIC_H #define _CBC_BASIC_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/cttype.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct _basic_types *BasicTypes; /*===== FUNCTION PROTOTYPES ==================================================*/ #define basic_types_new CBC_basic_types_new BasicTypes basic_types_new(void); #define basic_types_delete CBC_basic_types_delete void basic_types_delete(BasicTypes bt); #define basic_types_clone CBC_basic_types_clone BasicTypes basic_types_clone(const BasicTypes src); #define basic_types_reset CBC_basic_types_reset void basic_types_reset(BasicTypes bt); #define basic_types_get_declarator CBC_basic_types_get_declarator Declarator *basic_types_get_declarator(BasicTypes bt, unsigned tflags); #define get_basic_type_spec CBC_get_basic_type_spec int get_basic_type_spec(const char *name, TypeSpec *pTS); #endif Convert-Binary-C-0.76/cbc/option.c0000644000175000001440000011677611550664613015437 0ustar mhxusers/******************************************************************************* * * MODULE: option.c * ******************************************************************************** * * DESCRIPTION: C::B::C options * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:15 +0200 $ * $Revision: 30 $ * $Source: /cbc/option.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/ctparse.h" #include "ctlib/parser.h" #include "cbc/option.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { const int value; const char *string; } StringOption; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static int check_integer_option(pTHX_ const IV *options, int count, SV *sv, IV *value, const char *name); static const StringOption *get_string_option(pTHX_ const StringOption *options, int count, int value, SV *sv, const char *name); static void disabled_keywords(pTHX_ LinkedList *current, SV *sv, SV **rval, u_32 *pKeywordMask); static void keyword_map(pTHX_ HashTable *current, SV *sv, SV **rval); static void bitfields_option(pTHX_ BitfieldLayouter *layouter, SV *sv_val, SV **rval); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static const StringOption ByteOrderOption[] = { { CBO_BIG_ENDIAN, "BigEndian" }, { CBO_LITTLE_ENDIAN, "LittleEndian" } }; static const StringOption EnumTypeOption[] = { { ET_INTEGER, "Integer" }, { ET_STRING, "String" }, { ET_BOTH, "Both" } }; static const IV PointerSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV EnumSizeOption[] = { -1, 0, 1, 2, 4, 8 }; static const IV IntSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV CharSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV ShortSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV LongSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV LongLongSizeOption[] = { 0, 1, 2, 4, 8 }; static const IV FloatSizeOption[] = { 0, 1, 2, 4, 8, 12, 16 }; static const IV DoubleSizeOption[] = { 0, 1, 2, 4, 8, 12, 16 }; static const IV LongDoubleSizeOption[] = { 0, 1, 2, 4, 8, 12, 16 }; static const IV AlignmentOption[] = { 0, 1, 2, 4, 8, 16 }; static const IV CompoundAlignmentOption[] = { 0, 1, 2, 4, 8, 16 }; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: check_integer_option * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int check_integer_option(pTHX_ const IV *options, int count, SV *sv, IV *value, const char *name) { const IV *opt = options; int n = count; if (SvROK(sv)) { Perl_croak(aTHX_ "%s must be an integer value, not a reference", name); return 0; } *value = SvIV(sv); while (n--) if (*value == *opt++) return 1; if (name) { SV *str = sv_2mortal(newSVpvn("", 0)); for (n = 0; n < count; n++) sv_catpvf(str, "%" IVdf "%s", *options++, n < count-2 ? ", " : n == count-2 ? " or " : ""); Perl_croak(aTHX_ "%s must be %s, not %" IVdf, name, SvPV_nolen(str), *value); } return 0; } /******************************************************************************* * * ROUTINE: get_string_option * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define GET_STR_OPTION(name, value, sv) \ get_string_option(aTHX_ name ## Option, sizeof(name ## Option) / \ sizeof(StringOption), value, sv, #name) static const StringOption *get_string_option(pTHX_ const StringOption *options, int count, int value, SV *sv, const char *name) { char *string = NULL; if (sv) { if (SvROK(sv)) Perl_croak(aTHX_ "%s must be a string value, not a reference", name); else string = SvPV_nolen(sv); } if (string) { const StringOption *opt = options; int n = count; while (n--) { if (strEQ(string, opt->string)) return opt; opt++; } if (name) { SV *str = sv_2mortal(newSVpvn("", 0)); for (n = 0; n < count; n++) { sv_catpv(str, CONST_CHAR((options++)->string)); if (n < count-2) sv_catpv(str, "', '"); else if (n == count-2) sv_catpv(str, "' or '"); } Perl_croak(aTHX_ "%s must be '%s', not '%s'", name, SvPV_nolen(str), string); } } else { while (count--) { if (value == options->value) return options; options++; } fatal("Inconsistent data detected in get_string_option()!"); } return NULL; } /******************************************************************************* * * ROUTINE: disabled_keywords * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void disabled_keywords(pTHX_ LinkedList *current, SV *sv, SV **rval, u_32 *pKeywordMask) { const char *str; LinkedList keyword_list = NULL; if (sv) { if (SvROK(sv)) { sv = SvRV(sv); if (SvTYPE(sv) == SVt_PVAV) { AV *av = (AV *) sv; SV **pSV; int i, max = av_len(av); u_32 keywords = HAS_ALL_KEYWORDS; keyword_list = LL_new(); for (i = 0; i <= max; i++) { if ((pSV = av_fetch(av, i, 0)) != NULL) { SvGETMAGIC(*pSV); str = SvPV_nolen(*pSV); #include "token/t_keywords.c" success: LL_push(keyword_list, string_new(str)); } else fatal("NULL returned by av_fetch() in disabled_keywords()"); } if (pKeywordMask != NULL) *pKeywordMask = keywords; if (current != NULL) { LL_destroy(*current, (LLDestroyFunc) string_delete); *current = keyword_list; } } else Perl_croak(aTHX_ "DisabledKeywords wants an array reference"); } else Perl_croak(aTHX_ "DisabledKeywords wants a reference to " "an array of strings"); } if (rval) { ListIterator li; AV *av = newAV(); LL_foreach (str, li, *current) av_push(av, newSVpv(CONST_CHAR(str), 0)); *rval = newRV_noinc((SV *) av); } return; unknown: LL_destroy(keyword_list, (LLDestroyFunc) string_delete); Perl_croak(aTHX_ "Cannot disable unknown keyword '%s'", str); } /******************************************************************************* * * ROUTINE: keyword_map * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define FAIL_CLEAN(x) \ STMT_START { \ HT_destroy(keyword_map, NULL); \ Perl_croak x; \ } STMT_END static void keyword_map(pTHX_ HashTable *current, SV *sv, SV **rval) { HashTable keyword_map = NULL; if(sv) { if (SvROK(sv)) { sv = SvRV(sv); if (SvTYPE(sv) == SVt_PVHV) { HV *hv = (HV *) sv; HE *entry; keyword_map = HT_new_ex(4, HT_AUTOGROW); (void) hv_iterinit(hv); while ((entry = hv_iternext(hv)) != NULL) { SV *value; I32 keylen; const char *key, *c; const CKeywordToken *pTok; c = key = hv_iterkey(entry, &keylen); if (*c == '\0') FAIL_CLEAN((aTHX_ "Cannot use empty string as a keyword")); while (*c == '_' || isALPHA(*c)) c++; if (*c != '\0') FAIL_CLEAN((aTHX_ "Cannot use '%s' as a keyword", key)); value = hv_iterval(hv, entry); if (!SvOK(value)) pTok = get_skip_token(); else { const char *map; if (SvROK(value)) FAIL_CLEAN((aTHX_ "Cannot use a reference as a keyword")); map = SvPV_nolen(value); if ((pTok = get_c_keyword_token(map)) == NULL) FAIL_CLEAN((aTHX_ "Cannot use '%s' as a keyword", map)); } (void) HT_store(keyword_map, key, (int) keylen, 0, (CKeywordToken *) pTok); } if (current != NULL) { HT_destroy(*current, NULL); *current = keyword_map; } } else Perl_croak(aTHX_ "KeywordMap wants a hash reference"); } else Perl_croak(aTHX_ "KeywordMap wants a hash reference"); } if (rval) { HashIterator hi; HV *hv = newHV(); CKeywordToken *tok; const char *key; int keylen; HI_init(&hi, *current); while (HI_next(&hi, &key, &keylen, (void **) &tok)) { SV *val; val = tok->name == NULL ? newSV(0) : newSVpv(CONST_CHAR(tok->name), 0); if (hv_store(hv, key, keylen, val, 0) == NULL) SvREFCNT_dec(val); } *rval = newRV_noinc((SV *) hv); } } #undef FAIL_CLEAN /******************************************************************************* * * ROUTINE: bitfields_option * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define FAIL_CLEAN(x) \ STMT_START { \ if (bl_new) \ bl_new->m->destroy(bl_new); \ Perl_croak x; \ } STMT_END static void bitfields_option(pTHX_ BitfieldLayouter *layouter, SV *sv_val, SV **rval) { BitfieldLayouter bl_new = NULL; BitfieldLayouter bl = *layouter; if(sv_val) { if (SvROK(sv_val)) { sv_val = SvRV(sv_val); if (SvTYPE(sv_val) == SVt_PVHV) { HV *hv = (HV *) sv_val; HE *entry; SV **engine = hv_fetch(hv, "Engine", 6, 0); int noptions; const BLOption *options; if (engine && *engine) { const char *name = SvPV_nolen(*engine); bl = bl_new = bl_create(name); if (bl_new == NULL) Perl_croak(aTHX_ "Unknown bitfield layout engine '%s'", name); } (void) hv_iterinit(hv); options = bl->m->options(bl, &noptions); while ((entry = hv_iternext(hv)) != NULL) { SV *value; I32 keylen; int i; const char *prop_string = hv_iterkey(entry, &keylen); BLProperty prop; BLPropValue prop_value; const BLOption *opt = NULL; enum BLError error; if (strEQ(prop_string, "Engine")) continue; prop = bl_property(prop_string); for (i = 0; i < noptions; i++) if (options[i].prop == prop) { opt = &options[i]; break; } if (opt == NULL) FAIL_CLEAN((aTHX_ "Invalid option '%s' for bitfield layout engine '%s'", prop_string, bl->m->class_name(bl))); value = hv_iterval(hv, entry); prop_value.type = opt->type; switch (opt->type) { case BLPVT_INT: prop_value.v.v_int = SvIV(value); if (opt->nval) { const BLPropValInt *pval = opt->pval; for (i = 0; i < opt->nval; i++) if (pval[i] == prop_value.v.v_int) break; } break; case BLPVT_STR: prop_value.v.v_str = bl_propval(SvPV_nolen(value)); if (opt->nval) { const BLPropValStr *pval = opt->pval; for (i = 0; i < opt->nval; i++) if (pval[i] == prop_value.v.v_str) break; } break; default: fatal("unknown opt->type (%d) in bitfields_option()", opt->type); break; } if (opt->nval && i == opt->nval) FAIL_CLEAN((aTHX_ "Invalid value '%s' for option '%s'", SvPV_nolen(value), prop_string)); error = bl->m->set(bl, prop, &prop_value); switch (error) { case BLE_NO_ERROR: break; case BLE_INVALID_PROPERTY: FAIL_CLEAN((aTHX_ "Invalid value '%s' for option '%s'", SvPV_nolen(value), prop_string)); break; default: fatal("unknown error code (%d) returned by set method", error); break; } } if (bl_new) { (*layouter)->m->destroy(*layouter); *layouter = bl_new; } } else Perl_croak(aTHX_ "Bitfields wants a hash reference"); } else Perl_croak(aTHX_ "Bitfields wants a hash reference"); } if (rval) { int noptions; const BLOption *opt; int i; HV *hv = newHV(); SV *sv = newSVpv(bl->m->class_name(bl), 0); if (hv_store(hv, "Engine", 6, sv, 0) == NULL) SvREFCNT_dec(sv); opt = bl->m->options(bl, &noptions); for (i = 0; i < noptions; i++, opt++) { BLPropValue value; enum BLError error; const char *prop_string; error = bl->m->get(bl, opt->prop, &value); if (error != BLE_NO_ERROR) fatal("unexpected error (%d) returned by get method", error); assert(value.type == opt->type); switch (opt->type) { case BLPVT_INT: sv = newSViv(value.v.v_int); break; case BLPVT_STR: { const char *valstr = bl_propval_string(value.v.v_str); assert(valstr != NULL); sv = newSVpv(valstr, 0); } break; default: fatal("unknown opt->type (%d) in bitfields_option()", opt->type); break; } prop_string = bl_property_string(opt->prop); assert(prop_string != NULL); if (hv_store(hv, prop_string, strlen(prop_string), sv, 0) == NULL) SvREFCNT_dec(sv); } *rval = newRV_noinc((SV *) hv); } } #undef FAIL_CLEAN /******************************************************************************* * * ROUTINE: get_config_option * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #include "token/t_config.c" /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: handle_string_list * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void handle_string_list(pTHX_ const char *option, LinkedList list, SV *sv, SV **rval) { const char *str; if (sv) { LL_flush(list, (LLDestroyFunc) string_delete); if (SvROK(sv)) { sv = SvRV(sv); if (SvTYPE(sv) == SVt_PVAV) { AV *av = (AV *) sv; SV **pSV; int i, max = av_len(av); for (i = 0; i <= max; i++) { if ((pSV = av_fetch(av, i, 0)) != NULL) { SvGETMAGIC(*pSV); LL_push(list, string_new_fromSV(aTHX_ *pSV)); } else fatal("NULL returned by av_fetch() in handle_string_list()"); } } else Perl_croak(aTHX_ "%s wants an array reference", option); } else Perl_croak(aTHX_ "%s wants a reference to an array of strings", option); } if (rval) { ListIterator li; AV *av = newAV(); LL_foreach(str, li, list) av_push(av, newSVpv(CONST_CHAR(str), 0)); *rval = newRV_noinc((SV *) av); } } /******************************************************************************* * * ROUTINE: handle_option * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define START_OPTIONS \ const char *option; \ ConfigOption cfgopt; \ if (p_res) \ { \ p_res->option_modified = 0; \ p_res->impacts_layout = 0; \ p_res->impacts_preproc = 0; \ } \ if (SvROK(opt)) \ Perl_croak(aTHX_ "Option name must be a string, " \ "not a reference"); \ switch (cfgopt = get_config_option(option = SvPV_nolen(opt))) { #define DID_CHANGE(change) \ STMT_START { \ if (p_res) \ p_res->option_modified = change; \ } STMT_END #define IMPACTS_LAYOUT(layout) \ STMT_START { \ if (p_res) \ p_res->impacts_layout = layout; \ } STMT_END #define IMPACTS_PREPROC(pp) \ STMT_START { \ if (p_res) \ p_res->impacts_preproc = pp; \ } STMT_END #define POST_PROCESS } switch (cfgopt) { #define END_OPTIONS default: break; } #define OPTION(name) case OPTION_ ## name : { #define ENDOPT } break; #define UPDATE_OPT(option, val) \ STMT_START { \ if ((IV) THIS->option != val) \ { \ THIS->option = val; \ DID_CHANGE(1); \ } \ } STMT_END #define FLAG_OPTION(name, flag, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ if (sv_val) \ { \ if (SvROK(sv_val)) \ Perl_croak(aTHX_ #name " must be a boolean value, " \ "not a reference"); \ else if (THIS->flag != SvIV(sv_val) ? 1 : 0) \ { \ THIS->flag = SvIV(sv_val) ? 1 : 0; \ DID_CHANGE(1); \ } \ } \ if (rval) \ *rval = newSViv(THIS->flag ? 1 : 0); \ break; #define IVAL_OPTION(name, config, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ if (sv_val) \ { \ IV val; \ if (check_integer_option(aTHX_ name ## Option, \ sizeof(name ## Option) / sizeof(IV), \ sv_val, &val, #name)) \ UPDATE_OPT(config, val); \ } \ if (rval) \ *rval = newSViv(THIS->config); \ break; #define TRISTATE_FLAG_OPTION(name, state, flag, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ if (sv_val) \ { \ unsigned isdef = SvOK(sv_val) != 0; \ int changed = isdef != THIS->state; \ THIS->state = isdef; \ if (isdef) \ { \ if (SvROK(sv_val)) \ Perl_croak(aTHX_ #name " must be undef or a boolean " \ "value, not a reference"); \ else if (THIS->flag != SvIV(sv_val) ? 1 : 0) \ { \ THIS->flag = SvIV(sv_val) ? 1 : 0; \ changed = 1; \ } \ } \ DID_CHANGE(changed); \ } \ if (rval) \ *rval = THIS->state ? newSViv(THIS->flag ? 1 : 0) : &PL_sv_undef;\ break; #define TRISTATE_INT_OPTION(name, state, config, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ if (sv_val) \ { \ unsigned isdef = SvOK(sv_val) != 0; \ int changed = isdef != THIS->state; \ THIS->state = isdef; \ if (isdef) \ { \ if (SvROK(sv_val)) \ Perl_croak(aTHX_ #name " must be undef or an integer " \ "value, not a reference"); \ else if (THIS->config != SvIV(sv_val)) \ { \ THIS->config = SvIV(sv_val); \ changed = 1; \ } \ } \ DID_CHANGE(changed); \ } \ if (rval) \ *rval = THIS->state ? newSViv(THIS->config) : &PL_sv_undef; \ break; #define STRLIST_OPTION(name, config, layout, pp) \ case OPTION_ ## name : \ IMPACTS_LAYOUT(layout); \ IMPACTS_PREPROC(pp); \ handle_string_list(aTHX_ #name, THIS->config, sv_val, rval); \ DID_CHANGE(sv_val != NULL); \ break; #define INVALID_OPTION \ default: \ Perl_croak(aTHX_ "Invalid option '%s'", option); \ break; void handle_option(pTHX_ CBC *THIS, SV *opt, SV *sv_val, SV **rval, HandleOptionResult *p_res) { START_OPTIONS FLAG_OPTION(OrderMembers, order_members, 0, 0) FLAG_OPTION(Warnings, cfg.issue_warnings, 0, 0) FLAG_OPTION(HasCPPComments, cfg.has_cpp_comments, 0, 1) FLAG_OPTION(HasMacroVAARGS, cfg.has_macro_vaargs, 0, 1) FLAG_OPTION(UnsignedChars, cfg.unsigned_chars, 0, 0) FLAG_OPTION(UnsignedBitfields, cfg.unsigned_bitfields, 0, 0) IVAL_OPTION(PointerSize, cfg.layout.ptr_size, 1, 0) IVAL_OPTION(EnumSize, cfg.layout.enum_size, 1, 0) IVAL_OPTION(IntSize, cfg.layout.int_size, 1, 0) IVAL_OPTION(CharSize, cfg.layout.char_size, 1, 0) IVAL_OPTION(ShortSize, cfg.layout.short_size, 1, 0) IVAL_OPTION(LongSize, cfg.layout.long_size, 1, 0) IVAL_OPTION(LongLongSize, cfg.layout.long_long_size, 1, 0) IVAL_OPTION(FloatSize, cfg.layout.float_size, 1, 0) IVAL_OPTION(DoubleSize, cfg.layout.double_size, 1, 0) IVAL_OPTION(LongDoubleSize, cfg.layout.long_double_size, 1, 0) IVAL_OPTION(Alignment, cfg.layout.alignment, 1, 0) IVAL_OPTION(CompoundAlignment, cfg.layout.compound_alignment, 1, 0) TRISTATE_FLAG_OPTION(HostedC, cfg.has_std_c_hosted, cfg.is_std_c_hosted, 0, 1) TRISTATE_INT_OPTION(StdCVersion, cfg.has_std_c, cfg.std_c_version, 0, 1) STRLIST_OPTION(Include, cfg.includes, 0, 1) STRLIST_OPTION(Define, cfg.defines, 0, 1) STRLIST_OPTION(Assert, cfg.assertions, 0, 1) OPTION(DisabledKeywords) IMPACTS_LAYOUT(0); disabled_keywords(aTHX_ &THIS->cfg.disabled_keywords, sv_val, rval, &THIS->cfg.keywords); DID_CHANGE(sv_val != NULL); ENDOPT OPTION(KeywordMap) IMPACTS_LAYOUT(0); keyword_map(aTHX_ &THIS->cfg.keyword_map, sv_val, rval); DID_CHANGE(sv_val != NULL); ENDOPT OPTION(ByteOrder) IMPACTS_LAYOUT(1); if (sv_val) { const StringOption *pOpt = GET_STR_OPTION(ByteOrder, 0, sv_val); UPDATE_OPT(cfg.layout.byte_order, pOpt->value); } if (rval) { const StringOption *pOpt = GET_STR_OPTION(ByteOrder, THIS->cfg.layout.byte_order, NULL); *rval = newSVpv(CONST_CHAR(pOpt->string), 0); } ENDOPT OPTION(EnumType) IMPACTS_LAYOUT(0); if (sv_val) { const StringOption *pOpt = GET_STR_OPTION(EnumType, 0, sv_val); UPDATE_OPT(enumType, pOpt->value); } if (rval) { const StringOption *pOpt = GET_STR_OPTION(EnumType, THIS->enumType, NULL); *rval = newSVpv(CONST_CHAR(pOpt->string), 0); } ENDOPT OPTION(Bitfields) IMPACTS_LAYOUT(1); bitfields_option(aTHX_ &THIS->cfg.layout.bflayouter, sv_val, rval); DID_CHANGE(sv_val != NULL); ENDOPT INVALID_OPTION POST_PROCESS OPTION(OrderMembers) if (sv_val && THIS->order_members && THIS->ixhash == NULL) load_indexed_hash_module(aTHX_ THIS); ENDOPT END_OPTIONS } #undef START_OPTIONS #undef END_OPTIONS #undef OPTION #undef ENDOPT #undef UPDATE_OPT #undef FLAG_OPTION #undef IVAL_OPTION #undef TRISTATE_FLAG_OPTION #undef TRISTATE_INT_OPTION #undef STRLIST_OPTION /******************************************************************************* * * ROUTINE: get_configuration * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define FLAG_OPTION(name, flag) \ sv = newSViv(THIS->flag); \ HV_STORE_CONST(hv, #name, sv); #define STRLIST_OPTION(name, config) \ handle_string_list(aTHX_ #name, THIS->config, NULL, &sv); \ HV_STORE_CONST(hv, #name, sv); #define IVAL_OPTION(name, config) \ sv = newSViv(THIS->config); \ HV_STORE_CONST(hv, #name, sv); #define TRISTATE_FLAG_OPTION(name, state, flag) \ sv = THIS->state ? newSViv(THIS->flag ? 1 : 0) : &PL_sv_undef; \ HV_STORE_CONST(hv, #name, sv); #define TRISTATE_INT_OPTION(name, state, config) \ sv = THIS->state ? newSViv(THIS->config) : &PL_sv_undef; \ HV_STORE_CONST(hv, #name, sv); #define STRING_OPTION(name, value) \ sv = newSVpv(CONST_CHAR(GET_STR_OPTION(name, value, NULL)->string), 0);\ HV_STORE_CONST(hv, #name, sv); SV *get_configuration(pTHX_ CBC *THIS) { HV *hv = newHV(); SV *sv; FLAG_OPTION(OrderMembers, order_members ) FLAG_OPTION(Warnings, cfg.issue_warnings ) FLAG_OPTION(HasCPPComments, cfg.has_cpp_comments ) FLAG_OPTION(HasMacroVAARGS, cfg.has_macro_vaargs ) FLAG_OPTION(UnsignedChars, cfg.unsigned_chars ) FLAG_OPTION(UnsignedBitfields, cfg.unsigned_bitfields) IVAL_OPTION(PointerSize, cfg.layout.ptr_size ) IVAL_OPTION(EnumSize, cfg.layout.enum_size ) IVAL_OPTION(IntSize, cfg.layout.int_size ) IVAL_OPTION(CharSize, cfg.layout.char_size ) IVAL_OPTION(ShortSize, cfg.layout.short_size ) IVAL_OPTION(LongSize, cfg.layout.long_size ) IVAL_OPTION(LongLongSize, cfg.layout.long_long_size ) IVAL_OPTION(FloatSize, cfg.layout.float_size ) IVAL_OPTION(DoubleSize, cfg.layout.double_size ) IVAL_OPTION(LongDoubleSize, cfg.layout.long_double_size ) IVAL_OPTION(Alignment, cfg.layout.alignment ) IVAL_OPTION(CompoundAlignment, cfg.layout.compound_alignment) TRISTATE_FLAG_OPTION(HostedC, cfg.has_std_c_hosted, cfg.is_std_c_hosted) TRISTATE_INT_OPTION(StdCVersion, cfg.has_std_c, cfg.std_c_version) STRLIST_OPTION(Include, cfg.includes ) STRLIST_OPTION(Define, cfg.defines ) STRLIST_OPTION(Assert, cfg.assertions ) STRLIST_OPTION(DisabledKeywords, cfg.disabled_keywords) keyword_map(aTHX_ &THIS->cfg.keyword_map, NULL, &sv); HV_STORE_CONST(hv, "KeywordMap", sv); STRING_OPTION(ByteOrder, THIS->cfg.layout.byte_order) STRING_OPTION(EnumType, THIS->enumType) bitfields_option(aTHX_ &THIS->cfg.layout.bflayouter, NULL, &sv); HV_STORE_CONST(hv, "Bitfields", sv); return newRV_noinc((SV *) hv); } #undef FLAG_OPTION #undef STRLIST_OPTION #undef IVAL_OPTION #undef STRING_OPTION /******************************************************************************* * * ROUTINE: get_native_property * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_native_property(pTHX_ const char *property) { static const char *native_byteorder = #if ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_BIG_ENDIAN "BigEndian" #elif ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_LITTLE_ENDIAN "LittleEndian" #else #error "unknown native byte order" #endif ; #if defined(__STDC_VERSION__) # define STD_C_NATIVE newSViv(__STDC_VERSION__) #else # define STD_C_NATIVE &PL_sv_undef #endif #ifdef __STDC_HOSTED__ # define HOSTED_C_NATIVE newSViv(__STDC_HOSTED__) #else # define HOSTED_C_NATIVE &PL_sv_undef #endif if (property == NULL) { HV *h = newHV(); HV_STORE_CONST(h, "PointerSize", newSViv(CTLIB_POINTER_SIZE)); HV_STORE_CONST(h, "IntSize", newSViv(CTLIB_int_SIZE)); HV_STORE_CONST(h, "CharSize", newSViv(CTLIB_char_SIZE)); HV_STORE_CONST(h, "ShortSize", newSViv(CTLIB_short_SIZE)); HV_STORE_CONST(h, "LongSize", newSViv(CTLIB_long_SIZE)); HV_STORE_CONST(h, "LongLongSize", newSViv(CTLIB_long_long_SIZE)); HV_STORE_CONST(h, "FloatSize", newSViv(CTLIB_float_SIZE)); HV_STORE_CONST(h, "DoubleSize", newSViv(CTLIB_double_SIZE)); HV_STORE_CONST(h, "LongDoubleSize", newSViv(CTLIB_long_double_SIZE)); HV_STORE_CONST(h, "Alignment", newSViv(CTLIB_ALIGNMENT)); HV_STORE_CONST(h, "CompoundAlignment", newSViv(CTLIB_COMPOUND_ALIGNMENT)); HV_STORE_CONST(h, "EnumSize", newSViv(get_native_enum_size())); HV_STORE_CONST(h, "ByteOrder", newSVpv(native_byteorder, 0)); HV_STORE_CONST(h, "UnsignedChars", newSViv(get_native_unsigned_chars())); HV_STORE_CONST(h, "UnsignedBitfields", newSViv(get_native_unsigned_bitfields())); HV_STORE_CONST(h, "StdCVersion", STD_C_NATIVE); HV_STORE_CONST(h, "HostedC", HOSTED_C_NATIVE); return newRV_noinc((SV *)h); } switch (get_config_option(property)) { case OPTION_PointerSize: return newSViv(CTLIB_POINTER_SIZE); case OPTION_IntSize: return newSViv(CTLIB_int_SIZE); case OPTION_CharSize: return newSViv(CTLIB_char_SIZE); case OPTION_ShortSize: return newSViv(CTLIB_short_SIZE); case OPTION_LongSize: return newSViv(CTLIB_long_SIZE); case OPTION_LongLongSize: return newSViv(CTLIB_long_long_SIZE); case OPTION_FloatSize: return newSViv(CTLIB_float_SIZE); case OPTION_DoubleSize: return newSViv(CTLIB_double_SIZE); case OPTION_LongDoubleSize: return newSViv(CTLIB_long_double_SIZE); case OPTION_Alignment: return newSViv(CTLIB_ALIGNMENT); case OPTION_CompoundAlignment: return newSViv(CTLIB_COMPOUND_ALIGNMENT); case OPTION_EnumSize: return newSViv(get_native_enum_size()); case OPTION_ByteOrder: return newSVpv(native_byteorder, 0); case OPTION_UnsignedChars: return newSViv(get_native_unsigned_chars()); case OPTION_UnsignedBitfields: return newSViv(get_native_unsigned_bitfields()); case OPTION_StdCVersion: return STD_C_NATIVE; case OPTION_HostedC: return HOSTED_C_NATIVE; default: return NULL; } } Convert-Binary-C-0.76/cbc/option.h0000644000175000001440000000355711550664613015434 0ustar mhxusers/******************************************************************************* * * HEADER: option.h * ******************************************************************************** * * DESCRIPTION: C::B::C options * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:15 +0200 $ * $Revision: 12 $ * $Source: /cbc/option.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_OPTION_H #define _CBC_OPTION_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "util/list.h" #include "cbc/cbc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { unsigned option_modified : 1; unsigned impacts_layout : 1; unsigned impacts_preproc : 1; } HandleOptionResult; /*===== FUNCTION PROTOTYPES ==================================================*/ #define handle_string_list CBC_handle_string_list void handle_string_list(pTHX_ const char *option, LinkedList list, SV *sv, SV **rval); #define handle_option CBC_handle_option void handle_option(pTHX_ CBC *THIS, SV *opt, SV *sv_val, SV **rval, HandleOptionResult *p_res); #define get_configuration CBC_get_configuration SV *get_configuration(pTHX_ CBC *THIS); #define get_native_property CBC_get_native_property SV *get_native_property(pTHX_ const char *property); #endif Convert-Binary-C-0.76/cbc/member.c0000644000175000001440000011223711550664613015362 0ustar mhxusers/******************************************************************************* * * MODULE: member.c * ******************************************************************************** * * DESCRIPTION: C::B::C compound member utilities * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:15 +0200 $ * $Revision: 28 $ * $Source: /cbc/member.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #include #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "cbc/member.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ /* for fast index -> string conversion */ #define MAX_IXSTR 15 /*===== TYPEDEFS =============================================================*/ typedef enum { GMS_NONE, GMS_PAD, GMS_HIT_OFF, GMS_HIT } GMSRV; typedef union { LinkedList list; int count; } AMSInfo; struct member_expr { enum { ST_MEMBER, ST_INDEX, ST_FINISH_INDEX, ST_SEARCH, ST_TERM } state; const char *p; unsigned startup : 1; unsigned has_dot : 1; char buf[1]; }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void get_ams_struct(pTHX_ Struct *pStruct, SV *name, int level, AMSInfo *info); static void get_ams_type(pTHX_ TypeSpec *pTS, Declarator *pDecl, int dimension, SV *name, int level, AMSInfo *info); static GMSRV append_member_string_rec(pTHX_ const TypeSpec *pType, const Declarator *pDecl, int offset, SV *sv, GMSInfo *pInfo); static GMSRV get_member_string_rec(pTHX_ const Struct *pStruct, int offset, int realoffset, SV *sv, GMSInfo *pInfo); static int search_struct_member(Struct *pStruct, const char *elem, StructDeclaration **ppSD, Declarator **ppD); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_ams_struct * * WRITTEN BY: Marcus Holland-Moritz ON: Jul 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void get_ams_struct(pTHX_ Struct *pStruct, SV *name, int level, AMSInfo *info) { ListIterator sdi; StructDeclaration *pStructDecl; Declarator *pDecl; STRLEN len; CT_DEBUG(MAIN, (XSCLASS "::get_ams_struct( pStruct=%p, name='%s', level=%d, info=%p )", pStruct, name ? SvPV_nolen(name) : "", level, info)); if (name) { len = SvCUR(name); sv_catpvn_nomg(name, ".", 1); } LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { /* skip unnamed bitfield members right here */ if (pDecl->bitfield_flag && pDecl->identifier[0] == '\0') continue; if (name) { SvCUR_set(name, len+1); sv_catpvn_nomg(name, pDecl->identifier, CTT_IDLEN(pDecl)); } get_ams_type(aTHX_ &pStructDecl->type, pDecl, 0, name, level+1, info); } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); if (name) SvCUR_set(name, len); get_ams_struct(aTHX_ (Struct *) pTS->ptr, name, level+1, info); } } if (name) SvCUR_set(name, len); } /******************************************************************************* * * ROUTINE: get_ams_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jul 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void get_ams_type(pTHX_ TypeSpec *pTS, Declarator *pDecl, int dimension, SV *name, int level, AMSInfo *info) { CT_DEBUG(MAIN, (XSCLASS "::get_ams_type( pTS=%p, pDecl=%p, dimension=%d, " "name='%s', level=%d, info=%p )", pTS, pDecl, dimension, name ? SvPV_nolen(name) : "", level, info)); if (pDecl && pDecl->array_flag && dimension < LL_count(pDecl->ext.array)) { Value *pValue = (Value *) LL_get(pDecl->ext.array, dimension); if ((pValue->flags & V_IS_UNDEF) == 0) { long i, ix, s = pValue->iv; STRLEN len; char ixstr[MAX_IXSTR+1]; int ixlen; if (name) { len = SvCUR(name); sv_catpvn_nomg(name, "[", 1); ixstr[MAX_IXSTR-1] = ']'; ixstr[MAX_IXSTR] = '\0'; } for (i = 0; i < s; i++) { if (name) { SvCUR_set(name, len+1); for (ix = i, ixlen = 2; ixlen < MAX_IXSTR; ix /= 10, ixlen++) { ixstr[MAX_IXSTR-ixlen] = (char)('0'+(ix%10)); if (ix < 10) break; } sv_catpvn_nomg(name, ixstr+MAX_IXSTR-ixlen, ixlen); } get_ams_type(aTHX_ pTS, pDecl, dimension+1, name, level+1, info); } if (name) SvCUR_set(name, len); } } else { if (pDecl && pDecl->pointer_flag) goto handle_basic; else if (pTS->tflags & T_TYPE) { Typedef *pTD = (Typedef *) pTS->ptr; get_ams_type(aTHX_ pTD->pType, pTD->pDecl, 0, name, level, info); } else if (pTS->tflags & T_COMPOUND) { Struct *pStruct = pTS->ptr; if (pStruct->declarations == NULL) WARN_UNDEF_STRUCT(pStruct); get_ams_struct(aTHX_ pStruct, name, level, info); } else { handle_basic: if (name) LL_push(info->list, newSVsv(name)); else info->count++; } } } /******************************************************************************* * * ROUTINE: append_member_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static GMSRV append_member_string_rec(pTHX_ const TypeSpec *pType, const Declarator *pDecl, int offset, SV *sv, GMSInfo *pInfo) { CT_DEBUG(MAIN, ("append_member_string_rec( off=%d, sv='%s' )", offset, SvPV_nolen(sv))); if (pDecl && pDecl->identifier[0] != '\0') { CT_DEBUG(MAIN, ("Appending identifier [%s]", pDecl->identifier)); sv_catpvf(sv, ".%s", CONST_CHAR(pDecl->identifier)); } if (pDecl == NULL && pType->tflags & T_TYPE) { Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } if (pDecl != NULL) { if (pDecl->offset > 0) offset -= pDecl->offset; for(;;) { int index, size; Value *pValue; if (pDecl->size < 0) fatal("pDecl->size is not initialized in append_member_string_rec()"); size = pDecl->size; if (pDecl->array_flag) { ListIterator ai; LL_foreach(pValue, ai, pDecl->ext.array) { size /= pValue->iv; index = offset/size; CT_DEBUG(MAIN, ("Appending array size [%d]", index)); sv_catpvf(sv, "[%d]", index); offset -= index*size; } } if (pDecl->pointer_flag || (pType->tflags & T_TYPE) == 0) break; do { Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } while (!pDecl->pointer_flag && pType->tflags & T_TYPE && pDecl->array_flag == 0); } } if ((pDecl == NULL || !pDecl->pointer_flag) && pType->tflags & T_COMPOUND) return get_member_string_rec(aTHX_ pType->ptr, offset, offset, sv, pInfo); if (offset > 0) { CT_DEBUG(MAIN, ("Appending type offset [+%d]", offset)); sv_catpvf(sv, "+%d", offset); if (pInfo && pInfo->off) LL_push(pInfo->off, newSVsv(sv)); return GMS_HIT_OFF; } if (pInfo && pInfo->hit) LL_push(pInfo->hit, newSVsv(sv)); return GMS_HIT; } /******************************************************************************* * * ROUTINE: get_member_string_rec * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define GMS_HANDLE_PAD_REGION \ STMT_START { \ CT_DEBUG(MAIN, ("Padding region found, exiting")); \ sv_catpvf(sv, "+%d", realoffset); \ if (pInfo && pInfo->pad) \ { \ const char *str; \ STRLEN len; \ str = SvPV(sv, len); \ if (HT_store(pInfo->htpad, str, len, 0, NULL)) \ LL_push(pInfo->pad, newSVsv(sv)); \ } \ return GMS_PAD; \ } STMT_END #define GMS_HANDLE_BEST_MEMBER \ STMT_START { \ if (rval > best) \ { \ CT_DEBUG(MAIN, ("New member [%s] has better ranking (%d) than " \ "old member [%s] (%d)", SvPV_nolen(tmpSV), rval, \ bestSV ? SvPV_nolen(bestSV) : "", best)); \ \ best = rval; \ \ if (bestSV) \ { \ SV *t; \ t = tmpSV; \ tmpSV = bestSV; \ bestSV = t; \ } \ else \ { \ bestSV = tmpSV; \ tmpSV = NULL; \ } \ } \ \ if (best == GMS_HIT && pInfo == NULL) \ { \ CT_DEBUG(MAIN, ("Hit compound member without offset")); \ goto handle_union_end; \ } \ } STMT_END static GMSRV get_member_string_rec(pTHX_ const Struct *pStruct, int offset, int realoffset, SV *sv, GMSInfo *pInfo) { ListIterator sdi; StructDeclaration *pStructDecl; Declarator *pDecl; SV *tmpSV, *bestSV; GMSRV best; int isUnion; CT_DEBUG(MAIN, ("get_member_string_rec( off=%d, roff=%d, sv='%s' )", offset, realoffset, SvPV_nolen(sv))); if (pStruct->declarations == NULL) { WARN_UNDEF_STRUCT(pStruct); return GMS_NONE; } if ((isUnion = pStruct->tflags & T_UNION) != 0) { best = GMS_NONE; bestSV = NULL; tmpSV = NULL; } LL_foreach(pStructDecl, sdi, pStruct->declarations) { CT_DEBUG(MAIN, ("Current StructDecl: offset=%d size=%d decl=%p", pStructDecl->offset, pStructDecl->size, pStructDecl->declarators)); if (pStructDecl->offset > offset) GMS_HANDLE_PAD_REGION; if (pStructDecl->offset <= offset && offset < pStructDecl->offset+pStructDecl->size) { CT_DEBUG(MAIN, ("Member possilbly within current StructDecl (%d <= %d < %d)", pStructDecl->offset, offset, pStructDecl->offset+pStructDecl->size)); if (pStructDecl->declarators == NULL) { TypeSpec *pTS; CT_DEBUG(MAIN, ("Current StructDecl is an unnamed %s", isUnion ? "union" : "struct")); pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); if (isUnion) { GMSRV rval; if (tmpSV == NULL) tmpSV = newSVsv(sv); else sv_setsv(tmpSV, sv); rval = get_member_string_rec(aTHX_ (Struct *) pTS->ptr, offset, realoffset, tmpSV, pInfo); GMS_HANDLE_BEST_MEMBER; } else /* not isUnion */ { return get_member_string_rec(aTHX_ (Struct *) pTS->ptr, offset - pStructDecl->offset, realoffset, sv, pInfo); } } else { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { CT_DEBUG(MAIN, ("Current Declarator [%s]: offset=%d size=%d", pDecl->identifier, pDecl->offset, pDecl->size)); if (pDecl->offset > offset) GMS_HANDLE_PAD_REGION; if (pDecl->offset <= offset && offset < pDecl->offset+pDecl->size) { CT_DEBUG(MAIN, ("Member possibly within current Declarator [%s] " "( %d <= %d < %d )", pDecl->identifier, pDecl->offset, offset, pDecl->offset+pDecl->size)); if (isUnion) { GMSRV rval; if (tmpSV == NULL) tmpSV = newSVsv(sv); else sv_setsv(tmpSV, sv); rval = append_member_string_rec(aTHX_ &pStructDecl->type, pDecl, offset, tmpSV, pInfo); GMS_HANDLE_BEST_MEMBER; } else /* not isUnion */ { return append_member_string_rec(aTHX_ &pStructDecl->type, pDecl, offset, sv, pInfo); } } } } } } CT_DEBUG(MAIN, ("End of %s reached", isUnion ? "union" : "struct")); if (!isUnion || bestSV == NULL) GMS_HANDLE_PAD_REGION; handle_union_end: if (!isUnion) fatal("not a union!"); if (bestSV == NULL) fatal("bestSV not set!"); sv_setsv(sv, bestSV); SvREFCNT_dec(bestSV); if (tmpSV) SvREFCNT_dec(tmpSV); return best; } /******************************************************************************* * * ROUTINE: search_struct_member * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int search_struct_member(Struct *pStruct, const char *elem, StructDeclaration **ppSD, Declarator **ppD) { ListIterator sdi; StructDeclaration *pStructDecl; Declarator *pDecl = NULL; int offset; LL_foreach(pStructDecl, sdi, pStruct->declarations) { if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { if (strEQ(pDecl->identifier, elem)) break; } if (pDecl) { offset = pDecl->offset; break; } } else { TypeSpec *pTS = &pStructDecl->type; FOLLOW_AND_CHECK_TSPTR(pTS); offset = pStructDecl->offset; offset += search_struct_member((Struct *) pTS->ptr, elem, &pStructDecl, &pDecl); if (pDecl) break; } } *ppSD = pStructDecl; *ppD = pDecl; if (pDecl) return offset < 0 ? 0 : offset; return -1; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_all_member_strings * * WRITTEN BY: Marcus Holland-Moritz ON: Jul 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_all_member_strings(pTHX_ MemberInfo *pMI, LinkedList list) { AMSInfo info; if (list) info.list = list; else info.count = 0; get_ams_type(aTHX_ &pMI->type, pMI->pDecl, pMI->level, list ? sv_2mortal(newSVpvn("", 0)) : NULL, 0, &info); return list ? LL_count(list) : info.count; } /******************************************************************************* * * ROUTINE: get_member_string * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ SV *get_member_string(pTHX_ const MemberInfo *pMI, int offset, GMSInfo *pInfo) { GMSRV rval; SV *sv; int dim; CT_DEBUG(MAIN, ("get_member_string( off=%d )", offset)); if (pInfo) pInfo->htpad = HT_new(4); sv = newSVpvn("", 0); /* handle array remainder here */ if (pMI->pDecl && pMI->pDecl->array_flag && pMI->level < (dim = LL_count(pMI->pDecl->ext.array))) { int i, index, size = pMI->size; for (i = pMI->level; i < dim; i++) { size /= ((Value *) LL_get(pMI->pDecl->ext.array, i))->iv; index = offset / size; sv_catpvf(sv, "[%d]", index); offset -= index*size; } } rval = append_member_string_rec(aTHX_ &pMI->type, NULL, offset, sv, pInfo); if (pInfo) HT_destroy(pInfo->htpad, NULL); if (rval == GMS_NONE) { SvREFCNT_dec(sv); sv = newSV(0); } return sv_2mortal(sv); } /******************************************************************************* * * ROUTINE: get_member * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define TRUNC_NAME \ STMT_START { \ strncpy(trunc, name, 20); \ if (strlen(name) > 20) \ { \ trunc[17] = trunc[18] = trunc[19] = '.'; \ trunc[20] = '\0'; \ } \ } STMT_END #define PROPAGATE_FLAGS(from) \ STMT_START { \ if (pMIout) \ pMIout->flags |= (from) & (T_HASBITFIELD | T_UNSAFE_VAL); \ } STMT_END #define CANNOT_ACCESS_MEMBER(type) \ STMT_START { \ assert(name != NULL); \ TRUNC_NAME; \ (void) sprintf(err = errbuf, \ "Cannot access member '%s' of " type " type", trunc); \ goto error; \ } STMT_END int get_member(pTHX_ const MemberInfo *pMI, const char *member, MemberInfo *pMIout, unsigned gm_flags) { unsigned accept_dotless_member = gm_flags & CBC_GM_ACCEPT_DOTLESS_MEMBER; const unsigned do_calc = (gm_flags & CBC_GM_NO_OFFSET_SIZE_CALC) == 0; const unsigned reject_oobi = gm_flags & CBC_GM_REJECT_OUT_OF_BOUNDS_INDEX; const unsigned reject_offset = gm_flags & CBC_GM_REJECT_OFFSET; const TypeSpec *pType; int size, level, t_off; int offset; Struct *pStruct; StructDeclaration *pSD; Declarator *pDecl; char *err, errbuf[128], trunc[32]; MemberExprWalker walker; const char *name; CT_DEBUG(MAIN, ("get_member( member=\"%s\", accept_dotless_member=%d, do_calc=%d, reject_oobi=%d )", member, accept_dotless_member, do_calc, reject_oobi)); walker = member_expr_walker_new(aTHX_ member, 0); if (pMIout) pMIout->flags = 0; pStruct = NULL; pType = &pMI->type; pDecl = pMI->pDecl; if (pDecl == NULL && pType->tflags & T_TYPE) { Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } name = NULL; err = NULL; offset = 0; level = pMI->level; size = do_calc ? -1 : 0; if (do_calc && pDecl) { int i; size = pDecl->size; if (level > 0) { assert(pDecl->array_flag); if (size < 0) fatal("pDecl->size is not initialized in get_member()"); for (i = 0; i < level; i++) size /= ((Value *) LL_get(pDecl->ext.array, i))->iv; } } for (;;) { struct me_walk_info mei; member_expr_walker_walk(aTHX_ walker, &mei); CT_DEBUG(MAIN, ("(offset=%d, level=%d, size=%d) %s (%d)", offset, level, size, member_expr_walker_retval_string(mei.retval), (int) mei.retval)); if (mei.retval == MERV_END) { break; } switch (mei.retval) { case MERV_ERR_INVALID_MEMBER_START: err = "Struct members must start with a character or an underscore"; goto error; case MERV_ERR_INVALID_INDEX: err = "Array indices must be constant decimal values"; goto error; case MERV_ERR_INVALID_CHAR: (void) sprintf(err = errbuf, "Invalid character '%c' (0x%02X) in " "compound member expression", mei.u.invalid_char, (int) mei.u.invalid_char); goto error; case MERV_ERR_INDEX_NOT_TERMINATED: err = "Index operator not terminated correctly"; goto error; case MERV_ERR_INCOMPLETE: err = "Incomplete compound member expression"; goto error; case MERV_ERR_TERMINATED: fatal("member expression already terminated in get_member()"); break; default: /* handled in next switch */ break; } PROPAGATE_FLAGS(pType->tflags); if (pDecl && !pDecl->pointer_flag && pType->tflags & T_TYPE && level == (pDecl->array_flag ? LL_count(pDecl->ext.array) : 0)) { do { Typedef *pTypedef = (Typedef *) pType->ptr; pDecl = pTypedef->pDecl; pType = pTypedef->pType; } while (!pDecl->pointer_flag && pType->tflags & T_TYPE && pDecl->array_flag == 0); if (do_calc) { size = pDecl->size; } level = 0; } switch (mei.retval) { case MERV_COMPOUND_MEMBER: { name = mei.u.compound_member.name; CT_DEBUG(MAIN, ("MEMBER: \"%s\"%s", name, mei.u.compound_member.has_dot ? " [dot]" : "")); if (!accept_dotless_member && !mei.u.compound_member.has_dot) { (void) sprintf(err = errbuf, "Invalid character '%c' (0x%02X) in " "compound member expression", name[0], (int) name[0]); goto error; } if (pDecl && pDecl->array_flag && level < LL_count(pDecl->ext.array)) CANNOT_ACCESS_MEMBER("array"); else if (pDecl && pDecl->pointer_flag) CANNOT_ACCESS_MEMBER("pointer"); else if (pType->tflags & T_COMPOUND) { pStruct = (Struct *) pType->ptr; PROPAGATE_FLAGS(pStruct->tflags); } else CANNOT_ACCESS_MEMBER("non-compound"); t_off = search_struct_member(pStruct, name, &pSD, &pDecl); pType = &pSD->type; if (t_off < 0) { TRUNC_NAME; (void) sprintf(err = errbuf, "Cannot find %s member '%s'", pStruct->tflags & T_STRUCT ? "struct" : "union", trunc); goto error; } if (do_calc) { size = pDecl->size; offset += t_off; } level = 0; } break; case MERV_ARRAY_INDEX: { int dim; if (pDecl == NULL || (level == 0 && pDecl->array_flag == 0)) { if (name) { TRUNC_NAME; (void) sprintf(err = errbuf, "Cannot use '%s' as an array", trunc); } else err = "Cannot use type as an array"; goto error; } assert(pDecl->array_flag); dim = LL_count(pDecl->ext.array); if (level >= dim) { if (name) { TRUNC_NAME; (void) sprintf(err = errbuf, "Cannot use '%s' as a %d-dimensional array", trunc, level+1); } else { (void) sprintf(err = errbuf, "Cannot use type as a %d-dimensional array", level+1); } goto error; } else { Value *pValue; int index; pValue = (Value *) LL_get(pDecl->ext.array, level); index = mei.u.array_index; CT_DEBUG(MAIN, ("INDEX: %d", index)); if (pValue->flags & V_IS_UNDEF) { if (do_calc) { size = pDecl->item_size; if (size <= 0) fatal("pDecl->item_size is not initialized in get_member()"); while (dim-- > level+1) size *= ((Value *) LL_get(pDecl->ext.array, dim))->iv; } } else { dim = pValue->iv; if (reject_oobi) { if (index < 0) { (void) sprintf(err = errbuf, "Cannot use negative index %d into array", index); goto error; } else if (index >= dim) { (void) sprintf(err = errbuf, "Cannot use index %d into array of size %d", index, dim); goto error; } } if (do_calc) { if (size < 0) fatal("size is not initialized in get_member()"); size /= dim; } } if (do_calc) { if (size < 0) fatal("size is not initialized in get_member()"); offset += index * size; } level++; } } break; case MERV_OFFSET: if (reject_offset) { err = "Cannot use offset in compound member expression"; goto error; } if (do_calc) { offset += mei.u.offset; } break; default: /* all error cases have been handled above */ fatal("unexpected retval (%d) in get_member()", (int) mei.retval); break; } /* only accept dotless members at the very beginning */ accept_dotless_member = 0; } error: member_expr_walker_delete(aTHX_ walker); if (err != NULL) { if (gm_flags & CBC_GM_DONT_CROAK) return 0; Perl_croak(aTHX_ "%s", err); } CT_DEBUG(MAIN, ("FINISHED: typespec=[ptr=%p, flags=0x%lX], pDecl=%p[dim=%d], level=%d, offset=%d, size=%d, parent=%p", pType->ptr, (unsigned long) pType->tflags, pDecl, pDecl && pDecl->array_flag ? LL_count(pDecl->ext.array) : 0, level, offset, size, pStruct)); if (pMIout) { pMIout->type = *pType; pMIout->parent = pStruct; pMIout->pDecl = pDecl; pMIout->level = level; pMIout->offset = offset; pMIout->size = (unsigned) size; } return 1; } #undef TRUNC_NAME #undef PROPAGATE_FLAGS #undef CANNOT_ACCESS_MEMBER /******************************************************************************* * * ROUTINE: member_expr_walker_new * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ MemberExprWalker member_expr_walker_new(pTHX_ const char *expr, size_t len) { MemberExprWalker me; assert(expr != NULL); if (len == 0) len = strlen(expr); Newc(0, me, offsetof(struct member_expr, buf) + len + 1, char, struct member_expr); me->state = ST_SEARCH; me->p = expr; me->startup = 1; me->has_dot = 0; CT_DEBUG(MAIN, ("(walk) created new walker @ %p", me)); return me; } /******************************************************************************* * * ROUTINE: member_expr_walker_retval_string * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const char *member_expr_walker_retval_string(enum me_walk_rv retval) { static const char *Sretval[] = { "MERV_COMPOUND_MEMBER", "MERV_ARRAY_INDEX", "MERV_OFFSET", "MERV_ERR_INVALID_MEMBER_START", "MERV_ERR_INVALID_INDEX", "MERV_ERR_INVALID_CHAR", "MERV_ERR_INDEX_NOT_TERMINATED", "MERV_ERR_INCOMPLETE", "MERV_ERR_TERMINATED", "MERV_END" }; return Sretval[retval]; } /******************************************************************************* * * ROUTINE: member_expr_walker_walk * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void member_expr_walker_walk(pTHX_ MemberExprWalker me, struct me_walk_info *info) { #ifdef CBC_DEBUGGING static const char *Sstate[] = { "ST_MEMBER", "ST_INDEX", "ST_FINISH_INDEX", "ST_SEARCH", "ST_TERM" }; #endif const char *c, *ixstr; assert(me != NULL); if (me->state == ST_TERM) { info->retval = MERV_ERR_TERMINATED; return; } c = me->p; for (;;) { CT_DEBUG(MAIN, ("(walk) state = %s (%d) \"%s\"%s%s", Sstate[me->state], me->state, c, me->startup ? " [startup]" : "", me->has_dot ? " [dot]" : "")); while (isSPACE(*c)) c++; if (*c == '\0') { if (me->state != ST_SEARCH) { info->retval = MERV_ERR_INCOMPLETE; goto error; } info->retval = MERV_END; me->state = ST_TERM; return; } switch (me->state) { case ST_MEMBER: if(!(isALPHA(*c) || *c == '_')) { info->retval = MERV_ERR_INVALID_MEMBER_START; goto error; } else { char *e = &me->buf[0]; do *e++ = *c++; while (isALNUM(*c) || *c == '_'); *e = '\0'; info->retval = MERV_COMPOUND_MEMBER; info->u.compound_member.name = &me->buf[0]; info->u.compound_member.name_length = e - &me->buf[0]; info->u.compound_member.has_dot = me->has_dot; goto found; } case ST_INDEX: ixstr = c; if (*c == '-' || *c == '+') { c++; } if (!isDIGIT(*c)) { info->retval = MERV_ERR_INVALID_INDEX; goto error; } do c++; while (isDIGIT(*c)); me->state = ST_FINISH_INDEX; break; case ST_FINISH_INDEX: if (*c++ != ']') { info->retval = MERV_ERR_INDEX_NOT_TERMINATED; goto error; } info->retval = MERV_ARRAY_INDEX; info->u.array_index = atoi(ixstr); goto found; case ST_SEARCH: { int inc_c = 1; switch (*c) { case '+': if (*(c+1) != '\0') { const char *p = c+1; while (isDIGIT(*p)) p++; while (isSPACE(*p)) p++; /* only allowed at end of string */ if (*p == '\0') { info->retval = MERV_OFFSET; info->u.offset = atoi(c+1); c = p; goto found; } } /* fall through */ default: if (!me->startup || !(isALPHA(*c) || *c == '_')) { info->retval = MERV_ERR_INVALID_CHAR; info->u.invalid_char = *c; goto error; } inc_c = 0; /* fall through */ case '.': me->has_dot = *c == '.'; me->state = ST_MEMBER; break; case '[': me->state = ST_INDEX; break; } if (inc_c) c++; } break; default: fatal("invalid state (%d) in member_expr_walker_walk()", (int) me->state); break; } /* only accept dotless members at the very beginning */ me->startup = 0; } error: /* no need to update me->p here */ me->state = ST_TERM; return; found: me->p = c; me->state = ST_SEARCH; } /******************************************************************************* * * ROUTINE: member_expr_walker_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void member_expr_walker_delete(pTHX_ MemberExprWalker me) { assert(me != NULL); CT_DEBUG(MAIN, ("(walk) delete walker @ %p", me)); Safefree(me); } Convert-Binary-C-0.76/cbc/member.h0000644000175000001440000000651011550664613015363 0ustar mhxusers/******************************************************************************* * * HEADER: member.h * ******************************************************************************** * * DESCRIPTION: C::B::C struct member utilities * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:15 +0200 $ * $Revision: 12 $ * $Source: /cbc/member.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CBC_MEMBER_H #define _CBC_MEMBER_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "util/list.h" #include "util/hash.h" #include "ctlib/cttype.h" /*===== DEFINES ==============================================================*/ #define CBC_GM_ACCEPT_DOTLESS_MEMBER 0x00000001U #define CBC_GM_DONT_CROAK 0x00000002U #define CBC_GM_NO_OFFSET_SIZE_CALC 0x00000004U #define CBC_GM_REJECT_OUT_OF_BOUNDS_INDEX 0x00000008U #define CBC_GM_REJECT_OFFSET 0x00000010U /*===== TYPEDEFS =============================================================*/ typedef struct { LinkedList hit, off, pad; HashTable htpad; } GMSInfo; typedef struct { TypeSpec type; Struct *parent; Declarator *pDecl; int level; int offset; unsigned size; u_32 flags; } MemberInfo; struct me_walk_info { enum me_walk_rv { MERV_COMPOUND_MEMBER, MERV_ARRAY_INDEX, MERV_OFFSET, MERV_ERR_INVALID_MEMBER_START, MERV_ERR_INVALID_INDEX, MERV_ERR_INVALID_CHAR, MERV_ERR_INDEX_NOT_TERMINATED, MERV_ERR_INCOMPLETE, MERV_ERR_TERMINATED, MERV_END } retval; union { struct { const char *name; size_t name_length; unsigned has_dot : 1; } compound_member; int array_index; int offset; char invalid_char; } u; }; typedef struct member_expr *MemberExprWalker; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_all_member_strings CBC_get_all_member_strings int get_all_member_strings(pTHX_ MemberInfo *pMI, LinkedList list); #define get_member_string CBC_get_member_string SV *get_member_string(pTHX_ const MemberInfo *pMI, int offset, GMSInfo *pInfo); #define get_member CBC_get_member int get_member(pTHX_ const MemberInfo *pMI, const char *member, MemberInfo *pMIout, unsigned gm_flags); #define member_expr_walker_new CBC_member_expr_walker_new MemberExprWalker member_expr_walker_new(pTHX_ const char *expr, size_t len); #define member_expr_walker_retval_string CBC_member_expr_walker_retval_string const char *member_expr_walker_retval_string(enum me_walk_rv retval); #define member_expr_walker_walk CBC_member_expr_walker_walk void member_expr_walker_walk(pTHX_ MemberExprWalker me, struct me_walk_info *info); #define member_expr_walker_delete CBC_member_expr_walker_delete void member_expr_walker_delete(pTHX_ MemberExprWalker me); #endif Convert-Binary-C-0.76/lib/0000755000175000001440000000000011550665107013757 5ustar mhxusersConvert-Binary-C-0.76/lib/Convert/0000755000175000001440000000000011550665107015377 5ustar mhxusersConvert-Binary-C-0.76/lib/Convert/Binary/0000755000175000001440000000000011550665107016623 5ustar mhxusersConvert-Binary-C-0.76/lib/Convert/Binary/C/0000755000175000001440000000000011550665107017005 5ustar mhxusersConvert-Binary-C-0.76/lib/Convert/Binary/C/Cached.pm0000644000175000001440000002533611550664617020530 0ustar mhxusers################################################################################ # # MODULE: Convert::Binary::C::Cached # ################################################################################ # # DESCRIPTION: Cached version of Convert::Binary::C module # ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 14:44:54 +0200 $ # $Revision: 38 $ # $Source: /lib/Convert/Binary/C/Cached.pm $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ package Convert::Binary::C::Cached; use strict; use Convert::Binary::C; use Carp; use vars qw( @ISA $VERSION ); @ISA = qw(Convert::Binary::C); $VERSION = do { my @r = '$Snapshot: /Convert-Binary-C/0.76 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; $VERSION = eval $VERSION; sub new { my $class = shift; my $self = $class->SUPER::new; $self->{cache} = undef; $self->{parsed} = 0; $self->{uses_cache} = 0; @_ % 2 and croak "Number of configuration arguments to new must be even"; @_ and $self->configure(@_); return $self; } sub configure { my $self = shift; if (@_ < 2 and not defined wantarray) { $^W and carp "Useless use of configure in void context"; return; } if (@_ == 0) { my $cfg = $self->SUPER::configure; $cfg->{Cache} = $self->{cache}; return $cfg; } elsif (@_ == 1 and $_[0] eq 'Cache') { return $self->{cache}; } my @args; if (@_ == 1) { @args = @_; } elsif (@_ % 2 == 0) { while (@_) { my %arg = splice @_, 0, 2; if (exists $arg{Cache}) { if ($self->{parsed}) { croak 'Cache cannot be configured after parsing'; } elsif (ref $arg{Cache}) { croak 'Cache must be a string value, not a reference'; } else { if (defined $arg{Cache}) { my @missing; eval { require Data::Dumper }; $@ and push @missing, 'Data::Dumper'; eval { require IO::File }; $@ and push @missing, 'IO::File'; if (@missing) { $^W and carp "Cannot load ", join(' and ', @missing), ", disabling cache"; undef $arg{Cache}; } } $self->{cache} = $arg{Cache}; } } else { push @args, %arg } } } my $opt = $self; if (@args) { $opt = eval { $self->SUPER::configure(@args) }; $@ =~ s/\s+at.*?Cached\.pm.*//s, croak $@ if $@; } $opt; } sub clean { my $self = shift; delete $self->{$_} for grep !/^(?:|cache|parsed|uses_cache)$/, keys %$self; $self->{parsed} = 0; $self->{uses_cache} = 0; $self->SUPER::clean; } sub clone { my $self = shift; unless (defined wantarray) { $^W and carp "Useless use of clone in void context"; return; } my $clone = $self->SUPER::clone; for (keys %$self) { if ($_) { $clone->{$_} = ref $_ eq 'ARRAY' ? [@{$self->{$_}}] : $self->{$_}; } } $clone; } sub parse_file { my $self = shift; my($warn,$error) = $self->__parse('file', $_[0]); for my $w ( @$warn ) { carp $w } defined $error and croak $error; defined wantarray and return $self; } sub parse { my $self = shift; my($warn,$error) = $self->__parse('code', $_[0]); for my $w ( @$warn ) { carp $w } defined $error and croak $error; defined wantarray and return $self; } sub dependencies { my $self = shift; $self->{parsed} or croak "Call to dependencies without parse data"; unless (defined wantarray) { $^W and carp "Useless use of dependencies in void context"; return; } $self->{files} || $self->SUPER::dependencies; } sub __uses_cache { my $self = shift; $self->{uses_cache}; } sub __parse { my $self = shift; if (defined $self->{cache}) { $self->{parsed} and croak "Cannot parse more than once for cached objects"; $self->{$_[0]} = $_[1]; if ($self->__can_use_cache) { my @WARN; { local $SIG{__WARN__} = sub { push @WARN, $_[0] }; eval { $self->SUPER::parse_file($self->{cache}) }; } unless ($@ or @WARN) { $self->{parsed} = 1; $self->{uses_cache} = 1; return; } $self->clean; } } $self->{parsed} = 1; my(@warnings, $error); { local $SIG{__WARN__} = sub { push @warnings, $_[0] }; if ($_[0] eq 'file') { eval { $self->SUPER::parse_file($_[1]) }; } else { eval { $self->SUPER::parse($_[1]) }; } } if ($@) { $error = $@; $error =~ s/\s+at.*?Cached\.pm.*//s; } else { defined $self->{cache} and $self->__save_cache; } for (@warnings) { s/\s+at.*?Cached\.pm.*//s } (\@warnings, $error); } sub __can_use_cache { my $self = shift; my $fh = new IO::File; unless (-e $self->{cache} and -s _) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: cache file '$self->{cache}' doesn't exist or is empty\n"; return 0; } unless ($fh->open($self->{cache})) { $^W and carp "Cannot open '$self->{cache}': $!"; $ENV{CBCC_DEBUG} and print STDERR "CBCC: cannot open cache file '$self->{cache}'\n"; return 0; } my @warnings; my @config = do { my $config; unless (defined($config = <$fh>)) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: cannot read configuration\n"; return 0; } unless ($config =~ /^#if\s+0/) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: invalid configuration\n"; return 0; } local $/ = $/.'#endif'; chomp($config = <$fh>); $config =~ s/^\*//gms; local $SIG{__WARN__} = sub { push @warnings, $_[0] }; eval $config; }; # corrupt config if ($@ or @warnings or @config % 2) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: broken configuration\n"; return 0; } my %config = @config; my $what = exists $self->{code} ? 'code' : 'file'; unless (exists $config{$what} and $config{$what} eq $self->{$what} and __reccmp($config{cfg}, $self->configure)) { if ($ENV{CBCC_DEBUG}) { print STDERR "CBCC: configuration has changed\n"; print STDERR "CBCC: what='$what', \$config{$what}='$config{$what}' \$self->{$what}='$self->{$what}'\n"; my $dump = Data::Dumper->Dump([$config{cfg}, $self->configure], ['config', 'self']); $dump =~ s/^/CBCC: /mg; print STDERR $dump; } return 0; } while (my($file, $spec) = each %{$config{files}}) { unless (-e $file) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: file '$file' deleted\n"; return 0; } my($size, $mtime, $ctime) = (stat(_))[7,9,10]; unless ($spec->{size} == $size and $spec->{mtime} == $mtime and $spec->{ctime} == $ctime) { $ENV{CBCC_DEBUG} and print STDERR "CBCC: size/mtime/ctime of '$file' changed\n"; return 0; } } $self->{files} = $config{files}; $ENV{CBCC_DEBUG} and print STDERR "CBCC: '$self->{cache}' is usable\n"; return 1; } sub __save_cache { my $self = shift; my $fh = new IO::File; $fh->open(">$self->{cache}") or croak "Cannot open '$self->{cache}': $!"; my $what = exists $self->{code} ? 'code' : 'file'; my $config = Data::Dumper->new([{ $what => $self->{$what}, cfg => $self->configure, files => scalar $self->SUPER::dependencies, }], ['*'])->Indent(1)->Dump; $config =~ s/[^(]*//; $config =~ s/^/*/gms; print $fh "#if 0\n", $config, "#endif\n\n", do { local $^W; $self->sourcify({ Context => 1 }) }; } sub __reccmp { my($ref, $val) = @_; !defined($ref) && !defined($val) and return 1; !defined($ref) || !defined($val) and return 0; ref $ref or return $ref eq $val; if (ref $ref eq 'ARRAY') { @$ref == @$val or return 0; for (0..$#$ref) { __reccmp($ref->[$_], $val->[$_]) or return 0; } } elsif (ref $ref eq 'HASH') { keys %$ref == keys %$val or return 0; for (keys %$ref) { __reccmp($ref->{$_}, $val->{$_}) or return 0; } } else { return 0 } return 1; } 1; __END__ =head1 NAME Convert::Binary::C::Cached - Caching for Convert::Binary::C =head1 SYNOPSIS use Convert::Binary::C::Cached; use Data::Dumper; #------------------------ # Create a cached object #------------------------ $c = Convert::Binary::C::Cached->new( Cache => '/tmp/cache.c', Include => [ '/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include', '/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include-fixed', '/usr/include', ], ); #---------------------------------------------------- # Parse 'time.h' and dump the definition of timespec #---------------------------------------------------- $c->parse_file('time.h'); print Dumper($c->struct('timespec')); =head1 DESCRIPTION Convert::Binary::C::Cached simply adds caching capability to Convert::Binary::C. You can use it in just the same way that you would use Convert::Binary::C. The interface is exactly the same. To use the caching capability, you must pass the C option to the constructor. If you don't pass it, you will receive an ordinary Convert::Binary::C object. The argument to the C option is the file that is used for caching this object. The caching algorithm automatically detects when the cache file cannot be used and the original code has to be parsed. In that case, the cache file is updated. An update of the cache file can be triggered by one or more of the following factors: =over 2 =item * The cache file doesn't exist, which is obvious. =item * The cache file is corrupt, i.e. cannot be parsed. =item * The object's configuration has changed. =item * The embedded code for a L|Convert::Binary::C/"parse"> method call has changed. =item * At least one of the files that the object depends on does not exist or has a different size or a different modification or change timestamp. =back =head1 LIMITATIONS You cannot call L|Convert::Binary::C/"parse"> or L|Convert::Binary::C/"parse_file"> more that once when using a Convert::Binary::C::Cached object. This isn't a big problem, as you usually don't call them multiple times. If a dependency file changes, but the change affects neither the size nor the timestamps of that file, the caching algorithm cannot detect that an update is required. =head1 COPYRIGHT Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO See L. =cut Convert-Binary-C-0.76/lib/Convert/Binary/C.pm0000644000175000001440000044103311550664617017355 0ustar mhxusers################################################################################ # # MODULE: Convert::Binary::C # ################################################################################ # # DESCRIPTION: Convert::Binary::C Perl extension module # ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 14:44:53 +0200 $ # $Revision: 94 $ # $Source: /lib/Convert/Binary/C.pm $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ package Convert::Binary::C; use strict; use DynaLoader; use Carp; use vars qw( @ISA $VERSION $XS_VERSION $AUTOLOAD ); @ISA = qw(DynaLoader); $VERSION = do { my @r = '$Snapshot: /Convert-Binary-C/0.76 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; bootstrap Convert::Binary::C $XS_VERSION; # Unfortunately, XS AUTOLOAD isn't supported # by stable perl distributions before 5.8.0. sub AUTOLOAD { my $self = shift; my $opt = $AUTOLOAD; ref $self or croak "$self is not an object"; $opt =~ s/.*://; $opt =~ /^[A-Z]/ or croak "Invalid method $opt called"; @_ <= 1 or croak "$opt cannot take more than one argument"; unless (@_ or defined wantarray) { carp "Useless use of $opt in void context"; return; } my @warn; { local $SIG{__WARN__} = sub { push @warn, $_[0] }; $opt = eval { $self->configure( $opt, @_ ) }; } for my $w (@warn) { $w =~ s/\s+at.*?C\.pm.*//s; carp $w; } if ($@) { $@ =~ s/\s+at.*?C\.pm.*//s; croak $@; } $opt; } 1; __END__ =head1 NAME Convert::Binary::C - Binary Data Conversion using C Types =head1 SYNOPSIS =head2 Simple use Convert::Binary::C; #--------------------------------------------- # Create a new object and parse embedded code #--------------------------------------------- my $c = Convert::Binary::C->new->parse(< 2002, month => 'DEC', day => 24 }; my $packed = $c->pack('Date', $date); =head2 Advanced use Convert::Binary::C; use Data::Dumper; #--------------------- # Create a new object #--------------------- my $c = new Convert::Binary::C ByteOrder => 'BigEndian'; #--------------------------------------------------- # Add include paths and global preprocessor defines #--------------------------------------------------- $c->Include('/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include', '/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include-fixed', '/usr/include') ->Define(qw( __USE_POSIX __USE_ISOC99=1 )); #---------------------------------- # Parse the 'time.h' header file #---------------------------------- $c->parse_file('time.h'); #--------------------------------------- # See which files the object depends on #--------------------------------------- print Dumper([$c->dependencies]); #----------------------------------------------------------- # See if struct timespec is defined and dump its definition #----------------------------------------------------------- if ($c->def('struct timespec')) { print Dumper($c->struct('timespec')); } #------------------------------- # Create some binary dummy data #------------------------------- my $data = "binary_test_string"; #-------------------------------------------------------- # Unpack $data according to 'struct timespec' definition #-------------------------------------------------------- if (length($data) >= $c->sizeof('timespec')) { my $perl = $c->unpack('timespec', $data); print Dumper($perl); } #-------------------------------------------------------- # See which member lies at offset 5 of 'struct timespec' #-------------------------------------------------------- my $member = $c->member('timespec', 5); print "member('timespec', 5) = '$member'\n"; =head1 DESCRIPTION Convert::Binary::C is a preprocessor and parser for C type definitions. It is highly configurable and supports arbitrarily complex data structures. Its object-oriented interface has L|/"pack"> and L|/"unpack"> methods that act as replacements for Perl's L|perlfunc/"pack"> and L|perlfunc/"unpack"> and allow to use C types instead of a string representation of the data structure for conversion of binary data from and to Perl's complex data structures. Actually, what Convert::Binary::C does is not very different from what a C compiler does, just that it doesn't compile the source code into an object file or executable, but only parses the code and allows Perl to use the enumerations, structs, unions and typedefs that have been defined within your C source for binary data conversion, similar to Perl's L|perlfunc/"pack"> and L|perlfunc/"unpack">. Beyond that, the module offers a lot of convenience methods to retrieve information about the C types that have been parsed. =head2 Background and History In late 2000 I wrote a real-time debugging interface for an embedded medical device that allowed me to send out data from that device over its integrated Ethernet adapter. The interface was C-like, so you could easily send out strings or numbers. But you could also send out what I called I, which was intended for arbitrary blocks of the device's memory. Another part of this real-time debugger was a Perl application running on my workstation that gathered all the messages that were sent out from the embedded device. It printed all the strings and numbers, and hex-dumped the arbitrary data. However, manually parsing a couple of 300 byte hex-dumps of a complex C structure is not only frustrating, but also error-prone and time consuming. Using L|perlfunc/"unpack"> to retrieve the contents of a C structure works fine for small structures and if you don't have to deal with struct member alignment. But otherwise, maintaining such code can be as awful as deciphering hex-dumps. As I didn't find anything to solve my problem on the CPAN, I wrote a little module that translated simple C structs into L|perlfunc/"unpack"> strings. It worked, but it was slow. And since it couldn't deal with struct member alignment, I soon found myself adding padding bytes everywhere. So again, I had to maintain two sources, and changing one of them forced me to touch the other one. All in all, this little module seemed to make my task a bit easier, but it was far from being what I was thinking of: =over 2 =item * A module that could directly use the source I've been coding for the embedded device without any modifications. =item * A module that could be configured to match the properties of the different compilers and target platforms I was using. =item * A module that was fast enough to decode a great amount of binary data even on my slow workstation. =back I didn't know how to accomplish these tasks until I read something about XS. At least, it seemed as if it could solve my performance problems. However, writing a C parser in C isn't easier than it is in Perl. But writing a C preprocessor from scratch is even worse. Fortunately enough, after a few weeks of searching I found both, a lean, open-source C preprocessor library, and a reusable YACC grammar for ANSI-C. That was the beginning of the development of Convert::Binary::C in late 2001. Now, I'm successfully using the module in my embedded environment since long before it appeared on CPAN. From my point of view, it is exactly what I had in mind. It's fast, flexible, easy to use and portable. It doesn't require external programs or other Perl modules. =head2 About this document This document describes how to use Convert::Binary::C. A lot of different features are presented, and the example code sometimes uses Perl's more advanced language elements. If your experience with Perl is rather limited, you should know how to use Perl's very good documentation system. To look up one of the manpages, use the L|perldoc> command. For example, perldoc perl will show you Perl's main manpage. To look up a specific Perl function, use C: perldoc -f map gives you more information about the L|perlfunc/"map"> function. You can also search the FAQ using C: perldoc -q array will give you everything you ever wanted to know about Perl arrays. But now, let's go on with some real stuff! =head2 Why use Convert::Binary::C? Say you want to pack (or unpack) data according to the following C structure: struct foo { char ary[3]; unsigned short baz; int bar; }; You could of course use Perl's L|perlfunc/"pack"> and L|perlfunc/"unpack"> functions: @ary = (1, 2, 3); $baz = 40000; $bar = -4711; $binary = pack 'c3 S i', @ary, $baz, $bar; But this implies that the struct members are byte aligned. If they were long aligned (which is the default for most compilers), you'd have to write $binary = pack 'c3 x S x2 i', @ary, $baz, $bar; which doesn't really increase readability. Now imagine that you need to pack the data for a completely different architecture with different byte order. You would look into the L|perlfunc/"pack"> manpage again and perhaps come up with this: $binary = pack 'c3 x n x2 N', @ary, $baz, $bar; However, if you try to unpack C<$foo> again, your signed values have turned into unsigned ones. All this can still be managed with Perl. But imagine your structures get more complex? Imagine you need to support different platforms? Imagine you need to make changes to the structures? You'll not only have to change the C source but also dozens of L|perlfunc/"pack"> strings in your Perl code. This is no fun. And Perl should be fun. Now, wouldn't it be great if you could just read in the C source you've already written and use all the types defined there for packing and unpacking? That's what Convert::Binary::C does. =head2 Creating a Convert::Binary::C object To use Convert::Binary::C just say use Convert::Binary::C; to load the module. Its interface is completely object oriented, so it doesn't export any functions. Next, you need to create a new Convert::Binary::C object. This can be done by either $c = Convert::Binary::C->new; or $c = new Convert::Binary::C; You can optionally pass configuration options to the L as described in the next section. =head2 Configuring the object To configure a Convert::Binary::C object, you can either call the L|/"configure"> method or directly pass the configuration options to the L. If you want to change byte order and alignment, you can use $c->configure(ByteOrder => 'LittleEndian', Alignment => 2); or you can change the construction code to $c = new Convert::Binary::C ByteOrder => 'LittleEndian', Alignment => 2; Either way, the object will now know that it should use little endian (Intel) byte order and 2-byte struct member alignment for packing and unpacking. Alternatively, you can use the option names as names of methods to configure the object, like: $c->ByteOrder('LittleEndian'); You can also retrieve information about the current configuration of a Convert::Binary::C object. For details, see the section about the L|/"configure"> method. =head2 Parsing C code Convert::Binary::C allows two ways of parsing C source. Either by parsing external C header or C source files: $c->parse_file('header.h'); Or by parsing C code embedded in your script: $c->parse(<<'CCODE'); struct foo { char ary[3]; unsigned short baz; int bar; }; CCODE Now the object C<$c> will know everything about C. The example above uses a so-called here-document. It allows to easily embed multi-line strings in your code. You can find more about here-documents in L or L. Since the L|/"parse"> and L|/"parse_file"> methods throw an exception when a parse error occurs, you usually want to catch these in an C block: eval { $c->parse_file('header.h') }; if ($@) { # handle error appropriately } Perl's special C<$@> variable will contain an empty string (which evaluates to a false value in boolean context) on success or an error string on failure. As another feature, L|/"parse"> and L|/"parse_file"> return a reference to their object on success, just like L|/"configure"> does when you're configuring the object. This will allow you to write constructs like this: my $c = eval { Convert::Binary::C->new(Include => ['/usr/include']) ->parse_file('header.h') }; if ($@) { # handle error appropriately } =head2 Packing and unpacking Convert::Binary::C has two methods, L|/"pack"> and L|/"unpack">, that act similar to the functions of same denominator in Perl. To perform the packing described in the example above, you could write: $data = { ary => [1, 2, 3], baz => 40000, bar => -4711, }; $binary = $c->pack('foo', $data); Unpacking will work exactly the same way, just that the L|/"unpack"> method will take a byte string as its input and will return a reference to a (possibly very complex) Perl data structure. $binary = get_data_from_memory(); $data = $c->unpack('foo', $binary); You can now easily access all of the values: print "foo.ary[1] = $data->{ary}[1]\n"; Or you can even more conveniently use the L module: use Data::Dumper; print Dumper($data); The output would look something like this: $VAR1 = { 'bar' => -271, 'baz' => 5000, 'ary' => [ 42, 48, 100 ] }; =head2 Preprocessor configuration Convert::Binary::C uses Thomas Pornin's C as an internal C preprocessor. It is compliant to ISO-C99, so you don't have to worry about using even weird preprocessor constructs in your code. If your C source contains includes or depends upon preprocessor defines, you may need to configure the internal preprocessor. Use the C and C configuration options for that: $c->configure(Include => ['/usr/include', '/home/mhx/include'], Define => [qw( NDEBUG FOO=42 )]); If your code uses system includes, it is most likely that you will need to define the symbols that are usually defined by the compiler. On some operating systems, the system includes require the preprocessor to predefine a certain set of assertions. Assertions are supported by C, and you can define them either in the source code using C<#assert> or as a property of the Convert::Binary::C object using C: $c->configure(Assert => ['predicate(answer)']); Information about defined macros can be retrieved from the preprocessor as long as its configuration isn't changed. The preprocessor is implicitly reset if you change one of the following configuration options: Include Define Assert HasCPPComments HasMacroVAARGS =head2 Supported pragma directives Convert::Binary::C supports the C pragma to locally override struct member alignment. The supported syntax is as follows: =over 4 =item #pragma pack( ALIGN ) Sets the new alignment to ALIGN. If ALIGN is 0, resets the alignment to its original value. =item #pragma pack Resets the alignment to its original value. =item #pragma pack( push, ALIGN ) Saves the current alignment on a stack and sets the new alignment to ALIGN. If ALIGN is 0, sets the alignment to the default alignment. =item #pragma pack( pop ) Restores the alignment to the last value saved on the stack. =back /* Example assumes sizeof( short ) == 2, sizeof( long ) == 4. */ #pragma pack(1) struct nopad { char a; /* no padding bytes between 'a' and 'b' */ long b; }; #pragma pack /* reset to "native" alignment */ #pragma pack( push, 2 ) struct pad { char a; /* one padding byte between 'a' and 'b' */ long b; #pragma pack( push, 1 ) struct { char c; /* no padding between 'c' and 'd' */ short d; } e; /* sizeof( e ) == 3 */ #pragma pack( pop ); /* back to pack( 2 ) */ long f; /* one padding byte between 'e' and 'f' */ }; #pragma pack( pop ); /* back to "native" */ The C pragma as it is currently implemented only affects the I struct member alignment. There are compilers that also allow to specify the I struct member alignment. This is not supported by Convert::Binary::C. =head2 Automatic configuration using C As there are over 20 different configuration options, setting all of them correctly can be a lengthy and tedious task. The L|ccconfig> script, which is bundled with this module, aims at automatically determining the correct compiler configuration by testing the compiler executable. It works for both, native and cross compilers. =head1 UNDERSTANDING TYPES This section covers one of the fundamental features of Convert::Binary::C. It's how I, referred to as TYPEs in the L, are handled by the module. Many of the methods, namely L|/"pack">, L|/"unpack">, L|/"sizeof">, L|/"typeof">, L|/"member">, L|/"offsetof">, L|/"def">, L|/"initializer"> and L|/"tag">, are passed a TYPE to operate on as their first argument. =head2 Standard Types These are trivial. Standard types are simply enum names, struct names, union names, or typedefs. Almost every method that wants a TYPE will accept a standard type. For enums, structs and unions, the prefixes C, C and C are optional. However, if a typedef with the same name exists, like in struct foo { int bar; }; typedef int foo; you will have to use the prefix to distinguish between the struct and the typedef. Otherwise, a typedef is always given preference. =head2 Basic Types Basic types, or atomic types, are C or C, for example. It's possible to use these basic types without having parsed any code. You can simply do $c = new Convert::Binary::C; $size = $c->sizeof('unsigned long'); $data = $c->pack('short int', 42); Even though the above works fine, it is not possible to define more complex types on the fly, so $size = $c->sizeof('struct { int a, b; }'); will result in an error. Basic types are not supported by all methods. For example, it makes no sense to use L|/"member"> or L|/"offsetof"> on a basic type. Using L|/"typeof"> isn't very useful, but supported. =head2 Member Expressions This is by far the most complex part, depending on the complexity of your data structures. Any L that defines a compound or an array may be followed by a member expression to select only a certain part of the data type. Say you have parsed the following C code: struct foo { long type; struct { short x, y; } array[20]; }; typedef struct foo matrix[8][8]; You may want to know the size of the C member of C. This is quite easy: print $c->sizeof('foo.array'), " bytes"; will print 80 bytes depending of course on the C you configured. If you wanted to unpack only a single column of C, that's easy as well (and of course it doesn't matter which index you use): $column = $c->unpack('matrix[2]', $data); Just like in C, it is possible to use out-of-bounds array indices. This means that, for example, despite C is declared to have 20 elements, the following code $size = $c->sizeof('foo.array[4711]'); $offset = $c->offsetof('foo', 'array[-13]'); is perfectly valid and will result in: $size = 4 $offset = -48 Member expressions can be arbitrarily complex: $type = $c->typeof('matrix[2][3].array[7].y'); print "the type is $type"; will, for example, print the type is short Member expressions are also used as the second argument to L|/"offsetof">. =head2 Offsets Members returned by the L|/"member"> method have an optional offset suffix to indicate that the given offset doesn't point to the start of that member. For example, $member = $c->member('matrix', 1431); print $member; will print [2][1].type+3 If you would use this as a member expression, like in $size = $c->sizeof("matrix $member"); the offset suffix will simply be ignored. Actually, it will be ignored for all methods if it's used in the first argument. When used in the second argument to L|/"offsetof">, it will usually do what you mean, i. e. the offset suffix, if present, will be considered when determining the offset. This behaviour ensures that $member = $c->member('foo', 43); $offset = $c->offsetof('foo', $member); print "'$member' is located at offset $offset of struct foo"; will always correctly set C<$offset>: '.array[9].y+1' is located at offset 43 of struct foo If this is not what you mean, e.g. because you want to know the offset where the member returned by L|/"member"> starts, you just have to remove the suffix: $member =~ s/\+\d+$//; $offset = $c->offsetof('foo', $member); print "'$member' starts at offset $offset of struct foo"; This would then print: '.array[9].y' starts at offset 42 of struct foo =head1 USING TAGS In a nutshell, tags are properties that you can attach to types. You can add tags to types using the L|/"tag"> method, and remove them using L|/"tag"> or L|/"untag">, for example: # Attach 'Format' and 'Hooks' tags $c->tag('type', Format => 'String', Hooks => { pack => \&rout }); $c->untag('type', 'Format'); # Remove only 'Format' tag $c->untag('type'); # Remove all tags You can also use L|/"tag"> to see which tags are attached to a type, for example: $tags = $c->tag('type'); This would give you: $tags = { 'Hooks' => { 'pack' => \&rout }, 'Format' => 'String' }; Currently, there are only a couple of different tags that influence the way data is packed and unpacked. There are probably more tags to come in the future. =head2 The Format Tag One of the tags currently available is the C tag. Using this tag, you can tell a Convert::Binary::C object to pack and unpack a certain data type in a special way. For example, if you have a (fixed length) string type typedef char str_type[40]; this type would, by default, be unpacked as an array of Cs. That's because it B only an array of Cs, and Convert::Binary::C doesn't know it is actually used as a string. But you can tell Convert::Binary::C that C is a C string using the C tag: $c->tag('str_type', Format => 'String'); This will make L|/"unpack"> (and of course also L|/"pack">) treat the binary data like a null-terminated C string: $binary = "Hello World!\n\0 this is just some dummy data"; $hello = $c->unpack('str_type', $binary); print $hello; would thusly print: Hello World! Of course, this also works the other way round: use Data::Hexdumper; $binary = $c->pack('str_type', "Just another C::B::C hacker"); print hexdump(data => $binary); would print: 0x0000 : 4A 75 73 74 20 61 6E 6F 74 68 65 72 20 43 3A 3A : Just.another.C:: 0x0010 : 42 3A 3A 43 20 68 61 63 6B 65 72 00 00 00 00 00 : B::C.hacker..... 0x0020 : 00 00 00 00 00 00 00 00 : ........ If you want Convert::Binary::C to not interpret the binary data at all, you can set the C tag to C. This might not be seem very useful, as L|/"pack"> and L|/"unpack"> would just pass through the unmodified binary data. But you can tag not only whole types, but also compound members. For example $c->parse(<tag('packet.payload', Format => 'Binary'); would allow you to write: read FILE, $payload, $c->sizeof('packet.payload'); $packet = { header => 4711, flags => 0xf00f, payload => $payload, }; $binary = $c->pack('packet', $packet); print hexdump(data => $binary); This would print something like: 0x0000 : 12 67 F0 0F 6E 6F 0A 6E 6F 0A 6E 6F 0A 6E 6F 0A : .g..no.no.no.no. 0x0010 : 6E 6F 0A 6E 6F 0A 6E 6F 0A 6E 6F 0A 6E 6F 0A 6E : no.no.no.no.no.n For obvious reasons, it is not allowed to attach a C tag to bitfield members. Trying to do so will result in an exception being thrown by the L|/"tag"> method. =head2 The ByteOrder Tag The C tag allows you to override the byte order of certain types or members. The implementation of this tag is considered B and may be subject to changes in the future. Usually it doesn't make much sense to override the byte order, but there may be applications where a sub-structure is packed in a different byte order than the surrounding structure. Take, for example, the following code: $c = Convert::Binary::C->new(ByteOrder => 'BigEndian', OrderMembers => 1); $c->parse(<<'ENDC'); typedef unsigned short u_16; struct coords_3d { long x, y, z; }; struct coords_msg { u_16 header; u_16 length; struct coords_3d coords; }; ENDC Assume that while C is big endian, the embedded coordinates C are stored in little endian format for some reason. In C, you'll have to handle this manually. But using Convert::Binary::C, you can simply attach a C tag to either the C structure or to the C member of the C structure. Both will work in this case. The only difference is that if you tag the C member, C will only be treated as little endian if you L|/"pack"> or L|/"unpack"> the C structure. (BTW, you could also tag all members of C individually, but that would be inefficient.) So, let's attach the C tag to the C member: $c->tag('coords_msg.coords', ByteOrder => 'LittleEndian'); Assume the following binary message: 0x0000 : 00 2A 00 0C FF FF FF FF 02 00 00 00 2A 00 00 00 : .*..........*... If you unpack this message... $msg = $c->unpack('coords_msg', $binary); ...you will get the following data structure: $msg = { 'header' => 42, 'length' => 12, 'coords' => { 'x' => -1, 'y' => 2, 'z' => 42 } }; Without the C tag, you would get: $msg = { 'header' => 42, 'length' => 12, 'coords' => { 'x' => -1, 'y' => 33554432, 'z' => 704643072 } }; The C tag is a I tag, i.e. it applies to all children of the tagged object recursively. Of course, it is also possible to override a C tag by attaching another C tag to a child type. Confused? Here's an example. In addition to tagging the C member as little endian, we now tag C as big endian: $c->tag('coords_3d.y', ByteOrder => 'BigEndian'); $msg = $c->unpack('coords_msg', $binary); This will return the following data structure: $msg = { 'header' => 42, 'length' => 12, 'coords' => { 'x' => -1, 'y' => 33554432, 'z' => 42 } }; Note that if you tag both a type and a member of that type within a compound, the tag attached to the type itself has higher precedence. Using the example above, if you would attach a C tag to both C and C, the tag attached to C would always win. Also note that the C tag might not work as expected along with bitfields, which is why the implementation is considered experimental. Bitfields are currently B affected by the C tag at all. This is because the byte order would affect the bitfield layout, and a consistent implementation supporting multiple layouts of the same struct would be quite bulky and probably slow down the whole module. If you really need the correct behaviour, you can use the following trick: $le = Convert::Binary::C->new(ByteOrder => 'LittleEndian'); $le->parse(<<'ENDC'); typedef unsigned short u_16; typedef unsigned long u_32; struct message { u_16 header; u_16 length; struct { u_32 a; u_32 b; u_32 c : 7; u_32 d : 5; u_32 e : 20; } data; }; ENDC $be = $le->clone->ByteOrder('BigEndian'); $le->tag('message.data', Format => 'Binary', Hooks => { unpack => sub { $be->unpack('message.data', @_) }, pack => sub { $be->pack('message.data', @_) }, }); $msg = $le->unpack('message', $binary); This uses the L|/"The Format Tag"> and L|/"The Hooks Tag"> tags along with a big endian L|/"clone"> of the original little endian object. It attaches hooks to the little endian object and in the hooks it uses the big endian object to L|/"pack"> and L|/"unpack"> the binary data. =head2 The Dimension Tag The C tag allows you to override the declared dimension of an array for packing or unpacking data. The implementation of this tag is considered B and will B in a future release. That being said, the C tag is primarily useful to support variable length arrays. Usually, you have to write the following code for such a variable length array in C: struct c_message { unsigned count; char data[1]; }; So, because you cannot declare an empty array, you declare an array with a single element. If you have a ISO-C99 compliant compiler, you can write this code instead: struct c99_message { unsigned count; char data[]; }; This explicitly tells the compiler that C is a flexible array member. Convert::Binary::C already uses this information to handle L in a special way. As you can see in the following example, the two types are treated differently: $data = pack 'NC*', 3, 1..8; $uc = $c->unpack('c_message', $data); $uc99 = $c->unpack('c99_message', $data); This will result in: $uc = {'count' => 3,'data' => [1]}; $uc99 = {'count' => 3,'data' => [1,2,3,4,5,6,7,8]}; However, only few compilers support ISO-C99, and you probably don't want to change your existing code only to get some extra features when using Convert::Binary::C. So it is possible to attach a tag to the C member of the C struct that tells Convert::Binary::C to treat the array as if it were flexible: $c->tag('c_message.data', Dimension => '*'); Now both C and C will behave exactly the same when using L|/"pack"> or L|/"unpack">. Repeating the above code: $uc = $c->unpack('c_message', $data); This will result in: $uc = {'count' => 3,'data' => [1,2,3,4,5,6,7,8]}; But there's more you can do. Even though it probably doesn't make much sense, you can tag a fixed dimension to an array: $c->tag('c_message.data', Dimension => '5'); This will obviously result in: $uc = {'count' => 3,'data' => [1,2,3,4,5]}; A more useful way to use the C tag is to set it to the name of a member in the same compound: $c->tag('c_message.data', Dimension => 'count'); Convert::Binary::C will now use the value of that member to determine the size of the array, so unpacking will result in: $uc = {'count' => 3,'data' => [1,2,3]}; Of course, you can also tag flexible array members. And yes, it's also possible to use more complex member expressions: $c->parse(<tag('more_complex.data', Dimension => 'hdr.len[1]'); $u = $c->unpack('more_complex', $data); The result will be: $u = { 'hdr' => { 'len' => [ 42, 7 ] }, 'data' => [ 1, 2, 3, 4, 5, 6, 7 ] }; By the way, it's also possible to tag arrays that are not embedded inside a compound: $c->parse(<tag('short_array', Dimension => '5'); $u = $c->unpack('short_array', $data); Resulting in: $u = [0,42,0,7,258]; The final and most powerful way to define a C tag is to pass it a subroutine reference. The referenced subroutine can execute whatever code is neccessary to determine the size of the tagged array: sub get_size { my $m = shift; return $m->{hdr}{len}[0] / $m->{hdr}{len}[1]; } $c->tag('more_complex.data', Dimension => \&get_size); $u = $c->unpack('more_complex', $data); As you can guess from the above code, the subroutine is being passed a reference to hash that stores the already unpacked part of the compound embedding the tagged array. This is the result: $u = { 'hdr' => { 'len' => [ 42, 7 ] }, 'data' => [ 1, 2, 3, 4, 5, 6 ] }; You can also pass custom arguments to the subroutines by using the L|/"arg"> method. This is similar to the functionality offered by the L|/"The Hooks Tag"> tag. Of course, all that also works for the L|/"pack"> method as well. However, the current implementation has at least one shortcomings, which is why it's experimental: The C tag doesn't impact compound layout. This means that while you can alter the size of an array in the middle of a compound, the offset of the members after that array won't be impacted. I'd rather like to see the layout adapt dynamically, so this is what I'm hoping to implement in the future. =head2 The Hooks Tag Hooks are a special kind of tag that can be extremely useful. Using hooks, you can easily override the way L|/"pack"> and L|/"unpack"> handle data using your own subroutines. If you define hooks for a certain data type, each time this data type is processed the corresponding hook will be called to allow you to modify that data. =head3 Basic Hooks Here's an example. Let's assume the following C code has been parsed: typedef unsigned long u_32; typedef u_32 ProtoId; typedef ProtoId MyProtoId; struct MsgHeader { MyProtoId id; u_32 len; }; struct String { u_32 len; char buf[]; }; You could now use the types above and, for example, unpack binary data representing a C like this: $msg_header = $c->unpack('MsgHeader', $data); This would give you: $msg_header = { 'len' => 13, 'id' => 42 }; Instead of dealing with C's as integers, you would rather like to have them as clear text. You could provide subroutines to convert between clear text and integers: %proto = ( CATS => 1, DOGS => 42, HEDGEHOGS => 4711, ); %rproto = reverse %proto; sub ProtoId_unpack { $rproto{$_[0]} || 'unknown protocol' } sub ProtoId_pack { $proto{$_[0]} or die 'unknown protocol' } You can now register these subroutines by attaching a C tag to C using the L|/"tag"> method: $c->tag('ProtoId', Hooks => { pack => \&ProtoId_pack, unpack => \&ProtoId_unpack }); Doing exactly the same unpack on C again would now return: $msg_header = { 'len' => 13, 'id' => 'DOGS' }; Actually, if you don't need the reverse operation, you don't even have to register a C hook. Or, even better, you can have a more intelligent C hook that creates a dual-typed variable: use Scalar::Util qw(dualvar); sub ProtoId_unpack2 { dualvar $_[0], $rproto{$_[0]} || 'unknown protocol' } $c->tag('ProtoId', Hooks => { unpack => \&ProtoId_unpack2 }); $msg_header = $c->unpack('MsgHeader', $data); Just as before, this would print $msg_header = { 'len' => 13, 'id' => 'DOGS' }; but without requiring a C hook for packing, at least as long as you keep the variable dual-typed. Hooks are usually called with exactly one argument, which is the data that should be processed (see L<"Advanced Hooks"> for details on how to customize hook arguments). They are called in scalar context and expected to return the processed data. To get rid of registered hooks, you can either undefine only certain hooks $c->tag('ProtoId', Hooks => { pack => undef }); or all hooks: $c->tag('ProtoId', Hooks => undef); Of course, hooks are not restricted to handling integer values. You could just as well attach hooks for the C struct from the code above. A useful example would be to have these hooks: sub string_unpack { my $s = shift; pack "c$s->{len}", @{$s->{buf}}; } sub string_pack { my $s = shift; return { len => length $s, buf => [ unpack 'c*', $s ], } } (Don't be confused by the fact that the C hook uses C and the C hook uses C. And also see L<"Advanced Hooks"> for a more clever approach.) While you would normally get the following output when unpacking a C $string = { 'len' => 12, 'buf' => [ 72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33 ] }; you could just register the hooks using $c->tag('String', Hooks => { pack => \&string_pack, unpack => \&string_unpack }); and you would get a nice human-readable Perl string: $string = 'Hello World!'; Packing a string turns out to be just as easy: use Data::Hexdumper; $data = $c->pack('String', 'Just another Perl hacker,'); print hexdump(data => $data); This would print: 0x0000 : 00 00 00 19 4A 75 73 74 20 61 6E 6F 74 68 65 72 : ....Just.another 0x0010 : 20 50 65 72 6C 20 68 61 63 6B 65 72 2C : .Perl.hacker, If you want to find out if or which hooks are registered for a certain type, you can also use the L|/"tag"> method: $hooks = $c->tag('String', 'Hooks'); This would return: $hooks = { 'unpack' => \&string_unpack, 'pack' => \&string_pack }; =head3 Advanced Hooks It is also possible to combine hooks with using the C tag. This can be useful if you know better than Convert::Binary::C how to interpret the binary data. In the previous section, we've handled this type struct String { u_32 len; char buf[]; }; with the following hooks: sub string_unpack { my $s = shift; pack "c$s->{len}", @{$s->{buf}}; } sub string_pack { my $s = shift; return { len => length $s, buf => [ unpack 'c*', $s ], } } $c->tag('String', Hooks => { pack => \&string_pack, unpack => \&string_unpack }); As you can see in the hook code, C is expected to be an array of characters. For the L|/"unpack"> case Convert::Binary::C first turns the binary data into a Perl array, and then the hook packs it back into a string. The intermediate array creation and destruction is completely useless. Same thing, of course, for the L|/"pack"> case. Here's a clever way to handle this. Just tag C as binary $c->tag('String.buf', Format => 'Binary'); and use the following hooks instead: sub string_unpack2 { my $s = shift; substr $s->{buf}, 0, $s->{len}; } sub string_pack2 { my $s = shift; return { len => length $s, buf => $s, } } $c->tag('String', Hooks => { pack => \&string_pack2, unpack => \&string_unpack2 }); This will be exactly equivalent to the old code, but faster and probably even much easier to understand. But hooks are even more powerful. You can customize the arguments that are passed to your hooks and you can use L|/"arg"> to pass certain special arguments, such as the name of the type that is currently being processed by the hook. The following example shows how it is easily possible to peek into the perl internals using hooks. use Config; $c = new Convert::Binary::C %CC, OrderMembers => 1; $c->Include(["$Config{archlib}/CORE", @{$c->Include}]); $c->parse(<tag($_, Hooks => { unpack_ptr => [\&unpack_ptr, $c->arg(qw(SELF TYPE DATA))] }) for qw( XPVAV XPVHV ); First, we add the perl core include path and parse F. Then, we add an C hook for a couple of the internal data types. The C and C hooks are called whenever a pointer to a certain data structure is processed. This is by far the most experimental part of the hooks feature, as this includes B kind of pointer. There's no way for the hook to know the difference between a plain pointer, or a pointer to a pointer, or a pointer to an array (this is because the difference doesn't matter anywhere else in Convert::Binary::C). But the hook above makes use of another very interesting feature: It uses L|/"arg"> to pass special arguments to the hook subroutine. Usually, the hook subroutine is simply passed a single data argument. But using the above definition, it'll get a reference to the calling object (C), the name of the type being processed (C) and the data (C). But how does our hook look like? sub unpack_ptr { my($self, $type, $ptr) = @_; $ptr or return ''; my $size = $self->sizeof($type); $self->unpack($type, unpack("P$size", pack('I', $ptr))); } As you can see, the hook is rather simple. First, it receives the arguments mentioned above. It performs a quick check if the pointer is C and shouldn't be processed any further. Next, it determines the size of the type being processed. And finally, it'll just use the C

I unpack template to read from that memory location and recursively call L|/"unpack"> to unpack the type. (And yes, this may of course again call other hooks.) Now, let's test that: my $ref = { foo => 42, bar => 4711 }; my $ptr = hex(("$ref" =~ /\(0x([[:xdigit:]]+)\)$/)[0]); print Dumper(unpack_ptr($c, 'AV', $ptr)); Just for the fun of it, we create a blessed array reference. But how do we get a pointer to the corresponding C? This is rather easy, as the address of the C is just the hex value that appears when using the array reference in string context. So we just grab that and turn it into decimal. All that's left to do is just call our hook, as it can already handle C pointers. And this is what we get: $VAR1 = { 'sv_any' => { 'xnv_u' => { 'xnv_nv' => '0', 'xgv_stash' => 0, 'xpad_cop_seq' => { 'xlow' => 0, 'xhigh' => 0 }, 'xbm_s' => { 'xbm_previous' => 0, 'xbm_flags' => 0, 'xbm_rare' => 0 } }, 'xav_fill' => 2, 'xav_max' => 7, 'xiv_u' => { 'xivu_iv' => 2, 'xivu_uv' => 2, 'xivu_p1' => 2, 'xivu_i32' => 2, 'xivu_namehek' => 2, 'xivu_hv' => 2 }, 'xmg_u' => { 'xmg_magic' => 0, 'xmg_ourstash' => 0 }, 'xmg_stash' => 0 }, 'sv_refcnt' => 1, 'sv_flags' => 536870924, 'sv_u' => { 'svu_pv' => 142054140, 'svu_iv' => 142054140, 'svu_uv' => 142054140, 'svu_rv' => 142054140, 'svu_array' => 142054140, 'svu_hash' => 142054140, 'svu_gp' => 142054140 } }; Even though it is rather easy to do such stuff using C hooks, you should really know what you're doing and do it with extreme care because of the limitations mentioned above. It's really easy to run into segmentation faults when you're dereferencing pointers that point to memory which you don't own. =head3 Performance Using hooks isn't for free. In performance-critical applications you have to keep in mind that hooks are actually perl subroutines and that they are called once for every value of a registered type that is being packed or unpacked. If only about 10% of the values require hooks to be called, you'll hardly notice the difference (if your hooks are implemented efficiently, that is). But if all values would require hooks to be called, that alone could easily make packing and unpacking very slow. =head2 Tag Order Since it is possible to attach multiple tags to a single type, the order in which the tags are processed is important. Here's a small table that shows the processing order. pack unpack --------------------- Hooks Format Format ByteOrder ByteOrder Hooks As a general rule, the L|/"The Hooks Tag"> tag is always the first thing processed when packing data, and the last thing processed when unpacking data. The L|/"The Format Tag"> and L|/"The ByteOrder Tag"> tags are exclusive, but when both are given the L|/"The Format Tag"> tag wins. =head1 METHODS =head2 new =over 8 =item C =item C OPTION1 =E VALUE1, OPTION2 =E VALUE2, ... The constructor is used to create a new Convert::Binary::C object. You can simply use $c = new Convert::Binary::C; without additional arguments to create an object, or you can optionally pass any arguments to the constructor that are described for the L|/"configure"> method. =back =head2 configure =over 8 =item C =item C OPTION =item C OPTION1 =E VALUE1, OPTION2 =E VALUE2, ... This method can be used to configure an existing Convert::Binary::C object or to retrieve its current configuration. To configure the object, the list of options consists of key and value pairs and must therefore contain an even number of elements. L|/"configure"> (and also L|/"new"> if used with configuration options) will throw an exception if you pass an odd number of elements. Configuration will normally look like this: $c->configure(ByteOrder => 'BigEndian', IntSize => 2); To retrieve the current value of a configuration option, you must pass a single argument to L|/"configure"> that holds the name of the option, just like $order = $c->configure('ByteOrder'); If you want to get the values of all configuration options at once, you can call L|/"configure"> without any arguments and it will return a reference to a hash table that holds the whole object configuration. This can be conveniently used with the L module, for example: use Convert::Binary::C; use Data::Dumper; $c = new Convert::Binary::C Define => ['DEBUGGING', 'FOO=123'], Include => ['/usr/include']; print Dumper($c->configure); Which will print something like this: $VAR1 = { 'Define' => [ 'DEBUGGING', 'FOO=123' ], 'StdCVersion' => 199901, 'ByteOrder' => 'LittleEndian', 'LongSize' => 4, 'IntSize' => 4, 'HostedC' => 1, 'ShortSize' => 2, 'HasMacroVAARGS' => 1, 'Assert' => [], 'UnsignedChars' => 0, 'DoubleSize' => 8, 'CharSize' => 1, 'EnumType' => 'Integer', 'PointerSize' => 4, 'EnumSize' => 4, 'DisabledKeywords' => [], 'FloatSize' => 4, 'Alignment' => 1, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'KeywordMap' => {}, 'Include' => [ '/usr/include' ], 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Generic' }, 'UnsignedBitfields' => 0, 'Warnings' => 0, 'CompoundAlignment' => 1, 'OrderMembers' => 0 }; Since you may not always want to write a L|/"configure"> call when you only want to change a single configuration item, you can use any configuration option name as a method name, like: $c->ByteOrder('LittleEndian') if $c->IntSize < 4; (Yes, the example doesn't make very much sense... ;-) However, you should keep in mind that configuration methods that can take lists (namely C, C and C, but not C) may behave slightly different than their L|/"configure"> equivalent. If you pass these methods a single argument that is an array reference, the current list will be B by the new one, which is just the behaviour of the corresponding L|/"configure"> call. So the following are equivalent: $c->configure(Define => ['foo', 'bar=123']); $c->Define(['foo', 'bar=123']); But if you pass a list of strings instead of an array reference (which cannot be done when using L|/"configure">), the new list items are B to the current list, so $c = new Convert::Binary::C Include => ['/include']; $c->Include('/usr/include', '/usr/local/include'); print Dumper($c->Include); $c->Include(['/usr/local/include']); print Dumper($c->Include); will first print all three include paths, but finally only C will be configured: $VAR1 = [ '/include', '/usr/include', '/usr/local/include' ]; $VAR1 = [ '/usr/local/include' ]; Furthermore, configuration methods can be chained together, as they return a reference to their object if called as a set method. So, if you like, you can configure your object like this: $c = Convert::Binary::C->new(IntSize => 4) ->Define(qw( __DEBUG__ DB_LEVEL=3 )) ->ByteOrder('BigEndian'); $c->configure(EnumType => 'Both', Alignment => 4) ->Include('/usr/include', '/usr/local/include'); In the example above, C is the word list quoting operator. It returns a list of all non-whitespace sequences, and is especially useful for configuring preprocessor defines or assertions. The following assignments are equivalent: @array = ('one', 'two', 'three'); @array = qw(one two three); You can configure the following options. Unknown options, as well as invalid values for an option, will cause the object to throw exceptions. =over 4 =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by an integer. This is in most cases 2 or 4. If you set it to zero, the size of an integer on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a C. This rarely needs to be changed, except for some platforms that don't care about bytes, for example DSPs. If you set this to zero, the size of a C on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a short integer. Although integers explicitly declared as C should be always 16 bit, there are compilers that make a short 8 bit wide. If you set it to zero, the size of a short integer on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a long integer. If set to zero, the size of a long integer on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a long long integer. If set to zero, the size of a long long integer on the host system, or 8, will be used. This is also the default unless overridden by C at compile time. =item C =E 0 | 1 | 2 | 4 | 8 | 12 | 16 Set the number of bytes that are occupied by a single precision floating point value. If you set it to zero, the size of a C on the host system will be used. This is also the default unless overridden by C at compile time. For details on floating point support, see L<"FLOATING POINT VALUES">. =item C =E 0 | 1 | 2 | 4 | 8 | 12 | 16 Set the number of bytes that are occupied by a double precision floating point value. If you set it to zero, the size of a C on the host system will be used. This is also the default unless overridden by C at compile time. For details on floating point support, see L<"FLOATING POINT VALUES">. =item C =E 0 | 1 | 2 | 4 | 8 | 12 | 16 Set the number of bytes that are occupied by a double precision floating point value. If you set it to zero, the size of a C on the host system, or 12 will be used. This is also the default unless overridden by C at compile time. For details on floating point support, see L<"FLOATING POINT VALUES">. =item C =E 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by a pointer. This is in most cases 2 or 4. If you set it to zero, the size of a pointer on the host system will be used. This is also the default unless overridden by C at compile time. =item C =E -1 | 0 | 1 | 2 | 4 | 8 Set the number of bytes that are occupied by an enumeration type. On most systems, this is equal to the size of an integer, which is also the default. However, for some compilers, the size of an enumeration type depends on the size occupied by the largest enumerator. So the size may vary between 1 and 8. If you have enum foo { ONE = 100, TWO = 200 }; this will occupy one byte because the enum can be represented as an unsigned one-byte value. However, enum foo { ONE = -100, TWO = 200 }; will occupy two bytes, because the -100 forces the type to be signed, and 200 doesn't fit into a signed one-byte value. Therefore, the type used is a signed two-byte value. If this is the behaviour you need, set the EnumSize to C<0>. Some compilers try to follow this strategy, but don't care whether the enumeration has signed values or not. They always declare an enum as signed. On such a compiler, given enum one { ONE = -100, TWO = 100 }; enum two { ONE = 100, TWO = 200 }; enum C will occupy only one byte, while enum C will occupy two bytes, even though it could be represented by a unsigned one-byte value. If this is the behaviour of your compiler, set EnumSize to C<-1>. =item C =E 0 | 1 | 2 | 4 | 8 | 16 Set the struct member alignment. This option controls where padding bytes are inserted between struct members. It globally sets the alignment for all structs/unions. However, this can be overridden from within the source code with the common C pragma as explained in L<"Supported pragma directives">. The default alignment is 1, which means no padding bytes are inserted. A setting of C<0> means I alignment, i.e. the alignment of the system that Convert::Binary::C has been compiled on. You can determine the native properties using the L|/"native"> function. The C option is similar to the C<-Zp[n]> option of the Intel compiler. It globally specifies the maximum boundary to which struct members are aligned. Consider the following structure and the sizes of C, C, C and C being 1, 2, 4 and 8, respectively. struct align { char a; short b, c; long d; double e; }; With an alignment of 1 (the default), the struct members would be packed tightly: 0 1 2 3 4 5 6 7 8 9 10 11 12 +---+---+---+---+---+---+---+---+---+---+---+---+ | a | b | c | d | ... +---+---+---+---+---+---+---+---+---+---+---+---+ 12 13 14 15 16 17 +---+---+---+---+---+ ... e | +---+---+---+---+---+ With an alignment of 2, the struct members larger than one byte would be aligned to 2-byte boundaries, which results in a single padding byte between C and C. 0 1 2 3 4 5 6 7 8 9 10 11 12 +---+---+---+---+---+---+---+---+---+---+---+---+ | a | * | b | c | d | ... +---+---+---+---+---+---+---+---+---+---+---+---+ 12 13 14 15 16 17 18 +---+---+---+---+---+---+ ... e | +---+---+---+---+---+---+ With an alignment of 4, the struct members of size 2 would be aligned to 2-byte boundaries and larger struct members would be aligned to 4-byte boundaries: 0 1 2 3 4 5 6 7 8 9 10 11 12 +---+---+---+---+---+---+---+---+---+---+---+---+ | a | * | b | c | * | * | d | ... +---+---+---+---+---+---+---+---+---+---+---+---+ 12 13 14 15 16 17 18 19 20 +---+---+---+---+---+---+---+---+ ... | e | +---+---+---+---+---+---+---+---+ This layout of the struct members allows the compiler to generate optimized code because aligned members can be accessed more easily by the underlying architecture. Finally, setting the alignment to 8 will align Cs to 8-byte boundaries: 0 1 2 3 4 5 6 7 8 9 10 11 12 +---+---+---+---+---+---+---+---+---+---+---+---+ | a | * | b | c | * | * | d | ... +---+---+---+---+---+---+---+---+---+---+---+---+ 12 13 14 15 16 17 18 19 20 21 22 23 24 +---+---+---+---+---+---+---+---+---+---+---+---+ ... | * | * | * | * | e | +---+---+---+---+---+---+---+---+---+---+---+---+ Further increasing the alignment does not alter the layout of our structure, as only members larger that 8 bytes would be affected. The alignment of a structure depends on its largest member and on the setting of the C option. With C set to 2, a structure holding a C would be aligned to a 2-byte boundary, while a structure containing only Cs would have no alignment restrictions. (Unfortunately, that's not the whole story. See the C option for details.) Here's another example. Assuming 8-byte alignment, the following two structs will both have a size of 16 bytes: struct one { char c; double d; }; struct two { double d; char c; }; This is clear for C, because the member C has to be aligned to an 8-byte boundary, and thus 7 padding bytes are inserted after C. But for C, the padding bytes are inserted B of the structure, which doesn't make much sense immediately. However, it makes perfect sense if you think about an array of C. Each C has to be aligned to an 8-byte boundary, an thus each array element would have to occupy 16 bytes. With that in mind, it would be strange if a C variable would have a different size. And it would make the widely used construct struct two array[] = { {1.0, 0}, {2.0, 1} }; int elements = sizeof(array) / sizeof(struct two); impossible. The alignment behaviour described here seems to be common for all compilers. However, not all compilers have an option to configure their default alignment. =item C =E 0 | 1 | 2 | 4 | 8 | 16 Usually, the alignment of a compound (i.e. a C or a C) depends only on its largest member and on the setting of the C option. There are, however, architectures and compilers where compounds can have different alignment constraints. For most platforms and compilers, the alignment constraint for compounds is 1 byte. That is, on most platforms struct onebyte { char byte; }; will have an alignment of 1 and also a size of 1. But if you take an ARM architecture, the above C will have an alignment of 4, and thus also a size of 4. You can configure this by setting C to 4. This will ensure that the alignment of compounds is always 4. Setting C to C<0> means I compound alignment, i.e. the compound alignment of the system that Convert::Binary::C has been compiled on. You can determine the native properties using the L|/"native"> function. There are also compilers for certain platforms that allow you to adjust the compound alignment. If you're not aware of the fact that your compiler/architecture has a compound alignment other than 1, strange things can happen. If, for example, the compound alignment is 2 and you have something like typedef unsigned char U8; struct msg_head { U8 cmd; struct { U8 hi; U8 low; } crc16; U8 len; }; there will be one padding byte inserted before the embedded C struct and after the C member, which is most probably not what was intended: 0 1 2 3 4 5 6 +-----+-----+-----+-----+-----+-----+ | cmd | * | hi | low | len | * | +-----+-----+-----+-----+-----+-----+ Note that both C<#pragma pack> and the C option can override C. If you set C to 4, but C to 2, compounds will actually be aligned on 2-byte boundaries. =item C =E 'BigEndian' | 'LittleEndian' Set the byte order for integers larger than a single byte. Little endian (Intel, least significant byte first) and big endian (Motorola, most significant byte first) byte order are supported. The default byte order is the same as the byte order of the host system unless overridden by C at compile time. =item C =E 'Integer' | 'String' | 'Both' This option controls the type that enumeration constants will have in data structures returned by the L|/"unpack"> method. If you have the following definitions: typedef enum { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } Weekday; typedef enum { JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER } Month; typedef struct { int year; Month month; int day; Weekday weekday; } Date; and a byte string that holds a packed Date struct, then you'll get the following results from a call to the L|/"unpack"> method. =over 4 =item C Enumeration constants are returned as plain integers. This is fast, but may be not very useful. It is also the default. $date = { 'weekday' => 1, 'month' => 0, 'day' => 7, 'year' => 2002 }; =item C Enumeration constants are returned as strings. This will create a string constant for every unpacked enumeration constant and thus consumes more time and memory. However, the result may be more useful. $date = { 'weekday' => 'MONDAY', 'month' => 'JANUARY', 'day' => 7, 'year' => 2002 }; =item C Enumeration constants are returned as double typed scalars. If evaluated in string context, the enumeration constant will be a string, if evaluated in numeric context, the enumeration constant will be an integer. $date = $c->EnumType('Both')->unpack('Date', $binary); printf "Weekday = %s (%d)\n\n", $date->{weekday}, $date->{weekday}; if ($date->{month} == 0) { print "It's $date->{month}, happy new year!\n\n"; } print Dumper($date); This will print: Weekday = MONDAY (1) It's JANUARY, happy new year! $VAR1 = { 'weekday' => 'MONDAY', 'month' => 'JANUARY', 'day' => 7, 'year' => 2002 }; =back =item C =E [ KEYWORDS ] This option allows you to selectively deactivate certain keywords in the C parser. Some C compilers don't have the complete ANSI keyword set, i.e. they don't recognize the keywords C or C, for example. If you do typedef int void; on such a compiler, this will usually be ok. But if you parse this with an ANSI compiler, it will be a syntax error. To parse the above code correctly, you have to disable the C keyword in the Convert::Binary::C parser: $c->DisabledKeywords([qw( void )]); By default, the Convert::Binary::C parser will recognize the keywords C and C. If your compiler doesn't have these new keywords, it usually doesn't matter. Only if you're using the keywords as identifiers, like in typedef struct inline { int a, b; } restrict; you'll have to disable these ISO-C99 keywords: $c->DisabledKeywords([qw( inline restrict )]); The parser allows you to disable the following keywords: asm auto const double enum extern float inline long register restrict short signed static unsigned void volatile =item C =E { KEYWORD =E TOKEN, ... } This option allows you to add new keywords to the parser. These new keywords can either be mapped to existing tokens or simply ignored. For example, recent versions of the GNU compiler recognize the keywords C<__signed__> and C<__extension__>. The first one obviously is a synonym for C, while the second one is only a marker for a language extension. Using the preprocessor, you could of course do the following: $c->Define(qw( __signed__=signed __extension__= )); However, the preprocessor symbols could be undefined or redefined in the code, and #ifdef __signed__ # undef __signed__ #endif typedef __extension__ __signed__ long long s_quad; would generate a parse error, because C<__signed__> is an unexpected identifier. Instead of utilizing the preprocessor, you'll have to create mappings for the new keywords directly in the parser using C. In the above example, you want to map C<__signed__> to the built-in C keyword C and ignore C<__extension__>. This could be done with the following code: $c->KeywordMap({ __signed__ => 'signed', __extension__ => undef }); You can specify any valid identifier as hash key, and either a valid C keyword or C as hash value. Having configured the object that way, you could parse even #ifdef __signed__ # undef __signed__ #endif typedef __extension__ __signed__ long long s_quad; without problems. Note that C and C perfectly work together. You could, for example, disable the C keyword, but still have C<__signed__> mapped to the original C token: $c->configure(DisabledKeywords => [ 'signed' ], KeywordMap => { __signed__ => 'signed' }); This would allow you to define typedef __signed__ long signed; which would normally be a syntax error because C cannot be used as an identifier. =item C =E 0 | 1 Use this boolean option if you want characters to be unsigned if specified without an explicit C or C type specifier. By default, characters are signed. =item C =E 0 | 1 Use this boolean option if you want bitfields to be unsigned if specified without an explicit C or C type specifier. By default, bitfields are signed. =item C =E 0 | 1 Use this boolean option if you want warnings to be issued during the parsing of source code. Currently, warnings are only reported by the preprocessor, so don't expect the output to cover everything. By default, warnings are turned off and only errors will be reported. However, even these errors are turned off if you run without the C<-w> flag. =item C =E 0 | 1 Use this option to turn C++ comments on or off. By default, C++ comments are enabled. Disabling C++ comments may be necessary if your code includes strange things like: one = 4 //* <- divide */ 4; two = 2; With C++ comments, the above will be interpreted as one = 4 two = 2; which will obviously be a syntax error, but without C++ comments, it will be interpreted as one = 4 / 4; two = 2; which is correct. =item C =E 0 | 1 Use this option to turn the C<__VA_ARGS__> macro expansion on or off. If this is enabled (which is the default), you can use variable length argument lists in your preprocessor macros. #define DEBUG( ... ) fprintf( stderr, __VA_ARGS__ ) There's normally no reason to turn that feature off. =item C =E undef | INTEGER Use this option to change the value of the preprocessor's predefined C<__STDC_VERSION__> macro. When set to C, the macro will not be defined. =item C =E undef | 0 | 1 Use this option to change the value of the preprocessor's predefined C<__STDC_HOSTED__> macro. When set to C, the macro will not be defined. =item C =E [ INCLUDES ] Use this option to set the include path for the internal preprocessor. The option value is a reference to an array of strings, each string holding a directory that should be searched for includes. =item C =E [ DEFINES ] Use this option to define symbols in the preprocessor. The option value is, again, a reference to an array of strings. Each string can be either just a symbol or an assignment to a symbol. This is completely equivalent to what the C<-D> option does for most preprocessors. The following will define the symbol C and define C to be C<12345>: $c->configure(Define => [qw( FOO BAR=12345 )]); =item C =E [ ASSERTIONS ] Use this option to make assertions in the preprocessor. If you don't know what assertions are, don't be concerned, since they're deprecated anyway. They are, however, used in some system's include files. The value is an array reference, just like for the macro definitions. Only the way the assertions are defined is a bit different and mimics the way they are defined with the C<#assert> directive: $c->configure(Assert => ['foo(bar)']); =item C =E 0 | 1 When using L|/"unpack"> on compounds and iterating over the returned hash, the order of the compound members is generally not preserved due to the nature of hash tables. It is not even guaranteed that the order is the same between different runs of the same program. This can be very annoying if you simply use to dump your data structures and the compound members always show up in a different order. By setting C to a non-zero value, all hashes returned by L|/"unpack"> are tied to a class that preserves the order of the hash keys. This way, all compound members will be returned in the correct order just as they are defined in your C code. use Convert::Binary::C; use Data::Dumper; $c = Convert::Binary::C->new->parse(<<'ENDC'); struct test { char one; char two; struct { char never; char change; char this; char order; } three; char four; }; ENDC $data = "Convert"; $u1 = $c->unpack('test', $data); $c->OrderMembers(1); $u2 = $c->unpack('test', $data); print Data::Dumper->Dump([$u1, $u2], [qw(u1 u2)]); This will print something like: $u1 = { 'three' => { 'change' => 118, 'order' => 114, 'this' => 101, 'never' => 110 }, 'one' => 67, 'two' => 111, 'four' => 116 }; $u2 = { 'one' => 67, 'two' => 111, 'three' => { 'never' => 110, 'change' => 118, 'this' => 101, 'order' => 114 }, 'four' => 116 }; To be able to use this option, you have to install either the L or the L module. If both are installed, Convert::Binary::C will give preference to L because it's faster. When using this option, you should keep in mind that tied hashes are significantly slower and consume more memory than ordinary hashes, even when the class they're tied to is implemented efficiently. So don't turn this option on if you don't have to. You can also influence hash member ordering by using the L|/"CBC_ORDER_MEMBERS"> environment variable. =item C =E { OPTION =E VALUE, ... } Use this option to specify and configure a bitfield layouting engine. You can choose an engine by passing its name to the C option, like: $c->configure(Bitfields => { Engine => 'Generic' }); Each engine can have its own set of options, although currently none of them does. You can choose between the following bitfield engines: =over 4 =item C This engine implements the behaviour of most UNIX C compilers, including GCC. It does not handle packed bitfields yet. =item C This engine implements the behaviour of Microsoft's C compiler. It should be fairly complete and can handle packed bitfields. =item C This engine is only used for testing the bitfield infrastructure in Convert::Binary::C. There's usually no reason to use it. =back =back You can reconfigure all options even after you have parsed some code. The changes will be applied to the already parsed definitions. This works as long as array lengths are not affected by the changes. If you have Alignment and IntSize set to 4 and parse code like this typedef struct { char abc; int day; } foo; struct bar { foo zap[2*sizeof(foo)]; }; the array C in C will obviously have 16 elements. If you reconfigure the alignment to 1 now, the size of C is now 5 instead of 8. While the alignment is adjusted correctly, the number of elements in array C will still be 16 and will not be changed to 10. =back =head2 parse =over 8 =item C CODE Parses a string of valid C code. All enumeration, compound and type definitions are extracted. You can call the L|/"parse"> and L|/"parse_file"> methods as often as you like to add further definitions to the Convert::Binary::C object. L|/"parse"> will throw an exception if an error occurs. On success, the method returns a reference to its object. See L<"Parsing C code"> for an example. =back =head2 parse_file =over 8 =item C FILE Parses a C source file. All enumeration, compound and type definitions are extracted. You can call the L|/"parse"> and L|/"parse_file"> methods as often as you like to add further definitions to the Convert::Binary::C object. L|/"parse_file"> will search the include path given via the C option for the file if it cannot find it in the current directory. L|/"parse_file"> will throw an exception if an error occurs. On success, the method returns a reference to its object. See L<"Parsing C code"> for an example. When calling L|/"parse"> or L|/"parse_file"> multiple times, you may use types previously defined, but you are not allowed to redefine types. The state of the preprocessor is also saved, so you may also use defines from a previous parse. This works only as long as the preprocessor is not reset. See L<"Preprocessor configuration"> for details. When you're parsing C source files instead of C header files, note that local definitions are ignored. This means that type definitions hidden within functions will not be recognized by Convert::Binary::C. This is necessary because different functions (even different blocks within the same function) can define types with the same name: void my_func(int i) { if (i < 10) { enum digit { ONE, TWO, THREE } x = ONE; printf("%d, %d\n", i, x); } else { enum digit { THREE, TWO, ONE } x = ONE; printf("%d, %d\n", i, x); } } The above is a valid piece of C code, but it's not possible for Convert::Binary::C to distinguish between the different definitions of C, as they're only defined locally within the corresponding block. =back =head2 clean =over 8 =item C Clears all information that has been collected during previous calls to L|/"parse"> or L|/"parse_file">. You can use this method if you want to parse some entirely different code, but with the same configuration. The L|/"clean"> method returns a reference to its object. =back =head2 clone =over 8 =item C Makes the object return an exact independent copy of itself. $c = new Convert::Binary::C Include => ['/usr/include']; $c->parse_file('definitions.c'); $clone = $c->clone; The above code is technically equivalent (Mostly. Actually, using L|/"sourcify"> and L|/"parse"> might alter the order of the parsed data, which would make methods such as L|/"compound"> return the definitions in a different order.) to: $c = new Convert::Binary::C Include => ['/usr/include']; $c->parse_file('definitions.c'); $clone = new Convert::Binary::C %{$c->configure}; $clone->parse($c->sourcify); Using L|/"clone"> is just a lot faster. =back =head2 def =over 8 =item C NAME =item C TYPE If you need to know if a definition for a certain type name exists, use this method. You pass it the name of an enum, struct, union or typedef, and it will return a non-empty string being either C<"enum">, C<"struct">, C<"union">, or C<"typedef"> if there's a definition for the type in question, an empty string if there's no such definition, or C if the name is completely unknown. If the type can be interpreted as a basic type, C<"basic"> will be returned. If you pass in a L, the output will be slightly different. If the specified member exists, the L|/"def"> method will return C<"member">. If the member doesn't exist, or if the type cannot have members, the empty string will be returned. Again, if the name of the type is completely unknown, C will be returned. This may be useful if you want to check if a certain member exists within a compound, for example. use Convert::Binary::C; my $c = Convert::Binary::C->new->parse(<<'ENDC'); typedef struct __not not; typedef struct __not *ptr; struct foo { enum bar *xxx; }; typedef int quad[4]; ENDC for my $type (qw( not ptr foo bar xxx foo.xxx foo.abc xxx.yyy quad quad[3] quad[5] quad[-3] short[1] ), 'unsigned long') { my $def = $c->def($type); printf "%-14s => %s\n", $type, defined $def ? "'$def'" : 'undef'; } The following would be returned by the L|/"def"> method: not => '' ptr => 'typedef' foo => 'struct' bar => '' xxx => undef foo.xxx => 'member' foo.abc => '' xxx.yyy => undef quad => 'typedef' quad[3] => 'member' quad[5] => 'member' quad[-3] => 'member' short[1] => undef unsigned long => 'basic' So, if L|/"def"> returns a non-empty string, you can safely use any other method with that type's name or with that member expression. Concerning arrays, note that the index into an array doesn't need to be within the bounds of the array's definition, just like in C. In the above example, C and C are valid members of the C array, even though it is declared to have only four elements. In cases where the typedef namespace overlaps with the namespace of enums/structs/unions, the L|/"def"> method will give preference to the typedef and will thus return the string C<"typedef">. You could however force interpretation as an enum, struct or union by putting C<"enum">, C<"struct"> or C<"union"> in front of the type's name. =back =head2 defined =over 8 =item C MACRO You can use the L|/"defined"> method to find out if a certain macro is defined, just like you would use the C operator of the preprocessor. For example, the following code use Convert::Binary::C; my $c = Convert::Binary::C->new->parse(<<'ENDC'); #define ADD(a, b) ((a) + (b)) #if 1 # define DEFINED #else # define UNDEFINED #endif ENDC for my $macro (qw( ADD DEFINED UNDEFINED )) { my $not = $c->defined($macro) ? '' : ' not'; print "Macro '$macro' is$not defined.\n"; } would print: Macro 'ADD' is defined. Macro 'DEFINED' is defined. Macro 'UNDEFINED' is not defined. You have to keep in mind that this works only as long as the preprocessor is not reset. See L<"Preprocessor configuration"> for details. =back =head2 pack =over 8 =item C TYPE =item C TYPE, DATA =item C TYPE, DATA, STRING Use this method to pack a complex data structure into a binary string according to a type definition that has been previously parsed. DATA must be a scalar matching the type definition. C structures and unions are represented by references to Perl hashes, C arrays by references to Perl arrays. use Convert::Binary::C; use Data::Dumper; use Data::Hexdumper; $c = Convert::Binary::C->new( ByteOrder => 'BigEndian' , LongSize => 4 , ShortSize => 2 ) ->parse(<<'ENDC'); struct test { char ary[3]; union { short word[2]; long quad; } uni; }; ENDC Hashes don't have to contain a key for each compound member and arrays may be truncated: $binary = $c->pack('test', { ary => [1, 2], uni => { quad => 42 } }); Elements not defined in the Perl data structure will be set to zero in the packed byte string. If you pass C as or simply omit the second parameter, the whole string will be initialized with zero bytes. On success, the packed byte string is returned. print hexdump(data => $binary); The above code would print: 0x0000 : 01 02 00 00 00 00 2A : ......* You could also use L|/"unpack"> and dump the data structure. $unpacked = $c->unpack('test', $binary); print Data::Dumper->Dump([$unpacked], ['unpacked']); This would print: $unpacked = { 'uni' => { 'word' => [ 0, 42 ], 'quad' => 42 }, 'ary' => [ 1, 2, 0 ] }; If L refers to a compound object, you may pack any member of that compound object. Simply add a L to the type name, just as you would access the member in C: $array = $c->pack('test.ary', [1, 2, 3]); print hexdump(data => $array); $value = $c->pack('test.uni.word[1]', 2); print hexdump(data => $value); This would give you: 0x0000 : 01 02 03 : ... 0x0000 : 00 02 : .. Call L|/"pack"> with the optional STRING argument if you want to use an existing binary string to insert the data. If called in a void context, L|/"pack"> will directly modify the string you passed as the third argument. Otherwise, a copy of the string is created, and L|/"pack"> will modify and return the copy, so the original string will remain unchanged. The 3-argument version may be useful if you want to change only a few members of a complex data structure without having to L|/"unpack"> everything, change the members, and then L|/"pack"> again (which could waste lots of memory and CPU cycles). So, instead of doing something like $test = $c->unpack('test', $binary); $test->{uni}{quad} = 4711; $new = $c->pack('test', $test); to change the C member of C<$packed>, you could simply do either $new = $c->pack('test', { uni => { quad => 4711 } }, $binary); or $c->pack('test', { uni => { quad => 4711 } }, $binary); while the latter would directly modify C<$packed>. Besides this code being a lot shorter (and perhaps even more readable), it can be significantly faster if you're dealing with really big data blocks. If the length of the input string is less than the size required by the type, the string (or its copy) is extended and the extended part is initialized to zero. If the length is more than the size required by the type, the string is kept at that length, and also a copy would be an exact copy of that string. $too_short = pack "C*", (1 .. 4); $too_long = pack "C*", (1 .. 20); $c->pack('test', { uni => { quad => 0x4711 } }, $too_short); print "too_short:\n", hexdump(data => $too_short); $copy = $c->pack('test', { uni => { quad => 0x4711 } }, $too_long); print "\ncopy:\n", hexdump(data => $copy); This would print: too_short: 0x0000 : 01 02 03 00 00 47 11 : .....G. copy: 0x0000 : 01 02 03 00 00 47 11 08 09 0A 0B 0C 0D 0E 0F 10 : .....G.......... 0x0010 : 11 12 13 14 : .... =back =head2 unpack =over 8 =item C TYPE, STRING Use this method to unpack a binary string and create an arbitrarily complex Perl data structure based on a previously parsed type definition. use Convert::Binary::C; use Data::Dumper; $c = Convert::Binary::C->new( ByteOrder => 'BigEndian' , LongSize => 4 , ShortSize => 2 ) ->parse( <<'ENDC' ); struct test { char ary[3]; union { short word[2]; long *quad; } uni; }; ENDC # Generate some binary dummy data $binary = pack "C*", 1 .. $c->sizeof('test'); On failure, e.g. if the specified type cannot be found, the method will throw an exception. On success, a reference to a complex Perl data structure is returned, which can directly be dumped using the L module: $unpacked = $c->unpack('test', $binary); print Dumper($unpacked); This would print: $VAR1 = { 'uni' => { 'word' => [ 1029, 1543 ], 'quad' => 67438087 }, 'ary' => [ 1, 2, 3 ] }; If L refers to a compound object, you may unpack any member of that compound object. Simply add a L to the type name, just as you would access the member in C: $binary2 = substr $binary, $c->offsetof('test', 'uni.word'); $unpack1 = $unpacked->{uni}{word}; $unpack2 = $c->unpack('test.uni.word', $binary2); print Data::Dumper->Dump([$unpack1, $unpack2], [qw(unpack1 unpack2)]); You will find that the output is exactly the same for both C<$unpack1> and C<$unpack2>: $unpack1 = [ 1029, 1543 ]; $unpack2 = [ 1029, 1543 ]; When L|/"unpack"> is called in list context, it will unpack as many elements as possible from STRING, including zero if STRING is not long enough. =back =head2 initializer =over 8 =item C TYPE =item C TYPE, DATA The L|/"initializer"> method can be used retrieve an initializer string for a certain L. This can be useful if you have to initialize only a couple of members in a huge compound type or if you simply want to generate initializers automatically. struct date { unsigned year : 12; unsigned month: 4; unsigned day : 5; unsigned hour : 5; unsigned min : 6; }; typedef struct { enum { DATE, QWORD } type; short number; union { struct date date; unsigned long qword; } choice; } data; Given the above code has been parsed $init = $c->initializer('data'); print "data x = $init;\n"; would print the following: data x = { 0, 0, { { 0, 0, 0, 0, 0 } } }; You could directly put that into a C program, although it probably isn't very useful yet. It becomes more useful if you actually specify how you want to initialize the type: $data = { type => 'QWORD', choice => { date => { month => 12, day => 24 }, qword => 4711, }, stuff => 'yes?', }; $init = $c->initializer('data', $data); print "data x = $init;\n"; This would print the following: data x = { QWORD, 0, { { 0, 12, 24, 0, 0 } } }; As only the first member of a C can be initialized, C is ignored. You will not be warned about the fact that you probably tried to initialize a member other than the first. This is considered a feature, because it allows you to use L|/"unpack"> to generate the initializer data: $data = $c->unpack('data', $binary); $init = $c->initializer('data', $data); Since L|/"unpack"> unpacks all union members, you would otherwise have to delete all but the first one previous to feeding it into L|/"initializer">. Also, C is ignored, because it actually isn't a member of C. You won't be warned about that either. =back =head2 sizeof =over 8 =item C TYPE This method will return the size of a C type in bytes. If it cannot find the type, it will throw an exception. If the type defines some kind of compound object, you may ask for the size of a L of that compound object: $size = $c->sizeof('test.uni.word[1]'); This would set C<$size> to C<2>. =back =head2 typeof =over 8 =item C TYPE This method will return the type of a C member. While this only makes sense for compound types, it's legal to also use it for non-compound types. If it cannot find the type, it will throw an exception. The L|/"typeof"> method can be used on any valid L, even on arrays or unnamed types. It will always return a string that holds the name (or in case of unnamed types only the class) of the type, optionally followed by a C<'*'> character to indicate it's a pointer type, and optionally followed by one or more array dimensions if it's an array type. If the type is a bitfield, the type name is followed by a colon and the number of bits. struct test { char ary[3]; union { short word[2]; long *quad; } uni; struct { unsigned short six:6; unsigned short ten:10; } bits; }; Given the above C code has been parsed, calls to L|/"typeof"> would return the following values: $c->typeof('test') => 'struct test' $c->typeof('test.ary') => 'char [3]' $c->typeof('test.uni') => 'union' $c->typeof('test.uni.quad') => 'long *' $c->typeof('test.uni.word') => 'short [2]' $c->typeof('test.uni.word[1]') => 'short' $c->typeof('test.bits') => 'struct' $c->typeof('test.bits.six') => 'unsigned short :6' $c->typeof('test.bits.ten') => 'unsigned short :10' =back =head2 offsetof =over 8 =item C TYPE, MEMBER You can use L|/"offsetof"> just like the C macro of same denominator. It will simply return the offset (in bytes) of L relative to L. use Convert::Binary::C; $c = Convert::Binary::C->new( Alignment => 4 , LongSize => 4 , PointerSize => 4 ) ->parse(<<'ENDC'); typedef struct { char abc; long day; int *ptr; } week; struct test { week zap[8]; }; ENDC @args = ( ['test', 'zap[5].day' ], ['test.zap[2]', 'day' ], ['test', 'zap[5].day+1'], ['test', 'zap[-3].ptr' ], ); for (@args) { my $offset = eval { $c->offsetof(@$_) }; printf "\$c->offsetof('%s', '%s') => $offset\n", @$_; } The final loop will print: $c->offsetof('test', 'zap[5].day') => 64 $c->offsetof('test.zap[2]', 'day') => 4 $c->offsetof('test', 'zap[5].day+1') => 65 $c->offsetof('test', 'zap[-3].ptr') => -28 =over 2 =item * The first iteration simply shows that the offset of C is 64 relative to the beginning of C. =item * You may additionally specify a member for the type passed as the first argument, as shown in the second iteration. =item * The L is also supported by L|/"offsetof">, so the third iteration will correctly print 65. =item * The last iteration demonstrates that even out-of-bounds array indices are handled correctly, just as they are handled in C. =back Unlike the C macro, L|/"offsetof"> also works on array types. $offset = $c->offsetof('test.zap', '[3].ptr+2'); print "offset = $offset"; This will print: offset = 46 If L is a compound, L may optionally be prefixed with a dot, so printf "offset = %d\n", $c->offsetof('week', 'day'); printf "offset = %d\n", $c->offsetof('week', '.day'); are both equivalent and will print offset = 4 offset = 4 This allows to =over 2 =item * use the C macro style, without a leading dot, and =item * directly use the output of the L|/"member"> method, which includes a leading dot for compound types, as input for the L argument. =back =back =head2 member =over 8 =item C TYPE =item C TYPE, OFFSET You can think of L|/"member"> as being the reverse of the L|/"offsetof"> method. However, as this is more complex, there's no equivalent to L|/"member"> in the C language. Usually this method is used if you want to retrieve the name of the member that is located at a specific offset of a previously parsed type. use Convert::Binary::C; $c = Convert::Binary::C->new( Alignment => 4 , LongSize => 4 , PointerSize => 4 ) ->parse(<<'ENDC'); typedef struct { char abc; long day; int *ptr; } week; struct test { week zap[8]; }; ENDC for my $offset (24, 39, 69, 99) { print "\$c->member('test', $offset)"; my $member = eval { $c->member('test', $offset) }; print $@ ? "\n exception: $@" : " => '$member'\n"; } This will print: $c->member('test', 24) => '.zap[2].abc' $c->member('test', 39) => '.zap[3]+3' $c->member('test', 69) => '.zap[5].ptr+1' $c->member('test', 99) exception: Offset 99 out of range (0 <= offset < 96) =over 2 =item * The output of the first iteration is obvious. The member C is located at offset 24 of C. =item * In the second iteration, the offset points into a region of padding bytes and thus no member of C can be named. Instead of a member name the offset relative to C is appended. =item * In the third iteration, the offset points to C. However, C is located at 68, not at 69, and thus the remaining offset of 1 is also appended. =item * The last iteration causes an exception because the offset of 99 is not valid for C since the size of C is only 96. You might argue that this is inconsistent, since L|/"offsetof"> can also handle out-of-bounds array members. But as soon as you have more than one level of array nesting, there's an infinite number of out-of-bounds members for a single given offset, so it would be impossible to return a list of all members. =back You can additionally specify a member for the type passed as the first argument: $member = $c->member('test.zap[2]', 6); print $member; This will print: .day+2 Like L|/"offsetof">, L|/"member"> also works on array types: $member = $c->member('test.zap', 42); print $member; This will print: [3].day+2 While the behaviour for Cs is quite obvious, the behaviour for Cs is rather tricky. As a single offset usually references more than one member of a union, there are certain rules that the algorithm uses for determining the I member. =over 2 =item * The first non-compound member that is referenced without an offset has the highest priority. =item * If no member is referenced without an offset, the first non-compound member that is referenced with an offset will be returned. =item * Otherwise the first padding region that is encountered will be taken. =back As an example, given 4-byte-alignment and the union union choice { struct { char color[2]; long size; char taste; } apple; char grape[3]; struct { long weight; short price[3]; } melon; }; the L|/"member"> method would return what is shown in the I column of the following table. The I column shows the result of the L|/"typeof"> method when passing the corresponding member. Offset Member Type -------------------------------------- 0 .apple.color[0] 'char' 1 .apple.color[1] 'char' 2 .grape[2] 'char' 3 .melon.weight+3 'long' 4 .apple.size 'long' 5 .apple.size+1 'long' 6 .melon.price[1] 'short' 7 .apple.size+3 'long' 8 .apple.taste 'char' 9 .melon.price[2]+1 'short' 10 .apple+10 'struct' 11 .apple+11 'struct' It's like having a stack of all the union members and looking through the stack for the shiniest piece you can see. The beginning of a member (denoted by uppercase letters) is always shinier than the rest of a member, while padding regions (denoted by dashes) aren't shiny at all. Offset 0 1 2 3 4 5 6 7 8 9 10 11 ------------------------------------------------------- apple (C) (C) - - (S) (s) s (s) (T) - (-) (-) grape G G (G) melon W w w (w) P p (P) p P (p) - - If you look through that stack from top to bottom, you'll end up at the parenthesized members. Alternatively, if you're not only interested in the I member, you can call L|/"member"> in list context, which makes it return I members referenced by the given offset. Offset Member Type -------------------------------------- 0 .apple.color[0] 'char' .grape[0] 'char' .melon.weight 'long' 1 .apple.color[1] 'char' .grape[1] 'char' .melon.weight+1 'long' 2 .grape[2] 'char' .melon.weight+2 'long' .apple+2 'struct' 3 .melon.weight+3 'long' .apple+3 'struct' 4 .apple.size 'long' .melon.price[0] 'short' 5 .apple.size+1 'long' .melon.price[0]+1 'short' 6 .melon.price[1] 'short' .apple.size+2 'long' 7 .apple.size+3 'long' .melon.price[1]+1 'short' 8 .apple.taste 'char' .melon.price[2] 'short' 9 .melon.price[2]+1 'short' .apple+9 'struct' 10 .apple+10 'struct' .melon+10 'struct' 11 .apple+11 'struct' .melon+11 'struct' The first member returned is always the I member. The other members are sorted according to the rules given above. This means that members referenced without an offset are followed by members referenced with an offset. Padding regions will be at the end. If OFFSET is not given in the method call, L|/"member"> will return a list of I possible members of L. print "$_\n" for $c->member('choice'); This will print: .apple.color[0] .apple.color[1] .apple.size .apple.taste .grape[0] .grape[1] .grape[2] .melon.weight .melon.price[0] .melon.price[1] .melon.price[2] In scalar context, the number of possible members is returned. =back =head2 tag =over 8 =item C TYPE =item C TYPE, TAG =item C TYPE, TAG1 =E VALUE1, TAG2 =E VALUE2, ... The L|/"tag"> method can be used to tag properties to a L. It's a bit like having L|/"configure"> for individual types. See L<"USING TAGS"> for an example. Note that while you can tag whole types as well as compound members, it is not possible to tag array members, i.e. you cannot treat, for example, C and C differently. Also note that in code like this struct test { int a; struct { int x; } b, c; }; if you tag C, this will also tag C implicitly. It is also possible to tag basic types if you really want to do that, for example: $c->tag('int', Format => 'Binary'); To remove a tag from a type, you can either set that tag to C, for example $c->tag('test', Hooks => undef); or use L|/"untag">. To see if a tag is attached to a type or to get the value of a tag, pass only the type and tag name to L|/"tag">: $c->tag('test.a', Format => 'Binary'); $hooks = $c->tag('test.a', 'Hooks'); $format = $c->tag('test.a', 'Format'); This will give you: $hooks = undef; $format = 'Binary'; To see which tags are attached to a type, pass only the type. The L|/"tag"> method will now return a hash reference containing all tags attached to the type: $tags = $c->tag('test.a'); This will give you: $tags = { 'Format' => 'Binary' }; L|/"tag"> will throw an exception if an error occurs. If called as a 'set' method, it will return a reference to its object, allowing you to chain together consecutive method calls. Note that when a compound is inlined, tags attached to the inlined compound are ignored, for example: $c->parse(<tag($type, Hooks => { unpack => sub { print "unpack: $type\n"; @_ } }); } for my $type (qw( header message )) { print "[unpacking $type]\n"; $u = $c->unpack($type, $data); } This will print: [unpacking header] unpack: header.len unpack: header [unpacking message] unpack: header.len unpack: message As you can see from the above output, tags attached to members of inlined compounds (C are still handled. The following tags can be configured: =over 4 =item C =E 'Binary' | 'String' The C tag allows you to control the way binary data is converted by L|/"pack"> and L|/"unpack">. If you tag a C as C, it will not be converted at all, i.e. it will be passed through as a binary string. If you tag it as C, it will be treated like a null-terminated C string, i.e. L|/"unpack"> will convert the C string to a Perl string and vice versa. See L<"The Format Tag"> for an example. =item C =E 'BigEndian' | 'LittleEndian' The C tag allows you to explicitly set the byte order of a L. See L<"The ByteOrder Tag"> for an example. =item C =E '*' =item C =E VALUE =item C =E MEMBER =item C =E SUB =item C =E [ SUB, ARGS ] The C tag allows you to alter the size of an array dynamically. You can tag fixed size arrays as being flexible using C<'*'>. This is useful if you cannot use flexible array members in your source code. $c->tag('type.array', Dimension => '*'); You can also tag an array to have a fixed size different from the one it was originally declared with. $c->tag('type.array', Dimension => 42); If the array is a member of a compound, you can also tag it with to have a size corresponding to the value of another member in that compound. $c->tag('type.array', Dimension => 'count'); Finally, you can specify a subroutine that is called when the size of the array needs to be determined. $c->tag('type.array', Dimension => \&get_count); By default, and if the array is a compound member, that subroutine will be passed a reference to the hash storing the data for the compound. You can also instruct Convert::Binary::C to pass additional arguments to the subroutine by passing an array reference instead of the subroutine reference. This array contains the subroutine reference as well as a list of arguments. It is possible to define certain special arguments using the L|/"arg"> method. $c->tag('type.array', Dimension => [\&get_count, $c->arg('SELF'), 42]); See L<"The Dimension Tag"> for various examples. =item C =E { HOOK =E SUB, HOOK =E [ SUB, ARGS ], ... }, ... The C tag allows you to register subroutines as hooks. Hooks are called whenever a certain C is packed or unpacked. Hooks are currently considered an B feature. C can be one of the following: pack unpack pack_ptr unpack_ptr C and C hooks are called when processing their C, while C and C hooks are called when processing pointers to their C. C is a reference to a subroutine that usually takes one input argument, processes it and returns one output argument. Alternatively, you can pass a custom list of arguments to the hook by using an array reference instead of C that holds the subroutine reference in the first element and the arguments to be passed to the subroutine as the other elements. This way, you can even pass special arguments to the hook using the L|/"arg"> method. Here are a few examples for registering hooks: $c->tag('ObjectType', Hooks => { pack => \&obj_pack, unpack => \&obj_unpack }); $c->tag('ProtocolId', Hooks => { unpack => sub { $protos[$_[0]] } }); $c->tag('ProtocolId', Hooks => { unpack_ptr => [sub { sprintf "$_[0]:{0x%X}", $_[1] }, $c->arg('TYPE', 'DATA') ], }); Note that the above example registers both an C hook and an C hook for C with two separate calls to L|/"tag">. As long as you don't explicitly overwrite a previously registered hook, it won't be modified or removed by registering other hooks for the same C. To remove all registered hooks for a type, simply remove the C tag: $c->untag('ProtocolId', 'Hooks'); To remove only a single hook, pass C as C instead of a subroutine reference: $c->tag('ObjectType', Hooks => { pack => undef }); If all hooks are removed, the whole C tag is removed. See L<"The Hooks Tag"> for examples on how to use hooks. =back =back =head2 untag =over 8 =item C TYPE =item C TYPE, TAG1, TAG2, ... Use the L|/"untag"> method to remove one, more, or all tags from a type. If you don't pass any tag names, all tags attached to the type will be removed. Otherwise only the listed tags will be removed. See L<"USING TAGS"> for an example. =back =head2 arg =over 8 =item C 'ARG', ... Creates placeholders for special arguments to be passed to hooks or other subroutines. These arguments are currently: =over 4 =item C A reference to the calling Convert::Binary::C object. This may be useful if you need to work with the object inside the subroutine. =item C The name of the type that is currently being processed by the hook. =item C The data argument that is passed to the subroutine. =item C The type of the hook as which the subroutine has been called, for example C or C. =back L|/"arg"> will return a placeholder for each argument it is being passed. Note that not all arguments may be supported depending on the context of the subroutine. =back =head2 dependencies =over 8 =item C After some code has been parsed using either the L|/"parse"> or L|/"parse_file"> methods, the L|/"dependencies"> method can be used to retrieve information about all files that the object depends on, i.e. all files that have been parsed. In scalar context, the method returns a hash reference. Each key is the name of a file. The values are again hash references, each of which holds the size, modification time (mtime), and change time (ctime) of the file at the moment it was parsed. use Convert::Binary::C; use Data::Dumper; #---------------------------------------------------------- # Create object, set include path, parse 'string.h' header #---------------------------------------------------------- my $c = Convert::Binary::C->new ->Include('/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include', '/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include-fixed', '/usr/include') ->parse_file('string.h'); #---------------------------------------------------------- # Get dependencies of the object, extract dependency files #---------------------------------------------------------- my $depend = $c->dependencies; my @files = keys %$depend; #----------------------------- # Dump dependencies and files #----------------------------- print Data::Dumper->Dump([$depend, \@files], [qw( depend *files )]); The above code would print something like this: $depend = { '/usr/include/features.h' => { 'ctime' => 1300268052, 'mtime' => 1300267911, 'size' => 12511 }, '/usr/include/gnu/stubs-32.h' => { 'ctime' => 1300268051, 'mtime' => 1300268010, 'size' => 624 }, '/usr/include/sys/cdefs.h' => { 'ctime' => 1300268051, 'mtime' => 1300267957, 'size' => 13195 }, '/usr/include/gnu/stubs.h' => { 'ctime' => 1300268051, 'mtime' => 1300267911, 'size' => 315 }, '/usr/include/string.h' => { 'ctime' => 1300268052, 'mtime' => 1300267944, 'size' => 22572 }, '/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/stddef.h' => { 'ctime' => 1300365679, 'mtime' => 1300363914, 'size' => 12542 }, '/usr/include/bits/wordsize.h' => { 'ctime' => 1300268051, 'mtime' => 1300267937, 'size' => 873 }, '/usr/include/xlocale.h' => { 'ctime' => 1300268051, 'mtime' => 1300267915, 'size' => 1764 } }; @files = ( '/usr/include/features.h', '/usr/include/gnu/stubs-32.h', '/usr/include/sys/cdefs.h', '/usr/include/gnu/stubs.h', '/usr/include/string.h', '/usr/lib/gcc/i686-pc-linux-gnu/4.5.2/include/stddef.h', '/usr/include/bits/wordsize.h', '/usr/include/xlocale.h' ); In list context, the method returns the names of all files that have been parsed, i.e. the following lines are equivalent: @files = keys %{$c->dependencies}; @files = $c->dependencies; =back =head2 sourcify =over 8 =item C =item C CONFIG Returns a string that holds the C source code necessary to represent all parsed C data structures. use Convert::Binary::C; $c = new Convert::Binary::C; $c->parse(<<'END'); #define ADD(a, b) ((a) + (b)) #define NUMBER 42 typedef struct _mytype mytype; struct _mytype { union { int iCount; enum count *pCount; } counter; #pragma pack( push, 1 ) struct { char string[NUMBER]; int array[NUMBER/sizeof(int)]; } storage; #pragma pack( pop ) mytype *next; }; enum count { ZERO, ONE, TWO, THREE }; END print $c->sourcify; The above code would print something like this: /* typedef predeclarations */ typedef struct _mytype mytype; /* defined enums */ enum count { ZERO, ONE, TWO, THREE }; /* defined structs and unions */ struct _mytype { union { int iCount; enum count *pCount; } counter; #pragma pack(push, 1) struct { char string[42]; int array[10]; } storage; #pragma pack(pop) mytype *next; }; The purpose of the L|/"sourcify"> method is to enable some kind of platform-independent caching. The C code generated by L|/"sourcify"> can be parsed by any standard C compiler, as well as of course by the Convert::Binary::C parser. However, the code may be significantly shorter than the code that has originally been parsed. When parsing a typical header file, it's easily possible that you need to open dozens of other files that are included from that file, and end up parsing several hundred kilobytes of C code. Since most of it is usually preprocessor directives, function prototypes and comments, the L|/"sourcify"> function strips this down to a few kilobytes. Saving the L|/"sourcify"> string and parsing it next time instead of the original code may be a lot faster. The L|/"sourcify"> method takes a hash reference as an optional argument. It can be used to tweak the method's output. The following options can be configured. =over 4 =item C =E 0 | 1 Turns preprocessor context information on or off. If this is turned on, L|/"sourcify"> will insert C<#line> preprocessor directives in its output. So in the above example print $c->sourcify({ Context => 1 }); would print: /* typedef predeclarations */ typedef struct _mytype mytype; /* defined enums */ #line 21 "[buffer]" enum count { ZERO, ONE, TWO, THREE }; /* defined structs and unions */ #line 7 "[buffer]" struct _mytype { #line 8 "[buffer]" union { int iCount; enum count *pCount; } counter; #pragma pack(push, 1) #line 13 "[buffer]" struct { char string[42]; int array[10]; } storage; #pragma pack(pop) mytype *next; }; Note that C<"[buffer]"> refers to the here-doc buffer when using L|/"parse">. =item C =E 0 | 1 Turn this on if you want all the defined macros to be part of the source code output. Given the example code above print $c->sourcify({ Defines => 1 }); would print: /* typedef predeclarations */ typedef struct _mytype mytype; /* defined enums */ enum count { ZERO, ONE, TWO, THREE }; /* defined structs and unions */ struct _mytype { union { int iCount; enum count *pCount; } counter; #pragma pack(push, 1) struct { char string[42]; int array[10]; } storage; #pragma pack(pop) mytype *next; }; /* preprocessor defines */ #define ADD(a, b) ((a) + (b)) #define NUMBER 42 The macro definitions always appear at the end of the source code. The order of the macro definitions is undefined. =back =back The following methods can be used to retrieve information about the definitions that have been parsed. The examples given in the description for L|/"enum">, L|/"compound"> and L|/"typedef"> all assume this piece of C code has been parsed: #define ABC_SIZE 2 #define MULTIPLY(x, y) ((x)*(y)) #ifdef ABC_SIZE # define DEFINED #else # define NOT_DEFINED #endif typedef unsigned long U32; typedef void *any; enum __socket_type { SOCK_STREAM = 1, SOCK_DGRAM = 2, SOCK_RAW = 3, SOCK_RDM = 4, SOCK_SEQPACKET = 5, SOCK_PACKET = 10 }; struct STRUCT_SV { void *sv_any; U32 sv_refcnt; U32 sv_flags; }; typedef union { int abc[ABC_SIZE]; struct xxx { int a; int b; } ab[3][4]; any ptr; } test; =head2 enum_names =over 8 =item C Returns a list of identifiers of all defined enumeration objects. Enumeration objects don't necessarily have an identifier, so something like enum { A, B, C }; will obviously not appear in the list returned by the L|/"enum_names"> method. Also, enumerations that are not defined within the source code - like in struct foo { enum weekday *pWeekday; unsigned long year; }; where only a pointer to the C enumeration object is used - will not be returned, even though they have an identifier. So for the above two enumerations, L|/"enum_names"> will return an empty list: @names = $c->enum_names; The only way to retrieve a list of all enumeration identifiers is to use the L|/"enum"> method without additional arguments. You can get a list of all enumeration objects that have an identifier by using @enums = map { $_->{identifier} || () } $c->enum; but these may not have a definition. Thus, the two arrays would look like this: @names = (); @enums = ('weekday'); The L|/"def"> method returns a true value for all identifiers returned by L|/"enum_names">. =back =head2 enum =over 8 =item enum =item C LIST Returns a list of references to hashes containing detailed information about all enumerations that have been parsed. If a list of enumeration identifiers is passed to the method, the returned list will only contain hash references for those enumerations. The enumeration identifiers may optionally be prefixed by C. If an enumeration identifier cannot be found, the returned list will contain an undefined value at that position. In scalar context, the number of enumerations will be returned as long as the number of arguments to the method call is not 1. In the latter case, a hash reference holding information for the enumeration will be returned. The list returned by the L|/"enum"> method looks similar to this: @enum = ( { 'enumerators' => { 'SOCK_STREAM' => 1, 'SOCK_RAW' => 3, 'SOCK_SEQPACKET' => 5, 'SOCK_RDM' => 4, 'SOCK_PACKET' => 10, 'SOCK_DGRAM' => 2 }, 'identifier' => '__socket_type', 'context' => 'definitions.c(13)', 'size' => 4, 'sign' => 0 } ); =over 4 =item C holds the enumeration identifier. This key is not present if the enumeration has no identifier. =item C is the context in which the enumeration is defined. This is the filename followed by the line number in parentheses. =item C is a reference to a hash table that holds all enumerators of the enumeration. =item C is a boolean indicating if the enumeration is signed (i.e. has negative values). =back One useful application may be to create a hash table that holds all enumerators of all defined enumerations: %enum = map %{ $_->{enumerators} || {} }, $c->enum; The C<%enum> hash table would then be: %enum = ( 'SOCK_STREAM' => 1, 'SOCK_RAW' => 3, 'SOCK_SEQPACKET' => 5, 'SOCK_RDM' => 4, 'SOCK_DGRAM' => 2, 'SOCK_PACKET' => 10 ); =back =head2 compound_names =over 8 =item C Returns a list of identifiers of all structs and unions (compound data structures) that are defined in the parsed source code. Like enumerations, compounds don't need to have an identifier, nor do they need to be defined. Again, the only way to retrieve information about all struct and union objects is to use the L|/"compound"> method and don't pass it any arguments. If you should need a list of all struct and union identifiers, you can use: @compound = map { $_->{identifier} || () } $c->compound; The L|/"def"> method returns a true value for all identifiers returned by L|"compound_names">. If you need the names of only the structs or only the unions, use the L|/"struct_names"> and L|/"union_names"> methods respectively. =back =head2 compound =over 8 =item C =item C LIST Returns a list of references to hashes containing detailed information about all compounds (structs and unions) that have been parsed. If a list of struct/union identifiers is passed to the method, the returned list will only contain hash references for those compounds. The identifiers may optionally be prefixed by C or C, which limits the search to the specified kind of compound. If an identifier cannot be found, the returned list will contain an undefined value at that position. In scalar context, the number of compounds will be returned as long as the number of arguments to the method call is not 1. In the latter case, a hash reference holding information for the compound will be returned. The list returned by the L|/"compound"> method looks similar to this: @compound = ( { 'identifier' => 'STRUCT_SV', 'align' => 1, 'context' => 'definitions.c(23)', 'pack' => 0, 'type' => 'struct', 'declarations' => [ { 'declarators' => [ { 'declarator' => '*sv_any', 'size' => 4, 'offset' => 0 } ], 'type' => 'void' }, { 'declarators' => [ { 'declarator' => 'sv_refcnt', 'size' => 4, 'offset' => 4 } ], 'type' => 'U32' }, { 'declarators' => [ { 'declarator' => 'sv_flags', 'size' => 4, 'offset' => 8 } ], 'type' => 'U32' } ], 'size' => 12 }, { 'identifier' => 'xxx', 'align' => 1, 'context' => 'definitions.c(31)', 'pack' => 0, 'type' => 'struct', 'declarations' => [ { 'declarators' => [ { 'declarator' => 'a', 'size' => 4, 'offset' => 0 } ], 'type' => 'int' }, { 'declarators' => [ { 'declarator' => 'b', 'size' => 4, 'offset' => 4 } ], 'type' => 'int' } ], 'size' => 8 }, { 'align' => 1, 'context' => 'definitions.c(29)', 'pack' => 0, 'type' => 'union', 'declarations' => [ { 'declarators' => [ { 'declarator' => 'abc[2]', 'size' => 8, 'offset' => 0 } ], 'type' => 'int' }, { 'declarators' => [ { 'declarator' => 'ab[3][4]', 'size' => 96, 'offset' => 0 } ], 'type' => 'struct xxx' }, { 'declarators' => [ { 'declarator' => 'ptr', 'size' => 4, 'offset' => 0 } ], 'type' => 'any' } ], 'size' => 96 } ); =over 4 =item C holds the struct or union identifier. This key is not present if the compound has no identifier. =item C is the context in which the struct or union is defined. This is the filename followed by the line number in parentheses. =item C is either 'struct' or 'union'. =item C is the size of the struct or union. =item C is the alignment of the struct or union. =item C is the struct member alignment if the compound is packed, or zero otherwise. =item C is an array of hash references describing each struct declaration: =over 4 =item C is the type of the struct declaration. This may be a string or a reference to a hash describing the type. =item C is an array of hashes describing each declarator: =over 4 =item C is a string representation of the declarator. =item C is the offset of the struct member represented by the current declarator relative to the beginning of the struct or union. =item C is the size occupied by the struct member represented by the current declarator. =back =back =back It may be useful to have separate lists for structs and unions. One way to retrieve such lists would be to use push @{$_->{type} eq 'union' ? \@unions : \@structs}, $_ for $c->compound; However, you should use the L|/"struct"> and L|/"union"> methods, which is a lot simpler: @structs = $c->struct; @unions = $c->union; =back =head2 struct_names =over 8 =item C Returns a list of all defined struct identifiers. This is equivalent to calling L|"compound_names">, just that it only returns the names of the struct identifiers and doesn't return the names of the union identifiers. =back =head2 struct =over 8 =item C =item C LIST Like the L|/"compound"> method, but only allows for structs. =back =head2 union_names =over 8 =item C Returns a list of all defined union identifiers. This is equivalent to calling L|"compound_names">, just that it only returns the names of the union identifiers and doesn't return the names of the struct identifiers. =back =head2 union =over 8 =item C =item C LIST Like the L|/"compound"> method, but only allows for unions. =back =head2 typedef_names =over 8 =item C Returns a list of all defined typedef identifiers. Typedefs that do not specify a type that you could actually work with will not be returned. The L|/"def"> method returns a true value for all identifiers returned by L|/"typedef_names">. =back =head2 typedef =over 8 =item C =item C LIST Returns a list of references to hashes containing detailed information about all typedefs that have been parsed. If a list of typedef identifiers is passed to the method, the returned list will only contain hash references for those typedefs. If an identifier cannot be found, the returned list will contain an undefined value at that position. In scalar context, the number of typedefs will be returned as long as the number of arguments to the method call is not 1. In the latter case, a hash reference holding information for the typedef will be returned. The list returned by the L|/"typedef"> method looks similar to this: @typedef = ( { 'declarator' => 'U32', 'type' => 'unsigned long' }, { 'declarator' => '*any', 'type' => 'void' }, { 'declarator' => 'test', 'type' => { 'align' => 1, 'context' => 'definitions.c(29)', 'pack' => 0, 'type' => 'union', 'declarations' => [ { 'declarators' => [ { 'declarator' => 'abc[2]', 'size' => 8, 'offset' => 0 } ], 'type' => 'int' }, { 'declarators' => [ { 'declarator' => 'ab[3][4]', 'size' => 96, 'offset' => 0 } ], 'type' => 'struct xxx' }, { 'declarators' => [ { 'declarator' => 'ptr', 'size' => 4, 'offset' => 0 } ], 'type' => 'any' } ], 'size' => 96 } } ); =over 4 =item C is the type declarator. =item C is the type specification. This may be a string or a reference to a hash describing the type. See L|/"enum"> and L|/"compound"> for a description on how to interpret this hash. =back =back =head2 macro_names =over 8 =item C Returns a list of all defined macro names. The list returned by the L|/"macro_names"> method looks similar to this: @macro_names = ( '__STDC_VERSION__', '__STDC_HOSTED__', 'DEFINED', 'MULTIPLY', 'ABC_SIZE' ); This works only as long as the preprocessor is not reset. See L<"Preprocessor configuration"> for details. =back =head2 macro =over 8 =item C =item C LIST Returns the definitions for all defined macros. If a list of macro names is passed to the method, the returned list will only contain the definitions for those macros. For undefined macros, C will be returned. The list returned by the L|/"macro"> method looks similar to this: @macro = ( '__STDC_VERSION__ 199901L', '__STDC_HOSTED__ 1', 'DEFINED', 'MULTIPLY(x, y) ((x)*(y))', 'ABC_SIZE 2' ); This works only as long as the preprocessor is not reset. See L<"Preprocessor configuration"> for details. =back =head1 FUNCTIONS You can alternatively call the following functions as methods on Convert::Binary::C objects. =head2 feature =over 8 =item C STRING Checks if Convert::Binary::C was built with certain features. For example, print "debugging version" if Convert::Binary::C::feature('debug'); will check if Convert::Binary::C was built with debugging support enabled. The C function returns C<1> if the feature is enabled, C<0> if the feature is disabled, and C if the feature is unknown. Currently the only features that can be checked are C and C. You can enable or disable certain features at compile time of the module by using the perl Makefile.PL enable-feature disable-feature syntax. =back =head2 native =over 8 =item C =item C STRING Returns the value of a property of the native system that Convert::Binary::C was built on. For example, $size = Convert::Binary::C::native('IntSize'); will fetch the size of an C on the native system. The following properties can be queried: Alignment ByteOrder CharSize CompoundAlignment DoubleSize EnumSize FloatSize HostedC IntSize LongDoubleSize LongLongSize LongSize PointerSize ShortSize StdCVersion UnsignedBitfields UnsignedChars You can also call L|/"native"> without arguments, in which case it will return a reference to a hash with all properties, like: $native = { 'StdCVersion' => undef, 'ByteOrder' => 'LittleEndian', 'LongSize' => 4, 'IntSize' => 4, 'HostedC' => 1, 'ShortSize' => 2, 'UnsignedChars' => 0, 'DoubleSize' => 8, 'CharSize' => 1, 'EnumSize' => 4, 'PointerSize' => 4, 'FloatSize' => 4, 'LongLongSize' => 8, 'Alignment' => 4, 'LongDoubleSize' => 12, 'UnsignedBitfields' => 0, 'CompoundAlignment' => 1 }; The contents of that hash are suitable for passing them to the L|/"configure"> method. =back =head1 DEBUGGING Like perl itself, Convert::Binary::C can be compiled with debugging support that can then be selectively enabled at runtime. You can specify whether you like to build Convert::Binary::C with debugging support or not by explicitly giving an argument to F. Use perl Makefile.PL enable-debug to enable debugging, or perl Makefile.PL disable-debug to disable debugging. The default will depend on how your perl binary was built. If it was built with C<-DDEBUGGING>, Convert::Binary::C will be built with debugging support, too. Once you have built Convert::Binary::C with debugging support, you can use the following syntax to enable debug output. Instead of use Convert::Binary::C; you simply say use Convert::Binary::C debug => 'all'; which will enable all debug output. However, I don't recommend to enable all debug output, because that can be a fairly large amount. =head2 Debugging options Instead of saying C, you can pass a string that consists of one or more of the following characters: m enable memory allocation tracing M enable memory allocation & assertion tracing h enable hash table debugging H enable hash table dumps d enable debug output from the XS module c enable debug output from the ctlib t enable debug output about type objects l enable debug output from the C lexer p enable debug output from the C parser P enable debug output from the C preprocessor r enable debug output from the #pragma parser y enable debug output from yacc (bison) So the following might give you a brief overview of what's going on inside Convert::Binary::C: use Convert::Binary::C debug => 'dct'; When you want to debug memory allocation using use Convert::Binary::C debug => 'm'; you can use the Perl script F that resides in the F directory to extract statistics about memory usage and information about memory leaks from the resulting debug output. =head2 Redirecting debug output By default, all debug output is written to C. You can, however, redirect the debug output to a file with the C option: use Convert::Binary::C debug => 'dcthHm', debugfile => './debug.out'; If the file cannot be opened, you'll receive a warning and the output will go the C way again. Alternatively, you can use the environment variables L|/"CBC_DEBUG_OPT"> and L|/"CBC_DEBUG_FILE"> to turn on debug output. If Convert::Binary::C is built without debugging support, passing the C or C options will cause a warning to be issued. The corresponding environment variables will simply be ignored. =head1 ENVIRONMENT =head2 C Setting this variable to a non-zero value will globally turn on hash key ordering for compound members. Have a look at the C option for details. Setting the variable to the name of a perl module will additionally use this module instead of the predefined modules for member ordering to tie the hashes to. =head2 C If Convert::Binary::C is built with debugging support, you can use this variable to specify the L. =head2 C If Convert::Binary::C is built with debugging support, you can use this variable to L the debug output to a file. =head2 C This variable is intended purely for development. Setting it to a non-zero value disables the Convert::Binary::C parser, which means that no information is collected from the file or code that is parsed. However, the preprocessor will run, which is useful for benchmarking the preprocessor. =head1 FLEXIBLE ARRAY MEMBERS AND INCOMPLETE TYPES Flexible array members are a feature introduced with ISO-C99. It's a common problem that you have a variable length data field at the end of a structure, for example an array of characters at the end of a message struct. ISO-C99 allows you to write this as: struct message { long header; char data[]; }; The advantage is that you clearly indicate that the size of the appended data is variable, and that the C member doesn't contribute to the size of the C structure. When packing or unpacking data, Convert::Binary::C deals with flexible array members as if their length was adjustable. For example, L|/"unpack"> will adapt the length of the array depending on the input string: $msg1 = $c->unpack('message', 'abcdefg'); $msg2 = $c->unpack('message', 'abcdefghijkl'); The following data is unpacked: $msg1 = { 'data' => [ 101, 102, 103 ], 'header' => 1633837924 }; $msg2 = { 'data' => [ 101, 102, 103, 104, 105, 106, 107, 108 ], 'header' => 1633837924 }; Similarly, pack will adjust the length of the output string according to the data you feed in: use Data::Hexdumper; $msg = { header => 4711, data => [0x10, 0x20, 0x30, 0x40, 0x77..0x88], }; $data = $c->pack('message', $msg); print hexdump(data => $data); This would print: 0x0000 : 00 00 12 67 10 20 30 40 77 78 79 7A 7B 7C 7D 7E : ...g..0@wxyz{|}~ 0x0010 : 7F 80 81 82 83 84 85 86 87 88 : .......... Incomplete types such as typedef unsigned long array[]; are handled in exactly the same way. Thus, you can easily $array = $c->unpack('array', '?'x20); which will unpack the following array: $array = [ 1061109567, 1061109567, 1061109567, 1061109567, 1061109567 ]; You can also alter the length of an array using the L|/"The Dimension Tag"> tag. =head1 FLOATING POINT VALUES When using Convert::Binary::C to handle floating point values, you have to be aware of some limitations. You're usually safe if all your platforms are using the IEEE floating point format. During the Convert::Binary::C build process, the C feature will automatically be enabled if the host is using IEEE floating point. You can check for this feature at runtime using the L|/"feature"> function: if (Convert::Binary::C::feature('ieeefp')) { # do something } When IEEE floating point support is enabled, the module can also handle floating point values of a different byteorder. If your host platform is not using IEEE floating point, the C feature will be disabled. Convert::Binary::C then will be more restrictive, refusing to handle any non-native floating point values. However, Convert::Binary::C cannot detect the floating point format used by your target platform. It can only try to prevent problems in obvious cases. If you know your target platform has a completely different floating point format, don't use floating point conversion at all. Whenever Convert::Binary::C detects that it cannot properly do floating point value conversion, it will issue a warning and will not attempt to convert the floating point value. =head1 BITFIELDS Bitfield support in Convert::Binary::C is currently in an B state. You are encouraged to test it, but you should not blindly rely on its results. You are also encouraged to supply layouting algorithms for compilers whose bitfield implementation is not handled correctly at the moment. Even better that the plain algorithm is of course a patch that adds a new bitfield layouting engine. While bitfields may not be handled correctly by the conversion routines yet, they are always parsed correctly. This means that you can reliably use the declarator fields as returned by the L|/"struct"> or L|/"typedef"> methods. Given the following source struct bitfield { int seven:7; int :1; int four:4, :0; int integer; }; a call to L|/"struct"> will return @struct = ( { 'identifier' => 'bitfield', 'align' => 1, 'context' => 'bitfields.c(1)', 'pack' => 0, 'type' => 'struct', 'declarations' => [ { 'declarators' => [ { 'declarator' => 'seven:7' } ], 'type' => 'int' }, { 'declarators' => [ { 'declarator' => ':1' } ], 'type' => 'int' }, { 'declarators' => [ { 'declarator' => 'four:4' }, { 'declarator' => ':0' } ], 'type' => 'int' }, { 'declarators' => [ { 'declarator' => 'integer', 'size' => 4, 'offset' => 4 } ], 'type' => 'int' } ], 'size' => 8 } ); No size/offset keys will currently be returned for bitfield entries. =head1 MULTITHREADING Convert::Binary::C was designed to be thread-safe. =head1 INHERITANCE If you wish to derive a new class from Convert::Binary::C, this is relatively easy. Despite their XS implementation, Convert::Binary::C objects are actually blessed hash references. The XS data is stored in a read-only hash value for the key that is the empty string. So it is safe to use any non-empty hash key when deriving your own class. In addition, Convert::Binary::C does quite a lot of checks to detect corruption in the object hash. If you store private data in the hash, you should override the C method and provide the necessary code to clone your private data. You'll have to call C, but this will only clone the Convert::Binary::C part of the object. For an example of a derived class, you can have a look at Convert::Binary::C::Cached. =head1 PORTABILITY Convert::Binary::C should build and run on most of the platforms that Perl runs on: =over 4 =item * Various Linux systems =item * Various BSD systems =item * HP-UX =item * Compaq/HP Tru64 Unix =item * Mac-OS X =item * Cygwin =item * Windows 98/NT/2000/XP =back Also, many architectures are supported: =over 4 =item * Various Intel Pentium and Itanium systems =item * Various Alpha systems =item * HP PA-RISC =item * Power-PC =item * StrongARM =back The module should build with any perl binary from 5.004 up to the latest development version. =head1 COMPARISON WITH SIMILAR MODULES Most of the time when you're really looking for Convert::Binary::C you'll actually end up finding one of the following modules. Some of them have different goals, so it's probably worth pointing out the differences. =head2 C::Include Like Convert::Binary::C, this module aims at doing conversion from and to binary data based on C types. However, its configurability is very limited compared to Convert::Binary::C. Also, it does not parse all C code correctly. It's slower than Convert::Binary::C, doesn't have a preprocessor. On the plus side, it's written in pure Perl. =head2 C::DynaLib::Struct This module doesn't allow you to reuse your C source code. One main goal of Convert::Binary::C was to avoid code duplication or, even worse, having to maintain different representations of your data structures. Like C::Include, C::DynaLib::Struct is rather limited in its configurability. =head2 Win32::API::Struct This module has a special purpose. It aims at building structs for interfacing Perl code with Windows API code. =head1 CREDITS =over 2 =item * My love Jennifer for always being there, for filling my life with joy and last but not least for proofreading the documentation. =item * Alain Barbet Ealian@cpan.orgE for testing and debugging support. =item * Mitchell N. Charity for giving me pointers into various interesting directions. =item * Alexis Denis for making me improve (externally) and simplify (internally) floating point support. He can also be blamed (indirectly) for the L|/"initializer"> method, as I need it in my effort to support bitfields some day. =item * Michael J. Hohmann Emjh@scientist.deE for endless discussions on our way to and back home from work, and for making me think about supporting L|/"pack"> and L|/"unpack"> for compound members. =item * Thorsten Jens Ethojens@gmx.deE for testing the package on various platforms. =item * Mark Overmeer Emark@overmeer.netE for suggesting the module name and giving invaluable feedback. =item * Thomas Pornin Epornin@bolet.orgE for his excellent C preprocessor library. =item * Marc Rosenthal for his suggestions and support. =item * James Roskind, as his C parser was a great starting point to fix all the problems I had with my original parser based only on the ANSI ruleset. =item * Gisbert W. Selke for spotting some interesting bugs and providing extensive reports. =item * Steffen Zimmermann for a prolific discussion on the cloning algorithm. =back =head1 MAILING LIST There's also a mailing list that you can join: convert-binary-c@yahoogroups.com To subscribe, simply send mail to: convert-binary-c-subscribe@yahoogroups.com You can use this mailing list for non-bug problems, questions or discussions. =head1 BUGS I'm sure there are still lots of bugs in the code for this module. If you find any bugs, Convert::Binary::C doesn't seem to build on your system or any of its tests fail, please use the CPAN Request Tracker at L to create a ticket for the module. Alternatively, just send a mail to Emhx@cpan.orgE. =head1 EXPERIMENTAL FEATURES Some features in Convert::Binary::C are marked as experimental. This has most probably one of the following reasons: =over 2 =item * The feature does not behave in exactly the way that I wish it did, possibly due to some limitations in the current design of the module. =item * The feature hasn't been tested enough and may completely fail to produce the expected results. =back I hope to fix most issues with these experimental features someday, but this may mean that I have to change the way they currently work in a way that's not backwards compatible. So if any of these features is useful to you, you can use it, but you should be aware that the behaviour or the interface may change in future releases of this module. =head1 TODO If you're interested in what I currently plan to improve (or fix), have a look at the F file. =head1 POSTCARDS If you're using my module and like it, you can show your appreciation by sending me a postcard from where you live. I won't urge you to do it, it's completely up to you. To me, this is just a very nice way of receiving feedback about my work. Please send your postcard to: Marcus Holland-Moritz Kuppinger Weg 28 71116 Gaertringen GERMANY If you feel that sending a postcard is too much effort, you maybe want to rate the module at L. =head1 COPYRIGHT Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The C library is (c) 1998-2002 Thomas Pornin. For license and redistribution details refer to F. Portions copyright (c) 1989, 1990 James A. Roskind. The include files located in F, which are used in some of the test scripts are (c) 1991-1999, 2000, 2001 Free Software Foundation, Inc. They are neither required to create the binary nor linked to the source code of this module in any other way. =head1 SEE ALSO See L, L, L, L, L, L and L. =cut Convert-Binary-C-0.76/C.xs0000644000175000001440000003127311550664607013761 0ustar mhxusers/******************************************************************************* * * MODULE: C.xs * ******************************************************************************** * * DESCRIPTION: XS Interface for Convert::Binary::C Perl extension module * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:20 +0200 $ * $Revision: 167 $ * $Source: /C.xs $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * ******************************************************************************** * * "All you have to do is to decide what you are going to do * with the time that is given to you." -- Gandalf * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #define PERL_NO_GET_CONTEXT #include #include #define NO_XSLOCKS #include #define NEED_newRV_noinc_GLOBAL #define NEED_sv_2pv_nolen_GLOBAL #include "ppport.h" /*===== LOCAL INCLUDES =======================================================*/ #include "util/ccattr.h" #include "util/list.h" #include "util/hash.h" #include "ctlib/cterror.h" #include "ctlib/fileinfo.h" #include "ctlib/parser.h" #include "cbc/cbc.h" #include "cbc/debug.h" #include "cbc/hook.h" #include "cbc/init.h" #include "cbc/macros.h" #include "cbc/member.h" #include "cbc/object.h" #include "cbc/option.h" #include "cbc/pack.h" #include "cbc/sourcify.h" #include "cbc/tag.h" #include "cbc/type.h" #include "cbc/typeinfo.h" #include "cbc/util.h" /*===== DEFINES ==============================================================*/ #ifndef PerlEnv_getenv # define PerlEnv_getenv getenv #endif #ifdef CBC_DEBUGGING #define DBG_CTXT_FMT "%s" #define DBG_CTXT_ARG (GIMME_V == G_VOID ? "0=" : \ (GIMME_V == G_SCALAR ? "$=" : \ (GIMME_V == G_ARRAY ? "@=" : \ "?=" \ ))) #endif #define CBC_METHOD(name) const char * const method PERL_UNUSED_DECL = #name #define CBC_METHOD_VAR const char * method PERL_UNUSED_DECL = "" #define CBC_METHOD_SET(string) method = string #define CT_DEBUG_METHOD \ CT_DEBUG(MAIN, (DBG_CTXT_FMT XSCLASS "::%s", DBG_CTXT_ARG, method)) #define CT_DEBUG_METHOD1(fmt, arg1) \ CT_DEBUG(MAIN, (DBG_CTXT_FMT XSCLASS "::%s( " fmt " )", \ DBG_CTXT_ARG, method, arg1)) #define CT_DEBUG_METHOD2(fmt, arg1, arg2) \ CT_DEBUG(MAIN, (DBG_CTXT_FMT XSCLASS "::%s( " fmt " )", \ DBG_CTXT_ARG, method, arg1, arg2) ) #define CHECK_PARSE_DATA \ STMT_START { \ if (!THIS->cpi.available) \ Perl_croak(aTHX_ "Call to %s without parse data", method); \ } STMT_END #define NEED_PARSE_DATA \ STMT_START { \ if (THIS->cpi.available) \ { \ if (!THIS->cpi.ready) \ update_parse_info(&THIS->cpi, &THIS->cfg); \ assert(THIS->cpi.ready); \ } \ } STMT_END #define WARN_VOID_CONTEXT \ WARN((aTHX_ "Useless use of %s in void context", method)) #define CHECK_VOID_CONTEXT \ STMT_START { \ if (GIMME_V == G_VOID) \ { \ WARN_VOID_CONTEXT; \ XSRETURN_EMPTY; \ } \ } STMT_END /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void *ct_newstr(void); static void ct_scatf(void *p, const char *f, ...); static void ct_vscatf(void *p, const char *f, va_list *l); static const char *ct_cstring(void *p, size_t *len); static void ct_fatal(void *p) __attribute__((__noreturn__)); static void handle_parse_errors(pTHX_ LinkedList stack); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static int gs_DisableParser; static int gs_OrderMembers; /*===== GLOBAL FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: CBC_malloc, CBC_calloc, CBC_realloc, CBC_free * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Memory allocation routines for ucpp and util libs. * *******************************************************************************/ void *CBC_malloc(size_t size) { void *p; New(0, p, size, char); return p; } void *CBC_calloc(size_t count, size_t size) { void *p; Newz(0, p, count*size, char); return p; } void *CBC_realloc(void *p, size_t size) { Renew(p, size, char); return p; } void CBC_free(void *p) { Safefree(p); } /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: ct_* * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: These functions are used to build arbitrary strings within the * ctlib routines and to provide an interface to perl's warn(). * *******************************************************************************/ static void *ct_newstr(void) { dTHX; return (void *) newSVpvn("", 0); } static void ct_destroy(void *p) { dTHX; SvREFCNT_dec((SV*)p); } static void ct_scatf(void *p, const char *f, ...) { dTHX; va_list l; va_start(l, f); sv_vcatpvf((SV*)p, f, &l); va_end(l); } static void ct_vscatf(void *p, const char *f, va_list *l) { dTHX; sv_vcatpvf((SV*)p, f, l); } static const char *ct_cstring(void *p, size_t *len) { dTHX; STRLEN l; const char *s = SvPV((SV*)p, l); if (len) *len = (size_t) l; return s; } static void ct_fatal(void *p) { dTHX; sv_2mortal((SV*)p); fatal("%s", SvPV_nolen((SV*)p)); } /******************************************************************************* * * ROUTINE: handle_parse_errors * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void handle_parse_errors(pTHX_ LinkedList stack) { ListIterator ei; CTLibError *perr; LL_foreach(perr, ei, stack) { switch (perr->severity) { case CTES_ERROR: Perl_croak(aTHX_ "%s", perr->string); break; case CTES_WARNING: if( PERL_WARNINGS_ON ) Perl_warn(aTHX_ "%s", perr->string); break; default: Perl_croak(aTHX_ "unknown severity [%d] for error: %s", perr->severity, perr->string); } } } /*===== XS FUNCTIONS =========================================================*/ MODULE = Convert::Binary::C PACKAGE = Convert::Binary::C PROTOTYPES: ENABLE INCLUDE: xsubs/cbc.xs INCLUDE: xsubs/clone.xs INCLUDE: xsubs/clean.xs INCLUDE: xsubs/configure.xs INCLUDE: xsubs/include.xs INCLUDE: xsubs/parse.xs INCLUDE: xsubs/def.xs INCLUDE: xsubs/pack.xs INCLUDE: xsubs/sizeof.xs INCLUDE: xsubs/typeof.xs INCLUDE: xsubs/offsetof.xs INCLUDE: xsubs/member.xs INCLUDE: xsubs/tag.xs INCLUDE: xsubs/enum.xs INCLUDE: xsubs/compound.xs INCLUDE: xsubs/typedef.xs INCLUDE: xsubs/sourcify.xs INCLUDE: xsubs/initializer.xs INCLUDE: xsubs/dependencies.xs INCLUDE: xsubs/defined.xs INCLUDE: xsubs/macro.xs INCLUDE: xsubs/arg.xs INCLUDE: xsubs/feature.xs INCLUDE: xsubs/native.xs ################################################################################ # # FUNCTION: import # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Handle global features, currently only debugging support. # # ARGUMENTS: # # RETURNS: # ################################################################################ #define WARN_NO_DEBUGGING 0x00000001 void import(...) PREINIT: int i; U32 wflags; CODE: wflags = 0; if (items % 2 == 0) Perl_croak(aTHX_ "You must pass an even number of module arguments"); else { for (i = 1; i < items; i += 2) { const char *opt = SvPV_nolen(ST(i)); #ifdef CBC_DEBUGGING const char *arg = SvPV_nolen(ST(i+1)); #endif if (strEQ(opt, "debug")) { #ifdef CBC_DEBUGGING set_debug_options(aTHX_ arg); #else wflags |= WARN_NO_DEBUGGING; #endif } else if (strEQ(opt, "debugfile")) { #ifdef CBC_DEBUGGING set_debug_file(aTHX_ arg); #else wflags |= WARN_NO_DEBUGGING; #endif } else Perl_croak(aTHX_ "Invalid module option '%s'", opt); } if (wflags & WARN_NO_DEBUGGING) Perl_warn(aTHX_ XSCLASS " not compiled with debugging support"); } #undef WARN_NO_DEBUGGING ################################################################################ # # FUNCTION: __DUMP__ # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Internal function used for reference count checks. # # ARGUMENTS: # # RETURNS: # ################################################################################ SV * __DUMP__(val) SV *val CODE: RETVAL = newSVpvn("", 0); #ifdef CBC_DEBUGGING dump_sv(aTHX_ RETVAL, 0, val); #else (void) val; Perl_croak(aTHX_ "__DUMP__ not enabled in non-debug version"); #endif OUTPUT: RETVAL ################################################################################ # # BOOTCODE # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ BOOT: { const char *str; PrintFunctions f; f.newstr = ct_newstr; f.destroy = ct_destroy; f.scatf = ct_scatf; f.vscatf = ct_vscatf; f.cstring = ct_cstring; f.fatalerr = ct_fatal; set_print_functions(&f); #ifdef CBC_DEBUGGING init_debugging(aTHX); if ((str = PerlEnv_getenv("CBC_DEBUG_OPT")) != NULL) set_debug_options(aTHX_ str); if ((str = PerlEnv_getenv("CBC_DEBUG_FILE")) != NULL) set_debug_file(aTHX_ str); #endif gs_DisableParser = 0; if ((str = PerlEnv_getenv("CBC_DISABLE_PARSER")) != NULL) gs_DisableParser = atoi(str); gs_OrderMembers = 0; if ((str = PerlEnv_getenv("CBC_ORDER_MEMBERS")) != NULL) { if (isDIGIT(str[0])) gs_OrderMembers = atoi(str); else if (isALPHA(str[0])) { gs_OrderMembers = 1; set_preferred_indexed_hash_module(str); } } } Convert-Binary-C-0.76/TODO0000644000175000001440000002543411550664607013715 0ustar mhxusers============= What's to do? ============= > Just one minor question: maybe an explicit hint in the documentation > would be useful, indicating that decoding any data that follows > dynamic elements will not give the expected results. To me, this > wasn't immediately clear from the documentation. * Test::RefCount for future releases (in no special order): ------------------------------------------ * >> Perhaps to make the documentation complete, it would help to add a >> remark on opening, reading and writing incrementally and closing >> binary files. > > Mmmmh, I'm not sure the C::B::C docs are the right place to add > such documentation. Such documentation is better placed in the > perl core. My error in communication. I do not mean to document open, read etc. I just mean to provide some indication (e.g., via outline example or just a sentence or so) on how one would read/write binary files into/out-of structures. * encapsulate internal types better: e.g. struct: struct_push_declaration(struct, declaration); /* real function call */ struct_size(struct); /* as macro */ * make Dimension tag influence offset during pack / unpack, but only if the Dimtag is _not_ '*'. So the following is possible: struct foo { int count; int length; int val[1]; }; struct bar { int count; int length; struct foo val[1]; }; tag('foo.val', Dimension => 'count'); tag('bar.val', Dimension => 'count'); pack('bar', { count => 2, length => 28, val => [ { count => 3, length => 12, val => [1, 2, 3] }, { count => 2, length => 8, val => [4, 5] }, ], }) <=> pack("I*", 2 3 1 2 3 2 4 5) (OTOH, we just can't handle a real "length" (in bytes) properly. Or can we if we use hooks?) BIG PROBLEM: Alignment properties would (again...) fall into the scope of the pack/unpack code, which is UGLY!! * OK, I've finally decided that this needs a complete redesign... - We need some code in the ctlib to recursively walk types. This way, we can greatly simplify the pack/unpack code. We should also be possible to handle the problems with the ByteOrder and Dimension tags more easily. - We should try to move as much code as possible into the ctlib. For example, sourcify can be completely separated from any perl stuff. This way, we can probably simplify the way towards a python/ruby/perl6/... version. - If we introduce a new level of error handling, we can even move all the stuff that usually croaks or warns into ctlib. - Ideally, we have as few code as possible to use the perl api. - Probably, we can even implent parts of the module in perl. - Does it make sense to tag multiple levels of dimensions? If so, we need to get rid of using a linked list for dimensions, which I think is a good idea anyway. (Accessing dimensions sucks.) We probably need some method then to compute the total number of elements in the array. - While we're at it, we should also try to address the problem of handling pointer arithmetics, sizeof expressions (non-constant expressions in general, type casts [which can be non-constant, too, depending on what size you configure], and so on) I think this is partly solved by the expression parser/evaluator we need anyway to support the eval method. - Perhaps we can also think about starting to collect data about functions. * make clear in the docs that Dimension _only_ affects pack/unpack * support lexically scoped warnings (perldoc perllexwarn, perldoc warnings, see warnings.pm) * can we move the PODs for each function to xsubs/ ? * separate preprocessor object handling from ctlib/ctparse -> ctlib/preproc make sure modification of Include / Define / Assert / ... updates the preprocessor object immediately, so defined() and stuff will work * C::B::C::Cached -> have "CacheDefines" option? * Add assertions code * cleanup remaining warnings from ucpp (MS compiler) * make c99_* configurable? * Make util/memalloc threadsafe! (when TRACE is enabled) ($Config{i_pthread}) * !!!! mark the "threads" feature as deprecated !!!! * Implement a Pack tag that only works for structs and that doesn't work recursively. Use this to get rid of the pack member in Struct. Note in the docs that this doesn't work recursively, that it is used to implement #pragma pack and that it can be used to remove the packing from structs. * other tags: ByteOrder -> not for bitfield members Pack -> only for structs UnsignedChars UnsignedBitfields OrderMembers -> only for structs EnumType -> only for enums Size -> only for integral types (not sure about this one) * it would be Really Cool if we had more information about the parsed source code, i.e. functions, variables, etc. * support C99 initializers ? * test on windows * enable-format-check * have a look at the compiler option -mwords-little-endian (arm-gcc) => arbitrary byte order * extend sizeof() to support size of bitfields with .bits notation (returned as string) * do we need a GCC bitfields engine? (dcc, ...?) * test bitfields in bench.pl * add tags to bench.pl * compile with normal perl and -Wall will show some interesting warnings (uninit, unused, ...) => try gcc-4.1 * add UnsignedBitfields probe to ccconfig (only for run mode, not sure if compile mode is possible at all) * introduce UnsignedChars and UnsignedBitfields for native method? * see if the Microsoft algorithm can be improved? * add checks for bitfield behaviour to ccconfig * parser tests: negative array index => make parse error? * redirect stderr of test 901 (use same tricks as in D::PPP) * eliminate croak_gti()? * we need much better parser tests... * can we simplify _expressions in the parser with %prec ? * instrument both parser.y and pragma.y with %printers ? * improve errors with locations (see bison.pdf) ? * parse expressions into a tree => write an optimizer for the tree that simplifies constant arithmetics => really short-circuit on boolean expressions * more 'basic type objects' tests * add 'indent' option to initializer() * add 'unnamed' => 0|1 to sourcify options * instrument fatal() to include file/line * what about CAN_UNALIGNED_ACCESS ? * use inline functions instead of macros where possible (for gcov) * more test coverage for the parser * use D::T::C for arg() method? * port docs to Text::GenDoc (release T::G first ;-) * handle Cray behaviour * support conversion to new 5.10 (un)pack templates * finish work on flexible array members (done?) - make member() work better - make complex.t introduce fams * is T_ALREADY_DUMPED thread-safe, or should we rather use a hash to memorize the dumped types. * support for unsigned and 64-bit integer arithmetics use ucpp's (reentrant) arith.c? * make cast operators work * on parse error, print parser stack? * patch ucpp to only warn about missing newline termination * have an eval method that allows to evaluate a constant C expression (including preprocessor expansion), so $c->parse( <eval("VALUE+2"); would then print 6. * update / cleanup test suite using Test::More * make sizeof/offsetof files plain text files and parse them on the fly. get rid of 'do' * make offsetof test similar to sizeof test (sizeof.pl) * add tests for ccconfig (using a "virtual" compiler?) * add more floating point tests (NaN and stuff?) * support #pragma pack( (push|pop) [, id] [, pack] ) ? * what about #define foobar 2 #pragma pack( push, foobar ) * support gcc's __attribute__, at least for struct packing (actually, this is worse than it seems, because it behaves completely different than #pragma pack...) * support constant address arithmetics - this is mainly needed for the offsetof C macro and similar stuff, eg enum { OFFSET = offsetof( struct foo, bar ) }; doesn't work yet. But I guess such construct is rarely used. * cleanup unsafe values handling * support arbitrary byte order? ( ByteOrder => '13248756' ) * add platform independent IEEE floating point support (SoftFloat or sth. similar?) * have a definition() method? Like typedef/compound/enum, but for all of 'em? * try to give a hint to where a parse error occured COPY_LINE ? * maybe add DollarsInIdentifiers, AtSignsInIdentifiers? * add some warnings during parsing - empty arrays in structs a[] (not at end of struct) * add tests for all preprocessor warnings/errors? * add a more complete preprocessor testsuite? * character arrays => strings? * perhaps bless (tie) long double SV's and store binary data (?) * sourcify only specific types (pass in a list of types) (?) * Subject: AW: C::B::C und h2ph/c2ph From: "Dintelmann, Peter" Date: Tue, 14 Dec 2004 14:20:39 +0100 Message-ID: Das Aufloesen der typedefs wuerde fuer mich persoenlich die Lesbarkeit erleichtern und den Quelltext vereinfachen. Im Beispiel "struct futmpx" hat man unter anderem mehrere Faelle der Art typedef int int32_t; typedef int32_t pid32_t; struct futmpx { char ut_user[32]; char ut_id[4]; char ut_line[32]; pid32_t ut_pid; ... ... ... }; und ich wuerde viel lieber gleich struct futmpx { char ut_user[32]; char ut_id[4]; char ut_line[32]; int ut_pid; ... ... ... }; haben koennen (und auf die zwei typedefs verzichten). * add an object representing a single type? - for example: $p = new Convert::Binary::C; $p->parse_file( 'some_code.h' ); $type = $p->get_type( 'type' ); $data = $type->unpack( $raw ); (no, I didn't think about how to name any of the new stuff ;) - should use less memory - should allow for serializing - should allow for use with PerlIO layers (?) - I have to think about that!!! - Any suggestions are strongly appreciated! * Plugins for foreign function calls (function calls during $c->eval(), when target platform == source platform) - look at how gcc, lcc, tinyc abstract platforms - Q: who loads the shared objects? (cbc/plugin) - Q: do we need to remember globals? (if anyone passes pointer to such globals to functions) - Q: how do we pass data from perl space to those function? - plugin needs to do symbol lookup - debug symbols? - abstract debugging information / behaviour? Convert-Binary-C-0.76/ucpp/0000755000175000001440000000000011550665107014160 5ustar mhxusersConvert-Binary-C-0.76/ucpp/Makefile0000644000175000001440000000634111550664631015625 0ustar mhxusers# Makefile for ucpp # # (c) Thomas Pornin 1999 - 2002 # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 4. The name of the authors may not be used to endorse or promote # products derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .POSIX: # ----- user configurable part ----- # Edit the variables to suit your system. # # use -DAUDIT to enable some internal sanity checks # use -DMEM_CHECK to check the return value of malloc() # (superseded by AUDIT) # use -DMEM_DEBUG to enable memory leak research (warning: this # slows down ucpp a bit, and greatly increases memory consumption) # use -DINLINE=foobar to enable use of the 'foobar' # non standard qualifier, as an equivalent to the C99 'inline' # qualifier. See tune.h for details. # # Two FLAGS lines are given for each system type; chose the first one for # debug, the second one for a fast binary. # for a generic compiler called cc #CC = cc #FLAGS = -DAUDIT #FLAGS = -O -DMEM_CHECK # for Minix-86 #CC = cc #LDFLAGS = -i #FLAGS = -m -DAUDIT #FLAGS = -O -m -DMEM_CHECK # for gcc CC = gcc FLAGS = -g -W -Wall -ansi -DAUDIT -DMEM_DEBUG -DUCPP_REENTRANT #FLAGS = -O3 -mcpu=pentiumpro -fomit-frame-pointer -W -Wall -ansi -DMEM_CHECK #FLAGS = -O -pg -W -Wall -ansi -DMEM_CHECK #LDFLAGS = -pg # for the Compaq C compiler on Alpha/Linux #CC = ccc #FLAGS = -w0 -g -DAUDIT #FLAGS = -w0 -fast -DMEM_CHECK # for the Sun Workshop C Compiler #CC = cc #FLAGS = -g -Xa -DAUDIT #FLAGS = -Xa -fast -DMEM_CHECK # flags for the link step LIBS = #LIBS = libefence.a #LIBS = -lgc_dbg # ----- nothing should be changed below this line ----- COBJ = mem.o nhash.o cpp.o lexer.o assert.o macro.o eval.o CFLAGS = $(FLAGS) -DSTAND_ALONE all: ucpp clean: rm -f *.o ucpp core ucpp: $(COBJ) $(CC) $(LDFLAGS) -o ucpp $(COBJ) $(LIBS) assert.o: tune.h ucppi.h cpp.h nhash.h mem.h cpp.o: tune.h ucppi.h cpp.h nhash.h mem.h eval.o: tune.h ucppi.h cpp.h nhash.h mem.h arith.c arith.h lexer.o: tune.h ucppi.h cpp.h nhash.h mem.h macro.o: tune.h ucppi.h cpp.h nhash.h mem.h mem.o: mem.h nhash.o: nhash.h mem.h Convert-Binary-C-0.76/ucpp/reent.h0000644000175000001440000000623511550664632015456 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__REENT__ #define UCPP__REENT__ #include "tune.h" #ifdef UCPP_REENTRANT #include "nhash.h" #define pCPP struct CPP *REENTR #define pCPP_ pCPP, #define aCPP REENTR #define aCPP_ aCPP, #define useCPP (void) aCPP typedef struct _cppm *CPPM; struct CPP { int no_special_macros, emit_dependencies, emit_defines, emit_assertions; int c99_compliant, c99_hosted; FILE *emit_output; char *current_filename, *current_long_filename; /* * Can be used to store an arbitrary pointer value * that can be retrieved by the callback functions * ucpp_(ouch|error|warning). */ void *callback_arg; void (*ucpp_ouch)(pCPP_ char *, ...); void (*ucpp_error)(pCPP_ long, char *, ...); void (*ucpp_warning)(pCPP_ long, char *, ...); int *transient_characters; struct protect { char *macro; int state; struct found_file *ff; } protect_detect; struct { /* from macro.c */ struct lexer_state dsharp_lexer; char compile_time[12], compile_date[24]; #ifdef PRAGMA_TOKENIZE struct lexer_state tokenize_lexer; #endif /* from eval.c */ long eval_line; JMP_BUF eval_exception; } _global; struct { HTT assertions; int assertions_init_done; } _assert; struct { HTT macros; int macros_init_done; } _macro; struct { char **include_path; size_t include_path_nb; int current_incdir; struct file_context *ls_stack; size_t ls_depth; int find_file_error; struct protect *protect_detect_stack; HTT found_files; HTT found_files_sys; int found_files_init_done; int found_files_sys_init_done; } _cpp; struct { int emit_eval_warnings; } _eval; struct { CPPM sm; } _lexer; }; #else #define pCPP void #define pCPP_ #define aCPP #define aCPP_ #define useCPP (void) 0 #endif #endif Convert-Binary-C-0.76/ucpp/sample.c0000644000175000001440000000610011550664632015604 0ustar mhxusers/* * Sample code showing how to use ucpp as an integrated lexer. * This file is public domain. */ /* * This is an example of how to use ucpp as a preprocessor and lexer * into another project. The steps are those described in ucpp README * file. To use this code, compile the ucpp source files with * STAND_ALONE not defined, and link them with this code. The resulting * binary will take a C source file as standard input, preprocess it, * and output each non-whitespace token on stdout, with its numerical * value (defined as an enum in cpp.h) and its contents. This code * defines no system include path. * * This code supposes that the ucpp files are compiled with PRAGMA_TOKENIZE * enabled (see the tune.h file). */ #include #include #include #include "mem.h" #include "cpp.h" int main(int argc, char *argv[]) { int i, r; struct lexer_state ls; /* step 1 */ init_cpp(); /* step 2 */ no_special_macros = 0; emit_defines = emit_assertions = 0; /* step 3 -- with assertions */ init_tables(1); /* step 4 -- no default include path */ init_include_path(0); /* step 5 -- no need to reset the two emit_* variables set in 2 */ emit_dependencies = 0; /* step 6 -- we work with stdin, this is not a real filename */ set_init_filename("[stdin]", 0); /* step 7 -- we make sure that assertions are on, and pragma are handled */ init_lexer_state(&ls); init_lexer_mode(&ls); ls.flags |= HANDLE_ASSERTIONS | HANDLE_PRAGMA | LINE_NUM; /* step 8 -- input is from stdin */ ls.input = stdin; /* step 9 -- we do not have any macro to define, but we add any argument as an include path */ for (i = 1; i < argc; i ++) add_incpath(argv[i]); /* step 10 -- we are a lexer and we want CONTEXT tokens */ enter_file(&ls, ls.flags); /* read tokens until end-of-input is reached -- errors (non-zero return values different from CPPERR_EOF) are ignored */ while ((r = lex(&ls)) < CPPERR_EOF) { if (r) { /* error condition -- no token was retrieved */ continue; } /* we print each token: its numerical value, and its string content; if this is a PRAGMA token, the string content is in fact a compressed token list, that we uncompress and print. */ if (ls.ctok->type == PRAGMA) { unsigned char *c = (unsigned char *)(ls.ctok->name); printf("line %ld: <#pragma>\n", ls.line); for (; *c; c ++) { int t = *c; if (STRING_TOKEN(t)) { printf(" <%2d> ", t); for (c ++; *c != PRAGMA_TOKEN_END; c ++) putchar(*c); putchar('\n'); } else { printf(" <%2d> `%s'\n", t, operators_name[t]); } } } else if (ls.ctok->type == CONTEXT) { printf("new context: file '%s', line %ld\n", ls.ctok->name, ls.ctok->line); } else if (ls.ctok->type == NEWLINE) { printf("[newline]\n"); } else { printf("line %ld: <%2d> `%s'\n", ls.ctok->line, ls.ctok->type, STRING_TOKEN(ls.ctok->type) ? ls.ctok->name : operators_name[ls.ctok->type]); } } /* give back memory and exit */ wipeout(); free_lexer_state(&ls); #ifdef MEM_DEBUG report_leaks(); #endif return 0; } Convert-Binary-C-0.76/ucpp/cpp.c0000644000175000001440000020743711550664631015124 0ustar mhxusers/* * C and T preprocessor, and integrated lexer * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #define VERS_MAJ 1 #define VERS_MIN 3 /* uncomment the following if you cannot set it with a compiler flag */ /* #define STAND_ALONE */ #include "tune.h" #include #include #include #include #include #include #include #include "ucppi.h" #include "mem.h" #include "nhash.h" #ifdef UCPP_MMAP #include #include #include #include #endif /* * The standard path where includes are looked for. */ #ifdef STAND_ALONE static char *include_path_std[] = { STD_INCLUDE_PATH, 0 }; #endif #ifndef UCPP_REENTRANT static char **include_path; static size_t include_path_nb = 0; #endif #ifndef UCPP_REENTRANT int no_special_macros = 0; int emit_dependencies = 0, emit_defines = 0, emit_assertions = 0; FILE *emit_output; #endif #ifdef STAND_ALONE static char *system_macros_def[] = { STD_MACROS, 0 }; static char *system_assertions_def[] = { STD_ASSERT, 0 }; #endif #ifndef UCPP_REENTRANT char *current_filename = 0, *current_long_filename = 0; static int current_incdir = -1; #endif #ifdef UCPP_REENTRANT #define include_path (REENTR->_cpp.include_path) #define include_path_nb (REENTR->_cpp.include_path_nb) #define current_incdir (REENTR->_cpp.current_incdir) #define ls_depth (REENTR->_cpp.ls_depth) #define ls_stack (REENTR->_cpp.ls_stack) #define find_file_error (REENTR->_cpp.find_file_error) #define protect_detect_stack (REENTR->_cpp.protect_detect_stack) #define found_files (REENTR->_cpp.found_files) #define found_files_sys (REENTR->_cpp.found_files_sys) #define found_files_init_done (REENTR->_cpp.found_files_init_done) #define found_files_sys_init_done (REENTR->_cpp.found_files_sys_init_done) #endif /* UCPP_REENTRANT */ #ifndef NO_UCPP_ERROR_FUNCTIONS /* * "ouch" is the name for an internal ucpp error. If AUDIT is not defined, * no code calling this function will be generated; a "ouch" may still be * emitted by getmem() (in mem.c) if MEM_CHECK is defined, but this "ouch" * does not use this function. */ #ifdef UCPP_REENTRANT static #endif void ucpp_ouch(pCPP_ char *fmt, ...) { va_list ap; va_start(ap, fmt); fprintf(stderr, "%s: ouch, ", current_filename); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); va_end(ap); die(); } /* * report an error, with current_filename, line, and printf-like syntax */ #ifdef UCPP_REENTRANT static #endif void ucpp_error(pCPP_ long line, char *fmt, ...) { va_list ap; va_start(ap, fmt); if (line > 0) fprintf(stderr, "%s: line %ld: ", current_filename, line); else if (line == 0) fprintf(stderr, "%s: ", current_filename); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); if (line >= 0) { struct stack_context *sc = report_context(aCPP); size_t i; for (i = 0; sc[i].line >= 0; i ++) fprintf(stderr, "\tincluded from %s:%ld\n", sc[i].long_name ? sc[i].long_name : sc[i].name, sc[i].line); freemem(sc); } va_end(ap); } /* * like error(), with the mention "warning" */ #ifdef UCPP_REENTRANT static #endif void ucpp_warning(pCPP_ long line, char *fmt, ...) { va_list ap; va_start(ap, fmt); if (line > 0) fprintf(stderr, "%s: warning: line %ld: ", current_filename, line); else if (line == 0) fprintf(stderr, "%s: warning: ", current_filename); else fprintf(stderr, "warning: "); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); if (line >= 0) { struct stack_context *sc = report_context(aCPP); size_t i; for (i = 0; sc[i].line >= 0; i ++) fprintf(stderr, "\tincluded from %s:%ld\n", sc[i].long_name ? sc[i].long_name : sc[i].name, sc[i].line); freemem(sc); } va_end(ap); } #endif /* NO_UCPP_ERROR_FUNCTIONS */ #ifdef UCPP_REENTRANT struct CPP *new_cpp(void) { struct CPP *REENTR = getmem(sizeof(struct CPP)); memset(REENTR, 0, sizeof(struct CPP)); #ifndef NO_UCPP_ERROR_FUNCTIONS REENTR->ucpp_ouch = ucpp_ouch; REENTR->ucpp_error = ucpp_error; REENTR->ucpp_warning = ucpp_warning; #endif REENTR->_lexer.sm = new_cppm(); /* from macro.c */ c99_compliant = 1; c99_hosted = 1; /* from cpp.c */ current_incdir = -1; return REENTR; } void del_cpp(struct CPP *c) { if (c) { del_cppm(c->_lexer.sm); freemem(c); } } #endif /* * Some memory allocations are manually garbage-collected; essentially, * strings duplicated in the process of macro replacement. Each such * string is referenced in the garbage_fifo, which is cleared when all * nested macros have been resolved. */ struct garbage_fifo { char **garbage; size_t ngarb, memgarb; }; /* * throw_away() marks a string to be collected later */ void throw_away(struct garbage_fifo *gf, char *n) { wan(gf->garbage, gf->ngarb, n, gf->memgarb); } /* * free marked strings */ void garbage_collect(struct garbage_fifo *gf) { size_t i; for (i = 0; i < gf->ngarb; i ++) freemem(gf->garbage[i]); gf->ngarb = 0; } static void init_garbage_fifo(struct garbage_fifo *gf) { gf->garbage = getmem((gf->memgarb = GARBAGE_LIST_MEMG) * sizeof(char *)); gf->ngarb = 0; } static void free_garbage_fifo(struct garbage_fifo *gf) { garbage_collect(gf); freemem(gf->garbage); freemem(gf); } /* * order is important: it must match the token-constants declared as an * enum in the header file. */ char *operators_name[] = { " ", "\n", " ", "0000", "name", "bunch", "pragma", "context", "\"dummy string\"", "'dummy char'", "/", "/=", "-", "--", "-=", "->", "+", "++", "+=", "<", "<=", "<<", "<<=", ">", ">=", ">>", ">>=", "=", "==", #ifdef CAST_OP "=>", #endif "~", "!=", "&", "&&", "&=", "|", "||", "|=", "%", "%=", "*", "*=", "^", "^=", "!", "{", "}", "[", "]", "(", ")", ",", "?", ";", ":", ".", "...", "#", "##", " ", "ouch", "<:", ":>", "<%", "%>", "%:", "%:%:" }; /* the ascii representation of a token */ #ifdef SEMPER_FIDELIS #define tname(x) (ttWHI((x).type) ? " " : S_TOKEN((x).type) \ ? (x).name : operators_name[(x).type]) #else #define tname(x) (S_TOKEN((x).type) ? (x).name \ : operators_name[(x).type]) #endif char *token_name(struct token *t) { return tname(*t); } /* * To speed up deeply nested and repeated inclusions, we: * -- use a hash table to remember where we found each file * -- remember when the file is protected by a #ifndef/#define/#endif * construction; we can then avoid including several times a file * when this is not necessary. * -- remember in which directory, in the include path, the file was found. */ struct found_file { hash_item_header head; /* first field */ char *name; char *protect; }; /* * For files from system include path. */ struct found_file_sys { hash_item_header head; /* first field */ struct found_file *rff; int incdir; }; #ifndef UCPP_REENTRANT static HTT found_files, found_files_sys; static int found_files_init_done = 0, found_files_sys_init_done = 0; #endif static struct found_file *new_found_file(void) { struct found_file *ff = getmem(sizeof(struct found_file)); ff->name = 0; ff->protect = 0; return ff; } static void del_found_file(void *m) { struct found_file *ff = (struct found_file *)m; if (ff->name) freemem(ff->name); if (ff->protect) freemem(ff->protect); freemem(ff); } static struct found_file_sys *new_found_file_sys(void) { struct found_file_sys *ffs = getmem(sizeof(struct found_file_sys)); ffs->rff = 0; ffs->incdir = -1; return ffs; } static void del_found_file_sys(void *m) { struct found_file_sys *ffs = (struct found_file_sys *)m; freemem(ffs); } #ifdef UCPP_CLONE static void *clone_found_file(const void *m) { const struct found_file *src = m; struct found_file *dst = getmem(sizeof(struct found_file)); dst->name = src->name ? sdup(src->name) : src->name; dst->protect = src->protect ? sdup(src->protect) : src->protect; return dst; } static void *clone_found_file_sys(const void *m) { const struct found_file_sys *src = m; struct found_file_sys *dst = getmem(sizeof(struct found_file_sys)); dst->rff = src->rff; dst->incdir = src->incdir; return dst; } #endif /* UCPP_CLONE */ /* * To keep up with the #ifndef/#define/#endif protection mechanism * detection. */ #ifndef UCPP_REENTRANT struct protect protect_detect; static struct protect *protect_detect_stack = 0; #endif void set_init_filename(pCPP_ char *x, int real_file) { if (current_filename) freemem(current_filename); current_filename = sdup(x); current_long_filename = 0; current_incdir = -1; if (real_file) { protect_detect.macro = 0; protect_detect.state = 1; protect_detect.ff = new_found_file(); protect_detect.ff->name = sdup(x); HTT_put(&found_files, protect_detect.ff, x); } else { protect_detect.state = 0; } } static void init_found_files(pCPP) { if (found_files_init_done) HTT_kill(&found_files); HTT_init(&found_files, del_found_file _aCLONE(clone_found_file)); found_files_init_done = 1; if (found_files_sys_init_done) HTT_kill(&found_files_sys); HTT_init(&found_files_sys, del_found_file_sys _aCLONE(clone_found_file_sys)); found_files_sys_init_done = 1; } /* * Set the lexer state at the beginning of a file. */ static void reinit_lexer_state(struct lexer_state *ls, int wb) { #ifndef NO_UCPP_BUF ls->input_buf = wb ? getmem(INPUT_BUF_MEMG) : 0; #ifdef UCPP_MMAP ls->from_mmap = 0; #endif #endif ls->input = 0; ls->ebuf = ls->pbuf = 0; ls->nlka = 0; ls->macfile = 0; ls->discard = 1; ls->last = 0; /* we suppose '\n' is not 0 */ ls->line = 1; ls->ltwnl = 1; ls->oline = 1; ls->pending_token = 0; #ifndef NO_UCPP_COPY_LINE ls->cli = 0; ls->copy_line[COPY_LINE_LENGTH - 1] = 0; #endif ls->ifnest = 0; ls->condf[0] = ls->condf[1] = 0; } /* * Initialize the struct lexer_state, with optional input and output buffers. */ void init_buf_lexer_state(struct lexer_state *ls, int wb) { reinit_lexer_state(ls, wb); #ifndef NO_UCPP_BUF ls->output_buf = wb ? getmem(OUTPUT_BUF_MEMG) : 0; #endif ls->sbuf = 0; ls->output_fifo = 0; ls->ctok = getmem(sizeof(struct token)); ls->ctok->name = getmem(ls->tknl = TOKEN_NAME_MEMG); ls->pending_token = 0; ls->flags = 0; ls->count_trigraphs = 0; ls->gf = getmem(sizeof(struct garbage_fifo)); init_garbage_fifo(ls->gf); ls->condcomp = 1; ls->condnest = 0; #ifdef INMACRO_FLAG ls->inmacro = 0; ls->macro_count = 0; #endif } /* * Initialize the (complex) struct lexer_state. */ void init_lexer_state(struct lexer_state *ls) { init_buf_lexer_state(ls, 1); ls->input = 0; } /* * Restore what is needed from a lexer_state. This is used for #include. */ static void restore_lexer_state(struct lexer_state *ls, struct lexer_state *lsbak) { #ifndef NO_UCPP_BUF freemem(ls->input_buf); ls->input_buf = lsbak->input_buf; #ifdef UCPP_MMAP ls->from_mmap = lsbak->from_mmap; ls->input_buf_sav = lsbak->input_buf_sav; #endif #endif ls->input = lsbak->input; ls->ebuf = lsbak->ebuf; ls->pbuf = lsbak->pbuf; ls->nlka = lsbak->nlka; ls->discard = lsbak->discard; ls->line = lsbak->line; ls->oline = lsbak->oline; ls->ifnest = lsbak->ifnest; ls->condf[0] = lsbak->condf[0]; ls->condf[1] = lsbak->condf[1]; } /* * close input file operations on a struct lexer_state */ static void close_input(struct lexer_state *ls) { #ifdef UCPP_MMAP if (ls->from_mmap) { munmap((void *)ls->input_buf, ls->ebuf); ls->from_mmap = 0; ls->input_buf = ls->input_buf_sav; } #endif if (ls->input) { fclose(ls->input); ls->input = 0; } } /* * file_context (and the two functions push_ and pop_) are used to save * all that is needed when including a file. */ struct file_context { struct lexer_state ls; char *name, *long_name; int incdir; }; #ifndef UCPP_REENTRANT static struct file_context *ls_stack; static size_t ls_depth = 0; #endif static void push_file_context(pCPP_ struct lexer_state *ls) { struct file_context fc; fc.name = current_filename; fc.long_name = current_long_filename; fc.incdir = current_incdir; mmv(&(fc.ls), ls, sizeof(struct lexer_state)); aol(ls_stack, ls_depth, fc, LS_STACK_MEMG); ls_depth --; aol(protect_detect_stack, ls_depth, protect_detect, LS_STACK_MEMG); protect_detect.macro = 0; } static void pop_file_context(pCPP_ struct lexer_state *ls) { #ifdef AUDIT if (ls_depth <= 0) ouch(aCPP_ "prepare to meet thy creator"); #endif close_input(ls); restore_lexer_state(ls, &(ls_stack[-- ls_depth].ls)); if (protect_detect.macro) freemem(protect_detect.macro); protect_detect = protect_detect_stack[ls_depth]; if (current_filename) freemem(current_filename); current_filename = ls_stack[ls_depth].name; current_long_filename = ls_stack[ls_depth].long_name; current_incdir = ls_stack[ls_depth].incdir; if (ls_depth == 0) { freemem(ls_stack); freemem(protect_detect_stack); } } /* * report_context() returns the list of successive includers of the * current file, ending with a dummy entry with a negative line number. * The caller is responsible for freeing the returned pointer. */ struct stack_context *report_context(pCPP) { struct stack_context *sc; size_t i; sc = getmem((ls_depth + 1) * sizeof(struct stack_context)); for (i = 0; i < ls_depth; i ++) { sc[i].name = ls_stack[ls_depth - i - 1].name; sc[i].long_name = ls_stack[ls_depth - i - 1].long_name; sc[i].line = ls_stack[ls_depth - i - 1].ls.line - 1; } sc[ls_depth].line = -1; return sc; } /* * init_lexer_mode() is used to end initialization of a struct lexer_state * if it must be used for a lexer */ void init_lexer_mode(struct lexer_state *ls) { ls->flags = DEFAULT_LEXER_FLAGS; ls->output_fifo = getmem(sizeof(struct token_fifo)); ls->output_fifo->art = ls->output_fifo->nt = 0; ls->toplevel_of = ls->output_fifo; ls->save_ctok = ls->ctok; } /* * release memory used by a struct lexer_state; this implies closing * any input stream held by this structure. */ void free_lexer_state(struct lexer_state *ls) { close_input(ls); #ifndef NO_UCPP_BUF if (ls->input_buf) { freemem(ls->input_buf); ls->input_buf = 0; } if (ls->output_buf) { freemem(ls->output_buf); ls->output_buf = 0; } #endif if (ls->ctok && (!ls->output_fifo || ls->output_fifo->nt == 0)) { freemem(ls->ctok->name); freemem(ls->ctok); ls->ctok = 0; } if (ls->gf) { free_garbage_fifo(ls->gf); ls->gf = 0; } if (ls->output_fifo) { freemem(ls->output_fifo); ls->output_fifo = 0; } } /* * Print line information. */ static void print_line_info(pCPP_ struct lexer_state *ls, unsigned long flags) { char *fn = current_long_filename ? current_long_filename : current_filename; char *b, *d; b = getmem(50 + strlen(fn)); if (flags & GCC_LINE_NUM) { sprintf(b, "# %ld \"%s\"\n", ls->line, fn); } else { sprintf(b, "#line %ld \"%s\"\n", ls->line, fn); } for (d = b; *d; d ++) put_char(aCPP_ ls, (unsigned char)(*d)); freemem(b); } /* * Enter a file; this implies the possible emission of a #line directive. * The flags used are passed as second parameter instead of being * extracted from the struct lexer_state. * * As a command-line option, gcc-like directives (with only a '#', * without 'line') may be produced. * * enter_file() returns 1 if a (CONTEXT) token was produced, 0 otherwise. */ int enter_file(pCPP_ struct lexer_state *ls, unsigned long flags) { char *fn = current_long_filename ? current_long_filename : current_filename; if (!(flags & LINE_NUM)) return 0; if ((flags & LEXER) && !(flags & TEXT_OUTPUT)) { struct token t; t.type = CONTEXT; t.line = ls->line; t.name = fn; print_token(aCPP_ ls, &t, 0); return 1; } print_line_info(aCPP_ ls, flags); ls->oline --; /* emitted #line troubled oline */ return 0; } #ifdef UCPP_MMAP /* * We open() the file, then fdopen() it and fseek() to its end. If the * fseek() worked, we try to mmap() the file, up to the point where we * arrived. * On an architecture where end-of-lines are multibytes and translated * into single '\n', bad things could happen. We strongly hope that, if * we could fseek() to the end but could not mmap(), then we can get back. */ static void *find_file_map; static size_t map_length; FILE *fopen_mmap_file(char *name) { FILE *f; int fd; long l; find_file_map = 0; fd = open(name, O_RDONLY, 0); if (fd < 0) return 0; l = lseek(fd, 0, SEEK_END); f = fdopen(fd, "r"); if (!f) { close(fd); return 0; } if (l < 0) return f; /* not seekable */ map_length = l; if ((find_file_map = mmap(0, map_length, PROT_READ, MAP_PRIVATE, fd, 0)) == MAP_FAILED) { /* we could not mmap() the file; get back */ find_file_map = 0; if (fseek(f, 0, SEEK_SET)) { /* bwaah... can't get back. This file is cursed. */ fclose(f); return 0; } } return f; } void set_input_file(struct lexer_state *ls, FILE *f) { ls->input = f; if (find_file_map) { ls->from_mmap = 1; ls->input_buf_sav = ls->input_buf; ls->input_buf = find_file_map; ls->pbuf = 0; ls->ebuf = map_length; } else { ls->from_mmap = 0; } } #endif /* * Find a file by looking through the include path. * return value: a FILE * on the file, opened in "r" mode, or 0. * * find_file_error will contain: * FF_ERROR on error (file not found or impossible to read) * FF_PROTECT file is protected and therefore useless to read * FF_KNOWN file is already known * FF_UNKNOWN file was not already known */ #ifndef UCPP_REENTRANT static int find_file_error; #endif enum { FF_ERROR, FF_PROTECT, FF_KNOWN, FF_UNKNOWN }; static FILE *find_file(pCPP_ char *name, int localdir) { FILE *f; int i, incdir = -1; size_t nl = strlen(name); char *s = 0; struct found_file *ff = 0, *nff; int lf = 0; int nffa = 0; find_file_error = FF_ERROR; protect_detect.state = -1; protect_detect.macro = 0; if (localdir) { int i; char *rfn = current_long_filename ? current_long_filename : current_filename; for (i = strlen(rfn) - 1; i >= 0; i --) #ifdef MSDOS if (rfn[i] == '\\') break; #else if (rfn[i] == '/') break; #endif #if defined MSDOS if (i >= 0 && *name != '\\' && (nl < 2 || name[1] != ':')) #elif defined AMIGA if (i >= 0 && *name != '/' && (nl < 2 || name[1] != ':')) #else if (i >= 0 && *name != '/') #endif { /* * current file is somewhere else, and the provided * file name is not absolute, so we must adjust the * base for looking for the file; besides, * found_files and found_files_loc are irrelevant * for this search. */ s = getmem(i + 2 + nl); mmv(s, rfn, i); #ifdef MSDOS s[i] = '\\'; #else s[i] = '/'; #endif mmv(s + i + 1, name, nl); s[i + 1 + nl] = 0; ff = HTT_get(&found_files, s); } else ff = HTT_get(&found_files, name); } if (!ff) { struct found_file_sys *ffs = HTT_get(&found_files_sys, name); if (ffs) { ff = ffs->rff; incdir = ffs->incdir; } } /* * At that point: if the file was found in the cache, ff points to * the cached descriptive structure; its name is s if s is not 0, * name otherwise. */ if (ff) goto found_file_cache; /* * This is the first time we find the file, or it was not protected. */ protect_detect.ff = new_found_file(); nffa = 1; if (localdir && #ifdef UCPP_MMAP (f = fopen_mmap_file(s ? s : name)) #else (f = fopen(s ? s : name, "r")) #endif ) { lf = 1; goto found_file; } /* * If s contains a name, that name is now irrelevant: it was a * filename for a search in the current directory, and the file * was not found. */ if (s) { freemem(s); s = 0; } for (i = 0; (size_t)i < include_path_nb; i ++) { size_t ni = strlen(include_path[i]); s = getmem(ni + nl + 2); mmv(s, include_path[i], ni); #ifdef AMIGA /* contributed by Volker Barthelmann */ if (ni == 1 && *s == '.') { *s = 0; ni = 0; } if (ni > 0 && s[ni - 1] != ':' && s[ni - 1] != '/') { s[ni] = '/'; mmv(s + ni + 1, name, nl + 1); } else { mmv(s + ni, name, nl + 1); } #else s[ni] = '/'; mmv(s + ni + 1, name, nl + 1); #endif #ifdef MSDOS /* on msdos systems, replace all / by \ */ { char *c; for (c = s; *c; c ++) if (*c == '/') *c = '\\'; } #endif incdir = i; if ((ff = HTT_get(&found_files, s)) != 0) { /* * The file is known, but not as a system include * file under the name provided. */ struct found_file_sys *ffs = new_found_file_sys(); ffs->rff = ff; ffs->incdir = incdir; HTT_put(&found_files_sys, ffs, name); freemem(s); s = 0; if (nffa) { del_found_file(protect_detect.ff); protect_detect.ff = 0; nffa = 0; } goto found_file_cache; } #ifdef UCPP_MMAP f = fopen_mmap_file(s); #else f = fopen(s, "r"); #endif if (f) goto found_file; freemem(s); s = 0; } zero_out: if (s) freemem(s); if (nffa) { del_found_file(protect_detect.ff); protect_detect.ff = 0; nffa = 0; } return 0; /* * This part is invoked when the file was found in the * cache. */ found_file_cache: if (ff->protect) { if (get_macro(aCPP_ ff->protect)) { /* file is protected, do not include it */ find_file_error = FF_PROTECT; goto zero_out; } /* file is protected but the guardian macro is not available; disable guardian detection. */ protect_detect.state = 0; } protect_detect.ff = ff; #ifdef UCPP_MMAP f = fopen_mmap_file(HASH_ITEM_NAME(ff)); #else f = fopen(HASH_ITEM_NAME(ff), "r"); #endif if (!f) goto zero_out; find_file_error = FF_KNOWN; goto found_file_2; /* * This part is invoked when we found a new file, which was not * yet referenced. If lf == 1, then the file was found directly, * otherwise it was found in some system include directory. * A new found_file structure has been allocated and is in * protect_detect.ff */ found_file: if (f && ((emit_dependencies == 1 && lf && current_incdir == -1) || emit_dependencies == 2)) { fprintf(emit_output, " %s", s ? s : name); } nff = protect_detect.ff; nff->name = sdup(name); #ifdef AUDIT if ( #endif HTT_put(&found_files, nff, s ? s : name) #ifdef AUDIT ) ouch(aCPP_ "filename collided with a wraith") #endif ; if (!lf) { struct found_file_sys *ffs = new_found_file_sys(); ffs->rff = nff; ffs->incdir = incdir; HTT_put(&found_files_sys, ffs, name); } if (s) freemem(s); s = 0; find_file_error = FF_UNKNOWN; ff = nff; found_file_2: if (s) freemem(s); current_long_filename = HASH_ITEM_NAME(ff); #ifdef NO_LIBC_BUF setbuf(f, 0); #endif current_incdir = incdir; return f; } /* * Find the named file by looking through the end of the include path. * This is for #include_next directives. * #include_next and #include_next "foo" are considered identical, * for all practical purposes. */ static FILE *find_file_next(pCPP_ char *name) { int i; size_t nl = strlen(name); FILE *f; struct found_file *ff; find_file_error = FF_ERROR; protect_detect.state = -1; protect_detect.macro = 0; for (i = current_incdir + 1; (size_t)i < include_path_nb; i ++) { char *s; size_t ni = strlen(include_path[i]); s = getmem(ni + nl + 2); mmv(s, include_path[i], ni); s[ni] = '/'; mmv(s + ni + 1, name, nl + 1); #ifdef MSDOS /* on msdos systems, replace all / by \ */ { char *c; for (c = s; *c; c ++) if (*c == '/') *c = '\\'; } #endif ff = HTT_get(&found_files, s); if (ff) { /* file was found in the cache */ if (ff->protect) { if (get_macro(aCPP_ ff->protect)) { find_file_error = FF_PROTECT; freemem(s); return 0; } /* file is protected but the guardian macro is not available; disable guardian detection. */ protect_detect.state = 0; } protect_detect.ff = ff; #ifdef UCPP_MMAP f = fopen_mmap_file(HASH_ITEM_NAME(ff)); #else f = fopen(HASH_ITEM_NAME(ff), "r"); #endif if (!f) { /* file is referenced but yet unavailable. */ freemem(s); return 0; } find_file_error = FF_KNOWN; freemem(s); s = HASH_ITEM_NAME(ff); } else { #ifdef UCPP_MMAP f = fopen_mmap_file(s); #else f = fopen(s, "r"); #endif if (f) { if (emit_dependencies == 2) { fprintf(emit_output, " %s", s); } ff = protect_detect.ff = new_found_file(); ff->name = sdup(s); #ifdef AUDIT if ( #endif HTT_put(&found_files, ff, s) #ifdef AUDIT ) ouch(aCPP_ "filename collided with a wraith") #endif ; find_file_error = FF_UNKNOWN; freemem(s); s = HASH_ITEM_NAME(ff); } } if (f) { current_long_filename = s; current_incdir = i; return f; } freemem(s); } return 0; } /* * The #if directive. This function parse the expression, performs macro * expansion (and handles the "defined" operator), and call eval_expr. * return value: 1 if the expression is true, 0 if it is false, -1 on error. */ static int handle_if(pCPP_ struct lexer_state *ls) { struct token_fifo tf, tf1, tf2, tf3, *save_tf; long l = ls->line; unsigned long z; int ret = 0, ltww = 1; /* first, get the whole line */ tf.art = tf.nt = 0; while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { struct token t; if (ltww && ttMWS(ls->ctok->type)) continue; ltww = ttMWS(ls->ctok->type); t.type = ls->ctok->type; t.line = l; if (S_TOKEN(ls->ctok->type)) { t.name = sdup(ls->ctok->name); throw_away(ls->gf, t.name); } aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } if (ltww && tf.nt) if ((-- tf.nt) == 0) freemem(tf.t); if (tf.nt == 0) { error(aCPP_ l, "void condition for a #if/#elif"); return -1; } /* handle the "defined" operator */ tf1.art = tf1.nt = 0; while (tf.art < tf.nt) { struct token *ct, rt; struct macro *m; size_t nidx, eidx; ct = tf.t + (tf.art ++); if (ct->type == NAME && !strcmp(ct->name, "defined")) { if (tf.art >= tf.nt) goto store_token; nidx = tf.art; if (ttMWS(tf.t[nidx].type)) if (++ nidx >= tf.nt) goto store_token; if (tf.t[nidx].type == NAME) { eidx = nidx; goto check_macro; } if (tf.t[nidx].type != LPAR) goto store_token; if (++ nidx >= tf.nt) goto store_token; if (ttMWS(tf.t[nidx].type)) if (++ nidx >= tf.nt) goto store_token; if (tf.t[nidx].type != NAME) goto store_token; eidx = nidx + 1; if (eidx >= tf.nt) goto store_token; if (ttMWS(tf.t[eidx].type)) if (++ eidx >= tf.nt) goto store_token; if (tf.t[eidx].type != RPAR) goto store_token; goto check_macro; } store_token: aol(tf1.t, tf1.nt, *ct, TOKEN_LIST_MEMG); continue; check_macro: m = get_macro(aCPP_ tf.t[nidx].name); rt.type = NUMBER; rt.name = m ? "1L" : "0L"; aol(tf1.t, tf1.nt, rt, TOKEN_LIST_MEMG); tf.art = eidx + 1; } freemem(tf.t); if (tf1.nt == 0) { error(aCPP_ l, "void condition (after expansion) for a #if/#elif"); return -1; } /* perform all macro substitutions */ tf2.art = tf2.nt = 0; save_tf = ls->output_fifo; ls->output_fifo = &tf2; while (tf1.art < tf1.nt) { struct token *ct; ct = tf1.t + (tf1.art ++); if (ct->type == NAME) { struct macro *m = get_macro(aCPP_ ct->name); if (m) { if (substitute_macro(aCPP_ ls, m, &tf1, 0, #ifdef NO_PRAGMA_IN_DIRECTIVE 1, #else 0, #endif ct->line)) { ls->output_fifo = save_tf; goto error1; } continue; } } else if ((ct->type == SHARP || ct->type == DIG_SHARP) && (ls->flags & HANDLE_ASSERTIONS)) { /* we have an assertion; parse it */ int nnp, ltww = 1; size_t i = tf1.art; struct token_fifo atl; char *aname; struct assert *a; int av = 0; struct token rt; atl.art = atl.nt = 0; while (i < tf1.nt && ttMWS(tf1.t[i].type)) i ++; if (i >= tf1.nt) goto assert_error; if (tf1.t[i].type != NAME) goto assert_error; aname = tf1.t[i ++].name; while (i < tf1.nt && ttMWS(tf1.t[i].type)) i ++; if (i >= tf1.nt) goto assert_generic; if (tf1.t[i].type != LPAR) goto assert_generic; i ++; for (nnp = 1; nnp && i < tf1.nt; i ++) { if (ltww && ttMWS(tf1.t[i].type)) continue; if (tf1.t[i].type == LPAR) nnp ++; else if (tf1.t[i].type == RPAR && (-- nnp) == 0) { tf1.art = i + 1; break; } ltww = ttMWS(tf1.t[i].type); aol(atl.t, atl.nt, tf1.t[i], TOKEN_LIST_MEMG); } if (nnp) goto assert_error; if (ltww && atl.nt && (-- atl.nt) == 0) freemem(atl.t); if (atl.nt == 0) goto assert_error; /* the assertion is in aname and atl; check it */ a = get_assertion(aCPP_ aname); if (a) for (i = 0; i < a->nbval; i ++) if (!cmp_token_list(&atl, a->val + i)) { av = 1; break; } rt.type = NUMBER; rt.name = av ? "1" : "0"; aol(tf2.t, tf2.nt, rt, TOKEN_LIST_MEMG); if (atl.nt) freemem(atl.t); continue; assert_generic: tf1.art = i; rt.type = NUMBER; rt.name = get_assertion(aCPP_ aname) ? "1" : "0"; aol(tf2.t, tf2.nt, rt, TOKEN_LIST_MEMG); continue; assert_error: error(aCPP_ l, "syntax error for assertion in #if"); ls->output_fifo = save_tf; goto error1; } aol(tf2.t, tf2.nt, *ct, TOKEN_LIST_MEMG); } ls->output_fifo = save_tf; freemem(tf1.t); if (tf2.nt == 0) { error(aCPP_ l, "void condition (after expansion) for a #if/#elif"); return -1; } /* * suppress whitespace and replace rogue identifiers by 0 */ tf3.art = tf3.nt = 0; while (tf2.art < tf2.nt) { struct token *ct = tf2.t + (tf2.art ++); if (ttMWS(ct->type)) continue; if (ct->type == NAME) { /* * a rogue identifier; we replace it with "0". */ struct token rt; rt.type = NUMBER; rt.name = "0"; aol(tf3.t, tf3.nt, rt, TOKEN_LIST_MEMG); continue; } aol(tf3.t, tf3.nt, *ct, TOKEN_LIST_MEMG); } freemem(tf2.t); if (tf3.nt == 0) { error(aCPP_ l, "void condition (after expansion) for a #if/#elif"); return -1; } eval_line = l; z = eval_expr(aCPP_ &tf3, &ret, (ls->flags & WARN_STANDARD) != 0); freemem(tf3.t); if (ret) return -1; return (z != 0); error1: if (tf1.nt) freemem(tf1.t); if (tf2.nt) freemem(tf2.t); return -1; } /* * A #include was found; parse the end of line, replace macros if * necessary. * * If nex is set to non-zero, the directive is considered as a #include_next * (extension to C99, mimicked from GNU) */ static int handle_include(pCPP_ struct lexer_state *ls, unsigned long flags, int nex) { int c, string_fname = 0; char *fname; unsigned char *fname2; size_t fname_ptr = 0; long l = ls->line; int x, y; FILE *f; struct token_fifo tf, tf2, *save_tf; size_t nl; int tgd; struct lexer_state alt_ls; #define left_angle(t) ((t) == LT || (t) == LEQ || (t) == LSH \ || (t) == ASLSH || (t) == DIG_LBRK || (t) == LBRA) #define right_angle(t) ((t) == GT || (t) == RSH || (t) == ARROW \ || (t) == DIG_RBRK || (t) == DIG_RBRA) while ((c = grap_char(aCPP_ ls)) >= 0 && c != '\n') { if (space_char(c)) { discard_char(aCPP_ ls); continue; } if (c == '<') { discard_char(aCPP_ ls); while ((c = grap_char(aCPP_ ls)) >= 0) { discard_char(aCPP_ ls); if (c == '\n') goto include_last_chance; if (c == '>') break; aol(fname, fname_ptr, (char)c, FNAME_MEMG); } aol(fname, fname_ptr, (char)0, FNAME_MEMG); string_fname = 0; goto do_include; } else if (c == '"') { discard_char(aCPP_ ls); while ((c = grap_char(aCPP_ ls)) >= 0) { discard_char(aCPP_ ls); if (c == '\n') { /* macro replacements won't save that one */ if (fname_ptr) freemem(fname); goto include_error; } if (c == '"') break; aol(fname, fname_ptr, (char)c, FNAME_MEMG); } aol(fname, fname_ptr, (char)0, FNAME_MEMG); string_fname = 1; goto do_include; } goto include_macro; } include_last_chance: /* * We found a '<' but not the trailing '>'; so we tokenize the * line, and try to act upon it. The standard lets us free in that * matter, and no sane programmer would use such a construct, but * it is no reason not to support it. */ if (fname_ptr == 0) goto include_error; fname2 = getmem(fname_ptr + 1); mmv(fname2 + 1, fname, fname_ptr); fname2[0] = '<'; /* * We merely copy the lexer_state structure; this should be ok, * since we do want to share the memory structure (garbage_fifo), * and do not touch any other context-full thing. */ alt_ls = *ls; alt_ls.input = 0; alt_ls.input_string = fname2; alt_ls.pbuf = 0; alt_ls.ebuf = fname_ptr + 1; tf.art = tf.nt = 0; while (!next_token(aCPP_ &alt_ls)) { if (!ttMWS(alt_ls.ctok->type)) { struct token t; t.type = alt_ls.ctok->type; t.line = l; if (S_TOKEN(alt_ls.ctok->type)) { t.name = sdup(alt_ls.ctok->name); throw_away(alt_ls.gf, t.name); } aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } } freemem(fname2); if (alt_ls.pbuf < alt_ls.ebuf) goto include_error; /* tokenizing failed */ goto include_macro2; include_error: error(aCPP_ l, "invalid '#include'"); return 1; include_macro: tf.art = tf.nt = 0; while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (!ttMWS(ls->ctok->type)) { struct token t; t.type = ls->ctok->type; t.line = l; if (S_TOKEN(ls->ctok->type)) { t.name = sdup(ls->ctok->name); throw_away(ls->gf, t.name); } aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } } include_macro2: tf2.art = tf2.nt = 0; save_tf = ls->output_fifo; ls->output_fifo = &tf2; while (tf.art < tf.nt) { struct token *ct; ct = tf.t + (tf.art ++); if (ct->type == NAME) { struct macro *m = get_macro(aCPP_ ct->name); if (m) { if (substitute_macro(aCPP_ ls, m, &tf, 0, #ifdef NO_PRAGMA_IN_DIRECTIVE 1, #else 0, #endif ct->line)) { ls->output_fifo = save_tf; return -1; } continue; } } aol(tf2.t, tf2.nt, *ct, TOKEN_LIST_MEMG); } freemem(tf.t); ls->output_fifo = save_tf; for (x = 0; (size_t)x < tf2.nt && ttWHI(tf2.t[x].type); x ++); for (y = tf2.nt - 1; y >= 0 && ttWHI(tf2.t[y].type); y --); if ((size_t)x >= tf2.nt) goto include_macro_err; if (tf2.t[x].type == STRING) { if (y != x) goto include_macro_err; if (tf2.t[x].name[0] == 'L') { if (ls->flags & WARN_STANDARD) warning(aCPP_ l, "wide string for #include"); fname = sdup(tf2.t[x].name); nl = strlen(fname); *(fname + nl - 1) = 0; mmvwo(fname, fname + 2, nl - 2); } else { fname = sdup(tf2.t[x].name); nl = strlen(fname); *(fname + nl - 1) = 0; mmvwo(fname, fname + 1, nl - 1); } string_fname = 1; } else if (left_angle(tf2.t[x].type) && right_angle(tf2.t[y].type)) { int i, j; if (ls->flags & WARN_ANNOYING) warning(aCPP_ l, "reconstruction " "of in #include"); for (j = 0, i = x; i <= y; i ++) if (!ttWHI(tf2.t[i].type)) j += strlen(tname(tf2.t[i])); fname = getmem(j + 1); for (j = 0, i = x; i <= y; i ++) { if (ttWHI(tf2.t[i].type)) continue; strcpy(fname + j, tname(tf2.t[i])); j += strlen(tname(tf2.t[i])); } *(fname + j - 1) = 0; mmvwo(fname, fname + 1, j); string_fname = 0; } else goto include_macro_err; freemem(tf2.t); goto do_include_next; include_macro_err: error(aCPP_ l, "macro expansion did not produce a valid filename " "for #include"); if (tf2.nt) freemem(tf2.t); return 1; do_include: tgd = 1; while (!next_token(aCPP_ ls)) { if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in #include"); tgd = 0; } if (ls->ctok->type == NEWLINE) break; } /* the increment of ls->line is intended so that the line numbering is reported correctly in report_context() even if the #include is at the end of the file with no trailing newline */ if (ls->ctok->type != NEWLINE) ls->line ++; do_include_next: if (!(ls->flags & LEXER) && (ls->flags & KEEP_OUTPUT)) put_char(aCPP_ ls, '\n'); push_file_context(aCPP_ ls); reinit_lexer_state(ls, 1); #ifdef MSDOS /* on msdos systems, replace all / by \ */ { char *d; for (d = fname; *d; d ++) if (*d == '/') *d = '\\'; } #endif f = nex ? find_file_next(aCPP_ fname) : find_file(aCPP_ fname, string_fname); if (!f) { current_filename = 0; pop_file_context(aCPP_ ls); if (find_file_error == FF_ERROR) { error(aCPP_ l, "file '%s' not found", fname); freemem(fname); return 1; } /* file was found, but it is useless to include it again */ freemem(fname); return 0; } #ifdef UCPP_MMAP set_input_file(ls, f); #else ls->input = f; #endif current_filename = fname; enter_file(aCPP_ ls, flags); return 0; #undef left_angle #undef right_angle } /* * for #line directives */ static int handle_line(pCPP_ struct lexer_state *ls, unsigned long flags) { char *fname; long l = ls->line; struct token_fifo tf, tf2, *save_tf; size_t nl, j; unsigned long z; tf.art = tf.nt = 0; while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (!ttMWS(ls->ctok->type)) { struct token t; t.type = ls->ctok->type; t.line = l; if (S_TOKEN(ls->ctok->type)) { t.name = sdup(ls->ctok->name); throw_away(ls->gf, t.name); } aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } } tf2.art = tf2.nt = 0; save_tf = ls->output_fifo; ls->output_fifo = &tf2; while (tf.art < tf.nt) { struct token *ct; ct = tf.t + (tf.art ++); if (ct->type == NAME) { struct macro *m = get_macro(aCPP_ ct->name); if (m) { if (substitute_macro(aCPP_ ls, m, &tf, 0, #ifdef NO_PRAGMA_IN_DIRECTIVE 1, #else 0, #endif ct->line)) { ls->output_fifo = save_tf; return -1; } continue; } } aol(tf2.t, tf2.nt, *ct, TOKEN_LIST_MEMG); } freemem(tf.t); for (tf2.art = 0; tf2.art < tf2.nt && ttWHI(tf2.t[tf2.art].type); tf2.art ++); ls->output_fifo = save_tf; if (tf2.art == tf2.nt || (tf2.t[tf2.art].type != NUMBER && tf2.t[tf2.art].type != CHAR)) { error(aCPP_ l, "not a valid number for #line"); goto line_macro_err; } for (j = 0; tf2.t[tf2.art].name[j]; j ++) if (tf2.t[tf2.art].name[j] < '0' || tf2.t[tf2.art].name[j] > '9') if (ls->flags & WARN_STANDARD) warning(aCPP_ l, "non-standard line number in #line"); if (catch(eval_exception)) goto line_macro_err; z = strtoconst(aCPP_ tf2.t[tf2.art].name); if (j > 10 || z > 2147483647U) { error(aCPP_ l, "out-of-bound line number for #line"); goto line_macro_err; } ls->oline = ls->line = z; if ((++ tf2.art) < tf2.nt) { size_t i; for (i = tf2.art; i < tf2.nt && ttMWS(tf2.t[i].type); i ++); if (i < tf2.nt) { if (tf2.t[i].type != STRING) { error(aCPP_ l, "not a valid filename for #line"); goto line_macro_err; } if (tf2.t[i].name[0] == 'L') { if (ls->flags & WARN_STANDARD) { warning(aCPP_ l, "wide string for #line"); } fname = sdup(tf2.t[i].name); nl = strlen(fname); *(fname + nl - 1) = 0; mmvwo(fname, fname + 2, nl - 2); } else { fname = sdup(tf2.t[i].name); nl = strlen(fname); *(fname + nl - 1) = 0; mmvwo(fname, fname + 1, nl - 1); } if (current_filename) freemem(current_filename); current_filename = fname; } for (i ++; i < tf2.nt && ttMWS(tf2.t[i].type); i ++); if (i < tf2.nt && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in #line"); } } freemem(tf2.t); enter_file(aCPP_ ls, flags); return 0; line_macro_err: if (tf2.nt) freemem(tf2.t); return 1; } /* * a #error directive: we emit the message without any modification * (except the usual backslash+newline and trigraphs) */ static void handle_error(pCPP_ struct lexer_state *ls) { int c; size_t p = 0, lp = 128; long l = ls->line; unsigned char *buf = getmem(lp); while ((c = grap_char(aCPP_ ls)) >= 0 && c != '\n') { discard_char(aCPP_ ls); wan(buf, p, (unsigned char)c, lp); } wan(buf, p, 0, lp); error(aCPP_ l, "#error%s", buf); freemem(buf); } /* * convert digraph tokens to their standard equivalent. */ static int undig(int type) { static int ud[6] = { LBRK, RBRK, LBRA, RBRA, SHARP, DSHARP }; return ud[type - DIG_LBRK]; } #ifdef PRAGMA_TOKENIZE /* * Make a compressed representation of a token list; the contents of * the token_fifo are freed. Values equal to 0 are replaced by * PRAGMA_TOKEN_END (by default, (unsigned char)'\n') and the compressed * string is padded by a 0 (so that it may be * handled like a string). * Digraph tokens are replaced by their non-digraph equivalents. */ struct comp_token_fifo compress_token_list(struct token_fifo *tf) { struct comp_token_fifo ct; size_t l; for (l = 0, tf->art = 0; tf->art < tf->nt; tf->art ++) { l ++; if (S_TOKEN(tf->t[tf->art].type)) l += strlen(tf->t[tf->art].name) + 1; } ct.t = getmem((ct.length = l) + 1); for (l = 0, tf->art = 0; tf->art < tf->nt; tf->art ++) { int tt = tf->t[tf->art].type; if (tt == 0) tt = PRAGMA_TOKEN_END; if (tt > DIGRAPH_TOKENS && tt < DIGRAPH_TOKENS_END) tt = undig(tt); ct.t[l ++] = tt; if (S_TOKEN(tt)) { char *tn = tf->t[tf->art].name; size_t sl = strlen(tn); mmv(ct.t + l, tn, sl); l += sl; ct.t[l ++] = PRAGMA_TOKEN_END; freemem(tn); } } ct.t[l] = 0; if (tf->nt) freemem(tf->t); ct.rp = 0; return ct; } #endif /* * A #pragma directive: we make a PRAGMA token containing the rest of * the line. * * We strongly hope that we are called only in LEXER mode. */ static void handle_pragma(pCPP_ struct lexer_state *ls) { unsigned char *buf; struct token t; long l = ls->line; #ifdef PRAGMA_TOKENIZE struct token_fifo tf; tf.art = tf.nt = 0; while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (!ttMWS(ls->ctok->type)) break; if (ls->ctok->type != NEWLINE) { do { struct token t; t.type = ls->ctok->type; if (ttMWS(t.type)) continue; if (S_TOKEN(t.type)) t.name = sdup(ls->ctok->name); aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE); } if (tf.nt == 0) { /* void pragma are silently ignored */ return; } buf = (compress_token_list(&tf)).t; #else int c, x = 1, y = 32; while ((c = grap_char(ls)) >= 0 && c != '\n') { discard_char(aCPP_ ls); if (!space_char(c)) break; } /* void #pragma are ignored */ if (c == '\n') return; buf = getmem(y); buf[0] = c; while ((c = grap_char(ls)) >= 0 && c != '\n') { discard_char(aCPP_ ls); wan(buf, x, c, y); } for (x --; x >= 0 && space_char(buf[x]); x --); x ++; wan(buf, x, 0, y); #endif t.type = PRAGMA; t.line = l; t.name = (char *)buf; aol(ls->output_fifo->t, ls->output_fifo->nt, t, TOKEN_LIST_MEMG); throw_away(ls->gf, (char *)buf); } #include "scanppd.c" /* * We saw a # at the beginning of a line (or preceeded only by whitespace). * We check the directive name and act accordingly. */ static int handle_cpp(pCPP_ struct lexer_state *ls, int sharp_type) { #define condfset(x) do { \ ls->condf[(x) / 32] |= 1UL << ((x) % 32); \ } while (0) #define condfclr(x) do { \ ls->condf[(x) / 32] &= ~(1UL << ((x) % 32)); \ } while (0) #define condfval(x) ((ls->condf[(x) / 32] & (1UL << ((x) % 32))) != 0) long l = ls->line; unsigned long save_flags = ls->flags; int ret = 0; save_flags = ls->flags; ls->flags |= LEXER; while (!next_token(aCPP_ ls)) { int t = ls->ctok->type; switch (t) { case COMMENT: if (ls->flags & WARN_ANNOYING) { warning(aCPP_ l, "comment in the middle of " "a cpp directive"); } /* fall through */ case NONE: continue; case NEWLINE: /* null directive */ if (ls->flags & WARN_ANNOYING) { /* truly an annoying warning; null directives are rare but may increase readability of some source files, and they are legal */ warning(aCPP_ l, "null cpp directive"); } if (!(ls->flags & LEXER)) put_char(aCPP_ ls, '\n'); goto handle_exit2; case NAME: break; default: if (ls->flags & FAIL_SHARP) { if (ls->condcomp) { error(aCPP_ l, "rogue '#'"); ret = 1; } else { if (ls->flags & WARN_STANDARD) { warning(aCPP_ l, "rogue '#' in code " "compiled out"); ret = 0; } } ls->flags = save_flags; goto handle_warp_ign; } else { struct token u; u.type = sharp_type; u.line = l; ls->flags = save_flags; print_token(aCPP_ ls, &u, 0); print_token(aCPP_ ls, ls->ctok, 0); if (ls->flags & WARN_ANNOYING) { warning(aCPP_ l, "rogue '#' dumped"); } goto handle_exit3; } } if (ls->condcomp) { switch (scan_pp_directive(ls->ctok->name)) { case PPDIR_DEFINE: ret = handle_define(aCPP_ ls); goto handle_exit; case PPDIR_UNDEF: ret = handle_undef(aCPP_ ls); goto handle_exit; case PPDIR_IF: if ((++ ls->ifnest) > 63) goto too_many_if; condfclr(ls->ifnest - 1); ret = handle_if(aCPP_ ls); if (ret > 0) ret = 0; else if (ret == 0) { ls->condcomp = 0; ls->condmet = 0; ls->condnest = ls->ifnest - 1; } else ret = 1; goto handle_exit; case PPDIR_IFDEF: if ((++ ls->ifnest) > 63) goto too_many_if; condfclr(ls->ifnest - 1); ret = handle_ifdef(aCPP_ ls); if (ret > 0) ret = 0; else if (ret == 0) { ls->condcomp = 0; ls->condmet = 0; ls->condnest = ls->ifnest - 1; } else ret = 1; goto handle_exit; case PPDIR_IFNDEF: if ((++ ls->ifnest) > 63) goto too_many_if; condfclr(ls->ifnest - 1); ret = handle_ifndef(aCPP_ ls); if (ret > 0) ret = 0; else if (ret == 0) { ls->condcomp = 0; ls->condmet = 0; ls->condnest = ls->ifnest - 1; } else ret = 1; goto handle_exit; case PPDIR_ELSE: if (ls->ifnest == 0 || condfval(ls->ifnest - 1)) { error(aCPP_ l, "rogue #else"); ret = 1; goto handle_warp; } condfset(ls->ifnest - 1); if (ls->ifnest == 1) protect_detect.state = 0; ls->condcomp = 0; ls->condmet = 1; ls->condnest = ls->ifnest - 1; goto handle_warp; case PPDIR_ELIF: if (ls->ifnest == 0 || condfval(ls->ifnest - 1)) { error(aCPP_ l, "rogue #elif"); ret = 1; goto handle_warp_ign; } if (ls->ifnest == 1) protect_detect.state = 0; ls->condcomp = 0; ls->condmet = 1; ls->condnest = ls->ifnest - 1; goto handle_warp_ign; case PPDIR_ENDIF: if (ls->ifnest == 0) { error(aCPP_ l, "unmatched #endif"); ret = 1; goto handle_warp; } if ((-- ls->ifnest) == 0 && protect_detect.state == 2) { protect_detect.state = 3; } goto handle_warp; case PPDIR_INCLUDE: ret = handle_include(aCPP_ ls, save_flags, 0); goto handle_exit3; case PPDIR_INCLUDE_NEXT: ret = handle_include(aCPP_ ls, save_flags, 1); goto handle_exit3; case PPDIR_PRAGMA: if (!(save_flags & LEXER)) { #ifdef PRAGMA_DUMP /* dump #pragma in output */ struct token u; u.type = sharp_type; u.line = l; ls->flags = save_flags; print_token(aCPP_ ls, &u, 0); print_token(aCPP_ ls, ls->ctok, 0); while (ls->flags |= LEXER, !next_token(aCPP_ ls)) { long save_line; ls->flags &= ~LEXER; save_line = ls->line; ls->line = l; print_token(aCPP_ ls, ls->ctok, 0); ls->line = save_line; if (ls->ctok->type == NEWLINE) break; } goto handle_exit3; #else if (ls->flags & WARN_PRAGMA) warning(aCPP_ l, "#pragma ignored " "and not dumped"); goto handle_warp_ign; #endif } if (!(ls->flags & HANDLE_PRAGMA)) goto handle_warp_ign; handle_pragma(aCPP_ ls); goto handle_exit; case PPDIR_ERROR: ret = 1; handle_error(aCPP_ ls); goto handle_exit; case PPDIR_LINE: ret = handle_line(aCPP_ ls, save_flags); goto handle_exit; case PPDIR_ASSERT: if (ls->flags & HANDLE_ASSERTIONS) { ret = handle_assert(aCPP_ ls); goto handle_exit; } break; case PPDIR_UNASSERT: if (ls->flags & HANDLE_ASSERTIONS) { ret = handle_unassert(aCPP_ ls); goto handle_exit; } break; case PPDIR_IDENT: goto handle_warp_ign; default: break; } } else { switch (scan_pp_directive(ls->ctok->name)) { case PPDIR_ELSE: if (condfval(ls->ifnest - 1) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "rogue #else in code " "compiled out"); } if (ls->condnest == ls->ifnest - 1) { if (!ls->condmet) ls->condcomp = 1; } condfset(ls->ifnest - 1); if (ls->ifnest == 1) protect_detect.state = 0; goto handle_warp; case PPDIR_ELIF: if (condfval(ls->ifnest - 1) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "rogue #elif in code " "compiled out"); } if (ls->condnest != ls->ifnest - 1 || ls->condmet) goto handle_warp_ign; if (ls->ifnest == 1) protect_detect.state = 0; ret = handle_if(aCPP_ ls); if (ret > 0) { ls->condcomp = 1; ls->condmet = 1; ret = 0; } else if (ret < 0) ret = 1; goto handle_exit; case PPDIR_ENDIF: if ((-- ls->ifnest) == ls->condnest) { if (ls->ifnest == 0 && protect_detect.state == 2) protect_detect.state = 3; ls->condcomp = 1; } goto handle_warp; case PPDIR_IF: case PPDIR_IFDEF: case PPDIR_IFNDEF: if ((++ ls->ifnest) > 63) goto too_many_if; condfclr(ls->ifnest - 1); default: break; } goto handle_warp_ign; } /* * Unrecognized directive. We emit either an error or * an annoying warning, depending on a command-line switch. */ if (ls->flags & FAIL_SHARP) { error(aCPP_ l, "unknown cpp directive '#%s'", ls->ctok->name); goto handle_warp_ign; } else { struct token u; u.type = sharp_type; u.line = l; ls->flags = save_flags; print_token(aCPP_ ls, &u, 0); print_token(aCPP_ ls, ls->ctok, 0); if (ls->flags & WARN_ANNOYING) { warning(aCPP_ l, "rogue '#' dumped"); } } } return 1; handle_warp_ign: while (!next_token(aCPP_ ls)) if (ls->ctok->type == NEWLINE) break; goto handle_exit; handle_warp: while (!next_token(aCPP_ ls)) { if (!ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in " "preprocessing directive"); } if (ls->ctok->type == NEWLINE) break; } handle_exit: if (!(ls->flags & LEXER)) put_char(aCPP_ ls, '\n'); handle_exit3: if (protect_detect.state == 1) { protect_detect.state = 0; } else if (protect_detect.state == -1) { /* just after the #include */ protect_detect.state = 1; } handle_exit2: ls->flags = save_flags; return ret; too_many_if: error(aCPP_ l, "too many levels of conditional inclusion (max 63)"); ret = 1; goto handle_warp; #undef condfset #undef condfclr #undef condfval } /* * This is the main entry function. It maintains count of #, and call the * appropriate functions when it encounters a cpp directive or a macro * name. * return value: positive on error; CPPERR_EOF means "end of input reached" */ int cpp(pCPP_ struct lexer_state *ls) { int r = 0; while (next_token(aCPP_ ls)) { if (protect_detect.state == 3) { /* * At that point, protect_detect.ff->protect might * be non-zero, if the file has been recursively * included, and a guardian detected. */ if (!protect_detect.ff->protect) { /* Cool ! A new guardian has been detected. */ protect_detect.ff->protect = protect_detect.macro; } else if (protect_detect.macro) { /* We found a guardian but an old one. */ freemem(protect_detect.macro); } protect_detect.macro = 0; } if (ls->ifnest) { error(aCPP_ ls->line, "unterminated #if construction " "(depth %ld)", ls->ifnest); r = CPPERR_NEST; } if (ls_depth == 0) return CPPERR_EOF; close_input(ls); if (!(ls->flags & LEXER) && !ls->ltwnl) put_char(aCPP_ ls, '\n'); pop_file_context(aCPP_ ls); ls->oline ++; if (enter_file(aCPP_ ls, ls->flags)) break; } if (!(ls->ltwnl && (ls->ctok->type == SHARP || ls->ctok->type == DIG_SHARP)) && protect_detect.state == 1 && !ttWHI(ls->ctok->type)) { /* the first non-whitespace token encountered is not a sharp introducing a cpp directive */ protect_detect.state = 0; } if (protect_detect.state == 3 && !ttWHI(ls->ctok->type)) { /* a non-whitespace token encountered after the #endif */ protect_detect.state = 0; } if (ls->condcomp) { if (ls->ltwnl && (ls->ctok->type == SHARP || ls->ctok->type == DIG_SHARP)) { int x = handle_cpp(aCPP_ ls, ls->ctok->type); ls->ltwnl = 1; return r ? r : x; } if (ls->ctok->type == NAME) { struct macro *m; if ((m = get_macro(aCPP_ ls->ctok->name)) != 0) { int x; x = substitute_macro(aCPP_ ls, m, 0, 1, 0, ls->ctok->line); if (!(ls->flags & LEXER)) garbage_collect(ls->gf); return r ? r : x; } if (!(ls->flags & LEXER)) print_token(aCPP_ ls, ls->ctok, 0); } } else { if (ls->ltwnl && (ls->ctok->type == SHARP || ls->ctok->type == DIG_SHARP)) { int x = handle_cpp(aCPP_ ls, ls->ctok->type); ls->ltwnl = 1; return r ? r : x; } } if (ls->ctok->type == NEWLINE) ls->ltwnl = 1; else if (!ttWHI(ls->ctok->type)) ls->ltwnl = 0; return r ? r : -1; } #ifndef STAND_ALONE /* * llex() and lex() are the lexing functions, when the preprocessor is * linked to another code. llex() should be called only by lex(). */ static int llex(pCPP_ struct lexer_state *ls) { int r; do { struct token_fifo *tf = ls->output_fifo; if (tf->nt != 0) { if (tf->art < tf->nt) { #ifdef INMACRO_FLAG if (!ls->inmacro) { ls->inmacro = 1; ls->macro_count ++; } #endif ls->ctok = tf->t + (tf->art ++); if (ls->ctok->type > DIGRAPH_TOKENS && ls->ctok->type < DIGRAPH_TOKENS_END) { ls->ctok->type = undig(ls->ctok->type); } return 0; } else { #ifdef INMACRO_FLAG ls->inmacro = 0; #endif freemem(tf->t); tf->art = tf->nt = 0; garbage_collect(ls->gf); ls->ctok = ls->save_ctok; } } r = cpp(aCPP_ ls); if (ls->ctok->type > DIGRAPH_TOKENS && ls->ctok->type < LAST_MEANINGFUL_TOKEN) { ls->ctok->type = undig(ls->ctok->type); } } while (r == 0); return r > 0 ? r : 0; } /* * lex() reads the next token from the processed stream and stores it * into ls->ctok. * return value: non zero on error (including CPPERR_EOF, which is not * quite an error) */ int lex(pCPP_ struct lexer_state *ls) { int r; do { r = llex(aCPP_ ls); #ifdef SEMPER_FIDELIS } while (!r && !ls->condcomp); #else } while (!r && (!ls->condcomp || (ttWHI(ls->ctok->type) && (!(ls->flags & LINE_NUM) || ls->ctok->type != NEWLINE)))); #endif return r; } #endif /* * check_cpp_errors() must be called when the end of input is reached; * it checks pending errors due to truncated constructs (actually none, * this is reserved for future evolutions). */ int check_cpp_errors(pCPP_ struct lexer_state *ls) { if (ls->flags & KEEP_OUTPUT) { put_char(aCPP_ ls, '\n'); } if (emit_dependencies) fputc('\n', emit_output); #ifndef NO_UCPP_BUF if (!(ls->flags & LEXER)) { flush_output(aCPP_ ls); } #endif if ((ls->flags & WARN_TRIGRAPHS) && ls->count_trigraphs) warning(aCPP_ 0, "%ld trigraph(s) encountered", ls->count_trigraphs); return 0; } /* * init_cpp() initializes static tables inside ucpp. It needs not be * called more than once. */ void init_cpp(pCPP) { init_cppm(aCPP); } /* * (re)init the global tables. * If standard_assertions is non 0, init the assertions table. */ void init_tables(pCPP_ int with_assertions) { time_t t; struct tm *ct; init_buf_lexer_state(&dsharp_lexer, 0); #ifdef PRAGMA_TOKENIZE init_buf_lexer_state(&tokenize_lexer, 0); #endif time(&t); ct = localtime(&t); #ifdef NOSTRFTIME /* we have a quite old compiler, that does not know the (standard since 1990) strftime() function. */ { char *c = asctime(ct); compile_time[0] = '"'; mmv(compile_time + 1, c + 11, 8); compile_time[9] = '"'; compile_time[10] = 0; compile_date[0] = '"'; mmv(compile_date + 1, c + 4, 7); mmv(compile_date + 8, c + 20, 4); compile_date[12] = '"'; compile_date[13] = 0; } #else strftime(compile_time, 12, "\"%H:%M:%S\"", ct); strftime(compile_date, 24, "\"%b %d %Y\"", ct); #endif init_macros(aCPP); if (with_assertions) init_assertions(aCPP); init_found_files(aCPP); } /* * Resets the include path. */ void init_include_path(pCPP_ char *incpath[]) { if (include_path_nb) { size_t i; for (i = 0; i < include_path_nb; i ++) freemem(include_path[i]); freemem(include_path); include_path_nb = 0; } if (incpath) { int i; for (i = 0; incpath[i]; i ++) aol(include_path, include_path_nb, sdup(incpath[i]), INCPATH_MEMG); } } /* * add_incpath() adds "path" to the standard include path. */ void add_incpath(pCPP_ char *path) { aol(include_path, include_path_nb, sdup(path), INCPATH_MEMG); } /* * This function cleans the memory. It should release all allocated * memory structures and may be called even if the current pre-processing * is not finished or reported an error. */ void wipeout(pCPP) { struct lexer_state ls; if (include_path_nb > 0) { size_t i; for (i = 0; i < include_path_nb; i ++) freemem(include_path[i]); freemem(include_path); include_path = 0; include_path_nb = 0; } if (current_filename) freemem(current_filename); current_filename = 0; current_long_filename = 0; current_incdir = -1; protect_detect.state = 0; if (protect_detect.macro) freemem(protect_detect.macro); protect_detect.macro = 0; protect_detect.ff = 0; init_lexer_state(&ls); while (ls_depth > 0) pop_file_context(aCPP_ &ls); free_lexer_state(&ls); free_lexer_state(&dsharp_lexer); #ifdef PRAGMA_TOKENIZE free_lexer_state(&tokenize_lexer); #endif if (found_files_init_done) HTT_kill(&found_files); found_files_init_done = 0; if (found_files_sys_init_done) HTT_kill(&found_files_sys); found_files_sys_init_done = 0; wipe_macros(aCPP); wipe_assertions(aCPP); } #ifdef STAND_ALONE /* * print some help */ static void usage(char *command_name) { fprintf(stderr, "Usage: %s [options] [file]\n" "language options:\n" " -C keep comments in output\n" " -s keep '#' when no cpp directive is recognized\n" " -l do not emit line numbers\n" " -lg emit gcc-like line numbers\n" " -CC disable C++-like comments\n" " -a, -na, -a0 handle (or not) assertions\n" " -V disable macros with extra arguments\n" " -u understand UTF-8 in source\n" " -X enable -a, -u and -Y\n" " -c90 mimic C90 behaviour\n" " -t disable trigraph support\n" "warning options:\n" " -wt emit a final warning when trigaphs are encountered\n" " -wtt emit warnings for each trigaph encountered\n" " -wa emit warnings that are usually useless\n" " -w0 disable standard warnings\n" "directory options:\n" " -I directory add 'directory' before the standard include path\n" " -J directory add 'directory' after the standard include path\n" " -zI do not use the standard include path\n" " -M emit Makefile-like dependencies instead of normal " "output\n" " -Ma emit also dependancies for system files\n" " -o file store output in file\n" "macro and assertion options:\n" " -Dmacro predefine 'macro'\n" " -Dmacro=def predefine 'macro' with 'def' content\n" " -Umacro undefine 'macro'\n" " -Afoo(bar) assert foo(bar)\n" " -Bfoo(bar) unassert foo(bar)\n" " -Y predefine system-dependant macros\n" " -Z do not predefine special macros\n" " -d emit defined macros\n" " -e emit assertions\n" "misc options:\n" " -v print version number and settings\n" " -h show this help\n", command_name); } /* * print version and compile-time settings */ static void version(pCPP) { size_t i; fprintf(stderr, "ucpp version %d.%d\n", VERS_MAJ, VERS_MIN); fprintf(stderr, "search path:\n"); for (i = 0; i < include_path_nb; i ++) fprintf(stderr, " %s\n", include_path[i]); } /* * parse_opt() initializes many things according to the command-line * options. * Return values: * 0 on success * 1 on semantic error (redefinition of a special macro, for instance) * 2 on syntaxic error (unknown options for instance) */ static int parse_opt(pCPP_ int argc, char *argv[], struct lexer_state *ls) { int i, ret = 0; char *filename = 0; int with_std_incpath = 1; int print_version = 0, print_defs = 0, print_asserts = 0; int system_macros = 0, standard_assertions = 1; init_lexer_state(ls); ls->flags = DEFAULT_CPP_FLAGS; emit_output = ls->output = stdout; for (i = 1; i < argc; i ++) if (argv[i][0] == '-') { if (!strcmp(argv[i], "-h")) { return 2; } else if (!strcmp(argv[i], "-C")) { ls->flags &= ~DISCARD_COMMENTS; } else if (!strcmp(argv[i], "-CC")) { ls->flags &= ~CPLUSPLUS_COMMENTS; } else if (!strcmp(argv[i], "-a")) { ls->flags |= HANDLE_ASSERTIONS; } else if (!strcmp(argv[i], "-na")) { ls->flags |= HANDLE_ASSERTIONS; standard_assertions = 0; } else if (!strcmp(argv[i], "-a0")) { ls->flags &= ~HANDLE_ASSERTIONS; } else if (!strcmp(argv[i], "-V")) { ls->flags &= ~MACRO_VAARG; } else if (!strcmp(argv[i], "-u")) { ls->flags |= UTF8_SOURCE; } else if (!strcmp(argv[i], "-X")) { ls->flags |= HANDLE_ASSERTIONS; ls->flags |= UTF8_SOURCE; system_macros = 1; } else if (!strcmp(argv[i], "-c90")) { ls->flags &= ~MACRO_VAARG; ls->flags &= ~CPLUSPLUS_COMMENTS; c99_compliant = 0; c99_hosted = -1; } else if (!strcmp(argv[i], "-t")) { ls->flags &= ~HANDLE_TRIGRAPHS; } else if (!strcmp(argv[i], "-wt")) { ls->flags |= WARN_TRIGRAPHS; } else if (!strcmp(argv[i], "-wtt")) { ls->flags |= WARN_TRIGRAPHS_MORE; } else if (!strcmp(argv[i], "-wa")) { ls->flags |= WARN_ANNOYING; } else if (!strcmp(argv[i], "-w0")) { ls->flags &= ~WARN_STANDARD; ls->flags &= ~WARN_PRAGMA; } else if (!strcmp(argv[i], "-s")) { ls->flags &= ~FAIL_SHARP; } else if (!strcmp(argv[i], "-l")) { ls->flags &= ~LINE_NUM; } else if (!strcmp(argv[i], "-lg")) { ls->flags |= GCC_LINE_NUM; } else if (!strcmp(argv[i], "-M")) { ls->flags &= ~KEEP_OUTPUT; emit_dependencies = 1; } else if (!strcmp(argv[i], "-Ma")) { ls->flags &= ~KEEP_OUTPUT; emit_dependencies = 2; } else if (!strcmp(argv[i], "-Y")) { system_macros = 1; } else if (!strcmp(argv[i], "-Z")) { no_special_macros = 1; } else if (!strcmp(argv[i], "-d")) { ls->flags &= ~KEEP_OUTPUT; print_defs = 1; } else if (!strcmp(argv[i], "-e")) { ls->flags &= ~KEEP_OUTPUT; print_asserts = 1; } else if (!strcmp(argv[i], "-zI")) { with_std_incpath = 0; } else if (!strcmp(argv[i], "-I") || !strcmp(argv[i], "-J")) { i ++; } else if (!strcmp(argv[i], "-o")) { if ((++ i) >= argc) { error(aCPP_ -1, "missing filename after -o"); return 2; } if (argv[i][0] == '-' && argv[i][1] == 0) { emit_output = ls->output = stdout; } else { ls->output = fopen(argv[i], "w"); if (!ls->output) { error(aCPP_ -1, "failed to open for " "writing: %s", argv[i]); return 2; } emit_output = ls->output; } } else if (!strcmp(argv[i], "-v")) { print_version = 1; } else if (argv[i][1] != 'I' && argv[i][1] != 'J' && argv[i][1] != 'D' && argv[i][1] != 'U' && argv[i][1] != 'A' && argv[i][1] != 'B') warning(aCPP_ -1, "unknown option '%s'", argv[i]); } else { if (filename != 0) { error(aCPP_ -1, "spurious filename '%s'", argv[i]); return 2; } filename = argv[i]; } init_tables(aCPP_ ls->flags & HANDLE_ASSERTIONS); init_include_path(aCPP_ 0); if (filename) { #ifdef UCPP_MMAP FILE *f = fopen_mmap_file(filename); ls->input = 0; if (f) set_input_file(ls, f); #else ls->input = fopen(filename, "r"); #endif if (!ls->input) { error(aCPP_ -1, "file '%s' not found", filename); return 1; } #ifdef NO_LIBC_BUF setbuf(ls->input, 0); #endif set_init_filename(aCPP_ filename, 1); } else { ls->input = stdin; set_init_filename(aCPP_ "", 0); } for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'I') add_incpath(aCPP_ argv[i][2] ? argv[i] + 2 : argv[i + 1]); if (system_macros) for (i = 0; system_macros_def[i]; i ++) ret = ret || define_macro(aCPP_ ls, system_macros_def[i]); for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'D') ret = ret || define_macro(aCPP_ ls, argv[i] + 2); for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'U') ret = ret || undef_macro(aCPP_ ls, argv[i] + 2); if (ls->flags & HANDLE_ASSERTIONS) { if (standard_assertions) for (i = 0; system_assertions_def[i]; i ++) make_assertion(aCPP_ system_assertions_def[i]); for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'A') ret = ret || make_assertion(aCPP_ argv[i] + 2); for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'B') ret = ret || destroy_assertion(aCPP_ argv[i] + 2); } else { for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && (argv[i][1] == 'A' || argv[i][1] == 'B')) warning(aCPP_ -1, "assertions disabled"); } if (with_std_incpath) { for (i = 0; include_path_std[i]; i ++) add_incpath(aCPP_ include_path_std[i]); } for (i = 1; i < argc; i ++) if (argv[i][0] == '-' && argv[i][1] == 'J') add_incpath(aCPP_ argv[i][2] ? argv[i] + 2 : argv[i + 1]); if (print_version) { version(aCPP); return 1; } if (print_defs) { print_defines(aCPP); emit_defines = 1; } if (print_asserts && (ls->flags & HANDLE_ASSERTIONS)) { print_assertions(aCPP); emit_assertions = 1; } return ret; } int main(int argc, char *argv[]) { struct lexer_state ls; int r, fr = 0; #ifdef UCPP_REENTRANT struct CPP *REENTR = new_cpp(); #endif init_cpp(aCPP); if ((r = parse_opt(aCPP_ argc, argv, &ls)) != 0) { if (r == 2) usage(argv[0]); return EXIT_FAILURE; } enter_file(aCPP_ &ls, ls.flags); while ((r = cpp(aCPP_ &ls)) < CPPERR_EOF) fr = fr || (r > 0); fr = fr || check_cpp_errors(aCPP_ &ls); free_lexer_state(&ls); wipeout(aCPP); #ifdef UCPP_REENTRANT del_cpp(REENTR); #endif #ifdef MEM_DEBUG report_leaks(); #endif return fr ? EXIT_FAILURE : EXIT_SUCCESS; } #endif #ifdef UCPP_CLONE /* undefine all REENTR macros */ #undef dsharp_lexer #ifdef PRAGMA_TOKENIZE #undef tokenize_lexer #endif #undef current_filename #undef current_long_filename #undef protect_detect #undef include_path #undef include_path_nb #undef ls_depth #undef ls_stack #undef protect_detect_stack #undef found_files #undef found_files_sys #undef found_files_init_done #undef found_files_sys_init_done static void update_ffs_pointer(void *ht, void *m) { struct found_file_sys *ffs = m; ffs->rff = HTT_get(ht, HASH_ITEM_NAME(ffs->rff)); } struct CPP *clone_cpp(const struct CPP *src) { struct CPP *dst; size_t i; if (src->_cpp.ls_depth > 0) /* cannot clone running preprocessor? */ return NULL; dst = getmem(sizeof(struct CPP)); mmv(dst, src, sizeof(struct CPP)); if (src->current_filename) dst->current_filename = sdup(src->current_filename); if (src->protect_detect.macro) dst->protect_detect.macro = sdup(src->protect_detect.macro); HTT_clone(&dst->_assert.assertions, &src->_assert.assertions); HTT_clone(&dst->_macro.macros, &src->_macro.macros); HTT_clone(&dst->_cpp.found_files, &src->_cpp.found_files); HTT_clone(&dst->_cpp.found_files_sys, &src->_cpp.found_files_sys); HTT_scan_arg(&dst->_cpp.found_files_sys, update_ffs_pointer, &dst->_cpp.found_files); if (src->current_long_filename) dst->current_long_filename = HASH_ITEM_NAME(HTT_get(&dst->_cpp.found_files, src->current_long_filename)); if (src->protect_detect.ff) dst->protect_detect.ff = HTT_get(&dst->_cpp.found_files, HASH_ITEM_NAME(src->protect_detect.ff)); dst->_cpp.include_path_nb = 0; for (i = 0; i < src->_cpp.include_path_nb; i ++) aol(dst->_cpp.include_path, dst->_cpp.include_path_nb, sdup(src->_cpp.include_path[i]), INCPATH_MEMG); dst->_lexer.sm = clone_cppm(src->_lexer.sm); init_buf_lexer_state(&dst->_global.dsharp_lexer, 0); #ifdef PRAGMA_TOKENIZE init_buf_lexer_state(&dst->_global.tokenize_lexer, 0); #endif return dst; } #endif /* UCPP_CLONE */ Convert-Binary-C-0.76/ucpp/cpp.h0000644000175000001440000002704211550664631015121 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__CPP__ #define UCPP__CPP__ /* * Uncomment the following if you want ucpp to use externally provided * error-reporting functions (ucpp_warning(), ucpp_error() and ucpp_ouch()) */ /* #define NO_UCPP_ERROR_FUNCTIONS */ /* * Tokens (do not change the order unless checking operators_name[] in cpp.c) * * It is important that the token NONE is 0 * Check the STRING_TOKEN macro */ #define CPPERR 512 enum { NONE, /* whitespace */ NEWLINE, /* newline */ COMMENT, /* comment */ NUMBER, /* number constant */ NAME, /* identifier */ BUNCH, /* non-C characters */ PRAGMA, /* a #pragma directive */ CONTEXT, /* new file or #line */ STRING, /* constant "xxx" */ CHAR, /* constant 'xxx' */ SLASH, /* / */ ASSLASH, /* /= */ MINUS, /* - */ MMINUS, /* -- */ ASMINUS, /* -= */ ARROW, /* -> */ PLUS, /* + */ PPLUS, /* ++ */ ASPLUS, /* += */ LT, /* < */ LEQ, /* <= */ LSH, /* << */ ASLSH, /* <<= */ GT, /* > */ GEQ, /* >= */ RSH, /* >> */ ASRSH, /* >>= */ ASGN, /* = */ SAME, /* == */ #ifdef CAST_OP CAST, /* => */ #endif NOT, /* ~ */ NEQ, /* != */ AND, /* & */ LAND, /* && */ ASAND, /* &= */ OR, /* | */ LOR, /* || */ ASOR, /* |= */ PCT, /* % */ ASPCT, /* %= */ STAR, /* * */ ASSTAR, /* *= */ CIRC, /* ^ */ ASCIRC, /* ^= */ LNOT, /* ! */ LBRA, /* { */ RBRA, /* } */ LBRK, /* [ */ RBRK, /* ] */ LPAR, /* ( */ RPAR, /* ) */ COMMA, /* , */ QUEST, /* ? */ SEMIC, /* ; */ COLON, /* : */ DOT, /* . */ MDOTS, /* ... */ SHARP, /* # */ DSHARP, /* ## */ OPT_NONE, /* optional space to separate tokens in text output */ DIGRAPH_TOKENS, /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ DIG_LBRK, /* <: */ DIG_RBRK, /* :> */ DIG_LBRA, /* <% */ DIG_RBRA, /* %> */ DIG_SHARP, /* %: */ DIG_DSHARP, /* %:%: */ DIGRAPH_TOKENS_END, /* digraph tokens end here */ LAST_MEANINGFUL_TOKEN, /* reserved words will go there */ MACROARG, /* special token for representing macro arguments */ UPLUS = CPPERR, /* unary + */ UMINUS /* unary - */ }; #include "tune.h" #include #include struct token { int type; long line; char *name; }; struct token_fifo { struct token *t; size_t nt, art; }; struct lexer_state { /* input control */ FILE *input; #ifndef NO_UCPP_BUF unsigned char *input_buf; #ifdef UCPP_MMAP int from_mmap; unsigned char *input_buf_sav; #endif #endif unsigned char *input_string; size_t ebuf; size_t pbuf; int lka[2]; int nlka; int macfile; int last; int discard; unsigned long utf8; #ifndef NO_UCPP_COPY_LINE unsigned char copy_line[COPY_LINE_LENGTH]; int cli; #endif /* output control */ FILE *output; struct token_fifo *output_fifo, *toplevel_of; #ifndef NO_UCPP_BUF unsigned char *output_buf; #endif size_t sbuf; /* token control */ struct token *ctok; struct token *save_ctok; size_t tknl; int ltwnl; int pending_token; #ifdef INMACRO_FLAG int inmacro; long macro_count; #endif /* lexer options */ long line; long oline; unsigned long flags; long count_trigraphs; struct garbage_fifo *gf; int ifnest; int condnest; int condcomp; int condmet; unsigned long condf[2]; }; /* * Callback argument for iterate_macros() */ struct macro_info { void *arg; const char *name; const char *definition; size_t definition_len; }; /* * Flags for iterate_macros() */ #define MI_WITH_DEFINITION 0x00000001UL /* * Flags for struct lexer_state */ /* warning flags */ #define WARN_STANDARD 0x000001UL /* emit standard warnings */ #define WARN_ANNOYING 0x000002UL /* emit annoying warnings */ #define WARN_TRIGRAPHS 0x000004UL /* warn when trigraphs are used */ #define WARN_TRIGRAPHS_MORE 0x000008UL /* extra-warn for trigraphs */ #define WARN_PRAGMA 0x000010UL /* warn for pragmas in non-lexer mode */ /* error flags */ #define FAIL_SHARP 0x000020UL /* emit errors on rogue '#' */ #define CCHARSET 0x000040UL /* emit errors on non-C characters */ /* emission flags */ #define DISCARD_COMMENTS 0x000080UL /* discard comments from text output */ #define CPLUSPLUS_COMMENTS 0x000100UL /* understand C++-like comments */ #define LINE_NUM 0x000200UL /* emit #line directives in output */ #define GCC_LINE_NUM 0x000400UL /* same as #line, with gcc-syntax */ /* language flags */ #define HANDLE_ASSERTIONS 0x000800UL /* understand assertions */ #define HANDLE_PRAGMA 0x001000UL /* emit PRAGMA tokens in lexer mode */ #define MACRO_VAARG 0x002000UL /* understand macros with '...' */ #define UTF8_SOURCE 0x004000UL /* identifiers are in UTF8 encoding */ #define HANDLE_TRIGRAPHS 0x008000UL /* handle trigraphs */ /* global ucpp behaviour */ #define LEXER 0x010000UL /* behave as a lexer */ #define KEEP_OUTPUT 0x020000UL /* emit the result of preprocessing */ #define COPY_LINE 0x040000UL /* make a copy of the parsed line */ /* internal flags */ #define READ_AGAIN 0x080000UL /* emit again the last token */ #define TEXT_OUTPUT 0x100000UL /* output text */ /* * Public function prototypes */ #include "reent.h" #ifdef UCPP_REENTRANT #define new_cpp UCPP_PUBLIC(new_cpp) #define del_cpp UCPP_PUBLIC(del_cpp) struct CPP *new_cpp(void); void del_cpp(struct CPP *); #endif /* UCPP_REENTRANT */ #ifdef UCPP_CLONE #define clone_cpp UCPP_PUBLIC(clone_cpp) struct CPP *clone_cpp(const struct CPP *); #endif /* UCPP_CLONE */ #ifndef NO_UCPP_BUF #define flush_output UCPP_PUBLIC(flush_output) void flush_output(pCPP_ struct lexer_state *); #endif #define init_assertions UCPP_PUBLIC(init_assertions) #define make_assertion UCPP_PUBLIC(make_assertion) #define destroy_assertion UCPP_PUBLIC(destroy_assertion) #define print_assertions UCPP_PUBLIC(print_assertions) void init_assertions(pCPP); int make_assertion(pCPP_ char *); int destroy_assertion(pCPP_ char *); void print_assertions(pCPP); #define init_macros UCPP_PUBLIC(init_macros) #define define_macro UCPP_PUBLIC(define_macro) #define undef_macro UCPP_PUBLIC(undef_macro) #define print_defines UCPP_PUBLIC(print_defines) #define is_macro_defined UCPP_PUBLIC(is_macro_defined) #define get_macro_definition UCPP_PUBLIC(get_macro_definition) #define free_macro_definition UCPP_PUBLIC(free_macro_definition) #define iterate_macros UCPP_PUBLIC(iterate_macros) void init_macros(pCPP); int define_macro(pCPP_ struct lexer_state *, char *); int undef_macro(pCPP_ struct lexer_state *, char *); void print_defines(pCPP); int is_macro_defined(pCPP_ const char *); char *get_macro_definition(pCPP_ const char *, size_t *); void free_macro_definition(char *); void iterate_macros(pCPP_ void (*)(const struct macro_info *), void *, unsigned long); #define set_init_filename UCPP_PUBLIC(set_init_filename) #define init_cpp UCPP_PUBLIC(init_cpp) #define init_include_path UCPP_PUBLIC(init_include_path) #define init_lexer_state UCPP_PUBLIC(init_lexer_state) #define init_lexer_mode UCPP_PUBLIC(init_lexer_mode) #define free_lexer_state UCPP_PUBLIC(free_lexer_state) #define wipeout UCPP_PUBLIC(wipeout) #define lex UCPP_PUBLIC(lex) #define check_cpp_errors UCPP_PUBLIC(check_cpp_errors) #define add_incpath UCPP_PUBLIC(add_incpath) #define init_tables UCPP_PUBLIC(init_tables) #define enter_file UCPP_PUBLIC(enter_file) #define cpp UCPP_PUBLIC(cpp) #define set_identifier_char UCPP_PUBLIC(set_identifier_char) #define unset_identifier_char UCPP_PUBLIC(unset_identifier_char) void set_init_filename(pCPP_ char *, int); void init_cpp(pCPP); void init_include_path(pCPP_ char *[]); void init_lexer_state(struct lexer_state *); void init_lexer_mode(struct lexer_state *); void free_lexer_state(struct lexer_state *); void wipeout(pCPP); int lex(pCPP_ struct lexer_state *); int check_cpp_errors(pCPP_ struct lexer_state *); void add_incpath(pCPP_ char *); void init_tables(pCPP_ int); int enter_file(pCPP_ struct lexer_state *, unsigned long); int cpp(pCPP_ struct lexer_state *); void set_identifier_char(pCPP_ int c); void unset_identifier_char(pCPP_ int c); #ifdef UCPP_MMAP #define fopen_mmap_file UCPP_PUBLIC(fopen_mmap_file) #define set_input_file UCPP_PUBLIC(set_input_file) FILE *fopen_mmap_file(pCPP_ char *); void set_input_file(pCPP_ struct lexer_state *, FILE *); #endif struct stack_context { char *long_name, *name; long line; }; #define report_context UCPP_PUBLIC(report_context) struct stack_context *report_context(pCPP); #ifndef UCPP_REENTRANT #define no_special_macros UCPP_PUBLIC(no_special_macros) #define emit_dependencies UCPP_PUBLIC(emit_dependencies) #define emit_defines UCPP_PUBLIC(emit_defines) #define emit_assertions UCPP_PUBLIC(emit_assertions) #define c99_compliant UCPP_PUBLIC(c99_compliant) #define c99_hosted UCPP_PUBLIC(c99_hosted) #define emit_output UCPP_PUBLIC(emit_output) #define current_filename UCPP_PUBLIC(current_filename) #define current_long_filename UCPP_PUBLIC(current_long_filename) extern int no_special_macros, emit_dependencies, emit_defines, emit_assertions; extern int c99_compliant, c99_hosted; extern FILE *emit_output; extern char *current_filename, *current_long_filename; #endif #define operators_name UCPP_PUBLIC(operators_name) extern char *operators_name[]; #ifndef UCPP_REENTRANT #define protect_detect UCPP_PUBLIC(protect_detect) extern struct protect { char *macro; int state; struct found_file *ff; } protect_detect; #endif #ifndef UCPP_REENTRANT #define ucpp_ouch UCPP_PUBLIC(ucpp_ouch) #define ucpp_error UCPP_PUBLIC(ucpp_error) #define ucpp_warning UCPP_PUBLIC(ucpp_warning) void ucpp_ouch(char *, ...); void ucpp_error(long, char *, ...); void ucpp_warning(long, char *, ...); #endif #ifndef UCPP_REENTRANT #define transient_characters UCPP_PUBLIC(transient_characters) extern int *transient_characters; #endif /* * Errors from CPPERR_EOF and above are not real erros, only show-stoppers. * Errors below CPPERR_EOF are real ones. */ #define CPPERR_NEST 900 #define CPPERR_EOF 1000 /* * This macro tells whether the name field of a given token type is * relevant, or not. Irrelevant name field means that it might point * to outerspace. */ #ifdef SEMPER_FIDELIS #define STRING_TOKEN(x) ((x) == NONE || ((x) >= COMMENT && (x) <= CHAR)) #else #define STRING_TOKEN(x) ((x) >= NUMBER && (x) <= CHAR) #endif #endif Convert-Binary-C-0.76/ucpp/mem.c0000644000175000001440000001611511550664631015107 0ustar mhxusers/* * Memory manipulation routines * (c) Thomas Pornin 1998 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "mem.h" #include #include #include /* * Shifting a pointer of that some bytes is supposed to satisfy * alignment requirements. This is *not* guaranteed by the standard * but should work everywhere anyway. */ #define ALIGNSHIFT (sizeof(long) > sizeof(long double) \ ? sizeof(long) : sizeof(long double)) #ifdef AUDIT void die(void) { abort(); } static void suicide(unsigned long e) { fprintf(stderr, "ouch: Schrodinger's beef is not dead ! %lx\n", e); die(); } #else void die(void) { exit(EXIT_FAILURE); } #endif #if defined AUDIT || defined MEM_CHECK || defined MEM_DEBUG /* * This function is equivalent to a malloc(), but will display an error * message and exit if the wanted memory is not available */ #ifdef MEM_DEBUG static void *getmem_raw(size_t x) #else void *(getmem)(size_t x) #endif { void *m; #ifdef AUDIT m = UCPP_MALLOC(x + ALIGNSHIFT); #else m = UCPP_MALLOC(x); #endif if (m == 0) { fprintf(stderr, "ouch: malloc() failed\n"); die(); } #ifdef AUDIT *((unsigned long *)m) = 0xdeadbeefUL; return (void *)(((char *)m) + ALIGNSHIFT); #else return m; #endif } #endif #ifndef MEM_DEBUG /* * This function is equivalent to a realloc(); if the realloc() call * fails, it will try a malloc() and a memcpy(). If not enough memory is * available, the program exits with an error message */ void *(incmem)(void *m, size_t x, size_t nx) { void *nm; #ifdef AUDIT m = (void *)(((char *)m) - ALIGNSHIFT); if (*((unsigned long *)m) != 0xdeadbeefUL) suicide(*((unsigned long *)m)); x += ALIGNSHIFT; nx += ALIGNSHIFT; #endif if (!(nm = UCPP_REALLOC(m, nx))) { if (x > nx) x = nx; nm = (getmem)(nx); memcpy(nm, m, x); /* free() and not freemem(), because of the Schrodinger beef */ UCPP_FREE(m); } #ifdef AUDIT return (void *)(((char *)nm) + ALIGNSHIFT); #else return nm; #endif } #endif #if defined AUDIT || defined MEM_DEBUG /* * This function frees the given block */ #ifdef MEM_DEBUG static void freemem_raw(void *x) #else void (freemem)(void *x) #endif { #ifdef AUDIT void *y = (void *)(((char *)x) - ALIGNSHIFT); if ((*((unsigned long *)y)) != 0xdeadbeefUL) suicide(*((unsigned long *)y)); *((unsigned long *)y) = 0xfeedbabeUL; UCPP_FREE(y); #else UCPP_FREE(x); #endif } #endif #ifdef AUDIT /* * This function copies n bytes from src to dest */ void *mmv(void *dest, const void *src, size_t n) { return memcpy(dest, src, n); } /* * This function copies n bytes from src to dest */ void *mmvwo(void *dest, const void *src, size_t n) { return memmove(dest, src, n); } #endif #ifndef MEM_DEBUG /* * This function creates a new char * and fills it with a copy of src */ char *(sdup)(const char *src) { size_t n = 1 + strlen(src); char *x = getmem(n); mmv(x, src, n); return x; } #endif #ifdef MEM_DEBUG /* * We include here special versions of getmem(), freemem() and incmem() * that track allocations and are used to detect memory leaks. * * Each allocation is referenced in a list, with a serial number. */ /* * Define "true" functions for applications that need pointers * to such functions. */ #ifndef MEM_DEBUG_NO_TRUE_FUNC void *(getmem)(size_t n) { return getmem(n); } void (freemem)(void *x) { freemem(x); } void *(incmem)(void *x, size_t s, size_t ns) { return incmem(x, s, ns); } char *(sdup)(const char *s) { return sdup(s); } #endif static long current_serial = 0L; /* must be a power of two */ #define MEMDEBUG_MEMG 128U static struct mem_track { void *block; long serial; const char *file; int line; } *mem = 0; static size_t meml = 0; static unsigned int current_ptr = 0; static void *true_incmem(void *x, size_t old_size, size_t new_size) { void * y = UCPP_REALLOC(x, new_size); if (y == 0) { y = UCPP_MALLOC(new_size); if (y == 0) { fprintf(stderr, "ouch: malloc() failed\n"); die(); } mmv(y, x, old_size < new_size ? old_size : new_size); UCPP_FREE(x); } return y; } static long find_free_block(void) { unsigned int n; size_t i; for (i = 0, n = current_ptr; i < meml; i ++) { if (mem[n].block == 0) { current_ptr = n; return n; } n = (n + 1) & (meml - 1U); } if (meml == 0) { size_t j; meml = MEMDEBUG_MEMG; mem = UCPP_MALLOC(meml * sizeof(struct mem_track)); current_ptr = 0; for (j = 0; j < meml ; j ++) mem[j].block = 0; } else { size_t j; mem = true_incmem(mem, meml * sizeof(struct mem_track), 2 * meml * sizeof(struct mem_track)); current_ptr = meml; for (j = meml; j < 2 * meml ; j ++) mem[j].block = 0; meml *= 2; } return current_ptr; } void *getmem_debug(size_t n, const char *file, int line) { void *x = getmem_raw(n + ALIGNSHIFT); long i = find_free_block(); *(long *)x = i; mem[i].block = x; mem[i].serial = current_serial ++; mem[i].file = file; mem[i].line = line; return (void *)((unsigned char *)x + ALIGNSHIFT); } void freemem_debug(void *x, const char *file, int line) { void *y = (unsigned char *)x - ALIGNSHIFT; long i = *(long *)y; if (i < 0 || (size_t)i >= meml || mem[i].block != y) { fprintf(stderr, "ouch: freeing free people (from %s:%d)\n", file, line); die(); } mem[i].block = 0; freemem_raw(y); } void *incmem_debug(void *x, size_t ol, size_t nl, const char *file, int line) { void *y = getmem_debug(nl, file, line); mmv(y, x, ol < nl ? ol : nl); freemem_debug(x, file, line); return y; } char *sdup_debug(const char *src, const char *file, int line) { size_t n = 1 + strlen(src); char *x = getmem_debug(n, file, line); mmv(x, src, n); return x; } void report_leaks(void) { size_t i; for (i = 0; i < meml; i ++) { if (mem[i].block) fprintf(stderr, "leak: serial %ld, %s:%d\n", mem[i].serial, mem[i].file, mem[i].line); } } #endif Convert-Binary-C-0.76/ucpp/mem.h0000644000175000001440000001242011550664632015110 0ustar mhxusers/* * (c) Thomas Pornin 1998 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__MEM__ #define UCPP__MEM__ #include #include "tune.h" #if !(defined(UCPP_MALLOC) && defined(UCPP_REALLOC) && defined(UCPP_FREE)) #define UCPP_MALLOC malloc #define UCPP_REALLOC realloc #define UCPP_FREE free #endif #define die UCPP_PRIVATE(die) void die(void); #if defined AUDIT || defined MEM_CHECK || defined MEM_DEBUG #define getmem UCPP_PRIVATE(getmem) void *getmem(size_t); #else #define getmem UCPP_MALLOC #endif #if defined MEM_DEBUG #define getmem_debug UCPP_PRIVATE(getmem_debug) void *getmem_debug(size_t, const char *, int); #undef getmem #define getmem(x) getmem_debug(x, __FILE__, __LINE__) #endif #if defined AUDIT || defined MEM_DEBUG #define freemem UCPP_PRIVATE(freemem) void freemem(void *); #else #define freemem UCPP_FREE #endif #if defined MEM_DEBUG #define freemem_debug UCPP_PRIVATE(freemem_debug) void freemem_debug(void *, const char *, int); #undef freemem #define freemem(x) freemem_debug(x, __FILE__, __LINE__) #endif #define incmem UCPP_PRIVATE(incmem) #define sdup UCPP_PRIVATE(sdup) void *incmem(void *, size_t, size_t); char *sdup(const char *); #if defined MEM_DEBUG #define incmem_debug UCPP_PRIVATE(incmem_debug) #define report_leaks UCPP_PRIVATE(report_leaks) #define sdup_debug UCPP_PRIVATE(sdup_debug) void *incmem_debug(void *, size_t, size_t, const char *, int); #undef incmem #define incmem(x, y, z) incmem_debug(x, y, z, __FILE__, __LINE__) void report_leaks(void); char *sdup_debug(const char *, const char *, int); #undef sdup #define sdup(x) sdup_debug(x, __FILE__, __LINE__) #endif #ifdef AUDIT #define mmv UCPP_PRIVATE(mmv) #define mmvwo UCPP_PRIVATE(mmvwo) void *mmv(void *, const void *, size_t); void *mmvwo(void *, const void *, size_t); #else #define mmv memcpy #define mmvwo memmove #endif /* * this macro adds the object obj at the end of the array list, handling * memory allocation when needed; ptr contains the number of elements in * the array, and memg is the granularity of memory allocations (a power * of 2 is recommanded, for optimization reasons). * * list and ptr may be updated, and thus need to be lvalues. */ #define aol(list, ptr, obj, memg) do { \ if (((ptr) % (memg)) == 0) { \ if ((ptr) != 0) { \ (list) = incmem((list), (ptr) * sizeof(obj), \ ((ptr) + (memg)) * sizeof(obj)); \ } else { \ (list) = getmem((memg) * sizeof(obj)); \ } \ } \ (list)[(ptr) ++] = (obj); \ } while (0) /* * bol() does the same as aol(), but adds the new item at the beginning * of the list; beware, the computational cost is greater. */ #define bol(list, ptr, obj, memg) do { \ if (((ptr) % (memg)) == 0) { \ if ((ptr) != 0) { \ (list) = incmem((list), (ptr) * sizeof(obj), \ ((ptr) + (memg)) * sizeof(obj)); \ } else { \ (list) = getmem((memg) * sizeof(obj)); \ } \ } \ if ((ptr) != 0) \ mmvwo((list) + 1, (list), (ptr) * sizeof(obj)); \ (ptr) ++; \ (list)[0] = (obj); \ } while (0) /* * mbol() does the same as bol(), but adds the new item at the given * emplacement; bol() is equivalent to mbol with 0 as last argument. */ #define mbol(list, ptr, obj, memg, n) do { \ if (((ptr) % (memg)) == 0) { \ if ((ptr) != 0) { \ (list) = incmem((list), (ptr) * sizeof(obj), \ ((ptr) + (memg)) * sizeof(obj)); \ } else { \ (list) = getmem((memg) * sizeof(obj)); \ } \ } \ if ((ptr) > n) \ mmvwo((list) + n + 1, (list) + n, \ ((ptr) - n) * sizeof(obj)); \ (ptr) ++; \ (list)[n] = (obj); \ } while (0) /* * this macro adds the object obj at the end of the array list, doubling * the size of list when needed; as for aol(), ptr and list must be * lvalues, and so must be llng */ #define wan(list, ptr, obj, llng) do { \ if ((ptr) == (llng)) { \ (llng) += (llng); \ (list) = incmem((list), (ptr) * sizeof(obj), \ (llng) * sizeof(obj)); \ } \ (list)[(ptr) ++] = (obj); \ } while (0) #endif Convert-Binary-C-0.76/ucpp/README0000644000175000001440000011653011550664631015047 0ustar mhxusersucpp-1.3 is a C preprocessor compliant to ISO-C99. Author: Thomas Pornin Main site: http://pornin.nerim.net/ucpp/ INTRODUCTION ------------ A C preprocessor is a part of a C compiler responsible for macro replacement, conditional compilation and inclusion of header files. It is often found as a stand-alone program on Unix systems. ucpp is such a preprocessor; it is designed to be quick and light, but anyway fully compliant to the ISO standard 9899:1999, also known as C99. ucpp can be compiled as a stand-alone program, or linked to some other code; in the latter case, ucpp will output tokens, one at a time, on demand, as an integrated lexer. ucpp operates in two modes: -- lexer mode: ucpp is linked to some other code and outputs a stream of tokens (each call to the lex() function will yield one token) -- non-lexer mode: ucpp preprocesses text and outputs the resulting text to a file descriptor; if linked to some other code, the cpp() function must be called repeatedly, otherwise ucpp is a stand-alone binary. INSTALLATION ------------ 1. Uncompress the archive file and extract the source files. 2. Edit tune.h. Here is a short explanation of compile-time options: LOW_MEM Enable memory-saving functions; this is for low-end and old systems, but seems to be good for larger systems too. Keep it. NO_LIBC_BUF NO_UCPP_BUF Two options used to disable the two bufferings inside ucpp. Define both options for maximum memory savings but you will probably want to keep libc buffering for decent performance. Define none on large systems (modern 32 or 64-bit systems). UCPP_MMAP With this option, if ucpp internal buffering is active, ucpp will try to mmap() the input files. This might yield a slight performance improvement, but will work only on a limited set of architectures. PRAGMA_TOKENIZE Make ucpp generate tokenized PRAGMA tokens on #pragma and _Pragma(); tokenization is made this way: tokens are assembled as a null terminated array of unsigned chars; if a token has a string value (as defined by the STRING_TOKEN macro), the value follows the token, terminated by PRAGMA_TOKEN_END (by default, a newline character cast to unsigned char). Whitespace tokens are skipped. The "name" value of the PRAGMA token is a pointer to that array. This setting is irrelevant in non-lexer mode. PRAGMA_DUMP In non-lexer mode, keep #pragma in output; non-void _Pragma() are translated to the equivalent #pragma. Irrelevant in lexer mode. NO_PRAGMA_IN_DIRECTIVE Do not evaluate _Pragma() inside #if, #include, #include_next and #line directives; instead, emit an error (since the remaining _Pragma will surely imply a syntax error). DSHARP_TOKEN_MERGE When two tokens are to be merged with the `##' operator, but fail because they do not merge into a single valid token, ucpp keeps those two tokens separate by adding an extra space between them in text output. With this option on, that extra space is not added, which means that some tokens may merge partially if the text output is preprocessed again. See tune.h for details. INMACRO_FLAG In lexer mode, set the inmacro flag to 1 if the current token comes from a macro replacement, 0 otherwise. macro_count maintains an increasing counter of such replacements. CONTEXT tokens count as one macro replacement each. #pragma, and _Pragma() that do not come from a macro replacement, also count as one macro replacement each. This setting is irrelevant in non-lexer mode. STD_INCLUDE_PATH Default include path in stand-alone ucpp. STD_MACROS Default predefined macros in stand-alone ucpp. STD_ASSERT Default assertions in stand-alone ucpp. NATIVE_SIGNED NATIVE_UNSIGNED NATIVE_UNSIGNED_BITS NATIVE_SIGNED_MIN NATIVE_SIGNED_MAX SIMUL_ARITH_SUBTYPE SIMUL_SUBTYPE_BITS SIMUL_NUMBITS WCHAR_SIGNEDNESS Those options define how #if expressions are evaluated; see the cross-compilation section of this file for more info, and the comments in tune.h. Extra info is found in arith.h and arith.c, at the possible expense of your mental health. DEFAULT_LEXER_FLAGS DEFAULT_CPP_FLAGS Default flags in respectively lexer and non-lexer modes. POSIX_JMP Define this if your architecture defines sigsetjmp() and siglongjmp(); it is known to (very slightly) improve performance on AIX systems. MAX_CHAR_VAL ucpp will consider characters whose value is equal or above MAX_CHAR_VAL as outside the C source charset (so they will be treated just like '@', for instance). For ASCII systems, 128 is fine. 256 is a safer value, but uses more (static) memory. For performance reasons, use a power of two. If MAX_CHAR_VAL is correctly adjusted, ucpp should be compatible with any character set. UNBREAKABLE_SPACE If you want an extra-whitespace character, define this macro to that character. For instance, define this to 160 on an ISO-8859-1 system if you want the 'unbreakable space' to be considered as whitespace. SEMPER_FIDELIS With this option set, ucpp, when used as a lexer, will pass whitespace tokens to its caller, and those tokens will have their true content; this is intended for reconstruction of the source line. Beware that some comments may have embedded newlines. COPY_LINE_LENGTH ucpp can maintain a copy of the current source line, up to that length. Irrelevant to stand-alone version. *_MEMG Those settings modify ucpp behaviour, wrt memory allocations. With higher values, ucpp will perform less malloc() calls and will run faster, but it will use more memory. Reduce INPUT_BUF_MEMG and OUTPUT_BUF_MEMG on low-memory systems, if you kept ucpp buffering (see NO_UCPP_BUF option). 3. Edit the Makefile. You should define the variables CC and FLAGS; there are the following options: -DAUDIT Enable internal sanity checks; this slows down a bit ucpp. Do not define unless you plan to debug ucpp. -DMEM_CHECK With this setting, ucpp will check for the return value of malloc() and exit with a diagnostic when out of memory. MEM_CHECK is implied by AUDIT. -DMEM_DEBUG Enable memory debug code. This will track memory leaks and several occurrences of memory management errors; it will also slow down things and increase memory consumption, so you probably do not want to use this option. -DINLINE=foobar The ucpp code uses "inline" qualifier for some functions; by default, that qualifier is macro-replaced with nothing. Define INLINE to the correct replacement for your compiler, if supported. Note that all "inline" functions in ucpp are also "static". For any C99-compliant compiler, the GNU compiler (gcc), and the Compaq C compiler under Linux/Alpha, no -DINLINE is needed (see tune.h for details). 4. Compile by typing "make". This should produce the ucpp executable file. You might see some warning messages, especially with gcc: gcc believes some variables might be used prior to their initialization; ignore those messages. 5. Install wherever you want the binary and the man page ucpp.1. I have not provided an install sequence because I didn't bother. 6. If you do not have the make utility, compile each file separately and link them together. The exact details depend on your compiler. You must define the macro STAND_ALONE when compiling cpp.c (there is such a definition, commented out, in cpp.c, line 34). There is no "configure" script because: -- I do not like the very idea of a "configure" script. -- ucpp is written in ANSI-C and should be fairly portable. -- There is no such thing as "standard" settings for a C preprocessor. The predefined system macros, standard assertions,... must be tuned by the sysadmin. -- The primary goal of ucpp is to be included in compilers. The stand-alone version is mainly a debugging tool. Please note that you need an ISO-C90 (formerly ANSI) C compiler suite (including the standard library) to compile ucpp. If your compiler is not C99 (or later), read the cross-compilation section in this README file. The C90 and C99 standards state that external linkage names might be considered equal or different based upon only their first 6 characters; this rule might make ucpp not compile on a conformant C implementation. I have yet to see such an implementation, however. If you want to use ucpp as an integrated preprocessor and lexer, see the section REUSE. Compiling ucpp as a library is an exercise left to the reader. With the LOW_MEM code enabled, ucpp can run on a Minix-i86 or Msdos 16-bit small-memory-model machine. It will not be fully compliant on such an architecture to C99, since C99 states that at least one source code with 4095 simultaneously defined macros must be processed; ucpp will be limited to about 1500 macros (at most) due to memory restrictions. At least ucpp can preprocess its own code in these conditions. LOW_MEM is on by default because it seems to improve performance on large systems. LICENSE ------- The copyright notice and license is at the beginning of the Makefile and each source file. It is basically a BSD license, without the advertising subclause (which BSD dropped recently anyway) and with no reference to Berkeley (since the code is all mine, written from scratch). Informally, this means that you can reuse and redistribute the code as you want, provided that you state in the documentation (or any substantial part of the software) of redistributed code that I am the original author. (If you press a cdrom with 200 software packages, I do not insist on having my name on the cover of the cdrom -- just keep a Readme file somewhere on the cdrom, with the copyright notice included.) As a courteous gesture, if you reuse my code, please drop me a mail. It raises my self-esteem. REUSE ----- The code has been thought as part of a bigger project; it might be used as an integrated lexer, that will read files, process them as a C preprocessor, and output a stream of C tokens. To include this code into a project, compile with STAND_ALONE undefined. To use the preprocessor and lexer, several steps should be performed. See the file 'sample.c' for an example. 1. call init_cpp(). This function initializes the lexer automaton. 2. set the following global variables: no_special_macros non-zero if the special macros (__FILE__ and others) should not be defined. This is a global flag since it affects the redefinition of such macros (which are allowed if the special macros are not defined) c99_compliant if non-zero, define __STDC_VERSION__ to 199901L; this is the default; otherwise, do not define __STDC_VERSION__. Note that ucpp will accept to undefine __STDC_VERSION__ with a #undef directive. c99_hosted if strictly positive, define __STDC_HOSTED__ to 1. If zero, define __STDC_HOSTED__ to 0. If negative, do not define __STDC_HOSTED__. The default is 1. emit_defines and emit_assertions should be set to 0 for the step 3. 3. call init_tables(). This function initializes the macro table and other things; it will intialize assertions if it has a non-zero argument. 4. call init_include_path(). This function will reset the include path to the list of paths given as argument. 5. set the following global variables emit_dependencies set to 1 if dependencies should be emitted during preprocessing set to 2 if dependencies should also be emitted for system include files emit_defines set to non-zero if #define macro definitions should be emitted when macros are defined emit_assertions set to non-zero if #define macro definitions should be emitted when macros are defined emit_output the FILE * where the above items are sent if one of the three emit_ variables is set to non zero transient_characters this is for some cross-compilation; see the relevant part in this README file for details 6. call set_init_filename() with the initial filename as argument; the second argument indicates whether the filename is real or conventional ("real" means "an fopen() on it will work"). 7. initialize your struct lexer_state: call init_lexer_state() call init_lexer_mode() if the preprocessor is supposed to output a list of tokens, otherwise set the flags field to DEFAULT_CPP_FLAGS and set the output field to the FILE * where output should be sent (init_lexer_mode(), if called at all, must be called after init_lexer_state()) adjust the flags field; here is the meaning of flags: WARN_STANDARD emit the standard warnings WARN_ANNOYING emit the useless and annoying warnings WARN_TRIGRAPHS count trigraphs encountered; it is up to the caller to emit a warning if some trigraphs were indeed encountered; the count is stored in the count_trigraphs field of the struct lexer_state WARN_TRIGRAPHS_MORE emit a warning for each trigraph encountered WARN_PRAGMA emit a warning for each non-void _Pragma encountered in non-lexer mode (because these are dumped as #pragma in the output) and for each #pragma too, if ucpp was compiled without PRAGMA_DUMP FAIL_SHARP emit errors on '#' tokens beginning a line and not followed by a valid cpp directive CCHARSET emit errors when non-C characters are encountered; if this flag is not set, each non-C character will be considered as a BUNCH token (since C99 states that non-C characters are allowed as long as they "disappear" during preprocessing [through macro replacement and stringification for instance], this flag must not be set, for maximum C99 compliance) DISCARD_COMMENTS do not keep comments in output (irrelevant in lexer mode) CPLUSPLUS_COMMENTS understand new style comments (//) (mandatory for C99) LINE_NUM emit #line directives when entering a file, if not in lexer mode; emit CONTEXT token in lexer mode for #line and new files GCC_LINE_NUM if LINE_NUM is set, emit gcc-like directives instead of #line HANDLE_ASSERTIONS understand assertions in #if expressions (and #assert, #unassert) HANDLE_PRAGMA make PRAGMA tokens for #pragma; irrelevant in non-lexer mode (handling of some pragmas is required in C99 but is not of the competence of the preprocessor; without this flag, ucpp will ignore the contents of #pragma and _Pragma directives) MACRO_VAARG understand macros with a variable number of arguments (mandatory for C99) UTF8_SOURCE understand UTF-8 encoding: multibyte characters are considered equivalent to letters as far as syntax is concerned (they can be used in identifiers) LEXER act as a lexer, outputting tokens TEXT_OUTPUT this flag should be set to 0 if ucpp works as a lexer, 1 otherwise. It is somehow redundant with the LEXER flag, but the presence of those two different flags is needed in ucpp. KEEP_OUTPUT in non-lexer mode, emit the result of preprocessing COPY_LINE maintain a copy of the last read line in the copy_line field of the struct lexer_state ; see below for how to use this buffer HANDLE_TRIGRAPHS understand trigraphs, such as ??/ for \. This option should be set by default, except for some legacy code. There are other flags, but they are for private usage of ucpp. 8. adjust the input field in the lexer_state to the FILE * from where source file is read. If you use the UCPP_MMAP compile-time option, and your input file is eligible to mmap(), then you can call fopen_mmap_file() to open it, then set_input_file() to set ls->input and some other internal options. Do not call set_input_file() unless you just called fopen_mmap_file() just before on the same file. 9. call add_incpath() to add an include path, define_macro() and undef_macro() to add or remove macros, make_assertion() and destroy_assertion() to add or remove assertions. 10. call enter_file() (this is needed only in non-lexer mode, or if LINE_NUM is set). Afterwards: -- if you are in lexer mode, call lex(); each call will make the ctok field point to the next token. A non-zero return value is an error. lex() skips whitespace tokens. The memory used by the string value of some tokens (identifiers, numbers...) is automatically freed, so copy the contents of each such token if you want to keep it (tokens with a string content are identified by the STRING_TOKEN macro applied to their type). When lex() returned a non-zero value: if it is CPPERR_EOF, then end-of-input was reached. Otherwise, it is a genuine error and ls->ctok is an undefined token; skip it and call lex() again to ignore the error. -- otherwise, call cpp(); each call will analyze one or more tokens (one token if it did find neither a cpp directive nor a macro name). A positive return value is an error. For both functions, if the return value is CPPERR_EOF (which is a strictly positive value), then it means that the end of file was reached. Call check_cpp_errors() after end of file for pending errors (unfinished #if constructions for instance). In non-lexer mode, call flush_output(). In the struct lexer_state, the following fields might be read: line the current input line number oline the current output line number (in non-lexer mode) flags the flags described above count_trigraphs the number of trigraphs encountered inmacro the current token comes from a macro macro_count the current macro counter "flags" is an unsigned long and might be modified; the three others are of long type. To perform another preprocessing: use free_lexer_state() to release memory used by the buffers referenced in lexer_state, and go back to step 2. The different tables (macros, assertions...) should be reset to their respective initial contents. There is also the wipeout() function: when called, it should release (almost) all memory blocks allocated dynamically. After a wipeout(), ucpp should be back to its state at step 2 (init_cpp() initializes only static tables, that are never freed nor modified afterwards). The COPY_LINE buffer: the struct lexer_state contains two interesting fields, copy_line[] and cli. If the COPY_LINE flag is on, each read line is stored in this buffer, up to (at most) COPY_LINE_LENGTH - 1 characters (COPY_LINE_LENGTH is defined in tune.h). The last character of the buffer is always a zero, and if the line was read entirely, it is zero terminated; the trailing newline is not included. The purpose of this buffer is error-reporting. When an error occurs (cpp() returns a strictly positive value, or lex() returns a non-zero value), if your struct lexer_state is called ls, use this code: if (ls.cli != 0) ls.copy_line[ls.cli] = 0; This will add a trailing 0 if the line was not read entirely. You can disable the COPY_LINE buffer by defining NO_UCPP_COPY_LINE (in tune.h, for example). This will make the code slightly faster. ucpp may be configured at runtime to accept alternate characters as possible parts of identifiers. Typical intended usage is for the '$' and '@' characters. The two relevant functions are set_identifier_char() and unset_identifier_char(). When this call is issued: set_identifier_char('$'); then for all the remaining input, the '$' character will be considered as just another letter, as far as identifier tokenizing is concerned. This is for identifiers only; numeric constants are not modified by that setting. This call resets things back: unset_identifier_char('$'); Those two functions modify the static table which is initialized by init_cpp(). You may call init_cpp() at any time to restore the table to its standard state. When using this feature, take care of the following points: -- Do NOT use a character whose numeric value (as an `unsigned char' cast into an `int') is greater than or equal to MAX_CHAR_VAL (in tune.h). This would lead to unpredictable results, including an abrupt crash of ucpp. ucpp makes absolutely no check whatsoever on that matter: this is the programmer's responsibility. -- If you use a standard character such as '+' or '{', tokens which begin with those characters cease to exist. This can be troublesome. If you use set_identifier_char() on the '<' character, the handling of #include directives will be greatly disturbed. Therefore the use of any standard C character in set_identifier_char() of unset_identifier_char() is declared unsupported, forbidden and altogether unwise. -- Stricto sensu, when an extra character is declared as part of an identifier, ucpp behaviour cease to conform to C99, which mandates that characters such as '$' or '@' must be treated as independant tokens of their own. Therefore, if your purpose is to use ucpp in a conformant C implementation, the use of set_identifier_char() should be made at least a runtime option. -- When enabling a new character in the middle of a macro replacement, the effect of that replacement may be delayed up to the end of that macro (but this is a "may" !). If you wish to trigger this feature with a custom #pragma or _Pragma(), you should remember it (for instance, usine _Pragma() in a macro replacement, and then the extra character in the same macro replacement, is not reliable). REENTRANT API ------------- You can build ucpp with UCPP_REENTRANT defined if you plan to use the ucpp lexer in a multithreaded application. See the file 'sample_r.c' for an example. When using the reentrant API, you can create multiple preprocessor objects. A new object is created using new_cpp(). It should finally be destroyed using del_cpp(). Furthermore, most API functions expect a pointer to valid preprocessor object as their first argument. These functions are: add_incpath() check_cpp_errors() cpp() destroy_assertion() enter_file() flush_output() fopen_mmap_file() init_assertions() init_cpp() init_include_path() init_tables() define_macro() undef_macro() lex() make_assertion() print_assertions() report_context() set_identifier_char() set_init_filename() set_input_file() unset_identifier_char() init_macros() print_defines() is_macro_defined() get_macro_definition() iterate_macros() wipeout() Additionally, ucpp_ouch(), ucpp_error() and ucpp_warning() are no longer global functions. They can also be defined separately for each preprocessor object: struct CPP cpp; cpp = new_cpp(); cpp->ucpp_ouch = my_ouch_func; /* ... */ del_cpp(cpp); Each of these functions receives a pointer to the corresponding preprocessor object as its first parameter. There is also a callback_arg member defined in the preprocessor object structure which can be used to pass an additional pointer to the callback function. If you additionally define UCPP_CLONE, you can also clone an existing preprocessor object: clone = clone_cpp(original); The cloned object will be identical to the original object, except for its internal lexer states, which means you cannot clone a preprocessor object while it is preprocessing source code. COMPATIBILITY NOTES ------------------- The C language has a lengthening history. Nowadays, C comes in three flavours: -- Traditional C, aka "K&R". This is the language first described by Brian Kernighan and Dennis Ritchie, and implemented in the first C compiler that was ever coded. There are actually several dialects of K&R, and all of them are considered deprecated. -- ISO 9899:1990, aka C90, aka C89, aka ANSI-C. Formalized by ANSI in 1989 and adopted by ISO the next year, it is the C flavour many C compilers understand. It is mostly backward compatible with K&R C, but with enhancements, clarifications and several new features. -- ISO 9899:1999, aka C99. This is an evolution on C90, almost fully backward compatible with C90. C99 introduces many new and useful features, however, including in the preprocessor. There was also a normative addendum in 1995, that added a few features to C90 (for instance, digraphs) that are also present in C99. It is sometimes refered to as "C95" or "AMD 1". ucpp implements the C99 standard, but can be used in a stricter mode, to enforce C90 compatibility (it will, however, still recognize some constructions that are not in plain C90). ucpp also knows about several extensions to C99: -- Assertions: this is an extension to the defined() operator, with its own namespace. Assertions seem to be used in several places, therefore ucpp knows about them. It is recommended to enable assertions by default on Solaris systems. -- Unicode: the C99 norm specifies that extended characters, from the ISO-10646 charset (aka "unicode") can be used in identifiers with the notations \u and \U. ucpp also accepts (with the proper flag) the UTF-8 encoding in the source file for such characters. -- #include_next directive: it works as a #include, but will look for files only in the directories specified in the include path after the one the current file was found. This is a GNU-ism that is useful for writing transparent wrappers around header files. Assertions and unicode are activated by specific flags; the #include_next support is always active. The ucpp code itself should be compatible with any ISO-C90 compiler. The cpp.c file is rather big (~ 64kB), it might confuse old 16-bit C compilers; the macro.c file is somewhat large also (~ 47kB). The evaluation of #if expressions is subject to some subtleties, see the section "cross-compilation". The lexer code makes no assumption about the source character set, but the following: source characters (those which have a syntactic value in C; comment and string literal contents are not concerned) must have a strictly positive value that is strictly lower than MAX_CHAR_VAL. The strict positivity is already assured by the C standard, so you just need to adjust MAX_CHAR_VAL. ucpp has been tested succesfully on ASCII/ISO-8859-1 and EBCDIC systems. Beware that UTF-8 is NOT compatible with EBCDIC. Pragma handling: when used in non-lexer mode, ucpp tries to output a source text that, when read again, will yield the exact same stream of tokens. This is not completely true with regards to line numbering in some tricky macro replacements, but it should work correctly otherwise, especially with pragma directives if the compile-time option PRAGMA_DUMP was set: #pragma are dumped, non-void _Pragma() are converted to the corresponding #pragma and dumped also. ucpp does not macro-replace the contents of #pragma and _Pragma(); If you want a macro-replaced pragma, use this: #define pragma_(x) _Pragma(#x) #define pragma(x) pragma_(x) Anyway, pragmas do not nest (an _Pragma() cannot be evaluated if it is inside a #pragma or another _Pragma). I wrote ucpp according to what is found in "The C Programming Language" from Brian Kernighan and Dennis Ritchie (2nd edition) and the C99 standard; but I could have misinterpreted some points. On some tricky points I got help from the helpful people from the comp.std.c newsgroup. For assertions and #include_next, I mimicked the behaviour of GNU cpp, as is stated in the GNU cpp info documentation. An open question is related to the following code: #define undefined ! #define makeun(x) un ## x #if makeun(defined foo) qux #else bar #endif ucpp will replace 'defined foo' with 0 first (since foo is not defined), then it will replace the macro makeun, and the expression will become 'un0', which is replaced by 0 since this is a remaining identifier. The expression evaluates to false, and 'bar' is emitted. However, some other preprocessors will replace makeun first, considering that it is not part of a 'defined' operator application; this will produce the macro 'undefined', which is replaced, and the expression becomes '!foo'. 'foo' is replaced by 0, the expression evaluates to true, and 'qux' is emitted. My opinion is that the behaviour is undefined, because use of the 'defined' operator does not match an allowed form prior to macro replacement (I mean, its syntax matches, but its use is reconverted to inexistant and therefore is not anymore matching). Other people think that the behaviour is well-specified, and contrary to what ucpp does. The only thing clear to me is that the wording of the standard (paragraph 6.10.1.3) is unclear. Since the ucpp behaviour makes ucpp code simpler and cleaner, and that it is unlikely that any real-life code would ever be disturbed by that interpretation of the standard, ucpp will keep its current behaviour until convincing evidence of my misinterpretation of the standard is given to me. The problem can only occur if one uses ## to make a 'defined' operator disappear from a #if expression (everybody agrees that the generation of a 'defined' operator triggers undefined behaviour). Another point about macro replacement has been discussed at length in several occasions. It is about the following code: #define CAT(a, b) CAT_(a, b) #define CAT_(a, b) a ## b #define AB(x, y) CAT(x, y) CAT(A, B)(X, Y) ucpp will produce `CAT(X,Y)' as replacement for the last line, whereas some other preprocessors output `XY'. The answer to the question "which behaviour is correct" seems to be "this is not defined by the C standard". It is the answer that has been actually given by the C standardization committee in 1992, to the defect report #017, question 23, which asked that very same question. Since the wording of the standard has not changed in these parts from the 1990 to the 1999 version, the preprocessor behaviour on the above-stated code should still be considered as undefined. It seems, however, that there used to be a time (around 1988) when the committee members agreed upon a precise macro-replacement algorithm, which specified quite clearly the preprocessor behaviour in such situation. ucpp behaviour is occasionnaly claimed as "incorrect" with regards to that algorithm. Since that macro replacement algorithm has never been published, and the committee itself backed out from it in 1992, I decided to disregard those feeble claims. It is possible, however, that at some point in the future I rewrite the ucpp macro replacement code, since that code is a bit messy and might be made to use less memory in some occasions. It is then possible that, in the aftermath of such a rewrite, the ucpp behaviour for the above stated code become tunable. Don't hold your breath, though. About _Pragma: the standard is not clear about when this operator is evaluated, and if it is allowed inside #if directives and such. For ucpp, I coded _Pragma as a special macro with lazy replacement: it will be evaluated wherever a macro could be replaced, and only at the end of the macro replacement (for practical purposes, _Pragma can be considered as a macro taking one argument, and being replaced by nothing, except for some tricky uses of the # and ## operators). This means that, by default, ucpp will evaluate _Pragma inside some directives (mainly, #if, #include, #include_next and #line), but it can be taught not to do so by defining NO_PRAGMA_IN_DIRECTIVE in tune.h. CROSS-COMPILATION ----------------- If compiled with a C99 development suite, ucpp should be fully C99-compliant on the host platform (up to my own understanding of the standard -- remember that this software is distributed as-is, without any guarantee). However, if a pre-C99 compiler is used, or if the target machine is not the host machine (for instance when you build a cross-compiler), the evaluation of #if expressions is subject to some cross-compiling issues: -- character constants: when evaluating expressions, character constants are interpreted in the source character set context; this is allowed by the standard but this can lead to problems with code that expects this interpretation to match the one made in the C code. To ease cross-compilation, you can define a conversion array, and make the global variable transient_characters point to it. The array should contain 256 int; transient_characters[x] is the value of the character whose value is x in the source character set. This facility is provided for inclusion of ucpp inside another code; if you want a stand-alone ucpp with that conversion, hard-code the conversion table into eval.c and make transient_characters[] statically point to it. Alternatively, you could provide an option syntax to provide such a table on command-line, if you feel like it. -- wide character constants signedness: by default, ucpp makes wide characters as signed as what plain chars are on the build host. To force wide character constant signedness, define WCHAR_SIGNEDNESS to 0 (for unsigned) or 1 (for signed). Beware, however, that "native" wide character constants, even signed, are considered positive. Non-wide character constants are, according to the C99 standard, of type int, and therefore always signed. -- evaluation type: C90 states that all constants in #if expressions are considered as either long or unsigned long, and that the evaluation is performed with operands of that size. In C99, the situation is equivalent, except that the types used are intmax_t and uintmax_t, as defined in . ucpp can use two expression evaluators: one uses native integer types (one signed and one unsigned), the other evaluator emulates big integer numbers by representing them with two values of some unsigned type. The emulated type handles signed values in two's complement representation, and can be any width ranging from 2 bits to twice the size of the underlying native unsigned type used. An odd width is allowed. When right shifting an emulated signed negative value, it is left-padded with bits set to 1 (this is sign extension). When the ARITHMETIC_CHECKS macro is defined in tune.h, all occurrences of implementation-defined or undefined behaviour during arithmetic evaluation are reported as errors or warned upon. This includes all overflows and underflows on signed quantities, constants too large, and so on. Errors (which terminate immediately evaluation) are emitted for division by 0 (on / and % operators) and overflow (on / operator); otherwise, warnings are emitted and the faulty evaluation takes place. This prevents ucpp from crashing on typical x86 machines, while still allowing to use some extensions. FUTURE EVOLUTIONS ----------------- ucpp is quite complete now. There was a longstanding project of "traditional" preprocessing, but I dropped it because it would not map cleanly on the token-based ucpp structure. Maybe I will code a string-based preprocessor one day; it would certainly use some of the code from lexer.c, eval.c, mem.c and nhash.c. However, making such a tool is almost irrelevant nowadays. If one wants to handle such project, using ucpp as code base, I would happily provide some help, if needed. CHANGES ------- From 1.2 to 1.3: * brand new integer evaluation code, with precise evaluation and checks * new hash table implementation, with binary trees * relaxed attitude on failed `##' operators * bugfix on macro definition on command-line wrt nesting macros * support for up to 32766 macro arguments in LOW_MEM code * support for optional additional "identifier" characters such as '$' or '@' From 1.1 to 1.2: * bugfix: numerous memory leaks * new function: wipeout(); this should release all malloc() blocks * bugfix: missing "newline" and trailing "context" tokens * improved included files name caching * included memory leak detection code From 1.0 to 1.1: * bugfix: missing newline when exiting from a non-newline-terminated file * bugfix: crash when resetting due to definition of the _Pragma pseudo-macro * bugfix: handling of additional "optional" whitespace with SEMPER_FIDELIS * improved handling of unreplaced arg macros wrt output line * tricky handling of utterly tricky #include * bugfix: spurious token `~=' eliminated From 0.9 to 1.0: * bugfix: crash after erroneous #assert * changed ERR_SHARP to FAIL_SHARP, EMUL_UINTMAX to SIMUL_UINTMAX * made "inline" default on gcc and DEC ccc (Linux/Alpha) * semantic of -I is now Unix-like (added directories are looked first) * added -J flag (to add include directories after the system ones) * cleaned up non-ascii issues * bugfix: missing brace in no-LOW_MEM code * bugfix: argument number check in variadic macros * bugfix: crash in non-lexer mode after some cases of unreplaced macro * bugfix: _Pragma() handling wrt # and ## * made evaluation of _Pragma() optional in #if, #include and #line * bugfix: re-dump of multiline #pragma * added the inmacro and macro_count flags * added mmap() support * added option to retain whitespace content in lexer mode From 0.8 to 0.9: * added check for division by 0 in #if evaluation * added check for non-standard line numbers * added check for trailing garbage in most directives * corrected signedness of char constants (always int, therefore always signed) * made LOW_MEM code, so that ucpp runs smoothly on low memory architectures * multiple bugfixes (using the GNU cpp testsuite) * added handling of _Pragma (as a macro) * added tokenization of pragma directives * added conservation of pragma directives in text output * produced Msdos 16-bit small memory model executable * produced Minix-86 executable From 0.7 to 0.8: * added some support for Amiga systems * fixed extra spacing in stringified tokens * fixed bug related to %:% and tolerated rogue sharps * namespace cleanup * bugfix for macro redefinition * added warning for evaluated comma operators in #if (ISO requirement) * -Dfoo now defines foo with content 1 (and not void content) * trigraphs can be disabled (for incorrect but legacy code) * fixed semantics for #include "file" (local directory) * fixed detection of protected files * produced a Msdos 16-bit executable From 0.6 to 0.7: * officially changed the goal to full C99 compliance * added the CONTEXT token and let NEWLINE tokens go * added report_context() for error reporting * enforced matching of #if/#endif (file-global nesting level = 0) * added support of C99 digraphs * added UTF-8 encoding support * added universal character names * rewrote #if expressions (sizes fixed, bignum, signed/unsigned fixed) * fixed incomplete evaluation of #if expressions * added transient_characters[] From 0.5 to 0.6: * disappearance of error_nonl() * added extra optional warnings for trigraphs * some bugfixes, especially in lexer mode * handled MacIntosh files correctly From 0.4 to 0.5: * nicer #pragma handling (a token can be emitted) * bugfix in lexer mode after #line and #error * sample.c an example of code linked with ucpp * made #if expressions conforming to standard signed/unsigned handling * added the copy_line[] buffer feature From 0.3 to 0.4: * relaxed interpretation of '#include foo' when foo ends up, after macro substitution, with a '' content * corrected the 'double-dot' bug * corrected two bugs related to the treatment of macro aborted calls (due to lack of arguments) * some namespaces cleanup, to ease integration into other code * documented the way to include ucpp into another program * made newlines embedded into strings illegal (and reported as such) From 0.2 to 0.3: * added support for system predefined macros * made several bugfixes * checked C99 compliance for most of the features * ucpp now accepts non-C characters on standard when used stand-alone * removed many useless spaces in the output From 0.1 to 0.2: * added support for assertions * added support for macros with variable arguments * split the pharaonic cpp.c file into many * made several bugfixes * relaxed the behaviour with regards to the void arguments * made C++-like comments an option THANKS TO --------- Volker Barthelmann, Neil Booth, Stephen Davies, Stéphane Ecolivet, Marc Espie, Marcus Holland-Moritz, Antoine Leca, Cyrille Lefevre, Dave Rivers, Loic Tortay and Laurent Wacrenier, for suggestions and beta-testing. Paul Eggert, Douglas A. Gwyn, Clive D.W. Feather, and the other guys from comp.std.c, for explanations about the standard. Dave Brolley, Jamie Lokier and Neil Booth, for discussion about tricky points on nesting macros. Brian Kernighan and Dennis Ritchie, for bringing C to mortal Men. Convert-Binary-C-0.76/ucpp/lexer.c0000644000175000001440000006352711550664631015461 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "tune.h" #include #include #include #include #include "ucppi.h" #include "mem.h" #ifdef UCPP_MMAP #include #include #include #endif /* * Character classes for description of the automaton. * The characters used for representing classes should not appear * explicitely in an automaton rule. */ #define SPC ' ' /* whitespace characters */ #define ALP 'Z' /* A-Z, a-z, _ */ #define NUM '9' /* 0-9 */ #define ANY 'Y' /* any character */ #define VCH 'F' /* void character (for end of input) */ /* * flags and macros to test those flags * STO: the currently read string is a complete token * PUT: the currently read character must be added to the string * FRZ: the currently read character must be kept and read again */ #define MOD_MK 255 #define noMOD(x) ((x) & 255) #define STO(x) ((x) | 256) #define ttSTO(x) ((x) & 256) #define FRZ(x) ((x) | 512) #define ttFRZ(x) ((x) & 512) #define PUT(x) ((x) | 1024) #define ttPUT(x) ((x) & 1024) /* order is important */ enum { S_START, S_SPACE, S_BANG, S_STRING, S_STRING2, S_COLON, S_SHARP, S_PCT, S_PCT2, S_PCT3, S_AMPER, S_CHAR, S_CHAR2, S_STAR, S_PLUS, S_MINUS, S_DOT, S_DOT2, S_SLASH, S_NUMBER, S_NUMBER2, S_LT, S_LT2, S_EQ, S_GT, S_GT2, S_CIRC, S_PIPE, S_BACKSLASH, S_COMMENT, S_COMMENT2, S_COMMENT3, S_COMMENT4, S_COMMENT5, S_NAME, S_NAME_BS, S_LCHAR, MSTATE, S_ILL, S_DDOT, S_DDSHARP, S_BS, S_ROGUE_BS, S_BEHEAD, S_DECAY, S_TRUNC, S_TRUNCC, S_OUCH }; #define CMT(x) ((x) >= S_COMMENT && (x) <= S_COMMENT5) #define CMCR 2 /* * This is the description of the automaton. It is not used "as is" * but copied at execution time into a table. * * To my utmost displeasure, there are a few hacks in read_token() * (which uses the transformed automaton) about the special handling * of slashes, sharps, and the letter L. */ static struct machine_state { int state; unsigned char input[CMCR]; int new_state; } cppms[] = { /* S_START is the generic beginning state */ { S_START, { ANY }, S_ILL }, #ifdef SEMPER_FIDELIS { S_START, { SPC }, PUT(S_SPACE) }, #else { S_START, { SPC }, S_SPACE }, #endif { S_START, { '\n' }, STO(NEWLINE) }, { S_START, { '!' }, S_BANG }, { S_START, { '"' }, PUT(S_STRING) }, { S_START, { '#' }, S_SHARP }, { S_START, { '%' }, S_PCT }, { S_START, { '&' }, S_AMPER }, { S_START, { '\'' }, PUT(S_CHAR) }, { S_START, { '(' }, STO(LPAR) }, { S_START, { ')' }, STO(RPAR) }, { S_START, { '*' }, S_STAR }, { S_START, { '+' }, S_PLUS }, { S_START, { ',' }, STO(COMMA) }, { S_START, { '-' }, S_MINUS }, { S_START, { '.' }, PUT(S_DOT) }, #ifdef SEMPER_FIDELIS { S_START, { '/' }, PUT(S_SLASH) }, #else { S_START, { '/' }, S_SLASH }, #endif { S_START, { NUM }, PUT(S_NUMBER) }, { S_START, { ':' }, S_COLON }, { S_START, { ';' }, STO(SEMIC) }, { S_START, { '<' }, S_LT }, { S_START, { '=' }, S_EQ }, { S_START, { '>' }, S_GT }, { S_START, { '?' }, STO(QUEST) }, { S_START, { ALP }, PUT(S_NAME) }, { S_START, { 'L' }, PUT(S_LCHAR) }, { S_START, { '[' }, STO(LBRK) }, { S_START, { ']' }, STO(RBRK) }, { S_START, { '^' }, S_CIRC }, { S_START, { '{' }, STO(LBRA) }, { S_START, { '|' }, S_PIPE }, { S_START, { '}' }, STO(RBRA) }, { S_START, { '~' }, STO(NOT) }, { S_START, { '\\' }, S_BACKSLASH }, /* after a space */ { S_SPACE, { ANY }, FRZ(STO(NONE)) }, #ifdef SEMPER_FIDELIS { S_SPACE, { SPC }, PUT(S_SPACE) }, #else { S_SPACE, { SPC }, S_SPACE }, #endif /* after a ! */ { S_BANG, { ANY }, FRZ(STO(LNOT)) }, { S_BANG, { '=' }, STO(NEQ) }, /* after a " */ { S_STRING, { ANY }, PUT(S_STRING) }, { S_STRING, { VCH }, FRZ(S_TRUNC) }, { S_STRING, { '\n' }, FRZ(S_BEHEAD) }, { S_STRING, { '\\' }, PUT(S_STRING2) }, { S_STRING, { '"' }, PUT(STO(STRING)) }, { S_STRING2, { ANY }, PUT(S_STRING) }, { S_STRING2, { VCH }, FRZ(S_TRUNC) }, /* after a # */ { S_SHARP, { ANY }, FRZ(STO(SHARP)) }, { S_SHARP, { '#' }, STO(DSHARP) }, /* after a : */ { S_COLON, { ANY }, FRZ(STO(COLON)) }, { S_COLON, { '>' }, STO(DIG_RBRK) }, /* after a % */ { S_PCT, { ANY }, FRZ(STO(PCT)) }, { S_PCT, { '=' }, STO(ASPCT) }, { S_PCT, { '>' }, STO(DIG_RBRA) }, { S_PCT, { ':' }, S_PCT2 }, /* after a %: */ { S_PCT2, { ANY }, FRZ(STO(DIG_SHARP)) }, { S_PCT2, { '%' }, S_PCT3 }, /* after a %:% */ { S_PCT3, { ANY }, FRZ(S_DDSHARP) }, { S_PCT3, { ':' }, STO(DIG_DSHARP) }, /* after a & */ { S_AMPER, { ANY }, FRZ(STO(AND)) }, { S_AMPER, { '=' }, STO(ASAND) }, { S_AMPER, { '&' }, STO(LAND) }, /* after a ' */ { S_CHAR, { ANY }, PUT(S_CHAR) }, { S_CHAR, { VCH }, FRZ(S_TRUNC) }, { S_CHAR, { '\'' }, PUT(STO(CHAR)) }, { S_CHAR, { '\\' }, PUT(S_CHAR2) }, /* after a \ in a character constant useful only for '\'' */ { S_CHAR2, { ANY }, PUT(S_CHAR) }, { S_CHAR2, { VCH }, FRZ(S_TRUNC) }, /* after a * */ { S_STAR, { ANY }, FRZ(STO(STAR)) }, { S_STAR, { '=' }, STO(ASSTAR) }, /* after a + */ { S_PLUS, { ANY }, FRZ(STO(PLUS)) }, { S_PLUS, { '+' }, STO(PPLUS) }, { S_PLUS, { '=' }, STO(ASPLUS) }, /* after a - */ { S_MINUS, { ANY }, FRZ(STO(MINUS)) }, { S_MINUS, { '-' }, STO(MMINUS) }, { S_MINUS, { '=' }, STO(ASMINUS) }, { S_MINUS, { '>' }, STO(ARROW) }, /* after a . */ { S_DOT, { ANY }, FRZ(STO(DOT)) }, { S_DOT, { NUM }, PUT(S_NUMBER) }, { S_DOT, { '.' }, S_DOT2 }, /* after .. */ { S_DOT2, { ANY }, FRZ(S_DDOT) }, { S_DOT2, { '.' }, STO(MDOTS) }, /* after a / */ { S_SLASH, { ANY }, FRZ(STO(SLASH)) }, { S_SLASH, { '=' }, STO(ASSLASH) }, #ifdef SEMPER_FIDELIS { S_SLASH, { '*' }, PUT(S_COMMENT) }, { S_SLASH, { '/' }, PUT(S_COMMENT5) }, #else { S_SLASH, { '*' }, S_COMMENT }, { S_SLASH, { '/' }, S_COMMENT5 }, #endif /* * There is a little hack in read_token() to disable * this last rule, if C++ (C99) comments are not enabled. */ /* after a number */ { S_NUMBER, { ANY }, FRZ(STO(NUMBER)) }, { S_NUMBER, { ALP, NUM }, PUT(S_NUMBER) }, { S_NUMBER, { '.' }, PUT(S_NUMBER) }, { S_NUMBER, { 'E', 'e' }, PUT(S_NUMBER2) }, { S_NUMBER, { 'P', 'p' }, PUT(S_NUMBER2) }, { S_NUMBER2, { ANY }, FRZ(STO(NUMBER)) }, { S_NUMBER2, { ALP, NUM }, PUT(S_NUMBER) }, { S_NUMBER2, { '+', '-' }, PUT(S_NUMBER) }, /* after a < */ { S_LT, { ANY }, FRZ(STO(LT)) }, { S_LT, { '=' }, STO(LEQ) }, { S_LT, { '<' }, S_LT2 }, { S_LT, { ':' }, STO(DIG_LBRK) }, { S_LT, { '%' }, STO(DIG_LBRA) }, { S_LT2, { ANY }, FRZ(STO(LSH)) }, { S_LT2, { '=' }, STO(ASLSH) }, /* after a > */ { S_GT, { ANY }, FRZ(STO(GT)) }, { S_GT, { '=' }, STO(GEQ) }, { S_GT, { '>' }, S_GT2 }, { S_GT2, { ANY }, FRZ(STO(RSH)) }, { S_GT2, { '=' }, STO(ASRSH) }, /* after a = */ { S_EQ, { ANY }, FRZ(STO(ASGN)) }, { S_EQ, { '=' }, STO(SAME) }, #ifdef CAST_OP { S_EQ, { '>' }, STO(CAST) }, #endif /* after a \ */ { S_BACKSLASH, { ANY }, FRZ(S_BS) }, { S_BACKSLASH, { 'U', 'u' }, FRZ(S_NAME_BS) }, /* after a letter */ { S_NAME, { ANY }, FRZ(STO(NAME)) }, { S_NAME, { ALP, NUM }, PUT(S_NAME) }, { S_NAME, { '\\' }, S_NAME_BS }, /* after a \ in an identifier */ { S_NAME_BS, { ANY }, FRZ(S_ROGUE_BS) }, { S_NAME_BS, { 'u', 'U' }, PUT(S_NAME) }, /* after a L */ { S_LCHAR, { ANY }, FRZ(S_NAME) }, { S_LCHAR, { '"' }, PUT(S_STRING) }, { S_LCHAR, { '\'' }, PUT(S_CHAR) }, /* after a ^ */ { S_CIRC, { ANY }, FRZ(STO(CIRC)) }, { S_CIRC, { '=' }, STO(ASCIRC) }, /* after a | */ { S_PIPE, { ANY }, FRZ(STO(OR)) }, { S_PIPE, { '=' }, STO(ASOR) }, { S_PIPE, { '|' }, STO(LOR) }, /* after a / and * */ #ifdef SEMPER_FIDELIS { S_COMMENT, { ANY }, PUT(S_COMMENT) }, { S_COMMENT, { VCH }, FRZ(S_TRUNCC) }, { S_COMMENT, { '*' }, PUT(S_COMMENT2) }, { S_COMMENT2, { ANY }, FRZ(S_COMMENT) }, { S_COMMENT2, { VCH }, FRZ(S_TRUNCC) }, { S_COMMENT2, { '*' }, PUT(S_COMMENT2) }, { S_COMMENT2, { '/' }, STO(PUT(COMMENT)) }, { S_COMMENT5, { ANY }, PUT(S_COMMENT5) }, { S_COMMENT5, { VCH }, FRZ(S_DECAY) }, { S_COMMENT5, { '\n' }, FRZ(STO(COMMENT)) }, #else { S_COMMENT, { ANY }, S_COMMENT }, { S_COMMENT, { VCH }, FRZ(S_TRUNCC) }, { S_COMMENT, { '*' }, S_COMMENT2 }, { S_COMMENT2, { ANY }, FRZ(S_COMMENT) }, { S_COMMENT2, { VCH }, FRZ(S_TRUNCC) }, { S_COMMENT2, { '*' }, S_COMMENT2 }, { S_COMMENT2, { '/' }, STO(COMMENT) }, { S_COMMENT5, { ANY }, S_COMMENT5 }, { S_COMMENT5, { VCH }, FRZ(S_DECAY) }, { S_COMMENT5, { '\n' }, FRZ(STO(COMMENT)) }, #endif /* dummy end of machine description */ { 0, { 0 }, 0 } }; /* * cppm is the table used to store the automaton: if we are in state s * and we read character c, we apply the action cppm[s][c] (jumping to * another state, or emitting a token). * cppm_vch is the table for the special virtual character "end of input" */ #ifdef UCPP_REENTRANT struct _cppm { int cppm[MSTATE][MAX_CHAR_VAL]; int cppm_vch[MSTATE]; }; #define dCPPM int (*cppm)[MAX_CHAR_VAL] = REENTR->_lexer.sm->cppm #define dCPPM_VCH int *cppm_vch = REENTR->_lexer.sm->cppm_vch #else static int cppm[MSTATE][MAX_CHAR_VAL]; static int cppm_vch[MSTATE]; #define dCPPM #define dCPPM_VCH #endif /* UCPP_REENTRANT */ #ifdef UCPP_REENTRANT CPPM new_cppm(void) { CPPM c = getmem(sizeof(struct _cppm)); return c; } void del_cppm(CPPM c) { if (c) freemem(c); } #endif /* UCPP_REENTRANT */ #ifdef UCPP_CLONE CPPM clone_cppm(const CPPM s) { CPPM d = getmem(sizeof(struct _cppm)); mmv(d, s, sizeof(struct _cppm)); return d; } #endif /* UCPP_CLONE */ /* * init_cppm() fills cppm[][] with the information stored in cppms[]. * It must be called before beginning the lexing process. */ void init_cppm(pCPP) { int i, j, k, c; static unsigned char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; static unsigned char lower[] = "abcdefghijklmnopqrstuvwxyz"; unsigned char *cp; dCPPM; dCPPM_VCH; for (i = 0; i < MSTATE; i ++) { for (j = 0; j < MAX_CHAR_VAL; j ++) cppm[i][j] = S_OUCH; cppm_vch[i] = S_OUCH; } for (i = 0; cppms[i].input[0]; i ++) for (k = 0; k < CMCR; k ++) { int s = cppms[i].state; int ns = cppms[i].new_state; switch (c = cppms[i].input[k]) { case 0: break; case SPC: /* see space_char() also */ cppm[s][' '] = ns; cppm[s]['\t'] = ns; cppm[s]['\v'] = ns; cppm[s]['\f'] = ns; #ifdef UNBREAKABLE_SPACE if (MAX_CHAR_VAL > UNBREAKABLE_SPACE) cppm[s][UNBREAKABLE_SPACE] = ns; #endif break; case ALP: for (cp = upper; *cp; cp ++) cppm[s][(int)*cp] = ns; for (cp = lower; *cp; cp ++) cppm[s][(int)*cp] = ns; cppm[s]['_'] = ns; break; case NUM: for (j = '0'; j <= '9'; j ++) cppm[s][j] = ns; break; case ANY: for (j = 0; j < MAX_CHAR_VAL; j ++) cppm[s][j] = ns; cppm_vch[s] = ns; break; case VCH: cppm_vch[s] = ns; break; default: cppm[s][c] = ns; break; } } } /* * Make some character as equivalent to a letter for identifiers. */ void set_identifier_char(pCPP_ int c) { dCPPM; cppm[S_START][c] = PUT(S_NAME); cppm[S_NAME][c] = PUT(S_NAME); } /* * Remove the "identifier" status from a character. */ void unset_identifier_char(pCPP_ int c) { dCPPM; cppm[S_START][c] = S_ILL; cppm[S_NAME][c] = FRZ(STO(NAME)); } int space_char(int c) { if (c == ' ' || c == '\t' || c == '\v' || c == '\f' #ifdef UNBREAKABLE_SPACE || c == UNBREAKABLE_SPACE #endif ) return 1; return 0; } #ifndef NO_UCPP_BUF /* * our output buffer is full, flush it */ void flush_output(pCPP_ struct lexer_state *ls) { size_t x = ls->sbuf, y = 0, z; if (ls->sbuf == 0) return; do { z = fwrite(ls->output_buf + y, 1, x, ls->output); x -= z; y += z; } while (z && x > 0); if (!y) { error(aCPP_ ls->line, "could not flush output (disk full ?)"); die(); } ls->sbuf = 0; } #endif /* * Output one character; flush the buffer if needed. * This function should not be called, except by put_char(). */ static inline void write_char(pCPP_ struct lexer_state *ls, unsigned char c) { #ifndef NO_UCPP_BUF ls->output_buf[ls->sbuf ++] = c; if (ls->sbuf == OUTPUT_BUF_MEMG) flush_output(aCPP_ ls); #else if (putc((int)c, ls->output) == EOF) { error(aCPP_ ls->line, "output write error (disk full ?)"); die(); } #endif if (c == '\n') { ls->oline ++; } } /* * schedule a character for output */ void put_char(pCPP_ struct lexer_state *ls, unsigned char c) { if (ls->flags & KEEP_OUTPUT) write_char(aCPP_ ls, c); } /* * get next raw input character */ static inline int read_char(struct lexer_state *ls) { unsigned char c; if (!ls->input) { return ((ls->pbuf ++) < ls->ebuf) ? ls->input_string[ls->pbuf - 1] : -1; } while (1) { #ifndef NO_UCPP_BUF if (ls->pbuf == ls->ebuf) { #ifdef UCPP_MMAP if (ls->from_mmap) { munmap((void *)ls->input_buf, ls->ebuf); ls->from_mmap = 0; ls->input_buf = ls->input_buf_sav; } #endif ls->ebuf = fread(ls->input_buf, 1, INPUT_BUF_MEMG, ls->input); ls->pbuf = 0; } if (ls->ebuf == 0) return -1; c = ls->input_buf[ls->pbuf ++]; #else int x = getc(ls->input); if (x == EOF) return -1; c = x; #endif #ifndef NO_UCPP_COPY_LINE if (ls->flags & COPY_LINE) { if (c == '\n') { ls->copy_line[ls->cli] = 0; ls->cli = 0; } else if (ls->cli < (COPY_LINE_LENGTH - 1)) { ls->copy_line[ls->cli ++] = c; } } #endif if (c == '\n' && ls->macfile) { ls->macfile = 0; continue; } ls->macfile = 0; if (c == '\r') { /* * We found a '\r'; we handle it as a newline * and ignore the next newline. This should work * with all combinations of Msdos, MacIntosh and * Unix files on these three platforms. On other * platforms, native file formats are always * supported. */ ls->macfile = 1; c = '\n'; } break; } return c; } /* * next_fifo_char(), char_lka1() and char_lka2() give a two character * look-ahead on the input stream; this is needed for trigraphs */ static inline int next_fifo_char(struct lexer_state *ls) { int c; if (ls->nlka != 0) { c = ls->lka[0]; ls->lka[0] = ls->lka[1]; ls->nlka --; } else c = read_char(ls); return c; } static inline int char_lka1(struct lexer_state *ls) { if (ls->nlka == 0) { ls->lka[0] = read_char(ls); ls->nlka ++; } return ls->lka[0]; } static inline int char_lka2(pCPP_ struct lexer_state *ls) { #ifdef AUDIT if (ls->nlka == 0) ouch(aCPP_ "always in motion future is"); #else useCPP; #endif if (ls->nlka == 1) { ls->lka[1] = read_char(ls); ls->nlka ++; } return ls->lka[1]; } static struct trigraph { int old, new; } trig[9] = { { '=', '#' }, { '/', '\\' }, { '\'', '^' }, { '(', '[' }, { ')', ']' }, { '!', '|' }, { '<', '{' }, { '>', '}' }, { '-', '~' } }; /* * Returns the next character, after treatment of trigraphs and terminating * backslashes. Return value is -1 if there is no more input. */ static inline int next_char(pCPP_ struct lexer_state *ls) { int c; if (!ls->discard) return ls->last; ls->discard = 0; do { c = next_fifo_char(ls); /* check trigraphs */ if (c == '?' && char_lka1(ls) == '?' && (ls->flags & HANDLE_TRIGRAPHS)) { int i, d; d = char_lka2(aCPP_ ls); for (i = 0; i < 9; i ++) if (d == trig[i].old) { if (ls->flags & WARN_TRIGRAPHS) { ls->count_trigraphs ++; } if (ls->flags & WARN_TRIGRAPHS_MORE) { warning(aCPP_ ls->line, "trigraph ?""?%c " "encountered", d); } next_fifo_char(ls); next_fifo_char(ls); c = trig[i].new; break; } } if (c == '\\' && char_lka1(ls) == '\n') { ls->line ++; next_fifo_char(ls); } else { ls->last = c; return c; } } while (1); } /* * wrapper for next_char(), to be called from outside * (used by #error, #include directives) */ int grap_char(pCPP_ struct lexer_state *ls) { return next_char(aCPP_ ls); } /* * Discard the current character, so that the next call to next_char() * will step into the input stream. */ void discard_char(pCPP_ struct lexer_state *ls) { #ifdef AUDIT if (ls->discard) ouch(aCPP_ "overcollecting garbage"); #else useCPP; #endif ls->discard = 1; ls->utf8 = 0; if (ls->last == '\n') ls->line ++; } /* * Convert an UTF-8 encoded character to a Universal Character Name * using \u (or \U when appropriate). */ static int utf8_to_string(unsigned char buf[], unsigned long utf8) { unsigned long val = 0; static char hex[16] = "0123456789abcdef"; if (utf8 & 0x80UL) { unsigned long x1, x2, x3, x4; x1 = (utf8 >> 24) & 0x7fUL; x2 = (utf8 >> 16) & 0x7fUL; x3 = (utf8 >> 8) & 0x7fUL; x4 = (utf8) & 0x3fUL; x1 &= 0x07UL; if (x2 & 0x40UL) x2 &= 0x0fUL; if (x3 & 0x40UL) x3 &= 0x1fUL; val = x4 | (x3 << 6) | (x2 << 12) | (x1 << 16); } else val = utf8; if (val < 128) { buf[0] = val; buf[1] = 0; return 1; } else if (val < 0xffffUL) { buf[0] = '\\'; buf[1] = 'u'; buf[2] = hex[(size_t)(val >> 12)]; buf[3] = hex[(size_t)((val >> 8) & 0xfU)]; buf[4] = hex[(size_t)((val >> 4) & 0xfU)]; buf[5] = hex[(size_t)(val & 0xfU)]; buf[6] = 0; return 6; } buf[0] = '\\'; buf[1] = 'U'; buf[2] = '0'; buf[3] = '0'; buf[4] = hex[(size_t)(val >> 20)]; buf[5] = hex[(size_t)((val >> 16) & 0xfU)]; buf[6] = hex[(size_t)((val >> 12) & 0xfU)]; buf[7] = hex[(size_t)((val >> 8) & 0xfU)]; buf[8] = hex[(size_t)((val >> 4) & 0xfU)]; buf[9] = hex[(size_t)(val & 0xfU)]; buf[10] = 0; return 10; } /* * Scan the identifier and put it in canonical form: * -- tranform \U0000xxxx into \uxxxx * -- inside \u and \U, make letters low case * -- report (some) incorrect use of UCN */ static void canonize_id(pCPP_ struct lexer_state *ls, char *id) { char *c, *d; for (c = d = id; *c;) { if (*c == '\\') { int i; if (!*(c + 1)) goto canon_error; if (*(c + 1) == 'U') { for (i = 0; i < 8 && *(c + i + 2); i ++); if (i != 8) goto canon_error; *(d ++) = '\\'; c += 2; for (i = 0; i < 4 && *(c + i) == '0'; i ++); if (i == 4) { *(d ++) = 'u'; c += 4; } else { *(d ++) = 'U'; i = 8; } for (; i > 0; i --) { switch (*c) { case 'A': *(d ++) = 'a'; break; case 'B': *(d ++) = 'b'; break; case 'C': *(d ++) = 'c'; break; case 'D': *(d ++) = 'd'; break; case 'E': *(d ++) = 'e'; break; case 'F': *(d ++) = 'f'; break; default: *(d ++) = *c; break; } c ++; } } else if (*(c + 1) == 'u') { for (i = 0; i < 4 && *(c + i + 2); i ++); if (i != 4) goto canon_error; *(d ++) = '\\'; *(d ++) = 'u'; c += 2; for (; i > 0; i --) { switch (*c) { case 'A': *(d ++) = 'a'; break; case 'B': *(d ++) = 'b'; break; case 'C': *(d ++) = 'c'; break; case 'D': *(d ++) = 'd'; break; case 'E': *(d ++) = 'e'; break; case 'F': *(d ++) = 'f'; break; default: *(d ++) = *c; break; } c ++; } } else goto canon_error; continue; } *(d ++) = *(c ++); } *d = 0; return; canon_error: for (; *c; *(d ++) = *(c ++)); if (ls->flags & WARN_STANDARD) { warning(aCPP_ ls->line, "malformed identifier with UCN: '%s'", id); } *d = 0; } /* * Run the automaton, in order to get the next token. * This function should not be called, except by next_token() * * return value: 1 on error, 2 on end-of-file, 0 otherwise. */ static inline int read_token(pCPP_ struct lexer_state *ls) { int cstat = S_START, nstat; size_t ltok = 0; int c, outc = 0, ucn_in_id = 0; int shift_state = 0; unsigned long utf8 = 0; long l = ls->line; dCPPM; /* * Make sure token type is initialized. * Valgrind was complaining about ctok->type not being initialized * in llex() when parsing an empty source file. */ ls->ctok->type = NONE; ls->ctok->line = l; if (ls->pending_token) { if ((ls->ctok->type = ls->pending_token) == BUNCH) { ls->ctok->name[0] = '\\'; ls->ctok->name[1] = 0; } ls->pending_token = 0; return 0; } if (ls->flags & UTF8_SOURCE) { utf8 = ls->utf8; shift_state = 0; } if (!(ls->flags & LEXER) && (ls->flags & KEEP_OUTPUT)) for (; ls->line > ls->oline;) put_char(aCPP_ ls, '\n'); do { c = next_char(aCPP_ ls); if (c < 0) { dCPPM_VCH; if (shift_state && (ls->flags & UTF8_SOURCE)) { if (ls->flags & WARN_STANDARD) warning(aCPP_ ls->line, "truncated UTF-8 " "character"); shift_state = 0; utf8 = 0; } if (cstat == S_START) return 2; nstat = cppm_vch[cstat]; } else { if (ls->flags & UTF8_SOURCE) { if (shift_state) { if ((c & 0xc0) != 0x80) { if (ls->flags & WARN_STANDARD) warning(aCPP_ ls->line, "truncated " "UTF-8 " "character"); shift_state = 0; utf8 = 0; c = '_'; } else { utf8 = (utf8 << 8) | c; if (-- shift_state) { ls->discard = 1; continue; } c = '_'; } } else if ((c & 0xc0) == 0xc0) { if ((c & 0x30) == 0x30) { shift_state = 3; } else if (c & 0x20) { shift_state = 2; } else { shift_state = 1; } utf8 = c; ls->discard = 1; continue; } else utf8 = 0; } nstat = cppm[cstat][c < MAX_CHAR_VAL ? c : 0]; } #ifdef AUDIT if (nstat == S_OUCH) { ouch(aCPP_ "bad move..."); } #endif /* * disable C++-like comments */ if (noMOD(nstat) == S_COMMENT5 && !(ls->flags & CPLUSPLUS_COMMENTS)) nstat = FRZ(STO(SLASH)); if (noMOD(nstat) >= MSTATE && !ttSTO(nstat)) switch (noMOD(nstat)) { case S_ILL: if (ls->flags & CCHARSET) { error(aCPP_ ls->line, "illegal character '%c'", c); return 1; } nstat = PUT(STO(BUNCH)); break; case S_BS: ls->ctok->name[0] = '\\'; ltok ++; nstat = FRZ(STO(BUNCH)); if (!(ls->flags & LEXER)) put_char(aCPP_ ls, '\\'); break; case S_ROGUE_BS: ls->pending_token = BUNCH; nstat = FRZ(STO(NAME)); break; case S_DDOT: ls->pending_token = DOT; nstat = FRZ(STO(DOT)); break; case S_DDSHARP: ls->pending_token = PCT; nstat = FRZ(STO(DIG_SHARP)); break; case S_BEHEAD: error(aCPP_ l, "unfinished string at end of line"); return 1; case S_DECAY: warning(aCPP_ l, "unterminated // comment"); nstat = FRZ(STO(COMMENT)); break; case S_TRUNC: error(aCPP_ l, "truncated token"); return 1; case S_TRUNCC: error(aCPP_ l, "truncated comment"); return 1; #ifdef AUDIT case S_OUCH: ouch(aCPP_ "machine went out of control"); break; #endif } if (!ttFRZ(nstat)) { discard_char(aCPP_ ls); if (!(ls->flags & LEXER) && ls->condcomp) { int z = ttSTO(nstat) ? S_ILL : noMOD(nstat); if (cstat == S_NAME || z == S_NAME || ((CMT(cstat) || CMT(z)) && (ls->flags & DISCARD_COMMENTS))) { outc = 0; } else if (z == S_LCHAR || z == S_SLASH || (z == S_SHARP && ls->ltwnl) || (z == S_PCT && ls->ltwnl) || (z == S_BACKSLASH)) { outc = c; } else if (z == S_PCT2 && ls->ltwnl) { outc = -1; } else if (z == S_PCT3 && ls->ltwnl) { /* we have %:% but this still might not be a %:%: */ outc = -2; } else { if (outc < 0) { put_char(aCPP_ ls, '%'); put_char(aCPP_ ls, ':'); if (outc == -2) put_char(aCPP_ ls, '%'); outc = 0; } else if (outc) { put_char(aCPP_ ls, outc); outc = 0; } put_char(aCPP_ ls, c); } } } else if (outc == '/' && !(ls->flags & LEXER) && ls->condcomp) { /* this is a hack: we need to dump a pending slash */ put_char(aCPP_ ls, outc); outc = 0; } if (ttPUT(nstat)) { if (cstat == S_NAME_BS) { ucn_in_id = 1; wan(ls->ctok->name, ltok, '\\', ls->tknl); } if (utf8 && (ls->flags & UTF8_SOURCE)) { unsigned char buf[11]; int i, j; for (i = 0, j = utf8_to_string(buf, utf8); i < j; i ++) wan(ls->ctok->name, ltok, buf[i], ls->tknl); /* if (j > 1) ucn_in_id = 1; */ } else wan(ls->ctok->name, ltok, (unsigned char)c, ls->tknl); } if (ttSTO(nstat)) { if (S_TOKEN(noMOD(nstat))) { wan(ls->ctok->name, ltok, (unsigned char)0, ls->tknl); } ls->ctok->type = noMOD(nstat); break; } cstat = noMOD(nstat); } while (1); if (!(ls->flags & LEXER) && (ls->flags & DISCARD_COMMENTS) && ls->ctok->type == COMMENT) put_char(aCPP_ ls, ' '); if (ucn_in_id && ls->ctok->type == NAME) canonize_id(aCPP_ ls, ls->ctok->name); return 0; } /* * fills ls->ctok with the next token */ int next_token(pCPP_ struct lexer_state *ls) { if (ls->flags & READ_AGAIN) { ls->flags &= ~READ_AGAIN; if (!(ls->flags & LEXER)) { char *c = S_TOKEN(ls->ctok->type) ? ls->ctok->name : token_name(ls->ctok); if (ls->ctok->type == OPT_NONE) { ls->ctok->type = NONE; #ifdef SEMPER_FIDELIS ls->ctok->name[0] = ' '; ls->ctok->name[1] = 0; #endif put_char(aCPP_ ls, ' '); } else if (ls->ctok->type != NAME && !(ls->ltwnl && (ls->ctok->type == SHARP || ls->ctok->type == DIG_SHARP))) for (; *c; c ++) put_char(aCPP_ ls, *c); } return 0; } return read_token(aCPP_ ls); } Convert-Binary-C-0.76/ucpp/macro.c0000644000175000001440000014614711550664631015443 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "tune.h" #include #include #include #include #include "ucppi.h" #include "mem.h" #include "nhash.h" /* * we store macros in a hash table, and retrieve them using their name * as identifier. */ #ifdef UCPP_REENTRANT #define macros (REENTR->_macro.macros) #define macros_init_done (REENTR->_macro.macros_init_done) #else static HTT macros; static int macros_init_done = 0; #endif static void del_macro(void *m) { struct macro *n = m; size_t i; for (i = 0; (int)i < n->narg; i ++) freemem(n->arg[i]); if (n->narg > 0) freemem(n->arg); #ifdef LOW_MEM if (n->cval.length) freemem(n->cval.t); #else if (n->val.nt) { for (i = 0; i < n->val.nt; i ++) if (S_TOKEN(n->val.t[i].type)) freemem(n->val.t[i].name); freemem(n->val.t); } #endif freemem(n); } static inline struct macro *new_macro(void) { struct macro *m = getmem(sizeof(struct macro)); m->narg = -1; m->nest = 0; #ifdef LOW_MEM m->cval.length = 0; #else m->val.nt = m->val.art = 0; #endif m->vaarg = 0; return m; } #ifdef UCPP_CLONE static void *clone_macro(const void *m) { const struct macro *src = m; struct macro *dst = getmem(sizeof(struct macro)); size_t i; if (src->narg > 0) { dst->narg = 0; for (i = 0; (int)i < src->narg; i ++) aol(dst->arg, dst->narg, sdup(src->arg[i]), MACRO_ARG_MEMG); } else dst->narg = src->narg; #ifdef LOW_MEM dst->cval.length = src->cval.length; if (src->cval.length) { dst->cval.length = src->cval.length; dst->cval.t = getmem(src->cval.length); mmv(dst->cval.t, src->cval.t, src->cval.length); } #else dst->val.art = src->val.art; if (src->val.nt) { dst->val.nt = 0; for (i = 0; i < src->val.nt; i ++) { aol(dst->val.t, dst->val.nt, src->val.t[i], TOKEN_LIST_MEMG); if (S_TOKEN(src->val.t[i].type)) dst->val.t[i].name = sdup(src->val.t[i].name); } } else dst->val.nt = src->val.nt; #endif dst->nest = src->nest; dst->vaarg = src->vaarg; return dst; } #endif /* UCPP_CLONE */ /* * for special macros, and the "defined" operator */ enum { MAC_NONE, MAC_DEFINED, MAC_LINE, MAC_FILE, MAC_DATE, MAC_TIME, MAC_STDC, MAC_PRAGMA }; #define MAC_SPECIAL MAC_LINE /* * returns 1 for "defined" * returns x > 1 for a special macro such as __FILE__ * returns 0 otherwise */ static inline int check_special_macro(pCPP_ char *name) { if (!strcmp(name, "defined")) return MAC_DEFINED; if (*name != '_') return MAC_NONE; if (*(name + 1) == 'P') { if (!strcmp(name, "_Pragma")) return MAC_PRAGMA; return MAC_NONE; } else if (*(name + 1) != '_') return MAC_NONE; if (no_special_macros) return MAC_NONE; if (!strcmp(name, "__LINE__")) return MAC_LINE; else if (!strcmp(name, "__FILE__")) return MAC_FILE; else if (!strcmp(name, "__DATE__")) return MAC_DATE; else if (!strcmp(name, "__TIME__")) return MAC_TIME; else if (!strcmp(name, "__STDC__")) return MAC_STDC; return MAC_NONE; } #ifndef UCPP_REENTRANT int c99_compliant = 1; int c99_hosted = 1; #endif /* * add the special macros to the macro table */ static void add_special_macros(pCPP) { struct macro *m; HTT_put(¯os, new_macro(), "__LINE__"); HTT_put(¯os, new_macro(), "__FILE__"); HTT_put(¯os, new_macro(), "__DATE__"); HTT_put(¯os, new_macro(), "__TIME__"); HTT_put(¯os, new_macro(), "__STDC__"); m = new_macro(); m->narg = 1; m->arg = getmem(sizeof(char *)); m->arg[0] = sdup("foo"); HTT_put(¯os, m, "_Pragma"); if (c99_compliant) { #ifndef LOW_MEM struct token t; #endif m = new_macro(); #ifdef LOW_MEM m->cval.t = getmem(9); m->cval.t[0] = NUMBER; mmv(m->cval.t + 1, "199901L", 8); m->cval.length = 9; #else t.type = NUMBER; t.line = 0; t.name = sdup("199901L"); aol(m->val.t, m->val.nt, t, TOKEN_LIST_MEMG); #endif HTT_put(¯os, m, "__STDC_VERSION__"); } if (c99_hosted) { #ifndef LOW_MEM struct token t; #endif m = new_macro(); #ifdef LOW_MEM m->cval.t = getmem(3); m->cval.t[0] = NUMBER; mmv(m->cval.t + 1, "1", 2); m->cval.length = 3; #else t.type = NUMBER; t.line = 0; t.name = sdup("1"); aol(m->val.t, m->val.nt, t, TOKEN_LIST_MEMG); #endif HTT_put(¯os, m, "__STDC_HOSTED__"); } } #ifdef LOW_MEM /* * We store macro arguments as a single-byte token MACROARG, followed * by the argument number as a one or two-byte value. If the argument * number is between 0 and 127 (inclusive), it is stored as such in * a single byte. Otherwise, it is supposed to be a 14-bit number, with * the 7 upper bits stored in the first byte (with the high bit set to 1) * and the 7 lower bits in the second byte. */ #endif static inline size_t stradd(char **buf, const char *str) { if (*buf) { char *end = *buf; size_t len; while (*str) *end++ = *str++; len = end - *buf; *buf = end; return len; } return strlen(str); } /* * assemble macro definition string */ static size_t get_macro_def(const struct macro *m, char *buffer) { size_t len = 0U, i; char **b = &buffer; char *mname = HASH_ITEM_NAME(m); len += stradd(b, mname); if (m->narg >= 0) { len += stradd(b, "("); for (i = 0; i < (size_t)(m->narg); i ++) { if (i) len += stradd(b, ", "); len += stradd(b, m->arg[i]); } if (m->vaarg) { len += stradd(b, m->narg ? ", ..." : "..."); } len += stradd(b, ")"); } #ifdef LOW_MEM if (m->cval.length) len += stradd(b, " "); for (i = 0; i < m->cval.length;) { int tt = m->cval.t[i ++]; if (tt == MACROARG) { unsigned anum = m->cval.t[i]; if (anum >= 128) anum = ((anum & 127U) << 8) | m->cval.t[++ i]; if (anum == (unsigned)m->narg) len += stradd(b, "__VA_ARGS__"); else len += stradd(b, m->arg[anum]); i ++; } else if (S_TOKEN(tt)) { size_t l = stradd(b, (char *)(m->cval.t + i)); len += l; i += 1 + l; } else len += stradd(b, operators_name[tt]); } #else if (m->val.nt) len += stradd(b, " "); for (i = 0; i < m->val.nt; i ++) { if (m->val.t[i].type == MACROARG) { if (m->val.t[i].line == m->narg) len += stradd(b, "__VA_ARGS__"); else len += stradd(b, m->arg[(size_t)(m->val.t[i].line)]); } else len += stradd(b, token_name(m->val.t + i)); } #endif if (buffer) *buffer = '\0'; return len; } /* * print the content of a macro, in #define form */ #ifdef UCPP_REENTRANT static void print_macro(void *re, void *vm) #else static void print_macro(void *vm) #endif { struct macro *m = vm; #ifdef UCPP_REENTRANT struct CPP *REENTR = re; #endif char *mname = HASH_ITEM_NAME(m); char *def; size_t len; int x = check_special_macro(aCPP_ mname); if (x != MAC_NONE) { fprintf(emit_output, "/* #define %s */ /* special */\n", mname); return; } len = get_macro_def(m, 0); def = getmem(len + 1); if (get_macro_def(m, def) != len) ouch(aCPP_ "length mismatch in print_macro()"); fprintf(emit_output, "#define %s\n", def); freemem(def); } struct macro_iter_arg { #ifdef UCPP_REENTRANT struct CPP *re; #endif unsigned long flags; void (*func)(const struct macro_info *); struct macro_info info; }; static void macro_iter(void *arg, void *mac) { struct macro_iter_arg *a = arg; #ifdef UCPP_REENTRANT struct CPP *REENTR = a->re; #endif struct macro *m = mac; char *mname = HASH_ITEM_NAME(m); int x = check_special_macro(aCPP_ mname); struct macro_info *i = &a->info; if (x != MAC_NONE) return; i->name = mname; if (a->flags & MI_WITH_DEFINITION) { size_t len = get_macro_def(m, 0); i->definition_len = len; if (len < 128) { char def[128]; (void) get_macro_def(m, def); i->definition = def; a->func(i); } else { char *def = getmem(len + 1); (void) get_macro_def(m, def); i->definition = def; a->func(i); freemem(def); } } else a->func(i); } /* * Send a token to the output (a token_fifo in lexer mode, the output * buffer in stand alone mode). */ void print_token(pCPP_ struct lexer_state *ls, struct token *t, long uz_line) { char *x = t->name; if (uz_line && t->line < 0) t->line = uz_line; if (ls->flags & LEXER) { struct token at; at = *t; if (S_TOKEN(t->type)) { at.name = sdup(at.name); throw_away(ls->gf, at.name); } aol(ls->output_fifo->t, ls->output_fifo->nt, at, TOKEN_LIST_MEMG); return; } if (ls->flags & KEEP_OUTPUT) { for (; ls->oline < ls->line;) put_char(aCPP_ ls, '\n'); } if (!S_TOKEN(t->type)) x = operators_name[t->type]; for (; *x; x ++) put_char(aCPP_ ls, *x); } /* * Send a token to the output at a given line (this is for text output * and unreplaced macros due to lack of arguments). */ static void print_token_nailed(pCPP_ struct lexer_state *ls, struct token *t, long nail_line) { char *x = t->name; if (ls->flags & LEXER) { print_token(aCPP_ ls, t, 0); return; } if (ls->flags & KEEP_OUTPUT) { for (; ls->oline < nail_line;) put_char(aCPP_ ls, '\n'); } if (!S_TOKEN(t->type)) x = operators_name[t->type]; for (; *x; x ++) put_char(aCPP_ ls, *x); } /* * send a reduced whitespace token to the output */ #define print_space(ls) do { \ struct token lt; \ lt.type = OPT_NONE; \ lt.line = (ls)->line; \ print_token(aCPP_ (ls), <, 0); \ } while (0) /* * We found a #define directive; parse the end of the line, perform * sanity checks, store the new macro into the "macros" hash table. * * In case of a redefinition of a macro: we enforce the rule that a * macro should be redefined identically, including the spelling of * parameters. We emit an error on offending code; dura lex, sed lex. * After all, it is easy to avoid such problems, with a #undef directive. */ int handle_define(pCPP_ struct lexer_state *ls) { struct macro *m = 0, *n; #ifdef LOW_MEM struct token_fifo mv; #endif int ltwws = 1, redef = 0; char *mname = 0; int narg; size_t nt; long l = ls->line; #ifdef LOW_MEM mv.art = mv.nt = 0; #endif /* find the next non-white token on the line, this should be the macro name */ while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) mname = sdup(ls->ctok->name); break; } if (mname == 0) { error(aCPP_ l, "missing macro name"); return 1; } if (check_special_macro(aCPP_ mname)) { error(aCPP_ l, "trying to redefine the special macro %s", mname); goto warp_error; } /* * If a macro with this name was already defined: the K&R * states that the new macro should be identical to the old one * (with some arcane rule of equivalence of whitespace); otherwise, * redefining the macro is an error. Most preprocessors would * only emit a warning (or nothing at all) on an unidentical * redefinition. * * Since it is easy to avoid this error (with a #undef directive), * we choose to enforce the rule and emit an error. */ if ((n = HTT_get(¯os, mname)) != 0) { /* redefinition of a macro: we must check that we define it identical */ redef = 1; #ifdef LOW_MEM n->cval.rp = 0; #endif freemem(mname); mname = 0; } if (!redef) { m = new_macro(); m->narg = -1; #ifdef LOW_MEM #define mval mv #else #define mval (m->val) #endif } if (next_token(aCPP_ ls)) goto define_end; /* * Check if the token immediately following the macro name is * a left parenthesis; if so, then this is a macro with arguments. * Collect their names and try to match the next parenthesis. */ if (ls->ctok->type == LPAR) { int i, j; int need_comma = 0, saw_mdots = 0; narg = 0; while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) { error(aCPP_ l, "truncated macro definition"); goto define_error; } if (ls->ctok->type == COMMA) { if (saw_mdots) { error(aCPP_ l, "'...' must end the macro " "argument list"); goto warp_error; } if (!need_comma) { error(aCPP_ l, "void macro argument"); goto warp_error; } need_comma = 0; continue; } else if (ls->ctok->type == NAME) { if (saw_mdots) { error(aCPP_ l, "'...' must end the macro " "argument list"); goto warp_error; } if (need_comma) { error(aCPP_ l, "missing comma in " "macro argument list"); goto warp_error; } if (!redef) { aol(m->arg, narg, sdup(ls->ctok->name), MACRO_ARG_MEMG); /* we must keep track of m->narg so that cleanup in case of error works. */ m->narg = narg; if (narg == 128 && (ls->flags & WARN_STANDARD)) warning(aCPP_ l, "more arguments to " "macro than the ISO " "limit (127)"); #ifdef LOW_MEM if (narg == 32767) { error(aCPP_ l, "too many arguments " "in macro definition " "(max 32766)"); goto warp_error; } #endif } else { /* this is a redefinition of the macro; check equality between old and new definitions */ if (narg >= n->narg) goto redef_error; if (strcmp(ls->ctok->name, n->arg[narg ++])) goto redef_error; } need_comma = 1; continue; } else if ((ls->flags & MACRO_VAARG) && ls->ctok->type == MDOTS) { if (need_comma) { error(aCPP_ l, "missing comma before '...'"); goto warp_error; } if (redef && !n->vaarg) goto redef_error; if (!redef) m->vaarg = 1; saw_mdots = 1; need_comma = 1; continue; } else if (ls->ctok->type == RPAR) { if (narg > 0 && !need_comma) { error(aCPP_ l, "void macro argument"); goto warp_error; } if (redef && n->vaarg && !saw_mdots) goto redef_error; break; } else if (ttMWS(ls->ctok->type)) { continue; } error(aCPP_ l, "invalid macro argument"); goto warp_error; } if (!redef) { for (i = 1; i < narg; i ++) for (j = 0; j < i; j ++) if (!strcmp(m->arg[i], m->arg[j])) { error(aCPP_ l, "duplicate macro " "argument"); goto warp_error; } } if (!redef) m->narg = narg; } else { if (!ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) warning(aCPP_ ls->line, "identifier not followed by " "whitespace in #define"); ls->flags |= READ_AGAIN; narg = 0; } if (redef) nt = 0; /* now, we have the arguments. Let's get the macro contents. */ while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { struct token t; t.type = ls->ctok->type; if (ltwws && ttMWS(t.type)) continue; t.line = 0; if (t.type == NAME) { int i; if ((ls->flags & MACRO_VAARG) && !strcmp(ls->ctok->name, "__VA_ARGS__")) { if (redef) { if (!n->vaarg) goto redef_error; } else if (!m->vaarg) { error(aCPP_ l, "'__VA_ARGS__' is forbidden " "in macros with a fixed " "number of arguments"); goto warp_error; } t.type = MACROARG; t.line = redef ? n->narg : m->narg; } for (i = 0; i < narg; i ++) if (!strcmp(redef ? n->arg[i] : m->arg[i], ls->ctok->name)) { t.type = MACROARG; /* this is a hack: we store the argument number in the line field */ t.line = i; break; } } if (!redef && S_TOKEN(t.type)) t.name = sdup(ls->ctok->name); if (ttMWS(t.type)) { if (ltwws) continue; #ifdef SEMPER_FIDELIS t.type = OPT_NONE; #else t.type = NONE; #endif ltwws = 1; } else ltwws = 0; if (!redef) { /* we ensure that each macro token has a correct line number */ if (t.type != MACROARG) t.line = 1; aol(mval.t, mval.nt, t, TOKEN_LIST_MEMG); } else { #ifdef LOW_MEM int tt; if (n->cval.rp >= n->cval.length) { #ifdef SEMPER_FIDELIS if (t.type != OPT_NONE) goto redef_error; #else if (t.type != NONE) goto redef_error; #endif } else { if (t.type != n->cval.t[n->cval.rp]) { goto redef_error; } else if (t.type == MACROARG) { unsigned anum = n->cval.t[n->cval.rp + 1]; if (anum >= 128U) anum = ((anum & 127U) << 8) | m->cval.t[n->cval.rp + 2]; if (anum != (unsigned)t.line) goto redef_error; } else if (S_TOKEN(t.type) && strcmp(ls->ctok->name, (char *)(n->cval.t + n->cval.rp + 1))) { goto redef_error; } tt = n->cval.t[n->cval.rp ++]; if (S_TOKEN(tt)) n->cval.rp += 1 + strlen((char *)(n->cval.t + n->cval.rp)); else if (tt == MACROARG) { if (n->cval.t[++ n->cval.rp] >= 128) n->cval.rp ++; } } #else if (nt >= n->val.nt) { #ifdef SEMPER_FIDELIS if (t.type != OPT_NONE) goto redef_error; #else if (t.type != NONE) goto redef_error; #endif } else if (t.type != n->val.t[nt].type || (t.type == MACROARG && t.line != n->val.t[nt].line) || (S_TOKEN(t.type) && strcmp(ls->ctok->name, n->val.t[nt].name))) { goto redef_error; } #endif nt ++; } } if (redef) { #ifdef LOW_MEM if (n->cval.rp < n->cval.length) goto redef_error_2; #else if (nt < n->val.nt) goto redef_error_2; #endif return 0; } /* now we have the complete macro; perform some checks about the operators # and ##, and, if everything is ok, store the macro into the hash table */ define_end: #ifdef SEMPER_FIDELIS if (mval.nt && mval.t[mval.nt - 1].type == OPT_NONE) { #else if (mval.nt && mval.t[mval.nt - 1].type == NONE) { #endif mval.nt --; if (mval.nt == 0) freemem(mval.t); } if (mval.nt != 0) { size_t i; /* some checks about the macro */ if (mval.t[0].type == DSHARP || mval.t[0].type == DIG_DSHARP || mval.t[mval.nt - 1].type == DSHARP || mval.t[mval.nt - 1].type == DIG_DSHARP) { error(aCPP_ l, "operator '##' may neither begin " "nor end a macro"); goto define_error; } if (m->narg >= 0) for (i = 0; i < mval.nt; i ++) if ((mval.t[i].type == SHARP || mval.t[i].type == DIG_SHARP) && (i == (mval.nt - 1) || (ttMWS(mval.t[i + 1].type) && (i == mval.nt - 2 || mval.t[i + 2].type != MACROARG)) || (!ttMWS(mval.t[i + 1].type) && mval.t[i + 1].type != MACROARG))) { error(aCPP_ l, "operator '#' not followed " "by a macro argument"); goto define_error; } } #ifdef LOW_MEM { size_t i, l; for (i = 0, l = 0; i < mval.nt; i ++) { l ++; if (S_TOKEN(mval.t[i].type)) l += 1 + strlen(mval.t[i].name); else if (mval.t[i].type == MACROARG) { l ++; if (mval.t[i].line >= 128) l ++; } } m->cval.length = l; if (l) m->cval.t = getmem(l); for (i = 0, l = 0; i < mval.nt; i ++) { m->cval.t[l ++] = mval.t[i].type; if (S_TOKEN(mval.t[i].type)) { size_t x = 1 + strlen(mval.t[i].name); mmv(m->cval.t + l, mval.t[i].name, x); l += x; freemem(mval.t[i].name); } else if (mval.t[i].type == MACROARG) { unsigned anum = mval.t[i].line; if (anum >= 128) { m->cval.t[l ++] = 128 | (anum >> 8); m->cval.t[l ++] = anum & 0xFF; } else { m->cval.t[l ++] = anum; } } } if (mval.nt) freemem(mval.t); } #endif HTT_put(¯os, m, mname); freemem(mname); if (emit_defines) print_macro(aCPP_ m); return 0; redef_error: while (ls->ctok->type != NEWLINE && !next_token(aCPP_ ls)); redef_error_2: error(aCPP_ l, "macro '%s' redefined unidentically", HASH_ITEM_NAME(n)); return 1; warp_error: while (ls->ctok->type != NEWLINE && !next_token(aCPP_ ls)); define_error: if (m) del_macro(m); if (mname) freemem(mname); #ifdef LOW_MEM if (mv.nt) { size_t i; for (i = 0; i < mv.nt; i ++) if (S_TOKEN(mv.t[i].type)) freemem(mv.t[i].name); freemem(mv.t); } #endif return 1; #undef mval } /* * Get the arguments for a macro. This code is tricky because there can * be multiple sources for these arguments, if we are in the middle of * a macro replacement; arguments are macro-replaced before inclusion * into the macro replacement. * * return value: * 1 no argument (last token read from next_token()) * 2 no argument (last token read from tfi) * 3 no argument (nothing read) * 4 error * * Void arguments are allowed in C99. */ static int collect_arguments(pCPP_ struct lexer_state *ls, struct token_fifo *tfi, int penury, struct token_fifo *atl, int narg, int vaarg, int *wr) { int ltwws = 1, npar = 0, i; struct token *ct = 0; int read_from_fifo = 0; long begin_line = ls->line; #define unravel(ls) (read_from_fifo = 0, !((tfi && tfi->art < tfi->nt \ && (read_from_fifo = 1) != 0 && (ct = tfi->t + (tfi->art ++))) \ || ((!tfi || penury) && !next_token(aCPP_ ls) && (ct = (ls)->ctok)))) /* * collect_arguments() is assumed to setup correctly atl * (this is not elegant, but it works) */ for (i = 0; i < narg; i ++) atl[i].art = atl[i].nt = 0; if (vaarg) atl[narg].art = atl[narg].nt = 0; *wr = 0; while (!unravel(ls)) { if (!read_from_fifo && ct->type == NEWLINE) ls->ltwnl = 1; if (ttWHI(ct->type)) { *wr = 1; continue; } if (ct->type == LPAR) { npar = 1; } break; } if (!npar) { if (ct == ls->ctok) return 1; if (read_from_fifo) return 2; return 3; } if (!read_from_fifo && ct == ls->ctok) ls->ltwnl = 0; i = 0; if ((narg + vaarg) == 0) { while(!unravel(ls)) { if (ttWHI(ct->type)) continue; if (ct->type == RPAR) goto harvested; npar = 1; goto too_many_args; } } while (!unravel(ls)) { struct token t; if (ct->type == LPAR) npar ++; else if (ct->type == RPAR && (-- npar) == 0) { if (atl[i].nt != 0 && ttMWS(atl[i].t[atl[i].nt - 1].type)) atl[i].nt --; i ++; /* * C99 standard states that at least one argument * should be present for the ... part; to relax * this behaviour, change 'narg + vaarg' to 'narg'. */ if (i < (narg + vaarg)) { error(aCPP_ begin_line, "not enough arguments " "to macro"); return 4; } if (i > narg) { if (!(ls->flags & MACRO_VAARG) || !vaarg) goto too_many_args; } goto harvested; } else if (ct->type == COMMA && npar <= 1 && i < narg) { if (atl[i].nt != 0 && ttMWS(atl[i].t[atl[i].nt - 1].type)) atl[i].nt --; if (++ i == narg) { if (!(ls->flags & MACRO_VAARG) || !vaarg) goto too_many_args; } if (i > 30000) goto too_many_args; ltwws = 1; continue; } else if (ltwws && ttWHI(ct->type)) continue; t.type = ct->type; if (!read_from_fifo) t.line = ls->line; else t.line = ct->line; /* * Stringification applies only to macro arguments; * so we handle here OPT_NONE. * OPT_NONE is kept, but does not count as whitespace, * and merges with other whitespace to give a fully * qualified NONE token. Two OPT_NONE tokens merge. * Initial and final OPT_NONE are discarded (initial * is already done, as OPT_NONE is matched by ttWHI). */ if (ttWHI(t.type)) { if (t.type != OPT_NONE) { t.type = NONE; #ifdef SEMPER_FIDELIS t.name = sdup(" "); throw_away(ls->gf, t.name); #endif ltwws = 1; } if (atl[i].nt > 0 && atl[i].t[atl[i].nt - 1].type == OPT_NONE) atl[i].nt --; } else { ltwws = 0; if (S_TOKEN(t.type)) { t.name = ct->name; if (ct == (ls)->ctok) { t.name = sdup(t.name); throw_away(ls->gf, t.name); } } } aol(atl[i].t, atl[i].nt, t, TOKEN_LIST_MEMG); } error(aCPP_ begin_line, "unfinished macro call"); return 4; too_many_args: error(aCPP_ begin_line, "too many arguments to macro"); while (npar && !unravel(ls)) { if (ct->type == LPAR) npar ++; else if (ct->type == RPAR) npar --; } return 4; harvested: if (i > 127 && (ls->flags & WARN_STANDARD)) warning(aCPP_ begin_line, "macro call with %d arguments (ISO " "specifies 127 max)", i); return 0; #undef unravel } /* * concat_token() is called when the ## operator is used. It uses * the struct lexer_state dsharp_lexer to parse the result of the * concatenation. * * Law enforcement: if the whole string does not produce a valid * single token, an error (non-zero result) is returned. */ #ifndef UCPP_REENTRANT struct lexer_state dsharp_lexer; #endif static inline int concat_token(pCPP_ struct token *t1, struct token *t2) { char *n1 = token_name(t1), *n2 = token_name(t2); size_t l1 = strlen(n1), l2 = strlen(n2); unsigned char *x = getmem(l1 + l2 + 1); int r; mmv(x, n1, l1); mmv(x + l1, n2, l2); x[l1 + l2] = 0; dsharp_lexer.input = 0; dsharp_lexer.input_string = x; dsharp_lexer.pbuf = 0; dsharp_lexer.ebuf = l1 + l2; dsharp_lexer.discard = 1; dsharp_lexer.flags = DEFAULT_LEXER_FLAGS; dsharp_lexer.pending_token = 0; r = next_token(aCPP_ &dsharp_lexer); freemem(x); return (r == 1 || dsharp_lexer.pbuf < (l1 + l2) || dsharp_lexer.pending_token || (dsharp_lexer.pbuf == (l1 + l2) && !dsharp_lexer.discard)); } #ifdef PRAGMA_TOKENIZE /* * tokenize_string() takes a string as input, and split it into tokens, * reassembling the tokens into a single compressed string generated by * compress_token_list(); this function is used for _Pragma processing. */ #ifndef UCPP_REENTRANT struct lexer_state tokenize_lexer; #endif static char *tokenize_string(pCPP_ struct lexer_state *ls, char *buf) { struct token_fifo tf; size_t bl = strlen(buf); tokenize_lexer.input = 0; tokenize_lexer.input_string = (unsigned char *)buf; tokenize_lexer.pbuf = 0; tokenize_lexer.ebuf = bl; tokenize_lexer.discard = 1; tokenize_lexer.flags = ls->flags | LEXER; tokenize_lexer.pending_token = 0; tf.art = tf.nt = 0; while (!next_token(aCPP_ &tokenize_lexer)) { struct token t, *ct = tokenize_lexer.ctok; if (ttWHI(ct->type)) continue; t = *ct; if (S_TOKEN(t.type)) t.name = sdup(t.name); aol(tf.t, tf.nt, t, TOKEN_LIST_MEMG); } if (tokenize_lexer.pbuf < bl) goto tokenize_error; return (char *)((compress_token_list(&tf)).t); tokenize_error: if (tf.nt) { for (tf.art = 0; tf.art < tf.nt; tf.art ++) if (S_TOKEN(tf.t[tf.art].type)) freemem(tf.t[tf.art].name); freemem(tf.t); } return 0; } #endif /* * stringify_string() has a self-explanatory name. It is called when * the # operator is used in a macro and a string constant must be * stringified. */ static inline char *stringify_string(char *x) { size_t l; int i, inside_str = 0, inside_cc = 0, must_quote, has_quoted = 0; char *y, *d; for (i = 0; i < 2; i ++) { if (i) d[0] = '"'; for (l = 1, y = x; *y; y ++, l ++) { must_quote = 0; if (inside_cc) { if (*y == '\\') { must_quote = 1; has_quoted = 1; } else if (!has_quoted && *y == '\'') inside_cc = 0; } else if (inside_str) { if (*y == '"' || *y == '\\') must_quote = 1; if (*y == '\\') has_quoted = 1; else if (!has_quoted && *y == '"') inside_str = 0; } else if (*y == '"') { inside_str = 1; must_quote = 1; } else if (*y == '\'') { inside_cc = 1; } if (must_quote) { if (i) d[l] = '\\'; l ++; } if (i) d[l] = *y; } if (!i) d = getmem(l + 2); if (i) { d[l] = '"'; d[l + 1] = 0; } } return d; } /* * stringify() produces a constant string, result of the # operator * on a list of tokens. */ static char *stringify(struct token_fifo *tf) { size_t tlen; size_t i; char *x, *y; for (tlen = 0, i = 0; i < tf->nt; i ++) if (tf->t[i].type < CPPERR && tf->t[i].type != OPT_NONE) tlen += strlen(token_name(tf->t + i)); if (tlen == 0) return sdup("\"\""); x = getmem(tlen + 1); for (tlen = 0, i = 0; i < tf->nt; i ++) { if (tf->t[i].type >= CPPERR || tf->t[i].type == OPT_NONE) continue; strcpy(x + tlen, token_name(tf->t + i)); tlen += strlen(token_name(tf->t + i)); } /* no need to add a trailing 0: strcpy() did that (and the string is not empty) */ y = stringify_string(x); freemem(x); return y; } /* * Two strings evaluated at initialization time, to handle the __TIME__ * and __DATE__ special macros. * * C99 specifies that these macros should remain constant throughout * the whole preprocessing. */ #ifndef UCPP_REENTRANT char compile_time[12], compile_date[24]; #endif /* * substitute_macro() performs the macro substitution. It is called when * an identifier recognized as a macro name has been found; this function * tries to collect the arguments (if needed), applies # and ## operators * and perform recursive and nested macro expansions. * * In the substitution of a macro, we remove all newlines that were in the * arguments. This might confuse error reporting (which could report * erroneous line numbers) or have worse effect is the preprocessor is * used for another language pickier than C. Since the interface between * the preprocessor and the compiler is not fully specified, I believe * that this is no violation of the standard. Comments welcome. * * We take tokens from tfi. If tfi has no more tokens to give: we may * take some tokens from ls to complete a call (fetch arguments) if * and only if penury is non zero. */ int substitute_macro(pCPP_ struct lexer_state *ls, struct macro *m, struct token_fifo *tfi, int penury, int reject_nested, long l) { char *mname = HASH_ITEM_NAME(m); struct token_fifo *atl, etl; struct token t, *ct; int i, save_nest = m->nest; size_t save_art, save_tfi, etl_limit; int ltwds, ntwds, ltwws; int pragma_op = 0; /* * Reject the replacement, if we are already inside the macro. */ if (m->nest > reject_nested) { t.type = NAME; t.line = ls->line; t.name = mname; print_token(aCPP_ ls, &t, 0); return 0; } /* * put a separation from preceeding tokens */ print_space(ls); /* * Check if the macro is a special one. */ if ((i = check_special_macro(aCPP_ mname)) >= MAC_SPECIAL) { /* we have a special macro */ switch (i) { char buf[30], *bbuf, *cfn; case MAC_LINE: t.type = NUMBER; t.line = l; sprintf(buf, "%ld", l); t.name = buf; print_space(ls); print_token(aCPP_ ls, &t, 0); break; case MAC_FILE: t.type = STRING; t.line = l; cfn = current_long_filename ? current_long_filename : current_filename; bbuf = getmem(2 * strlen(cfn) + 3); { char *c, *d; int lcwb = 0; bbuf[0] = '"'; for (c = cfn, d = bbuf + 1; *c; c ++) { if (*c == '\\') { if (lcwb) continue; *(d ++) = '\\'; lcwb = 1; } else lcwb = 0; *(d ++) = *c; } *(d ++) = '"'; *(d ++) = 0; } t.name = bbuf; print_space(ls); print_token(aCPP_ ls, &t, 0); freemem(bbuf); break; case MAC_DATE: t.type = STRING; t.line = l; t.name = compile_date; print_space(ls); print_token(aCPP_ ls, &t, 0); break; case MAC_TIME: t.type = STRING; t.line = l; t.name = compile_time; print_space(ls); print_token(aCPP_ ls, &t, 0); break; case MAC_STDC: t.type = NUMBER; t.line = l; t.name = "1"; print_space(ls); print_token(aCPP_ ls, &t, 0); break; case MAC_PRAGMA: if (reject_nested > 0) { /* do not replace _Pragma() unless toplevel */ t.type = NAME; t.line = ls->line; t.name = mname; print_token(aCPP_ ls, &t, 0); return 0; } pragma_op = 1; goto collect_args; #ifdef AUDIT default: ouch(aCPP_ "unbekanntes fliegendes macro"); #endif } return 0; } /* * If the macro has arguments, collect them. */ collect_args: if (m->narg >= 0) { unsigned long save_flags = ls->flags; int wr = 0; ls->flags |= LEXER; if (m->narg > 0 || m->vaarg) atl = getmem((m->narg + m->vaarg) * sizeof(struct token_fifo)); switch (collect_arguments(aCPP_ ls, tfi, penury, atl, m->narg, m->vaarg, &wr)) { case 1: /* the macro expected arguments, but we did not find any; the last read token should be read again. */ ls->flags = save_flags | READ_AGAIN; goto no_argument_next; case 2: tfi->art --; /* fall through */ case 3: ls->flags = save_flags; no_argument_next: t.type = NAME; t.line = l; t.name = mname; print_token_nailed(aCPP_ ls, &t, l); if (wr) { t.type = NONE; t.line = l; #ifdef SEMPER_FIDELIS t.name = " "; #endif print_token(aCPP_ ls, &t, 0); goto exit_macro_2; } goto exit_macro_1; case 4: ls->flags = save_flags; goto exit_error_1; } ls->flags = save_flags; } /* * If the macro is _Pragma, and we got here, then we have * exactly one argument. We check it, unstringize it, and * emit a PRAGMA token. */ if (pragma_op) { char *pn; if (atl[0].nt != 1 || atl[0].t[0].type != STRING) { error(aCPP_ ls->line, "invalid argument to _Pragma"); if (atl[0].nt) freemem(atl[0].t); freemem(atl); goto exit_error; } pn = atl[0].t[0].name; if ((pn[0] == '"' && pn[1] == '"') || (pn[0] == 'L' && pn[1] == '"' && pn[2] == '"')) { /* void pragma -- just ignore it */ freemem(atl[0].t); freemem(atl); return 0; } if (ls->flags & TEXT_OUTPUT) { #ifdef PRAGMA_DUMP /* * This code works because we actually evaluate arguments in a * lazy way: we scan a macro argument only if it appears in the * output, and exactly as many times as it appears. Therefore, * _Pragma() will get evaluated just like they should. */ char *c = atl[0].t[0].name, *d; for (d = "\n#pragma "; *d; d ++) put_char(aCPP_ ls, *d); d = (*c == 'L') ? c + 2 : c + 1; for (; *d != '"'; d ++) { if (*d == '\\' && (*(d + 1) == '\\' || *(d + 1) == '"')) { d ++; } put_char(aCPP_ ls, *d); } put_char(aCPP_ ls, '\n'); ls->oline = ls->line; enter_file(aCPP_ ls, ls->flags); #else if (ls->flags & WARN_PRAGMA) warning(aCPP_ ls->line, "_Pragma() ignored and not dumped"); #endif } else if (ls->flags & HANDLE_PRAGMA) { char *c = atl[0].t[0].name, *d, *buf; struct token t; /* a wide string is a string */ if (*c == 'L') c ++; c ++; for (buf = d = getmem(strlen(c)); *c != '"'; c ++) { if (*c == '\\' && (*(c + 1) == '\\' || *(c + 1) == '"')) { *(d ++) = *(++ c); } else *(d ++) = *c; } *d = 0; t.type = PRAGMA; t.line = ls->line; #ifdef PRAGMA_TOKENIZE t.name = tokenize_string(aCPP_ ls, buf); freemem(buf); buf = t.name; if (!buf) { freemem(atl[0].t); freemem(atl); goto exit_error; } #else t.name = buf; #endif aol(ls->toplevel_of->t, ls->toplevel_of->nt, t, TOKEN_LIST_MEMG); throw_away(ls->gf, buf); } freemem(atl[0].t); freemem(atl); return 0; } /* * Now we expand and replace the arguments in the macro; we * also handle '#' and '##'. If we find an argument, that has * to be replaced, we expand it in its own token list, then paste * it. Tricky point: when we paste an argument, we must scan * again the resulting list for further replacements. This * implies problems with regards to nesting self-referencing * macros. * * We do then YAUH (yet another ugly hack): if a macro is replaced, * and nested replacement exhibit the same macro, we mark it with * a negative line number. All produced negative line numbers * must be cleaned in the end. */ #define ZAP_LINE(t) do { \ if ((t).type == NAME) { \ struct macro *zlm = HTT_get(¯os, (t).name); \ if (zlm && zlm->nest > reject_nested) \ (t).line = -1 - (t).line; \ } \ } while (0) #ifdef LOW_MEM save_art = m->cval.rp; m->cval.rp = 0; #else save_art = m->val.art; m->val.art = 0; #endif etl.art = etl.nt = 0; m->nest = reject_nested + 1; ltwds = ntwds = 0; #ifdef LOW_MEM while (m->cval.rp < m->cval.length) { #else while (m->val.art < m->val.nt) { #endif size_t next, z; #ifdef LOW_MEM struct token uu; ct = &uu; ct->line = 1; t.type = ct->type = m->cval.t[m->cval.rp ++]; if (ct->type == MACROARG) { unsigned anum = m->cval.t[m->cval.rp ++]; if (anum >= 128U) anum = ((anum & 127U) << 8) | (unsigned)m->cval.t[m->cval.rp ++]; ct->line = anum; } else if (S_TOKEN(ct->type)) { t.name = ct->name = (char *)(m->cval.t + m->cval.rp); m->cval.rp += 1 + strlen(ct->name); } #ifdef SEMPER_FIDELIS else if (ct->type == OPT_NONE) { t.type = ct->type = NONE; t.name = ct->name = " "; } #endif t.line = ls->line; next = m->cval.rp; if ((next < m->cval.length && (m->cval.t[z = next] == DSHARP || m->cval.t[z = next] == DIG_DSHARP)) || ((next + 1) < m->cval.length && ttWHI(m->cval.t[next]) && (m->cval.t[z = next + 1] == DSHARP || m->cval.t[z = next + 1] == DIG_DSHARP))) { ntwds = 1; m->cval.rp = z; } else ntwds = 0; #else ct = m->val.t + (m->val.art ++); next = m->val.art; t.type = ct->type; t.line = ls->line; #ifdef SEMPER_FIDELIS if (t.type == OPT_NONE) { t.type = NONE; t.name = " "; } else #endif t.name = ct->name; if ((next < m->val.nt && (m->val.t[z = next].type == DSHARP || m->val.t[z = next].type == DIG_DSHARP)) || ((next + 1) < m->val.nt && ttWHI(m->val.t[next].type) && (m->val.t[z = next + 1].type == DSHARP || m->val.t[z = next + 1].type == DIG_DSHARP))) { ntwds = 1; m->val.art = z; } else ntwds = 0; #endif if (ct->type == MACROARG) { #ifdef DSHARP_TOKEN_MERGE int need_opt_space = 1; #endif z = ct->line; /* the argument number is there */ if (ltwds && atl[z].nt != 0 && etl.nt) { if (concat_token(aCPP_ etl.t + (-- etl.nt), atl[z].t)) { warning(aCPP_ ls->line, "operator '##' " "produced the invalid token " "'%s%s'", token_name(etl.t + etl.nt), token_name(atl[z].t)); #if 0 /* obsolete */ #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif etl.nt ++; goto exit_error_2; #endif etl.nt ++; atl[z].art = 0; #ifdef DSHARP_TOKEN_MERGE need_opt_space = 0; #endif } else { if (etl.nt == 0) freemem(etl.t); else if (!ttWHI(etl.t[etl.nt - 1] .type)) { t.type = OPT_NONE; t.line = ls->line; aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } t.type = dsharp_lexer.ctok->type; t.line = ls->line; if (S_TOKEN(t.type)) { t.name = sdup(dsharp_lexer .ctok->name); throw_away(ls->gf, t.name); } ZAP_LINE(t); aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); atl[z].art = 1; } } else atl[z].art = 0; if ( #ifdef DSHARP_TOKEN_MERGE need_opt_space && #endif atl[z].art < atl[z].nt && (!etl.nt || !ttWHI(etl.t[etl.nt - 1].type))) { t.type = OPT_NONE; t.line = ls->line; aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } if (ltwds || ntwds) { while (atl[z].art < atl[z].nt) { t = atl[z].t[atl[z].art ++]; t.line = ls->line; ZAP_LINE(t); aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } } else { struct token_fifo *save_tf; unsigned long save_flags; int ret = 0; atl[z].art = 0; save_tf = ls->output_fifo; ls->output_fifo = &etl; save_flags = ls->flags; ls->flags |= LEXER; while (atl[z].art < atl[z].nt) { struct macro *nm; struct token *cct; cct = atl[z].t + (atl[z].art ++); if (cct->type == NAME && cct->line >= 0 && (nm = HTT_get(¯os, cct->name)) && nm->nest <= (reject_nested + 1)) { ret |= substitute_macro(aCPP_ ls, nm, atl + z, 0, reject_nested + 1, l); continue; } t = *cct; ZAP_LINE(t); aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } ls->output_fifo = save_tf; ls->flags = save_flags; if (ret) { #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif goto exit_error_2; } } if (!ntwds && (!etl.nt || !ttWHI(etl.t[etl.nt - 1].type))) { t.type = OPT_NONE; t.line = ls->line; aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } ltwds = 0; continue; } /* * This code is definitely cursed. * * For the extremely brave reader who tries to understand * what is happening: ltwds is a flag meaning "last token * was double-sharp" and ntwds means "next token will be * double-sharp". The tokens are from the macro definition, * and scanned from left to right. Arguments that are * not implied into a #/## construction are macro-expanded * seperately, then included into the token stream. */ if (ct->type == DSHARP || ct->type == DIG_DSHARP) { if (ltwds) { error(aCPP_ ls->line, "quad sharp"); #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif goto exit_error_2; } #ifdef LOW_MEM if (m->cval.rp < m->cval.length && ttMWS(m->cval.t[m->cval.rp])) m->cval.rp ++; #else if (m->val.art < m->val.nt && ttMWS(m->val.t[m->val.art].type)) m->val.art ++; #endif ltwds = 1; continue; } else if (ltwds && etl.nt != 0) { if (concat_token(aCPP_ etl.t + (-- etl.nt), ct)) { warning(aCPP_ ls->line, "operator '##' produced " "the invalid token '%s%s'", token_name(etl.t + etl.nt), token_name(ct)); #if 0 /* obsolete */ #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif etl.nt ++; goto exit_error_2; #endif etl.nt ++; } else { if (etl.nt == 0) freemem(etl.t); t.type = dsharp_lexer.ctok->type; t.line = ls->line; if (S_TOKEN(t.type)) { t.name = sdup(dsharp_lexer.ctok->name); throw_away(ls->gf, t.name); } ct = &t; } } ltwds = 0; #ifdef LOW_MEM if ((ct->type == SHARP || ct->type == DIG_SHARP) && next < m->cval.length && (m->cval.t[next] == MACROARG || (ttMWS(m->cval.t[next]) && (next + 1) < m->cval.length && m->cval.t[next + 1] == MACROARG))) { unsigned anum; #else if ((ct->type == SHARP || ct->type == DIG_SHARP) && next < m->val.nt && (m->val.t[next].type == MACROARG || (ttMWS(m->val.t[next].type) && (next + 1) < m->val.nt && m->val.t[next + 1].type == MACROARG))) { #endif /* * We have a # operator followed by (an optional * whitespace and) a macro argument; this means * stringification. So be it. */ #ifdef LOW_MEM if (ttMWS(m->cval.t[next])) m->cval.rp ++; #else if (ttMWS(m->val.t[next].type)) m->val.art ++; #endif t.type = STRING; #ifdef LOW_MEM anum = m->cval.t[++ m->cval.rp]; if (anum >= 128U) anum = ((anum & 127U) << 8) | (unsigned)m->cval.t[++ m->cval.rp]; t.name = stringify(atl + anum); m->cval.rp ++; #else t.name = stringify(atl + (size_t)(m->val.t[m->val.art ++].line)); #endif throw_away(ls->gf, t.name); ct = &t; /* * There is no need for extra spaces here. */ } t = *ct; ZAP_LINE(t); aol(etl.t, etl.nt, t, TOKEN_LIST_MEMG); } #ifdef LOW_MEM m->cval.rp = save_art; #else m->val.art = save_art; #endif /* * Now etl contains the expanded macro, to be parsed again for * further expansions -- much easier, since '#' and '##' have * already been handled. * However, we might need some input from tfi. So, we paste * the contents of tfi after etl, and we put back what was * not used. * * Some adjacent spaces are merged; only unique NONE, or sequences * OPT_NONE NONE are emitted. */ etl_limit = etl.nt; if (tfi) { save_tfi = tfi->art; while (tfi->art < tfi->nt) aol(etl.t, etl.nt, tfi->t[tfi->art ++], TOKEN_LIST_MEMG); } ltwws = 0; while (etl.art < etl_limit) { struct macro *nm; ct = etl.t + (etl.art ++); if (ct->type == NAME && ct->line >= 0 && (nm = HTT_get(¯os, ct->name))) { if (substitute_macro(aCPP_ ls, nm, &etl, penury, reject_nested, l)) { m->nest = save_nest; goto exit_error_2; } ltwws = 0; continue; } if (ttMWS(ct->type)) { if (ltwws == 1) { if (ct->type == OPT_NONE) continue; ltwws = 2; } else if (ltwws == 2) continue; else if (ct->type == OPT_NONE) ltwws = 1; else ltwws = 2; } else ltwws = 0; if (ct->line >= 0) ct->line = l; print_token(aCPP_ ls, ct, reject_nested ? 0 : l); } if (etl.nt) freemem(etl.t); if (tfi) { tfi->art = save_tfi + (etl.art - etl_limit); } exit_macro_1: print_space(ls); exit_macro_2: for (i = 0; i < (m->narg + m->vaarg); i ++) if (atl[i].nt) freemem(atl[i].t); if (m->narg > 0 || m->vaarg) freemem(atl); m->nest = save_nest; return 0; exit_error_2: if (etl.nt) freemem(etl.t); exit_error_1: for (i = 0; i < (m->narg + m->vaarg); i ++) if (atl[i].nt) freemem(atl[i].t); if (m->narg > 0 || m->vaarg) freemem(atl); m->nest = save_nest; exit_error: return 1; } /* * print already defined macros */ void print_defines(pCPP) { #ifdef UCPP_REENTRANT HTT_scan_arg(¯os, print_macro, aCPP); #else HTT_scan(¯os, print_macro); #endif } /* * find out if a macro is defined */ int is_macro_defined(pCPP_ const char *name) { return HTT_get(¯os, name) != NULL; } /* * get definition for a macro */ char *get_macro_definition(pCPP_ const char *name, size_t *plen) { struct macro *m = HTT_get(¯os, name); if (m) { size_t len = get_macro_def(m, 0); char *def = getmem(len + 1); (void) get_macro_def(m, def); if (plen) *plen = len; return def; } return NULL; } /* * free macro definition returned by get_macro_definition() */ void free_macro_definition(char *def) { if (def) freemem(def); } /* * iterate through all macros */ void iterate_macros(pCPP_ void (*func)(const struct macro_info *), void *arg, unsigned long flags) { struct macro_iter_arg a; #ifdef UCPP_REENTRANT a.re = aCPP; #endif a.flags = flags; a.func = func; a.info.arg = arg; HTT_scan_arg(¯os, macro_iter, &a); } /* * define_macro() defines a new macro, whom definition is given in * the command-line syntax: macro=def * The '=def' part is optional. * * It returns non-zero on error. */ int define_macro(pCPP_ struct lexer_state *ls, char *def) { char *c = sdup(def), *d; int with_def = 0; int ret = 0; for (d = c; *d && *d != '='; d ++); if (*d) { *d = ' '; with_def = 1; } if (with_def) { struct lexer_state lls; size_t n = strlen(c) + 1; if (c == d) { error(aCPP_ -1, "void macro name"); ret = 1; } else { *(c + n - 1) = '\n'; init_buf_lexer_state(&lls, 0); lls.flags = ls->flags | LEXER; lls.input = 0; lls.input_string = (unsigned char *)c; lls.pbuf = 0; lls.ebuf = n; lls.line = -1; ret = handle_define(aCPP_ &lls); free_lexer_state(&lls); } } else { struct macro *m; if (!*c) { error(aCPP_ -1, "void macro name"); ret = 1; } else if ((m = HTT_get(¯os, c)) #ifdef LOW_MEM && (m->cval.length != 3 || m->cval.t[0] != NUMBER || strcmp((char *)(m->cval.t + 1), "1"))) { #else && (m->val.nt != 1 || m->val.t[0].type != NUMBER || strcmp(m->val.t[0].name, "1"))) { #endif error(aCPP_ -1, "macro %s already defined", c); ret = 1; } else { #ifndef LOW_MEM struct token t; #endif m = new_macro(); #ifdef LOW_MEM m->cval.length = 3; m->cval.t = getmem(3); m->cval.t[0] = NUMBER; m->cval.t[1] = '1'; m->cval.t[2] = 0; #else t.type = NUMBER; t.name = sdup("1"); aol(m->val.t, m->val.nt, t, TOKEN_LIST_MEMG); #endif HTT_put(¯os, m, c); } } freemem(c); return ret; } /* * undef_macro() undefines the macro whom name is given as "def"; * it is not an error to try to undef a macro that does not exist. * * It returns non-zero on error (undefinition of a special macro, * void macro name). */ int undef_macro(pCPP_ struct lexer_state *ls, char *def) { char *c = def; (void) ls; /* stop compiler from complaining about unused parameter */ if (!*c) { error(aCPP_ -1, "void macro name"); return 1; } if (HTT_get(¯os, c)) { if (check_special_macro(aCPP_ c)) { error(aCPP_ -1, "trying to undef special macro %s", c); return 1; } else HTT_del(¯os, c); } return 0; } /* * We saw a #ifdef directive. Parse the line. * return value: 1 if the macro is defined, 0 if it is not, -1 on error */ int handle_ifdef(pCPP_ struct lexer_state *ls) { while (!next_token(aCPP_ ls)) { int tgd = 1; if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { int x = (HTT_get(¯os, ls->ctok->name) != 0); while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage " "in #ifdef"); tgd = 0; } return x; } error(aCPP_ ls->line, "illegal macro name for #ifdef"); while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage in " "#ifdef"); tgd = 0; } return -1; } error(aCPP_ ls->line, "unfinished #ifdef"); return -1; } /* * for #undef * return value: 1 on error, 0 on success. Undefining a macro that was * already not defined is not an error. */ int handle_undef(pCPP_ struct lexer_state *ls) { while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { struct macro *m = HTT_get(¯os, ls->ctok->name); int tgd = 1; if (m != 0) { if (check_special_macro(aCPP_ ls->ctok->name)) { error(aCPP_ ls->line, "trying to undef " "special macro %s", ls->ctok->name); goto undef_error; } if (emit_defines) fprintf(emit_output, "#undef %s\n", ls->ctok->name); HTT_del(¯os, ls->ctok->name); } while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage " "in #undef"); tgd = 0; } return 0; } error(aCPP_ ls->line, "illegal macro name for #undef"); undef_error: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE); return 1; } error(aCPP_ ls->line, "unfinished #undef"); return 1; } /* * for #ifndef * return value: 0 if the macro is defined, 1 if it is not, -1 on error. */ int handle_ifndef(pCPP_ struct lexer_state *ls) { while (!next_token(aCPP_ ls)) { int tgd = 1; if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { int x = (HTT_get(¯os, ls->ctok->name) == 0); while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage " "in #ifndef"); tgd = 0; } if (protect_detect.state == 1) { protect_detect.state = 2; protect_detect.macro = sdup(ls->ctok->name); } return x; } error(aCPP_ ls->line, "illegal macro name for #ifndef"); while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) if (tgd && !ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ ls->line, "trailing garbage in " "#ifndef"); tgd = 0; } return -1; } error(aCPP_ ls->line, "unfinished #ifndef"); return -1; } /* * erase the macro table. */ void wipe_macros(pCPP) { if (macros_init_done) HTT_kill(¯os); macros_init_done = 0; } /* * initialize the macro table */ void init_macros(pCPP) { wipe_macros(aCPP); HTT_init(¯os, del_macro _aCLONE(clone_macro)); macros_init_done = 1; if (!no_special_macros) add_special_macros(aCPP); } /* * find a macro from its name */ struct macro *get_macro(pCPP_ char *name) { return HTT_get(¯os, name); } Convert-Binary-C-0.76/ucpp/ppdir.pl0000644000175000001440000000271611550664632015643 0ustar mhxusers################################################################################ # # PROGRAM: ppdir.pl # ################################################################################ # # DESCRIPTION: Generate tokenizer code for C preprocessor directives # ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:30 +0200 $ # $Revision: 6 $ # $Source: /ucpp/ppdir.pl $ # ################################################################################ # # Copyright (c) 2004-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Devel::Tokenizer::C; use strict; my @PP = qw( define undef if ifdef ifndef else elif endif include include_next pragma error line assert unassert ident ); my $file = shift; my $enums = join "\n", map " PPDIR_\U$_\E,", @PP; my $switch = Devel::Tokenizer::C->new(TokenFunc => sub { "return PPDIR_\U$_[0]\E;\n" }, TokenString => 'ppdir') ->add_tokens(@PP)->generate; open OUT, ">$file" or die $!; print OUT < #include #include #include "mem.h" #include "cpp.h" int main(int argc, char *argv[]) { int i, r; struct CPP *cpp; struct lexer_state ls; cpp = new_cpp(); /* step 1 */ init_cpp(cpp); /* step 2 */ cpp->no_special_macros = 0; cpp->emit_defines = cpp->emit_assertions = 0; /* step 3 -- with assertions */ init_tables(cpp, 1); /* step 4 -- no default include path */ init_include_path(cpp, 0); /* step 5 -- no need to reset the two emit_* variables set in 2 */ cpp->emit_dependencies = 0; /* step 6 -- we work with stdin, this is not a real filename */ set_init_filename(cpp, "[stdin]", 0); /* step 7 -- we make sure that assertions are on, and pragma are handled */ init_lexer_state(&ls); init_lexer_mode(&ls); ls.flags |= HANDLE_ASSERTIONS | HANDLE_PRAGMA | LINE_NUM; /* step 8 -- input is from stdin */ ls.input = stdin; /* step 9 -- we do not have any macro to define, but we add any argument as an include path */ for (i = 1; i < argc; i ++) add_incpath(cpp, argv[i]); /* step 10 -- we are a lexer and we want CONTEXT tokens */ enter_file(cpp, &ls, ls.flags); /* read tokens until end-of-input is reached -- errors (non-zero return values different from CPPERR_EOF) are ignored */ while ((r = lex(cpp, &ls)) < CPPERR_EOF) { if (r) { /* error condition -- no token was retrieved */ continue; } /* we print each token: its numerical value, and its string content; if this is a PRAGMA token, the string content is in fact a compressed token list, that we uncompress and print. */ if (ls.ctok->type == PRAGMA) { unsigned char *c = (unsigned char *)(ls.ctok->name); printf("line %ld: <#pragma>\n", ls.line); for (; *c; c ++) { int t = *c; if (STRING_TOKEN(t)) { printf(" <%2d> ", t); for (c ++; *c != PRAGMA_TOKEN_END; c ++) putchar(*c); putchar('\n'); } else { printf(" <%2d> `%s'\n", t, operators_name[t]); } } } else if (ls.ctok->type == CONTEXT) { printf("new context: file '%s', line %ld\n", ls.ctok->name, ls.ctok->line); } else if (ls.ctok->type == NEWLINE) { printf("[newline]\n"); } else { printf("line %ld: <%2d> `%s'\n", ls.ctok->line, ls.ctok->type, STRING_TOKEN(ls.ctok->type) ? ls.ctok->name : operators_name[ls.ctok->type]); } } /* give back memory and exit */ wipeout(cpp); free_lexer_state(&ls); del_cpp(cpp); #ifdef MEM_DEBUG report_leaks(); #endif return 0; } Convert-Binary-C-0.76/ucpp/scanppd.c0000644000175000001440000001463311550664632015765 0ustar mhxusersstatic enum { PPDIR_DEFINE, PPDIR_UNDEF, PPDIR_IF, PPDIR_IFDEF, PPDIR_IFNDEF, PPDIR_ELSE, PPDIR_ELIF, PPDIR_ENDIF, PPDIR_INCLUDE, PPDIR_INCLUDE_NEXT, PPDIR_PRAGMA, PPDIR_ERROR, PPDIR_LINE, PPDIR_ASSERT, PPDIR_UNASSERT, PPDIR_IDENT, PPDIR_UNKNOWN } scan_pp_directive(const char *ppdir) { switch( ppdir[0] ) { case 'a': if( ppdir[1] == 's' && ppdir[2] == 's' && ppdir[3] == 'e' && ppdir[4] == 'r' && ppdir[5] == 't' && ppdir[6] == '\0' ) { /* assert */ return PPDIR_ASSERT; } goto unknown; case 'd': if( ppdir[1] == 'e' && ppdir[2] == 'f' && ppdir[3] == 'i' && ppdir[4] == 'n' && ppdir[5] == 'e' && ppdir[6] == '\0' ) { /* define */ return PPDIR_DEFINE; } goto unknown; case 'e': switch( ppdir[1] ) { case 'l': switch( ppdir[2] ) { case 'i': if( ppdir[3] == 'f' && ppdir[4] == '\0' ) { /* elif */ return PPDIR_ELIF; } goto unknown; case 's': if( ppdir[3] == 'e' && ppdir[4] == '\0' ) { /* else */ return PPDIR_ELSE; } goto unknown; default: goto unknown; } case 'n': if( ppdir[2] == 'd' && ppdir[3] == 'i' && ppdir[4] == 'f' && ppdir[5] == '\0' ) { /* endif */ return PPDIR_ENDIF; } goto unknown; case 'r': if( ppdir[2] == 'r' && ppdir[3] == 'o' && ppdir[4] == 'r' && ppdir[5] == '\0' ) { /* error */ return PPDIR_ERROR; } goto unknown; default: goto unknown; } case 'i': switch( ppdir[1] ) { case 'd': if( ppdir[2] == 'e' && ppdir[3] == 'n' && ppdir[4] == 't' && ppdir[5] == '\0' ) { /* ident */ return PPDIR_IDENT; } goto unknown; case 'f': switch( ppdir[2] ) { case '\0': { /* if */ return PPDIR_IF; } goto unknown; case 'd': if( ppdir[3] == 'e' && ppdir[4] == 'f' && ppdir[5] == '\0' ) { /* ifdef */ return PPDIR_IFDEF; } goto unknown; case 'n': if( ppdir[3] == 'd' && ppdir[4] == 'e' && ppdir[5] == 'f' && ppdir[6] == '\0' ) { /* ifndef */ return PPDIR_IFNDEF; } goto unknown; default: goto unknown; } case 'n': switch( ppdir[2] ) { case 'c': switch( ppdir[3] ) { case 'l': switch( ppdir[4] ) { case 'u': switch( ppdir[5] ) { case 'd': switch( ppdir[6] ) { case 'e': switch( ppdir[7] ) { case '\0': { /* include */ return PPDIR_INCLUDE; } goto unknown; case '_': if( ppdir[8] == 'n' && ppdir[9] == 'e' && ppdir[10] == 'x' && ppdir[11] == 't' && ppdir[12] == '\0' ) { /* include_next */ return PPDIR_INCLUDE_NEXT; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'l': if( ppdir[1] == 'i' && ppdir[2] == 'n' && ppdir[3] == 'e' && ppdir[4] == '\0' ) { /* line */ return PPDIR_LINE; } goto unknown; case 'p': if( ppdir[1] == 'r' && ppdir[2] == 'a' && ppdir[3] == 'g' && ppdir[4] == 'm' && ppdir[5] == 'a' && ppdir[6] == '\0' ) { /* pragma */ return PPDIR_PRAGMA; } goto unknown; case 'u': switch( ppdir[1] ) { case 'n': switch( ppdir[2] ) { case 'a': if( ppdir[3] == 's' && ppdir[4] == 's' && ppdir[5] == 'e' && ppdir[6] == 'r' && ppdir[7] == 't' && ppdir[8] == '\0' ) { /* unassert */ return PPDIR_UNASSERT; } goto unknown; case 'd': if( ppdir[3] == 'e' && ppdir[4] == 'f' && ppdir[5] == '\0' ) { /* undef */ return PPDIR_UNDEF; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } unknown: return PPDIR_UNKNOWN; } Convert-Binary-C-0.76/ucpp/config.h0000644000175000001440000000637011550664631015605 0ustar mhxusers/******************************************************************************* * * HEADER: config.h * ******************************************************************************** * * DESCRIPTION: Configuration for ucpp * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/11 22:49:56 +0200 $ * $Revision: 25 $ * $Source: /ucpp/config.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _UCPP_CONFIG_H #define _UCPP_CONFIG_H #include "ctlib/arch.h" /*-------------------------*/ /* configure ucpp features */ /*-------------------------*/ #define UCPP_REENTRANT #define UCPP_CLONE #define NO_UCPP_COPY_LINE /*------------------------*/ /* configure ucpp pragmas */ /*------------------------*/ #define PRAGMA_TOKENIZE #define PRAGMA_TOKEN_END ((unsigned char)'\n') /*-------------*/ /* no defaults */ /*-------------*/ #define STD_INCLUDE_PATH 0 #define STD_ASSERT 0 #define STD_MACROS 0 /*-------------------------*/ /* 64-bit integer handling */ /*-------------------------*/ #if ARCH_NATIVE_64_BIT_INTEGER #define NATIVE_UINTMAX u_64 #define NATIVE_INTMAX i_64 #define NATIVE_SIGNED i_64 #define NATIVE_UNSIGNED u_64 #define NATIVE_UNSIGNED_BITS 64 #define NATIVE_UNSIGNED_ONE 1ULL #define NATIVE_SIGNED_MIN (-9223372036854775807LL - 1) #define NATIVE_SIGNED_MAX 9223372036854775807LL #else #define SIMUL_UINTMAX #undef NATIVE_SIGNED #define SIMUL_ARITH_SUBTYPE u_32 #define SIMUL_SUBTYPE_BITS 32 #define SIMUL_NUMBITS 64 #endif /*----------------------------------*/ /* configure preprocessor and lexer */ /*----------------------------------*/ #define DEFAULT_CPP_FLAGS (DISCARD_COMMENTS | WARN_STANDARD \ | WARN_PRAGMA | FAIL_SHARP | MACRO_VAARG \ | CPLUSPLUS_COMMENTS | LINE_NUM | TEXT_OUTPUT \ | KEEP_OUTPUT | HANDLE_TRIGRAPHS \ | HANDLE_ASSERTIONS) #define DEFAULT_LEXER_FLAGS (DISCARD_COMMENTS | FAIL_SHARP | LEXER \ | HANDLE_TRIGRAPHS | HANDLE_ASSERTIONS) /*-------------------*/ /* memory management */ /*-------------------*/ #include /* * Under some circumstances, setjmp() on Win64 does deadlock when the * memory containing the jmpbuf was allocated through the Perl API. * * Apparently, using standard malloc/free fixes the deadlock, yet I * don't have any explanation for what's really going on. * * I'll appreciate any enlightenment. :-) */ #ifndef _WIN64 extern void *CBC_malloc(size_t size); extern void *CBC_realloc(void *ptr, size_t size); extern void CBC_free(void *ptr); #define UCPP_MALLOC CBC_malloc #define UCPP_REALLOC CBC_realloc #define UCPP_FREE CBC_free #endif /*-------------*/ /* other stuff */ /*-------------*/ #define ARITHMETIC_CHECKS #define LOW_MEM #define NO_UCPP_ERROR_FUNCTIONS #define MAX_CHAR_VAL 256 #define UCPP_PUBLIC_PREFIX ucpp_public_ #define UCPP_PRIVATE_PREFIX ucpp_private_ #endif /* _UCPP_CONFIG_H */ Convert-Binary-C-0.76/ucpp/eval.c0000644000175000001440000004401111550664631015254 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "tune.h" #include #include #include #include #include "ucppi.h" #include "mem.h" #ifdef UCPP_REENTRANT #define emit_eval_warnings (REENTR->_eval.emit_eval_warnings) #else JMP_BUF eval_exception; long eval_line; static int emit_eval_warnings; #endif /* * If you want to hardcode a conversion table, define a static array * of 256 int, and make transient_characters point to it. */ #ifndef UCPP_REENTRANT int *transient_characters = 0; #endif #define OCTAL(x) ((x) >= '0' && (x) <= '7') #define DECIM(x) ((x) >= '0' && (x) <= '9') #define HEXAD(x) (DECIM(x) \ || (x) == 'a' || (x) == 'b' || (x) == 'c' \ || (x) == 'd' || (x) == 'e' || (x) == 'f' \ || (x) == 'A' || (x) == 'B' || (x) == 'C' \ || (x) == 'D' || (x) == 'E' || (x) == 'F') #define OVAL(x) ((int)((x) - '0')) #define DVAL(x) ((int)((x) - '0')) #define HVAL(x) (DECIM(x) ? DVAL(x) \ : (x) == 'a' || (x) == 'A' ? 10 \ : (x) == 'b' || (x) == 'B' ? 11 \ : (x) == 'c' || (x) == 'C' ? 12 \ : (x) == 'd' || (x) == 'D' ? 13 \ : (x) == 'e' || (x) == 'E' ? 14 : 15) #define ARITH_TYPENAME big #define ARITH_FUNCTION_HEADER static inline #ifdef UCPP_REENTRANT #define pARI pCPP #define aARI aCPP #endif #define ARITH_ERROR(type) z_error(aCPP_ type) static void z_error(pCPP_ int type); #ifdef ARITHMETIC_CHECKS #define ARITH_WARNING(type) z_warn(aCPP_ type) static void z_warn(pCPP_ int type); #endif #include "arith.c" static void z_error(pCPP_ int type) { switch (type) { case ARITH_EXCEP_SLASH_D: error(aCPP_ eval_line, "division by 0"); break; case ARITH_EXCEP_SLASH_O: error(aCPP_ eval_line, "overflow on division"); break; case ARITH_EXCEP_PCT_D: error(aCPP_ eval_line, "division by 0 on modulus operator"); break; case ARITH_EXCEP_CONST_O: error(aCPP_ eval_line, "constant too large for destination type"); break; #ifdef AUDIT default: ouch(aCPP_ "erroneous integer error: %d", type); #endif } throw(eval_exception); } #ifdef ARITHMETIC_CHECKS static void z_warn(pCPP_ int type) { switch (type) { case ARITH_EXCEP_CONV_O: warning(aCPP_ eval_line, "overflow on integer conversion"); break; case ARITH_EXCEP_NEG_O: warning(aCPP_ eval_line, "overflow on unary minus"); break; case ARITH_EXCEP_NOT_T: warning(aCPP_ eval_line, "bitwise inversion yields trap representation"); break; case ARITH_EXCEP_PLUS_O: warning(aCPP_ eval_line, "overflow on addition"); break; case ARITH_EXCEP_PLUS_U: warning(aCPP_ eval_line, "underflow on addition"); break; case ARITH_EXCEP_MINUS_O: warning(aCPP_ eval_line, "overflow on subtraction"); break; case ARITH_EXCEP_MINUS_U: warning(aCPP_ eval_line, "underflow on subtraction"); break; case ARITH_EXCEP_AND_T: warning(aCPP_ eval_line, "bitwise AND yields trap representation"); break; case ARITH_EXCEP_XOR_T: warning(aCPP_ eval_line, "bitwise XOR yields trap representation"); break; case ARITH_EXCEP_OR_T: warning(aCPP_ eval_line, "bitwise OR yields trap representation"); break; case ARITH_EXCEP_LSH_W: warning(aCPP_ eval_line, "left shift count greater than " "or equal to type width"); break; case ARITH_EXCEP_LSH_C: warning(aCPP_ eval_line, "left shift count negative"); break; case ARITH_EXCEP_LSH_O: warning(aCPP_ eval_line, "overflow on left shift"); break; case ARITH_EXCEP_RSH_W: warning(aCPP_ eval_line, "right shift count greater than " "or equal to type width"); break; case ARITH_EXCEP_RSH_C: warning(aCPP_ eval_line, "right shift count negative"); break; case ARITH_EXCEP_RSH_N: warning(aCPP_ eval_line, "right shift of negative value"); break; case ARITH_EXCEP_STAR_O: warning(aCPP_ eval_line, "overflow on multiplication"); break; case ARITH_EXCEP_STAR_U: warning(aCPP_ eval_line, "underflow on multiplication"); break; #ifdef AUDIT default: ouch(aCPP_ "erroneous integer warning: %d", type); #endif } } #endif typedef struct { int sign; union { u_big uv; s_big sv; } u; } ppval; static int boolval(pCPP_ ppval x) { return x.sign ? big_s_lval(aCPP_ x.u.sv) : big_u_lval(aCPP_ x.u.uv); } #if !defined(WCHAR_SIGNEDNESS) # if CHAR_MIN == 0 # define WCHAR_SIGNEDNESS 0 # else # define WCHAR_SIGNEDNESS 1 # endif #endif /* * Check the suffix, return 1 if it is signed, 0 otherwise. 1 is * returned for a void suffix. Legal suffixes are: * unsigned: u U ul uL Ul UL lu Lu lU LU ull uLL Ull ULL llu LLu llU LLU * signed: l L ll LL */ static int pp_suffix(pCPP_ char *d, char *refc) { if (!*d) return 1; if (*d == 'u' || *d == 'U') { if (!*(++ d)) return 0; if (*d == 'l' || *d == 'L') { char *e = d + 1; if (*e && *e != *d) goto suffix_error; if (!*e || !*(e + 1)) return 0; goto suffix_error; } goto suffix_error; } if (*d == 'l' || *d == 'L') { if (!*(++ d)) return 1; if (*d == *(d - 1)) { d ++; if (!*d) return 1; } if (*d == 'u' || *d == 'U') { d ++; if (!*d) return 0; } goto suffix_error; } suffix_error: error(aCPP_ eval_line, "invalid integer constant '%s'", refc); throw(eval_exception); return 666; } static unsigned long pp_char(pCPP_ char *c, char *refc) { unsigned long r = 0; c ++; if (*c == '\\') { int i; c ++; switch (*c) { case 'n': r = '\n'; c ++; break; case 't': r = '\t'; c ++; break; case 'v': r = '\v'; c ++; break; case 'b': r = '\b'; c ++; break; case 'r': r = '\r'; c ++; break; case 'f': r = '\f'; c ++; break; case 'a': r = '\a'; c ++; break; case '\\': r = '\\'; c ++; break; case '\?': r = '\?'; c ++; break; case '\'': r = '\''; c ++; break; case '\"': r = '\"'; c ++; break; case 'u': for (i = 0, c ++; i < 4 && HEXAD(*c); i ++, c ++) { r = (r * 16) + HVAL(*c); } if (i != 4) { error(aCPP_ eval_line, "malformed UCN in %s", refc); throw(eval_exception); } break; case 'U': for (i = 0, c ++; i < 8 && HEXAD(*c); i ++, c ++) { r = (r * 16) + HVAL(*c); } if (i != 8) { error(aCPP_ eval_line, "malformed UCN in %s", refc); throw(eval_exception); } break; case 'x': for (c ++; HEXAD(*c); c ++) r = (r * 16) + HVAL(*c); break; default: if (OCTAL(*c)) { r = OVAL(*(c ++)); if (OCTAL(*c)) r = (r * 8) + OVAL(*(c ++)); if (OCTAL(*c)) r = (r * 8) + OVAL(*(c ++)); } else { error(aCPP_ eval_line, "invalid escape sequence " "'\\%c'", *c); throw(eval_exception); } } } else if (*c == '\'') { error(aCPP_ eval_line, "empty character constant"); throw(eval_exception); } else { r = *((unsigned char *)(c ++)); } if (transient_characters && r < 256) { r = transient_characters[(size_t)r]; } if (*c != '\'' && emit_eval_warnings) { warning(aCPP_ eval_line, "multicharacter constant"); } return r; } static ppval pp_strtoconst(pCPP_ char *refc) { ppval q; char *c = refc, *d; u_big ru; s_big rs; int sp, dec; if (*c == '\'' || *c == 'L') { q.sign = (*c == 'L') ? WCHAR_SIGNEDNESS : 1; if (*c == 'L' && *(++ c) != '\'') { error(aCPP_ eval_line, "invalid wide character constant: %s", refc); throw(eval_exception); } if (q.sign) { q.u.sv = big_s_fromlong(aCPP_ pp_char(aCPP_ c, refc)); } else { q.u.uv = big_u_fromulong(aCPP_ pp_char(aCPP_ c, refc)); } return q; } if (*c == '0') { /* octal or hexadecimal */ dec = 0; c ++; if (*c == 'x' || *c == 'X') { c ++; d = big_u_hexconst(aCPP_ c, &ru, &rs, &sp); } else { d = big_u_octconst(aCPP_ c, &ru, &rs, &sp); } } else { dec = 1; d = big_u_decconst(aCPP_ c, &ru, &rs, &sp); } q.sign = pp_suffix(aCPP_ d, refc); if (q.sign) { if (!sp) { if (dec) { error(aCPP_ eval_line, "constant too large " "for destination type"); throw(eval_exception); } else { warning(aCPP_ eval_line, "constant is so large " "that it is unsigned"); } q.u.uv = ru; q.sign = 0; } else { q.u.sv = rs; } } else { q.u.uv = ru; } return q; } /* * Used by #line directives -- anything beyond what can be put in an * unsigned long, is considered absurd. */ unsigned long strtoconst(pCPP_ char *c) { ppval q = pp_strtoconst(aCPP_ c); if (q.sign) q.u.uv = big_s_to_u(aCPP_ q.u.sv); return big_u_toulong(aCPP_ q.u.uv); } /* * Promote integer operands and return signedness of result. */ static int promote(pCPP_ ppval *pv1, ppval *pv2, int do_eval) { if (pv1->sign && pv2->sign) return 1; if (pv1->sign) { if (do_eval) pv1->u.uv = big_s_to_u(aCPP_ pv1->u.sv); pv1->sign = 0; } else if (pv2->sign) { if (do_eval) pv2->u.uv = big_s_to_u(aCPP_ pv2->u.sv); pv2->sign = 0; } return 0; } #define OP_UN(x) ((x) == LNOT || (x) == NOT || (x) == UPLUS \ || (x) == UMINUS) static ppval eval_opun(pCPP_ int op, ppval v) { if (op == LNOT) { v.sign = 1; v.u.sv = big_s_fromint(aCPP_ big_s_lnot(aCPP_ v.u.sv)); return v; } if (v.sign) { switch (op) { case NOT: v.u.sv = big_s_not(aCPP_ v.u.sv); break; case UPLUS: break; case UMINUS: v.u.sv = big_s_neg(aCPP_ v.u.sv); break; } } else { switch (op) { case NOT: v.u.uv = big_u_not(aCPP_ v.u.uv); break; case UPLUS: break; case UMINUS: v.u.uv = big_u_neg(aCPP_ v.u.uv); break; } } return v; } #define OP_BIN(x) ((x) == STAR || (x) == SLASH || (x) == PCT \ || (x) == PLUS || (x) == MINUS || (x) == LSH \ || (x) == RSH || (x) == LT || (x) == LEQ \ || (x) == GT || (x) == GEQ || (x) == SAME \ || (x) == NEQ || (x) == AND || (x) == CIRC \ || (x) == OR || (x) == LAND || (x) == LOR \ || (x) == COMMA) static ppval eval_opbin(pCPP_ int op, ppval v1, ppval v2, int do_eval) { ppval r; int iv2 = 0; switch (op) { case STAR: case SLASH: case PCT: case PLUS: case MINUS: case AND: case CIRC: case OR: /* promote operands, adjust signedness of result */ r.sign = promote(aCPP_ &v1, &v2, do_eval); break; case LT: case LEQ: case GT: case GEQ: case SAME: case NEQ: /* promote operands */ (void) promote(aCPP_ &v1, &v2, do_eval); /* fall through */ case LAND: case LOR: /* result is signed anyway */ r.sign = 1; break; case LSH: case RSH: /* result is as signed as left operand; convert right operand to int */ r.sign = v1.sign; if (do_eval) { if (v2.sign) { iv2 = big_s_toint(aCPP_ v2.u.sv); } else { iv2 = big_u_toint(aCPP_ v2.u.uv); } } break; case COMMA: if (emit_eval_warnings) { warning(aCPP_ eval_line, "ISO C forbids evaluated comma " "operators in #if expressions"); } r.sign = v2.sign; break; #ifdef AUDIT default: ouch(aCPP_ "a good operator is a dead operator"); #endif } #define SBINOP(x) if (r.sign) r.u.sv = big_s_ ## x (aCPP_ v1.u.sv, v2.u.sv); \ else r.u.uv = big_u_ ## x (aCPP_ v1.u.uv, v2.u.uv); #define NSSBINOP(x) if (v1.sign) r.u.sv = big_s_fromint(aCPP_ big_s_ ## x \ (aCPP_ v1.u.sv, v2.u.sv)); else r.u.sv = big_s_fromint( \ aCPP_ big_u_ ## x (aCPP_ v1.u.uv, v2.u.uv)); #define LBINOP(x) r.u.sv = big_s_fromint(aCPP_ (v1.sign ? big_s_lval(aCPP_ \ v1.u.sv) : big_u_lval(aCPP_ v1.u.uv)) x (v2.sign ? \ big_s_lval(aCPP_ v2.u.sv) : big_u_lval(aCPP_ v2.u.uv))); #define ABINOP(x) if (r.sign) r.u.sv = big_s_ ## x (aCPP_ v1.u.sv, iv2); \ else r.u.uv = big_u_ ## x (aCPP_ v1.u.uv, iv2); if (do_eval) { switch (op) { case STAR: SBINOP(star); break; case SLASH: SBINOP(slash); break; case PCT: SBINOP(pct); break; case PLUS: SBINOP(plus); break; case MINUS: SBINOP(minus); break; case LSH: ABINOP(lsh); break; case RSH: ABINOP(rsh); break; case LT: NSSBINOP(lt); break; case LEQ: NSSBINOP(leq); break; case GT: NSSBINOP(gt); break; case GEQ: NSSBINOP(geq); break; case SAME: NSSBINOP(same); break; case NEQ: NSSBINOP(neq); break; case AND: SBINOP(and); break; case CIRC: SBINOP(xor); break; case OR: SBINOP(or); break; case LAND: LBINOP(&&); break; case LOR: LBINOP(||); break; case COMMA: r = v2; break; } } return r; } #define ttOP(x) (OP_UN(x) || OP_BIN(x) || (x) == QUEST || (x) == COLON) static int op_prec(pCPP_ int op) { switch (op) { case LNOT: case NOT: case UPLUS: case UMINUS: return 13; case STAR: case SLASH: case PCT: return 12; case PLUS: case MINUS: return 11; case LSH: case RSH: return 10; case LT: case LEQ: case GT: case GEQ: return 9; case SAME: case NEQ: return 8; case AND: return 7; case CIRC: return 6; case OR: return 5; case LAND: return 4; case LOR: return 3; case QUEST: return 2; case COMMA: return 1; } #ifdef AUDIT ouch(aCPP_ "an unknown species should have a higher precedence"); #else useCPP; #endif return 666; } /* * Perform the hard work of evaluation. * * This function works because: * -- all unary operators are right to left associative, and with * identical precedence * -- all binary operators are left to right associative * -- there is only one non-unary and non-binary operator: the quest-colon * * If do_eval is 0, the evaluation of operators is not done. This is * for sequence point operators (&&, || and ?:). */ static ppval eval_shrd(pCPP_ struct token_fifo *tf, int minprec, int do_eval) { ppval top; struct token *ct; top.sign = 1; if (tf->art == tf->nt) goto trunc_err; ct = tf->t + (tf->art ++); if (ct->type == LPAR) { top = eval_shrd(aCPP_ tf, 0, do_eval); if (tf->art == tf->nt) goto trunc_err; ct = tf->t + (tf->art ++); if (ct->type != RPAR) { error(aCPP_ eval_line, "a right parenthesis was expected"); throw(eval_exception); } } else if (ct->type == NUMBER || ct->type == CHAR) { top = pp_strtoconst(aCPP_ ct->name); } else if (OP_UN(ct->type)) { top = eval_opun(aCPP_ ct->type, eval_shrd(aCPP_ tf, op_prec(aCPP_ ct->type), do_eval)); goto eval_loop; } else if (ttOP(ct->type)) goto rogue_op_err; else { goto invalid_token_err; } eval_loop: if (tf->art == tf->nt) { return top; } ct = tf->t + (tf->art ++); if (OP_BIN(ct->type)) { int bp = op_prec(aCPP_ ct->type); if (bp > minprec) { ppval tr; if ((ct->type == LOR && boolval(aCPP_ top)) || (ct->type == LAND && !boolval(aCPP_ top))) { tr = eval_shrd(aCPP_ tf, bp, 0); top.sign = 1; if (do_eval) { if (ct->type == LOR) top.u.sv = big_s_fromint(aCPP_ 1); if (ct->type == LAND) top.u.sv = big_s_fromint(aCPP_ 0); } } else { tr = eval_shrd(aCPP_ tf, bp, do_eval); top = eval_opbin(aCPP_ ct->type, top, tr, do_eval); } goto eval_loop; } } else if (ct->type == QUEST) { int bp = op_prec(aCPP_ QUEST); ppval r1, r2; if (bp >= minprec) { int qv = boolval(aCPP_ top); r1 = eval_shrd(aCPP_ tf, bp, qv ? do_eval : 0); if (tf->art == tf->nt) goto trunc_err; ct = tf->t + (tf->art ++); if (ct->type != COLON) { error(aCPP_ eval_line, "a colon was expected"); throw(eval_exception); } r2 = eval_shrd(aCPP_ tf, bp, qv ? 0 : do_eval); (void) promote(aCPP_ &r1, &r2, do_eval); if (qv) top = r1; else top = r2; goto eval_loop; } } tf->art --; return top; trunc_err: error(aCPP_ eval_line, "truncated constant integral expression"); throw(eval_exception); rogue_op_err: error(aCPP_ eval_line, "rogue operator '%s' in constant integral " "expression", operators_name[ct->type]); throw(eval_exception); invalid_token_err: error(aCPP_ eval_line, "invalid token in constant integral expression"); throw(eval_exception); } #define UNARY(x) ((x) != NUMBER && (x) != NAME && (x) != CHAR \ && (x) != RPAR) /* * Evaluate the integer expression contained in the given token_fifo. * Evaluation is made by precedence of operators, as described in the * Dragon Book. The unary + and - are distinguished from their binary * counterparts using the Fortran way: a + or a - is considered unary * if it does not follow a constant, an identifier or a right parenthesis. */ unsigned long eval_expr(pCPP_ struct token_fifo *tf, int *ret, int ew) { size_t sart; ppval r; emit_eval_warnings = ew; if (catch(eval_exception)) goto eval_err; /* first, distinguish unary + and - from binary + and - */ for (sart = tf->art; tf->art < tf->nt; tf->art ++) { if (tf->t[tf->art].type == PLUS) { if (sart == tf->art || UNARY(tf->t[tf->art - 1].type)) tf->t[tf->art].type = UPLUS; } else if (tf->t[tf->art].type == MINUS) { if (sart == tf->art || UNARY(tf->t[tf->art - 1].type)) tf->t[tf->art].type = UMINUS; } } tf->art = sart; r = eval_shrd(aCPP_ tf, 0, 1); if (tf->art < tf->nt) { error(aCPP_ eval_line, "trailing garbage in constant integral " "expression"); goto eval_err; } *ret = 0; return boolval(aCPP_ r); eval_err: *ret = 1; return 0; } Convert-Binary-C-0.76/ucpp/hash.c0000644000175000001440000001736511550664631015264 0ustar mhxusers/* * Generic hash table routines. * (c) Thomas Pornin 1998, 1999, 2000 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include #include "hash.h" #include "mem.h" #include "tune.h" /* * hash_string() is a sample hash function for strings */ int hash_string(char *s) { #ifdef FAST_HASH unsigned h = 0, g; while (*s) { h = (h << 4) + *(unsigned char *)(s ++); if ((g = h & 0xF000U) != 0) h ^= (g >> 12); h &= ~g; } return (h ^ (h >> 9)) & 127U; #else unsigned char h = 0; for (; *s; s ++) h ^= (unsigned char)(*s); return ((int)h); #endif } /* * struct hash_item is the basic data type to internally handle hash tables */ struct hash_item { void *data; struct hash_item *next; }; /* * This function adds an entry to the struct hash_item list */ static struct hash_item *add_entry(struct hash_item *blist, void *data) { struct hash_item *t = getmem(sizeof(struct hash_item)); t->data = data; t->next = blist; return t; } /* * This function finds a struct hash_item in a list, using the * comparison function provided as cmpdata (*cmpdata() returns * non-zero if the two parameters are to be considered identical). * * It returns 0 if the item is not found. */ static struct hash_item *get_entry(struct hash_item *blist, void *data, int (*cmpdata)(void *, void *)) { while (blist) { if ((*cmpdata)(data, blist->data)) return blist; blist = blist->next; } return 0; } /* * This function acts like get_entry but deletes the found item, using * the provided function deldata(); it returns 0 if the given data was * not found. */ static struct hash_item *del_entry(struct hash_item *blist, void *data, int (*cmpdata)(void *, void *), void (*deldata)(void *)) { struct hash_item *prev = 0, *save = blist; while (blist) { if ((*cmpdata)(data, blist->data)) { if (deldata) (*deldata)(blist->data); if (prev) prev->next = blist->next; if (save == blist) save = blist->next; freemem(blist); return save; } prev = blist; blist = blist->next; } return 0; } /* * This function creates a new hashtable, with the hashing and comparison * functions given as parameters */ struct HT *newHT(int n, int (*cmpdata)(void *, void *), int (*hash)(void *), void (*deldata)(void *)) { struct HT *t = getmem(sizeof(struct HT)); int i; t->lists = getmem(n * sizeof(struct hash_item *)); for (i = 0; i < n; i ++) t->lists[i] = 0; t->nb_lists = n; t->cmpdata = cmpdata; t->hash = hash; t->deldata = deldata; return t; } /* * This function adds a new entry in the hashtable ht; it returns 0 * on success, or a pointer to the already present item otherwise. */ void *putHT(struct HT *ht, void *data) { int h; struct hash_item *d; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif if ((d = get_entry(ht->lists[h], data, ht->cmpdata))) return d->data; ht->lists[h] = add_entry(ht->lists[h], data); return 0; } /* * This function adds a new entry in the hashtable ht, even if an equal * entry is already there. Exercise caution ! * The new entry will "hide" the old one, which means that the new will be * found upon lookup/delete, not the old one. */ void *forceputHT(struct HT *ht, void *data) { int h; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif ht->lists[h] = add_entry(ht->lists[h], data); return 0; } /* * This function finds the entry corresponding to *data in the * hashtable ht (using the comparison function given as argument * to newHT) */ void *getHT(struct HT *ht, void *data) { int h; struct hash_item *t; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif if ((t = get_entry(ht->lists[h], data, ht->cmpdata)) == 0) return 0; return (t->data); } /* * This function finds and delete the entry corresponding to *data * in the hashtable ht (using the comparison function given as * argument to newHT). */ int delHT(struct HT *ht, void *data) { int h; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif ht->lists[h] = del_entry(ht->lists[h], data, ht->cmpdata, ht->deldata); return 1; } /* * This function completely eradicates from memory a given hash table, * releasing all objects */ void killHT(struct HT *ht) { int i; struct hash_item *t, *n; void (*dd)(void *) = ht->deldata; for (i = 0; i < ht->nb_lists; i ++) for (t = ht->lists[i]; t;) { n = t->next; if (dd) (*dd)(t->data); freemem(t); t = n; } freemem(ht->lists); freemem(ht); } /* * This function stores a backup of the hash table, for context stacking. */ void saveHT(struct HT *ht, void **buffer) { struct hash_item **b = (struct hash_item **)buffer; mmv(b, ht->lists, ht->nb_lists * sizeof(struct hash_item *)); } /* * This function restores the saved state of the hash table. * Do NOT use if some of the entries that were present before the backup * have been removed (even temporarily). */ void restoreHT(struct HT *ht, void **buffer) { struct hash_item **b = (struct hash_item **)buffer; int i; for (i = 0; i < ht->nb_lists; i ++) { struct hash_item *t = ht->lists[i], *n; while (t != b[i]) { n = t->next; (*(ht->deldata))(t->data); freemem(t); t = n; } ht->lists[i] = b[i]; } } /* * This function is evil. It inserts a new item in a saved hash table, * tweaking the save buffer and the hash table in order to keep things * stable. There are no checks. */ void tweakHT(struct HT *ht, void **buffer, void *data) { int h; struct hash_item *d, *e; h = ((*(ht->hash))(data)); #ifndef FAST_HASH h %= ht->nb_lists; #endif for (d = ht->lists[h]; d != buffer[h]; d = d->next); d = add_entry(buffer[h], data); if (buffer[h] == ht->lists[h]) { buffer[h] = ht->lists[h] = d; return; } for (e = ht->lists[h]; e->next != buffer[h]; e = e->next); e->next = d; buffer[h] = d; } /* * This function scans the whole table and calls the given function on * each entry. */ void scanHT(struct HT *ht, void (*action)(void *)) { int i; for (i = 0; i < ht->nb_lists; i ++) { struct hash_item *t = ht->lists[i]; while (t) { (*action)(t->data); t = t->next; } } } /* * The two following fonctions are generic for storing structures * uniquely identified by their name, which must be the first * field of the structure. */ int hash_struct(void *m) { char *n = *(char **)m; #ifdef FAST_HASH return hash_string(n); #else return hash_string(n) & 127; #endif } int cmp_struct(void *m1, void *m2) { char *n1 = *(char **)m1, *n2 = *(char **)m2; return !strcmp(n1, n2); } Convert-Binary-C-0.76/ucpp/hash.h0000644000175000001440000000420011550664631015251 0ustar mhxusers/* * (c) Thomas Pornin 1998, 1999, 2000 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__HASH__ #define UCPP__HASH__ struct hash_item; struct HT { struct hash_item **lists; int nb_lists; int (*cmpdata)(void *, void *); int (*hash)(void *); void (*deldata)(void *); }; int hash_string(char *); struct HT *newHT(int, int (*)(void *, void *), int (*)(void *), void (*)(void *)); void *putHT(struct HT *, void *); void *forceputHT(struct HT *, void *); void *getHT(struct HT *, void *); int delHT(struct HT *, void *); void killHT(struct HT *); void saveHT(struct HT *, void **); void restoreHT(struct HT *, void **); void tweakHT(struct HT *, void **, void *); void scanHT(struct HT *, void (*)(void *)); int hash_struct(void *); int cmp_struct(void *, void *); #endif Convert-Binary-C-0.76/ucpp/ucppi.h0000644000175000001440000001652611550664632015465 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__UCPPI__ #define UCPP__UCPPI__ #include "tune.h" #include "cpp.h" #include "nhash.h" #include "reent.h" /* * A macro represented in a compact form; simple tokens are represented * by one byte, containing their number. Tokens with a string value are * followed by the value (string finished by a 0). Macro arguments are * followed by the argument number (in one byte -- thus implying a hard * limit of 254 arguments (number 255 is for __VA_ARGS__). */ struct comp_token_fifo { size_t length; size_t rp; unsigned char *t; }; /* These declarations are used only internally by ucpp */ /* * S_TOKEN(x) checks whether x is a token type with an embedded string * ttMWS(x) checks whether x is macro whitespace (space, comment...) * ttWHI(x) checks whether x is whitespace (MWS or newline) */ #define S_TOKEN(x) STRING_TOKEN(x) #define ttMWS(x) ((x) == NONE || (x) == COMMENT || (x) == OPT_NONE) #define ttWHI(x) (ttMWS(x) || (x) == NEWLINE) /* * Function prototypes */ /* * from lexer.c */ #define init_cppm UCPP_PRIVATE(init_cppm) #define put_char UCPP_PRIVATE(put_char) #define discard_char UCPP_PRIVATE(discard_char) #define next_token UCPP_PRIVATE(next_token) #define grap_char UCPP_PRIVATE(grap_char) #define space_char UCPP_PRIVATE(space_char) void init_cppm(pCPP); void put_char(pCPP_ struct lexer_state *, unsigned char); void discard_char(pCPP_ struct lexer_state *); int next_token(pCPP_ struct lexer_state *); int grap_char(pCPP_ struct lexer_state *); int space_char(int); #ifdef UCPP_REENTRANT #define new_cppm UCPP_PRIVATE(new_cppm) #define del_cppm UCPP_PRIVATE(del_cppm) CPPM new_cppm(void); void del_cppm(CPPM); #endif #ifdef UCPP_CLONE #define clone_cppm UCPP_PRIVATE(clone_cppm) CPPM clone_cppm(const CPPM); #endif /* * from assert.c */ struct assert { hash_item_header head; /* first field */ size_t nbval; struct token_fifo *val; }; #define cmp_token_list UCPP_PRIVATE(cmp_token_list) #define handle_assert UCPP_PRIVATE(handle_assert) #define handle_unassert UCPP_PRIVATE(handle_unassert) #define get_assertion UCPP_PRIVATE(get_assertion) #define wipe_assertions UCPP_PRIVATE(wipe_assertions) int cmp_token_list(struct token_fifo *, struct token_fifo *); int handle_assert(pCPP_ struct lexer_state *); int handle_unassert(pCPP_ struct lexer_state *); struct assert *get_assertion(pCPP_ char *); void wipe_assertions(pCPP); /* * from macro.c */ struct macro { hash_item_header head; /* first field */ int narg; char **arg; int nest; int vaarg; #ifdef LOW_MEM struct comp_token_fifo cval; #else struct token_fifo val; #endif }; #define print_token UCPP_PRIVATE(print_token) #define handle_define UCPP_PRIVATE(handle_define) #define handle_undef UCPP_PRIVATE(handle_undef) #define handle_ifdef UCPP_PRIVATE(handle_ifdef) #define handle_ifndef UCPP_PRIVATE(handle_ifndef) #define substitute_macro UCPP_PRIVATE(substitute_macro) #define get_macro UCPP_PRIVATE(get_macro) #define wipe_macros UCPP_PRIVATE(wipe_macros) void print_token(pCPP_ struct lexer_state *, struct token *, long); int handle_define(pCPP_ struct lexer_state *); int handle_undef(pCPP_ struct lexer_state *); int handle_ifdef(pCPP_ struct lexer_state *); int handle_ifndef(pCPP_ struct lexer_state *); int substitute_macro(pCPP_ struct lexer_state *, struct macro *, struct token_fifo *, int, int, long); struct macro *get_macro(pCPP_ char *); void wipe_macros(pCPP); #ifdef UCPP_REENTRANT #define dsharp_lexer (REENTR->_global.dsharp_lexer) #define compile_time (REENTR->_global.compile_time) #define compile_date (REENTR->_global.compile_date) #ifdef PRAGMA_TOKENIZE #define tokenize_lexer (REENTR->_global.tokenize_lexer) #endif #else #define dsharp_lexer UCPP_PRIVATE(dsharp_lexer) #define compile_time UCPP_PRIVATE(compile_time) #define compile_date UCPP_PRIVATE(compile_date) extern struct lexer_state dsharp_lexer; extern char compile_time[], compile_date[]; #ifdef PRAGMA_TOKENIZE #define tokenize_lexer UCPP_PRIVATE(tokenize_lexer) extern struct lexer_state tokenize_lexer; #endif #endif /* UCPP_REENTRANT */ /* * from eval.c */ #define strtoconst UCPP_PRIVATE(strtoconst) #define eval_expr UCPP_PRIVATE(eval_expr) unsigned long strtoconst(pCPP_ char *); unsigned long eval_expr(pCPP_ struct token_fifo *, int *, int); #ifdef UCPP_REENTRANT #define eval_line (REENTR->_global.eval_line) #else #define eval_line UCPP_PRIVATE(eval_line) extern long eval_line; #endif #ifdef UCPP_REENTRANT #define eval_exception (REENTR->_global.eval_exception) #else #define eval_exception UCPP_PRIVATE(eval_exception) extern JMP_BUF eval_exception; #endif /* * from cpp.c */ #define token_name UCPP_PRIVATE(token_name) #define throw_away UCPP_PRIVATE(throw_away) #define garbage_collect UCPP_PRIVATE(garbage_collect) #define init_buf_lexer_state UCPP_PRIVATE(init_buf_lexer_state) #ifdef PRAGMA_TOKENIZE #define compress_token_list UCPP_PRIVATE(compress_token_list) #endif char *token_name(struct token *); void throw_away(struct garbage_fifo *, char *); void garbage_collect(struct garbage_fifo *); void init_buf_lexer_state(struct lexer_state *, int); #ifdef PRAGMA_TOKENIZE struct comp_token_fifo compress_token_list(struct token_fifo *); #endif #ifdef UCPP_REENTRANT #define no_special_macros (REENTR->no_special_macros) #define emit_dependencies (REENTR->emit_dependencies) #define emit_defines (REENTR->emit_defines) #define emit_assertions (REENTR->emit_assertions) #define c99_compliant (REENTR->c99_compliant) #define c99_hosted (REENTR->c99_hosted) #define emit_output (REENTR->emit_output) #define current_filename (REENTR->current_filename) #define current_long_filename (REENTR->current_long_filename) #define ouch (REENTR->ucpp_ouch) #define error (REENTR->ucpp_error) #define warning (REENTR->ucpp_warning) #define transient_characters (REENTR->transient_characters) #define protect_detect (REENTR->protect_detect) #else #define ouch ucpp_ouch #define error ucpp_error #define warning ucpp_warning #endif #endif Convert-Binary-C-0.76/ucpp/nhash.c0000644000175000001440000003643211550664632015437 0ustar mhxusers/* * Mixed hash table / binary tree code. * (c) Thomas Pornin 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include #include #include #include "nhash.h" #include "mem.h" /* * Hash a string into an `unsigned' value. This function is derived * from the hash function used in the ELF binary object file format * hash tables. The result size is a 32-bit number if the `unsigned' * type is big enough to hold 32-bit arbitrary numbers, a 16-bit number * otherwise. */ static unsigned hash_string(const char *name) { unsigned h = 0; for (h = 0; *name; name ++) { unsigned g; h = (h << 4) + *(unsigned char *)name; #if UINT_MAX >= 0xffffffffU g = h & 0xF0000000U; h ^= (g >> 24); #else g = h & 0xF000U; h ^= (g >> 12); #endif h &= ~g; } return h; } /* * Each item in the table is a structure beginning with a `hash_item_header' * structure. Those headers define binary trees such that all left-descendants * (respectively right-descendants) of a given tree node have an associated * hash value strictly smaller (respectively greater) than the hash value * associated with this node. * * The `ident' field points to an array of char. The `sizeof(unsigned)' * first `char' contain a copy of an `unsigned' value which is the hashed * string, except the least significant bit. When this bit is set to 0, * the node contains the unique item using that hash value. If the bit * is set to 1, then there are several items with that hash value. * * When several items share the same hash value, they are linked together * in a linked list by their `left' field. The node contains no data; * it is a "fake item". * * The `char' following the hash value encode the item name for true items. * For fake items, they contain the pointer to the first true item of the * corresponding link list (suitably aligned). * * There are HTT_NUM_TREES trees; the items are sorted among trees by the * lest significant bits of their hash value. */ static void internal_init(HTT *htt, void (*deldata)(void *) _pCLONEDATA, int reduced) { htt->deldata = deldata; #ifdef UCPP_CLONE htt->clonedata = clonedata; #endif if (reduced) { HTT2 *htt2 = (HTT2 *)htt; htt2->tree[0] = htt2->tree[1] = NULL; } else { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) htt->tree[u] = NULL; } } /* see nhash.h */ void HTT_init(HTT *htt, void (*deldata)(void *) _pCLONEDATA) { internal_init(htt, deldata _aCLONEDATA, 0); } /* see nhash.h */ void HTT2_init(HTT2 *htt, void (*deldata)(void *) _pCLONEDATA) { internal_init((HTT *)htt, deldata _aCLONEDATA, 1); } #define PTR_SHIFT (sizeof(hash_item_header *) * \ ((sizeof(unsigned) + sizeof(hash_item_header *) - 1) / \ sizeof(hash_item_header *))) #define TREE(u) (*(reduced ? ((HTT2 *)htt)->tree + ((u) & 1) \ : htt->tree + ((u) & (HTT_NUM_TREES - 1)))) /* * Find a node for the given hash value. If `father' is not NULL, fill * `*father' with a pointer to the node's father. * If the return value is NULL, then no existing node was found; if `*father' * is also NULL, the tree is empty. If the return value is not NULL but * `*father' is NULL, then the found node is the tree root. * * If `father' is not NULL, then `*leftson' is filled with 1 if the node * was looked for as the father left son, 0 otherwise. */ static hash_item_header *find_node(HTT *htt, unsigned u, hash_item_header **father, int *leftson, int reduced) { hash_item_header *node = TREE(u); hash_item_header *nodef = NULL; int ls; u &= ~1U; while (node != NULL) { unsigned v = *(unsigned *)(node->ident); unsigned w = v & ~1U; if (u == w) break; nodef = node; if (u < w) { node = node->left; ls = 1; } else { node = node->right; ls = 0; } } if (father != NULL) { *father = nodef; *leftson = ls; } return node; } static void *internal_get(HTT *htt, const char *name, int reduced) { unsigned u = hash_string(name), v; hash_item_header *node = find_node(htt, u, NULL, NULL, reduced); if (node == NULL) return NULL; v = *(unsigned *)(node->ident); if ((v & 1U) == 0) { return (strcmp(HASH_ITEM_NAME(node), name) == 0) ? node : NULL; } node = *(hash_item_header **)(node->ident + PTR_SHIFT); while (node != NULL) { if (strcmp(HASH_ITEM_NAME(node), name) == 0) return node; node = node->left; } return NULL; } /* see nhash.h */ void *HTT_get(HTT *htt, const char *name) { return internal_get(htt, name, 0); } /* see nhash.h */ void *HTT2_get(HTT2 *htt, const char *name) { return internal_get((HTT *)htt, name, 1); } /* * Make an item identifier from its name and its hash value. */ static char *make_ident(const char *name, unsigned u) { size_t n = strlen(name) + 1; char *ident = getmem(n + sizeof(unsigned)); *(unsigned *)ident = u & ~1U; memcpy(ident + sizeof(unsigned), name, n); return ident; } /* * Make an identifier for a fake item, pointing to a true item. */ static char *make_fake_ident(unsigned u, hash_item_header *next) { char *ident = getmem(PTR_SHIFT + sizeof(hash_item_header *)); *(unsigned *)ident = u | 1U; *(hash_item_header **)(ident + PTR_SHIFT) = next; return ident; } #ifdef UCPP_CLONE static char *clone_ident(const char *ident) { char *cident; unsigned v; v = *(unsigned *)(ident); if ((v & 1U) != 0) { cident = getmem(PTR_SHIFT + sizeof(hash_item_header *)); } else { size_t n = strlen(ident + sizeof(unsigned)) + 1; cident = getmem(n + sizeof(unsigned)); memcpy(cident + sizeof(unsigned), ident + sizeof(unsigned), n); } *(unsigned *)(cident) = v; return cident; } #endif /* UCPP_CLONE */ /* * Adding an item is straightforward: * 1. look for its emplacement * 2. if no node is found, use the item as a new node and link it to the tree * 3. if a node is found: * 3.1. if the node is real, check for name inequality, then create a * fake node and assemble the two-element linked list * 3.2. if the node is fake, look for the name in the list; if not found, * add the node at the list end */ static void *internal_put(HTT *htt, void *item, const char *name, int reduced) { unsigned u = hash_string(name), v; int ls; hash_item_header *father; hash_item_header *node = find_node(htt, u, &father, &ls, reduced); hash_item_header *itemg = item, *pnode; if (node == NULL) { itemg->left = itemg->right = NULL; itemg->ident = make_ident(name, u); if (father == NULL) { TREE(u) = itemg; } else if (ls) { father->left = itemg; } else { father->right = itemg; } return NULL; } v = *(unsigned *)(node->ident); if ((v & 1U) == 0) { if (strcmp(HASH_ITEM_NAME(node), name) == 0) return node; pnode = getmem(sizeof *pnode); pnode->left = node->left; pnode->right = node->right; pnode->ident = make_fake_ident(u, node); node->left = itemg; node->right = NULL; itemg->left = itemg->right = NULL; itemg->ident = make_ident(name, u); if (father == NULL) { TREE(u) = pnode; } else if (ls) { father->left = pnode; } else { father->right = pnode; } return NULL; } node = *(hash_item_header **)(node->ident + PTR_SHIFT); while (node != NULL) { if (strcmp(HASH_ITEM_NAME(node), name) == 0) return node; pnode = node; node = node->left; } itemg->left = itemg->right = NULL; itemg->ident = make_ident(name, u); pnode->left = itemg; return NULL; } /* see nhash.h */ void *HTT_put(HTT *htt, void *item, const char *name) { return internal_put(htt, item, name, 0); } /* see nhash.h */ void *HTT2_put(HTT2 *htt, void *item, const char *name) { return internal_put((HTT *)htt, item, name, 1); } /* * A fake node subnode list has shrunk to one item only; make the * node real again. * fnode the fake node * node the last remaining node * father the fake node father (NULL if the fake node is root) * leftson 1 if the fake node is a left son, 0 otehrwise * u the hash value for this node */ static void shrink_node(HTT *htt, hash_item_header *fnode, hash_item_header *node, hash_item_header *father, int leftson, unsigned u, int reduced) { node->left = fnode->left; node->right = fnode->right; if (father == NULL) { TREE(u) = node; } else if (leftson) { father->left = node; } else { father->right = node; } freemem(fnode->ident); freemem(fnode); } /* * Deletion algorithm: * 1. look for the node; if not found, exit * 2. if the node is real: * 2.1. check for equality; exit otherwise * 2.2. delete the node * 2.3. promote the leftest of right descendants or rightest of left * descendants * 3. if the node is fake: * 3.1. check the list items for equality; exit otherwise * 3.2. delete the correct item * 3.3. if there remains only one item, supress the fake node */ static int internal_del(HTT *htt, const char *name, int reduced) { unsigned u = hash_string(name), v; int ls; hash_item_header *father; hash_item_header *node = find_node(htt, u, &father, &ls, reduced); hash_item_header *pnode, *fnode, *znode; char *tmp; if (node == NULL) return 0; v = *(unsigned *)(node->ident); if ((v & 1U) != 0) { fnode = node; node = znode = *(hash_item_header **)(node->ident + PTR_SHIFT); pnode = NULL; while (node != NULL) { if (strcmp(HASH_ITEM_NAME(node), name) == 0) break; pnode = node; node = node->left; } if (node == NULL) return 0; if (pnode == NULL) { /* * We supress the first item in the list. */ *(hash_item_header **)(fnode->ident + PTR_SHIFT) = node->left; if (node->left->left == NULL) { shrink_node(htt, fnode, node->left, father, ls, u, reduced); } } else { pnode->left = node->left; if (pnode->left == NULL && znode == pnode) { shrink_node(htt, fnode, pnode, father, ls, u, reduced); } } } else { if (strcmp(HASH_ITEM_NAME(node), name) != 0) return 0; if (node->left != NULL) { for (znode = node, pnode = node->left; pnode->right; znode = pnode, pnode = pnode->right); if (znode != node) { znode->right = pnode->left; pnode->left = node->left; } pnode->right = node->right; } else if (node->right != NULL) { for (znode = node, pnode = node->right; pnode->left; znode = pnode, pnode = pnode->left); if (znode != node) { znode->left = pnode->right; pnode->right = node->right; } pnode->left = node->left; } else pnode = NULL; if (father == NULL) { TREE(u) = pnode; } else if (ls) { father->left = pnode; } else { father->right = pnode; } } tmp = node->ident; htt->deldata(node); freemem(tmp); return 1; } /* see nhash.h */ int HTT_del(HTT *htt, const char *name) { return internal_del(htt, name, 0); } /* see nhash.h */ int HTT2_del(HTT2 *htt, const char *name) { return internal_del((HTT *)htt, name, 1); } /* * Apply `action()' on all nodes of the tree whose root is given as * parameter `node'. If `wipe' is non-zero, the nodes are removed * from memory. */ #define SCAN_FLAG_WIPE 0x1 #define SCAN_FLAG_ARG 0x2 static void scan_node(hash_item_header *node, void (*action)(), void *arg, unsigned flags) { unsigned v; if (node == NULL) return; scan_node(node->left, action, arg, flags); scan_node(node->right, action, arg, flags); v = *(unsigned *)(node->ident); if ((v & 1U) != 0) { hash_item_header *pnode, *nnode; for (pnode = *(hash_item_header **)(node->ident + PTR_SHIFT); pnode != NULL; pnode = nnode) { char *tmp = pnode->ident; nnode = pnode->left; if (flags & SCAN_FLAG_ARG) action(arg, pnode); else action(pnode); if (flags & SCAN_FLAG_WIPE) freemem(tmp); } if (flags & SCAN_FLAG_WIPE) { freemem(node->ident); freemem(node); } } else { char *tmp = node->ident; if (flags & SCAN_FLAG_ARG) action(arg, node); else action(node); if (flags & SCAN_FLAG_WIPE) freemem(tmp); } } /* see nhash.h */ void HTT_scan(HTT *htt, void (*action)(void *)) { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) { scan_node(htt->tree[u], action, NULL, 0); } } void HTT_scan_arg(HTT *htt, void (*action)(void *, void *), void *arg) { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) { scan_node(htt->tree[u], action, arg, SCAN_FLAG_ARG); } } #ifdef UCPP_CLONE static hash_item_header *clone_node(const hash_item_header *node, void *(*clone)(const void *)) { hash_item_header *cleft, *cright, *cnode; unsigned v; if (node == NULL) return NULL; cleft = clone_node(node->left, clone); cright = clone_node(node->right, clone); v = *(unsigned *)(node->ident); if ((v & 1U) != 0) { hash_item_header *pnode, **pcpnode; cnode = getmem(sizeof *node); cnode->ident = clone_ident(node->ident); pcpnode = (hash_item_header **)(cnode->ident + PTR_SHIFT); for (pnode = *(hash_item_header **)(node->ident + PTR_SHIFT); pnode != NULL; pnode = pnode->left) { *pcpnode = clone(pnode); (*pcpnode)->ident = clone_ident(pnode->ident); pcpnode = &((*pcpnode)->left); } *pcpnode = NULL; } else { cnode = clone(node); cnode->ident = clone_ident(node->ident); } cnode->left = cleft; cnode->right = cright; return cnode; } /* see nhash.h */ void HTT_clone(HTT *ctt, const HTT *htt) { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) { ctt->tree[u] = clone_node(htt->tree[u], htt->clonedata); } } void HTT2_clone(HTT2 *ctt, const HTT2 *htt) { ctt->tree[0] = clone_node(htt->tree[0], htt->clonedata); ctt->tree[1] = clone_node(htt->tree[1], htt->clonedata); } #endif /* UCPP_CLONE */ /* see nhash.h */ void HTT2_scan(HTT2 *htt, void (*action)(void *)) { scan_node(htt->tree[0], action, NULL, 0); scan_node(htt->tree[1], action, NULL, 0); } void HTT2_scan_arg(HTT2 *htt, void (*action)(void *, void *), void *arg) { scan_node(htt->tree[0], action, arg, SCAN_FLAG_ARG); scan_node(htt->tree[1], action, arg, SCAN_FLAG_ARG); } /* see nhash.h */ void HTT_kill(HTT *htt) { unsigned u; for (u = 0; u < HTT_NUM_TREES; u ++) { scan_node(htt->tree[u], htt->deldata, NULL, SCAN_FLAG_WIPE); } } /* see nhash.h */ void HTT2_kill(HTT2 *htt) { scan_node(htt->tree[0], htt->deldata, NULL, SCAN_FLAG_WIPE); scan_node(htt->tree[1], htt->deldata, NULL, SCAN_FLAG_WIPE); } Convert-Binary-C-0.76/ucpp/nhash.h0000644000175000001440000001413611550664632015441 0ustar mhxusers/* * (c) Thomas Pornin 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__NHASH__ #define UCPP__NHASH__ #include "tune.h" /* * Each item stored in the hash table should be a structure beginning * with the following header. */ typedef struct hash_item_header_ { char *ident; struct hash_item_header_ *left, *right; } hash_item_header; /* * This macro takes as argument a pointer to a hash table item (a * structure beginning with `hash_item_header') and returns a pointer to * the item name. This name should be considered as read-only. The * retrieved pointer can become invalid whenever a new item is inserted * in or removed from the table. */ #define HASH_ITEM_NAME(s) (((hash_item_header *)(s))->ident + sizeof(unsigned)) /* * Number of lists for the primary hash step. Can be reduced to save more * memory, or increased to speed things up. It should be a power of 2 * greater or equal than 2 and smaller than UINT_MAX. */ #define HTT_NUM_TREES 128 /* * Type for a hash table. */ typedef struct { void (*deldata)(void *); #ifdef UCPP_CLONE void *(*clonedata)(const void *); #endif hash_item_header *tree[HTT_NUM_TREES]; } HTT; /* * Type for a reduced version of HTT with only two binary trees. That * version has a lower initialization time and is suitable for situation * where only a limited number of elements will be stored, but new tables * need frequent initializations. */ typedef struct { void (*deldata)(void *); #ifdef UCPP_CLONE void *(*clonedata)(const void *); #endif hash_item_header *tree[2]; } HTT2; #ifdef UCPP_CLONE #define _pCLONEDATA , void *(*clonedata)(const void *) #define _aCLONEDATA , clonedata #define _aCLONE(fun) , fun #else #define _pCLONEDATA #define _aCLONEDATA #define _aCLONE(fun) #endif /* * Initialize a hash table. The `deldata' parameter should point to a * function which will be invoked on any item removed from the table; * that function should take care of the release of memory allocated for * that item (except the hash_item_header contents, which are handled * internally). * The (optional) `clonedata' parameter should point to a function * which will be invoked on any item that is cloned to another table. */ #define HTT_init UCPP_PRIVATE(HTT_init) void HTT_init(HTT *htt, void (*deldata)(void *) _pCLONEDATA); /* * Link an item into the hash table under the given name. If another * item of identical name is already present in the table, a pointer to * that item is returned; otherwise, the new item is linked into the * table and NULL is returned. The object pointed to by `item' is * linked from the table, but not the string pointed to by `name'. */ #define HTT_put UCPP_PRIVATE(HTT_put) void *HTT_put(HTT *htt, void *item, const char *name); /* * Retrieve an item by name from the hash table. NULL is returned if * the object is not found. */ #define HTT_get UCPP_PRIVATE(HTT_get) void *HTT_get(HTT *htt, const char *name); /* * Remove an item from the hash table. 1 is returned if the item was * removed, 0 if it was not found. */ #define HTT_del UCPP_PRIVATE(HTT_del) int HTT_del(HTT *htt, const char *name); /* * For all items stored within the hash table, invoke the provided * function with the item as parameter. The function may abort the * scan by performing a longjmp() to a context encapsulating the * call to that function. */ #define HTT_scan UCPP_PRIVATE(HTT_scan) #define HTT_scan_arg UCPP_PRIVATE(HTT_scan_arg) void HTT_scan(HTT *htt, void (*action)(void *)); void HTT_scan_arg(HTT *htt, void (*action)(void *, void *), void *arg); /* * Release the whole table contents. After a call to this function, * the table is ready to accept new items. */ #define HTT_kill UCPP_PRIVATE(HTT_kill) void HTT_kill(HTT *htt); #ifdef UCPP_CLONE /* * Clone the whole table contents. */ #define HTT_clone UCPP_PRIVATE(HTT_clone) void HTT_clone(HTT *ctt, const HTT *htt); #endif /* UCPP_CLONE */ /* * The following functions are identical to the HTT_*() functions, except * that they operate on the reduced HTT2 tables. */ #define HTT2_init UCPP_PRIVATE(HTT2_init) #define HTT2_put UCPP_PRIVATE(HTT2_put) #define HTT2_get UCPP_PRIVATE(HTT2_get) #define HTT2_del UCPP_PRIVATE(HTT2_del) #define HTT2_scan UCPP_PRIVATE(HTT2_scan) #define HTT2_scan_arg UCPP_PRIVATE(HTT2_scan_arg) #define HTT2_kill UCPP_PRIVATE(HTT2_kill) void HTT2_init(HTT2 *htt, void (*deldata)(void *) _pCLONEDATA); void *HTT2_put(HTT2 *htt, void *item, const char *name); void *HTT2_get(HTT2 *htt, const char *name); int HTT2_del(HTT2 *htt, const char *name); void HTT2_scan(HTT2 *htt, void (*action)(void *)); void HTT2_scan_arg(HTT2 *htt, void (*action)(void *, void *), void *); void HTT2_kill(HTT2 *htt); #ifdef UCPP_CLONE #define HTT2_clone UCPP_PRIVATE(HTT_clone) void HTT2_clone(HTT2 *ctt, const HTT2 *htt); #endif #endif Convert-Binary-C-0.76/ucpp/ucpp.10000644000175000001440000001025311550664632015214 0ustar mhxusers.TH UCPP 1 "Oct 21 2000" .SH NAME ucpp \- C preprocessor .SH SYNOPSIS .B ucpp [ .I options ] [ .I file ] .SH DESCRIPTION .LP .B ucpp is a C preprocessor mostly compatible with ISO-C99. It is rather strict and uses only a small amount of memory. It uses standard input as primary input if no file argument is given. .SH OPTIONS There are several classes of options. .TP .B Language Options .TP .BI \-C keep comments in the output. .TP .BI \-s if a rogue '#' is encountered, do not emit an error and keep it in the output. .TP .BI \-l supress the emission of '#line' directives in the output. .TP .BI \-lg convert the '#line' to the gcc-style equivalent. .TP .BI \-CC disable C++-like comments (a '//' begins a comment, up to the end of the line). Use this option to get closer to C90 behaviour. .TP .B \-a, \-na handle assertions (defined with #assert); .B \-a also defines the standard assertions .I #machine , .I #cpu and .I #system (see .B \-e to get the local definition of such assertions). .TP .BI \-a0 disable assertion support. .TP .BI \-V disable support for macros with a variable number of arguments: in C99, a macro may be declared with .I ... as the last argument; inside the replacement list, .I __VA_ARGS__ is replaced with the optional extra arguments given in the call to the macro. Use this option to get closer to C90 behaviour. .TP .BI \-u enable UTF-8 support: with this option, the source is considered as an ISO/10646 source, encoded in UTF-8. Characters represented as two bytes or more are considered as alphabetic characters, like letters, and therefore usable in identifiers. These characters hold the same syntactic value than the corresponding Universal Character Names. .TP .BI \-X enable .B \-a, \-u and .B \-Y. This should make .B ucpp behave closer to what is requested from a "modern" C preprocessor. .TP .BI \-c90 enable .B \-V and .B \-CC, and do not define .B __STDC_VERSION__. This should make .B ucpp mimic older C90 behaviour. .TP .BI \-t disable trigraph support; this seems to be required for some legacy code. .TP .B Warning Options .TP .BI \-wt emit a final warning when trigraphs are encountered. .TP .BI \-wtt emit warnings for each trigraph encountered. .TP .BI \-wa emit annoying warnings (these are usually useless). .TP .BI \-w0 supress standard warnings. .TP .B Directory Options .TP .BI \-I directory .TP .BI "\-I " directory add .I directory to the include path, before the standard include path. .TP .BI \-J directory .TP .BI "\-J " directory add .I directory to the include path, after the standard include path. .TP .BI \-zI do not use the standard (compile-time) include path. .TP .BI \-M emit only the names of encountered files, separated by spaces; this is intended for automatic generation of Makefile dependencies. .TP .BI \-Ma do the same as .B \-M but also for system files. .TP .BI "\-o " file direct the ouput to .I file instead of standard output. .TP .B Macro Options .TP .BI \-D macro predefine .I macro with content .B 1. .TP .BI \-D macro=def predefine .I macro with the content .I def. .TP .BI \-U macro undefine .I macro. .TP .BI \-Y predefine system-dependant macros. .TP .BI \-Z do not predefine special macros such as .B __TIME__. .TP .BI \-A foo(bar) add .I foo(bar) to the list of assertions. .TP .BI \-B foo(bar) remove .I foo(bar) of the list of assertions; you may also use .BI \-B foo to remove all .BI \-B foo(xxx) from the list of assertions. .TP .BI \-d instead of normal output, emit '#define' directives representing all macros defined during processing. .TP .BI \-e instead of normal output, emit '#assert' directives representing all assertions defined during processing. .TP .B Miscellaneous Options .TP .BI \-v print version number, include path and (optionaly) defined assertions. .TP .BI \-h print some help. .SH ENVIRONMENT .PP .B ucpp is not itself affected by environment variables. However, it uses library functions that might be affected, depending on the system. .SH AUTHOR Thomas Pornin .SH BUGS .PP .B ucpp is considered stable software. However improbable it is, please report bugs to the author (possibly with a file that exhibits the problem) if the latest version, available from this site: .TP http://pornin.nerim.net/ucpp/ .PP has the bug. Convert-Binary-C-0.76/ucpp/tune.h0000644000175000001440000004475611550664632015326 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #ifndef UCPP__TUNE__ #define UCPP__TUNE__ #ifdef UCPP_CONFIG #include "config.h" #else /* ====================================================================== */ /* * The LOW_MEM macro triggers the use of macro storage which uses less * memory. It actually also improves performance on large, modern machines * (due to less cache pressure). This option implies no limitation (except * on the number of arguments a macro may, which is then limited to 32766) * so it is on by default. Non-LOW_MEM code is considered deprecated. */ #define LOW_MEM /* ====================================================================== */ /* * Define AMIGA for systems using "drive letters" at the beginning of * some paths; define MSDOS on systems with drive letters and using * backslashes to seperate directory components. */ /* #define AMIGA */ /* #define MSDOS */ /* ====================================================================== */ /* * Define this if your compiler does not know the strftime() function; * TurboC 2.01 under Msdos does not know strftime(). */ /* #define NOSTRFTIME */ /* ====================================================================== */ /* * Buffering: there are two levels of buffering on input and output streams: * the standard libc buffering (manageable with setbuf() and setvbuf()) * and some buffering provided by ucpp itself. The ucpp buffering uses * two buffers, of size respectively INPUT_BUF_MEMG and OUTPUT_BUF_MEMG * (as defined below). * You can disable one or both of these bufferings by defining the macros * NO_LIBC_BUF and NO_UCPP_BUF. */ /* #define NO_LIBC_BUF */ /* #define NO_UCPP_BUF */ /* * On Unix stations, the system call mmap() might be used on input files. * This option is a subclause of ucpp internal buffering. On one station, * a 10% speed improvement was observed. Do not define this unless the * host architecture has the following characteristics: * -- Posix / Single Unix compliance * -- Text files correspond one to one with memory representation * If a file is not seekable or not mmapable, ucpp will revert to the * standard fread() solution. * * This feature is still considered beta quality. On some systems where * files can be bigger than memory address space (mainly, 32-bit systems * with files bigger than 4 GB), this option makes ucpp fail to operate * on those extremely large files. */ /* #define UCPP_MMAP */ /* * Performance issues: * -- On memory-starved systems, such as Minix-i86, do not use ucpp * buffering; keep only libc buffering. * -- If you do not use libc buffering, activate the UCPP_MMAP option. * Note that the UCPP_MMAP option is ignored if ucpp buffering is not * activated. * * On an Athlon 1200 running FreeBSD 4.7, the best performances are * achieved when libc buffering is activated and/or UCPP_MMAP is on. */ /* ====================================================================== */ /* * Define this if you want ucpp to generate tokenized PRAGMA tokens; * otherwise, it will generate raw string contents. This setting is * irrelevant to the stand-alone version of ucpp. */ #define PRAGMA_TOKENIZE /* * Define this to the special character that marks the end of tokens with * a string value inside a tokenized PRAGMA token. The #pragma and _Pragma() * directives which use this character will be a bit more difficult to * decode (but ucpp will not mind). 0 cannot be used. '\n' is fine because * it cannot appear inside a #pragma or _Pragma(), since newlines cannot be * embedded inside tokens, neither directly nor by macro substitution and * stringization. Besides, '\n' is portable. */ #define PRAGMA_TOKEN_END ((unsigned char)'\n') /* * Define this if you want ucpp to include encountered #pragma directives * in its output in non-lexer mode; _Pragma() are translated to equivalent * #pragma directives. */ #define PRAGMA_DUMP /* * According to my interpretation of the C99 standard, _Pragma() are * evaluated wherever macro expansion could take place. However, Neil Booth, * whose mother language is English (contrary to me) and who is well aware * of the C99 standard (and especially the C preprocessor) told me that * it was unclear whether _Pragma() are evaluated inside directives such * as #if, #include and #line. If you want to disable the evaluation of * _Pragma() inside such directives, define the following macro. */ /* #define NO_PRAGMA_IN_DIRECTIVE */ /* * The C99 standard mandates that the operator `##' must yield a single, * valid token, lest undefined behaviour befall upon thy head. Hence, * for instance, `+ ## +=' is forbidden, because `++=' is not a valid * token (although it is a valid list of two tokens, `++' and `='). * However, ucpp only emits a warning for such sin, and unmerges the * tokens (thus emitting `+' then `+=' for that example). When ucpp * produces text output, those two tokens will be separated by a space * character so that the basic rule of text output is preserved: when * parsed again, text output yields the exact same stream of tokens. * That extra space is virtual: it does not count as a true whitespace * token for stringization. * * However, it might be desirable, for some uses other than preprocessing * C source code, not to emit that extra space at all. To make ucpp behave * that way, define the DSHARP_TOKEN_MERGE macro. Please note that this * can trigger spurious token merging. For instance, with that macro * activated, `+ ## +=' will be output as `++=' which, if preprocessed * again, will read as `++' followed by `='. * * All this is irrelevant to lexer mode; and trying to merge incompatible * tokens is a shooting offence, anyway. */ /* #define DSHARP_TOKEN_MERGE */ /* ====================================================================== */ /* * Define INMACRO_FLAG to include two flags to the structure lexer_state, * that tell whether tokens come from a macro-replacement, and count those * macro-replacements. */ /* #define INMACRO_FLAG */ /* ====================================================================== */ /* * Paths where files are looked for by default, when #include is used. * Typical path is /usr/local/include and /usr/include, in that order. * If you want to set up no path, define the macro to 0. * * For Linux, get gcc includes too, or you will miss things like stddef.h. * The exact path varies much, depending on the distribution. */ #define STD_INCLUDE_PATH "/usr/local/include", "/usr/include" /* ====================================================================== */ /* * Arithmetic code for evaluation of #if expressions. Evaluation * uses either a native machine type, or an emulated two's complement * type. Division by 0 and overflow on division are considered as errors * and reported as such. If ARITHMETIC_CHECKS is defined, all other * operations that imply undefined or implementation-defined behaviour * are reported as warnings but otherwise performed nonetheless. * * For native type evaluation, the following macros should be defined: * NATIVE_SIGNED the native signed type * NATIVE_UNSIGNED the native corresponding unsigned type * NATIVE_UNSIGNED_BITS the native unsigned type width, in bits * NATIVE_UNSIGNED_ONE the constant one in native unsigned type * NATIVE_SIGNED_MIN the native signed type minimum value * NATIVE_SIGNED_MAX the native signed type maximum value * * The code in the arith.c file performs some tricky detection * operations on the native type representation and possible existence * of a trap representation. These operations assume a C99-compliant * compiler; on a C90-only compiler, the operations are valid but may * yield incorrect results. You may force those settings with some * more macros: see the comments in arith.c (look for "ARCH_DEFINED"). * Remember that this is mostly a non-issue, unless you are building * ucpp with a pre-C99 cross-compiler and either the host or target * architecture uses a non-two's complement representation of signed * integers. Such a combination is pretty rare nowadays, so the best * you can do is forgetting completely this paragraph and live in peace. * * * If you do not have a handy native type (for instance, you compile ucpp * with a C90 compiler which lacks the "long long" type, or you compile * ucpp for a cross-compiler which should support an evaluation integer * type of a size that is not available on the host machine), you may use * a simulated type. The type uses two's complement representation and * may have any width from 2 bits to twice the underlying native type * width, inclusive (odd widths are allowed). To use an emulated type, * make sure that NATIVE_SIGNED is not defined, and define the following * macros: * SIMUL_ARITH_SUBTYPE the native underlying type to use * SIMUL_SUBTYPE_BITS the native underlying type width * SIMUL_NUMBITS the emulated type width * * Undefined and implementation-defined behaviours are warned upon, if * ARITHMETIC_CHECKS is defined. Results are truncated to the type * width; shift count for the << and >> operators is reduced modulo the * emulatd type width; right shifting of a signed negative value performs * sign extension (the result is left-padded with bits set to 1). */ /* * For native type evaluation with a 64-bit "long long" type. */ #define NATIVE_SIGNED long long #define NATIVE_UNSIGNED unsigned long long #define NATIVE_UNSIGNED_BITS 64 #define NATIVE_UNSIGNED_ONE 1ULL #define NATIVE_SIGNED_MIN (-9223372036854775807LL - 1) #define NATIVE_SIGNED_MAX 9223372036854775807LL /* * For emulation of a 64-bit type using a native 32-bit "unsigned long" * type. #undef NATIVE_SIGNED #define SIMUL_ARITH_SUBTYPE unsigned long #define SIMUL_SUBTYPE_BITS 32 #define SIMUL_NUMBITS 64 */ /* * Comment out the following line if you want to deactivate arithmetic * checks (warnings upon undefined and implementation-defined * behaviour). Arithmetic checks slow down a bit arithmetic operations, * especially multiplications, but this should not be an issue with * typical C source code. */ #define ARITHMETIC_CHECKS /* ====================================================================== */ /* * To force signedness of wide character constants, define WCHAR_SIGNEDNESS * to 0 for unsigned, 1 for signed. By default, wide character constants * are signed if the native `char' type is signed, and unsigned otherwise. #define WCHAR_SIGNEDNESS 0 */ /* * Standard assertions. They should include one cpu() assertion, one machine() * assertion (identical to cpu()), and one or more system() assertions. * * for Linux/PC: cpu(i386), machine(i386), system(unix), system(linux) * for Linux/Alpha: cpu(alpha), machine(alpha), system(unix), system(linux) * for Sparc/Solaris: cpu(sparc), machine(sparc), system(unix), system(solaris) * * These are only suggestions. On Solaris, machine() should be defined * for i386 or sparc (standard system header use such an assertion). For * cross-compilation, define assertions related to the target architecture. * * If you want no standard assertion, define STD_ASSERT to 0. */ #define STD_ASSERT "cpu(i386)", "machine(i386)", "system(unix)", \ "system(freebsd)" /* ====================================================================== */ /* * System predefined macros. Nothing really mandatory, but some programs * might rely on those. * Each string must be either "name" or "name=token-list". If you want * no predefined macro, define STD_MACROS to 0. */ #define STD_MACROS "__FreeBSD=4", "__unix", "__i386", \ "__FreeBSD__=4", "__unix__", "__i386__" /* ====================================================================== */ /* * Default flags; HANDLE_ASSERTIONS is required for Solaris system headers. * See cpp.h for the definition of these flags. */ #define DEFAULT_CPP_FLAGS (DISCARD_COMMENTS | WARN_STANDARD \ | WARN_PRAGMA | FAIL_SHARP | MACRO_VAARG \ | CPLUSPLUS_COMMENTS | LINE_NUM | TEXT_OUTPUT \ | KEEP_OUTPUT | HANDLE_TRIGRAPHS \ | HANDLE_ASSERTIONS) #define DEFAULT_LEXER_FLAGS (DISCARD_COMMENTS | WARN_STANDARD | FAIL_SHARP \ | MACRO_VAARG | CPLUSPLUS_COMMENTS | LEXER \ | HANDLE_TRIGRAPHS | HANDLE_ASSERTIONS) /* ====================================================================== */ /* * Define this to use sigsetjmp()/siglongjmp() instead of setjmp()/longjmp(). * This is non-ANSI, but it improves performance on some POSIX system. * On typical C source code, such improvement is completely negligeable. */ /* #define POSIX_JMP */ /* ====================================================================== */ /* * Maximum value (plus one) of a character handled by the lexer; 128 is * alright for ASCII native source code, but 256 is needed for EBCDIC. * 256 is safe in both cases; you will have big problems if you set * this value to INT_MAX or above. On Minix-i86 or Msdos (small memory * model), define MAX_CHAR_VAL to 128. * * Set MAX_CHAR_VAL to a power of two to increase lexing speed. Beware * that lexer.c defines a static array of size MSTATE * MAX_CHAR_VAL * values of type int (MSTATE is defined in lexer.c and is about 40). */ #define MAX_CHAR_VAL 128 /* * If you want some extra character to be considered as whitespace, * define this macro to that space. On ISO-8859-1 machines, 160 is * the code for the unbreakable space. */ /* #define UNBREAKABLE_SPACE 160 */ /* * If you want whitespace tokens contents to be recorded (making them * tokens with a string content), define this. The macro STRING_TOKEN * will be adjusted accordingly. * Without this option, whitespace tokens are not even returned by the * lex() function. This is irrelevant for the non-lexer mode (almost -- * it might slow down a bit ucpp, and with this option, comments will be * kept inside #pragma directives). */ /* #define SEMPER_FIDELIS */ /* * If you're using ucpp as a library you can modify the global symbol * names using the following macros. */ #define UCPP_PUBLIC_PREFIX ucpp_public_ #define UCPP_PUBLIC_SUFFIX #define UCPP_PRIVATE_PREFIX ucpp_private_ #define UCPP_PRIVATE_SUFFIX /* * If you don't want to export "true" functions for memory management * macros, use this define. */ #define MEM_DEBUG_NO_TRUE_FUNC #endif /* End of options overridable by UCPP_CONFIG and config.h */ #define _func_strc_(x, y) x ## y #define _func_strc(x, y) _func_strc_(x, y) #if defined UCPP_PUBLIC_PREFIX && defined UCPP_PUBLIC_SUFFIX #define UCPP_PUBLIC(func) _func_strc(UCPP_PUBLIC_PREFIX, \ _func_strc(func, UCPP_PUBLIC_SUFFIX)) #elif defined UCPP_PUBLIC_PREFIX #define UCPP_PUBLIC(func) _func_strc(UCPP_PUBLIC_PREFIX, func) #elif defined UCPP_PUBLIC_SUFFIX #define UCPP_PUBLIC(func) _func_strc(func, UCPP_PUBLIC_SUFFIX) #else #define UCPP_PUBLIC(func) func #endif #if defined UCPP_PRIVATE_PREFIX && defined UCPP_PRIVATE_SUFFIX #define UCPP_PRIVATE(func) _func_strc(UCPP_PRIVATE_PREFIX, \ _func_strc(func, UCPP_PRIVATE_SUFFIX)) #elif defined UCPP_PRIVATE_PREFIX #define UCPP_PRIVATE(func) _func_strc(UCPP_PRIVATE_PREFIX, func) #elif defined UCPP_PRIVATE_SUFFIX #define UCPP_PRIVATE(func) _func_strc(func, UCPP_PRIVATE_SUFFIX) #else #define UCPP_PRIVATE(func) func #endif /* ====================================================================== */ /* * Some constants used for memory increment granularity. Increasing these * values reduces the number of calls to malloc() but increases memory * consumption. * * Values should be powers of 2. */ /* for cpp.c */ #define COPY_LINE_LENGTH 80 #define INPUT_BUF_MEMG 8192 #define OUTPUT_BUF_MEMG 8192 #define TOKEN_NAME_MEMG 64 /* must be at least 4 */ #define TOKEN_LIST_MEMG 32 #define MACRO_ARG_MEMG 8 #define INCPATH_MEMG 16 #define GARBAGE_LIST_MEMG 32 #define LS_STACK_MEMG 4 #define FNAME_MEMG 32 /* ====================================================================== */ /* To protect the innocent. */ #if defined(NO_UCPP_BUF) && defined(UCPP_MMAP) #undef UCPP_MMAP #endif #if defined(UCPP_CLONE) && !defined(UCPP_REENTRANT) #error Cannot clone with non-reentrant code #endif #if defined(UCPP_MMAP) || defined(POSIX_JMP) #ifndef _POSIX_SOURCE #define _POSIX_SOURCE 1 #endif #endif /* * C90 does not know about the "inline" keyword, but C99 does know, * and some C90 compilers know it as an extension. This part detects * these occurrences. */ #ifndef INLINE #if defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* this is a C99 compiler, keep inline unchanged */ #elif defined(__GNUC__) /* this is GNU gcc; modify inline. The semantics is not identical to C99 but the differences are irrelevant as long as inline functions are static */ #undef inline #define inline __inline__ #elif defined(__DECC) && defined(__linux__) /* this is Compaq C under Linux, use __inline__ */ #undef inline #define inline __inline__ #else /* unknown compiler -> deactivate inline */ #undef inline #define inline #endif #else /* INLINE has been set, use its value */ #undef inline #define inline INLINE #endif #ifdef POSIX_JMP #define JMP_BUF sigjmp_buf #define catch(x) sigsetjmp((x), 0) #define throw(x) siglongjmp((x), 1) #else #define JMP_BUF jmp_buf #define catch(x) setjmp((x)) #define throw(x) longjmp((x), 1) #endif #endif Convert-Binary-C-0.76/ucpp/arith.c0000644000175000001440000011563611550664631015450 0ustar mhxusers/* * Integer arithmetic evaluation. * * (c) Thomas Pornin 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include #include "arith.h" #define ARITH_OCTAL(x) ((x) >= '0' && (x) <= '7') #define ARITH_OVAL(x) ((x) - '0') #define ARITH_DECIM(x) ((x) >= '0' && (x) <= '9') #define ARITH_DVAL(x) ((x) - '0') #define ARITH_HEXAD(x) (ARITH_DECIM(x) \ || (x) == 'a' || (x) == 'A' \ || (x) == 'b' || (x) == 'B' \ || (x) == 'c' || (x) == 'C' \ || (x) == 'd' || (x) == 'D' \ || (x) == 'e' || (x) == 'E' \ || (x) == 'f' || (x) == 'F') #define ARITH_HVAL(x) (ARITH_DECIM(x) ? ARITH_DVAL(x) \ : (x) == 'a' || (x) == 'A' ? 10 \ : (x) == 'b' || (x) == 'B' ? 11 \ : (x) == 'c' || (x) == 'C' ? 12 \ : (x) == 'd' || (x) == 'D' ? 13 \ : (x) == 'e' || (x) == 'E' ? 14 : 15) #ifdef NATIVE_SIGNED /* ====================================================================== */ /* Arithmetics with native types */ /* ====================================================================== */ /* * The following properties are imposed by the C standard: * * -- Arithmetics on the unsigned type should never overflow; every * result is reduced modulo some power of 2. The macro NATIVE_UNSIGNED_BITS * should have been defined to that specific exponent. * * -- The signed type should use either two's complement, one's complement * or a sign bit and a magnitude. There should be an integer N such that * the maximum signed value is (2^N)-1 and the minimum signed value is * either -(2^N) or -((2^N)-1). -(2^N) is possible only for two's complement. * * -- The maximum signed value is at most equal to the maximum unsigned * value. * * -- Trap representations can only be: * ** In two's complement, 1 as sign bit and 0 for all value bits. * This can happen only if the minimum signed value is -((2^N)-1). * ** In one's complement, all bits set to 1. * ** In mantissa + sign, sign bit to 1 and 0 for all value bits. * Unsigned values have no trap representation achievable with numerical * operators. Only signed values can have such representations, with * operators &, |, ^, ~, << and >>. If trap representations are possible, * such occurrences are reported as warnings. * * -- The operators +, -, * and << may overflow or underflow on signed * quantities, which is potentially an error. A warning is emitted. * * -- The operator >> yields an implementation-defined result on * signed negative quantities. Usually, the sign is extended, but this * is not guaranteed. A warning is emitted. * * -- The operators / and % used with a second operand of 0 cannot work. * An error is emitted when such a call is performed. Furthermore, in * two's complemement representation, with NATIVE_SIGNED_MIN == -(2^N) * for some N, the expression `NATIVE_SIGNED_MIN / (-1)' yields an * unrepresentable result, which is also an error. * * * For the value checks, we need to consider those different cases. So * we calculate the following macros: * -- TWOS_COMPLEMENT: is 1 if representation is two's complement, 0 * otherwise. * -- ONES_COMPLEMENT: is 1 if representation is one's complement, 0 * otherwise. * -- SIGNED_IS_BIGGER: 1 if the maximum signed value is equal to the * maximum unsigned value, 0 otherwise. NATIVE_SIGNED_MAX cannot * exceed the maximum unsigned value. If SIGNED_IS_BIGGER is 0, then * the maximum unsigned value is strictly superior to twice the * value of NATIVE_SIGNED_MAX (e.g. 65535 to 32767). * -- TRAP_REPRESENTATION: 1 if a trap representation is possible, 0 * otherwise. The only way trap representations are guaranteed * impossible is when TWOS_COMPLEMENT is set, and NATIVE_SIGNED_MIN * is equal to -NATIVE_SIGNED_MAX - 1. * * Those macros are calculated by some preprocessor directives. This * supposes that the implementation conforms to C99. Rules on preprocessing * were quite looser in C90, and it could be that an old compiler, used * for a cross-compiling task, does not get those right. Therefore, if * ARCH_DEFINED is defined prior to the inclusion of this file, those * four macros are supposed to be already defined. Otherwise they are * (re)defined. The macro ARCH_TRAP_DEFINED has the same meaning, but * is limited to the TRAP_REPRESENTATION macro (if ARCH_TRAP_DEFINED is * defined, the macro TRAP_REPRESENTATION is supposed to be already * defined; the three other macros are recalculated). * * * To sum up: * -- Whenever a division operator (/ or %) is invoked and would yield * an unrepresentable result, ARITH_ERROR() is invoked. * -- With ARITHMETIC_CHECKS undefined, ARITH_WARNING() is never invoked. * -- With ARITHMETIC_CHECKS defined: * ** If ARCH_DEFINED is defined, the including context must provide * the macros TWOS_COMPLEMENT, ONES_COMPLEMENT, SIGNED_IS_BIGGER * and TRAP_REPRESENTATION. * ** Otherwise, if ARCH_TRAP_DEFINED is defined, the including context * must provide the macro TRAP_REPRESENTATION. * The code then detects all operator invokations that would yield an * overflow, underflow, trap representation, or any implementation * defined result or undefined behaviour. The macro ARITH_WARNING() is * invoked for each detection. * -- Trap representation detection code supposes that the operands are * _not_ trap representation. */ #ifndef ARCH_DEFINED #undef TWOS_COMPLEMENT #undef ONES_COMPLEMENT #undef SIGNED_IS_BIGGER #ifndef ARCH_TRAP_DEFINED #undef TRAP_REPRESENTATION #endif #if (-1) & 3 == 3 /* * Two's complement. */ #define TWOS_COMPLEMENT 1 #define ONES_COMPLEMENT 0 #ifndef ARCH_TRAP_DEFINED #if NATIVE_SIGNED_MIN < -NATIVE_SIGNED_MAX #define TRAP_REPRESENTATION 0 #else #define TRAP_REPRESENTATION 1 #endif #endif #elif (-1) & 3 == 2 /* * One's complement. */ #define TWOS_COMPLEMENT 0 #define ONES_COMPLEMENT 1 #ifndef ARCH_TRAP_DEFINED #define TRAP_REPRESENTATION 1 #endif #else /* * Mantissa + sign. */ #define TWOS_COMPLEMENT 0 #define ONES_COMPLEMENT 0 #ifndef ARCH_TRAP_DEFINED #define TRAP_REPRESENTATION 1 #endif #endif /* * Maximum native unsigned value. The first macro is for #if directives, * the second macro is for use as constant expression in C code. */ #define NATIVE_UNSIGNED_MAX ((((NATIVE_UNSIGNED_ONE << (NATIVE_UNSIGNED_BITS - 1)) \ - NATIVE_UNSIGNED_ONE) << 1) + NATIVE_UNSIGNED_ONE) #define NATIVE_UNSIGNED_MAX_A (((((arith_u)1 << (NATIVE_UNSIGNED_BITS - 1)) \ - (arith_u)1) << 1) + (arith_u)1) #if NATIVE_SIGNED_MAX == NATIVE_UNSIGNED_MAX #define SIGNED_IS_BIGGER 1 #else #define SIGNED_IS_BIGGER 0 #endif #endif #undef NEGATIVE_IS_BIGGER #if NATIVE_SIGNED_MIN < -NATIVE_SIGNED_MAX #define NEGATIVE_IS_BIGGER 1 #else #define NEGATIVE_IS_BIGGER 0 #endif /* sanity check: we cannot have a trap representation if we have two's complement with NATIVE_SIGNED_MIN < -NATIVE_SIGNED_MAX */ #if TRAP_REPRESENTATION && NEGATIVE_IS_BIGGER #error Impossible to get trap representations. #endif /* operations on the unsigned type */ ARITH_DECL_MONO_S_U(to_u) { useARI; return (arith_u)x; } ARITH_DECL_MONO_I_U(fromint) { useARI; return (arith_u)x; } ARITH_DECL_MONO_L_U(fromulong) { useARI; return (arith_u)x; } ARITH_DECL_MONO_U_I(toint) { useARI; #if NATIVE_UNSIGNED_MAX > INT_MAX if (x > (arith_u)INT_MAX) return INT_MAX; #endif return (int)x; } ARITH_DECL_MONO_U_L(toulong) { useARI; #if NATIVE_UNSIGNED_MAX > LONG_MAX if (x > (arith_u)LONG_MAX) return LONG_MAX; #endif return (long)x; } ARITH_DECL_MONO_U_U(neg) { useARI; return -x; } ARITH_DECL_MONO_U_U(not) { useARI; return ~x; } ARITH_DECL_MONO_U_I(lnot) { useARI; return !x; } ARITH_DECL_MONO_U_I(lval) { useARI; return x != 0; } ARITH_DECL_BI_UU_U(plus) { useARI; return x + y; } ARITH_DECL_BI_UU_U(minus) { useARI; return x - y; } ARITH_DECL_BI_UU_I(lt) { useARI; return x < y; } ARITH_DECL_BI_UU_I(leq) { useARI; return x <= y; } ARITH_DECL_BI_UU_I(gt) { useARI; return x > y; } ARITH_DECL_BI_UU_I(geq) { useARI; return x >= y; } ARITH_DECL_BI_UU_I(same) { useARI; return x == y; } ARITH_DECL_BI_UU_I(neq) { useARI; return x != y; } ARITH_DECL_BI_UU_U(and) { useARI; return x & y; } ARITH_DECL_BI_UU_U(xor) { useARI; return x ^ y; } ARITH_DECL_BI_UU_U(or) { useARI; return x | y; } ARITH_DECL_BI_UU_U(star) { useARI; return x * y; } ARITH_DECL_BI_UI_U(lsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y >= NATIVE_UNSIGNED_BITS) ARITH_WARNING(ARITH_EXCEP_LSH_W); else if (y < 0) ARITH_WARNING(ARITH_EXCEP_LSH_C); #endif return x << y; } ARITH_DECL_BI_UI_U(rsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y >= NATIVE_UNSIGNED_BITS) ARITH_WARNING(ARITH_EXCEP_RSH_W); else if (y < 0) ARITH_WARNING(ARITH_EXCEP_RSH_C); #endif return x >> y; } ARITH_DECL_BI_UU_U(slash) { useARI; if (y == 0) ARITH_ERROR(ARITH_EXCEP_SLASH_D); return x / y; } ARITH_DECL_BI_UU_U(pct) { useARI; if (y == 0) ARITH_ERROR(ARITH_EXCEP_PCT_D); return x % y; } /* operations on the signed type */ ARITH_DECL_MONO_U_S(to_s) { useARI; #ifdef ARITHMETIC_CHECKS #if !SIGNED_IS_BIGGER if (x > (arith_u)NATIVE_SIGNED_MAX) ARITH_WARNING(ARITH_EXCEP_CONV_O); #endif #endif return (arith_s)x; } ARITH_DECL_MONO_I_S(fromint) { useARI; return (arith_s)x; } ARITH_DECL_MONO_L_S(fromlong) { useARI; return (arith_s)x; } ARITH_DECL_MONO_S_I(toint) { useARI; #if NATIVE_SIGNED_MIN < INT_MIN if (x < (arith_s)INT_MIN) return INT_MIN; #endif #if NATIVE_SIGNED_MAX > INT_MAX if (x > (arith_s)INT_MAX) return INT_MAX; #endif return (int)x; } ARITH_DECL_MONO_S_L(tolong) { useARI; #if NATIVE_SIGNED_MIN < LONG_MIN if (x < (arith_s)LONG_MIN) return LONG_MIN; #endif #if NATIVE_SIGNED_MAX > LONG_MAX if (x > (arith_s)LONG_MAX) return LONG_MAX; #endif return (long)x; } ARITH_DECL_MONO_S_S(neg) { useARI; #ifdef ARITHMETIC_CHECKS #if NEGATIVE_IS_BIGGER if (x == NATIVE_SIGNED_MIN) ARITH_WARNING(ARITH_EXCEP_NEG_O); #endif #endif return -x; } ARITH_DECL_MONO_S_S(not) { useARI; #ifdef ARITHMETIC_CHECKS #if TRAP_REPRESENTATION if ( #if TWOS_COMPLEMENT (x == NATIVE_SIGNED_MAX) #elif ONES_COMPLEMENT (x == 0) #else (x == NATIVE_SIGNED_MAX) #endif ) ARITH_WARNING(ARITH_EXCEP_NOT_T); #endif #endif return ~x; } ARITH_DECL_MONO_S_I(lnot) { useARI; return !x; } ARITH_DECL_MONO_S_I(lval) { useARI; return x != 0; } /* * Addition of signed values: * -- overflows occur only when both operands are strictly positive * -- underflows occur only when both operands are strictly negative * -- overflow check (both operands > 0): * ** if SIGNED_IS_BIGGER == 1, overflows are kept as such in the * unsigned world (if the signed addition overflows, so does the * unsigned, and vice versa) * ** if SIGNED_IS_BIGGER == 0, no overflow can happen in the unsigned * world * -- underflow check (both operands < 0): * ** if NEGATIVE_IS_BIGGER == 1 (must be two's complement) * ++ we have a guaranteed underflow if one of the operand is equal * to NATIVE_SIGNED_MIN; otherwise, -x and -y are valid integers, * and we cast them into the unsigned world * ++ if SIGNED_IS_BIGGER == 1, underflows become unsigned overflows * with a non-zero result * ++ if SIGNED_IS_BIGGER == 0, no overflow happens in the unsigned * world; we use the fact that -NATIVE_SIGNED_MIN is then * exaxctly 1 more than NATIVE_SIGNED_MAX * ** if NEGATIVE_IS_BIGGER == 0, underflow check is identical to * overflow check on (signed) -x and -y. */ ARITH_DECL_BI_SS_S(plus) { useARI; #ifdef ARITHMETIC_CHECKS if (x > 0 && y > 0 && ( #if SIGNED_IS_BIGGER ((arith_u)((arith_u)x + (arith_u)y) < (arith_u)x) #else (((arith_u)x + (arith_u)y) > (arith_u)NATIVE_SIGNED_MAX) #endif )) ARITH_WARNING(ARITH_EXCEP_PLUS_O); else if (x < 0 && y < 0 && ( #if NEGATIVE_IS_BIGGER (x == NATIVE_SIGNED_MIN || y == NATIVE_SIGNED_MIN) || #if SIGNED_IS_BIGGER (((arith_u)(-x) + (arith_u)(-y) != 0) && (arith_u)((arith_u)(-x) + (arith_u)(-y)) < (arith_u)(-x)) #else (((arith_u)(-x) + (arith_u)(-y)) > ((arith_u)1 + (arith_u)NATIVE_SIGNED_MAX)) #endif #else #if SIGNED_IS_BIGGER ((arith_u)((arith_u)(-x) + (arith_u)(-y)) < (arith_u)(-x)) #else (((arith_u)(-x) + (arith_u)(-y)) > (arith_u)NATIVE_SIGNED_MAX) #endif #endif )) ARITH_WARNING(ARITH_EXCEP_PLUS_U); #endif return x + y; } /* * Subtraction of signed values: * -- overflow: only if x > 0 and y < 0 * ** if NEGATIVE_IS_BIGGER == 1 (must be two's complement) and * y == NATIVE_SIGNED_MIN then overflow * ** otherwise, cast x and -y to unsigned, then add and check * for overflows * -- underflow: only if x < 0 and y > 0 * ** if NEGATIVE_IS_BIGGER == 1 (must be two's complement): * ++ if x == NATIVE_SIGNED_MIN then underflow * ++ cast -x and y to unsigned, then add. If SIGNED_IS_BIGGER == 0, * just check. Otherwise, check for overflow with non-zero result. * ** if NEGATIVE_IS_BIGGER == 0: cast -x and y to unsigned, then * add. Overflow check as in addition. */ ARITH_DECL_BI_SS_S(minus) { useARI; #ifdef ARITHMETIC_CHECKS if (x > 0 && y < 0 && ( #if NEGATIVE_IS_BIGGER (y == NATIVE_SIGNED_MIN) || #endif #if SIGNED_IS_BIGGER ((arith_u)((arith_u)x + (arith_u)(-y)) < (arith_u)x) #else (((arith_u)x + (arith_u)(-y)) > (arith_u)NATIVE_SIGNED_MAX) #endif )) ARITH_WARNING(ARITH_EXCEP_MINUS_O); else if (x < 0 && y > 0 && ( #if NEGATIVE_IS_BIGGER (x == NATIVE_SIGNED_MIN) || #if SIGNED_IS_BIGGER ((((arith_u)(-x) + (arith_u)y) != 0) && ((arith_u)((arith_u)(-x) + (arith_u)y) < (arith_u)(-x))) #else (((arith_u)(-x) + (arith_u)y) > ((arith_u)1 + (arith_u)NATIVE_SIGNED_MAX)) #endif #else #if SIGNED_IS_BIGGER ((arith_u)((arith_u)(-x) + (arith_u)y) < (arith_u)(-x)) #else (((arith_u)(-x) + (arith_u)y) > (arith_u)NATIVE_SIGNED_MAX) #endif #endif )) ARITH_WARNING(ARITH_EXCEP_MINUS_U); #endif return x - y; } ARITH_DECL_BI_SS_I(lt) { useARI; return x < y; } ARITH_DECL_BI_SS_I(leq) { useARI; return x <= y; } ARITH_DECL_BI_SS_I(gt) { useARI; return x > y; } ARITH_DECL_BI_SS_I(geq) { useARI; return x >= y; } ARITH_DECL_BI_SS_I(same) { useARI; return x == y; } ARITH_DECL_BI_SS_I(neq) { useARI; return x != y; } /* * Provided neither x nor y is a trap representation: * -- one's complement: impossible to get a trap representation * -- two's complement and sign + mantissa: trap representation if and * only if x and y are strictly negative and (-x) & (-y) == 0 * (in two's complement, -x is safe because overflow would occur only * if x was already a trap representation). */ ARITH_DECL_BI_SS_S(and) { useARI; #ifdef ARITHMETIC_CHECKS #if TRAP_REPRESENTATION && !ONES_COMPLEMENT if (x < 0 && y < 0 && ((-x) & (-y)) == 0) ARITH_WARNING(ARITH_EXCEP_AND_T); #endif #endif return x & y; } /* * Provided neither x nor y is a trap representation: * -- two's complement: trap if and only if x != NATIVE_SIGNED_MAX && ~x == y * -- one's complement: trap if and only if x != 0 && ~x == y * -- mantissa + sign: trap if and only if x != 0 && -x == y */ ARITH_DECL_BI_SS_S(xor) { useARI; #ifdef ARITHMETIC_CHECKS #if TRAP_REPRESENTATION if ( #if TWOS_COMPLEMENT (x != NATIVE_SIGNED_MAX && ~x == y) #elif ONES_COMPLEMENT (x != 0 && ~x == y) #else (x != 0 && -x == y) #endif ) ARITH_WARNING(ARITH_EXCEP_XOR_T); #endif #endif return x ^ y; } /* * Provided neither x nor y is a trap representation: * -- two's complement: impossible to trap * -- one's complement: trap if and only if x != 0 && y != 0 && (~x & ~y) == 0 * -- mantissa + sign: impossible to trap */ ARITH_DECL_BI_SS_S(or) { useARI; #ifdef ARITHMETIC_CHECKS #if TRAP_REPRESENTATION #if ONES_COMPLEMENT if (x != 0 && y != 0 && (~x & ~y) == 0) ARITH_WARNING(ARITH_EXCEP_OR_T); #endif #endif #endif return x | y; } /* * Left-shifting by a negative or greater than type width count is * forbidden. Left-shifting a negative value is forbidden (underflow). * Left-shifting a positive value can trigger an overflow. We check it * by casting into the unsigned world and simulating a truncation. * * If SIGNED_IS_BIGGER is set, then the signed type width is 1 more * than the unsigned type width (the sign bit is included in the width); * otherwise, if W is the signed type width, 1U << (W-1) is equal to * NATIVE_SIGNED_MAX + 1. */ ARITH_DECL_BI_SI_S(lsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y < 0) ARITH_WARNING(ARITH_EXCEP_LSH_C); else if ( #if SIGNED_IS_BIGGER y > NATIVE_UNSIGNED_BITS #else y >= NATIVE_UNSIGNED_BITS || (y > 0 && (((arith_u)1 << (y - 1)) > (arith_u)NATIVE_SIGNED_MAX)) #endif ) ARITH_WARNING(ARITH_EXCEP_LSH_W); else if (x < 0) ARITH_WARNING(ARITH_EXCEP_LSH_U); else if (x > 0 && ((((arith_u)x << y) & NATIVE_SIGNED_MAX) >> y) != (arith_u)x) ARITH_WARNING(ARITH_EXCEP_LSH_O); #endif return x << y; } /* * Right-shifting is handled as left-shifting, except that the problem * is somehow simpler: there is no possible overflow or underflow. Only * right-shifting a negative value yields an implementation defined * result (_not_ an undefined behaviour). */ ARITH_DECL_BI_SI_S(rsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y < 0) ARITH_WARNING(ARITH_EXCEP_RSH_C); else if ( #if SIGNED_IS_BIGGER y > NATIVE_UNSIGNED_BITS #else y >= NATIVE_UNSIGNED_BITS || (y > 0 && (((arith_u)1 << (y - 1)) > (arith_u)NATIVE_SIGNED_MAX)) #endif ) ARITH_WARNING(ARITH_EXCEP_RSH_W); else if (x < 0) ARITH_WARNING(ARITH_EXCEP_RSH_N); #endif return x >> y; } /* * Overflow can happen only if both operands have the same sign. * Underflow can happen only if both operands have opposite signs. * * Overflow checking: this is done quite inefficiently by performing * a division on the result and check if it matches the initial operand. */ ARITH_DECL_BI_SS_S(star) { useARI; #ifdef ARITHMETIC_CHECKS if (x == 0 || y == 0) return 0; if (x > 0 && y > 0) { if ((((arith_u)x * (arith_u)y) & (arith_u)NATIVE_SIGNED_MAX) / (arith_u)y != (arith_u)x) ARITH_WARNING(ARITH_EXCEP_STAR_O); } else if (x < 0 && y < 0) { if ( #if NEGATIVE_IS_BIGGER (x == NATIVE_SIGNED_MIN || y == NATIVE_SIGNED_MIN) || #endif (((arith_u)(-x) * (arith_u)(-y)) & (arith_u)NATIVE_SIGNED_MAX) / (arith_u)(-y) != (arith_u)(-x)) ARITH_WARNING(ARITH_EXCEP_STAR_O); } else if (x > 0 && y < 0) { if ((arith_u)x > (arith_u)1 && ( #if NEGATIVE_IS_BIGGER y == NATIVE_SIGNED_MIN || #endif (((arith_u)x * (arith_u)(-y)) & (arith_u)NATIVE_SIGNED_MAX) / (arith_u)(-y) != (arith_u)x)) ARITH_WARNING(ARITH_EXCEP_STAR_U); } else { if ((arith_u)y > (arith_u)1 && ( #if NEGATIVE_IS_BIGGER x == NATIVE_SIGNED_MIN || #endif (((arith_u)y * (arith_u)(-x)) & (arith_u)NATIVE_SIGNED_MAX) / (arith_u)(-x) != (arith_u)y)) ARITH_WARNING(ARITH_EXCEP_STAR_U); } #endif return x * y; } /* * Division by 0 is an error. The only other possible problem is an * overflow of the result. Such an overflow can only happen in two's * complement representation, when NEGATIVE_IS_BIGGER is set, and * one attempts to divide NATIVE_SIGNED_MIN by -1: the result is then * -NATIVE_SIGNED_MIN, which is not representable by the type. This is * considered as an error, not a warning, because it actually triggers * an exception on modern Pentium-based PC. */ ARITH_DECL_BI_SS_S(slash) { if (y == 0) ARITH_ERROR(ARITH_EXCEP_SLASH_D); #if NEGATIVE_IS_BIGGER else if (x == NATIVE_SIGNED_MIN && y == (arith_s)(-1)) ARITH_ERROR(ARITH_EXCEP_SLASH_O); #endif return x / y; } /* * Only division by 0 needs to be checked. */ ARITH_DECL_BI_SS_S(pct) { if (y == 0) ARITH_ERROR(ARITH_EXCEP_PCT_D); return x % y; } ARITH_DECL_MONO_ST_US(octconst) { arith_u z = 0; for (; ARITH_OCTAL(*c); c ++) { arith_u w = ARITH_OVAL(*c); if (z > (NATIVE_UNSIGNED_MAX_A / 8)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z *= 8; #if 0 /* obsolete */ /* NATIVE_UNSIGNED_MAX_A is 2^N - 1, 0 <= w <= 7 and 8 divides z */ if (z > (NATIVE_UNSIGNED_MAX_A - w)) ARITH_ERROR(ARITH_EXCEP_CONST_O); #endif z += w; } *ru = z; #if SIGNED_IS_BIGGER *rs = z; *sp = 1; #else if (z > NATIVE_SIGNED_MAX) { *sp = 0; } else { *rs = z; *sp = 1; } #endif return c; } ARITH_DECL_MONO_ST_US(decconst) { arith_u z = 0; for (; ARITH_DECIM(*c); c ++) { arith_u w = ARITH_DVAL(*c); if (z > (NATIVE_UNSIGNED_MAX_A / 10)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z *= 10; if (z > (NATIVE_UNSIGNED_MAX_A - w)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z += w; } *ru = z; #if SIGNED_IS_BIGGER *rs = z; *sp = 1; #else if (z > NATIVE_SIGNED_MAX) { *sp = 0; } else { *rs = z; *sp = 1; } #endif return c; } ARITH_DECL_MONO_ST_US(hexconst) { arith_u z = 0; for (; ARITH_HEXAD(*c); c ++) { arith_u w = ARITH_HVAL(*c); if (z > (NATIVE_UNSIGNED_MAX_A / 16)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z *= 16; #if 0 /* obsolete */ /* NATIVE_UNSIGNED_MAX_A is 2^N - 1, 0 <= w <= 15 and 16 divides z */ if (z > (NATIVE_UNSIGNED_MAX_A - w)) ARITH_ERROR(ARITH_EXCEP_CONST_O); #endif z += w; } *ru = z; #if SIGNED_IS_BIGGER *rs = z; *sp = 1; #else if (z > NATIVE_SIGNED_MAX) { *sp = 0; } else { *rs = z; *sp = 1; } #endif return c; } #else /* ====================================================================== */ /* Arithmetics with a simple simulated type */ /* ====================================================================== */ /* * We simulate a type with the following characteristics: * -- the signed type width is equal to the unsigned type width (which * means that there is one less value bit in the signed type); * -- the signed type uses two's complement representation; * -- there is no trap representation; * -- overflows and underflows are truncated (but a warning is emitted * if ARITHMETIC_CHECKS is defined); * -- overflow on integer division is still an error; * -- right-shifting of a negative value extends the sign; * -- the shift count value is first cast to unsigned, then reduced modulo * the type size. * * These characteristics follow what is usually found on modern * architectures. * * The maximum emulated type size is twice the size of the unsigned native * type which is used to emulate the type. */ #undef SIMUL_ONE_TMP #undef SIMUL_MSW_TMP1 #undef SIMUL_MSW_MASK #undef SIMUL_LSW_TMP1 #undef SIMUL_LSW_MASK #define SIMUL_ONE_TMP ((SIMUL_ARITH_SUBTYPE)1) #define SIMUL_MSW_TMP1 (SIMUL_ONE_TMP << (SIMUL_MSW_WIDTH - 1)) #define SIMUL_MSW_MASK (SIMUL_MSW_TMP1 | (SIMUL_MSW_TMP1 - SIMUL_ONE_TMP)) #define SIMUL_LSW_TMP1 (SIMUL_ONE_TMP << (SIMUL_LSW_WIDTH - 1)) #define SIMUL_LSW_MASK (SIMUL_LSW_TMP1 | (SIMUL_LSW_TMP1 - SIMUL_ONE_TMP)) #undef TMSW #undef TLSW #define TMSW(x) ((x) & SIMUL_MSW_MASK) #define TLSW(x) ((x) & SIMUL_LSW_MASK) #undef SIMUL_ZERO #undef SIMUL_ONE #define SIMUL_ZERO arith_strc(ARITH_TYPENAME, _zero) #define SIMUL_ONE arith_strc(ARITH_TYPENAME, _one) static arith_u SIMUL_ZERO = { 0, 0 }; static arith_u SIMUL_ONE = { 0, 1 }; /* * We use the fact that both the signed and unsigned type are the same * structure. The difference between the signed and the unsigned type * is a type information, and, as such, is considered compile-time and * not maintained in the value structure itself. This is a job for * the programmer / compiler. */ ARITH_DECL_MONO_S_U(to_u) { useARI; return x; } ARITH_DECL_MONO_I_U(fromint) { arith_u z; if (x < 0) return arith_op_u(neg)(aARI_ arith_op_u(fromint)(aARI_ -x)); /* * This code works because types smaller than int are promoted * by the C compiler before evaluating the >> operator. */ z.msw = TMSW(((SIMUL_ARITH_SUBTYPE)x >> (SIMUL_LSW_WIDTH - 1)) >> 1); z.lsw = TLSW((SIMUL_ARITH_SUBTYPE)x); return z; } ARITH_DECL_MONO_L_U(fromulong) { arith_u z; useARI; #if (ULONG_MAX >> (SIMUL_LSW_WIDTH - 1)) >> 1 == 0 z.msw = 0; z.lsw = x; #else z.msw = TMSW(x >> SIMUL_LSW_WIDTH); z.lsw = TLSW((SIMUL_ARITH_SUBTYPE)x); #endif return z; } ARITH_DECL_MONO_U_I(toint) { useARI; #if ((INT_MAX >> (SIMUL_LSW_WIDTH - 1)) >> 1) == 0 if (x.msw != 0 || x.lsw > (SIMUL_ARITH_SUBTYPE)INT_MAX) return INT_MAX; return (int)x.lsw; #else #if (INT_MAX >> (SIMUL_SUBTYPE_BITS - 1)) == 0 if (x.msw > (SIMUL_ARITH_SUBTYPE)(INT_MAX >> SIMUL_LSW_WIDTH)) return INT_MAX; #endif return ((int)x.msw << SIMUL_LSW_WIDTH) | (int)x.lsw; #endif } ARITH_DECL_MONO_U_L(toulong) { useARI; #if ((ULONG_MAX >> (SIMUL_LSW_WIDTH - 1)) >> 1) == 0 if (x.msw != 0 || x.lsw > (SIMUL_ARITH_SUBTYPE)ULONG_MAX) return ULONG_MAX; return (unsigned long)x.lsw; #else #if (ULONG_MAX >> (SIMUL_SUBTYPE_BITS - 1)) == 0 if (x.msw > (SIMUL_ARITH_SUBTYPE)(ULONG_MAX >> SIMUL_LSW_WIDTH)) return ULONG_MAX; #endif return ((unsigned long)x.msw << SIMUL_LSW_WIDTH) | (unsigned long)x.lsw; #endif } ARITH_DECL_MONO_U_U(neg) { x = arith_op_u(not)(aARI_ x); return arith_op_u(plus)(aARI_ x, SIMUL_ONE); } ARITH_DECL_MONO_U_U(not) { useARI; x.msw = TMSW(~x.msw); x.lsw = TLSW(~x.lsw); return x; } ARITH_DECL_MONO_U_I(lnot) { useARI; return x.msw == 0 && x.lsw == 0; } ARITH_DECL_MONO_U_I(lval) { useARI; return x.msw != 0 || x.lsw != 0; } ARITH_DECL_BI_UU_U(plus) { useARI; x.lsw = TLSW(x.lsw + y.lsw); x.msw = TMSW(x.msw + y.msw); if (x.lsw < y.lsw) x.msw = TMSW(x.msw + 1); return x; } ARITH_DECL_BI_UU_U(minus) { return arith_op_u(plus)(aARI_ x, arith_op_u(neg)(aARI_ y)); } ARITH_DECL_BI_UI_U(lsh) { useARI; if (y == 0) return x; #ifdef ARITHMETIC_CHECKS if (y < 0) ARITH_WARNING(ARITH_EXCEP_LSH_C); else if (y >= SIMUL_NUMBITS) ARITH_WARNING(ARITH_EXCEP_LSH_W); #endif y = (unsigned)y % SIMUL_NUMBITS; if (y >= SIMUL_LSW_WIDTH) { /* * We use here the fact that the LSW size is always * equal to or greater than the MSW size. */ x.msw = TMSW(x.lsw << (y - SIMUL_LSW_WIDTH)); x.lsw = 0; return x; } x.msw = TMSW((x.msw << y) | (x.lsw >> (SIMUL_LSW_WIDTH - y))); x.lsw = TLSW(x.lsw << y); return x; } ARITH_DECL_BI_UI_U(rsh) { useARI; #ifdef ARITHMETIC_CHECKS if (y < 0) ARITH_WARNING(ARITH_EXCEP_RSH_C); else if (y >= SIMUL_NUMBITS) ARITH_WARNING(ARITH_EXCEP_RSH_W); #endif y = (unsigned)y % SIMUL_NUMBITS; if (y >= SIMUL_LSW_WIDTH) { x.lsw = x.msw >> (y - SIMUL_LSW_WIDTH); x.msw = 0; return x; } x.lsw = TLSW((x.lsw >> y) | (x.msw << (SIMUL_LSW_WIDTH - y))); x.msw >>= y; return x; } ARITH_DECL_BI_UU_I(lt) { useARI; return x.msw < y.msw || (x.msw == y.msw && x.lsw < y.lsw); } ARITH_DECL_BI_UU_I(leq) { useARI; return x.msw < y.msw || (x.msw == y.msw && x.lsw <= y.lsw); } ARITH_DECL_BI_UU_I(gt) { return arith_op_u(lt)(aARI_ y, x); } ARITH_DECL_BI_UU_I(geq) { return arith_op_u(leq)(aARI_ y, x); } ARITH_DECL_BI_UU_I(same) { useARI; return x.msw == y.msw && x.lsw == y.lsw; } ARITH_DECL_BI_UU_I(neq) { return !arith_op_u(same)(aARI_ x, y); } ARITH_DECL_BI_UU_U(and) { useARI; x.msw &= y.msw; x.lsw &= y.lsw; return x; } ARITH_DECL_BI_UU_U(xor) { useARI; x.msw ^= y.msw; x.lsw ^= y.lsw; return x; } ARITH_DECL_BI_UU_U(or) { useARI; x.msw |= y.msw; x.lsw |= y.lsw; return x; } #undef SIMUL_LSW_ODDLEN #undef SIMUL_LSW_HALFLEN #undef SIMUL_LSW_HALFMASK #define SIMUL_LSW_ODDLEN (SIMUL_LSW_WIDTH & 1) #define SIMUL_LSW_HALFLEN (SIMUL_LSW_WIDTH / 2) #define SIMUL_LSW_HALFMASK (~(~(SIMUL_ARITH_SUBTYPE)0 << SIMUL_LSW_HALFLEN)) ARITH_DECL_BI_UU_U(star) { arith_u z; SIMUL_ARITH_SUBTYPE a = x.lsw, b = y.lsw, t00, t01, t10, t11, c = 0, t; #if SIMUL_LSW_ODDLEN SIMUL_ARITH_SUBTYPE bms = b & (SIMUL_ONE_TMP << (SIMUL_LSW_WIDTH - 1)); b &= ~(SIMUL_ONE_TMP << (SIMUL_LSW_WIDTH - 1)); #endif useARI; t00 = (a & SIMUL_LSW_HALFMASK) * (b & SIMUL_LSW_HALFMASK); t01 = (a & SIMUL_LSW_HALFMASK) * (b >> SIMUL_LSW_HALFLEN); t10 = (a >> SIMUL_LSW_HALFLEN) * (b & SIMUL_LSW_HALFMASK); t11 = (a >> SIMUL_LSW_HALFLEN) * (b >> SIMUL_LSW_HALFLEN); t = z.lsw = t00; z.lsw = TLSW(z.lsw + (t01 << SIMUL_LSW_HALFLEN)); if (t > z.lsw) c ++; t = z.lsw; z.lsw = TLSW(z.lsw + (t10 << SIMUL_LSW_HALFLEN)); if (t > z.lsw) c ++; #if SIMUL_LSW_ODDLEN t = z.lsw; z.lsw = TLSW(z.lsw + (t11 << (2 * SIMUL_LSW_HALFLEN))); if (t > z.lsw) c ++; if (bms && (a & SIMUL_ONE_TMP)) { t = z.lsw; z.lsw = TLSW(z.lsw + b); if (t > z.lsw) c ++; } #endif z.msw = TMSW(x.lsw * y.msw + x.msw * y.lsw + c + (t01 >> (SIMUL_LSW_WIDTH - SIMUL_LSW_HALFLEN)) + (t10 >> (SIMUL_LSW_WIDTH - SIMUL_LSW_HALFLEN)) + (t11 >> (SIMUL_LSW_WIDTH - (2 * SIMUL_LSW_HALFLEN)))); return z; } /* * This function calculates the unsigned integer division, yielding * both quotient and remainder. The divider (y) MUST be non-zero. */ static void arith_op_u(udiv)(pARI_ arith_u x, arith_u y, arith_u *q, arith_u *r) { int i, j; arith_u a; *q = SIMUL_ZERO; for (i = SIMUL_NUMBITS - 1; i >= 0; i --) { if (i >= (int)SIMUL_LSW_WIDTH && (y.msw & (SIMUL_ONE_TMP << (i - SIMUL_LSW_WIDTH)))) break; if (i < (int)SIMUL_LSW_WIDTH && (y.lsw & (SIMUL_ONE_TMP << i))) break; } a = arith_op_u(lsh)(aARI_ y, SIMUL_NUMBITS - 1 - i); for (j = SIMUL_NUMBITS - 1 - i; j >= SIMUL_LSW_WIDTH; j --) { if (arith_op_u(leq)(aARI_ a, x)) { x = arith_op_u(minus)(aARI_ x, a); q->msw |= SIMUL_ONE_TMP << (j - SIMUL_LSW_WIDTH); } a = arith_op_u(rsh)(aARI_ a, 1); } for (; j >= 0; j --) { if (arith_op_u(leq)(aARI_ a, x)) { x = arith_op_u(minus)(aARI_ x, a); q->lsw |= SIMUL_ONE_TMP << j; } a = arith_op_u(rsh)(aARI_ a, 1); } *r = x; } ARITH_DECL_BI_UU_U(slash) { arith_u q, r; if (arith_op_u(same)(aARI_ y, SIMUL_ZERO)) ARITH_ERROR(ARITH_EXCEP_SLASH_D); arith_op_u(udiv)(aARI_ x, y, &q, &r); return q; } ARITH_DECL_BI_UU_U(pct) { arith_u q, r; if (arith_op_u(same)(aARI_ y, SIMUL_ZERO)) ARITH_ERROR(ARITH_EXCEP_PCT_D); arith_op_u(udiv)(aARI_ x, y, &q, &r); return r; } #undef SIMUL_TRAP #undef SIMUL_TRAPL #define SIMUL_TRAP (SIMUL_ONE_TMP << (SIMUL_MSW_WIDTH - 1)) #define SIMUL_TRAPL (SIMUL_ONE_TMP << (SIMUL_LSW_WIDTH - 1)) ARITH_DECL_MONO_U_S(to_s) { useARI; #ifdef ARITHMETIC_CHECKS if (x.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_CONV_O); #endif return x; } ARITH_DECL_MONO_I_S(fromint) { return arith_op_u(fromint)(aARI_ x); } ARITH_DECL_MONO_L_S(fromlong) { if (x < 0) return arith_op_u(neg)(aARI_ arith_op_u(fromulong)(aARI_ (unsigned long)(-x))); return arith_op_u(fromulong)(aARI_ (unsigned long)x); } ARITH_DECL_MONO_S_I(toint) { if (x.msw & SIMUL_TRAP) return -arith_op_u(toint)(aARI_ arith_op_u(neg)(aARI_ x)); return arith_op_u(toint)(aARI_ x); } ARITH_DECL_MONO_S_L(tolong) { if (x.msw & SIMUL_TRAP) return -(long)arith_op_u(toulong)(aARI_ arith_op_u(neg)(aARI_ x)); return (long)arith_op_u(toulong)(aARI_ x); } ARITH_DECL_MONO_S_S(neg) { #ifdef ARITHMETIC_CHECKS if (x.lsw == 0 && x.msw == SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_NEG_O); #endif return arith_op_u(neg)(aARI_ x); } ARITH_DECL_MONO_S_S(not) { return arith_op_u(not)(aARI_ x); } ARITH_DECL_MONO_S_I(lnot) { return arith_op_u(lnot)(aARI_ x); } ARITH_DECL_MONO_S_I(lval) { return arith_op_u(lval)(aARI_ x); } ARITH_DECL_BI_SS_S(plus) { arith_u z = arith_op_u(plus)(aARI_ x, y); #ifdef ARITHMETIC_CHECKS if (x.msw & y.msw & ~z.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_PLUS_U); else if (~x.msw & ~y.msw & z.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_PLUS_O); #endif return z; } ARITH_DECL_BI_SS_S(minus) { arith_s z = arith_op_u(minus)(aARI_ x, y); #ifdef ARITHMETIC_CHECKS if (x.msw & ~y.msw & ~z.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_MINUS_U); else if (~x.msw & y.msw & z.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_MINUS_O); #endif return z; } /* * Since signed and unsigned widths are equal for the simulated type, * we can use the unsigned left shift function, which performs the * the checks on the type width. */ ARITH_DECL_BI_SI_S(lsh) { arith_s z = arith_op_u(lsh)(aARI_ x, y); #ifdef ARITHMETIC_CHECKS if (x.msw & SIMUL_TRAP) ARITH_WARNING(ARITH_EXCEP_LSH_U); else { /* * To check for possible overflow, we right shift the * result. We need to make the shift count proper so that * we do not emit a double-warning. Besides, the left shift * could have been untruncated but yet affet the sign bit, * so we must test this explicitly. */ arith_s w = arith_op_u(rsh)(aARI_ z, (unsigned)y % SIMUL_NUMBITS); if ((z.msw & SIMUL_TRAP) || w.msw != x.msw || w.lsw != x.lsw) ARITH_WARNING(ARITH_EXCEP_LSH_O); } #endif return z; } /* * We define that right shifting a negative value, besides being worth a * warning, duplicates the sign bit. This is the most useful and most * usually encountered behaviour, and the standard allows it. */ ARITH_DECL_BI_SI_S(rsh) { int xn = (x.msw & SIMUL_TRAP) != 0; arith_s z = arith_op_u(rsh)(aARI_ x, y); int gy = (unsigned)y % SIMUL_NUMBITS; #ifdef ARITHMETIC_CHECKS if (xn) ARITH_WARNING(ARITH_EXCEP_RSH_N); #endif if (xn && gy > 0) { if (gy <= SIMUL_MSW_WIDTH) { z.msw |= TMSW(~(SIMUL_MSW_MASK >> gy)); } else { z.msw = SIMUL_MSW_MASK; z.lsw |= TLSW(~(SIMUL_LSW_MASK >> (gy - SIMUL_MSW_WIDTH))); } } return z; } ARITH_DECL_BI_SS_I(lt) { int xn = (x.msw & SIMUL_TRAP) != 0; int yn = (y.msw & SIMUL_TRAP) != 0; useARI; if (xn == yn) { return x.msw < y.msw || (x.msw == y.msw && x.lsw < y.lsw); } else { return xn; } } ARITH_DECL_BI_SS_I(leq) { int xn = (x.msw & SIMUL_TRAP) != 0; int yn = (y.msw & SIMUL_TRAP) != 0; useARI; if (xn == yn) { return x.msw < y.msw || (x.msw == y.msw && x.lsw <= y.lsw); } else { return xn; } } ARITH_DECL_BI_SS_I(gt) { return arith_op_s(lt)(aARI_ y, x); } ARITH_DECL_BI_SS_I(geq) { return arith_op_s(leq)(aARI_ y, x); } ARITH_DECL_BI_SS_I(same) { useARI; return x.msw == y.msw && x.lsw == y.lsw; } ARITH_DECL_BI_SS_I(neq) { return !arith_op_s(same)(aARI_ x, y); } ARITH_DECL_BI_SS_S(and) { return arith_op_u(and)(aARI_ x, y); } ARITH_DECL_BI_SS_S(xor) { return arith_op_u(xor)(aARI_ x, y); } ARITH_DECL_BI_SS_S(or) { return arith_op_u(or)(aARI_ x, y); } /* * This function calculates the signed integer division, yielding * both quotient and remainder. The divider (y) MUST be non-zero. */ static void arith_op_s(sdiv)(pARI_ arith_s x, arith_s y, arith_s *q, arith_s *r) { arith_u a = x, b = y, c, d; int xn = 0, yn = 0; if (x.msw & SIMUL_TRAP) { a = arith_op_u(neg)(aARI_ x); xn = 1; } if (y.msw & SIMUL_TRAP) { b = arith_op_u(neg)(aARI_ y); yn = 1; } arith_op_u(udiv)(aARI_ a, b, &c, &d); if (xn != yn) *q = arith_op_u(neg)(aARI_ c); else *q = c; if (xn != yn) *r = arith_op_u(neg)(aARI_ d); else *r = d; } /* * Overflow/underflow check is done the following way: obvious cases * are checked (both upper words non-null, both upper words null...) * and border-line occurrences are verified with an unsigned division * (which is quite computationaly expensive). */ ARITH_DECL_BI_SS_S(star) { #ifdef ARITHMETIC_CHECKS arith_s z = arith_op_u(star)(aARI_ x, y); int warn = 0; if (x.msw > 0) { if (y.msw > 0 #if SIMUL_LSW_ODDLEN || (y.lsw & SIMUL_TRAPL) #endif ) warn = 1; } #if SIMUL_LSW_ODDLEN else if (y.msw > 0 && (x.lsw & SIMUL_TRAPL)) warn = 1; #endif if (!warn && (x.msw > 0 || y.msw > 0 #if SIMUL_LSW_ODDLEN || ((x.lsw | y.lsw) & SIMUL_TRAPL) #endif )) { if (x.msw == SIMUL_MSW_MASK && x.lsw == SIMUL_LSW_MASK) { if (y.msw == SIMUL_TRAP && y.lsw == 0) warn = 1; } else if (!(x.msw == 0 && x.lsw == 0) && !arith_op_s(same)(aARI_ arith_op_s(slash)(aARI_ z, x), y)) { } warn = 1; } if (warn) ARITH_WARNING(((x.msw ^ y.msw) & SIMUL_TRAP) ? ARITH_EXCEP_STAR_U : ARITH_EXCEP_STAR_O); return z; #else return arith_op_u(star)(aARI_ x, y); #endif } ARITH_DECL_BI_SS_S(slash) { arith_s q, r; if (arith_op_s(same)(aARI_ y, SIMUL_ZERO)) ARITH_ERROR(ARITH_EXCEP_SLASH_D); else if (x.msw == SIMUL_TRAP && x.lsw == 0 && y.msw == SIMUL_MSW_MASK && y.lsw == SIMUL_LSW_MASK) ARITH_ERROR(ARITH_EXCEP_SLASH_O); arith_op_s(sdiv)(aARI_ x, y, &q, &r); return q; } ARITH_DECL_BI_SS_S(pct) { arith_s q, r; if (arith_op_s(same)(aARI_ y, SIMUL_ZERO)) ARITH_ERROR(ARITH_EXCEP_PCT_D); arith_op_s(sdiv)(aARI_ x, y, &q, &r); return r; } ARITH_DECL_MONO_ST_US(octconst) { arith_u z = { 0, 0 }; for (; ARITH_OCTAL(*c); c ++) { unsigned w = ARITH_OVAL(*c); if (z.msw > (SIMUL_MSW_MASK / 8)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z = arith_op_u(lsh)(aARI_ z, 3); z.lsw |= w; } *ru = z; if (z.msw & SIMUL_TRAP) { *sp = 0; } else { *rs = z; *sp = 1; } return c; } ARITH_DECL_MONO_ST_US(decconst) { #define ARITH_ALPHA_TRAP (1U << (SIMUL_MSW_WIDTH - 1)) #define ARITH_ALPHA_MASK (ARITH_ALPHA_TRAP | (ARITH_ALPHA_TRAP - 1)) #define ARITH_ALPHA ((ARITH_ALPHA_MASK - 10 * (ARITH_ALPHA_TRAP / 5)) + 1) #define ARITH_ALPHA_A ((SIMUL_MSW_MASK - 10 * (SIMUL_TRAP / 5)) + 1) arith_u z = { 0, 0 }; for (; ARITH_DECIM(*c); c ++) { unsigned w = ARITH_DVAL(*c); SIMUL_ARITH_SUBTYPE t; if (z.msw > (SIMUL_MSW_MASK / 10) || (z.msw == (SIMUL_MSW_MASK / 10) && /* ARITH_ALPHA is between 1 and 9, inclusive. */ #if ARITH_ALPHA == 5 z.lsw >= SIMUL_TRAPL #else z.lsw > ((SIMUL_TRAPL / 5) * ARITH_ALPHA_A + ((SIMUL_TRAPL % 5) * ARITH_ALPHA_A) / 5) #endif )) ARITH_ERROR(ARITH_EXCEP_CONST_O); z = arith_op_u(plus)(aARI_ arith_op_u(lsh)(aARI_ z, 3), arith_op_u(lsh)(aARI_ z, 1)); t = TLSW(z.lsw + w); if (t < z.lsw) { if (TMSW(z.msw + 1) == 0) ARITH_ERROR(ARITH_EXCEP_CONST_O); z.msw ++; } z.lsw = t; } *ru = z; if (z.msw & SIMUL_TRAP) { *sp = 0; } else { *rs = z; *sp = 1; } return c; #undef ARITH_ALPHA_A #undef ARITH_ALPHA #undef ARITH_ALPHA_TRAP #undef ARITH_ALPHA_MASK } ARITH_DECL_MONO_ST_US(hexconst) { arith_u z = { 0, 0 }; for (; ARITH_HEXAD(*c); c ++) { unsigned w = ARITH_HVAL(*c); if (z.msw > (SIMUL_MSW_MASK / 16)) ARITH_ERROR(ARITH_EXCEP_CONST_O); z = arith_op_u(lsh)(aARI_ z, 4); z.lsw |= w; } *ru = z; if (z.msw & SIMUL_TRAP) { *sp = 0; } else { *rs = z; *sp = 1; } return c; } #endif #undef ARITH_HVAL #undef ARITH_HEXAD #undef ARITH_DVAL #undef ARITH_DECIM #undef ARITH_OVAL #undef ARITH_OCTAL Convert-Binary-C-0.76/ucpp/arith.h0000644000175000001440000002472711550664631015455 0ustar mhxusers/* * Integer arithmetic evaluation, header file. * * (c) Thomas Pornin 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ /* * This arithmetic evaluator uses two files: this header file (arith.h) * and the source file (arith.c). To use this code, the source file should * be included from another .c file which defines some macros (see below). * Then the functions defined in the arith.c file become available to the * including source file. If those functions are defined with external * linkage (that is, `ARITH_FUNCTION_HEADER' does not contain `static'), * it is possible for other source files to use the arithmetic functions * by including the arith.h header only. The source file which includes * arith.c should *not* include arith.h. * * If the #include is for arith.h, the following macros should be * defined: * * -- If the evaluator is supposed to use a native type: * NATIVE_SIGNED the native signed integer type * NATIVE_UNSIGNED the native unsigned integer type * * -- If the evaluator is supposed to use an emulated type: * SIMUL_ARITH_SUBTYPE the native unsigned type used for the simulation * SIMUL_SUBTYPE_BITS the native unsigned type size * SIMUL_NUMBITS the emulated type size * * -- For both cases: * ARITH_TYPENAME the central arithmetic type name * ARITH_FUNCTION_HEADER the qualifiers to add to function definitions * * The presence (respectively absence) of the NATIVE_SIGNED macro triggers * the use of the native type evaluator (respectively simulated type * evaluator). * * If the #include is for arith.c, the macros for arith.h should be defined, * and the following should be defined as well: * * -- If the evaluator is supposed to use a native type: * NATIVE_UNSIGNED_BITS the native unsigned type size * NATIVE_SIGNED_MIN the native signed minimum value * NATIVE_SIGNED_MAX the native signed maximum value * (the last two macros must evaluate to signed constant expressions) * * -- For both cases: * ARITH_WARNING(type) code to perform on warning * ARITH_ERROR(type) code to perform on error * * The macro ARITH_WARNING() and ARITH_ERROR() are invoked with a * numerical argument which is one of the enumeration constants * defined below (ARITH_EXCEP_*) that identifies the specific problem. * * If the #include is for arith.c, the macro ARITHMETIC_CHECKS may be * defined. When this macro is defined, checks are performed so that all * operation which would lead to undefined or implementation-defined * behaviour are first reported through ARITH_WARNING(). Code is smaller * and faster without these checks, of course. Regardless of the status * of that macro, divisions by 0 and overflows on signed division are * reported as errors through ARITH_ERROR(). * */ #ifndef ARITH_H__ #define ARITH_H__ enum { /* Warnings */ ARITH_EXCEP_CONV_O, /* overflow on conversion */ ARITH_EXCEP_NEG_O, /* overflow on unary minus */ ARITH_EXCEP_NOT_T, /* trap representation on bitwise inversion */ ARITH_EXCEP_PLUS_O, /* overflow on addition */ ARITH_EXCEP_PLUS_U, /* underflow on addition */ ARITH_EXCEP_MINUS_O, /* overflow on subtraction */ ARITH_EXCEP_MINUS_U, /* underflow on subtraction */ ARITH_EXCEP_AND_T, /* trap representation on bitwise and */ ARITH_EXCEP_XOR_T, /* trap representation on bitwise xor */ ARITH_EXCEP_OR_T, /* trap representation on bitwise or */ ARITH_EXCEP_LSH_W, /* left shift by type width or more */ ARITH_EXCEP_LSH_C, /* left shift by negative count */ ARITH_EXCEP_LSH_O, /* overflow on left shift */ ARITH_EXCEP_LSH_U, /* underflow on left shift */ ARITH_EXCEP_RSH_W, /* right shift by type width or more */ ARITH_EXCEP_RSH_C, /* right shift by negative count */ ARITH_EXCEP_RSH_N, /* right shift of negative value */ ARITH_EXCEP_STAR_O, /* overflow on multiplication */ ARITH_EXCEP_STAR_U, /* underflow on multiplication */ /* Errors */ ARITH_EXCEP_SLASH_D, /* division by 0 */ ARITH_EXCEP_SLASH_O, /* overflow on division */ ARITH_EXCEP_PCT_D, /* division by 0 on modulus operator */ ARITH_EXCEP_CONST_O /* constant too large */ }; #if !(defined pARI && defined aARI) #define pARI void #define pARI_ #define aARI #define aARI_ #define useARI ((void) 0) #else #define pARI_ pARI, #define aARI_ aARI, #define useARI ((void) aARI) #endif #define arith_strc_(x, y) x ## y #define arith_strc(x, y) arith_strc_(x, y) #define arith_u arith_strc(u_, ARITH_TYPENAME) #define arith_s arith_strc(s_, ARITH_TYPENAME) #define arith_op_u(op) arith_strc(ARITH_TYPENAME, arith_strc(_u_, op)) #define arith_op_s(op) arith_strc(ARITH_TYPENAME, arith_strc(_s_, op)) #define ARITH_DECL_MONO_U_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ arith_u x) #define ARITH_DECL_MONO_U_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_u(op)(pARI_ arith_u x) #define ARITH_DECL_MONO_U_I(op) ARITH_FUNCTION_HEADER int \ arith_op_u(op)(pARI_ arith_u x) #define ARITH_DECL_MONO_U_L(op) ARITH_FUNCTION_HEADER unsigned long \ arith_op_u(op)(pARI_ arith_u x) #define ARITH_DECL_MONO_S_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_s(op)(pARI_ arith_s x) #define ARITH_DECL_MONO_S_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ arith_s x) #define ARITH_DECL_MONO_S_I(op) ARITH_FUNCTION_HEADER int \ arith_op_s(op)(pARI_ arith_s x) #define ARITH_DECL_MONO_S_L(op) ARITH_FUNCTION_HEADER long \ arith_op_s(op)(pARI_ arith_s x) #define ARITH_DECL_MONO_I_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ int x) #define ARITH_DECL_MONO_L_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ unsigned long x) #define ARITH_DECL_MONO_I_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ int x) #define ARITH_DECL_MONO_L_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ long x) #define ARITH_DECL_MONO_ST_US(op) ARITH_FUNCTION_HEADER char *arith_op_u(op) \ (pARI_ char *c, arith_u *ru, arith_s *rs, int *sp) #define ARITH_DECL_BI_UU_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ arith_u x, arith_u y) #define ARITH_DECL_BI_UI_U(op) ARITH_FUNCTION_HEADER arith_u \ arith_op_u(op)(pARI_ arith_u x, int y) #define ARITH_DECL_BI_UU_I(op) ARITH_FUNCTION_HEADER int \ arith_op_u(op)(pARI_ arith_u x, arith_u y) #define ARITH_DECL_BI_SS_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ arith_s x, arith_s y) #define ARITH_DECL_BI_SI_S(op) ARITH_FUNCTION_HEADER arith_s \ arith_op_s(op)(pARI_ arith_s x, int y) #define ARITH_DECL_BI_SS_I(op) ARITH_FUNCTION_HEADER int \ arith_op_s(op)(pARI_ arith_s x, arith_s y) #endif #ifdef NATIVE_SIGNED typedef NATIVE_SIGNED arith_s; typedef NATIVE_UNSIGNED arith_u; #else #if SIMUL_NUMBITS > (2 * SIMUL_SUBTYPE_BITS) #error Native subtype too small for arithmetic simulation. #endif #define SIMUL_MSW_WIDTH (SIMUL_NUMBITS / 2) #define SIMUL_LSW_WIDTH ((SIMUL_NUMBITS + 1) / 2) typedef struct { SIMUL_ARITH_SUBTYPE msw, lsw; } arith_u, arith_s; #endif /* functions with the unsigned type */ ARITH_DECL_MONO_S_U(to_u); ARITH_DECL_MONO_I_U(fromint); ARITH_DECL_MONO_L_U(fromulong); ARITH_DECL_MONO_U_I(toint); ARITH_DECL_MONO_U_L(toulong); ARITH_DECL_MONO_U_U(neg); ARITH_DECL_MONO_U_U(not); ARITH_DECL_MONO_U_I(lnot); ARITH_DECL_MONO_U_I(lval); ARITH_DECL_BI_UU_U(plus); ARITH_DECL_BI_UU_U(minus); ARITH_DECL_BI_UI_U(lsh); ARITH_DECL_BI_UI_U(rsh); ARITH_DECL_BI_UU_I(lt); ARITH_DECL_BI_UU_I(leq); ARITH_DECL_BI_UU_I(gt); ARITH_DECL_BI_UU_I(geq); ARITH_DECL_BI_UU_I(same); ARITH_DECL_BI_UU_I(neq); ARITH_DECL_BI_UU_U(and); ARITH_DECL_BI_UU_U(xor); ARITH_DECL_BI_UU_U(or); ARITH_DECL_BI_UU_U(star); ARITH_DECL_BI_UU_U(slash); ARITH_DECL_BI_UU_U(pct); /* functions with the signed type */ ARITH_DECL_MONO_U_S(to_s); ARITH_DECL_MONO_I_S(fromint); ARITH_DECL_MONO_L_S(fromlong); ARITH_DECL_MONO_S_I(toint); ARITH_DECL_MONO_S_L(tolong); ARITH_DECL_MONO_S_S(neg); ARITH_DECL_MONO_S_S(not); ARITH_DECL_MONO_S_I(lnot); ARITH_DECL_MONO_S_I(lval); ARITH_DECL_BI_SS_S(plus); ARITH_DECL_BI_SS_S(minus); ARITH_DECL_BI_SI_S(lsh); ARITH_DECL_BI_SI_S(rsh); ARITH_DECL_BI_SS_I(lt); ARITH_DECL_BI_SS_I(leq); ARITH_DECL_BI_SS_I(gt); ARITH_DECL_BI_SS_I(geq); ARITH_DECL_BI_SS_I(same); ARITH_DECL_BI_SS_I(neq); ARITH_DECL_BI_SS_S(and); ARITH_DECL_BI_SS_S(xor); ARITH_DECL_BI_SS_S(or); ARITH_DECL_BI_SS_S(star); ARITH_DECL_BI_SS_S(slash); ARITH_DECL_BI_SS_S(pct); /* conversions from string */ ARITH_DECL_MONO_ST_US(octconst); ARITH_DECL_MONO_ST_US(hexconst); ARITH_DECL_MONO_ST_US(decconst); Convert-Binary-C-0.76/ucpp/atest.c0000644000175000001440000001346411550664631015455 0ustar mhxusers#include #include #include #include #if defined TEST_NATIVE #define NATIVE_SIGNED int #define NATIVE_UNSIGNED unsigned #define NATIVE_UNSIGNED_BITS 32 #define NATIVE_SIGNED_MIN LONG_MIN #define NATIVE_SIGNED_MAX LONG_MAX #elif defined TEST_SIMUL #define SIMUL_ARITH_SUBTYPE unsigned short #define SIMUL_SUBTYPE_BITS 16 #define SIMUL_NUMBITS 31 #else #error ====== Either TEST_NATIVE or TEST_SIMUL must be defined. #endif #define ARITH_TYPENAME zoinx #define ARITH_FUNCTION_HEADER static inline #define ARITH_WARNING(type) z_warn(type) #define ARITH_ERROR(type) z_error(type) void z_warn(int type); void z_error(int type); #include "arith.c" #if defined TEST_NATIVE static inline u_zoinx unsigned_to_uz(unsigned x) { return (u_zoinx)x; } static inline s_zoinx int_to_sz(int x) { return (s_zoinx)x; } static inline void print_uz(u_zoinx x) { printf("%u", x); } static inline void print_sz(s_zoinx x) { printf("%d", x); } #else static inline u_zoinx unsigned_to_uz(unsigned x) { u_zoinx v; v.msw = (x >> 16) & 0x7FFFU; v.lsw = x & 0xFFFFU; return v; } static inline s_zoinx int_to_sz(int x) { return unsigned_to_uz((unsigned)x); } static inline void print_uz(u_zoinx x) { printf("%u", ((unsigned)(x.msw) << 16) + (unsigned)(x.lsw)); } static inline void print_sz(s_zoinx x) { if (x.msw & 0x4000U) { putchar('-'); x = zoinx_u_neg(x); } print_uz(x); } #endif static inline void print_int(int x) { printf("%d", x); } static jmp_buf jbuf; void z_warn(int type) { switch (type) { case ARITH_EXCEP_CONV_O: fputs("[overflow on conversion] ", stdout); break; case ARITH_EXCEP_NEG_O: fputs("[overflow on unary minus] ", stdout); break; case ARITH_EXCEP_NOT_T: fputs("[trap representation on bitwise inversion] ", stdout); break; case ARITH_EXCEP_PLUS_O: fputs("[overflow on addition] ", stdout); break; case ARITH_EXCEP_PLUS_U: fputs("[underflow on addition] ", stdout); break; case ARITH_EXCEP_MINUS_O: fputs("[overflow on subtraction] ", stdout); break; case ARITH_EXCEP_MINUS_U: fputs("[underflow on subtraction] ", stdout); break; case ARITH_EXCEP_AND_T: fputs("[trap representation on bitwise and] ", stdout); break; case ARITH_EXCEP_XOR_T: fputs("[trap representation on bitwise xor] ", stdout); break; case ARITH_EXCEP_OR_T: fputs("[trap representation on bitwise or] ", stdout); break; case ARITH_EXCEP_LSH_W: fputs("[left shift by type width or more] ", stdout); break; case ARITH_EXCEP_LSH_C: fputs("[left shift by negative count] ", stdout); break; case ARITH_EXCEP_LSH_O: fputs("[overflow on left shift] ", stdout); break; case ARITH_EXCEP_LSH_U: fputs("[underflow on left shift] ", stdout); break; case ARITH_EXCEP_RSH_W: fputs("[right shift by type width or more] ", stdout); break; case ARITH_EXCEP_RSH_C: fputs("[right shift by negative count] ", stdout); break; case ARITH_EXCEP_RSH_N: fputs("[right shift of negative value] ", stdout); break; case ARITH_EXCEP_STAR_O: fputs("[overflow on multiplication] ", stdout); break; case ARITH_EXCEP_STAR_U: fputs("[underflow on multiplication] ", stdout); break; default: fprintf(stdout, "UNKNOWN WARNING TYPE: %d\n", type); exit(EXIT_FAILURE); } } void z_error(int type) { switch (type) { case ARITH_EXCEP_SLASH_D: fputs("division by 0\n", stdout); break; case ARITH_EXCEP_SLASH_O: fputs("overflow on division\n", stdout); break; case ARITH_EXCEP_PCT_D: fputs("division by 0 on modulus operator\n", stdout); break; default: fprintf(stdout, "UNKNOWN ERROR TYPE: %d\n", type); exit(EXIT_FAILURE); } longjmp(jbuf, 1); } int main(void) { #define OPTRY_GEN(op, x, y, convx, convy, printz) do { \ printf("%s %s %s -> ", #x, #op, #y); \ if (!setjmp(jbuf)) { \ printz(zoinx_ ## op (convx(x), convy(y))); \ putchar('\n'); \ } \ } while (0) #define IDENT(x) x #define OPTRY_UU_U(op, x, y) \ OPTRY_GEN(op, x, y, unsigned_to_uz, unsigned_to_uz, print_uz) #define OPTRY_UI_U(op, x, y) \ OPTRY_GEN(op, x, y, unsigned_to_uz, IDENT, print_uz) #define OPTRY_UU_I(op, x, y) \ OPTRY_GEN(op, x, y, unsigned_to_uz, unsigned_to_uz, print_int) #define OPTRY_SS_S(op, x, y) \ OPTRY_GEN(op, x, y, int_to_sz, int_to_sz, print_sz) #define OPTRY_SI_S(op, x, y) \ OPTRY_GEN(op, x, y, int_to_sz, IDENT, print_sz) #define OPTRY_SS_I(op, x, y) \ OPTRY_GEN(op, x, y, int_to_sz, int_to_sz, print_int) OPTRY_UU_U(u_plus, 3, 4); OPTRY_UU_U(u_plus, 1549587182, 1790478233); OPTRY_UU_U(u_minus, 1549587182, 1790478233); OPTRY_UU_U(u_minus, 1790478233, 1549587182); OPTRY_UU_U(u_star, 432429875, 347785487); OPTRY_UU_U(u_slash, 432429875, 34487); OPTRY_UU_U(u_pct, 432429875, 34487); OPTRY_UI_U(u_lsh, 1783, 19); OPTRY_UI_U(u_lsh, 1783, 20); OPTRY_UI_U(u_lsh, 1783, 21); OPTRY_UI_U(u_rsh, 475902857, 7); OPTRY_UI_U(u_rsh, 475902857, 17); OPTRY_UI_U(u_rsh, 475902857, 38); OPTRY_SS_S(s_plus, 3, 4); OPTRY_SS_S(s_plus, 1549587182, 1790478233); OPTRY_SS_S(s_plus, -1549587182, -1790478233); OPTRY_SS_S(s_minus, 1549587182, 1790478233); OPTRY_SS_S(s_minus, 1790478233, 1549587182); OPTRY_SS_S(s_minus, -1790478233, -1549587182); OPTRY_SS_S(s_minus, -1790478233, 1549587182); OPTRY_SS_S(s_star, 432429875, 347785487); OPTRY_SS_S(s_star, 432429875, -347785487); OPTRY_SS_S(s_slash, 432429875, 34487); OPTRY_SS_S(s_slash, -432429875, 34487); OPTRY_SS_S(s_slash, 432429875, -34487); OPTRY_SS_S(s_slash, -432429875, -34487); OPTRY_SS_S(s_slash, 432429875, 0); OPTRY_SS_S(s_slash, -2147483647 - 1, -1); OPTRY_SS_S(s_pct, 432429875, 34487); OPTRY_SS_S(s_pct, 432429875, 0); OPTRY_SI_S(s_lsh, -1, 10); OPTRY_SI_S(s_lsh, 1783, 19); OPTRY_SI_S(s_lsh, 1783, 20); OPTRY_SI_S(s_lsh, 1783, 21); OPTRY_SI_S(s_rsh, -1024, 8); OPTRY_SI_S(s_rsh, 475902857, 7); OPTRY_SI_S(s_rsh, 475902857, 17); return 0; } Convert-Binary-C-0.76/ucpp/assert.c0000644000175000001440000002665411550664631015643 0ustar mhxusers/* * (c) Thomas Pornin 1999 - 2002 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. The name of the authors may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include "tune.h" #include #include #include #include #include #include "ucppi.h" #include "mem.h" #include "nhash.h" /* * Assertion support. Each assertion is indexed by its predicate, and * the list of 'questions' which yield a true answer. */ #ifdef UCPP_REENTRANT #define assertions (REENTR->_assert.assertions) #define assertions_init_done (REENTR->_assert.assertions_init_done) #else static HTT assertions; static int assertions_init_done = 0; #endif /* UCPP_REENTRANT */ static struct assert *new_assertion(void) { struct assert *a = getmem(sizeof(struct assert)); a->nbval = 0; return a; } static void del_token_fifo(struct token_fifo *tf) { size_t i; for (i = 0; i < tf->nt; i ++) if (S_TOKEN(tf->t[i].type)) freemem(tf->t[i].name); if (tf->nt) freemem(tf->t); } static void del_assertion(void *va) { struct assert *a = va; size_t i; for (i = 0; i < a->nbval; i ++) del_token_fifo(a->val + i); if (a->nbval) freemem(a->val); freemem(a); } #ifdef UCPP_CLONE static void clone_token_fifo(struct token_fifo *dst, const struct token_fifo *src) { size_t i; dst->art = src->art; if (src->nt) { dst->nt = 0; for (i = 0; i < src->nt; i ++) { aol(dst->t, dst->nt, src->t[i], TOKEN_LIST_MEMG); if (S_TOKEN(src->t[i].type)) dst->t[i].name = sdup(src->t[i].name); } } else dst->nt = src->nt; } static void *clone_assertion(const void *va) { const struct assert *src = va; struct assert *dst = getmem(sizeof(struct assert)); size_t i; if (src->nbval > 0) { dst->nbval = 0; for (i = 0; i < src->nbval; i ++) { struct token_fifo tf; clone_token_fifo(&tf, &src->val[i]); aol(dst->val, dst->nbval, tf, TOKEN_LIST_MEMG); } } else dst->nbval = src->nbval; return dst; } #endif /* UCPP_CLONE */ /* * print the contents of a token list */ static void print_token_fifo(pCPP_ struct token_fifo *tf) { size_t i; for (i = 0; i < tf->nt; i ++) if (ttMWS(tf->t[i].type)) fputc(' ', emit_output); else fputs(token_name(tf->t + i), emit_output); } /* * print all assertions related to a given name */ #ifdef UCPP_REENTRANT static void print_assert(void *re, void *va) #else static void print_assert(void *va) #endif { struct assert *a = va; #ifdef UCPP_REENTRANT struct CPP *REENTR = re; #endif size_t i; for (i = 0; i < a->nbval; i ++) { fprintf(emit_output, "#assert %s(", HASH_ITEM_NAME(a)); print_token_fifo(aCPP_ a->val + i); fprintf(emit_output, ")\n"); } } /* * compare two token_fifo, return 0 if they are identical, 1 otherwise. * All whitespace tokens are considered identical, but sequences of * whitespace are not shrinked. */ int cmp_token_list(struct token_fifo *f1, struct token_fifo *f2) { size_t i; if (f1->nt != f2->nt) return 1; for (i = 0; i < f1->nt; i ++) { if (ttMWS(f1->t[i].type) && ttMWS(f2->t[i].type)) continue; if (f1->t[i].type != f2->t[i].type) return 1; if (f1->t[i].type == MACROARG && f1->t[i].line != f2->t[i].line) return 1; if (S_TOKEN(f1->t[i].type) && strcmp(f1->t[i].name, f2->t[i].name)) return 1; } return 0; } /* * for #assert * Assertions are not part of the ISO-C89 standard, but they are sometimes * encountered, for instance in Solaris standard include files. */ int handle_assert(pCPP_ struct lexer_state *ls) { int ina = 0, ltww; struct token t; struct token_fifo *atl = 0; struct assert *a; char *aname; int ret = -1; long l = ls->line; int nnp; size_t i; while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { if (!(a = HTT_get(&assertions, ls->ctok->name))) { a = new_assertion(); aname = sdup(ls->ctok->name); ina = 1; } goto handle_assert_next; } error(aCPP_ l, "illegal assertion name for #assert"); goto handle_assert_warp_ign; } goto handle_assert_trunc; handle_assert_next: while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type != LPAR) { error(aCPP_ l, "syntax error in #assert"); goto handle_assert_warp_ign; } goto handle_assert_next2; } goto handle_assert_trunc; handle_assert_next2: atl = getmem(sizeof(struct token_fifo)); atl->art = atl->nt = 0; for (nnp = 1, ltww = 1; nnp && !next_token(aCPP_ ls);) { if (ls->ctok->type == NEWLINE) break; if (ltww && ttMWS(ls->ctok->type)) continue; ltww = ttMWS(ls->ctok->type); if (ls->ctok->type == LPAR) nnp ++; else if (ls->ctok->type == RPAR) { if (!(-- nnp)) goto handle_assert_next3; } t.type = ls->ctok->type; if (S_TOKEN(t.type)) t.name = sdup(ls->ctok->name); aol(atl->t, atl->nt, t, TOKEN_LIST_MEMG); } goto handle_assert_trunc; handle_assert_next3: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (!ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in #assert"); } } if (atl->nt && ttMWS(atl->t[atl->nt - 1].type) && (-- atl->nt) == 0) freemem(atl->t); if (atl->nt == 0) { error(aCPP_ l, "void assertion in #assert"); goto handle_assert_error; } for (i = 0; i < a->nbval && cmp_token_list(atl, a->val + i); i ++); if (i != a->nbval) { /* we already have it */ ret = 0; goto handle_assert_error; } /* This is a new assertion. Let's keep it. */ aol(a->val, a->nbval, *atl, TOKEN_LIST_MEMG); if (ina) { HTT_put(&assertions, a, aname); freemem(aname); } if (emit_assertions) { fprintf(emit_output, "#assert %s(", HASH_ITEM_NAME(a)); print_token_fifo(aCPP_ atl); fputs(")\n", emit_output); } freemem(atl); return 0; handle_assert_trunc: error(aCPP_ l, "unfinished #assert"); handle_assert_error: if (atl) { del_token_fifo(atl); freemem(atl); } if (ina) { freemem(aname); freemem(a); } return ret; handle_assert_warp_ign: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE); if (ina) { freemem(aname); freemem(a); } return ret; } /* * for #unassert */ int handle_unassert(pCPP_ struct lexer_state *ls) { int ltww; struct token t; struct token_fifo atl; struct assert *a; int ret = -1; long l = ls->line; int nnp; size_t i; atl.art = atl.nt = 0; while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type == NAME) { if (!(a = HTT_get(&assertions, ls->ctok->name))) { ret = 0; goto handle_unassert_warp; } goto handle_unassert_next; } error(aCPP_ l, "illegal assertion name for #unassert"); goto handle_unassert_warp; } goto handle_unassert_trunc; handle_unassert_next: while (!next_token(aCPP_ ls)) { if (ls->ctok->type == NEWLINE) break; if (ttMWS(ls->ctok->type)) continue; if (ls->ctok->type != LPAR) { error(aCPP_ l, "syntax error in #unassert"); goto handle_unassert_warp; } goto handle_unassert_next2; } if (emit_assertions) fprintf(emit_output, "#unassert %s\n", HASH_ITEM_NAME(a)); HTT_del(&assertions, HASH_ITEM_NAME(a)); return 0; handle_unassert_next2: for (nnp = 1, ltww = 1; nnp && !next_token(aCPP_ ls);) { if (ls->ctok->type == NEWLINE) break; if (ltww && ttMWS(ls->ctok->type)) continue; ltww = ttMWS(ls->ctok->type); if (ls->ctok->type == LPAR) nnp ++; else if (ls->ctok->type == RPAR) { if (!(-- nnp)) goto handle_unassert_next3; } t.type = ls->ctok->type; if (S_TOKEN(t.type)) t.name = sdup(ls->ctok->name); aol(atl.t, atl.nt, t, TOKEN_LIST_MEMG); } goto handle_unassert_trunc; handle_unassert_next3: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE) { if (!ttWHI(ls->ctok->type) && (ls->flags & WARN_STANDARD)) { warning(aCPP_ l, "trailing garbage in #unassert"); } } if (atl.nt && ttMWS(atl.t[atl.nt - 1].type) && (-- atl.nt) == 0) freemem(atl.t); if (atl.nt == 0) { error(aCPP_ l, "void assertion in #unassert"); return ret; } for (i = 0; i < a->nbval && cmp_token_list(&atl, a->val + i); i ++); if (i != a->nbval) { /* we have it, undefine it */ del_token_fifo(a->val + i); if (i < (a->nbval - 1)) mmvwo(a->val + i, a->val + i + 1, (a->nbval - i - 1) * sizeof(struct token_fifo)); if ((-- a->nbval) == 0) freemem(a->val); if (emit_assertions) { fprintf(emit_output, "#unassert %s(", HASH_ITEM_NAME(a)); print_token_fifo(aCPP_ &atl); fputs(")\n", emit_output); } } ret = 0; goto handle_unassert_finish; handle_unassert_trunc: error(aCPP_ l, "unfinished #unassert"); handle_unassert_finish: if (atl.nt) del_token_fifo(&atl); return ret; handle_unassert_warp: while (!next_token(aCPP_ ls) && ls->ctok->type != NEWLINE); return ret; } /* * Add the given assertion (as string). */ int make_assertion(pCPP_ char *aval) { struct lexer_state lls; size_t n = strlen(aval) + 1; char *c = sdup(aval); int ret; *(c + n - 1) = '\n'; init_buf_lexer_state(&lls, 0); lls.flags = DEFAULT_LEXER_FLAGS; lls.input = 0; lls.input_string = (unsigned char *)c; lls.pbuf = 0; lls.ebuf = n; lls.line = -1; ret = handle_assert(aCPP_ &lls); freemem(c); free_lexer_state(&lls); return ret; } /* * Remove the given assertion (as string). */ int destroy_assertion(pCPP_ char *aval) { struct lexer_state lls; size_t n = strlen(aval) + 1; char *c = sdup(aval); int ret; *(c + n - 1) = '\n'; init_buf_lexer_state(&lls, 0); lls.flags = DEFAULT_LEXER_FLAGS; lls.input = 0; lls.input_string = (unsigned char *)c; lls.pbuf = 0; lls.ebuf = n; lls.line = -1; ret = handle_unassert(aCPP_ &lls); freemem(c); free_lexer_state(&lls); return ret; } /* * erase the assertion table */ void wipe_assertions(pCPP) { if (assertions_init_done) HTT_kill(&assertions); assertions_init_done = 0; } /* * initialize the assertion table */ void init_assertions(pCPP) { wipe_assertions(aCPP); HTT_init(&assertions, del_assertion _aCLONE(clone_assertion)); assertions_init_done = 1; } /* * retrieve an assertion from the hash table */ struct assert *get_assertion(pCPP_ char *name) { return HTT_get(&assertions, name); } /* * print already defined assertions */ void print_assertions(pCPP) { #ifdef UCPP_REENTRANT HTT_scan_arg(&assertions, print_assert, aCPP); #else HTT_scan(&assertions, print_assert); #endif } Convert-Binary-C-0.76/util/0000755000175000001440000000000011550665107014166 5ustar mhxusersConvert-Binary-C-0.76/util/t/0000755000175000001440000000000011550665107014431 5ustar mhxusersConvert-Binary-C-0.76/util/t/maketests.pl0000644000175000001440000001015211550664633016770 0ustar mhxusersuse IO::File; while () { /\S/ or next; my $file = sprintf "t/%03d.t", ++$i; my $f = new IO::File ">$file" or die "$file: $!\n"; print $f < 114, CFLAGS => [qw( -DMEMALLOC_TEST )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DAUTOPURGE_MEMALLOC )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DAUTOPURGE_MEMALLOC )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_TEST -DABORT_IF_NO_MEM -DNO_SLOW_MEMALLOC_CALLS -DAUTOPURGE_MEMALLOC -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_HASH_BITS=14 -DMEMALLOC_HASH_OFFSET=2 -DMEMALLOC_TEST )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_HASH_BITS=14 -DMEMALLOC_HASH_OFFSET=2 -DMEMALLOC_TEST -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_HASH_BITS=14 -DMEMALLOC_HASH_OFFSET=2 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=1 -DMEMALLOC_TEST )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=1 -DMEMALLOC_TEST -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=1 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 114, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=100 -DMEMALLOC_TEST )] ); test( PLAN => 170, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=100 -DMEMALLOC_TEST -DDEBUG_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_BUCKET_SIZE_INCR=100 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 522, CFLAGS => [qw( -DMEMALLOC_MAX_DIAG_DIST=1 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_MAX_DIAG_DIST=2 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_MAX_DIAG_DIST=3 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); test( PLAN => 810, CFLAGS => [qw( -DMEMALLOC_MAX_DIAG_DIST=10000 -DMEMALLOC_TEST -DDEBUG_MEMALLOC -DTRACE_MEMALLOC )] ); Convert-Binary-C-0.76/util/t/test_memalloc.pl0000644000175000001440000001044311550664633017623 0ustar mhxusersuse strict; use IO::File; use IPC::Open3; use Data::Dumper; use Test; my $CC = 'cc'; my @CFLAGS = qw( -Wall -g ); my $TEST = './ma_test'; END { $ENV{MEMALLOC_TEST_NO_CLEANUP} or cleanup(); } sub test { my %opt = ( PLAN => 0, CFLAGS => [], TESTS => [ { ENV => {}, }, { ENV => { MEMALLOC_TEST_DEBUG => 1, }, }, { ENV => { MEMALLOC_TEST_ASSERT => 1, }, }, { ENV => { MEMALLOC_TEST_ASSERT => 1, MEMALLOC_TEST_DEBUG => 1, }, }, { ENV => { MEMALLOC_CHECK_FREED => 1, }, }, { ENV => { MEMALLOC_CHECK_FREED => 1, MEMALLOC_TEST_DEBUG => 1, }, }, { ENV => { MEMALLOC_CHECK_FREED => 1, MEMALLOC_TEST_ASSERT => 1, }, }, { ENV => { MEMALLOC_CHECK_FREED => 1, MEMALLOC_TEST_ASSERT => 1, MEMALLOC_TEST_DEBUG => 1, }, }, ], @_ ); plan( tests => $opt{PLAN} ); my @tests = @{$opt{TESTS}}; push @tests, map { { %$_, FILE => 'test.out' } } @tests; cleanup(); ok(1); build( %opt, SOURCE => 'memalloc.c', OUTPUT => $TEST ) or die "couldn't build test\n"; ok(1); for my $t ( @tests ) { my %env = %{$t->{ENV}}; if (exists $t->{FILE}) { $env{MEMALLOC_TEST_DEBUG_FILE} = $t->{FILE}; } $env{MEMALLOC_SOFT_ASSERT} = 1; comment(Dumper(\%env)); my $rv = run( \%env, $TEST ); comment(Dumper($rv)); $rv->{didnotrun} and die "couldn't run test\n"; ok($rv->{status}, 0); ok(not exists $rv->{core}); ok(not exists $rv->{signal}); ok(scalar @{$rv->{stdout}}, 0, "output on stdout"); -f 'test.ref' or die "no reference file\n"; ok(1); my @ref = slurp('test.ref'); my @out; if (exists $t->{FILE}) { ok(scalar @{$rv->{stderr}}, 0, "output on stderr"); ok(-f $t->{FILE}); @out = slurp($t->{FILE}); } else { @out = @{$rv->{stderr}}; } ok(scalar @out, scalar @ref, "differing number of lines in output/reference"); comment( "[Output]\n", @out, "[/Output]\n" ); comment( "[Reference]\n", @ref, "[/Reference]\n" ); chomp @ref; chomp @out; for my $i ( 0 .. $#ref ) { print qq(# "$out[$i]" - "$ref[$i]"\n); ok($out[$i], $ref[$i]); } rm( qw( test.out test.ref ) ); } } sub slurp { my $file = new IO::File $_[0] or die "$_[0]: $!\n"; <$file>; } sub cleanup { rm( qw( test.out test.ref ), $TEST ) } sub rm { -f and unlink || warn "$_: $!" for @_ } sub build { my %opt = ( CC => $CC, CFLAGS => [], @_ ); my @cflags = (@CFLAGS, @{$opt{CFLAGS}}); my $target; if (exists $opt{OBJECT}) { push @cflags, '-c'; $target = $opt{OBJECT}; } elsif (exists $opt{OUTPUT}) { $target = $opt{OUTPUT}; } else { return 0; } unless (exists $opt{SOURCE}) { return 0; } my $source = ref $opt{SOURCE} ? $opt{SOURCE} : [$opt{SOURCE}]; for my $s (@$source) { unless (-f $s) { return 0; } } my $rv = run( $opt{CC}, @cflags, '-o', $target, @$source ); comment(Dumper($rv)); @{$rv->{stderr}} and print STDERR "compiler output on stderr\n"; @{$rv->{stdout}} and print STDERR "compiler output on stdout\n"; if ($rv->{didnotrun} || $rv->{status}) { return 0; } return $target; } sub comment { my @d = @_; s/^/# /gm for @d; print @d; } sub run { my $env = ref $_[0] ? shift : {}; my $prog = shift; my @args = @_; local(*W, *S, *E); for my $e ( keys %$env ) { $ENV{$e} = $env->{$e}; } my $pid = open3(\*W, \*S, \*E, $prog, @args); my @sout = ; my @serr = ; waitpid($pid, 0); for my $e ( keys %$env ) { delete $ENV{$e}; } my %rval = ( status => $? >> 8, stdout => \@sout, stderr => \@serr, ); $rval{didnotrun} = 0; if( @serr && $serr[0] =~ /^Can't exec "\Q$prog\E":/ ) { $rval{didnotrun} = 1; } if( $^O eq 'MSWin32' && $rval{status} == 1 ) { $rval{didnotrun} = 1; } $? & 128 and $rval{core} = 1; $? & 127 and $rval{signal} = $? & 127; \%rval; } Convert-Binary-C-0.76/util/GPL0000644000175000001440000004312711550664632014544 0ustar mhxusers GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) yyyy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) yyyy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. Convert-Binary-C-0.76/util/tool/0000755000175000001440000000000011550665107015143 5ustar mhxusersConvert-Binary-C-0.76/util/tool/test0000755000175000001440000000023511550664633016053 0ustar mhxusers#!/bin/sh DIFF=`perl check_alloc.pl 0, frees => 0, max_blocks => 0, max_total => 0, ); my $count = 0; my $total = 0; LOOP: while( <> ) { next unless /^(.*?):(A|F|V|B)=(?:(\d+)\@)?([0-9a-fA-F]{8,})$/; if( $2 eq 'A' ) { if( exists $alloc{$4} ) { print "Previously allocated in $alloc{$4}[0]: 0x$4 in $1\n"; next; } my $addr = hex $4; $alloc{$4} = [$1,$3,$addr,$addr+$3-1]; $count++; $total += $3; $info{allocs}++; $info{min_size} = $info{max_size} = $3 unless exists $info{min_size}; $info{min_size} = $3 if $3 < $info{min_size}; $info{max_size} = $3 if $3 > $info{max_size}; } elsif( $2 eq 'F' ) { unless( exists $alloc{$4} ) { if( $4 eq '00000000' ) { print "Freeing NULL pointer in $1\n" if $4 eq '00000000'; } elsif( exists $free{$4} ) { print "Freeing block more than once: 0x$4 in $1\n"; } else { print "Freeing block not previously allocated: 0x$4 in $1\n"; } next; } $count--; $total -= $alloc{$4}[1]; $info{frees}++; $free{$4} = delete $alloc{$4}; } elsif( $2 eq 'V' ) { unless( exists $alloc{$4} ) { if( $4 eq '00000000' ) { print "Trying to validate NULL pointer in $1\n" } else { print "Valid pointer assertion (0x$4) failed in $1\n"; if( exists $free{$4} ) { print " - pointer references a block that has been freed\n"; } else { print " - pointer references memory not previously allocated\n"; } } } next; # nothing needs to be updated } else { # $2 eq 'B' if( $4 eq '00000000' ) { print "Trying to validate block starting at NULL\n"; next; } my($min, $max); my(@overlaps, @old_blocks, @old_overlaps); $min = hex $4; $max = $min + $3 - 1; # print "[$4,$3] [min] => $min, [max] => $max\n"; # check allocated blocks for my $key ( keys %alloc ) { my $info = $alloc{$key}; # print "alloc: [2] => $info->[2], [3] => $info->[3]\n"; my $min_in = $info->[2] <= $min && $min <= $info->[3]; my $max_in = $info->[2] <= $max && $max <= $info->[3]; my $over = $min < $info->[2] && $max > $info->[3]; next unless $min_in || $max_in || $over; next LOOP if $min_in && $max_in; push @overlaps, $key; } # check freed blocks for my $key ( keys %free ) { my $info = $free{$key}; # print "free: [2] => $info->[2], [3] => $info->[3]\n"; my $min_in = $info->[2] <= $min && $min <= $info->[3]; my $max_in = $info->[2] <= $max && $max <= $info->[3]; my $over = $min < $info->[2] && $max > $info->[3]; next unless $min_in || $max_in || $over; if( $min_in && $max_in ) { push @old_blocks, $key; last; } push @old_overlaps, $key; } print "Block assertion (0x$4, size $3) failed in $1\n"; if( @overlaps || @old_blocks || @old_overlaps ) { print " - overlaps with allocated block at 0x$_, size $alloc{$_}[1]\n" for @overlaps; print " - references memory in old block at 0x$_, size $free{$_}[1]\n" for @old_blocks; print " - overlaps with old block at 0x$_, size $free{$_}[1]\n" for @old_overlaps; } else { print " - references memory not previously allocated\n"; } next; # nothing needs to be updated } $info{max_blocks} = $count if $count > $info{max_blocks}; $info{max_total} = $total if $total > $info{max_total}; } foreach( sort keys %alloc ) { print "Not freed: block at 0x$_, size $alloc{$_}[1], allocated in $alloc{$_}[0]\n"; } print < #include "memalloc.h" void main( void ) { void *p; SetDebugMemAlloc( printf, DB_MEMALLOC_TRACE | DB_MEMALLOC_ASSERT ); p = Alloc( 16 ); // allocate 16 bytes of memory AssertValidPtr( p ); // check the pointer Free( p ); // free the memory block AssertValidPtr( p ); // check the pointer (again) } Convert-Binary-C-0.76/util/doxyinc/memdb_large.out0000644000175000001440000000036211550664632020635 0ustar mhxusers Summary Statistics: Total allocs : 32404 Total frees : 32404 Max. memory blocks : 13305 Max. memory usage : 183675 bytes Smallest block : 2 bytes Largest block : 29 bytes Memory leakage : 0 bytes Convert-Binary-C-0.76/util/doxyinc/doxygen.css0000644000175000001440000000261511550664632020040 0ustar mhxusersH1 { font-size: 18pt; text-align: center; } H2 { font-size: 14pt; } A { font-size: 10pt; text-decoration: none; color: #0000e0; } A:visited { color: #0000e0; } A:hover { text-decoration: underline overline; background-color: #e0e0ff } A.qindex {} A.qindexRef {} A.el { text-decoration: none; font-weight: bold } A.elRef { font-weight: bold } A.code { text-decoration: none; font-weight: normal; color: #4444ee } A.codeRef { font-weight: normal; color: #4444ee } DL.el { margin-left: -1cm } DIV.fragment { width: 100%; border: solid; border-width: 1px; background-color: #eeeeee; margin-top: 6px; padding-top: 10pt; padding-left: 10pt; } DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } TD { font-size: 10pt; } TD.md { background-color: #f2f2ff; font-weight: bold; } TD.mdname1 { background-color: #f2f2ff; font-weight: bold; } TD.mdname { background-color: #f2f2ff; font-weight: bold; width: 600px; } DIV { font-size: 10pt; } DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } FONT.keyword { color: #008000 } FONT.keywordtype { color: #604020 } FONT.keywordflow { color: #e08000 } FONT.comment { color: #800000 } FONT.preprocessor { color: #806020 } FONT.stringliteral { color: #002080 } FONT.charliteral { color: #008080 } Convert-Binary-C-0.76/util/doxyinc/mem_debug.dat0000644000175000001440000000013611550664632020263 0ustar mhxusersAlloc.c(9):A=16@400031C0 Alloc.c(10):V=400031C0 Alloc.c(11):F=400031C0 Alloc.c(12):V=400031C0 Convert-Binary-C-0.76/util/doxyinc/mem_debug.out0000644000175000001440000000043611550664632020325 0ustar mhxusersValid pointer assertion (0x400031C0) failed in Alloc.c(12) Summary Statistics: Total allocs : 1 Total frees : 1 Max. memory blocks : 1 Max. memory usage : 16 bytes Smallest block : 16 bytes Largest block : 16 bytes Memory leakage : 0 bytes Convert-Binary-C-0.76/util/doxyinc/footer.inc0000644000175000001440000000002011550664632017626 0ustar mhxusers Convert-Binary-C-0.76/util/doxyinc/LinkedList.c0000644000175000001440000000147511550664632020062 0ustar mhxusersMyObject *pObj; // pointer to an object LinkedList list; // linked list handle list = LL_new(); // create new linked list LL_push(list, NewObject("Foo", 3)); // push a new object onto the list LL_push(list, NewObject("Bar", 2)); // push a new object onto the list LL_push(list, NewObject("Cat", 7)); // push a new object onto the list LL_sort(list, CompareObjects); // sort the list printf("The list has %d elements\n", // print the list's size LL_size(list)); LL_foreach(pObj, list) // loop over all elements PrintObject(pObj); pObj = LL_shift(list); // shift off the first element DeleteObject(pObj); // ...and delete it LL_destroy(list, DeleteObject); // destroy the whole list Convert-Binary-C-0.76/util/doxyinc/header.inc0000644000175000001440000000050311550664632017566 0ustar mhxusers Utility Library Convert-Binary-C-0.76/util/doxyfile0000644000175000001440000001445611550664632015750 0ustar mhxusers# Doxyfile 0.1 #--------------------------------------------------------------------------- # General configuration options #--------------------------------------------------------------------------- PROJECT_NAME = "Common Data Structures Library" PROJECT_NUMBER = OUTPUT_DIRECTORY = doc OUTPUT_LANGUAGE = English EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_CLASSES = YES BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ALWAYS_DETAILED_SEC = NO FULL_PATH_NAMES = NO STRIP_FROM_PATH = INTERNAL_DOCS = NO CLASS_DIAGRAMS = YES SOURCE_BROWSER = NO INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES CASE_SENSE_NAMES = YES SHORT_NAMES = NO HIDE_SCOPE_NAMES = NO VERBATIM_HEADERS = YES SHOW_INCLUDE_FILES = YES JAVADOC_AUTOBRIEF = YES INHERIT_DOCS = YES INLINE_INFO = YES SORT_MEMBER_DOCS = NO DISTRIBUTE_GROUP_DOC = NO TAB_SIZE = 8 GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES ALIASES = ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 OPTIMIZE_OUTPUT_FOR_C = YES SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- QUIET = NO WARNINGS = YES WARN_IF_UNDOCUMENTED = YES WARN_FORMAT = "$file:$line: $text" WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = hash.h \ hash.c \ list.h \ list.c \ memalloc.h \ memalloc.c FILE_PATTERNS = RECURSIVE = NO EXCLUDE = EXCLUDE_PATTERNS = EXAMPLE_PATH = doxyinc EXAMPLE_PATTERNS = IMAGE_PATH = INPUT_FILTER = FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- ALPHABETICAL_INDEX = NO COLS_IN_ALPHA_INDEX = 5 IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- GENERATE_HTML = YES HTML_OUTPUT = html HTML_HEADER = doxyinc/header.inc HTML_FOOTER = doxyinc/footer.inc HTML_STYLESHEET = doxyinc/doxygen.css HTML_ALIGN_MEMBERS = YES GENERATE_HTMLHELP = YES GENERATE_CHI = YES BINARY_TOC = NO TOC_EXPAND = NO DISABLE_INDEX = NO ENUM_VALUES_PER_LINE = 4 GENERATE_TREEVIEW = NO TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- GENERATE_LATEX = YES LATEX_OUTPUT = latex COMPACT_LATEX = NO PAPER_TYPE = a4 EXTRA_PACKAGES = LATEX_HEADER = PDF_HYPERLINKS = YES USE_PDFLATEX = YES LATEX_BATCHMODE = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- GENERATE_RTF = NO RTF_OUTPUT = rtf COMPACT_RTF = NO RTF_HYPERLINKS = NO RTF_STYLESHEET_FILE = RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- GENERATE_MAN = NO MAN_OUTPUT = man MAN_EXTENSION = .3 MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = NO EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = DOXYGEN EXPAND_AS_DEFINED = #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = ALLEXTERNALS = NO PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- HAVE_DOT = NO CLASS_GRAPH = YES COLLABORATION_GRAPH = YES TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES GRAPHICAL_HIERARCHY = YES DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO CGI_NAME = search.cgi CGI_URL = DOC_URL = DOC_ABSPATH = BIN_ABSPATH = /usr/local/bin/ EXT_DOC_PATHS = Convert-Binary-C-0.76/util/ARTISTIC0000644000175000001440000001373711550664632015350 0ustar mhxusers The "Artistic License" Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder as specified below. "Copyright Holder" is whoever is named in the copyright or copyrights for the package. "You" is you, if you're thinking about copying or distributing this Package. "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as uunet.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) give non-standard executables non-standard names, and clearly document the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. You may embed this Package's interpreter within an executable of yours (by linking); this shall be construed as a mere form of aggregation, provided that the complete Standard Version of the interpreter is so embedded. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whoever generated them, and may be sold commercially, and may be aggregated with this Package. If such scripts or library files are aggregated with this Package via the so-called "undump" or "unexec" methods of producing a binary executable image, then distribution of such an image shall neither be construed as a distribution of this Package nor shall it fall under the restrictions of Paragraphs 3 and 4, provided that you do not represent such an executable image as a Standard Version of this Package. 7. C subroutines (or comparably compiled subroutines in other languages) supplied by you and linked into this Package in order to emulate subroutines and variables of the language defined by this Package shall not be considered part of this Package, but are the equivalent of input as in Paragraph 6, provided these subroutines do not change the language in any way that would cause it to fail the regression tests for the language. 8. Aggregation of this Package with a commercial distribution is always permitted provided that the use of this Package is embedded; that is, when no overt attempt is made to make this Package's interfaces visible to the end user of the commercial distribution. Such use shall not be construed as a distribution of this Package. 9. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End Convert-Binary-C-0.76/util/config.h0000644000175000001440000000075611550664632015616 0ustar mhxusers#ifndef _UTIL_CONFIG_H #define _UTIL_CONFIG_H #include extern void *CBC_malloc(size_t size); extern void *CBC_calloc(size_t count, size_t size); extern void *CBC_realloc(void *ptr, size_t size); extern void CBC_free(void *ptr); #define UTIL_MALLOC(size) CBC_malloc(size) #define UTIL_CALLOC(count, size) CBC_calloc(count, size) #define UTIL_REALLOC(ptr, size) CBC_realloc(ptr, size) #define UTIL_FREE(ptr) CBC_free(ptr) #define ABORT_IF_NO_MEM #endif Convert-Binary-C-0.76/util/hash.c0000644000175000001440000010635211550664632015266 0ustar mhxusers/******************************************************************************* * * MODULE: hash * ******************************************************************************** * * DESCRIPTION: Generic hash table routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:30 +0200 $ * $Revision: 35 $ * $Source: /util/hash.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of either the Artistic License or the * GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * *******************************************************************************/ #include #include #include #include #include #include "ccattr.h" #include "memalloc.h" #include "hash.h" /*----------*/ /* Typedefs */ /*----------*/ struct _hashTable { int count; int size; #ifdef DEBUG_UTIL_HASH unsigned state; #endif unsigned long flags; unsigned long bmask; HashNode *root; }; #ifdef DEBUG_UTIL_HASH # ifdef UTIL_FORMAT_CHECK # define DEBUG( flag, out ) debug_check out static void debug_check(const char *str, ...) __attribute__(( __format__( __printf__, 1, 2 ), __noreturn__ )); # else # define DEBUG( flag, out ) \ do { \ if( gs_dbfunc && ((DB_HASH_ ## flag) & gs_dbflags) ) \ gs_dbfunc out ; \ } while(0) # endif static void (*gs_dbfunc)(const char *, ...) = NULL; static unsigned long gs_dbflags = 0; #define CHANGE_STATE(table) (table)->state++ #else /* !DEBUG_UTIL_HASH */ #define DEBUG( flag, out ) (void) 0 #define CHANGE_STATE(table) (void) 0 #endif /* DEBUG_UTIL_HASH */ /* size of fixed part of hash node */ #define HN_SIZE_FIX offsetof( struct _hashNode, key ) /* compare hash values / compute a minimum of two values */ #define CMPHASH( a, b ) ((a) == (b) ? 0 : ((a) < (b) ? -1 : 1)) #define MINIMUM( a, b ) ((a) <= (b) ? a : b) #define ENTRY_FOUND( h, k, l, n ) \ ( (cmp = CMPHASH(h, (n)->hash)) == 0 \ && (cmp = l - (n)->keylen) == 0 \ && (cmp = memcmp( (const void *) k, (n)->key, \ MINIMUM(l, (n)->keylen) )) == 0 ) #define ENTRY_FOUND_HKL( n ) \ ENTRY_FOUND( hash, key, keylen, n ) #define ENTRY_FOUND_NODE( n ) \ ENTRY_FOUND( (node)->hash, (node)->key, (node)->keylen, n ) #if defined DEBUG_UTIL_HASH && defined NO_TERMINATED_KEYS #undef NO_TERMINATED_KEYS #endif /* normally, one extra byte is allocated per hash key to terminate the key with a zero byte */ #ifdef NO_TERMINATED_KEYS #define TERMINATOR_LENGTH 0 #else #define TERMINATOR_LENGTH 1 #endif #define AUTOSIZE_DYADES 3 #define AUTOGROW_DYADES AUTOSIZE_DYADES #define AUTOSHRINK_DYADES AUTOSIZE_DYADES /* macro for automatically growing the hash table */ #define CHECK_AUTOGROW( table ) \ do { \ if( table->flags & HT_AUTOGROW ) \ if( table->size < MAX_HASH_TABLE_SIZE && \ table->count >> (table->size+AUTOGROW_DYADES) > 0 ) \ ht_grow( table, table->size+1 ); \ } while(0) #define CHECK_AUTOSHRINK( table ) \ do { \ if( table->flags & HT_AUTOSHRINK ) \ if( table->size > 1 && \ table->count >> (table->size-AUTOSHRINK_DYADES) == 0 ) \ ht_shrink( table, table->size-1 ); \ } while(0) /* static functions */ #if defined(DEBUG_UTIL_HASH) && defined(UTIL_FORMAT_CHECK) static void debug_check(const char *str __attribute__(( __unused__ )), ...) { fprintf( stderr, "compiled with UTIL_FORMAT_CHECK, please don't run\n" ); abort(); } #endif static inline void ht_grow( HashTable table, int size ) { HashNode *pNode, *pOld, *pNew; int old_size, buckets; unsigned long mask; old_size = table->size; buckets = 1<root, buckets * sizeof( HashNode ) ); table->size = size; table->bmask = (unsigned long) (buckets-1); /* initialize new buckets */ pNode = &table->root[1<root[0]; buckets = 1<hash & mask ) { DEBUG( MAIN, ("pOld=%p *pOld=%p (key=[%s] len=%d hash=0x%08lX)\n", pOld, *pOld, (*pOld)->key, (*pOld)->keylen, (*pOld)->hash) ); pNew = &table->root[(*pOld)->hash & table->bmask]; while( *pNew ) pNew = &(*pNew)->next; *pNew = *pOld; *pOld = (*pNew)->next; (*pNew)->next = NULL; } else pOld = &(*pOld)->next; } } DEBUG( MAIN, ("hash table @ %p grown to %d buckets\n", table, 1<size; buckets = 1<size = size; table->bmask = (unsigned long) (buckets-1); /* distribute hash elements */ pNode = &table->root[buckets]; buckets = (1<key, old->keylen, old->hash) ); node = old; old = old->next; pNew = &table->root[node->hash & table->bmask]; while( *pNew ) { DEBUG( MAIN, ("pNew=%p *pNew=%p (key=[%s] len=%d hash=0x%08lX)\n", pNew, *pNew, (*pNew)->key, (*pNew)->keylen, (*pNew)->hash) ); (void) ENTRY_FOUND_NODE( *pNew ); DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("postition to insert new element found\n") ); break; } DEBUG( MAIN, ("advancing to next hash element\n") ); pNew = &(*pNew)->next; } node->next = *pNew; *pNew = node; } } /* shrink hash table */ buckets = 1<root, buckets * sizeof( HashNode ) ); DEBUG( MAIN, ("hash table @ %p shrunk to %d buckets\n", table, buckets) ); } /************************************************************ * * G L O B A L F U N C T I O N S * ************************************************************/ /** * Extended Constructor * * Using the HT_new_ex() function you create an empty hash * table and set its flags. * * \param size Hash table base size. * * \param flags Hash table flags. Currently you can * use these flags only to specify the * hash tables autosize behaviour. Use * HT_AUTOGROW if you want the hash table * to grow automatically, HT_AUTOSHRINK * if you want the hash table to shrink * automatically. If you want both, just * do a binary OR combination of the * flags or use HT_AUTOSIZE. * * \return A handle to the newly created hash table. * * \see HT_new() */ HashTable HT_new_ex( int size, unsigned long flags ) { HashTable table; HashNode *pNode; int buckets; DEBUG( MAIN, ("HT_new( %d )\n", size) ); assert( size > 0 ); assert( size <= MAX_HASH_TABLE_SIZE ); if( size <= 0 || size > MAX_HASH_TABLE_SIZE ) return NULL; buckets = 1<root, buckets * sizeof( HashNode ) ); table->count = 0; table->size = size; table->bmask = (unsigned long) (buckets-1); table->flags = flags; #ifdef DEBUG_UTIL_HASH table->state = 0; #endif DEBUG( MAIN, ("created new hash table @ %p with %d buckets\n", table, buckets) ); pNode = &table->root[0]; while( buckets-- ) *pNode++ = NULL; return table; } /** * Destructor * * HT_delete() will free the resources occupied by a * hash table. The function will fail silently if the * associated hash table is not empty. * You can also delete a hash table that is not empty by * using the HT_destroy() function. * * \param table Handle to an existing hash table. * * \see HT_new() and HT_destroy() */ void HT_delete( HashTable table ) { DEBUG( MAIN, ("HT_delete( %p )\n", table) ); if( table == NULL ) return; AssertValidPtr( table ); AssertValidPtr( table->root ); CHANGE_STATE(table); assert( table->count == 0 ); Free( table->root ); Free( table ); DEBUG( MAIN, ("deleted hash table @ %p\n", table) ); } /** * Remove all entries from a hash table * * HT_flush() will remove all entries from a hash table, * optionally calling a destructor function for each object * stored in it. It will not free the resources occupied * by the hash table itself, so the hash table handle will * still be valid. * * \param table Handle to an existing hash table. * * \param destroy Pointer to the destructor function * of the objects contained in the hash * table. * You can pass NULL if you don't want * HT_destroy() to call object destructors. * * \see HT_destroy() */ void HT_flush( HashTable table, HTDestroyFunc destroy ) { int buckets; HashNode *pNode, node, old; DEBUG( MAIN, ("HT_flush( %p, %p )\n", table, destroy) ); if( table == NULL || table->count == 0 ) return; AssertValidPtr( table ); AssertValidPtr( table->root ); CHANGE_STATE(table); buckets = 1 << table->size; pNode = &table->root[0]; while( buckets-- ) { node = *pNode; *pNode++ = NULL; while( node ) { if( destroy ) destroy( node->pObj ); old = node; node = node->next; Free( old ); } } table->count = 0; DEBUG( MAIN, ("flushed hash table @ %p\n", table) ); } /** * Extended Destructor * * HT_destroy() will, like HT_delete(), free the resources * occupied by a hash table. In addition, it will call a * destructor function for each element, allowing to free * the resources of the objects stored in the hash table. * * \param table Handle to an existing hash table. * * \param destroy Pointer to the destructor function * of the objects contained in the hash * table. * You can pass NULL if you don't want * HT_destroy() to call object destructors. * * \see HT_new() and HT_delete() */ void HT_destroy( HashTable table, HTDestroyFunc destroy ) { DEBUG( MAIN, ("HT_destroy( %p )\n", table) ); if( table == NULL ) return; AssertValidPtr( table ); AssertValidPtr( table->root ); CHANGE_STATE(table); HT_flush( table, destroy ); Free( table->root ); Free( table ); DEBUG( MAIN, ("destroyed hash table @ %p\n", table) ); } /** * Cloning a hash table * * Using the HT_clone() function to create an exact copy * of a hash table. If the objects stored in the table * need to be cloned as well, you can pass a pointer to * a function that clones each element. * * \param table Handle to an existing hash table. * * \param func Pointer to the cloning function of * the objects contained in the table. * If you pass NULL, the original * object is stored in the cloned table * instead of a cloned object. * * \return A handle to the cloned hash table. * * \see HT_new() */ HashTable HT_clone( ConstHashTable table, HTCloneFunc func ) { HashTable clone; HashNode *pSrcNode, *pDstNode, node, *pNode, cnode; int buckets; if( table == NULL ) return NULL; clone = HT_new_ex( table->size, table->flags ); if( table->count > 0 ) { buckets = 1<size; pSrcNode = &table->root[0]; pDstNode = &clone->root[0]; while( buckets-- > 0 ) { node = *pSrcNode++; pNode = pDstNode++; while( node ) { AllocF( HashNode, cnode, HN_SIZE_FIX + node->keylen + TERMINATOR_LENGTH ); cnode->next = *pNode; cnode->pObj = func ? func( node->pObj ) : node->pObj; cnode->hash = node->hash; cnode->keylen = node->keylen; memcpy( cnode->key, (void *) node->key, node->keylen ); #ifndef NO_TERMINATED_KEYS cnode->key[cnode->keylen] = '\0'; #endif *pNode = cnode; pNode = &(*pNode)->next; node = node->next; } } clone->count = table->count; } return clone; } /** * Resize a hash table * * HT_resize() will allow to resize (shrink or grow) an * existing hash table. * * \param table Handle to an existing hash table. * * \param size New size for the hash table. * This argument is the same as the * argument passed to HT_new(). * * \return Nonzero on success, zero if an invalid handle * was passed or if the table wasn't resized. * * \see HT_new() and HT_size() */ int HT_resize( HashTable table, int size ) { DEBUG( MAIN, ("HT_resize( %p, %d )\n", table, size) ); assert( size > 0 ); assert( size <= MAX_HASH_TABLE_SIZE ); if( table == NULL || size <= 0 || size > MAX_HASH_TABLE_SIZE ) return 0; AssertValidPtr( table ); if( size == table->size ) return 0; CHANGE_STATE(table); if( size > table->size ) ht_grow( table, size ); else ht_shrink( table, size ); return 1; } #ifdef DEBUG_UTIL_HASH /** * Dump the contents of a hash table * * HT_dump() will verbosely list all information related * to a hash table. It will list the contents of all hash * buckets and print all keys, hash sums and value pointers. * * \param table Handle to an existing hash table. * * \note HT_dump() is only available if the code was compiled * with the \c DEBUG_UTIL_HASH preprocessor flag. */ void HT_dump( ConstHashTable table ) { int i, j, buckets; HashNode *pNode, node; DEBUG( MAIN, ("HT_dump( %p )\n", table) ); assert( table != NULL ); AssertValidPtr( table ); if( gs_dbfunc == NULL ) return; gs_dbfunc( "----------------------------------------------------\n" ); gs_dbfunc( "HashTable @ %p: %d elements in %d buckets (state=%u)\n", table, table->count, 1<size, table->state ); buckets = 1<size; pNode = &table->root[0]; for( i=0; inext ) gs_dbfunc( "\n Element %d @ %p:\n" " Hash : 0x%08lX\n" " Key : [%s] (len=%d)\n" " Value: %p\n", j, node, node->hash, node->key, node->keylen, node->pObj ); } gs_dbfunc( "----------------------------------------------------\n" ); } #endif /** * Size of a hash table * * HT_size() will return the size of the hash table. * * \param table Handle to an existing hash table. * * \return The size of the table or -1 if an invalid handle * was passed. The value is the same as the argument * given to the HT_new() constructor. * * \see HT_new() */ int HT_size( ConstHashTable table ) { if( table == NULL ) return -1; AssertValidPtr( table ); return table->size; } /** * Current element count of a hash table * * HT_count() will return the number of objects currently * stored in a hash table. * * \param table Handle to an existing hash table. * * \return The number of elements stored in the hash table * or -1 if an invalid handle was passed. */ int HT_count( ConstHashTable table ) { if( table == NULL ) return -1; AssertValidPtr( table ); return table->count; } /** * Pre-create a hash node * * A hash node is the data structure that is stored in a * hash table. You can pre-create a hash node using the * HN_new() function. A pre-created hash node holds * the hash key, but no value. The advantage of such a * pre-created hash node is that no additional resources * need to be allocated if you store the hash node in the * hash table. * * \param key Pointer to the hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \return A handle to the new hash node. * * \see HN_delete(), HT_storenode() and HT_fetchnode() */ HashNode HN_new( const char *key, int keylen, HashSum hash ) { HashNode node; DEBUG( MAIN, ("HN_new( %p, %d, 0x%08lX )\n", key, keylen, hash) ); assert( key != NULL ); if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } AllocF( HashNode, node, HN_SIZE_FIX + keylen + TERMINATOR_LENGTH ); node->pObj = NULL; node->next = NULL; node->hash = hash; node->keylen = keylen; memcpy( node->key, (const void *) key, keylen ); #ifndef NO_TERMINATED_KEYS node->key[keylen] = '\0'; #endif DEBUG( MAIN, ("created new hash node @ %p with key \"%s\"\n", node, key) ); return node; } /** * Delete a hash node * * Free the resources occupied by a hash node that * was previously allocated using the HN_new() function. * You cannot free the resources of a hash node that * is still embedded in a hash table. * * \param node Handle to an existing hash node. * * \see HN_new() */ void HN_delete( HashNode node ) { DEBUG( MAIN, ("HN_delete( %p )\n", node) ); if( node == NULL ) return; AssertValidPtr( node ); assert( node->pObj == NULL ); Free( node ); DEBUG( MAIN, ("deleted hash node @ %p\n", node) ); } /** * Store a hash node in a hash table * * Use this function to store a previously created hash * node in an existing hash table. * * \param table Handle to an existing hash table. * * \param node Handle to an existing hash node. * * \param pObj Pointer to an object that will be * stored as a hash value. * * \return Nonzero if the node could be stored, zero * if it couldn't be stored. * * \see HN_new and HT_fetchnode() */ int HT_storenode( HashTable table, HashNode node, void *pObj ) { HashNode *pNode; int cmp; DEBUG( MAIN, ("HT_storenode( %p, %p, %p )\n", table, node, pObj) ); assert( table != NULL ); assert( node != NULL ); AssertValidPtr( table ); AssertValidPtr( node ); CHANGE_STATE(table); CHECK_AUTOGROW( table ); pNode = &table->root[node->hash & table->bmask]; DEBUG( MAIN, ("key=[%s] len=%d hash=0x%08lX bucket=%lu/%d\n", node->key, node->keylen, node->hash, (node->hash & table->bmask) + 1U, 1<size) ); while( *pNode ) { DEBUG( MAIN, ("pNode=%p *pNode=%p (key=[%s] len=%d hash=0x%08lX)\n", pNode, *pNode, (*pNode)->key, (*pNode)->keylen, (*pNode)->hash) ); if( ENTRY_FOUND_NODE( *pNode ) ) { DEBUG( MAIN, ("key [%s] already in hash, can't store\n", node->key) ); return 0; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("postition to insert new element found\n") ); break; } DEBUG( MAIN, ("advancing to next hash element\n") ); pNode = &(*pNode)->next; } node->pObj = pObj; node->next = *pNode; *pNode = node; DEBUG( MAIN, ("successfully stored node [%s] as element #%d into hash table\n", node->key, table->count+1) ); return ++table->count; } /** * Fetch a hash node from a hash table * * Use this function to fetch a hash node from an * existing hash table. The hash node will be removed * from the hash table. However, the resources for the * hash node will not be freed. The hash node can be * stored in another hash table. * * \param table Handle to an existing hash table. * * \param node Handle to an existing hash node. * * \return Pointer to the object that was stored as hash * value with the hash node. * * \see HN_delete() and HT_storenode() */ void *HT_fetchnode( HashTable table, HashNode node ) { HashNode *pNode; void *pObj; DEBUG( MAIN, ("HT_fetchnode( %p, %p )\n", table, node) ); assert( table != NULL ); assert( node != NULL ); AssertValidPtr( table ); AssertValidPtr( node ); CHANGE_STATE(table); pNode = &table->root[node->hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", node->key, node->hash, (node->hash & table->bmask) + 1U, 1<size) ); while( *pNode && *pNode != node ) pNode = &(*pNode)->next; if( *pNode == NULL ) { DEBUG( MAIN, ("hash element not found\n") ); return NULL; } pObj = node->pObj; *pNode = node->next; node->pObj = NULL; node->next = NULL; table->count--; DEBUG( MAIN, ("successfully fetched node @ %p (%d nodes still in hash table)\n", node, table->count) ); CHECK_AUTOSHRINK( table ); return pObj; } /** * Remove a hash node from a hash table * * Use this function to remove a hash node from an * existing hash table. The hash node will be removed * from the hash table and the resources for the * hash node will be freed. This is like calling * HT_fetchnode() and deleting the node with HN_delete(). * * \param table Handle to an existing hash table. * * \param node Handle to an existing hash node. * * \return Pointer to the object that was stored as hash * value with the hash node. * * \see HN_delete() and HT_fetchnode() */ void *HT_rmnode( HashTable table, HashNode node ) { HashNode *pNode; void *pObj; DEBUG( MAIN, ("HT_rmnode( %p, %p )\n", table, node) ); assert( table != NULL ); assert( node != NULL ); AssertValidPtr( table ); AssertValidPtr( node ); CHANGE_STATE(table); pNode = &table->root[node->hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", node->key, node->hash, (node->hash & table->bmask) + 1U, 1<size) ); while( *pNode && *pNode != node ) pNode = &(*pNode)->next; if( *pNode == NULL ) { DEBUG( MAIN, ("hash element not found\n") ); return NULL; } pObj = node->pObj; *pNode = node->next; Free( node ); table->count--; DEBUG( MAIN, ("successfully removed node @ %p (%d nodes still in hash table)\n", node, table->count) ); CHECK_AUTOSHRINK( table ); return pObj; } /** * Store a new key/value pair in a hash table * * Use this function to store a new key/value pair * in an existing hash table. * * \param table Handle to an existing hash table. * * \param key Pointer to the hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \param pObj Pointer to an object that will be * stored as a hash value. * * \return Nonzero if the node could be stored, zero * if it couldn't be stored. * * \see HT_fetch() and HT_get() */ int HT_store( HashTable table, const char *key, int keylen, HashSum hash, void *pObj ) { HashNode *pNode, node; int cmp; DEBUG( MAIN, ("HT_store( %p, %p, %d, 0x%08lX, %p )\n", table, key, keylen, hash, pObj) ); assert( table != NULL ); assert( key != NULL ); AssertValidPtr( table ); CHANGE_STATE(table); if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } CHECK_AUTOGROW( table ); pNode = &table->root[hash & table->bmask]; DEBUG( MAIN, ("key=[%s] len=%d hash=0x%08lX bucket=%lu/%d\n", key, keylen, hash, (hash & table->bmask) + 1U, 1<size) ); while( *pNode ) { DEBUG( MAIN, ("pNode=%p *pNode=%p (key=[%s] len=%d hash=0x%08lX)\n", pNode, *pNode, (*pNode)->key, (*pNode)->keylen, (*pNode)->hash) ); if( ENTRY_FOUND_HKL( *pNode ) ) { DEBUG( MAIN, ("key [%s] already in hash, can't store\n", key) ); return 0; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("postition to insert new element found\n") ); break; } DEBUG( MAIN, ("advancing to next hash element\n") ); pNode = &(*pNode)->next; } AllocF( HashNode, node, HN_SIZE_FIX + keylen + TERMINATOR_LENGTH ); node->next = *pNode; node->pObj = pObj; node->hash = hash; node->keylen = keylen; memcpy( node->key, (const void *) key, keylen ); #ifndef NO_TERMINATED_KEYS node->key[keylen] = '\0'; #endif *pNode = node; DEBUG( MAIN, ("successfully stored [%s] as element #%d into hash table\n", key, table->count+1) ); return ++table->count; } /** * Fetch a value from a hash table * * Use this function to fetch a hash value from an * existing hash table. The key/value pair will be * removed from the hash table. The resources occupied * by the hash node used to store the key/value pair * will be freed. * * \param table Handle to an existing hash table. * * \param key Pointer to a hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \return Pointer to the object that was stored as hash * value. NULL if the key doesn't exist. * * \see HT_get() and HT_store() */ void *HT_fetch( HashTable table, const char *key, int keylen, HashSum hash ) { HashNode *pNode, node; int cmp; void *pObj; DEBUG( MAIN, ("HT_fetch( %p, %p, %d, 0x%08lX )\n", table, key, keylen, hash) ); assert( table != NULL ); assert( key != NULL ); AssertValidPtr( table ); CHANGE_STATE(table); if( table->count == 0 ) return NULL; if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } pNode = &table->root[hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", key, hash, (hash & table->bmask) + 1U, 1<size) ); while( *pNode ) { DEBUG( MAIN, ("node=%p (key=[%s] len=%d hash=0x%08lX)\n", *pNode, (*pNode)->key, (*pNode)->keylen, (*pNode)->hash) ); if( ENTRY_FOUND_HKL( *pNode ) ) { DEBUG( MAIN, ("hash element found\n") ); break; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("cannot find hash element\n") ); return NULL; } DEBUG( MAIN, ("advancing to next hash element\n") ); pNode = &(*pNode)->next; } if( *pNode == NULL ) { DEBUG( MAIN, ("hash element not found\n") ); return NULL; } pObj = (*pNode)->pObj; node = *pNode; *pNode = node->next; Free( node ); table->count--; DEBUG( MAIN, ("successfully fetched [%s] (%d elements still in hash table)\n", key, table->count) ); CHECK_AUTOSHRINK( table ); return pObj; } /** * Get a value from a hash table * * Use this function to get a hash value from an * existing hash table. The key/value pair will not be * removed from the hash table. * * \param table Handle to an existing hash table. * * \param key Pointer to a hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \return Pointer to the object that is stored as hash * value. NULL if the key doesn't exist. * * \see HT_fetch() and HT_store() */ void *HT_get( ConstHashTable table, const char *key, int keylen, HashSum hash ) { HashNode node; int cmp; DEBUG( MAIN, ("HT_get( %p, %p, %d, 0x%08lX )\n", table, key, keylen, hash) ); assert( table != NULL ); assert( key != NULL ); AssertValidPtr( table ); if( table->count == 0 ) return NULL; if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } node = table->root[hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", key, hash, (hash & table->bmask) + 1U, 1<size) ); while( node ) { DEBUG( MAIN, ("node=%p (key=[%s] len=%d hash=0x%08lX)\n", node, node->key, node->keylen, node->hash) ); if( ENTRY_FOUND_HKL( node ) ) { DEBUG( MAIN, ("hash element found\n") ); break; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("cannot find hash element\n") ); return NULL; } DEBUG( MAIN, ("advancing to next hash element\n") ); node = node->next; } #ifdef DEBUG_UTIL_HASH if( node == NULL ) DEBUG( MAIN, ("hash element not found\n") ); else DEBUG( MAIN, ("successfully found [%s] in hash table\n", node->key) ); #endif return node ? node->pObj : NULL; } /** * Check if a key exists in a hash table * * Use this function to check if a key is present in an * existing hash table. * * \param table Handle to an existing hash table. * * \param key Pointer to a hash key. * * \param keylen Length of the hash key in bytes. * May be zero if \p key is a zero * terminated string. * * \param hash Pre-computed hash sum. If this is * zero, the hash sum is computed. * * \return Nonzero if the key exists, zero if it doesn't. * * \see HT_get() and HT_fetch() */ int HT_exists( ConstHashTable table, const char *key, int keylen, HashSum hash ) { HashNode node; int cmp; DEBUG( MAIN, ("HT_exists( %p, %p, %d, 0x%08lX )\n", table, key, keylen, hash) ); assert( table != NULL ); assert( key != NULL ); AssertValidPtr( table ); if( table->count == 0 ) return 0; if( hash == 0 ) { if( keylen ) HASH_DATA( hash, keylen, key ); else HASH_STR_LEN( hash, key, keylen ); } node = table->root[hash & table->bmask]; DEBUG( MAIN, ("key [%s] hash 0x%08lX bucket %lu/%d\n", key, hash, (hash & table->bmask) + 1U, 1<size) ); while( node ) { DEBUG( MAIN, ("node=%p (key=[%s] len=%d hash=0x%08lX)\n", node, node->key, node->keylen, node->hash) ); if( ENTRY_FOUND_HKL( node ) ) { DEBUG( MAIN, ("hash element found\n") ); return 1; } DEBUG( MAIN, ("cmp: %d\n", cmp) ); if( cmp < 0 ) { DEBUG( MAIN, ("cannot find hash element\n") ); return 0; } DEBUG( MAIN, ("advancing to next hash element\n") ); node = node->next; } return 0; } /** * Initialize hash iterator object * * HI_init() will initialize a hash iterator object. * You must call this function prior to using HI_next(). * * \param it Pointer to a hash iterator object. * * \param table Handle to an existing hash table. * * \see HI_next() */ void HI_init(HashIterator *it, ConstHashTable table) { DEBUG( MAIN, ("HI_init( %p, %p )\n", it, table) ); #ifdef DEBUG_UTIL_HASH it->table = table; it->orig_state = table->state; #endif if (table) { AssertValidPtr(table); it->remain = 1 << table->size; it->pBucket = &table->root[1]; it->pNode = table->root[0]; DEBUG( MAIN, ("hash table iterator has been reset\n") ); } } /** * Get next hash element * * Get the next key/value pair while iterating through a * hash table. You must have called HI_init() before and * you mustn't modify the hash table between consecutive * calls to HI_next(). * * \param it Pointer to a hash iterator object. * * \param ppKey Pointer to a variable that will * receive a pointer to the hash key. * May be \c NULL if you don't need * it. You mustn't modify the memory * pointed to by that pointer. * * \param pKeylen Pointer to a variable that will * receive the length of the hash key. * May be \c NULL if you don't need * it. * * \param ppObj Pointer to a variable that will * receive a pointer to the object * that is stored as hash value. * May be \c NULL if you don't need * it. * * \return Nonzero if another key/value pair could be * retrieved, zero if all elements have been * processed. * * \see HI_init() */ int HI_next(HashIterator *it, const char **ppKey, int *pKeylen, void **ppObj) { ConstHashNode node; DEBUG( MAIN, ("HI_next( %p )\n", it) ); if (it == NULL) return 0; #ifdef DEBUG_UTIL_HASH AssertValidPtr(it->table); assert(it->orig_state == it->table->state); #endif DEBUG( MAIN, ("it->remain=%d it->pBucket=%p it->pNode=%p\n", it->remain, it->pBucket, it->pNode) ); while (it->remain > 0) { while ((node = it->pNode) != NULL) { it->pNode = it->pNode->next; if (ppKey ) *ppKey = node->key; if (pKeylen) *pKeylen = node->keylen; if (ppObj ) *ppObj = node->pObj; return 1; } DEBUG( MAIN, ("going to next bucket\n") ); if (--it->remain > 0) it->pNode = *it->pBucket++; else { it->pBucket = NULL; it->pNode = NULL; } DEBUG( MAIN, ("it->remain=%d it->pBucket=%p it->pNode=%p\n", it->remain, it->pBucket, it->pNode) ); } DEBUG( MAIN, ("iteration through all elements completed\n") ); return 0; } #ifdef DEBUG_UTIL_HASH int SetDebugHash( void (*dbfunc)(const char *, ...), unsigned long dbflags ) { gs_dbfunc = dbfunc; gs_dbflags = dbflags; return 1; } #endif /* DEBUG_UTIL_HASH */ Convert-Binary-C-0.76/util/hash.h0000644000175000001440000002467611550664632015303 0ustar mhxusers/******************************************************************************* * * HEADER: hash * ******************************************************************************** * * DESCRIPTION: Generic hash table routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:30 +0200 $ * $Revision: 22 $ * $Source: /util/hash.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of either the Artistic License or the * GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * *******************************************************************************/ /** * \file hash.h * \brief Generic implementation of Hash Tables */ #ifndef _UTIL_HASH_H #define _UTIL_HASH_H /** * Maximum allowed hash size * * This controls the maximum number of hash buckets, * currently 2^16 = 65536. */ #define MAX_HASH_TABLE_SIZE 16 /** * Compute hash sum and string length * * The HASH_STR_LEN() macro computes the hash sum and * string length of a zero terminated string. * * \param hash Variable that will receive the * hash sum. * * \param str Pointer to the zero terminated * string. * * \param len Variable that will receive the * string length. * * \see HASH_STRING() and HASH_DATA() * \hideinitializer */ #define HASH_STR_LEN( hash, str, len ) \ do { \ register int _len = 0; \ register const char *_str = str; \ register HashSum _hash = 0; \ \ while( *_str ) { \ _len++; \ _hash += *_str++; \ _hash += (_hash << 10); \ _hash ^= (_hash >> 6); \ } \ \ _hash += (_hash << 3); \ _hash ^= (_hash >> 11); \ (hash) = (_hash + (_hash << 15)); \ (len) = _len; \ } while(0) /** * Compute hash sum * * The HASH_STRING() macro computes the hash sum * of a zero terminated string. * * \param hash Variable that will receive the * hash sum. * * \param str Pointer to the zero terminated * string. * * \see HASH_STR_LEN() and HASH_DATA() * \hideinitializer */ #define HASH_STRING( hash, str ) \ do { \ register const char *_str = str; \ register HashSum _hash = 0; \ \ while( *_str ) { \ _hash += *_str++; \ _hash += (_hash << 10); \ _hash ^= (_hash >> 6); \ } \ \ _hash += (_hash << 3); \ _hash ^= (_hash >> 11); \ (hash) = (_hash + (_hash << 15)); \ } while(0) /** * Compute hash sum of arbitrary data * * The HASH_DATA() macro computes the hash sum * of a an arbitrary data memory block. * * \param hash Variable that will receive the * hash sum. * * \param len Length of the data block. * * \param data Pointer to the data block. * * \see HASH_STR_LEN() and HASH_STRING() * \hideinitializer */ #define HASH_DATA( hash, len, data ) \ do { \ register const char *_data = data; \ register int _len = len; \ register HashSum _hash = 0; \ \ while( _len-- ) { \ _hash += *_data++; \ _hash += (_hash << 10); \ _hash ^= (_hash >> 6); \ } \ \ _hash += (_hash << 3); \ _hash ^= (_hash >> 11); \ (hash) = (_hash + (_hash << 15)); \ } while(0) /** * Hash Table Handle */ typedef struct _hashTable * HashTable; typedef const struct _hashTable * ConstHashTable; /** * Hash Sum */ typedef unsigned long HashSum; /** * Hash Node */ typedef struct _hashNode *HashNode; typedef const struct _hashNode *ConstHashNode; struct _hashNode { HashNode next; void *pObj; HashSum hash; int keylen; char key[1]; }; /** * Hash Table Iterator */ typedef struct _hashIterator { ConstHashNode pNode; HashNode *pBucket; int remain; #ifdef DEBUG_UTIL_HASH ConstHashTable table; unsigned orig_state; #endif } HashIterator; /** * Destructor Function Pointer */ typedef void (* HTDestroyFunc)(void *); /** * Cloning Function Pointer */ typedef void * (* HTCloneFunc)(const void *); HashTable HT_new_ex( int size, unsigned long flags ); void HT_delete( HashTable table ); void HT_flush( HashTable table, HTDestroyFunc destroy ); void HT_destroy( HashTable table, HTDestroyFunc destroy ); HashTable HT_clone( ConstHashTable table, HTCloneFunc func ); int HT_resize( HashTable table, int size ); int HT_size( ConstHashTable table ); int HT_count( ConstHashTable table ); HashNode HN_new( const char *key, int keylen, HashSum hash ); void HN_delete( HashNode node ); int HT_storenode( HashTable table, HashNode node, void *pObj ); void * HT_fetchnode( HashTable table, HashNode node ); void * HT_rmnode( HashTable table, HashNode node ); int HT_store( HashTable table, const char *key, int keylen, HashSum hash, void *pObj ); void * HT_fetch( HashTable table, const char *key, int keylen, HashSum hash ); void * HT_get( ConstHashTable table, const char *key, int keylen, HashSum hash ); int HT_exists( ConstHashTable table, const char *key, int keylen, HashSum hash ); void HI_init(HashIterator *it, ConstHashTable table); int HI_next(HashIterator *it, const char **ppKey, int *pKeylen, void **ppObj); /* hash table flags */ #define HT_AUTOGROW 0x00000001 #define HT_AUTOSHRINK 0x00000002 #define HT_AUTOSIZE (HT_AUTOGROW|HT_AUTOSHRINK) /* debug flags */ #define DB_HASH_MAIN 0x00000001 #ifdef DEBUG_UTIL_HASH void HT_dump( ConstHashTable table ); int SetDebugHash( void (*dbfunc)(const char *, ...), unsigned long dbflags ); #else #define SetDebugHash( func, flags ) 0 #endif /** * Constructor * * Using the HT_new() function you create an empty hash table. * * \param size Hash table base size. You can specify * any value between 1 and 16. Depending * on how many elements you plan to store * in the hash table, values from 6 to 12 * can be considered useful. The number * of buckets created is 2^size, so if * you specify a size of 10, 1024 buckets * will be created and the empty hash * table will consume about 4kB of memory. * However, 1024 buckets will be enough * to very efficiently manage 100000 hash * elements. * * \return A handle to the newly created hash table. * * \see HT_new_ex(), HT_delete() and HT_destroy() */ #define HT_new( size ) HT_new_ex( size, 0 ) /** * Loop over all hash elements. * * The HT_foreach() macro is actually only a shortcut for the * following loop: * * \code * for( HT_reset(table); HT_next(table, (char **)&(pKey), NULL, (void **)&(pObj)); ) { * // do something with pKey and pObj * } * \endcode * * It is safe to use HT_foreach() even if \a hash table handle is NULL. * In that case, the loop won't be executed. * * \param pKey Variable that will receive a pointer * to the current hash key string. * * \param pObj Variable that will receive a pointer * to the current object. * * \param iter Pointer to hash iterator object. * * \param table Handle to an existing hash table. * * \see HT_reset() and HT_next() * \hideinitializer */ #define HT_foreach(pKey, pObj, iter, table) \ for (HI_init(&iter, table); HI_next(&iter, &(pKey), NULL, (void **)&(pObj)); ) /** * Loop over all hash keys. * * Like HT_foreach(), just that the value parameter isn't used. * * It is safe to use HT_foreach_keys() even if \a hash table handle is NULL. * In that case, the loop won't be executed. * * \param pKey Variable that will receive a pointer * to the current hash key string. * * \param iter Pointer to hash iterator object. * * \param table Handle to an existing hash table. * * \see HT_foreach() and HT_foreach_values() * \hideinitializer */ #define HT_foreach_keys(pKey, iter, table) \ for (HI_init(&iter, table); HI_next(&iter, &(pKey), NULL, NULL); ) /** * Loop over all hash values. * * Like HT_foreach(), just that the key parameter isn't used. * * It is safe to use HT_foreach_values() even if \a hash table handle is NULL. * In that case, the loop won't be executed. * * \param pObj Variable that will receive a pointer * to the current object. * * \param iter Pointer to hash iterator object. * * \param table Handle to an existing hash table. * * \see HT_foreach() and HT_foreach_keys() * \hideinitializer */ #define HT_foreach_values(pObj, iter, table) \ for (HI_init(&iter, table); HI_next(&iter, NULL, NULL, (void **)&(pObj)); ) #endif Convert-Binary-C-0.76/util/list.c0000644000175000001440000005077411550664632015324 0ustar mhxusers/******************************************************************************* * * MODULE: list * ******************************************************************************** * * DESCRIPTION: Generic routines for a doubly linked ring list * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:30 +0200 $ * $Revision: 23 $ * $Source: /util/list.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of either the Artistic License or the * GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * *******************************************************************************/ #include #include #include #include "ccattr.h" #include "memalloc.h" #include "list.h" /*----------*/ /* Typedefs */ /*----------*/ typedef struct _link Link; struct _link { void *pObj; Link *prev; Link *next; }; struct _linkedList { Link link; int size; #ifdef DEBUG_UTIL_LIST unsigned state; #endif }; #ifdef DEBUG_UTIL_LIST # define CHANGE_STATE(list) (list)->state++ #else # define CHANGE_STATE(list) (void) 0 #endif /*------------------*/ /* Static Functions */ /*------------------*/ static inline Link *GetLink( LinkedList list, int item ); static inline void *Extract( LinkedList list, Link *pLink ); static inline Link *Insert( LinkedList list, Link *pLink, void *pObj ); static void QuickSort( Link *l, Link *r, int size, LLCompareFunc cmp ); /************************************************************ * * S T A T I C F U N C T I O N S * ************************************************************/ /* * GetLink * * Get a link by item number. * * 0 <= item < list->size * returns a pointer to the (item)th link * * -(list->size) <= item < 0 * returns a pointer to the (list->size+item)th link * * otherwise * return NULL */ static inline Link *GetLink( LinkedList list, int item ) { Link *pLink = &list->link; if( item < 0 ) { if( -item > list->size ) /* -1 is last item */ return NULL; while( item++ < 0 ) pLink = pLink->prev; } else { /* item > 0 */ if( item >= list->size ) /* 0 is first item */ return NULL; while( item-- >= 0 ) pLink = pLink->next; } return pLink; } /* * Extract * * Extracts a link from its list, frees its * resources and returns a pointer to the * associated object. */ static inline void *Extract( LinkedList list, Link *pLink ) { void *pObj = pLink->pObj; pLink->prev->next = pLink->next; pLink->next->prev = pLink->prev; list->size--; Free( pLink ); return pObj; } /* * Insert * * Inserts a new link associated with pObj _before_ * the link pointed to by pLink and returns a pointer * to the inserted link. */ static inline Link *Insert( LinkedList list, Link *pLink, void *pObj ) { Link *pLinkNew; AllocF( Link *, pLinkNew, sizeof( Link ) ); pLinkNew->pObj = pObj; pLinkNew->prev = pLink->prev; pLinkNew->next = pLink; pLink->prev->next = pLinkNew; pLink->prev = pLinkNew; list->size++; return pLinkNew; } /* * QuickSort * * Adapted quick sort algorithm. */ static void QuickSort( Link *l, Link *r, int size, LLCompareFunc cmp ) { Link *i, *j; void *p, *t; int lp, rp; /* determine pivot */ lp = size / 2; for( i=l; --lp > 0; i=i->next ); p = i->pObj; /* initialize vars */ i = l; j = r; lp = 0; rp = size-1; /* sort */ for(;;) { while( cmp( i->pObj, p ) < 0 ) i = i->next, lp++; if( lp > rp ) break; while( cmp( j->pObj, p ) > 0 ) j = j->prev, rp--; if( lp > rp ) break; /* swap elements */ t = i->pObj; i->pObj = j->pObj; j->pObj = t; i = i->next; lp++; j = j->prev; rp--; } if( rp+1 > 1 ) QuickSort( l, j, rp+1, cmp ); if( size-lp > 1 ) QuickSort( i, r, size-lp, cmp ); } /************************************************************ * * G L O B A L F U N C T I O N S * ************************************************************/ /** * Constructor * * Using the LL_new() function you create an empty linked * list. If the term linked list scares you, just think of * it as a flexible array, because the Linked List Library * won't let you deal with links at all. * * \return A handle to the newly created linked list. * * \see LL_delete() and LL_destroy() */ LinkedList LL_new( void ) { LinkedList list; AllocF( LinkedList, list, sizeof( struct _linkedList ) ); list->link.prev = list->link.next = &list->link; list->link.pObj = NULL; list->size = 0; #ifdef DEBUG_UTIL_LIST list->state = 0; #endif return list; } /** * Destructor * * LL_delete() will free the resources occupied by a * linked list. The function will fail silently if the * associated list is not empty. * You can also delete a list that is not empty by * using the LL_destroy() function. * * \param list Handle to an existing linked list. * * \see LL_new() and LL_destroy() */ void LL_delete( LinkedList list ) { if( list == NULL || list->size ) return; CHANGE_STATE(list); Free( list ); } /** * Remove all elements from a list * * LL_flush() will remove all elements from a linked list, * optionally calling a destructor function. It will not * free the resources occupied by the list itself. * * \param list Handle to an existing linked list. * * \param destroy Pointer to the destructor function * of the objects contained in the list. * You can pass NULL if you don't want * LL_flush() to call object destructors. * * \see LL_destroy() */ void LL_flush( LinkedList list, LLDestroyFunc destroy ) { void *pObj; if( list == NULL ) return; CHANGE_STATE(list); while( (pObj = LL_shift( list )) != NULL ) if( destroy ) destroy( pObj ); } /** * Extended Destructor * * LL_destroy() will, like LL_delete(), free the resources * occupied by a linked list. However, it will empty the * the list prior to deleting it, like LL_flush(). * * \param list Handle to an existing linked list. * * \param destroy Pointer to the destructor function * of the objects contained in the list. * You can pass NULL if you don't want * LL_destroy() to call object destructors. * * \see LL_new(), LL_delete() and LL_flush() */ void LL_destroy( LinkedList list, LLDestroyFunc destroy ) { if( list == NULL ) return; CHANGE_STATE(list); LL_flush( list, destroy ); LL_delete( list ); } /** * Cloning a linked list * * Using the LL_clone() function to create an exact copy * of a linked list. If the objects stored in the list * need to be cloned as well, you can pass a pointer to * a function that clones each element. * * \param list Handle to an existing linked list. * * \param func Pointer to the cloning function of * the objects contained in the list. * If you pass NULL, the original * object is stored in the cloned list * instead of a cloned object. * * \return A handle to the cloned linked list. * * \see LL_new() */ LinkedList LL_clone( ConstLinkedList list, LLCloneFunc func ) { ListIterator li; LinkedList clone; void *pObj; if( list == NULL ) return NULL; clone = LL_new(); LL_foreach(pObj, li, list) LL_push(clone, func ? func(pObj) : pObj); return clone; } /** * Current size of a list * * LL_count() will return the the number of objects that * a linked list contains. * * \param list Handle to an existing linked list. * * \return The size of the list or -1 if an invalid handle * was passed. */ int LL_count( ConstLinkedList list ) { if( list == NULL ) return -1; AssertValidPtr( list ); return list->size; } /** * Add element to the end of a list. * * LL_push() will add a new element to the end of a list. * If you think of the list as a stack, the function pushes * a new element on top of the stack. * * \param list Handle to an existing linked list. * * \param pObj Pointer to an object associated with * the new list element. The function * will not add a new element if this * is NULL. * * \see LL_pop() */ void LL_push( LinkedList list, void *pObj ) { if( list == NULL || pObj == NULL ) return; AssertValidPtr( list ); CHANGE_STATE(list); (void) Insert( list, &list->link, pObj ); } /** * Remove element from the end of a list. * * LL_pop() will remove the last element from a list. * If you think of the list as a stack, the function pops * an element of the stack. * * \param list Handle to an existing linked list. * * \return Pointer to the object that was associated with * the element removed from the list. If the list * is empty, NULL will be returned. * * \see LL_push() */ void *LL_pop( LinkedList list ) { if( list == NULL || list->size == 0 ) return NULL; AssertValidPtr( list ); CHANGE_STATE(list); return Extract( list, list->link.prev ); } /** * Add element to the start of a list. * * LL_unshift() will add a new element to the beginning of a * list, right before the first element. For an empty list * this is equivalent to calling LL_push(). * * \param list Handle to an existing linked list. * * \param pObj Pointer to an object associated with * the new list element. The function * will not add a new element if this * is NULL. * * \see LL_shift() */ void LL_unshift( LinkedList list, void *pObj ) { if( list == NULL || pObj == NULL ) return; AssertValidPtr( list ); CHANGE_STATE(list); (void) Insert( list, list->link.next, pObj ); } /** * Remove element from the start of a list. * * LL_shift() will remove the first element from a list. * If the list contains only a single element, this is * equivalent to calling LL_pop(). * * \param list Handle to an existing linked list. * * \return Pointer to the object that was associated with * the element removed from the list. If the list * is empty, NULL will be returned. * * \see LL_unshift() */ void *LL_shift( LinkedList list ) { if( list == NULL || list->size == 0 ) return NULL; AssertValidPtr( list ); CHANGE_STATE(list); return Extract( list, list->link.next ); } /** * Insert a new element into a list. * * Using LL_insert(), you can insert a new element at an * arbitrary position in the list. * If \a item is out of the valid range, the element will * not be added. * * \param list Handle to an existing linked list. * * \param item Position where the new element should * be inserted.\n * A value of 0 will insert * the new element at the start of the * list, like LL_unshift() would do. A * value of LL_count() would insert the * element at the end of the list, like * LL_push() would do. A negative value * will count backwards from the end of * the list. So a value of -1 would also * add the new element to the end of the * list. * * \param pObj Pointer to an object associated with * the new list element. The function * will not add a new element if this * is NULL. * * \see LL_extract() */ void LL_insert( LinkedList list, int item, void *pObj ) { Link *pLink; if( list == NULL || pObj == NULL ) return; AssertValidPtr( list ); CHANGE_STATE(list); /* * We have to do some faking here because adding to the end * of the list is a more natural result for item == -1 than * adding to the position _before_ the last element would be */ if( item < 0 ) pLink = item == -1 ? &list->link : GetLink( list, item+1 ); else pLink = item == list->size ? &list->link : GetLink( list, item ); if( pLink == NULL ) return; (void) Insert( list, pLink, pObj ); } /** * Extract an element from a list. * * LL_extract() will remove an arbitrary element from the * list and return a pointer to the associated object. * * \param list Handle to an existing linked list. * * \param item Position of the element that should * be extracted.\n * A value of 0 will extract the first * element, like LL_shift(). A negative * value will count backwards from the * end of the list. So a value of -1 * will extract the last element, which * will be equivalent to LL_pop(). * * \return Pointer to the object that was associated with * the element removed from the list. If the list * is empty or \a item is out of range, NULL will * be returned. * * \see LL_insert() */ void *LL_extract( LinkedList list, int item ) { Link *pLink; if( list == NULL || list->size == 0 ) return NULL; AssertValidPtr( list ); CHANGE_STATE(list); pLink = GetLink( list, item ); if( pLink == NULL ) return NULL; return Extract( list, pLink ); } /** * Get the element of a list. * * LL_get() will simply return a pointer to the object * associated with a certain list element. * * \param list Handle to an existing linked list. * * \param item Position of the element. Negative * positions count backwards from the * end of the list, so -1 would refer * to the last element. * * \return Pointer to the object that is associated with * the element. If the list is empty or \a item * is out of range, NULL will be returned. */ void *LL_get( ConstLinkedList list, int item ) { Link *pLink; if( list == NULL || list->size == 0 ) return NULL; AssertValidPtr( list ); pLink = GetLink( (LinkedList) list, item ); return pLink ? pLink->pObj : NULL; } /** * Perform different list transformations. * * LL_splice() can be used for a variety of list transformations * and is similar to Perl's splice builtin. In brief, * LL_splice() will extract \a length elements starting at * \a offset from \a list, replace them by the elements in * \a rlist and return a new list holding the extracted elements. * * \param list Handle to an existing linked list. * * \param offset Offset of the first element to extract. * If negative, counts backwards from the * end. * * \param length Length of the list to extract. If negative, * all remaining elements will be extracted. * If \a length is larger than the number of * remaining elements, only the remaining * elements will be extracted. If this is 0, * no elements will be extracted. However, * an empty list will still be returned. * * \param rlist List that will replace the extracted * elements. If no elements were extracted, * the elements of \a rlist will just be * inserted at \a offset. If \a rlist is * NULL, no replacement elements will be * inserted. The list will be automatically * destroyed after the elements have been * inserted into \a list. * * \return Handle to a new list holding the extracted elements, * if any. NULL if LL_splice() fails for some reason. */ LinkedList LL_splice( LinkedList list, int offset, int length, LinkedList rlist ) { LinkedList nlist; Link *pLink, *pLast; if( list == NULL ) return NULL; AssertValidPtr( list ); CHANGE_STATE(list); pLink = offset == list->size ? &list->link : GetLink( list, offset ); if( pLink == NULL ) return NULL; nlist = LL_new(); if( nlist == NULL ) return NULL; if( length < 0 ) length = offset < 0 ? -offset : list->size - offset; if( length > 0 ) { pLast = pLink; while( ++nlist->size < length && pLast->next->pObj ) pLast = pLast->next; pLink->prev->next = pLast->next; pLast->next->prev = pLink->prev; nlist->link.next = pLink; nlist->link.prev = pLast; pLink->prev = &nlist->link; pLink = pLast->next; pLast->next = &nlist->link; list->size -= nlist->size; } if( rlist ) { pLast = pLink; pLink = pLink->prev; rlist->link.next->prev = pLink; rlist->link.prev->next = pLast; pLink->next = rlist->link.next; pLast->prev = rlist->link.prev; list->size += rlist->size; Free( rlist ); } return nlist; } /** * Initialize list iterator. * * LI_init() will initialize a list iterator object. * Keep in mind that modifying the list invalidates all * list iterators. * * \param it Pointer to a list iterator object. * * \param list Handle to an existing linked list. * * \see LI_next(), LI_prev() and LI_curr() */ void LI_init(ListIterator *it, ConstLinkedList list) { it->list = list; if (list) { AssertValidPtr(list); it->cur = &list->link; #ifdef DEBUG_UTIL_LIST it->orig_state = list->state; #endif } } /** * Move iterator to next list element. * * LI_next() will advance to the next element in the list. * * \param it Pointer to a list iterator object. * * \return Nonzero as long as the next element is valid, * zero at the end of the list. * * \see LI_init(), LI_prev() and LI_curr() */ int LI_next(ListIterator *it) { if (it == NULL || it->list == NULL) return 0; AssertValidPtr(it->list); #ifdef DEBUG_UTIL_LIST assert(it->orig_state == it->list->state); #endif it->cur = it->cur->next; return it->cur != &it->list->link; } /** * Move iterator to previous list element. * * LI_prev() will advance to the previous element in the list. * * \param it Pointer to a list iterator object. * * \return Nonzero as long as the previous element is valid, * zero at the beginning of the list. * * \see LI_init(), LI_next() and LI_curr() */ int LI_prev(ListIterator *it) { if (it == NULL || it->list == NULL) return 0; AssertValidPtr(it->list); it->cur = it->cur->prev; return it->cur != &it->list->link; } /** * Return the object associated with the current list element. * * LI_curr() will return a pointer to the current object. * * \param it Pointer to a list iterator object. * * \return Pointer to the current object in the list. * * \see LI_init(), LI_next() and LI_prev() */ void *LI_curr(const ListIterator *it) { if (it == NULL || it->list == NULL) return NULL; AssertValidPtr(it->list); return it->cur->pObj; } /** * Sort list elements. * * LL_sort() will sort a list using a quicksort algorithm. * The sorted list will be in ascending order. * * \param list Handle to an existing linked list. * * \param cmp Pointer to a comparison function. * This function is called with a pair * of pointers to objects in the list * and must return * - a negative value if the first * argument is less than the second * - a positive value if the first * argument is greater than the second * - zero if the first both arguments * are considered to be equal */ void LL_sort( LinkedList list, LLCompareFunc cmp ) { if( list == NULL || list->size <= 1 ) return; AssertValidPtr( list ); QuickSort( list->link.next, list->link.prev, list->size, cmp ); } Convert-Binary-C-0.76/util/list.h0000644000175000001440000001027011550664633015315 0ustar mhxusers/******************************************************************************* * * HEADER: list * ******************************************************************************** * * DESCRIPTION: Generic routines for a doubly linked ring list * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:30 +0200 $ * $Revision: 19 $ * $Source: /util/list.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of either the Artistic License or the * GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * *******************************************************************************/ /** * \file list.h * \brief Generic implementation of Linked Lists * * The interface is laid out to make the linked lists look * as they were arrays that can be manipulated in multiple * ways. Internally, each array is represented by a doubly * linked ring list, which is quite efficient for most cases. * The following piece of code provides some examples of how * the linked list functions can be used. * * \include LinkedList.c * * If you're familiar with Perl, you may notice a certain * similarity between these routines and the functions * Perl uses for manipulating arrays. This is absolutely * intended. */ #ifndef _UTIL_LIST_H #define _UTIL_LIST_H /** * Linked List Handle */ typedef struct _linkedList * LinkedList; typedef const struct _linkedList * ConstLinkedList; /** * Linked List Iterator */ typedef struct _listIterator { ConstLinkedList list; const struct _link *cur; #ifdef DEBUG_UTIL_LIST unsigned orig_state; #endif } ListIterator; /** * Destructor Function Pointer */ typedef void (* LLDestroyFunc)(void *); /** * Cloning Function Pointer */ typedef void * (* LLCloneFunc)(const void *); /** * Comparison Function Pointer */ typedef int (* LLCompareFunc)(const void *, const void *); LinkedList LL_new( void ); void LL_delete( LinkedList list ); void LL_flush( LinkedList list, LLDestroyFunc destroy ); void LL_destroy( LinkedList list, LLDestroyFunc destroy ); LinkedList LL_clone( ConstLinkedList list, LLCloneFunc func ); int LL_count( ConstLinkedList list ); void LL_push( LinkedList list, void *pObj ); void * LL_pop( LinkedList list ); void LL_unshift( LinkedList list, void *pObj ); void * LL_shift( LinkedList list ); void LL_insert( LinkedList list, int item, void *pObj ); void * LL_extract( LinkedList list, int item ); void * LL_get( ConstLinkedList list, int item ); LinkedList LL_splice( LinkedList list, int offset, int length, LinkedList rlist ); void LL_sort( LinkedList list, LLCompareFunc cmp ); void LI_init(ListIterator *it, ConstLinkedList list); int LI_next(ListIterator *it); int LI_prev(ListIterator *it); void * LI_curr(const ListIterator *it); /** * Loop over all list elements. * * The LL_foreach() macro is actually only a shortcut for the * following loop: * * \code * for (LI_reset(&iter, list); LI_next(&iter) && ((pObj) = LL_curr(&iter)) != NULL;) { * // do something with pObj * } * \endcode * * It is safe to use LL_foreach() even if \a list is NULL. * In that case, the loop won't be executed. * * \param pObj Variable that will receive a pointer * to the current object. * * \param iter Iterator state object. * * \param list Handle to an existing linked list. * * \see LL_reset() and LL_next() * \hideinitializer */ #define LL_foreach(pObj, iter, list) \ for (LI_init(&iter, list); ((pObj) = LI_next(&iter) ? LI_curr(&iter) : NULL) != NULL;) #endif Convert-Binary-C-0.76/util/ccattr.h0000644000175000001440000000374611550664632015633 0ustar mhxusers/******************************************************************************* * * HEADER: ccattr * ******************************************************************************** * * DESCRIPTION: Define special features of C compilers. * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:30 +0200 $ * $Revision: 22 $ * $Source: /util/ccattr.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of either the Artistic License or the * GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * *******************************************************************************/ #ifndef _UTIL_CCATTR_H #define _UTIL_CCATTR_H /*--------*/ /* inline */ /*--------*/ #if defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 compiler, inline is a valid keyword */ #elif defined(__GNUC__) /* GNU compiler, inline is __inline__ */ # ifdef inline # undef inline # endif # if __GNUC__ >= 3 # define inline __inline__ __attribute__((always_inline)) # else # define inline __inline__ # endif #else /* Other compiler, forget about inline */ # ifdef inline # undef inline # endif # define inline #endif /*---------------*/ /* __attribute__ */ /*---------------*/ #if defined(__GNUC__) && ( __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) ) /* we can use attributes */ #else # ifdef __attribute__ # undef __attribute__ # endif # define __attribute__( x ) #endif #endif Convert-Binary-C-0.76/util/memalloc.c0000644000175000001440000010500111550664633016123 0ustar mhxusers/******************************************************************************* * * MODULE: memalloc * ******************************************************************************** * * DESCRIPTION: Memory allocation and tracing routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:31 +0200 $ * $Revision: 40 $ * $Source: /util/memalloc.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of either the Artistic License or the * GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * *******************************************************************************/ #include "ccattr.h" #if defined(DEBUG_MEMALLOC) #include "memalloc.h" #ifdef DEBUG_MEMALLOC # ifdef AUTOPURGE_MEMALLOC # include # endif # ifdef UTIL_FORMAT_CHECK # define DEBUG( flag, out ) debug_check out static void debug_check( const char *str, ... ) __attribute__(( __format__( __printf__, 1, 2 ), __noreturn__ )); # else # define DEBUG( flag, out ) \ do { \ if( gs_dbfunc && ((DB_MEMALLOC_ ## flag) & gs_dbflags) ) \ gs_dbfunc out ; \ } while(0) # endif static void (*gs_dbfunc)(const char *, ...) = NULL; static unsigned long gs_dbflags = 0; #else /* !DEBUG_MEMALLOC */ # define DEBUG( flag, out ) #endif #ifndef MEMALLOC_MAX_DIAG_DIST # define MEMALLOC_MAX_DIAG_DIST 256 #endif #ifndef MEMALLOC_BUCKET_SIZE_INCR # define MEMALLOC_BUCKET_SIZE_INCR 4 #endif #ifndef MEMALLOC_HASH_OFFSET # define MEMALLOC_HASH_OFFSET 4 #endif #ifndef MEMALLOC_HASH_BITS # define MEMALLOC_HASH_BITS 8 #endif #ifndef HEX_BYTES_PER_LINE # define HEX_BYTES_PER_LINE 16 #endif #if defined(DEBUG_MEMALLOC) && defined(TRACE_MEMALLOC) #ifndef MEM_TRACE_REALLOC # define MEM_TRACE_REALLOC realloc #endif #ifndef MEM_TRACE_FREE # define MEM_TRACE_FREE free #endif #include #include #include #include #include #ifndef ULONG_MAX # define ULONG_MAX ((1<<(8*sizeof(unsigned long)))-1) #endif #define HASH_BUCKET( ptr ) ((((unsigned long)(ptr)) >> MEMALLOC_HASH_OFFSET) \ & ((1 << MEMALLOC_HASH_BITS) - 1)) #define TRACE_MSG( msg ) (void) (gs_dbfunc ? gs_dbfunc : trace_msg) msg #define free_slot( p ) \ do { \ gs_memstat.free++; \ gs_memstat.total_blocks--; \ gs_memstat.total_bytes -= p->size; \ if( MEMALLOC_FLAG(env.check_freed) ) \ (p)->freed = 1; \ else { \ (p)->ptr = NULL; \ (p)->size = 0; \ } \ } while(0) typedef struct { const void *ptr; const char *file; int line; unsigned freed:1; size_t size; unsigned long serial; } MemTrace; typedef struct { int size; MemTrace *block; } MemTraceBucket; static struct { unsigned long alloc; unsigned long free; unsigned long total_blocks; unsigned long total_bytes; unsigned long max_total_blocks; unsigned long max_total_bytes; size_t min_alloc; size_t max_alloc; double avg_alloc; } gs_memstat; static struct { int initialized; struct { int soft_assert; int check_freed; int show_dumps; } env; } gs_flags; static int gs_stat_level = -1; static unsigned long gs_serial = 0; static MemTraceBucket gs_trace[1<= 1 ) { if( gs_serial == ULONG_MAX ) TRACE_MSG(("*** serial number overflow, results may be inaccurate ***\n")); TRACE_MSG(("--------------------------------\n")); if( level >= 2 ) TRACE_MSG((" serials used : %lu\n", gs_serial)); TRACE_MSG((" total allocs : %lu\n", gs_memstat.alloc)); TRACE_MSG((" total frees : %lu\n", gs_memstat.free)); TRACE_MSG((" max mem blocks : %lu\n", gs_memstat.max_total_blocks)); TRACE_MSG((" max mem usage : %lu byte%s\n", gs_memstat.max_total_bytes, gs_memstat.max_total_bytes == 1 ? "" : "s")); if( gs_memstat.max_total_blocks > 0 ) { TRACE_MSG((" smallest block : %d byte%s\n", gs_memstat.min_alloc, gs_memstat.min_alloc == 1 ? "" : "s")); TRACE_MSG((" largest block : %d byte%s\n", gs_memstat.max_alloc, gs_memstat.max_alloc == 1 ? "" : "s")); TRACE_MSG((" average block : %.1f bytes\n", gs_memstat.avg_alloc/(double)gs_memstat.alloc)); } if( gs_memstat.total_blocks > 0 ) { TRACE_MSG((" memory leakage : %d byte%s in %d block%s\n", gs_memstat.total_bytes, gs_memstat.total_bytes == 1 ? "" : "s", gs_memstat.total_blocks, gs_memstat.total_blocks == 1 ? "" : "s" )); } TRACE_MSG(("--------------------------------\n")); } min_buck = max_buck = gs_trace[0].size; for( b = 0, buck = &gs_trace[0]; (unsigned)b < sizeof(gs_trace)/sizeof(gs_trace[0]); ++b, ++buck ) { if( level >= 3 ) { TRACE_MSG(("bucket %d used %d bytes in %d blocks\n", b, buck->size*sizeof(MemTrace), buck->size)); } if( buck->size < min_buck ) min_buck = buck->size; if( buck->size > max_buck ) max_buck = buck->size; if( buck->block != NULL ) { assert( buck->size > 0 ); bytes_used += buck->size*sizeof(MemTrace); for( i = 0; i < buck->size; ++i ) { MemTrace *p = &buck->block[i]; if( p->ptr != NULL && !p->freed ) { TRACE_MSG(("(%d) leaked %d bytes at %p allocated in %s:%d\n", p->serial, p->size, p->ptr, p->file, p->line)); gs_memstat.total_blocks--; gs_memstat.total_bytes -= p->size; #ifdef MEMALLOC_FREE_BLOCKS_AT_EXIT UTIL_FREE( (void *) p->ptr ); #endif } } #ifdef MEMALLOC_FREE_BLOCKS_AT_EXIT MEM_TRACE_FREE( buck->block ); #endif } else { assert( buck->size == 0 ); empty_buckets++; } } if( level >= 2 ) { TRACE_MSG(("memalloc tracing used %d bytes in %d buckets (%d empty)\n", bytes_used, b, empty_buckets)); TRACE_MSG(("min/max bucket size was %d/%d blocks\n", min_buck, max_buck)); } assert( gs_memstat.total_blocks == 0 ); assert( gs_memstat.total_bytes == 0 ); } static inline MemTrace *get_empty_slot( const void *ptr ) { MemTraceBucket *buck; MemTrace *p; int i, pos = -1; assert( ptr != NULL ); buck = &gs_trace[ HASH_BUCKET(ptr) ]; for( i = 0; i < buck->size; ++i ) { p = &buck->block[i]; if( p->ptr == ptr ) { if( p->freed ) { p->ptr = NULL; p->size = 0; p->freed = 0; return p; } return NULL; } if( pos < 0 && p->ptr == NULL ) pos = i; } if( pos < 0 ) pos = buck->size; if( pos >= buck->size ) { buck->size = pos + MEMALLOC_BUCKET_SIZE_INCR; buck->block = MEM_TRACE_REALLOC( buck->block, buck->size * sizeof(MemTrace) ); if( buck->block == NULL ) { fprintf(stderr, "panic: out of memory in get_empty_slot()\n"); abort(); } for( p = &buck->block[i = pos]; i < buck->size; ++i, ++p ) { p->ptr = NULL; p->size = 0; p->freed = 0; } } return &buck->block[pos]; } static inline MemTrace *find_slot( const void *ptr ) { MemTraceBucket *buck; MemTrace *p; int pos; buck = &gs_trace[ HASH_BUCKET(ptr) ]; for( pos = 0; pos < buck->size; ++pos ) { p = &buck->block[pos]; if( p->ptr == ptr ) return p; } return NULL; } static void hex_dump( const void *ptr, size_t len ) { const unsigned char *px = ptr; unsigned long pos = 0; for( pos = 0; pos < len; pos += HEX_BYTES_PER_LINE ) { int i; TRACE_MSG(("%08lX ", pos)); for( i = 0; pos+i < len && i < HEX_BYTES_PER_LINE; i++ ) TRACE_MSG(("%s%02X", i%4 ? " " : " ", px[pos+i])); for( ; i < HEX_BYTES_PER_LINE; i++ ) TRACE_MSG(("%s ", i%4 ? " " : " ")); TRACE_MSG((" ")); for( i = 0; pos+i < len && i < HEX_BYTES_PER_LINE; i++ ) TRACE_MSG(("%s%c", i%4 ? "" : " ", px[pos+i] < 32 || px[pos+i] > 127 ? '.' : px[pos+i])); TRACE_MSG(("\n")); } } static void diag_ptr( const void *ptr ) { const char *px = ptr; int b, i, delta = -1; MemTraceBucket *buck; MemTrace *best = NULL; enum Match { None, BeforeF, AfterF, BeforeA, AfterA, InsideF, InsideA, Freed } match = None; assert( ptr != NULL ); for( b = 0, buck = &gs_trace[0]; (unsigned)b < sizeof(gs_trace)/sizeof(gs_trace[0]); ++b, ++buck ) for( i = 0; i < buck->size; ++i ) { MemTrace *p = &buck->block[i]; if( p->ptr != NULL ) { const char *ps = p->ptr; const char *pe = ps + p->size; enum Match m = None; int d = 0; if( ps == px && p->freed ) { m = Freed; } else if( ps <= px && px < pe ) { m = p->freed ? InsideF : InsideA; } else if( px >= pe ) { m = p->freed ? AfterF : AfterA; d = (px - pe) + 1; } else { assert( px < ps ); m = p->freed ? BeforeF : BeforeA; d = ps - px; } assert( m != None ); if( (m > match && d < MEMALLOC_MAX_DIAG_DIST) || (m == match && d < delta) ) { match = m; delta = d; best = p; } } } if( match != None ) { const char *type, *s1, *s2; assert( delta >= 0 && delta < MEMALLOC_MAX_DIAG_DIST ); assert( best != NULL ); type = best->freed ? "a freed" : "an allocated"; s1 = delta == 1 ? "" : "s"; s2 = best->size == 1 ? "" : "s"; switch( match ) { case BeforeF: case BeforeA: TRACE_MSG((" %p is %d byte%s before %s block of %d byte%s at %p (%s:%d)\n", ptr, delta, s1, type, best->size, s2, best->ptr, best->file, best->line)); break; case AfterF: case AfterA: TRACE_MSG((" %p is %d byte%s behind %s block of %d byte%s at %p (%s:%d)\n", ptr, delta, s1, type, best->size, s2, best->ptr, best->file, best->line)); break; case InsideF: case InsideA: assert( delta == 0 ); TRACE_MSG((" %p is inside %s block of %d byte%s at %p (%s:%d)\n", ptr, type, best->size, s2, best->ptr, best->file, best->line)); break; case Freed: assert( delta == 0 ); TRACE_MSG((" %p points to a block of %d byte%s already freed (%s:%d)\n", ptr, best->size, s2, best->file, best->line)); break; default: fprintf(stderr, "panic: unknown match type (%d)\n", (int) match); abort(); break; } if( !best->freed && MEMALLOC_FLAG(env.show_dumps) ) hex_dump( best->ptr, best->size ); } } static void diag_range( const void *ptr, size_t size ) { const char *pS, *pE; int b, i, delta = -1, overlap = -1; MemTraceBucket *buck; MemTrace *best = NULL; enum Match { None, BeforeF, AfterF, BeforeA, AfterA, OverlapF, OverlapA, InsideF, Freed } match = None; assert( ptr != NULL ); assert( size > 0 ); pS = ptr; pE = pS + size; for( b = 0, buck = &gs_trace[0]; (unsigned)b < sizeof(gs_trace)/sizeof(gs_trace[0]); ++b, ++buck ) for( i = 0; i < buck->size; ++i ) { MemTrace *p = &buck->block[i]; if( p->ptr != NULL ) { const char *ps = p->ptr; const char *pe = ps + p->size; enum Match m = None; int d = 0, o = 0; /* pS pE * |===================| * : : * ps |--:-------------------:-----| pe -> inside * ps |---------|:pe : -> after * ps |--:------| pe : -> overlap * : ps |---------| pe : -> overlap * : ps |----:----| pe -> overlap * : : ps |---------| pe -> before * : | * |===================| */ if( ps == pS && pe == pE && p->freed ) { m = Freed; } else if( ps <= pS && pe >= pE && p->freed ) { m = InsideF; } else if( pS <= ps && ps <= pE ) { m = p->freed ? OverlapF : OverlapA; o = pE - ps; } else if( pS <= pe && pe <= pE ) { m = p->freed ? OverlapF : OverlapA; o = pe - pS; } else if( pS > pe ) { m = p->freed ? AfterF : AfterA; d = pS - pe; } else { assert( pE < ps ); m = p->freed ? BeforeF : BeforeA; d = ps - pE; } assert( m != None ); if( (m > match && d < MEMALLOC_MAX_DIAG_DIST) || (m == match && (d < delta || o > overlap)) ) { match = m; delta = d; overlap = o; best = p; } } } if( match != None ) { const char *type, *s1, *s2, *s3; assert( delta >= 0 && delta < MEMALLOC_MAX_DIAG_DIST ); assert( best != NULL ); type = best->freed ? "a freed" : "an allocated"; s1 = delta == 1 ? "" : "s"; s2 = best->size == 1 ? "" : "s"; s3 = overlap == 1 ? "" : "s"; switch( match ) { case BeforeF: case BeforeA: assert( overlap == 0 ); TRACE_MSG((" %p(%d) is %d byte%s before %s block of %d byte%s at %p (%s:%d)\n", ptr, size, delta, s1, type, best->size, s2, best->ptr, best->file, best->line)); break; case AfterF: case AfterA: assert( overlap == 0 ); TRACE_MSG((" %p(%d) is %d byte%s behind %s block of %d byte%s at %p (%s:%d)\n", ptr, size, delta, s1, type, best->size, s2, best->ptr, best->file, best->line)); break; case OverlapF: case OverlapA: assert( delta == 0 ); assert( overlap > 0 ); TRACE_MSG((" %p(%d) overlaps %d byte%s with %s block of %d byte%s at %p (%s:%d)\n", ptr, size, overlap, s3, type, best->size, s2, best->ptr, best->file, best->line)); break; case InsideF: assert( delta == 0 ); TRACE_MSG((" %p(%d) is inside %s block of %d byte%s at %p (%s:%d)\n", ptr, size, type, best->size, s2, best->ptr, best->file, best->line)); break; case Freed: assert( delta == 0 ); TRACE_MSG((" %p(%d) matches a block already freed (%s:%d)\n", ptr, size, best->file, best->line)); break; default: fprintf(stderr, "panic: unknown match type (%d)\n", (int) match); abort(); break; } if( !best->freed && MEMALLOC_FLAG(env.show_dumps) ) hex_dump( best->ptr, best->size ); } } static inline void init_trace(size_t first_alloc_size) { const char *str; assert(gs_serial == 0); if( (str = getenv("MEMALLOC_STAT_LEVEL")) != NULL ) gs_stat_level = atoi(str); gs_memstat.min_alloc = gs_memstat.max_alloc = first_alloc_size; atexit( trace_leaks ); } static inline int trace_add( const void *ptr, size_t size, const char *file, int line ) { MemTrace *p; assert( file != NULL ); if( ptr == NULL ) { if( size == 0 ) return 1; TRACE_MSG(("request for %d bytes failed in %s:%d\n", size, file, line)); return 0; } if( (p = get_empty_slot(ptr)) == NULL ) { TRACE_MSG(("pointer %p has already been allocated in %s:%d\n", ptr, file, line)); return 0; } if( gs_serial == 0 ) init_trace(size); gs_memstat.alloc++; gs_memstat.total_blocks++; gs_memstat.total_bytes += size; if( gs_memstat.total_blocks > gs_memstat.max_total_blocks ) gs_memstat.max_total_blocks = gs_memstat.total_blocks; if( gs_memstat.total_bytes > gs_memstat.max_total_bytes ) gs_memstat.max_total_bytes = gs_memstat.total_bytes; if( size < gs_memstat.min_alloc ) gs_memstat.min_alloc = size; if( size > gs_memstat.max_alloc ) gs_memstat.max_alloc = size; gs_memstat.avg_alloc += (double) size; p->ptr = ptr; p->file = file; p->line = line; p->size = size; p->serial = gs_serial; if( gs_serial < ULONG_MAX ) gs_serial++; return 1; } static inline int trace_del( const void *ptr, const char *file, int line ) { MemTrace *p; assert( file != NULL ); if( ptr == NULL ) { TRACE_MSG(("trying to free NULL pointer in %s:%d\n", ptr, file, line)); return 0; } if( (p = find_slot(ptr)) == NULL ) { TRACE_MSG(("pointer %p has not yet been allocated in %s:%d\n", ptr, file, line)); diag_ptr(ptr); return 0; } if( p->freed ) { TRACE_MSG(("pointer %p has already been freed in %s:%d\n", ptr, file, line)); return 0; } free_slot( p ); return 1; } static inline int trace_upd( const void *old, const void *ptr, size_t size, const char *file, int line ) { MemTrace *p; assert( file != NULL ); if( old != ptr && old != NULL ) { if( (p = find_slot(old)) == NULL ) { TRACE_MSG(("pointer %p has not yet been allocated in %s:%d\n", old, file, line)); diag_ptr(old); } else if( p->freed ) TRACE_MSG(("pointer %p has already been freed in %s:%d\n", ptr, file, line)); else free_slot( p ); } if( ptr == NULL ) { if( size == 0 ) return 1; TRACE_MSG(("request for %d bytes failed in %s:%d\n", size, file, line)); return 0; } p = NULL; if( old == ptr ) { if( (p = find_slot(ptr)) == NULL ) { TRACE_MSG(("pointer %p has not yet been allocated in %s:%d\n", ptr, file, line)); diag_ptr(ptr); } else if( p->freed ) { TRACE_MSG(("pointer %p has already been freed in %s:%d\n", ptr, file, line)); p->size = 0; p->freed = 0; } else { gs_memstat.alloc++; gs_memstat.free++; } } if( p == NULL ) { if( (p = get_empty_slot(ptr)) == NULL ) { TRACE_MSG(("pointer %p has already been allocated in %s:%d\n", ptr, file, line)); return 0; } gs_memstat.alloc++; gs_memstat.total_blocks++; if( gs_memstat.total_blocks > gs_memstat.max_total_blocks ) gs_memstat.max_total_blocks = gs_memstat.total_blocks; } if( gs_serial == 0 ) init_trace(size); gs_memstat.total_bytes += size - p->size; if( gs_memstat.total_bytes > gs_memstat.max_total_bytes ) gs_memstat.max_total_bytes = gs_memstat.total_bytes; if( size < gs_memstat.min_alloc ) gs_memstat.min_alloc = size; if( size > gs_memstat.max_alloc ) gs_memstat.max_alloc = size; gs_memstat.avg_alloc += (double) size; p->ptr = ptr; p->file = file; p->line = line; p->size = size; p->serial = gs_serial; if( gs_serial < ULONG_MAX ) gs_serial++; return 1; } static inline int trace_check_ptr( const void *ptr, const char *file, int line ) { MemTrace *p; if( ptr != NULL && (p =find_slot(ptr)) != NULL && !p->freed ) return 1; TRACE_MSG(("Assertion failed: %p is not a valid pointer in %s:%d\n", ptr, file, line)); if( ptr != NULL ) diag_ptr(ptr); if( MEMALLOC_FLAG(env.soft_assert) == 0 ) abort(); return 0; } static inline int trace_check_range( const void *ptr, size_t size, const char *file, int line ) { int b, i; MemTraceBucket *buck; if( ptr != NULL && size > 0 ) { for( b = 0, buck = &gs_trace[0]; (unsigned)b < sizeof(gs_trace)/sizeof(gs_trace[0]); ++b, ++buck ) for( i = 0; i < buck->size; ++i ) { MemTrace *pmt = &buck->block[i]; if( pmt->ptr != NULL && !pmt->freed ) { const char *bs = pmt->ptr; const char *be = bs + pmt->size; const char *cs = ptr; const char *ce = cs + size; int s_in_b = bs <= cs && cs <= be; int e_in_b = bs <= ce && ce <= be; if( s_in_b && e_in_b ) return 1; } } } TRACE_MSG(("Assertion failed: %p(%d) is not a valid block in %s:%d\n", ptr, size, file, line)); if( ptr != NULL && size > 0 ) diag_range(ptr, size); if( MEMALLOC_FLAG(env.soft_assert) == 0 ) abort(); return 0; } #else #define trace_add( ptr, size, file, line ) 1 #define trace_upd( old, ptr, size, file, line ) 1 #define trace_del( ptr, file, line ) 1 #define trace_check_ptr( ptr, file, line ) 1 #define trace_check_range( ptr, size, file, line ) 1 #endif /* defined(DEBUG_MEMALLOC) && defined(TRACE_MEMALLOC) */ #ifdef DEBUG_MEMALLOC void *_memAlloc( size_t size, const char *file, int line ) #else void *_memAlloc( size_t size ) #endif { void *p; #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) p = UTIL_MALLOC( size + sizeof( size_t ) ); #else p = UTIL_MALLOC( size ); #endif abortMEMALLOC( "_memAlloc", size, p ); #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) if( p != NULL ) { *((size_t *)p) = size; p = (void *)(((size_t *)p)+1); } #endif (void) trace_add( p, size, file, line ); DEBUG( TRACE, ("%s(%d):A=%d@%08lX\n", file, line, size, (unsigned long)p) ); return p; } #ifdef DEBUG_MEMALLOC void *_memCAlloc( size_t nobj, size_t size, const char *file, int line ) #else void *_memCAlloc( size_t nobj, size_t size ) #endif { void *p; #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) p = UTIL_MALLOC( nobj*size + sizeof( size_t ) ); #else p = UTIL_CALLOC( nobj, size ); #endif abortMEMALLOC( "_memCAlloc", nobj*size, p ); #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) if( p != NULL ) { *((size_t *)p) = size; p = (void *)(((size_t *)p)+1); memset( p, 0, nobj*size ); } #endif (void) trace_add( p, nobj*size, file, line ); DEBUG( TRACE, ("%s(%d):A=%d@%08lX\n", file, line, nobj*size, (unsigned long)p) ); return p; } #ifdef DEBUG_MEMALLOC void *_memReAlloc( void *p, size_t size, const char *file, int line ) #else void *_memReAlloc( void *p, size_t size ) #endif { #if defined(DEBUG_MEMALLOC) && defined(TRACE_MEMALLOC) void *oldp = p; #endif #ifdef DEBUG_MEMALLOC if( p != NULL ) DEBUG( TRACE, ("%s(%d):F=%08lX\n", file, line, (unsigned long)p) ); #endif #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) if( p != NULL ) { size_t old_size; p = (void *)(((size_t *)p)-1); old_size = *((size_t *)p); if( old_size > size ) memset( ((char *)p) + sizeof(size_t) + size, 0xA5, old_size - size ); } if( size != 0 ) p = UTIL_REALLOC( p, size + sizeof( size_t ) ); #else p = UTIL_REALLOC( p, size ); #endif abortMEMALLOC( "_memReAlloc", size, p ); #if defined(DEBUG_MEMALLOC) && defined(AUTOPURGE_MEMALLOC) if( p != NULL ) { *((size_t *)p) = size; p = (void *)(((size_t *)p)+1); } #endif #ifdef DEBUG_MEMALLOC if( size != 0 ) DEBUG( TRACE, ("%s(%d):A=%d@%08lX\n", file, line, size, (unsigned long)p) ); (void) trace_upd( oldp, p, size, file, line ); #endif return p; } #ifdef DEBUG_MEMALLOC void _memFree( void *p, const char *file, int line ) { DEBUG( TRACE, ("%s(%d):F=%08lX\n", file, line, (unsigned long)p) ); if( trace_del( p, file, line ) && p ) { #ifdef AUTOPURGE_MEMALLOC size_t size; p = (void *)(((size_t *)p)-1); size = *((size_t *)p); memset( p, 0xA5, size + sizeof( size_t ) ); #endif UTIL_FREE( p ); } } void _assertValidPtr( const void *p, const char *file, int line ) { DEBUG( ASSERT, ("%s(%d):V=%08lX\n", file, line, (unsigned long)p) ); (void) trace_check_ptr( p, file, line ); } void _assertValidBlock( const void *p, size_t size, const char *file, int line ) { DEBUG( ASSERT, ("%s(%d):B=%d@%08lX\n", file, line, size, (unsigned long)p) ); (void) trace_check_range( p, size, file, line ); } #ifdef UTIL_FORMAT_CHECK static void debug_check( const char *str __attribute__(( __unused__ )), ... ) { fprintf( stderr, "compiled with UTIL_FORMAT_CHECK, please don't run\n" ); abort(); } #endif int SetDebugMemAlloc( void (*dbfunc)(const char *, ...), unsigned long dbflags ) { gs_dbfunc = dbfunc; gs_dbflags = dbflags; return 1; } #endif /* DEBUG_MEMALLOC */ #else /* avoid empty source file warning */ extern int _memalloc___notused __attribute__((unused)); #endif /* defined(DEBUG_MEMALLOC) */ /* ============================================================= */ /* ==================== TEST CODE FOLLOWING ==================== */ /* ============================================================= */ #ifdef MEMALLOC_TEST #include #include #include "memalloc.h" static FILE *ftest; static FILE *fdebug; static struct { int debug; int assert; int check_freed; int stat_level; } flags; static void t_trace( const char *fmt, ... ) { va_list l; va_start(l, fmt); #if defined(DEBUG_MEMALLOC) && defined(TRACE_MEMALLOC) vfprintf(ftest, fmt, l); #endif va_end(l); } #if defined(DEBUG_MEMALLOC) static void t_debug( const char *fmt, ... ) { va_list l; va_start(l, fmt); if( flags.debug ) vfprintf(ftest, fmt, l); va_end(l); } #endif static void t_assert( const char *fmt, ... ) { va_list l; va_start(l, fmt); #if defined(DEBUG_MEMALLOC) if( flags.assert ) vfprintf(ftest, fmt, l); #endif va_end(l); } #define trc_not_alloc t_trace("pointer %p has not yet been allocated in %s:%d\n", p, __FILE__, __LINE__) #define trc_assP_fail t_trace("Assertion failed: %p is not a valid pointer in %s:%d\n", p, __FILE__, __LINE__) #define trc_assB_fail(s) t_trace("Assertion failed: %p(%d) is not a valid block in %s:%d\n", p, s, __FILE__, __LINE__) #define trc t_trace #define trc_f if( flags.check_freed ) t_trace #define assP t_assert("%s(%d):V=%08lX\n", __FILE__, __LINE__, (unsigned long)p) #define assB(s) t_assert("%s(%d):B=%d@%08lX\n", __FILE__, __LINE__, s, (unsigned long)p) #if defined(DEBUG_MEMALLOC) # define dbg(what) t_debug("%s(%d):" #what "=%08lX\n", __FILE__, __LINE__, (unsigned long)p) # define dbgA(p,s) t_debug("%s(%d):A=%d@%08lX\n", __FILE__, __LINE__, s, (unsigned long)p) #else # define dbg(what) (void)1 # define dbgA(p,s) (void)1 #endif static void runtests( void ) { unsigned char *p, *p1; int lp1; int i; #define S_P1 10 AllocF( char *, p1, S_P1 ); dbgA(p1,S_P1); lp1 = __LINE__; for( i = 0; i < S_P1; i++ ) p1[i] = (unsigned char) i; #ifdef TRACE_MEMALLOC p = p1 + 1; Free( p ); dbg(F); trc_not_alloc; trc(" %p is inside an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 + (S_P1-1); Free( p ); dbg(F); trc_not_alloc; trc(" %p is inside an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); #if MEMALLOC_MAX_DIAG_DIST > 1 p = p1 - 1; Free( p ); dbg(F); trc_not_alloc; trc(" %p is 1 byte before an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 + S_P1; Free( p ); dbg(F); trc_not_alloc; trc(" %p is 1 byte behind an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 - (MEMALLOC_MAX_DIAG_DIST-1); Free( p ); dbg(F); trc_not_alloc; trc(" %p is %d byte%s before an allocated block of %d bytes at %p (%s:%d)\n", p, MEMALLOC_MAX_DIAG_DIST-1, MEMALLOC_MAX_DIAG_DIST-1 == 1 ? "" : "s", S_P1, p1, __FILE__, lp1); p = p1 + (MEMALLOC_MAX_DIAG_DIST+S_P1-2); Free( p ); dbg(F); trc_not_alloc; trc(" %p is %d byte%s behind an allocated block of %d bytes at %p (%s:%d)\n", p, MEMALLOC_MAX_DIAG_DIST-1, MEMALLOC_MAX_DIAG_DIST-1 == 1 ? "" : "s", S_P1, p1, __FILE__, lp1); #endif p = p1 - (MEMALLOC_MAX_DIAG_DIST); Free( p ); dbg(F); trc_not_alloc; p = p1 + (MEMALLOC_MAX_DIAG_DIST+S_P1-1); Free( p ); dbg(F); trc_not_alloc; #endif p = p1; AssertValidPtr(p); assP; p = p1+1; AssertValidPtr(p); assP; trc_assP_fail; trc(" %p is inside an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1; AssertValidBlock(p,5); assB(5); p = p1-1; AssertValidBlock(p,5); assB(5); trc_assB_fail(5); trc(" %p(5) overlaps 4 bytes with an allocated block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1; Free( p ); dbg(F); AssertValidPtr(p); assP; trc_assP_fail; trc_f(" %p points to a block of %d bytes already freed (%s:%d)\n", p, S_P1, __FILE__, lp1); #ifdef TRACE_MEMALLOC p = p1 + 1; Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is inside a freed block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 + (S_P1-1); Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is inside a freed block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); #if MEMALLOC_MAX_DIAG_DIST > 1 p = p1 - 1; Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is 1 byte before a freed block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 + S_P1; Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is 1 byte behind a freed block of %d bytes at %p (%s:%d)\n", p, S_P1, p1, __FILE__, lp1); p = p1 - (MEMALLOC_MAX_DIAG_DIST-1); Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is %d byte%s before a freed block of %d bytes at %p (%s:%d)\n", p, MEMALLOC_MAX_DIAG_DIST-1, MEMALLOC_MAX_DIAG_DIST-1 == 1 ? "" : "s", S_P1, p1, __FILE__, lp1); p = p1 + (MEMALLOC_MAX_DIAG_DIST+S_P1-2); Free( p ); dbg(F); trc_not_alloc; trc_f(" %p is %d byte%s behind a freed block of %d bytes at %p (%s:%d)\n", p, MEMALLOC_MAX_DIAG_DIST-1, MEMALLOC_MAX_DIAG_DIST-1 == 1 ? "" : "s", S_P1, p1, __FILE__, lp1); #endif p = p1 - (MEMALLOC_MAX_DIAG_DIST); Free( p ); dbg(F); trc_not_alloc; p = p1 + (MEMALLOC_MAX_DIAG_DIST+S_P1-1); Free( p ); dbg(F); trc_not_alloc; p = p1; Free( p ); dbg(F); trc("pointer %p has %s in %s:%d\n", p, flags.check_freed ? "already been freed" : "not yet been allocated", __FILE__, __LINE__); #endif } #ifdef DEBUG_MEMALLOC static void test_dbfunc( const char *fmt, ... ) { va_list l; va_start(l, fmt); vfprintf(fdebug ? fdebug : stderr, fmt, l); va_end(l); } #endif int main( void ) { const char *str; const char *file; if( (file = getenv("MEMALLOC_TEST_FILE")) == NULL ) file = "test.ref"; flags.debug = (str=getenv("MEMALLOC_TEST_DEBUG")) && atoi(str); flags.assert = (str=getenv("MEMALLOC_TEST_ASSERT")) && atoi(str); flags.check_freed = (str=getenv("MEMALLOC_CHECK_FREED")) && atoi(str); flags.stat_level = (str=getenv("MEMALLOC_STAT_LEVEL")) ? atoi(str) : -1; if( (str=getenv("MEMALLOC_TEST_DEBUG_FILE")) != NULL ) if( (fdebug = fopen(str, "w")) == NULL ) return -1; #ifdef DEBUG_MEMALLOC SetDebugMemAlloc( test_dbfunc, (flags.debug ? DB_MEMALLOC_TRACE : 0) | (flags.assert ? DB_MEMALLOC_ASSERT : 0) ); #endif if( (ftest = fopen(file, "w")) == NULL ) return -1; runtests(); fclose(ftest); #ifdef DEBUG_MEMALLOC SetDebugMemAlloc( NULL, 0 ); #endif if( fdebug ) fclose(fdebug); return 0; } #endif Convert-Binary-C-0.76/util/memalloc.h0000644000175000001440000003271611550664633016144 0ustar mhxusers/******************************************************************************* * * HEADER: memalloc * ******************************************************************************** * * DESCRIPTION: Memory allocation and tracing routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:31 +0200 $ * $Revision: 29 $ * $Source: /util/memalloc.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of either the Artistic License or the * GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) * any later version. * * THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * *******************************************************************************/ /** * \file memalloc.h * \brief Memory allocation and tracing routines * * The functions in this file provide an interface to * the standard malloc / free functions, but in addition * you can selectively enable tracing of your memory * allocation. This may be useful to detect memory leaks * or usage of already freed memory blocks. * * A Perl script is supplied to analyze the output of * the memory tracing routines. * * To enable the tracing capability, the library must be * compiled with the #DEBUG_MEMALLOC preprocessor flag. Then, * you can selectively enable the tracing for each file or * project by using the SetDebugMemAlloc() routine. * * The following code shows an example: * * \include Alloc.c * * Then, a file like this will be written to stdout: * * \verbinclude mem_debug.dat * * This output is easy to understand. It tells you that * * -# in file \c Alloc.c, line 9, there were 16 bytes allocated at address 0x400031C0, * -# in file \c Alloc.c, line 10, address 0x400031C0 was verified, * -# in file \c Alloc.c, line 11, the memory block at address 0x400031C0 was freed, * -# in file \c Alloc.c, line 12, address 0x400031C0 was verified again. * * These files usually become very large if you work a lot with * dynamic memory allocation. So it would be rather hard to step * through that file on your own. For that reason, there's a Perl * script called \c check_alloc.pl that will take \c mem_debug.dat * as input and print all errors discovered and summary statistics: * * \verbinclude mem_debug.out * * As you can see, the last call to AssertValidPtr() caused an error * because the block that was checked has already been freed. The * other output is only useful if you have lots of dynamic memory * allocation, for example: * * \verbinclude memdb_large.out * * This will tell you that a total of 32404 memory blocks have been * successfully allocated and freed, a maximum of 13305 memory blocks * were in use simultanously, the peak memory usage was 183675 bytes, * the smallest and largest block that were allocated were 2 and 29 * bytes in size, respectively, and there were no memory leaks detected. * */ #ifndef _UTIL_MEMALLOC_H #define _UTIL_MEMALLOC_H #include #ifdef UTIL_HAVE_CONFIG_H # include "config.h" #endif #if !(defined(UTIL_MALLOC) && defined(UTIL_CALLOC) && defined(UTIL_REALLOC) && defined(UTIL_FREE)) # include # define UTIL_MALLOC(size) malloc(size) # define UTIL_CALLOC(count, size) calloc(count, size) # define UTIL_REALLOC(ptr, size) realloc(ptr, size) # define UTIL_FREE(ptr) free(ptr) #endif #define DB_MEMALLOC_TRACE 0x00000001 #define DB_MEMALLOC_ASSERT 0x00000002 #ifdef DEBUG_MEMALLOC void *_memAlloc( size_t size, const char *file, int line ); void *_memCAlloc( size_t nobj, size_t size, const char *file, int line ); void *_memReAlloc( void *p, size_t size, const char *file, int line ); void _memFree( void *p, const char *file, int line ); void _assertValidPtr( const void *p, const char *file, int line ); void _assertValidBlock( const void *p, size_t size, const char *file, int line ); int SetDebugMemAlloc( void (*dbfunc)(const char *, ...), unsigned long dbflags ); #else void *_memAlloc( size_t size ); void *_memCAlloc( size_t nobj, size_t size ); void *_memReAlloc( void *p, size_t size ); void _memFree( void *p ); #endif /***************************************************************/ /* DOCUMENTATION */ /***************************************************************/ #ifdef DOXYGEN /** * Make memory allocation routines abort when out of memory * * Set this preprocessor flag if you want the Alloc(), CAlloc() * and ReAlloc() functions as well as the fast macros AllocF(), * CAllocF() and ReAllocF() to abort if the system runs out of * memory. */ #define ABORT_IF_NO_MEM /** * Compile with debugging support */ #define DEBUG_MEMALLOC /** * Compile with tracing / leak detection support * * This may slow down memory allocation if lots of blocks * are simultaneously allocted. It will also increase the * memory requirements of your application. * * On the plus side, you get run-time memory allocation tracing, * assertion checking, leak detection and memory statistics. * You can control the amount of statistics by setting the * MEMALLOC_STAT_LEVEL environment variable to a value between * 0 and 3, with increasing amount of output. * * If an assertion fails, the program will usually abort. * You can choose not to abort the program by setting * MEMALLOC_SOFT_ASSERT to a non-zero value in your * environment. * * If you want the memory allocator to keep information about * freed blocks, set MEMALLOC_CHECK_FREED to a non-zero value. * This can give more detailed trace output at the cost of * slower execution. * * If you like to see hex dumps of non-freed memory blocks, * you can set MEMALLOC_SHOW_DUMPS to a non-zero value. * * Only works if DEBUG_MEMALLOC is also defined. */ #define TRACE_MEMALLOC /** * Build with memory allocator that automatically purges * allocated / freed memory blocks. * * Only works if DEBUG_MEMALLOC is also defined. */ #define AUTOPURGE_MEMALLOC /** * Build without support for the Alloc(), CAlloc() and * ReAlloc() functions. Memory management is completely * carried out through the use of the fast allocation * macros AllocF(), CAllocF() and ReAllocF(). */ #define NO_SLOW_MEMALLOC_CALLS /** * Allocate a memory block * * Allocates a memory block of \a size bytes. If the files * were compiled with the #ABORT_IF_NO_MEM preprocessor flag, * the function aborts if no memory can be allocated. * * \param size Size of the memory block in bytes. * * \return A pointer to the allocated memory block, or NULL * if memory couldn't be allocated. */ void *Alloc( size_t size ); /** * Allocate a memory block and initialize to zero * * Allocates a memory block to hold \a nobj times * \a size bytes. If the files were compiled with the * #ABORT_IF_NO_MEM preprocessor flag, the function * aborts if no memory can be allocated. * * \param nobj Number of objects. * * \param size Size of one object in bytes. * * \return A pointer to the allocated memory block, or NULL * if memory couldn't be allocated. */ void *CAlloc( size_t nobj, size_t size ); /** * Reallocate a memory block * * Reallocates a memory block of \a size bytes. If the files * were compiled with the #ABORT_IF_NO_MEM preprocessor flag, * the function aborts if no memory can be allocated. * * \param ptr Pointer to an allocated memory block. * * \param size Size of new memory block in bytes. * * \return A pointer to the reallocated memory block, or NULL * if memory couldn't be reallocated. */ void *ReAlloc( void *ptr, size_t size ); /** * Fast Alloc Macro * * Allocates a memory block of \a size bytes. If the files * were compiled with the #ABORT_IF_NO_MEM preprocessor flag, * the function aborts if no memory can be allocated. * * \param cast Pointer cast. * * \param ptr Pointer to memory block. * * \param size Size of the memory block in bytes. */ #define AllocF( cast, ptr, size ) /** * Fast CAlloc Macro * * Allocates a memory block to hold \a nobj times * \a size bytes. If the files were compiled with the * #ABORT_IF_NO_MEM preprocessor flag, the function * aborts if no memory can be allocated. * * \param cast Pointer cast. * * \param ptr Pointer to memory block. * * \param nobj Number of objects. * * \param size Size of one object in bytes. */ #define CAllocF( cast, ptr, nobj, size ) /** * Fast ReAlloc Macro * * Reallocates a memory block of \a size bytes. If the files * were compiled with the #ABORT_IF_NO_MEM preprocessor flag, * the function aborts if no memory can be allocated. * * \param cast Pointer cast. * * \param ptr Pointer to memory block. * * \param size Size of new memory block in bytes. */ #define ReAllocF( cast, ptr, size ) /** * Free a memory block * * Frees a memory block that has been previously allocated * using the Alloc() function. * * \param ptr Pointer to a previously allocated * memory block. */ void Free( void *ptr ); /** * Trace pointer access. * * This may prove useful for checking if \a ptr points to * an existing, previously allocated, not yet freed memory * block. * * \param ptr Pointer to be traced. */ void AssertValidPtr( void *ptr ); /** * Trace memory block access. * * Allows checking if a certain memory block lies within * a previously allocated memory block. * * \param ptr Pointer to memory block. * * \param size Size of memory block. */ void AssertValidBlock( void *ptr, size_t size ); /** * Configure debugging support. * * \param dbfunc Pointer to a printf() like function * for writing the debug output. * * \param dbflags Binary ORed debugging flags. Currently, * you can request memory allocation tracing * with \c DB_MEMALLOC_TRACE and pointer * assertions with \c DB_MEMALLOC_ASSERT. */ int SetDebugMemAlloc( void (*dbfunc)(char *, ...), unsigned long dbflags ); #else /* !DOXYGEN */ /***************************************************************/ /* END OF DOCUMENTATION */ /***************************************************************/ #ifdef ABORT_IF_NO_MEM # define abortMEMALLOC( call, size, expr ) \ do { \ if( (expr) == NULL && size > 0 ) { \ fprintf(stderr, "%s(%d): out of memory!\n", call, size); \ abort(); \ } \ } while(0) #else # define abortMEMALLOC( call, size, expr ) do { (void) (expr); } while(0) #endif #ifdef DEBUG_MEMALLOC # ifndef NO_SLOW_MEMALLOC_CALLS # define ReAlloc( ptr, size ) _memReAlloc( ptr, size, __FILE__, __LINE__ ) # define CAlloc( nobj, size ) _memCAlloc( nobj, size, __FILE__, __LINE__ ) # define Alloc( size ) _memAlloc( size, __FILE__, __LINE__ ) # endif # define Free( ptr ) _memFree( ptr, __FILE__, __LINE__ ) # define AssertValidPtr( ptr ) _assertValidPtr( ptr, __FILE__, __LINE__ ) # define AssertValidBlock( ptr, size ) _assertValidBlock( ptr, size, __FILE__, __LINE__ ) # define ReAllocF( cast, ptr, size ) \ do { ptr = (cast) _memReAlloc( ptr, size, __FILE__, __LINE__ ); } while(0) # define CAllocF( cast, ptr, nobj, size ) \ do { ptr = (cast) _memCAlloc( nobj, size, __FILE__, __LINE__ ); } while(0) # define AllocF( cast, ptr, size ) \ do { ptr = (cast) _memAlloc( size, __FILE__, __LINE__ ); } while(0) #else /* !DEBUG_MEMALLOC */ # ifndef NO_SLOW_MEMALLOC_CALLS # ifdef ABORT_IF_NO_MEM # define ReAlloc( ptr, size ) _memReAlloc( ptr, size ) # define CAlloc( nobj, size ) _memCAlloc( nobj, size ) # define Alloc( size ) _memAlloc( size ) # else # define ReAlloc( ptr, size ) UTIL_REALLOC( ptr, size ) # define CAlloc( nobj, size ) UTIL_CALLOC( nobj, size ) # define Alloc( size ) UTIL_MALLOC( size ) # endif # endif # define Free( ptr ) do { if( ptr ) UTIL_FREE( ptr ); } while(0) # define AssertValidPtr( ptr ) (void) 0 # define AssertValidBlock( ptr, size ) (void) 0 # define SetDebugMemAlloc( func, flags ) 0 # define ReAllocF( cast, ptr, size ) \ abortMEMALLOC( "ReAllocF", size, ptr = (cast) UTIL_REALLOC( ptr, size ) ) # define CAllocF( cast, ptr, nobj, size ) \ abortMEMALLOC( "CAllocF", nobj*size, ptr = (cast) UTIL_CALLOC( nobj, size ) ) # define AllocF( cast, ptr, size ) \ abortMEMALLOC( "AllocF", size, ptr = (cast) UTIL_MALLOC( size ) ) #endif /* DEBUG_MEMALLOC */ #endif /* DOXYGEN */ #endif Convert-Binary-C-0.76/ctlib/0000755000175000001440000000000011550665107014306 5ustar mhxusersConvert-Binary-C-0.76/ctlib/cppreent.h0000644000175000001440000000430611550664614016304 0ustar mhxusers/******************************************************************************* * * HEADER: cppreent.h * ******************************************************************************** * * DESCRIPTION: Some macros to help with ucpp reentrancy * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:18 +0200 $ * $Revision: 13 $ * $Source: /ctlib/cppreent.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CPPREENT_H #define _CTLIB_CPPREENT_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "util/ccattr.h" /*===== DEFINES ==============================================================*/ #ifdef pUCPP # undef pUCPP #endif #ifdef pUCPP_ # undef pUCPP_ #endif #ifdef aUCPP # undef aUCPP #endif #ifdef aUCPP_ # undef aUCPP_ #endif #ifdef dUCPP # undef dUCPP #endif # define pUCPP struct CPP *pp __attribute__((unused)) # define pUCPP_ pUCPP, # define aUCPP pp # define aUCPP_ aUCPP, # define dUCPP(a) pUCPP = (struct CPP *)a /* ucpp global variables */ # define r_no_special_macros ((struct CPP *) pp)->no_special_macros # define r_emit_defines ((struct CPP *) pp)->emit_defines # define r_emit_assertions ((struct CPP *) pp)->emit_assertions # define r_emit_dependencies ((struct CPP *) pp)->emit_dependencies # define r_current_filename ((struct CPP *) pp)->current_filename # define r_callback_arg ((struct CPP *) pp)->callback_arg # define r_c99_compliant ((struct CPP *) pp)->c99_compliant # define r_c99_hosted ((struct CPP *) pp)->c99_hosted /*===== TYPEDEFS =============================================================*/ struct CPP; /*===== FUNCTION PROTOTYPES ==================================================*/ #endif Convert-Binary-C-0.76/ctlib/cterror.c0000644000175000001440000002677411550664614016154 0ustar mhxusers/******************************************************************************* * * MODULE: cterror.c * ******************************************************************************** * * DESCRIPTION: Error reporting for the ctlib * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:18 +0200 $ * $Revision: 26 $ * $Source: /ctlib/cterror.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "cterror.h" #include "util/memalloc.h" #include "ucpp/cpp.h" #include "ucpp/mem.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ #define INIT_CHECK \ do { \ if (!initialized) \ { \ fprintf(stderr, "FATAL: print functions have not been set!\n"); \ abort(); \ } \ } while(0) /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static CTLibError *error_new(enum CTErrorSeverity severity, void *str); static void error_delete(CTLibError *error); static void push_str(CParseInfo *pCPI, enum CTErrorSeverity severity, void *str); static void push_verror(CParseInfo *pCPI, enum CTErrorSeverity severity, const char *fmt, va_list *pap); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static int initialized = 0; static PrintFunctions F; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: error_new * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static CTLibError *error_new(enum CTErrorSeverity severity, void *str) { CTLibError *perr; const char *string; size_t len; string = F.cstring(str, &len); AllocF(CTLibError *, perr, sizeof(CTLibError)); AllocF(char *, perr->string, len + 1); perr->severity = severity; strncpy(perr->string, string, len); perr->string[len] = '\0'; return perr; } /******************************************************************************* * * ROUTINE: error_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void error_delete(CTLibError *error) { if (error) { if (error->string) Free(error->string); Free(error); } } /******************************************************************************* * * ROUTINE: push_str * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void push_str(CParseInfo *pCPI, enum CTErrorSeverity severity, void *str) { if (pCPI == NULL || pCPI->errorStack == NULL) F.fatalerr(str); LL_push(pCPI->errorStack, error_new(severity, str)); } /******************************************************************************* * * ROUTINE: push_verror * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void push_verror(CParseInfo *pCPI, enum CTErrorSeverity severity, const char *fmt, va_list *pap) { void *str = F.newstr(); F.vscatf(str, fmt, pap); push_str(pCPI, severity, str); F.destroy(str); } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: set_print_functions * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void set_print_functions(PrintFunctions *pPF) { if (pPF->newstr == NULL || pPF->destroy == NULL || pPF->scatf == NULL || pPF->vscatf == NULL || pPF->cstring == NULL || pPF->fatalerr == NULL) { fprintf(stderr, "FATAL: all print functions must be set!\n"); abort(); } F = *pPF; initialized = 1; } /******************************************************************************* * * ROUTINE: pop_all_errors * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pop_all_errors(CParseInfo *pCPI) { LL_flush(pCPI->errorStack, (LLDestroyFunc) error_delete); } /******************************************************************************* * * ROUTINE: push_error * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void push_error(CParseInfo *pCPI, const char *fmt, ...) { va_list ap; INIT_CHECK; va_start(ap, fmt); push_verror(pCPI, CTES_ERROR, fmt, &ap); va_end(ap); } /******************************************************************************* * * ROUTINE: push_warning * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void push_warning(CParseInfo *pCPI, const char *fmt, ...) { va_list ap; INIT_CHECK; va_start(ap, fmt); push_verror(pCPI, CTES_WARNING, fmt, &ap); va_end(ap); } /******************************************************************************* * * ROUTINE: fatal_error * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2003 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void fatal_error(const char *fmt, ...) { va_list ap; void *str; INIT_CHECK; va_start(ap, fmt); str = F.newstr(); F.vscatf(str, fmt, &ap); va_end(ap); F.fatalerr(str); } /******************************************************************************* * * ROUTINE: my_ucpp_ouch * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void my_ucpp_ouch(pUCPP_ char *fmt, ...) { va_list ap; void *str; INIT_CHECK; va_start(ap, fmt); str = F.newstr(); F.scatf(str, "%s: (FATAL) ", r_current_filename); F.vscatf(str, fmt, &ap); va_end(ap); F.fatalerr(str); } /******************************************************************************* * * ROUTINE: my_ucpp_error * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void my_ucpp_error(pUCPP_ long line, char *fmt, ...) { va_list ap; void *str; INIT_CHECK; va_start(ap, fmt); str = F.newstr(); if (line > 0) F.scatf(str, "%s, line %ld: ", r_current_filename, line); else if (line == 0) F.scatf(str, "%s: ", r_current_filename); F.vscatf(str, fmt, &ap); if (line >= 0) { struct stack_context *sc = report_context(aUCPP); size_t i; for (i = 0; sc[i].line >= 0; i++) F.scatf(str, "\n\tincluded from %s:%ld", sc[i].long_name ? sc[i].long_name : sc[i].name, sc[i].line); freemem(sc); } va_end(ap); push_str(r_callback_arg, CTES_ERROR, str); F.destroy(str); } /******************************************************************************* * * ROUTINE: my_ucpp_warning * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void my_ucpp_warning(pUCPP_ long line, char *fmt, ...) { va_list ap; void *str; INIT_CHECK; va_start(ap, fmt); str = F.newstr(); if (line > 0) F.scatf(str, "%s, line %ld: (warning) ", r_current_filename, line); else if (line == 0) F.scatf(str, "%s: (warning) ", r_current_filename); else F.scatf(str, "(warning) "); F.vscatf(str, fmt, &ap); if (line >= 0) { struct stack_context *sc = report_context(aUCPP); size_t i; for (i = 0; sc[i].line >= 0; i++) F.scatf(str, "\n\tincluded from %s:%ld", sc[i].long_name ? sc[i].long_name : sc[i].name, sc[i].line); freemem(sc); } va_end(ap); push_str(r_callback_arg, CTES_WARNING, str); F.destroy(str); } Convert-Binary-C-0.76/ctlib/cterror.h0000644000175000001440000000472011550664614016144 0ustar mhxusers/******************************************************************************* * * HEADER: cterror.h * ******************************************************************************** * * DESCRIPTION: Error reporting for the ctlib * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:18 +0200 $ * $Revision: 25 $ * $Source: /ctlib/cterror.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTERROR_H #define _CTLIB_CTERROR_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctparse.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { void * (*newstr)(void); void (*destroy)(void *); void (*scatf)(void *, const char *, ...); void (*vscatf)(void *, const char *, va_list *); const char * (*cstring)(void *, size_t *); void (*fatalerr)(void *); } PrintFunctions; enum CTErrorSeverity { CTES_INFORMATION, CTES_WARNING, CTES_ERROR }; typedef struct { enum CTErrorSeverity severity; char *string; } CTLibError; /*===== FUNCTION PROTOTYPES ==================================================*/ #define set_print_functions CTlib_set_print_functions void set_print_functions(PrintFunctions *pPF); #define pop_all_errors CTlib_pop_all_errors void pop_all_errors(CParseInfo *pCPI); #define push_error CTlib_push_error void push_error(CParseInfo *pCPI, const char *fmt, ...); #define push_warning CTlib_push_warning void push_warning(CParseInfo *pCPI, const char *fmt, ...); #define fatal_error CTlib_fatal_error void fatal_error(const char *fmt, ...); #define my_ucpp_ouch CTlib_my_ucpp_ouch void my_ucpp_ouch(pUCPP_ char *fmt, ...); #define my_ucpp_error CTlib_my_ucpp_error void my_ucpp_error(pUCPP_ long line, char *fmt, ...); #define my_ucpp_warning CTlib_my_ucpp_warning void my_ucpp_warning(pUCPP_ long line, char *fmt, ...); #endif Convert-Binary-C-0.76/ctlib/cttags.c0000644000175000001440000001575511550664614015756 0ustar mhxusers/******************************************************************************* * * MODULE: cttags.c * ******************************************************************************** * * DESCRIPTION: Tag properties to C types * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:18 +0200 $ * $Revision: 9 $ * $Source: /ctlib/cttags.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "cttags.h" #include "util/memalloc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: tag_new * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: CtTag object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTag *tag_new(CtTagType type, const CtTagVtable *vtable) { CtTag *tag; AllocF(CtTag *, tag, sizeof(CtTag)); tag->next = NULL; tag->vtable = vtable; tag->type = type; tag->flags = 0; tag->any = 0; if (tag->vtable && tag->vtable->init) tag->vtable->init(tag); return tag; } /******************************************************************************* * * ROUTINE: tag_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone CtTag object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTag *tag_clone(const CtTag *stag) { CtTag *dtag; if (stag == NULL) return NULL; AllocF(CtTag *, dtag, sizeof(CtTag)); memcpy(dtag, stag, sizeof(CtTag)); if (stag->vtable && stag->vtable->clone) stag->vtable->clone(dtag, stag); return dtag; } /******************************************************************************* * * ROUTINE: tag_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: CtTag object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void tag_delete(CtTag *tag) { if (tag) { if (tag->vtable && tag->vtable->free) tag->vtable->free(tag); Free(tag); } } /******************************************************************************* * * ROUTINE: find_tag * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Find a CtTag object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTag *find_tag(CtTagList list, CtTagType type) { while (list && list->type != type) list = list->next; return list; } /******************************************************************************* * * ROUTINE: insert_tag * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Insert a CtTag object into a list. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void insert_tag(CtTagList *list, CtTag *tag) { tag->next = *list; *list = tag; } /******************************************************************************* * * ROUTINE: remove_tag * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Remove a single CtTag object from a list. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTag *remove_tag(CtTagList *list, CtTagType type) { while (*list) { if ((*list)->type == type) { CtTag *tag = *list; *list = (*list)->next; tag->next = NULL; return tag; } list = &(*list)->next; } return NULL; } /******************************************************************************* * * ROUTINE: delete_taglist * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Remove all CtTag objects from a list. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void delete_taglist(CtTagList *list) { CtTag *tag = *list; *list = NULL; while (tag) { CtTag *old = tag; tag = tag->next; tag_delete(old); } } /******************************************************************************* * * ROUTINE: clone_taglist * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone a CtTag list. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ CtTagList clone_taglist(CtTagList list) { CtTagList rv = NULL; CtTagList *cloned = &rv; while (list) { *cloned = tag_clone(list); cloned = &(*cloned)->next; *cloned = NULL; list = list->next; } return rv; } Convert-Binary-C-0.76/ctlib/cttags.h0000644000175000001440000000442111550664614015747 0ustar mhxusers/******************************************************************************* * * HEADER: cttags.h * ******************************************************************************** * * DESCRIPTION: Tag properties to C types * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:19 +0200 $ * $Revision: 9 $ * $Source: /ctlib/cttags.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTTAGS_H #define _CTLIB_CTTAGS_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "arch.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef u_16 CtTagType; typedef u_16 CtTagFlags; typedef struct CtTag_ CtTag, *CtTagList; typedef struct CtTagVtable_ { void (*init )(CtTag *); void (*clone)(CtTag *, const CtTag *); void (*free )(CtTag *); } CtTagVtable; struct CtTag_ { CtTag *next; const CtTagVtable *vtable; CtTagType type; CtTagFlags flags; void *any; }; /*===== FUNCTION PROTOTYPES ==================================================*/ #define tag_new CTlib_tag_new CtTag *tag_new(CtTagType type, const CtTagVtable *vtable); #define tag_clone CTlib_tag_clone CtTag *tag_clone(const CtTag *stag); #define tag_delete CTlib_tag_delete void tag_delete(CtTag *tag); #define find_tag CTlib_find_tag CtTag *find_tag(CtTagList list, CtTagType type); #define insert_tag CTlib_insert_tag void insert_tag(CtTagList *list, CtTag *tag); #define remove_tag CTlib_remove_tag CtTag *remove_tag(CtTagList *list, CtTagType type); #define delete_taglist CTlib_delete_taglist void delete_taglist(CtTagList *list); #define clone_taglist CTlib_clone_taglist CtTagList clone_taglist(CtTagList tag); #endif Convert-Binary-C-0.76/ctlib/cttype.c0000644000175000001440000010011611550664614015763 0ustar mhxusers/******************************************************************************* * * MODULE: cttype.c * ******************************************************************************** * * DESCRIPTION: ANSI C data type objects * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:19 +0200 $ * $Revision: 38 $ * $Source: /ctlib/cttype.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "cttype.h" #include "ctdebug.h" #include "cterror.h" #include "util/memalloc.h" /*===== DEFINES ==============================================================*/ #define CONSTRUCT_OBJECT(type, name) \ type *name; \ AllocF(type *, name, sizeof(type)); \ PROFILE_ADD(type, sizeof(type)) #define CLONE_OBJECT(type, dest, src) \ type *dest; \ if ((src) == NULL) \ return NULL; \ AllocF(type *, dest, sizeof(type)); \ memcpy(dest, src, sizeof(type)); \ PROFILE_ADD(type, sizeof(type)) #define CONSTRUCT_OBJECT_IDENT(type, name) \ type *name; \ if (identifier && id_len == 0) \ id_len = strlen(identifier); \ AllocF(type *, name, offsetof(type, identifier) + id_len + 1); \ if (identifier) \ { \ strncpy(name->identifier, identifier, id_len); \ name->identifier[id_len] = '\0'; \ } \ else \ name->identifier[0] = '\0'; \ name->id_len = (unsigned char) (id_len < 255 ? id_len : 255); \ PROFILE_ADD(type, offsetof(type, identifier) + id_len + 1) #define CLONE_OBJECT_IDENT(type, dest, src) \ type *dest; \ size_t count = offsetof(type, identifier) + 1; \ if ((src) == NULL) \ return NULL; \ if ((src)->id_len) \ count += CTT_IDLEN(src); \ AllocF(type *, dest, count); \ memcpy(dest, src, count); \ PROFILE_ADD(type, count) #define DELETE_OBJECT_IDENT(type, ptr) \ do { \ PROFILE_DEL(type, offsetof(type, identifier) + CTT_IDLEN(ptr) + 1); \ Free(ptr); \ } while (0) #define DELETE_OBJECT(type, ptr) \ do { \ PROFILE_DEL(type, sizeof(type)); \ Free(ptr); \ } while (0) #ifdef CTLIB_PROFILE_MEM #define PROFILE_ADD(ix, size) \ do { \ struct MemProfile *p = &gs_profile[PROFILE_ ## ix]; \ p->total++; \ p->mtotal += size; \ if (++p->cur > p->max) \ p->max = p->cur; \ p->mcur += size; \ if (p->mcur > p->mmax) \ p->mmax = p->mcur; \ if (!gs_profile_init) \ { \ gs_profile_init = 1; \ (void) atexit(profile_dump); \ } \ } while (0) #define PROFILE_DEL(ix, size) \ do { \ struct MemProfile *p = &gs_profile[PROFILE_ ## ix]; \ p->cur--; \ p->mcur -= size; \ } while (0) #else #define PROFILE_ADD(ix, size) (void)0 #define PROFILE_DEL(ix, size) (void)0 #endif /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ #ifdef CTLIB_PROFILE_MEM enum { PROFILE_Value, PROFILE_Enumerator, PROFILE_EnumSpecifier, PROFILE_Declarator, PROFILE_StructDeclaration, PROFILE_Struct, PROFILE_Typedef, PROFILE_TypedefList, PROFILE_MAX, }; static struct MemProfile { const char *name; int size; long total, cur, max; long mtotal, mcur, mmax; } gs_profile[PROFILE_MAX] = { #define PROFTYPE(type) { #type, sizeof(type) } PROFTYPE(Value), PROFTYPE(Enumerator), PROFTYPE(EnumSpecifier), PROFTYPE(Declarator), PROFTYPE(StructDeclaration), PROFTYPE(Struct), PROFTYPE(Typedef), PROFTYPE(TypedefList) #undef PROFTYPE }; int gs_profile_init = 0; #endif /*===== STATIC FUNCTIONS =====================================================*/ #ifdef CTLIB_PROFILE_MEM void profile_dump(void) { int i; struct MemProfile *p = &gs_profile[0]; fprintf(stderr, "\n\n=== MEMORY PROFILE ===\n\n"); for (i = 0; i < PROFILE_MAX; i++, p++) fprintf(stderr, "%-20s (%3d bytes): total=%6ld (%9ld bytes) / " "cur=%6ld (%9ld bytes) / max=%6ld (%9ld bytes)\n", p->name, p->size, p->total, p->mtotal, p->cur, p->mcur, p->max, p->mmax); fprintf(stderr, "\n======================\n\n"); } #endif /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: value_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Value object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Value *value_new(signed long iv, u_32 flags) { CONSTRUCT_OBJECT(Value, pValue); pValue->iv = iv; pValue->flags = flags; CT_DEBUG(TYPE, ("type::value_new( iv=%ld flags=0x%08lX ) = %p", iv, (unsigned long) flags, pValue)); return pValue; } /******************************************************************************* * * ROUTINE: value_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Value object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void value_delete(Value *pValue) { CT_DEBUG(TYPE, ("type::value_delete( pValue=%p )", pValue)); if (pValue) DELETE_OBJECT(Value, pValue); } /******************************************************************************* * * ROUTINE: value_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Value object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Value *value_clone(const Value *pSrc) { CLONE_OBJECT(Value, pDest, pSrc); CT_DEBUG(TYPE, ("type::value_clone( %p ) = %p", pSrc, pDest)); return pDest; } /******************************************************************************* * * ROUTINE: enum_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Enumeration object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Enumerator *enum_new(const char *identifier, int id_len, Value *pValue) { CONSTRUCT_OBJECT_IDENT(Enumerator, pEnum); if (pValue) { pEnum->value = *pValue; if (pValue->flags & V_IS_UNDEF) pEnum->value.flags |= V_IS_UNSAFE_UNDEF; } else { pEnum->value.iv = 0; pEnum->value.flags = V_IS_UNDEF; } CT_DEBUG(TYPE, ("type::enum_new( identifier=\"%s\", pValue=%p " "[iv=%ld, flags=0x%08lX] ) = %p", pEnum->identifier, pValue, pEnum->value.iv, (unsigned long) pEnum->value.flags, pEnum)); return pEnum; } /******************************************************************************* * * ROUTINE: enum_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Enumeration object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void enum_delete(Enumerator *pEnum) { CT_DEBUG(TYPE, ("type::enum_delete( pEnum=%p [identifier=\"%s\"] )", pEnum, pEnum ? pEnum->identifier : "")); if (pEnum) DELETE_OBJECT_IDENT(Enumerator, pEnum); } /******************************************************************************* * * ROUTINE: enum_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Enumeration object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Enumerator *enum_clone(const Enumerator *pSrc) { CLONE_OBJECT_IDENT(Enumerator, pDest, pSrc); CT_DEBUG(TYPE, ("type::enum_clone( pSrc=%p [identifier=\"%s\"] ) = %p", pSrc, pSrc ? pSrc->identifier : "", pDest)); return pDest; } /******************************************************************************* * * ROUTINE: enumspec_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Enumeration Specifier object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ EnumSpecifier *enumspec_new(const char *identifier, int id_len, LinkedList enumerators) { CONSTRUCT_OBJECT_IDENT(EnumSpecifier, pEnumSpec); pEnumSpec->ctype = TYP_ENUM; pEnumSpec->tflags = T_ENUM; pEnumSpec->refcount = 0; pEnumSpec->tags = NULL; if (enumerators == NULL) pEnumSpec->enumerators = NULL; else enumspec_update(pEnumSpec, enumerators); CT_DEBUG(TYPE, ("type::enumspec_new( identifier=\"%s\", enumerators=%p [count=%d] ) = %p", pEnumSpec->identifier, enumerators, LL_count( enumerators ), pEnumSpec)); return pEnumSpec; } /******************************************************************************* * * ROUTINE: enumspec_update * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Update an Enumeration Specifier object after all enumerators * have been added. This routine will update the sign and size * properties. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void enumspec_update(EnumSpecifier *pEnumSpec, LinkedList enumerators) { ListIterator ei; Enumerator *pEnum; long min, max; CT_DEBUG(TYPE, ("type::enumspec_update( pEnumSpec=%p [identifier=\"%s\"], enumerators=%p [count=%d] )", pEnumSpec, pEnumSpec->identifier, enumerators, LL_count( enumerators ))); pEnumSpec->tflags = 0; pEnumSpec->enumerators = enumerators; min = max = 0; LL_foreach(pEnum, ei, enumerators) { if (pEnum->value.iv > max) max = pEnum->value.iv; else if (pEnum->value.iv < min) min = pEnum->value.iv; if (IS_UNSAFE_VAL(pEnum->value)) pEnumSpec->tflags |= T_UNSAFE_VAL; } if (min < 0) { pEnumSpec->tflags |= T_SIGNED; if (min >= -128 && max < 128) { pEnumSpec->sizes[ES_SIGNED_SIZE] = 1U; pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 1U; } else if (min >= -32768 && max < 32768) { pEnumSpec->sizes[ES_SIGNED_SIZE] = 2U; pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 2U; } else { pEnumSpec->sizes[ES_SIGNED_SIZE] = 4U; pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 4U; } } else { pEnumSpec->tflags |= T_UNSIGNED; if (max < 256) pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 1U; else if (max < 65536) pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 2U; else pEnumSpec->sizes[ES_UNSIGNED_SIZE] = 4U; if (max < 128) pEnumSpec->sizes[ES_SIGNED_SIZE] = 1U; else if (max < 32768) pEnumSpec->sizes[ES_SIGNED_SIZE] = 2U; else pEnumSpec->sizes[ES_SIGNED_SIZE] = 4U; } } /******************************************************************************* * * ROUTINE: enumspec_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Enumeration Specifier object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void enumspec_delete(EnumSpecifier *pEnumSpec) { CT_DEBUG(TYPE, ("type::enumspec_delete( pEnumSpec=%p [identifier=\"%s\"] )", pEnumSpec, pEnumSpec ? pEnumSpec->identifier : "")); if (pEnumSpec) { LL_destroy(pEnumSpec->enumerators, (LLDestroyFunc) enum_delete); delete_taglist(&pEnumSpec->tags); DELETE_OBJECT_IDENT(EnumSpecifier, pEnumSpec); } } /******************************************************************************* * * ROUTINE: enumspec_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Enumeration Specifier object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ EnumSpecifier *enumspec_clone(const EnumSpecifier *pSrc) { CLONE_OBJECT_IDENT(EnumSpecifier, pDest, pSrc); CT_DEBUG(TYPE, ("type::enumspec_clone( pSrc=%p [identifier=\"%s\"] ) = %p", pSrc, pSrc ? pSrc->identifier : "", pDest)); pDest->enumerators = LL_clone(pSrc->enumerators, (LLCloneFunc) enum_clone); pDest->tags = clone_taglist(pSrc->tags); return pDest; } /******************************************************************************* * * ROUTINE: decl_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Declarator object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Declarator *decl_new(const char *identifier, int id_len) { CONSTRUCT_OBJECT_IDENT(Declarator, pDecl); pDecl->offset = -1; pDecl->size = -1; pDecl->item_size = -1; pDecl->tags = NULL; pDecl->ext.array = NULL; pDecl->ext.bitfield.size = 0; pDecl->ext.bitfield.bits = 0; pDecl->ext.bitfield.pos = 0; pDecl->pointer_flag = 0; pDecl->array_flag = 0; pDecl->bitfield_flag = 0; CT_DEBUG(TYPE, ("type::decl_new( identifier=\"%s\" ) = %p", pDecl->identifier, pDecl)); return pDecl; } /******************************************************************************* * * ROUTINE: decl_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Declarator object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void decl_delete(Declarator *pDecl) { CT_DEBUG(TYPE, ("type::decl_delete( pDecl=%p [identifier=\"%s\"] )", pDecl, pDecl ? pDecl->identifier : "")); if (pDecl) { if (pDecl->array_flag) LL_destroy(pDecl->ext.array, (LLDestroyFunc) value_delete); delete_taglist(&pDecl->tags); DELETE_OBJECT_IDENT(Declarator, pDecl); } } /******************************************************************************* * * ROUTINE: decl_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Declarator object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Declarator *decl_clone(const Declarator *pSrc) { CLONE_OBJECT_IDENT(Declarator, pDest, pSrc); CT_DEBUG(TYPE, ("type::decl_clone( pSrc=%p [identifier=\"%s\"] ) = %p", pSrc, pSrc ? pSrc->identifier : "", pDest)); if (pSrc->array_flag) pDest->ext.array = LL_clone(pSrc->ext.array, (LLCloneFunc) value_clone); pDest->tags = clone_taglist(pSrc->tags); return pDest; } /******************************************************************************* * * ROUTINE: structdecl_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Struct Declaration object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ StructDeclaration *structdecl_new(TypeSpec type, LinkedList declarators) { CONSTRUCT_OBJECT(StructDeclaration, pStructDecl); pStructDecl->type = type; pStructDecl->declarators = declarators; pStructDecl->offset = 0; pStructDecl->size = 0; CT_DEBUG(TYPE, ("type::structdecl_new( type=[tflags=0x%08lX,ptr=%p], " "declarators=%p [count=%d] ) = %p", (unsigned long) type.tflags, type.ptr, declarators, LL_count(declarators), pStructDecl)); return pStructDecl; } /******************************************************************************* * * ROUTINE: structdecl_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Struct Declaration object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void structdecl_delete(StructDeclaration *pStructDecl) { CT_DEBUG(TYPE, ("type::structdecl_delete( pStructDecl=%p )", pStructDecl)); if (pStructDecl) { LL_destroy(pStructDecl->declarators, (LLDestroyFunc) decl_delete); DELETE_OBJECT(StructDeclaration, pStructDecl); } } /******************************************************************************* * * ROUTINE: structdecl_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Struct Declaration object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ StructDeclaration *structdecl_clone(const StructDeclaration *pSrc) { CLONE_OBJECT(StructDeclaration, pDest, pSrc); CT_DEBUG(TYPE, ("type::structdecl_clone( pSrc=%p ) = %p", pSrc, pDest)); pDest->declarators = LL_clone(pSrc->declarators, (LLCloneFunc) decl_clone); return pDest; } /******************************************************************************* * * ROUTINE: struct_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Struct/Union object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Struct *struct_new(const char *identifier, int id_len, u_32 tflags, unsigned pack, LinkedList declarations) { CONSTRUCT_OBJECT_IDENT(Struct, pStruct); pStruct->ctype = TYP_STRUCT; pStruct->tflags = tflags; pStruct->refcount = 0; pStruct->align = 0; pStruct->size = 0; pStruct->pack = pack; pStruct->declarations = declarations; pStruct->tags = NULL; CT_DEBUG(TYPE, ("type::struct_new( identifier=\"%s\", tflags=0x%08lX, " "pack=%d, declarations=%p [count=%d] ) = %p", pStruct->identifier, (unsigned long) tflags, pack, declarations, LL_count(declarations), pStruct)); return pStruct; } /******************************************************************************* * * ROUTINE: struct_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Struct/Union object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void struct_delete(Struct *pStruct) { CT_DEBUG(TYPE, ("type::struct_delete( pStruct=%p )", pStruct)); if (pStruct) { LL_destroy(pStruct->declarations, (LLDestroyFunc) structdecl_delete); delete_taglist(&pStruct->tags); DELETE_OBJECT_IDENT(Struct, pStruct); } } /******************************************************************************* * * ROUTINE: struct_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Struct object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Struct *struct_clone(const Struct *pSrc) { CLONE_OBJECT_IDENT(Struct, pDest, pSrc); CT_DEBUG(TYPE, ("type::struct_clone( pSrc=%p [identifier=\"%s\"] ) = %p", pSrc, pSrc ? pSrc->identifier : "", pDest)); pDest->declarations = LL_clone(pSrc->declarations, (LLCloneFunc) structdecl_clone); pDest->tags = clone_taglist(pSrc->tags); return pDest; } /******************************************************************************* * * ROUTINE: typedef_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Typedef object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Typedef *typedef_new(TypeSpec *pType, Declarator *pDecl) { CONSTRUCT_OBJECT(Typedef, pTypedef); pTypedef->ctype = TYP_TYPEDEF; pTypedef->pType = pType; pTypedef->pDecl = pDecl; CT_DEBUG(TYPE, ("type::typedef_new( type=[tflags=0x%08lX,ptr=%p], " "pDecl=%p [identifier=\"%s\"] ) = %p", (unsigned long) pType->tflags, pType->ptr, pDecl, pDecl ? pDecl->identifier : "", pTypedef)); return pTypedef; } /******************************************************************************* * * ROUTINE: typedef_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Typedef object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void typedef_delete(Typedef *pTypedef) { CT_DEBUG(TYPE, ("type::typedef_delete( pTypedef=%p )", pTypedef)); if (pTypedef) { decl_delete(pTypedef->pDecl); DELETE_OBJECT(Typedef, pTypedef); } } /******************************************************************************* * * ROUTINE: typedef_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Typedef object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ Typedef *typedef_clone(const Typedef *pSrc) { CLONE_OBJECT(Typedef, pDest, pSrc); CT_DEBUG(TYPE, ("type::typedef_clone( pSrc=%p ) = %p", pSrc, pDest)); pDest->pDecl = decl_clone(pSrc->pDecl); return pDest; } /******************************************************************************* * * ROUTINE: typedef_list_new * * WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Typedef List object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ TypedefList *typedef_list_new(TypeSpec type, LinkedList typedefs) { CONSTRUCT_OBJECT(TypedefList, pTypedefList); pTypedefList->ctype = TYP_TYPEDEF_LIST; pTypedefList->type = type; pTypedefList->typedefs = typedefs; CT_DEBUG(TYPE, ("type::typedef_list_new( type=[tflags=0x%08lX,ptr=%p], typedefs=%p ) = %p", (unsigned long) type.tflags, type.ptr, typedefs, pTypedefList)); return pTypedefList; } /******************************************************************************* * * ROUTINE: typedef_list_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Typedef List object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void typedef_list_delete(TypedefList *pTypedefList) { CT_DEBUG(TYPE, ("type::typedef_list_delete( pTypedefList=%p )", pTypedefList)); if (pTypedefList) { LL_destroy(pTypedefList->typedefs, (LLDestroyFunc) typedef_delete); DELETE_OBJECT(TypedefList, pTypedefList); } } /******************************************************************************* * * ROUTINE: typedef_list_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone Typedef List object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ TypedefList *typedef_list_clone(const TypedefList *pSrc) { CLONE_OBJECT(TypedefList, pDest, pSrc); CT_DEBUG(TYPE, ("type::typedef_list_clone( pSrc=%p ) = %p", pSrc, pDest)); if (pSrc->typedefs) { ListIterator ti; Typedef *pTypedef; pDest->typedefs = LL_new(); LL_foreach(pTypedef, ti, pSrc->typedefs) { Typedef *pClone = typedef_clone(pTypedef); pClone->pType = &pDest->type; LL_push(pDest->typedefs, pClone); } } return pDest; } /******************************************************************************* * * ROUTINE: get_typedef_list * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Get typedef list object from a typedef object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ TypedefList *get_typedef_list(Typedef *pTypedef) { TypedefList *pTDL; CT_DEBUG(TYPE, ("type::get_typedef_list( pTypedef=%p )", pTypedef)); if (pTypedef == NULL || pTypedef->ctype != TYP_TYPEDEF || pTypedef->pType == NULL) return NULL; /* assume that pType points to type member of typedef list */ pTDL = (TypedefList *) (((u_8 *) pTypedef->pType) - offsetof(TypedefList, type)); if (pTDL->ctype != TYP_TYPEDEF_LIST) return NULL; return pTDL; } /******************************************************************************* * * ROUTINE: ctt_refcount_inc * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Increment reference count of structs / enums. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void ctt_refcount_inc(void *ptr) { if (ptr == NULL) return; switch (GET_CTYPE(ptr)) { case TYP_ENUM: if (((EnumSpecifier *) ptr)->refcount < ~((unsigned)0)) ((EnumSpecifier *) ptr)->refcount++; break; case TYP_STRUCT: if (((Struct *) ptr)->refcount < ~((unsigned)0)) ((Struct *) ptr)->refcount++; break; case TYP_TYPEDEF: case TYP_TYPEDEF_LIST: /* no refcounting */ break; default: fatal_error("invalid cttype (%d) passed to ctt_refcount_inc()", GET_CTYPE(ptr)); break; } } Convert-Binary-C-0.76/ctlib/cttype.h0000644000175000001440000002076111550664614015777 0ustar mhxusers/******************************************************************************* * * HEADER: cttype.h * ******************************************************************************** * * DESCRIPTION: ANSI C data type objects * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:19 +0200 $ * $Revision: 32 $ * $Source: /ctlib/cttype.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTTYPE_H #define _CTLIB_CTTYPE_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "arch.h" #include "cttags.h" #include "fileinfo.h" #include "util/list.h" /*===== DEFINES ==============================================================*/ /* value flags */ #define V_IS_UNDEF 0x00000001 #define V_IS_UNSAFE 0x08000000 #define V_IS_UNSAFE_UNDEF 0x10000000 #define V_IS_UNSAFE_CAST 0x20000000 #define V_IS_UNSAFE_PTROP 0x40000000 #define IS_UNSAFE_VAL( val ) ( (val).flags & ( V_IS_UNSAFE \ | V_IS_UNSAFE_UNDEF \ | V_IS_UNSAFE_CAST \ | V_IS_UNSAFE_PTROP ) ) /* type flags */ #define T_VOID 0x00000001 #define T_CHAR 0x00000002 #define T_SHORT 0x00000004 #define T_INT 0x00000008 #define T_LONG 0x00000010 #define T_FLOAT 0x00000020 #define T_DOUBLE 0x00000040 #define T_SIGNED 0x00000080 #define T_UNSIGNED 0x00000100 #define T_ENUM 0x00000200 #define T_STRUCT 0x00000400 #define T_UNION 0x00000800 #define T_COMPOUND (T_STRUCT | T_UNION) #define T_TYPE 0x00001000 #define T_TYPEDEF 0x00002000 #define T_LONGLONG 0x00004000 /* these flags are reserved for user defined purposes */ #define T_USER_FLAG_1 0x00100000 #define T_USER_FLAG_2 0x00200000 #define T_USER_FLAG_3 0x00400000 #define T_USER_FLAG_4 0x00800000 /* this flag indicates the usage of bitfields in structures as they're unsupported */ #define T_HASBITFIELD 0x40000000 /* this flag indicates the use of unsafe values (e.g. sizes of bitfields) */ #define T_UNSAFE_VAL 0x80000000 #define ANY_TYPE_NAME ( T_VOID | T_CHAR | T_SHORT | T_INT | T_LONG | T_FLOAT | T_DOUBLE \ | T_SIGNED | T_UNSIGNED | T_ENUM | T_STRUCT | T_UNION | T_TYPE ) /* get the type out of a pointer to EnumSpecifier / Struct / Typedef */ #define GET_CTYPE( ptr ) (*((CTType *) ptr)) #define IS_TYP_ENUM( ptr ) ( GET_CTYPE( ptr ) == TYP_ENUM ) #define IS_TYP_STRUCT( ptr ) ( GET_CTYPE( ptr ) == TYP_STRUCT ) #define IS_TYP_TYPEDEF( ptr ) ( GET_CTYPE( ptr ) == TYP_TYPEDEF ) #define IS_TYP_TYPEDEF_LIST( ptr ) ( GET_CTYPE( ptr ) == TYP_TYPEDEF_LIST ) #define CTT_IDLEN(ptr) ((ptr)->id_len < 255 ? (ptr)->id_len \ : 255 + strlen((ptr)->identifier + 255)) /*===== TYPEDEFS =============================================================*/ typedef enum { TYP_ENUM, TYP_STRUCT, TYP_TYPEDEF, TYP_TYPEDEF_LIST } CTType; enum { ES_UNSIGNED_SIZE, ES_SIGNED_SIZE, ES_NUM_ENUM_SIZES }; typedef struct { signed long iv; u_32 flags; } Value; typedef struct { FileInfo *pFI; unsigned long line; } ContextInfo; typedef struct { void *ptr; u_32 tflags; } TypeSpec; typedef struct { Value value; unsigned char id_len; char identifier[1]; } Enumerator; typedef struct { CTType ctype; u_32 tflags; unsigned refcount; unsigned sizes[ES_NUM_ENUM_SIZES]; ContextInfo context; LinkedList enumerators; CtTagList tags; unsigned char id_len; char identifier[1]; } EnumSpecifier; typedef struct { unsigned char size; /* size (in bytes), usually same as Declarator.size */ unsigned char bits; /* size (in bits) of the bitfield */ unsigned char pos; /* pos (in bits) of the bitfield (relative to LSB) */ } BitfieldInfo; typedef struct { signed offset : 29; unsigned pointer_flag : 1; unsigned array_flag : 1; unsigned bitfield_flag : 1; signed size, item_size; CtTagList tags; union { LinkedList array; BitfieldInfo bitfield; } ext; unsigned char id_len; char identifier[1]; } Declarator; typedef struct { int pointer_flag; int multiplicator; } AbstractDeclarator; typedef struct { TypeSpec type; LinkedList declarators; int offset, size; } StructDeclaration; typedef struct { CTType ctype; u_32 tflags; unsigned refcount; unsigned align : 16; unsigned pack : 16; unsigned size; ContextInfo context; LinkedList declarations; CtTagList tags; unsigned char id_len; char identifier[1]; } Struct; typedef struct { CTType ctype; TypeSpec *pType; Declarator *pDecl; } Typedef; typedef struct { CTType ctype; TypeSpec type; LinkedList typedefs; } TypedefList; /*===== FUNCTION PROTOTYPES ==================================================*/ #define value_new CTlib_value_new Value *value_new(signed long iv, u_32 flags); #define value_delete CTlib_value_delete void value_delete(Value *pValue); #define value_clone CTlib_value_clone Value *value_clone(const Value *pSrc); #define enum_new CTlib_enum_new Enumerator *enum_new(const char *identifier, int id_len, Value *pValue); #define enum_delete CTlib_enum_delete void enum_delete(Enumerator *pEnum); #define enum_clone CTlib_enum_clone Enumerator *enum_clone(const Enumerator *pSrc); #define enumspec_new CTlib_enumspec_new EnumSpecifier *enumspec_new(const char *identifier, int id_len, LinkedList enumerators); #define enumspec_update CTlib_enumspec_update void enumspec_update(EnumSpecifier *pEnumSpec, LinkedList enumerators); #define enumspec_delete CTlib_enumspec_delete void enumspec_delete(EnumSpecifier *pEnumSpec); #define enumspec_clone CTlib_enumspec_clone EnumSpecifier *enumspec_clone(const EnumSpecifier *pSrc); #define decl_new CTlib_decl_new Declarator *decl_new(const char *identifier, int id_len); #define decl_delete CTlib_decl_delete void decl_delete(Declarator *pDecl); #define decl_clone CTlib_decl_clone Declarator *decl_clone(const Declarator *pSrc); #define structdecl_new CTlib_structdecl_new StructDeclaration *structdecl_new(TypeSpec type, LinkedList declarators); #define structdecl_delete CTlib_structdecl_delete void structdecl_delete(StructDeclaration *pStructDecl); #define structdecl_clone CTlib_structdecl_clone StructDeclaration *structdecl_clone(const StructDeclaration *pSrc); #define struct_new CTlib_struct_new Struct *struct_new(const char *identifier, int id_len, u_32 tflags, unsigned pack, LinkedList declarations); #define struct_delete CTlib_struct_delete void struct_delete(Struct *pStruct); #define struct_clone CTlib_struct_clone Struct *struct_clone(const Struct *pSrc); #define typedef_new CTlib_typedef_new Typedef *typedef_new(TypeSpec *pType, Declarator *pDecl); #define typedef_delete CTlib_typedef_delete void typedef_delete(Typedef *pTypedef); #define typedef_clone CTlib_typedef_clone Typedef *typedef_clone(const Typedef *pSrc); #define typedef_list_new CTlib_typedef_list_new TypedefList *typedef_list_new(TypeSpec type, LinkedList typedefs); #define typedef_list_delete CTlib_typedef_list_delete void typedef_list_delete(TypedefList *pTypedefList); #define typedef_list_clone CTlib_typedef_list_clone TypedefList *typedef_list_clone(const TypedefList *pSrc); #define get_typedef_list CTlib_get_typedef_list TypedefList *get_typedef_list(Typedef *pTypedef); #define ctt_refcount_inc CTlib_ctt_refcount_inc void ctt_refcount_inc(void *ptr); #endif Convert-Binary-C-0.76/ctlib/parser.h0000644000175000001440000000370611550664615015764 0ustar mhxusers/******************************************************************************* * * HEADER: parser.h * ******************************************************************************** * * DESCRIPTION: C parser * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:19 +0200 $ * $Revision: 19 $ * $Source: /ctlib/parser.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_PARSER_H #define _CTLIB_PARSER_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctparse.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct _parserState ParserState; typedef struct { const int token; const char *name; } CKeywordToken; struct lexer_state; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_c_keyword_token CTlib_get_c_keyword_token const CKeywordToken *get_c_keyword_token( const char *name ); #define get_skip_token CTlib_get_skip_token const CKeywordToken *get_skip_token( void ); #define c_parser_new CTlib_c_parser_new ParserState *c_parser_new( const CParseConfig *pCPC, CParseInfo *pCPI, pUCPP_ struct lexer_state *pLexer ); #define c_parser_run CTlib_c_parser_run int c_parser_run( ParserState *pState ); #define c_parser_delete CTlib_c_parser_delete void c_parser_delete( ParserState *pState ); #endif Convert-Binary-C-0.76/ctlib/parser.y0000644000175000001440000020771511550664615016013 0ustar mhxusers%{ /******************************************************************************* * * MODULE: parser.y * ******************************************************************************** * * DESCRIPTION: C parser * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:20 +0200 $ * $Revision: 99 $ * $Source: /ctlib/parser.y $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * * Portions Copyright (c) 1989, 1990 James A. Roskind. * Also see the original copyright notice below. * *******************************************************************************/ /* Copyright (C) 1989,1990 James A. Roskind, All rights reserved. This grammar was developed and written by James A. Roskind. Copying of this grammar description, as a whole, is permitted providing this notice is intact and applicable in all complete copies. Translations as a whole to other parser generator input languages (or grammar description languages) is permitted provided that this notice is intact and applicable in all such copies, along with a disclaimer that the contents are a translation. The reproduction of derived text, such as modified versions of this grammar, or the output of parser generators, is permitted, provided the resulting work includes the copyright notice "Portions Copyright (c) 1989, 1990 James A. Roskind". Derived products, such as compilers, translators, browsers, etc., that use this grammar, must also provide the notice "Portions Copyright (c) 1989, 1990 James A. Roskind" in a manner appropriate to the utility, and in keeping with copyright law (e.g.: EITHER displayed when first invoked/executed; OR displayed continuously on display terminal; OR via placement in the object code in form readable in a printout, with or near the title of the work, or at the end of the file). No royalties, licenses or commissions of any kind are required to copy this grammar, its translations, or derivative products, when the copies are made in compliance with this notice. Persons or corporations that do make copies in compliance with this notice may charge whatever price is agreeable to a buyer, for such copies or derivative works. THIS GRAMMAR IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. James A. Roskind Independent Consultant 516 Latania Palm Drive Indialantic FL, 32903 (407)729-4348 jar@ileaf.com ACKNOWLEDGMENT: Without the effort expended by the ANSI C standardizing committee, I would have been lost. Although the ANSI C standard does not include a fully disambiguated syntax description, the committee has at least provided most of the disambiguating rules in narratives. Several reviewers have also recently critiqued this grammar, and/or assisted in discussions during it's preparation. These reviewers are certainly not responsible for the errors I have committed here, but they are responsible for allowing me to provide fewer errors. These colleagues include: Bruce Blodgett, and Mark Langley. */ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" #include "ctparse.h" #include "cterror.h" #include "fileinfo.h" #include "parser.h" #include "pragma.h" #include "util/ccattr.h" #include "util/list.h" #include "util/memalloc.h" #include "ucpp/cpp.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ /* ADDITIONAL BISON CONFIGURATION */ #define YYMAXDEPTH 10000 #define YYPARSE_PARAM pState #define YYLEX_PARAM pState /* * Bison version >= 1.31 is needed for YYFPRINTF */ #if YYDEBUG && defined CTLIB_DEBUGGING #define YYFPRINTF BisonDebugFunc #endif #define c_error(msg) parser_error(PSTATE, msg) #define c_parse CTlib_c_parse /* MACROS */ #define PSTATE ((ParserState *) pState) #define DELETE_NODE(node) \ do { \ if (node != NULL) \ HN_delete(node); \ } while (0) #define POSTFIX_DECL(decl, postfix) \ do { \ if (postfix) \ { \ if (decl->pointer_flag) \ LL_destroy(postfix, (LLDestroyFunc) value_delete); \ else \ { \ if (decl->array_flag) \ LL_delete(LL_splice(decl->ext.array, 0, 0, postfix)); \ else \ { \ decl->array_flag = 1; \ decl->ext.array = postfix; \ } \ } \ } \ } while (0) #define MAKE_TYPEDEF(list, decl) \ do { \ Typedef *pTypedef = typedef_new(&(list->type), decl); \ CT_DEBUG(PARSER, ("making new typedef => %s (list @ %p)", \ decl->identifier, list)); \ LL_push(list->typedefs, pTypedef); \ HT_store(PSTATE->pCPI->htTypedefs, decl->identifier, 0, 0, pTypedef);\ } while (0) #define UNDEF_VAL(x) do { x.iv = 0; x.flags = V_IS_UNDEF; } while (0) #define UNARY_OP(result, op, val) \ do { result.iv = op val.iv; result.flags = val.flags; } while (0) #define BINARY_OP(result, val1, op, val2) \ do { \ result.iv = val1.iv op val2.iv; \ result.flags = val1.flags | val2.flags; \ } while (0) #define LLC_OR(t1, t2) \ ( \ ((t1) & T_LONG) && ((t2) & T_LONG) \ ? (t1) | (t2) | T_LONGLONG : (t1) | (t2) \ ) #define F_LOCAL 0x00000001U #define BEGIN_LOCAL (PSTATE->flags |= F_LOCAL) #define END_LOCAL (PSTATE->flags &= ~F_LOCAL) #define IS_LOCAL (PSTATE->flags & F_LOCAL) /*===== TYPEDEFS =============================================================*/ struct _parserState { const CParseConfig *pCPC; CParseInfo *pCPI; PragmaState *pragma; struct CPP *pp; struct lexer_state *pLexer; FileInfo *pFI; u_32 flags; }; %} /*===== YACC PARSER DEFINITION ================================================*/ /* This refined grammar resolves several typedef ambiguities in the draft proposed ANSI C standard syntax down to 1 shift/reduce conflict, as reported by a YACC process. Note that the one shift reduce conflicts is the traditional if-if-else conflict that is not resolved by the grammar. This ambiguity can be removed using the method described in the Dragon Book (2nd edition), but this does not appear worth the effort. There was quite a bit of effort made to reduce the conflicts to this level, and an additional effort was made to make the grammar quite similar to the C++ grammar being developed in parallel. Note that this grammar resolves the following ANSI C ambiguity as follows: ANSI C section 3.5.6, "If the [typedef name] is redeclared at an inner scope, the type specifiers shall not be omitted in the inner declaration". Supplying type specifiers prevents consideration of T as a typedef name in this grammar. Failure to supply type specifiers forced the use of the TYPEDEFname as a type specifier. ANSI C section 3.5.4.3, "In a parameter declaration, a single typedef name in parentheses is taken to be an abstract declarator that specifies a function with a single parameter, not as redundant parentheses around the identifier". This is extended to cover the following cases: typedef float T; int noo(const (T[5])); int moo(const (T(int))); ... Where again the '(' immediately to the left of 'T' is interpreted as being the start of a parameter type list, and not as a redundant paren around a redeclaration of T. Hence an equivalent code fragment is: typedef float T; int noo(const int identifier1 (T identifier2 [5])); int moo(const int identifier1 (T identifier2 (int identifier3))); ... */ %union { HashNode identifier; Declarator *pDecl; AbstractDeclarator absDecl; StructDeclaration *pStructDecl; TypedefList *pTypedefList; LinkedList list; Enumerator *pEnum; Typedef *pTypedef; TypeSpec tspec; Value value; struct { u_32 uval; ContextInfo ctx; } context; u_32 uval; char oper; } %{ /*===== STATIC VARIABLES =====================================================*/ /* TOKEN MAPPING TABLE */ static const int tokentab[] = { 0, /* NONE, */ /* whitespace */ 0, /* NEWLINE, */ /* newline */ 0, /* COMMENT, */ /* comment */ 0, /* NUMBER, */ /* number constant */ 0, /* NAME, */ /* identifier */ 0, /* BUNCH, */ /* non-C characters */ 0, /* PRAGMA, */ /* a #pragma directive */ 0, /* CONTEXT, */ /* new file or #line */ 0, /* STRING, */ /* constant "xxx" */ CONSTANT, /* CHAR, */ /* constant 'xxx' */ '/', /* SLASH, */ /* / */ DIV_ASSIGN, /* ASSLASH, */ /* /= */ '-', /* MINUS, */ /* - */ DEC_OP, /* MMINUS, */ /* -- */ SUB_ASSIGN, /* ASMINUS, */ /* -= */ PTR_OP, /* ARROW, */ /* -> */ '+', /* PLUS, */ /* + */ INC_OP, /* PPLUS, */ /* ++ */ ADD_ASSIGN, /* ASPLUS, */ /* += */ '<', /* LT, */ /* < */ LE_OP, /* LEQ, */ /* <= */ LEFT_OP, /* LSH, */ /* << */ LEFT_ASSIGN, /* ASLSH, */ /* <<= */ '>', /* GT, */ /* > */ GE_OP, /* GEQ, */ /* >= */ RIGHT_OP, /* RSH, */ /* >> */ RIGHT_ASSIGN, /* ASRSH, */ /* >>= */ '=', /* ASGN, */ /* = */ EQ_OP, /* SAME, */ /* == */ #ifdef CAST_OP 0, /* CAST, */ /* => */ #endif '~', /* NOT, */ /* ~ */ NE_OP, /* NEQ, */ /* != */ '&', /* AND, */ /* & */ AND_OP, /* LAND, */ /* && */ AND_ASSIGN, /* ASAND, */ /* &= */ '|', /* OR, */ /* | */ OR_OP, /* LOR, */ /* || */ OR_ASSIGN, /* ASOR, */ /* |= */ '%', /* PCT, */ /* % */ MOD_ASSIGN, /* ASPCT, */ /* %= */ '*', /* STAR, */ /* * */ MUL_ASSIGN, /* ASSTAR, */ /* *= */ '^', /* CIRC, */ /* ^ */ XOR_ASSIGN, /* ASCIRC, */ /* ^= */ '!', /* LNOT, */ /* ! */ '{', /* LBRA, */ /* { */ '}', /* RBRA, */ /* } */ '[', /* LBRK, */ /* [ */ ']', /* RBRK, */ /* ] */ '(', /* LPAR, */ /* ( */ ')', /* RPAR, */ /* ) */ ',', /* COMMA, */ /* , */ '?', /* QUEST, */ /* ? */ ';', /* SEMIC, */ /* ; */ ':', /* COLON, */ /* : */ '.', /* DOT, */ /* . */ ELLIPSIS, /* MDOTS, */ /* ... */ 0, /* SHARP, */ /* # */ 0, /* DSHARP, */ /* ## */ 0, /* OPT_NONE, */ /* optional space to separate tokens in text output */ 0, /* DIGRAPH_TOKENS, */ /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ '[', /* DIG_LBRK, */ /* <: */ ']', /* DIG_RBRK, */ /* :> */ '{', /* DIG_LBRA, */ /* <% */ '}', /* DIG_RBRA, */ /* %> */ 0, /* DIG_SHARP, */ /* %: */ 0, /* DIG_DSHARP, */ /* %:%: */ 0, /* DIGRAPH_TOKENS_END, */ /* digraph tokens end here */ 0, /* LAST_MEANINGFUL_TOKEN, */ /* reserved words will go there */ 0, /* MACROARG, */ /* special token for representing macro arguments */ 0, /* UPLUS = CPPERR, */ /* unary + */ 0, /* UMINUS */ /* unary - */ }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static inline int c_lex(YYSTYPE *plval, ParserState *pState); static inline int get_char_value(const char *s); static inline int string_size(const char *s); static inline int check_type(YYSTYPE *plval, ParserState *pState, const char *s); static void parser_error(ParserState *pState, const char *msg); %} /* Define terminal tokens */ /* keywords */ %token AUTO_TOK DOUBLE_TOK INT_TOK STRUCT_TOK %token BREAK_TOK ELSE_TOK LONG_TOK SWITCH_TOK %token CASE_TOK ENUM_TOK REGISTER_TOK TYPEDEF_TOK %token CHAR_TOK EXTERN_TOK RETURN_TOK UNION_TOK %token CONST_TOK FLOAT_TOK SHORT_TOK UNSIGNED_TOK %token CONTINUE_TOK FOR_TOK SIGNED_TOK VOID_TOK %token DEFAULT_TOK GOTO_TOK SIZEOF_TOK VOLATILE_TOK %token DO_TOK IF_TOK STATIC_TOK WHILE_TOK /* keywords new in ANSI-C99 */ %token INLINE_TOK RESTRICT_TOK /* special tokens */ %token ASM_TOK %token SKIP_TOK /* Multi-Character operators */ %token PTR_OP /* -> */ %token INC_OP DEC_OP /* ++ -- */ %token LEFT_OP RIGHT_OP /* << >> */ %token LE_OP GE_OP EQ_OP NE_OP /* <= >= == != */ %token AND_OP OR_OP /* && || */ %token ELLIPSIS /* ... */ /* modifying assignment operators */ %token MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN /* *= /= %= */ %token ADD_ASSIGN SUB_ASSIGN /* += -= */ %token LEFT_ASSIGN RIGHT_ASSIGN /* <<= >>= */ %token AND_ASSIGN XOR_ASSIGN OR_ASSIGN /* &= ^= |= */ /* ANSI Grammar suggestions */ %token STRING_LITERAL %token CONSTANT /* New Lexical element, whereas ANSI suggested non-terminal */ %token TYPE_NAME /* Lexer will tell the difference between this and an identifier! An identifier that is CURRENTLY in scope as a typedef name is provided to the parser as a TYPE_NAME.*/ %token IDENTIFIER %type identifier_or_typedef_name %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting node @ %p", $$)); HN_delete($$); } } IDENTIFIER identifier_or_typedef_name %printer { if ($$) fprintf(yyoutput, "'%s' len=%d, hash=0x%lx", $$->key, $$->keylen, (unsigned long)$$->hash); else fprintf(yyoutput, "NULL"); } IDENTIFIER identifier_or_typedef_name %type unary_operator %type enumerator %type abstract_declarator unary_abstract_declarator postfix_abstract_declarator %type declaring_list default_declaring_list %type declaration_specifier sue_declaration_specifier typedef_declaration_specifier elaborated_type_name su_type_specifier sut_type_specifier sue_type_specifier enum_type_specifier typedef_type_specifier aggregate_name enum_name type_specifier %type member_declaration member_declaring_list unnamed_su_declaration %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting struct declaration @ %p", $$)); structdecl_delete($$); } } member_declaration member_declaring_list unnamed_su_declaration %type identifier_declarator declarator member_declarator parameter_typedef_declarator typedef_declarator paren_typedef_declarator clean_typedef_declarator clean_postfix_typedef_declarator paren_postfix_typedef_declarator simple_paren_typedef_declarator unary_identifier_declarator paren_identifier_declarator postfix_identifier_declarator %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting declarator @ %p", $$)); decl_delete($$); } } identifier_declarator declarator member_declarator parameter_typedef_declarator typedef_declarator paren_typedef_declarator clean_typedef_declarator clean_postfix_typedef_declarator paren_postfix_typedef_declarator simple_paren_typedef_declarator unary_identifier_declarator paren_identifier_declarator postfix_identifier_declarator %printer { if ($$) { if ($$->bitfield_flag) fprintf(yyoutput, "%s:%d", $$->identifier, $$->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", $$->pointer_flag ? "*" : "", $$->identifier); if ($$->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, $$->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); } identifier_declarator declarator member_declarator parameter_typedef_declarator typedef_declarator paren_typedef_declarator clean_typedef_declarator clean_postfix_typedef_declarator paren_postfix_typedef_declarator simple_paren_typedef_declarator unary_identifier_declarator paren_identifier_declarator postfix_identifier_declarator %type enumerator_list postfixing_abstract_declarator array_abstract_declarator member_declaration_list member_declaration_list_opt %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting enumerator list @ %p", $$)); LL_destroy($$, (LLDestroyFunc) enum_delete); } } enumerator_list %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting array list @ %p", $$)); LL_destroy($$, (LLDestroyFunc) value_delete); } } array_abstract_declarator postfixing_abstract_declarator %destructor { if ($$) { CT_DEBUG(PARSER, ("deleting struct declaration list @ %p", $$)); LL_destroy($$, (LLDestroyFunc) structdecl_delete); } } member_declaration_list member_declaration_list_opt %type basic_declaration_specifier declaration_qualifier_list basic_type_specifier storage_class basic_type_name declaration_qualifier aggregate_key %type aggregate_key_context enum_key_context %type string_literal_list primary_expression postfix_expression unary_expression cast_expression multiplicative_expression additive_expression shift_expression relational_expression equality_expression AND_expression exclusive_OR_expression inclusive_OR_expression logical_AND_expression logical_OR_expression conditional_expression assignment_expression assignment_expression_opt comma_expression constant_expression type_name bit_field_size bit_field_size_opt /*************************************************************************/ %expect 1 %pure-parser %error-verbose %start source_file /*************************************************************************/ %% string_literal_list : STRING_LITERAL | string_literal_list STRING_LITERAL { BINARY_OP($$, $1, +, $2); } ; /********************* ASSEMBLER DIRECTIVES ***************************/ asm_string : ASM_TOK '(' string_literal_list ')' ; asm_string_opt : /* nothing */ | asm_string ; asm_expr : ASM_TOK '(' comma_expression ')' ';' ; asm_statement : ASM_TOK type_qualifier_list_opt '(' comma_expression ')' ';' | ASM_TOK type_qualifier_list_opt '(' comma_expression ':' asm_operands_opt ')' ';' | ASM_TOK type_qualifier_list_opt '(' comma_expression ':' asm_operands_opt ':' asm_operands_opt ')' ';' | ASM_TOK type_qualifier_list_opt '(' comma_expression ':' asm_operands_opt ':' asm_operands_opt ':' asm_clobbers ')' ';' ; asm_operands_opt : /* nothing */ | asm_operands ; asm_operands : asm_operand | asm_operands ',' asm_operand ; asm_operand : STRING_LITERAL '(' comma_expression ')' | '[' IDENTIFIER ']' STRING_LITERAL '(' comma_expression ')' { if ($2) HN_delete($2); } ; asm_clobbers : string_literal_list | asm_clobbers ',' string_literal_list ; /************************* EXPRESSIONS ********************************/ primary_expression : IDENTIFIER /* We cannot use a typedef name as a variable */ { UNDEF_VAL($$); if ($1) { Enumerator *pEnum = HT_get(PSTATE->pCPI->htEnumerators, $1->key, $1->keylen, $1->hash); if (pEnum) { CT_DEBUG(CLEXER, ("enum found!")); $$ = pEnum->value; } HN_delete($1); } } | CONSTANT | string_literal_list { $$ = $1; $$.iv++; } | '(' comma_expression ')' { $$ = $2; } ; /* * We don't have to deal with postfix expressions currently, since a primary * expression (which the postfix expression is based on) cannot be a type, * but only a variable. And we don't support sizeof(variable) at the moment, * since all variables are discarded. */ postfix_expression : primary_expression | postfix_expression '[' comma_expression ']' { UNDEF_VAL($$); } | postfix_expression '(' ')' { UNDEF_VAL($$); } | postfix_expression '(' argument_expression_list ')' { UNDEF_VAL($$); } | postfix_expression {} '.' member_name { UNDEF_VAL($$); } | postfix_expression {} PTR_OP member_name { UNDEF_VAL($$); } | postfix_expression INC_OP { UNDEF_VAL($$); } | postfix_expression DEC_OP { UNDEF_VAL($$); } | '(' type_name ')' '{' initializer_list comma_opt '}' { UNDEF_VAL($$); } /* ANSI-C99 addition */ ; member_name : IDENTIFIER { if($1) HN_delete($1); } | TYPE_NAME {} ; argument_expression_list : assignment_expression {} | argument_expression_list ',' assignment_expression {} ; unary_expression : postfix_expression | INC_OP unary_expression { UNDEF_VAL($$); } | DEC_OP unary_expression { UNDEF_VAL($$); } | unary_operator cast_expression { switch( $1 ) { case '-' : UNARY_OP($$, -, $2); break; case '~' : UNARY_OP($$, ~, $2); break; case '!' : UNARY_OP($$, !, $2); break; case '+' : $$ = $2; break; case '*' : case '&' : $$ = $2; $$.flags |= V_IS_UNSAFE_PTROP; break; default: UNDEF_VAL($$); break; } } | SIZEOF_TOK unary_expression { $$ = $2; } | SIZEOF_TOK '(' type_name ')' { $$ = $3; } ; unary_operator : '&' { $$ = '&'; } | '*' { $$ = '*'; } | '+' { $$ = '+'; } | '-' { $$ = '-'; } | '~' { $$ = '~'; } | '!' { $$ = '!'; } ; cast_expression : unary_expression | '(' type_name ')' cast_expression { $$ = $4; $$.flags |= V_IS_UNSAFE_CAST; } ; multiplicative_expression : cast_expression | multiplicative_expression '*' cast_expression { BINARY_OP( $$, $1, *, $3 ); } | multiplicative_expression '/' cast_expression { if ($3.iv == 0) UNDEF_VAL($$); else BINARY_OP($$, $1, /, $3); } | multiplicative_expression '%' cast_expression { if ($3.iv == 0) UNDEF_VAL($$); else BINARY_OP($$, $1, %, $3); } ; additive_expression : multiplicative_expression | additive_expression '+' multiplicative_expression { BINARY_OP($$, $1, +, $3); } | additive_expression '-' multiplicative_expression { BINARY_OP($$, $1, -, $3); } ; shift_expression : additive_expression | shift_expression LEFT_OP additive_expression { BINARY_OP($$, $1, <<, $3); } | shift_expression RIGHT_OP additive_expression { BINARY_OP($$, $1, >>, $3); } ; relational_expression : shift_expression | relational_expression '<' shift_expression { BINARY_OP($$, $1, <, $3); } | relational_expression '>' shift_expression { BINARY_OP($$, $1, >, $3); } | relational_expression LE_OP shift_expression { BINARY_OP($$, $1, <=, $3); } | relational_expression GE_OP shift_expression { BINARY_OP($$, $1, >=, $3); } ; equality_expression : relational_expression | equality_expression EQ_OP relational_expression { BINARY_OP($$, $1, ==, $3); } | equality_expression NE_OP relational_expression { BINARY_OP($$, $1, !=, $3); } ; AND_expression : equality_expression | AND_expression '&' equality_expression { BINARY_OP($$, $1, &, $3); } ; exclusive_OR_expression : AND_expression | exclusive_OR_expression '^' AND_expression { BINARY_OP($$, $1, ^, $3); } ; inclusive_OR_expression : exclusive_OR_expression | inclusive_OR_expression '|' exclusive_OR_expression { BINARY_OP($$, $1, |, $3); } ; logical_AND_expression : inclusive_OR_expression | logical_AND_expression AND_OP inclusive_OR_expression { BINARY_OP($$, $1, &&, $3); } ; logical_OR_expression : logical_AND_expression | logical_OR_expression OR_OP logical_AND_expression { BINARY_OP($$, $1, ||, $3); } ; conditional_expression : logical_OR_expression | logical_OR_expression '?' comma_expression ':' conditional_expression { $$ = $1.iv ? $3 : $5; $$.flags |= $1.flags; } ; assignment_expression : conditional_expression | unary_expression assignment_operator assignment_expression { UNDEF_VAL($$); } ; assignment_operator : '=' {} | MUL_ASSIGN {} | DIV_ASSIGN {} | MOD_ASSIGN {} | ADD_ASSIGN {} | SUB_ASSIGN {} | LEFT_ASSIGN {} | RIGHT_ASSIGN {} | AND_ASSIGN {} | XOR_ASSIGN {} | OR_ASSIGN {} ; assignment_expression_opt : /* nothing */ { UNDEF_VAL($$); } | assignment_expression comma_expression : assignment_expression | comma_expression ',' assignment_expression { $$ = $3; } ; constant_expression : conditional_expression ; /* The following was used for clarity */ comma_expression_opt : /* Nothing */ | comma_expression {} ; /******************************* DECLARATIONS *********************************/ /* The following is different from the ANSI C specified grammar. The changes were made to disambiguate typedef's presence in declaration_specifiers (vs. in the declarator for redefinition); to allow struct/union/enum tag declarations without declarators, and to better reflect the parsing of declarations (declarators must be combined with declaration_specifiers ASAP so that they are visible in scope). Example of typedef use as either a declaration_specifier or a declarator: typedef int T; struct S { T T;}; / * redefinition of T as member name * / Example of legal and illegal statements detected by this grammar: int; / * syntax error: vacuous declaration * / struct S; / * no error: tag is defined or elaborated * / Example of result of proper declaration binding: int a=sizeof(a); / * note that "a" is declared with a type in the name space BEFORE parsing the initializer * / int b, c[sizeof(b)]; / * Note that the first declarator "b" is declared with a type BEFORE the second declarator is parsed * / */ declaration : sue_declaration_specifier ';' {} | sue_type_specifier ';' {} | declaring_list ';' {} | default_declaring_list ';' {} ; /* Note that if a typedef were redeclared, then a declaration specifier must be supplied */ default_declaring_list /* Can't redeclare typedef names */ : declaration_qualifier_list identifier_declarator asm_string_opt initializer_opt { if (IS_LOCAL) $$ = NULL; else { if ($1 & T_TYPEDEF) { TypeSpec ts; ts.tflags = $1; ts.ptr = NULL; if ((ts.tflags & ANY_TYPE_NAME) == 0) ts.tflags |= T_INT; $$ = typedef_list_new(ts, LL_new()); LL_push(PSTATE->pCPI->typedef_lists, $$); MAKE_TYPEDEF($$, $2); } else { $$ = NULL; decl_delete($2); } } } | type_qualifier_list identifier_declarator asm_string_opt initializer_opt { $$ = NULL; if ($2) decl_delete($2); } | default_declaring_list ',' identifier_declarator asm_string_opt initializer_opt { $$ = $1; if ($$) MAKE_TYPEDEF($$, $3); else if($3) decl_delete($3); } ; declaring_list : declaration_specifier declarator asm_string_opt initializer_opt { if (IS_LOCAL) $$ = NULL; else { if ($1.tflags & T_TYPEDEF) { if (($1.tflags & ANY_TYPE_NAME) == 0) $1.tflags |= T_INT; ctt_refcount_inc($1.ptr); $$ = typedef_list_new($1, LL_new()); LL_push(PSTATE->pCPI->typedef_lists, $$); MAKE_TYPEDEF($$, $2); } else { $$ = NULL; decl_delete($2); } } } | type_specifier declarator asm_string_opt initializer_opt { $$ = NULL; if ($2) decl_delete($2); } | declaring_list ',' declarator asm_string_opt initializer_opt { $$ = $1; if ($$) MAKE_TYPEDEF($$, $3); else if ($3) decl_delete($3); } ; /* those are all potential typedefs */ declaration_specifier : basic_declaration_specifier /* Arithmetic or void */ { $$.ptr = NULL; $$.tflags = $1; } | sue_declaration_specifier /* struct/union/enum */ | typedef_declaration_specifier /* typedef*/ ; /* those can't be typedefs */ type_specifier : basic_type_specifier /* Arithmetic or void */ { $$.ptr = NULL; $$.tflags = $1; } | sue_type_specifier /* Struct/Union/Enum */ | typedef_type_specifier /* Typedef */ ; /* those are all potential typedefs */ declaration_qualifier_list /* const/volatile, AND storage class */ : storage_class | type_qualifier_list storage_class { $$ = $2; } | declaration_qualifier_list declaration_qualifier { $$ = $1 | $2; } ; type_qualifier_list : type_qualifier | type_qualifier_list type_qualifier ; type_qualifier_list_opt : /* nothing */ | type_qualifier_list ; declaration_qualifier : storage_class | type_qualifier { $$ = 0; } /* const or volatile */ ; type_qualifier : CONST_TOK | RESTRICT_TOK | VOLATILE_TOK ; basic_declaration_specifier /* Storage Class+Arithmetic or void */ : declaration_qualifier_list basic_type_name { $$ = LLC_OR($1, $2); } | basic_type_specifier storage_class { $$ = LLC_OR($1, $2); } | basic_declaration_specifier declaration_qualifier { $$ = LLC_OR($1, $2); } | basic_declaration_specifier basic_type_name { $$ = LLC_OR($1, $2); } ; basic_type_specifier /* Arithmetic or void */ : basic_type_name | type_qualifier_list basic_type_name { $$ = $2; } | basic_type_specifier type_qualifier { $$ = $1; } | basic_type_specifier basic_type_name { $$ = LLC_OR($1, $2); } ; sue_declaration_specifier /* Storage Class + struct/union/enum */ : declaration_qualifier_list elaborated_type_name { $$.ptr = $2.ptr; $$.tflags = $2.tflags | $1; } | sue_type_specifier storage_class { $$.ptr = $1.ptr; $$.tflags = $1.tflags | $2; } | sue_declaration_specifier declaration_qualifier { $$.ptr = $1.ptr; $$.tflags = $1.tflags | $2; } ; sue_type_specifier /* struct/union/enum */ : su_type_specifier | enum_type_specifier ; enum_type_specifier /* enum */ : enum_name | type_qualifier_list enum_name { $$ = $2; } /* we don't care about */ | enum_type_specifier type_qualifier { $$ = $1; } /* type qualifiers */ ; su_type_specifier /* struct/union */ : aggregate_name | type_qualifier_list aggregate_name { $$ = $2; } /* we don't care about */ | su_type_specifier type_qualifier { $$ = $1; } /* type qualifiers */ ; sut_type_specifier /* struct/union/typedef */ : su_type_specifier | typedef_type_specifier typedef_declaration_specifier /* Storage Class + typedef types */ : typedef_type_specifier storage_class { $$.ptr = $1.ptr; $$.tflags = $1.tflags | $2; } | declaration_qualifier_list TYPE_NAME { $$.ptr = $2; $$.tflags = T_TYPE | $1; } | typedef_declaration_specifier declaration_qualifier { $$.ptr = $1.ptr; $$.tflags = $1.tflags | $2; } ; typedef_type_specifier /* typedef types */ : TYPE_NAME { $$.ptr = $1; $$.tflags = T_TYPE; } | type_qualifier_list TYPE_NAME { $$.ptr = $2; $$.tflags = T_TYPE; } /* we don't care about */ | typedef_type_specifier type_qualifier { $$ = $1; } /* type qualifiers */ ; storage_class : TYPEDEF_TOK { $$ = T_TYPEDEF; } | EXTERN_TOK { $$ = 0; } | STATIC_TOK { $$ = 0; } | AUTO_TOK { $$ = 0; } /* don't care about anything but typedefs */ | REGISTER_TOK { $$ = 0; } | INLINE_TOK { $$ = 0; } /* ANSI-C99 */ ; basic_type_name : INT_TOK { $$ = T_INT; } | CHAR_TOK { $$ = T_CHAR; } | SHORT_TOK { $$ = T_SHORT; } | LONG_TOK { $$ = T_LONG; } | FLOAT_TOK { $$ = T_FLOAT; } | DOUBLE_TOK { $$ = T_DOUBLE; } | SIGNED_TOK { $$ = T_SIGNED; } | UNSIGNED_TOK { $$ = T_UNSIGNED; } | VOID_TOK { $$ = T_VOID; } ; elaborated_type_name : aggregate_name | enum_name ; aggregate_name : aggregate_key_context '{' member_declaration_list_opt '}' { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; } else { Struct *pStruct; pStruct = struct_new(NULL, 0, $1.uval, pragma_parser_get_pack(PSTATE->pragma), $3); pStruct->context = $1.ctx; LL_push(PSTATE->pCPI->structs, pStruct); $$.tflags = $1.uval; $$.ptr = pStruct; } } | aggregate_key_context identifier_or_typedef_name '{' member_declaration_list_opt '}' { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { Struct *pStruct = HT_get(PSTATE->pCPI->htStructs, $2->key, $2->keylen, $2->hash); if (pStruct == NULL) { pStruct = struct_new($2->key, $2->keylen, $1.uval, pragma_parser_get_pack(PSTATE->pragma), $4); pStruct->context = $1.ctx; LL_push(PSTATE->pCPI->structs, pStruct); HT_storenode(PSTATE->pCPI->htStructs, $2, pStruct); } else { DELETE_NODE($2); if (pStruct->declarations == NULL) { pStruct->context = $1.ctx; pStruct->declarations = $4; pStruct->pack = pragma_parser_get_pack(PSTATE->pragma); } else LL_destroy($4, (LLDestroyFunc) structdecl_delete); } $$.tflags = $1.uval; $$.ptr = pStruct; } } | aggregate_key_context identifier_or_typedef_name { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { Struct *pStruct = HT_get(PSTATE->pCPI->htStructs, $2->key, $2->keylen, $2->hash); if (pStruct == NULL) { pStruct = struct_new($2->key, $2->keylen, $1.uval, 0, NULL); pStruct->context = $1.ctx; LL_push(PSTATE->pCPI->structs, pStruct); HT_storenode(PSTATE->pCPI->htStructs, $2, pStruct); } else DELETE_NODE($2); $$.tflags = $1.uval; $$.ptr = pStruct; } } ; aggregate_key_context : aggregate_key { $$.uval = $1; $$.ctx.pFI = PSTATE->pFI; $$.ctx.line = PSTATE->pLexer->ctok->line; } ; aggregate_key : STRUCT_TOK { $$ = T_STRUCT; } | UNION_TOK { $$ = T_UNION; } ; member_declaration_list_opt : /* nothing */ { $$ = IS_LOCAL ? NULL : LL_new(); } | member_declaration_list ; member_declaration_list : member_declaration { if (IS_LOCAL) $$ = NULL; else { ctt_refcount_inc($1->type.ptr); $$ = LL_new(); LL_push($$, $1); } } | member_declaration_list member_declaration { if (IS_LOCAL) $$ = NULL; else { ctt_refcount_inc($2->type.ptr); $$ = $1; LL_push($$, $2); } } ; member_declaration : member_declaring_list ';' | unnamed_su_declaration ';' ; unnamed_su_declaration : sut_type_specifier { $$ = IS_LOCAL ? NULL : structdecl_new($1, NULL); } ; member_declaring_list : type_specifier member_declarator { if (IS_LOCAL) $$ = NULL; else { if (($1.tflags & ANY_TYPE_NAME) == 0) $1.tflags |= T_INT; $$ = structdecl_new($1, LL_new()); if ($2) LL_push($$->declarators, $2); } } | member_declaring_list ',' member_declarator { if (IS_LOCAL) $$ = NULL; else { $$ = $1; if ($3) LL_push($$->declarators, $3); } } ; member_declarator : declarator bit_field_size_opt { if (IS_LOCAL) $$ = NULL; else { $$ = $1; if (($2.flags & V_IS_UNDEF) == 0) { if ($2.iv <= 0) { char *msg; AllocF(char *, msg, 80 + CTT_IDLEN($1)); sprintf(msg, "%s width for bit-field '%s'", $2.iv < 0 ? "negative" : "zero", $1->identifier); decl_delete($1); yyerror(msg); Free(msg); YYERROR; } $$->bitfield_flag = 1; $$->ext.bitfield.bits = (unsigned char) $2.iv; } } } | bit_field_size { if (IS_LOCAL) $$ = NULL; else { if ($1.iv < 0) { yyerror("negative width for bit-field"); YYERROR; } $$ = decl_new("", 0); $$->bitfield_flag = 1; $$->ext.bitfield.bits = (unsigned char) $1.iv; } } ; bit_field_size_opt : /* nothing */ { UNDEF_VAL($$); } | bit_field_size ; bit_field_size : ':' constant_expression { $$ = $2; } ; enum_name : enum_key_context '{' enumerator_list comma_opt '}' { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; LL_destroy($3, (LLDestroyFunc) enum_delete); } else { EnumSpecifier *pEnum = enumspec_new(NULL, 0, $3); pEnum->context = $1.ctx; LL_push(PSTATE->pCPI->enums, pEnum); $$.tflags = T_ENUM; $$.ptr = pEnum; } } | enum_key_context identifier_or_typedef_name '{' enumerator_list comma_opt '}' { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { EnumSpecifier *pEnum = HT_get(PSTATE->pCPI->htEnums, $2->key, $2->keylen, $2->hash); if (pEnum == NULL) { pEnum = enumspec_new($2->key, $2->keylen, $4); pEnum->context = $1.ctx; LL_push(PSTATE->pCPI->enums, pEnum); HT_storenode(PSTATE->pCPI->htEnums, $2, pEnum); } else { DELETE_NODE($2); if (pEnum->enumerators == NULL) { enumspec_update(pEnum, $4); pEnum->context = $1.ctx; } else LL_destroy($4, (LLDestroyFunc) enum_delete); } $$.tflags = T_ENUM; $$.ptr = pEnum; } } | enum_key_context identifier_or_typedef_name { if (IS_LOCAL) { $$.tflags = 0; $$.ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { EnumSpecifier *pEnum = HT_get(PSTATE->pCPI->htEnums, $2->key, $2->keylen, $2->hash); if (pEnum == NULL) { pEnum = enumspec_new($2->key, $2->keylen, NULL); pEnum->context = $1.ctx; LL_push(PSTATE->pCPI->enums, pEnum); HT_storenode(PSTATE->pCPI->htEnums, $2, pEnum); } else { DELETE_NODE($2); } $$.tflags = T_ENUM; $$.ptr = pEnum; } } ; enum_key_context : ENUM_TOK { $$.ctx.pFI = PSTATE->pFI; $$.ctx.line = PSTATE->pLexer->ctok->line; } ; enumerator_list : enumerator { if (IS_LOCAL) $$ = NULL; else { $$ = LL_new(); if ($1->value.flags & V_IS_UNDEF) { $1->value.flags &= ~V_IS_UNDEF; $1->value.iv = 0; } LL_push($$, $1); } } | enumerator_list ',' enumerator { if (IS_LOCAL) $$ = NULL; else { if ($3->value.flags & V_IS_UNDEF) { Enumerator *pEnum = LL_get($1, -1); $3->value.flags = pEnum->value.flags; $3->value.iv = pEnum->value.iv + 1; } LL_push($1, $3); $$ = $1; } } ; enumerator : identifier_or_typedef_name { if (IS_LOCAL) { $$ = NULL; /* identifier_or_typedef_name is NULL */ } else { $$ = enum_new($1->key, $1->keylen, NULL); HT_storenode(PSTATE->pCPI->htEnumerators, $1, $$); } } | identifier_or_typedef_name '=' constant_expression { if (IS_LOCAL) { $$ = NULL; /* identifier_or_typedef_name is NULL */ } else { $$ = enum_new($1->key, $1->keylen, &$3); HT_storenode(PSTATE->pCPI->htEnumerators, $1, $$); } } ; parameter_type_list : parameter_list | parameter_list ',' ELLIPSIS ; parameter_list : parameter_declaration | parameter_list ',' parameter_declaration ; parameter_declaration : declaration_specifier {} | declaration_specifier abstract_declarator {} | declaration_specifier identifier_declarator { if ($2) decl_delete($2); } | declaration_specifier parameter_typedef_declarator { if ($2) decl_delete($2); } | declaration_qualifier_list {} | declaration_qualifier_list abstract_declarator {} | declaration_qualifier_list identifier_declarator { if ($2) decl_delete($2); } | type_specifier {} | type_specifier abstract_declarator {} | type_specifier identifier_declarator { if ($2) decl_delete($2); } | type_specifier parameter_typedef_declarator { if ($2) decl_delete($2); } | type_qualifier_list {} | type_qualifier_list abstract_declarator {} | type_qualifier_list identifier_declarator { if ($2) decl_delete($2); } ; /* ANSI C section 3.7.1 states "An identifier declared as a typedef name shall not be redeclared as a parameter". Hence the following is based only on IDENTIFIERs */ identifier_list : IDENTIFIER { if ($1) HN_delete($1); } | identifier_list ',' IDENTIFIER { if ($3) HN_delete($3); } ; identifier_or_typedef_name : IDENTIFIER | TYPE_NAME { $$ = IS_LOCAL ? NULL : HN_new($1->pDecl->identifier, CTT_IDLEN($1->pDecl), 0); } ; type_name : type_specifier { if (!IS_LOCAL) { unsigned size; u_32 flags; (void) PSTATE->pCPC->get_type_info(&PSTATE->pCPC->layout, &$1, NULL, "sf", &size, &flags); $$.iv = size; $$.flags = 0; if (flags & T_UNSAFE_VAL) $$.flags |= V_IS_UNSAFE; } } | type_specifier abstract_declarator { if (!IS_LOCAL) { if ($2.pointer_flag) { $$.iv = PSTATE->pCPC->layout.ptr_size * $2.multiplicator; $$.flags = 0; } else { unsigned size; u_32 flags; (void) PSTATE->pCPC->get_type_info(&PSTATE->pCPC->layout, &$1, NULL, "sf", &size, &flags); $$.iv = size * $2.multiplicator; $$.flags = 0; if (flags & T_UNSAFE_VAL) $$.flags |= V_IS_UNSAFE; } } } | type_qualifier_list { if (!IS_LOCAL) { $$.iv = PSTATE->pCPC->layout.int_size; $$.flags = 0; } } | type_qualifier_list abstract_declarator { if (!IS_LOCAL) { $$.iv = $2.multiplicator * ($2.pointer_flag ? PSTATE->pCPC->layout.ptr_size : PSTATE->pCPC->layout.int_size); $$.flags = 0; } } ; initializer_opt : /* nothing */ | '=' initializer ; initializer : '{' '}' | '{' initializer_list comma_opt '}' | assignment_expression {} ; initializer_list : designation_opt initializer | initializer_list ',' designation_opt initializer ; designation_opt : /* nothing */ | designator_list '=' ; designator_list : designator | designator_list designator ; designator : '[' constant_expression ']' | '.' identifier_or_typedef_name { DELETE_NODE($2); } ; comma_opt : /* nothing */ | ',' ; /*************************** STATEMENTS *******************************/ statement : labeled_statement | compound_statement | expression_statement | selection_statement | iteration_statement | jump_statement | asm_statement ; labeled_statement : identifier_or_typedef_name ':' statement { DELETE_NODE($1); } | CASE_TOK constant_expression ':' statement | DEFAULT_TOK ':' statement ; compound_statement : '{' '}' | '{' declaration_list '}' | '{' statement_list '}' | '{' declaration_list statement_list '}' ; declaration_list : declaration | declaration_list declaration ; statement_list : statement | statement_list statement ; expression_statement : comma_expression_opt ';' ; selection_statement : IF_TOK '(' comma_expression ')' statement | IF_TOK '(' comma_expression ')' statement ELSE_TOK statement | SWITCH_TOK '(' comma_expression ')' statement ; iteration_statement : WHILE_TOK '(' comma_expression ')' statement | DO_TOK statement WHILE_TOK '(' comma_expression ')' ';' | FOR_TOK '(' comma_expression_opt ';' comma_expression_opt ';' comma_expression_opt ')' statement ; jump_statement : GOTO_TOK identifier_or_typedef_name ';' { DELETE_NODE($2); } | CONTINUE_TOK ';' | BREAK_TOK ';' | RETURN_TOK comma_expression_opt ';' ; /***************************** EXTERNAL DEFINITIONS *****************************/ source_file : /* empty file */ | translation_unit ; translation_unit : external_definition | translation_unit external_definition ; external_definition : function_definition | declaration | asm_expr ; function_definition : identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($1); } | declaration_specifier identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($2); } | type_specifier identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($2); } | declaration_qualifier_list identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($2); } | type_qualifier_list identifier_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; decl_delete($2); } | old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | declaration_specifier old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | type_specifier old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | declaration_qualifier_list old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | type_qualifier_list old_function_declarator { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | declaration_specifier old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | type_specifier old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | declaration_qualifier_list old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } | type_qualifier_list old_function_declarator declaration_list { BEGIN_LOCAL; } compound_statement { END_LOCAL; } ; declarator : identifier_declarator | typedef_declarator ; typedef_declarator : paren_typedef_declarator /* would be ambiguous as parameter*/ | parameter_typedef_declarator /* not ambiguous as param*/ ; parameter_typedef_declarator : TYPE_NAME { $$ = IS_LOCAL ? NULL : decl_new($1->pDecl->identifier, CTT_IDLEN($1->pDecl)); } | TYPE_NAME postfixing_abstract_declarator { if (IS_LOCAL) $$ = NULL; else { $$ = decl_new($1->pDecl->identifier, CTT_IDLEN($1->pDecl)); if ($2) { $$->array_flag = 1; $$->ext.array = $2; } } } | clean_typedef_declarator ; /* The following have at least one '*'. There is no (redundant) '(' between the '*' and the TYPE_NAME. */ clean_typedef_declarator : clean_postfix_typedef_declarator | '*' parameter_typedef_declarator { if ($2) $2->pointer_flag = 1; $$ = $2; } | '*' type_qualifier_list parameter_typedef_declarator { if ($3) $3->pointer_flag = 1; $$ = $3; } ; clean_postfix_typedef_declarator : '(' clean_typedef_declarator ')' { $$ = $2; } | '(' clean_typedef_declarator ')' postfixing_abstract_declarator { POSTFIX_DECL($2, $4); $$ = $2; } ; /* The following have a redundant '(' placed immediately to the left of the TYPE_NAME */ paren_typedef_declarator : paren_postfix_typedef_declarator | '*' '(' simple_paren_typedef_declarator ')' { if ($3) $3->pointer_flag = 1; $$ = $3; } | '*' type_qualifier_list '(' simple_paren_typedef_declarator ')' { if ($4) $4->pointer_flag = 1; $$ = $4; } | '*' paren_typedef_declarator { if ($2) $2->pointer_flag = 1; $$ = $2; } | '*' type_qualifier_list paren_typedef_declarator { if ($3) $3->pointer_flag = 1; $$ = $3; } ; paren_postfix_typedef_declarator : '(' paren_typedef_declarator ')' { $$ = $2; } | '(' simple_paren_typedef_declarator postfixing_abstract_declarator ')' { POSTFIX_DECL($2, $3); $$ = $2; } | '(' paren_typedef_declarator ')' postfixing_abstract_declarator { POSTFIX_DECL($2, $4); $$ = $2; } ; simple_paren_typedef_declarator : TYPE_NAME { $$ = IS_LOCAL ? NULL : decl_new($1->pDecl->identifier, CTT_IDLEN($1->pDecl)); } | '(' simple_paren_typedef_declarator ')' { $$ = $2; } ; identifier_declarator : unary_identifier_declarator | paren_identifier_declarator ; unary_identifier_declarator : postfix_identifier_declarator | '*' identifier_declarator { if ($2) $2->pointer_flag = 1; $$ = $2; } | '*' type_qualifier_list identifier_declarator { if ($3) $3->pointer_flag = 1; $$ = $3; } ; postfix_identifier_declarator : paren_identifier_declarator postfixing_abstract_declarator { POSTFIX_DECL($1, $2); $$ = $1; } | '(' unary_identifier_declarator ')' { $$ = $2; } | '(' unary_identifier_declarator ')' postfixing_abstract_declarator { POSTFIX_DECL($2, $4); $$ = $2; } ; paren_identifier_declarator : IDENTIFIER { if ($1) { $$ = decl_new($1->key, $1->keylen); HN_delete($1); } else { $$ = NULL; } } | '(' paren_identifier_declarator ')' { $$ = $2; } ; old_function_declarator : postfix_old_function_declarator {} | '*' old_function_declarator {} | '*' type_qualifier_list old_function_declarator {} ; postfix_old_function_declarator : paren_identifier_declarator '(' identifier_list ')' { if ($1) decl_delete($1); } | '(' old_function_declarator ')' {} | '(' old_function_declarator ')' postfixing_abstract_declarator { if ($4) LL_destroy($4, (LLDestroyFunc) value_delete); } ; abstract_declarator : unary_abstract_declarator | postfix_abstract_declarator | postfixing_abstract_declarator { $$.pointer_flag = 0; $$.multiplicator = 1; if ($1) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, $1) $$.multiplicator *= pValue->iv; LL_destroy($1, (LLDestroyFunc) value_delete); } } ; postfixing_abstract_declarator : array_abstract_declarator | '(' ')' { $$ = NULL; } | '(' parameter_type_list ')' { $$ = NULL; } ; array_abstract_declarator : '[' type_qualifier_list_opt assignment_expression_opt ']' { if (IS_LOCAL) $$ = NULL; else { $$ = LL_new(); LL_push($$, value_new($3.iv, $3.flags)); CT_DEBUG(PARSER, ("array dimension => %ld", $3.iv)); } } | '[' STATIC_TOK type_qualifier_list_opt assignment_expression ']' { if (IS_LOCAL) $$ = NULL; else { $$ = LL_new(); LL_push($$, value_new($4.iv, $4.flags)); CT_DEBUG(PARSER, ("array dimension => %ld", $4.iv)); } } | '[' type_qualifier_list STATIC_TOK assignment_expression ']' { if (IS_LOCAL) $$ = NULL; else { $$ = LL_new(); LL_push($$, value_new($4.iv, $4.flags)); CT_DEBUG(PARSER, ("array dimension => %ld", $4.iv)); } } | '[' type_qualifier_list_opt '*' ']' { $$ = NULL; } | array_abstract_declarator '[' assignment_expression ']' { if (IS_LOCAL) $$ = NULL; else { $$ = $1 ? $1 : LL_new(); LL_push($$, value_new($3.iv, $3.flags)); CT_DEBUG(PARSER, ("array dimension => %ld", $3.iv)); } } | array_abstract_declarator '[' '*' ']' { if (IS_LOCAL) $$ = NULL; else { $$ = $1 ? $1 : LL_new(); LL_push($$, value_new(0, 0)); CT_DEBUG(PARSER, ("array dimension => *" )); } } ; unary_abstract_declarator : '*' { $$.pointer_flag = 1; $$.multiplicator = 1; } | '*' type_qualifier_list { $$.pointer_flag = 1; $$.multiplicator = 1; } | '*' abstract_declarator { $2.pointer_flag = 1; $$ = $2; } | '*' type_qualifier_list abstract_declarator { $3.pointer_flag = 1; $$ = $3; } ; postfix_abstract_declarator : '(' unary_abstract_declarator ')' { $$ = $2; } | '(' postfix_abstract_declarator ')' { $$ = $2; } | '(' postfixing_abstract_declarator ')' { $$.pointer_flag = 0; $$.multiplicator = 1; if ($2) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, $2) $$.multiplicator *= pValue->iv; LL_destroy($2, (LLDestroyFunc) value_delete); } } | '(' unary_abstract_declarator ')' postfixing_abstract_declarator { $$ = $2; if ($4) LL_destroy($4, (LLDestroyFunc) value_delete); } ; %% /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: c_lex * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: C lexer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int c_lex(YYSTYPE *plval, ParserState *pState) { int rval, token; struct lexer_state *pLexer = pState->pLexer; dUCPP(pState->pp); CT_DEBUG(CLEXER, ("parser.y::c_lex()")); while ((rval = lex(aUCPP_ pLexer)) < CPPERR_EOF) { if (rval) { CT_DEBUG(CLEXER, ("lex() returned %d", rval)); continue; } token = pLexer->ctok->type; switch (token) { case NONE: CT_DEBUG(CLEXER, ("token-type => NONE")); break; case COMMENT: CT_DEBUG(CLEXER, ("token-type => COMMENT => [%s]", pLexer->ctok->name)); break; case NEWLINE: CT_DEBUG(CLEXER, ("token-type => NEWLINE")); break; case BUNCH: CT_DEBUG(CLEXER, ("token-type => BUNCH => [%s]", pLexer->ctok->name)); break; case CONTEXT: CT_DEBUG(CLEXER, ("token-type => CONTEXT => [%s]", pLexer->ctok->name)); { FileInfo *pFI; size_t len = strlen(pLexer->ctok->name); CT_DEBUG(CLEXER, ("new context: file '%s', line %ld", pLexer->ctok->name, pLexer->ctok->line)); pFI = HT_get(pState->pCPI->htFiles, pLexer->ctok->name, len, 0); if (pFI == NULL) { pFI = fileinfo_new(pLexer->input, pLexer->ctok->name, len); HT_store(pState->pCPI->htFiles, pLexer->ctok->name, len, 0, pFI); } pState->pFI = pFI; } break; case NUMBER: CT_DEBUG(CLEXER, ("token-type => NUMBER => [%s]", pLexer->ctok->name)); plval->value.iv = strtol(pLexer->ctok->name, NULL, 0); plval->value.flags = 0; CT_DEBUG(CLEXER, ("constant: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return CONSTANT; case STRING: CT_DEBUG(CLEXER, ("token-type => STRING => [%s]", pLexer->ctok->name)); plval->value.iv = string_size(pLexer->ctok->name); plval->value.flags = 0; CT_DEBUG(CLEXER, ("string literal: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return STRING_LITERAL; case CHAR: CT_DEBUG(CLEXER, ("token-type => CHAR => [%s]", pLexer->ctok->name)); plval->value.iv = get_char_value(pLexer->ctok->name); plval->value.flags = 0; CT_DEBUG(CLEXER, ("constant: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return CONSTANT; case PRAGMA: CT_DEBUG(CLEXER, ("token-type => PRAGMA")); CT_DEBUG(CLEXER, ("line %ld: <#pragma>", pLexer->line)); pragma_parser_set_context(pState->pragma, pState->pFI ? pState->pFI->name : "unknown", pLexer->line - 1, pLexer->ctok->name); pragma_parser_parse(pState->pragma); CT_DEBUG(CLEXER, ("current packing: %d\n", pragma_parser_get_pack(pState->pragma))); break; case NAME: CT_DEBUG(CLEXER, ("token-type => NAME => [%s]", pLexer->ctok->name)); { char *tokstr = pLexer->ctok->name; const CKeywordToken *ckt; #include "token/t_parser.c" unknown: if ((ckt = HT_get(pState->pCPC->keyword_map, tokstr, 0, 0)) != NULL) { if (ckt->token == SKIP_TOK) { CT_DEBUG(CLEXER, ("skipping token '%s' in line %ld", tokstr, pLexer->line)); break; } return ckt->token; } return check_type(plval, pState, tokstr); } default: CT_DEBUG(CLEXER, ("token-type => %d", token)); if ((rval = tokentab[token]) != 0) return rval; CT_DEBUG(CLEXER, ("unhandled token in line %ld: <%2d>", pLexer->line, token)); break; } } CT_DEBUG(CLEXER, ("EOF!")); return 0; } /******************************************************************************* * * ROUTINE: parser_error * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void parser_error(ParserState *pState, const char *msg) { push_error(pState->pCPI, "%s, line %ld: %s", pState->pFI ? pState->pFI->name : "[unknown]", pState->pLexer->ctok->line, msg); } /******************************************************************************* * * ROUTINE: get_char_value * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int get_char_value(const char *s) { while (*s && *s != '\'') s++; if (*++s != '\\') return (int) *s; switch (*++s) { case '0' : case '1' : case '2' : case '3' : return (int) strtol(s, NULL, 8); case 'a' : return (int) '\a'; case 'b' : return (int) '\b'; case 'f' : return (int) '\f'; case 'h' : return (int) strtol(++s, NULL, 16); case 'n' : return (int) '\n'; case 'r' : return (int) '\r'; case 't' : return (int) '\t'; case 'v' : return (int) '\v'; default: return (int) *s; } } /******************************************************************************* * * ROUTINE: string_size * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int string_size(const char *s) { int size, count; while (*s && *s != '\"') s++; for (s++, size=0; *s; size++) { if (*s == '\"') break; if (*s++ != '\\') continue; if (*s == 'x') { count = 0; do s++; while (count++ < 2 && ((*s >= '0' && *s <= '9') || (*s >= 'a' && *s <= 'f') || (*s >= 'A' && *s <= 'F'))); continue; } if (*s >= '0' && *s <= '7') { count = 0; do s++; while (count++ < 2 && *s >= '0' && *s <= '7'); } else s++; } return size; } /******************************************************************************* * * ROUTINE: check_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int check_type(YYSTYPE *plval, ParserState *pState, const char *s) { Typedef *pTypedef; HashSum hash; int len; CT_DEBUG(CLEXER, ("check_type( \"%s\" )", s)); HASH_STR_LEN(hash, s, len); pTypedef = HT_get(pState->pCPI->htTypedefs, s, len, hash); if (pTypedef) { CT_DEBUG(CLEXER, ("typedef found!")); plval->pTypedef = pTypedef; return TYPE_NAME; } plval->identifier = pState->flags & F_LOCAL ? NULL : HN_new(s, len, hash); return IDENTIFIER; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_c_keyword_token * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const CKeywordToken *get_c_keyword_token(const char *name) { #include "token/t_ckeytok.c" unknown: return NULL; } /******************************************************************************* * * ROUTINE: get_skip_token * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const CKeywordToken *get_skip_token(void) { static const CKeywordToken ckt = { SKIP_TOK, NULL }; return &ckt; } /******************************************************************************* * * ROUTINE: c_parser_new * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ ParserState *c_parser_new(const CParseConfig *pCPC, CParseInfo *pCPI, pUCPP_ struct lexer_state *pLexer) { ParserState *pState; #ifdef CTLIB_DEBUGGING #ifdef YYDEBUG extern int pragma_debug; c_debug = pragma_debug = DEBUG_FLAG(YACC) ? 1 : 0; #endif #endif if (pCPC == NULL || pCPI == NULL || pLexer == NULL) return NULL; AllocF(ParserState *, pState, sizeof(ParserState)); pState->pCPI = pCPI; pState->pCPC = pCPC; pState->pLexer = pLexer; pState->pp = aUCPP; pState->flags = 0; pState->pFI = NULL; pState->pragma = pragma_parser_new(pCPI); return pState; } /******************************************************************************* * * ROUTINE: c_parser_run * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Run the C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int c_parser_run(ParserState *pState) { return c_parse((void *) pState); } /******************************************************************************* * * ROUTINE: c_parser_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Delete a C parser object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void c_parser_delete(ParserState *pState) { if (pState == NULL) return; pragma_parser_delete(pState->pragma); Free(pState); } Convert-Binary-C-0.76/ctlib/byteorder.c0000644000175000001440000012341411550664614016460 0ustar mhxusers/******************************************************************************* * * MODULE: ctype.c * ******************************************************************************** * * DESCRIPTION: ANSI C data type objects * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:17 +0200 $ * $Revision: 26 $ * $Source: /ctlib/byteorder.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "byteorder.h" /*===== DEFINES ==============================================================*/ #ifndef NULL #define NULL ((void *) 0) #endif /*----------------------------------------------------------*/ /* reading/writing integers in big/little endian byte order */ /* depending on the native byte order of the system */ /*----------------------------------------------------------*/ #if ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_BIG_ENDIAN /*--------------------*/ /* big endian systems */ /*--------------------*/ #define GET_LE_WORD(ptr, value, sign) \ value = (sign ## _16) \ ( ( (u_16) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_16) *( (const u_8 *) ((ptr)+1) ) << 8) \ ) #define GET_LE_LONG(ptr, value, sign) \ value = (sign ## _32) \ ( ( (u_32) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_32) *( (const u_8 *) ((ptr)+1) ) << 8) \ | ( (u_32) *( (const u_8 *) ((ptr)+2) ) << 16) \ | ( (u_32) *( (const u_8 *) ((ptr)+3) ) << 24) \ ) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_LE_LONGLONG(ptr, value, sign) \ value = (sign ## _64) \ ( ( (u_64) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_64) *( (const u_8 *) ((ptr)+1) ) << 8) \ | ( (u_64) *( (const u_8 *) ((ptr)+2) ) << 16) \ | ( (u_64) *( (const u_8 *) ((ptr)+3) ) << 24) \ | ( (u_64) *( (const u_8 *) ((ptr)+4) ) << 32) \ | ( (u_64) *( (const u_8 *) ((ptr)+5) ) << 40) \ | ( (u_64) *( (const u_8 *) ((ptr)+6) ) << 48) \ | ( (u_64) *( (const u_8 *) ((ptr)+7) ) << 56) \ ) #endif #define SET_LE_WORD(ptr, value) \ do { \ register u_16 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ } while (0) #define SET_LE_LONG(ptr, value) \ do { \ register u_32 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 24) & 0xFF); \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define SET_LE_LONGLONG(ptr, value) \ do { \ register u_64 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+4)) = (u_8) ((v >> 32) & 0xFF); \ *((u_8 *) ((ptr)+5)) = (u_8) ((v >> 40) & 0xFF); \ *((u_8 *) ((ptr)+6)) = (u_8) ((v >> 48) & 0xFF); \ *((u_8 *) ((ptr)+7)) = (u_8) ((v >> 56) & 0xFF); \ } while (0) #endif #ifdef CAN_UNALIGNED_ACCESS #define GET_BE_WORD(ptr, value, sign) \ value = (sign ## _16) ( *( (const u_16 *) (ptr) ) ) #define GET_BE_LONG(ptr, value, sign) \ value = (sign ## _32) ( *( (const u_32 *) (ptr) ) ) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_BE_LONGLONG(ptr, value, sign) \ value = (sign ## _64) ( *( (const u_64 *) (ptr) ) ) #endif #define SET_BE_WORD(ptr, value) \ *( (u_16 *) (ptr) ) = (u_16) value #define SET_BE_LONG(ptr, value) \ *( (u_32 *) (ptr) ) = (u_32) value #if ARCH_NATIVE_64_BIT_INTEGER #define SET_BE_LONGLONG(ptr, value) \ *( (u_64 *) (ptr) ) = (u_64) value #endif #else #define GET_BE_WORD(ptr, value, sign) \ do { \ if (((unsigned long) (ptr)) % 2) \ value = (sign ## _16) \ ( ( (u_16) *( (const u_8 *) ((ptr)+0) ) << 8) \ | ( (u_16) *( (const u_8 *) ((ptr)+1) ) << 0) \ ); \ else \ value = (sign ## _16) ( *( (const u_16 *) (ptr) ) ); \ } while (0) #define GET_BE_LONG(ptr, value, sign) \ do { \ switch (((unsigned long) (ptr)) % 4) \ { \ case 0: \ value = (sign ## _32) ( *( (const u_32 *) (ptr) ) ); \ break; \ \ case 2: \ value = (sign ## _32) \ ( ( (u_32) *( (const u_16 *) ((ptr)+0) ) << 16) \ | ( (u_32) *( (const u_16 *) ((ptr)+2) ) << 0) \ ); \ break; \ \ default: \ value = (sign ## _32) \ ( ( (u_32) *( (const u_8 *) ((ptr)+0) ) << 24) \ | ( (u_32) *( (const u_16 *) ((ptr)+1) ) << 8) \ | ( (u_32) *( (const u_8 *) ((ptr)+3) ) << 0) \ ); \ break; \ } \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_BE_LONGLONG(ptr, value, sign) \ do { \ value = (sign ## _64) \ ( ( (u_64) *( (const u_8 *) ((ptr)+0) ) << 56) \ | ( (u_64) *( (const u_8 *) ((ptr)+1) ) << 48) \ | ( (u_64) *( (const u_8 *) ((ptr)+2) ) << 40) \ | ( (u_64) *( (const u_8 *) ((ptr)+3) ) << 32) \ | ( (u_64) *( (const u_8 *) ((ptr)+4) ) << 24) \ | ( (u_64) *( (const u_8 *) ((ptr)+5) ) << 16) \ | ( (u_64) *( (const u_8 *) ((ptr)+6) ) << 8) \ | ( (u_64) *( (const u_8 *) ((ptr)+7) ) << 0) \ ); \ } while (0) #endif #define SET_BE_WORD(ptr, value) \ do { \ if (((unsigned long) (ptr)) % 2) \ { \ register u_16 v = (u_16) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 0) & 0xFF); \ } \ else \ *( (u_16 *) (ptr) ) = (u_16) value; \ } while (0) #define SET_BE_LONG(ptr, value) \ do { \ switch (((unsigned long) (ptr)) % 4) \ { \ case 0: \ *( (u_32 *) (ptr) ) = (u_32) value; \ break; \ \ case 2: \ { \ register u_32 v = (u_32) value; \ *((u_16 *) ((ptr)+0)) = (u_16) ((v >> 16) & 0xFFFF); \ *((u_16 *) ((ptr)+2)) = (u_16) ((v >> 0) & 0xFFFF); \ } \ break; \ \ default: \ { \ register u_32 v = (u_32) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 24) & 0xFF ); \ *((u_16 *) ((ptr)+1)) = (u_16) ((v >> 8) & 0xFFFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 0) & 0xFF ); \ } \ break; \ } \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define SET_BE_LONGLONG(ptr, value) \ do { \ register u_64 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 56) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 48) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 40) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 32) & 0xFF); \ *((u_8 *) ((ptr)+4)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+5)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+6)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+7)) = (u_8) ((v >> 0) & 0xFF); \ } while (0) #endif #endif #elif ARCH_NATIVE_BYTEORDER == ARCH_BYTEORDER_LITTLE_ENDIAN /*-----------------------*/ /* little endian systems */ /*-----------------------*/ #define GET_BE_WORD(ptr, value, sign) \ value = (sign ## _16) \ ( ( (u_16) *( (const u_8 *) ((ptr)+0) ) << 8) \ | ( (u_16) *( (const u_8 *) ((ptr)+1) ) << 0) \ ) #define GET_BE_LONG(ptr, value, sign) \ value = (sign ## _32) \ ( ( (u_32) *( (const u_8 *) ((ptr)+0) ) << 24) \ | ( (u_32) *( (const u_8 *) ((ptr)+1) ) << 16) \ | ( (u_32) *( (const u_8 *) ((ptr)+2) ) << 8) \ | ( (u_32) *( (const u_8 *) ((ptr)+3) ) << 0) \ ) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_BE_LONGLONG(ptr, value, sign) \ value = (sign ## _64) \ ( ( (u_64) *( (const u_8 *) ((ptr)+0) ) << 56) \ | ( (u_64) *( (const u_8 *) ((ptr)+1) ) << 48) \ | ( (u_64) *( (const u_8 *) ((ptr)+2) ) << 40) \ | ( (u_64) *( (const u_8 *) ((ptr)+3) ) << 32) \ | ( (u_64) *( (const u_8 *) ((ptr)+4) ) << 24) \ | ( (u_64) *( (const u_8 *) ((ptr)+5) ) << 16) \ | ( (u_64) *( (const u_8 *) ((ptr)+6) ) << 8) \ | ( (u_64) *( (const u_8 *) ((ptr)+7) ) << 0) \ ) #endif #define SET_BE_WORD(ptr, value) \ do { \ register u_16 v = (u_16) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 0) & 0xFF); \ } while (0) #define SET_BE_LONG(ptr, value) \ do { \ register u_32 v = (u_32) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 0) & 0xFF); \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define SET_BE_LONGLONG(ptr, value) \ do { \ register u_64 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 56) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 48) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 40) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 32) & 0xFF); \ *((u_8 *) ((ptr)+4)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+5)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+6)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+7)) = (u_8) ((v >> 0) & 0xFF); \ } while (0) #endif #ifdef CAN_UNALIGNED_ACCESS #define GET_LE_WORD(ptr, value, sign) \ value = (sign ## _16) ( *( (const u_16 *) (ptr) ) ) #define GET_LE_LONG(ptr, value, sign) \ value = (sign ## _32) ( *( (const u_32 *) (ptr) ) ) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_LE_LONGLONG(ptr, value, sign) \ value = (sign ## _64) ( *( (const u_64 *) (ptr) ) ) #endif #define SET_LE_WORD(ptr, value) \ *( (u_16 *) (ptr) ) = (u_16) value #define SET_LE_LONG(ptr, value) \ *( (u_32 *) (ptr) ) = (u_32) value #if ARCH_NATIVE_64_BIT_INTEGER #define SET_LE_LONGLONG(ptr, value) \ *( (u_64 *) (ptr) ) = (u_64) value #endif #else #define GET_LE_WORD(ptr, value, sign) \ do { \ if (((unsigned long) (ptr)) % 2) \ value = (sign ## _16) \ ( ( (u_16) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_16) *( (const u_8 *) ((ptr)+1) ) << 8) \ ); \ else \ value = (sign ## _16) ( *( (const u_16 *) (ptr) ) ); \ } while (0) #define GET_LE_LONG(ptr, value, sign) \ do { \ switch (((unsigned long) (ptr)) % 4) \ { \ case 0: \ value = (sign ## _32) ( *( (const u_32 *) (ptr) ) ); \ break; \ \ case 2: \ value = (sign ## _32) \ ( ( (u_32) *( (const u_16 *) ((ptr)+0) ) << 0) \ | ( (u_32) *( (const u_16 *) ((ptr)+2) ) << 16) \ ); \ break; \ \ default: \ value = (sign ## _32) \ ( ( (u_32) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_32) *( (const u_16 *) ((ptr)+1) ) << 8) \ | ( (u_32) *( (const u_8 *) ((ptr)+3) ) << 24) \ ); \ break; \ } \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define GET_LE_LONGLONG(ptr, value, sign) \ do { \ value = (sign ## _64) \ ( ( (u_64) *( (const u_8 *) ((ptr)+0) ) << 0) \ | ( (u_64) *( (const u_8 *) ((ptr)+1) ) << 8) \ | ( (u_64) *( (const u_8 *) ((ptr)+2) ) << 16) \ | ( (u_64) *( (const u_8 *) ((ptr)+3) ) << 24) \ | ( (u_64) *( (const u_8 *) ((ptr)+4) ) << 32) \ | ( (u_64) *( (const u_8 *) ((ptr)+5) ) << 40) \ | ( (u_64) *( (const u_8 *) ((ptr)+6) ) << 48) \ | ( (u_64) *( (const u_8 *) ((ptr)+7) ) << 56) \ ); \ } while (0) #endif #define SET_LE_WORD(ptr, value) \ do { \ if (((unsigned long) (ptr)) % 2) \ { \ register u_16 v = (u_16) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ } \ else \ *( (u_16 *) (ptr) ) = (u_16) value; \ } while (0) #define SET_LE_LONG(ptr, value) \ do { \ switch (((unsigned long) (ptr)) % 4) \ { \ case 0: \ *( (u_32 *) (ptr) ) = (u_32) value; \ break; \ \ case 2: \ { \ register u_32 v = (u_32) value; \ *((u_16 *) ((ptr)+0)) = (u_16) ((v >> 0) & 0xFFFF); \ *((u_16 *) ((ptr)+2)) = (u_16) ((v >> 16) & 0xFFFF); \ } \ break; \ \ default: \ { \ register u_32 v = (u_32) value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF ); \ *((u_16 *) ((ptr)+1)) = (u_16) ((v >> 8) & 0xFFFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 24) & 0xFF ); \ } \ break; \ } \ } while (0) #if ARCH_NATIVE_64_BIT_INTEGER #define SET_LE_LONGLONG(ptr, value) \ do { \ register u_64 v = value; \ *((u_8 *) ((ptr)+0)) = (u_8) ((v >> 0) & 0xFF); \ *((u_8 *) ((ptr)+1)) = (u_8) ((v >> 8) & 0xFF); \ *((u_8 *) ((ptr)+2)) = (u_8) ((v >> 16) & 0xFF); \ *((u_8 *) ((ptr)+3)) = (u_8) ((v >> 24) & 0xFF); \ *((u_8 *) ((ptr)+4)) = (u_8) ((v >> 32) & 0xFF); \ *((u_8 *) ((ptr)+5)) = (u_8) ((v >> 40) & 0xFF); \ *((u_8 *) ((ptr)+6)) = (u_8) ((v >> 48) & 0xFF); \ *((u_8 *) ((ptr)+7)) = (u_8) ((v >> 56) & 0xFF); \ } while (0) #endif #endif #else /* ARCH_NATIVE_BYTEORDER */ #error "unknown native byte order" #endif /* ARCH_NATIVE_BYTEORDER */ #define GET_BE_BYTE(ptr, value, sign) \ value = *((const sign ## _8 *) (ptr)) #define GET_LE_BYTE(ptr, value, sign) \ value = *((const sign ## _8 *) (ptr)) #define SET_BE_BYTE(ptr, value) \ *((u_8 *) (ptr)) = (u_8) value #define SET_LE_BYTE(ptr, value) \ *((u_8 *) (ptr)) = (u_8) value #define ALL_64_BITS (~((u_64) 0)) #define ALL_32_BITS (~((u_32) 0)) /*===== TYPEDEFS =============================================================*/ enum shift_direction { SHIFT_LEFT, SHIFT_RIGHT }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ static int integer2string(IntValue *pInt); static void string2integer(IntValue *pInt); /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: integer2string * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Turn an integer into a string. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int integer2string(IntValue *pInt) { #if ARCH_NATIVE_64_BIT_INTEGER register u_64 val; #else register u_32 hval, lval, tval, umod, lmod; #endif int stack[20], len, sp; char *pStr = pInt->string; if (pStr == NULL) return 0; len = sp = 0; #if ARCH_NATIVE_64_BIT_INTEGER if (pInt->sign && pInt->value.s < 0) { val = -pInt->value.s; *pStr++ = '-'; len++; } else val = pInt->value.u; while (val > 0) stack[sp++] = val % 10, val /= 10; #else hval = pInt->value.u.h; lval = pInt->value.u.l; if (pInt->sign && pInt->value.s.h < 0) { *pStr++ = '-'; len++; if (lval-- == 0) hval--; hval = ~hval; lval = ~lval; } while (hval > 0) { static const u_32 CDIV[10] = { 0x00000000, 0x19999999, 0x33333333, 0x4CCCCCCC, 0x66666666, 0x80000000, 0x99999999, 0xB3333333, 0xCCCCCCCC, 0xE6666666 }; static const u_32 CMOD[10] = { 0U, 6U, 2U, 8U, 4U, 0U, 6U, 2U, 8U, 4U }; umod = hval % 10; hval /= 10; lmod = lval % 10; lval /= 10; lmod += CMOD[umod]; tval = CDIV[umod]; if (lmod >= 10) lmod -= 10, tval++; lval += tval; if (lval < tval) hval++; stack[sp++] = lmod; } while (lval > 0) stack[sp++] = lval % 10, lval /= 10; #endif len += sp; if (sp == 0) *pStr++ = '0'; else while(sp-- > 0) *pStr++ = (char) ('0' + stack[sp]); *pStr = '\0'; return len; } /******************************************************************************* * * ROUTINE: string2integer * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Turn a dec/hex/oct string into an integer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void string2integer(IntValue *pInt) { register int val; register const char *pStr = pInt->string; #if ARCH_NATIVE_64_BIT_INTEGER register u_64 iv = 0; #else register u_32 hval = 0, lval = 0; #endif pInt->sign = 0; while (isspace(*pStr)) /* ignore leading whitespace */ pStr++; switch (*pStr) { default : break; case '-': pInt->sign = 1; case '+': while(isspace(*++pStr)); } if (*pStr == '0') /* seems to be hex or octal */ { pStr++; if (*pStr == 'x') /* must be hex */ { while (isxdigit(val = *++pStr)) { if (isdigit(val)) val -= (int) '0'; else if (isupper(val)) val -= (int) 'A' - 10; else val -= (int) 'a' - 10; #if ARCH_NATIVE_64_BIT_INTEGER iv = (iv << 4) | (val & 0xF); #else hval = (hval << 4) | (lval >> 28); lval = (lval << 4) | (val & 0xF); #endif } } else if (*pStr == 'b') /* must be binary */ { pStr++; while (*pStr == '0' || *pStr == '1') { val = (int) (*pStr - '0'); #if ARCH_NATIVE_64_BIT_INTEGER iv = (iv << 1) | (val & 0x1); #else hval = (hval << 1) | (lval >> 31); lval = (lval << 1) | (val & 0x1); #endif pStr++; } } else /* must be octal */ { while (isdigit(*pStr) && *pStr != '8' && *pStr != '9') { val = (int) (*pStr - '0'); #if ARCH_NATIVE_64_BIT_INTEGER iv = (iv << 3) | (val & 0x7); #else hval = (hval << 3) | (lval >> 29); lval = (lval << 3) | (val & 0x7); #endif pStr++; } } } else /* must be decimal */ { #if ARCH_NATIVE_64_BIT_INTEGER while (isdigit(val = *pStr++)) iv = 10*iv + (val - (int) '0'); #else register u_32 temp; do { if (!isdigit(val = *pStr++)) goto end_of_string; lval = 10*lval + (val - (int) '0'); } while (lval < 429496729); while (isdigit(val = *pStr++)) { hval = ((hval << 3) | (lval >> 29)) + ((hval << 1) | (lval >> 31)); lval <<= 1; temp = lval + (lval << 2); if (temp < lval) hval++; lval = temp + (int) (val - '0'); if (lval < temp) hval++; } #endif } #if ARCH_NATIVE_64_BIT_INTEGER if (pInt->sign) pInt->value.s = -iv; else pInt->value.u = iv; #else end_of_string: if (pInt->sign && (hval || lval)) { if (lval-- == 0) hval--; pInt->value.u.h = ~hval; pInt->value.u.l = ~lval; } else { pInt->value.u.h = hval; pInt->value.u.l = lval; } #endif } /******************************************************************************* * * ROUTINE: shift_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Bit-shift an u_64 value left or right. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void shift_integer(u_64 *pval, unsigned bits, enum shift_direction dir) { assert(bits <= 64); #if ARCH_NATIVE_64_BIT_INTEGER switch (dir) { case SHIFT_LEFT: *pval <<= bits; break; case SHIFT_RIGHT: *pval >>= bits; break; } #else switch (dir) { case SHIFT_LEFT: if (bits >= 32) { pval->h = pval->l << (bits - 32); pval->l = 0; } else { pval->h = (pval->h << bits) | (pval->l >> (32 - bits)); pval->l <<= bits; } break; case SHIFT_RIGHT: if (bits >= 32) { pval->l = pval->h >> (bits - 32); pval->h = 0; } else { pval->l = (pval->l >> bits) | (pval->h << (32 - bits)); pval->h >>= bits; } break; } #endif } /******************************************************************************* * * ROUTINE: mask_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Bit-mask an u_64 value. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void mask_integer(u_64 *pval, unsigned bits, unsigned shift, int extend_msb) { u_64 mask; const unsigned msb = bits + shift - 1; assert(bits <= 64); assert(shift <= 64); assert((bits + shift) <= 64); #if ARCH_NATIVE_64_BIT_INTEGER mask = (ALL_64_BITS >> (64 - bits)) << shift; *pval &= mask; if (extend_msb && bits > 0) if (*pval & (((u_64)1) << msb)) *pval |= ALL_64_BITS << msb; #else if (bits > 32) { mask.h = (ALL_32_BITS >> (64 - bits)); mask.l = ALL_32_BITS; } else { mask.h = 0; mask.l = (ALL_32_BITS >> (32 - bits)); } if (shift > 0) shift_integer(&mask, shift, SHIFT_LEFT); pval->h &= mask.h; pval->l &= mask.l; if (extend_msb && bits > 0) { if (msb >= 32) { if (pval->h & (((u_32)1) << (msb - 32))) pval->h |= ALL_32_BITS << (msb - 32); } else { if (pval->l & (((u_32)1) << msb)) { pval->h = ALL_32_BITS; pval->l |= ALL_32_BITS << msb; } } } #endif } /******************************************************************************* * * ROUTINE: merge_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Apr 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Merge an u_64 value into another one. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void merge_integer(u_64 *dest, const u_64 *src, unsigned bits, unsigned shift) { u_64 mask; assert(bits <= 64); assert(shift <= 64); assert((bits + shift) <= 64); #if ARCH_NATIVE_64_BIT_INTEGER mask = (ALL_64_BITS >> (64 - bits)) << shift; *dest = (*dest & (~mask)) | (*src & mask); #else if (bits > 32) { mask.h = (ALL_32_BITS >> (64 - bits)); mask.l = ALL_32_BITS; } else { mask.h = 0; mask.l = (ALL_32_BITS >> (32 - bits)); } if (shift > 0) shift_integer(&mask, shift, SHIFT_LEFT); dest->h = (dest->h & (~mask.h)) | (src->h & mask.h); dest->l = (dest->l & (~mask.l)) | (src->l & mask.l); #endif } /******************************************************************************* * * ROUTINE: string_is_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Mar 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Decide if a string contains a dec/hex/oct integer. * * ARGUMENTS: * * RETURNS: Zero if the string doesn't hold an interpretable number. * The base (i.e. 2, 8, 10 or 16) if the string is a number. * *******************************************************************************/ int string_is_integer(const char *pStr) { int rval; /* ignore leading whitespace */ while (isspace(*pStr)) pStr++; switch (*pStr) { default : break; case '-': case '+': while (isspace(*++pStr)); } if (*pStr == '0') /* seems to be hex or octal */ { pStr++; if (*pStr == 'x') /* must be hex */ { pStr++; while (isxdigit(*pStr)) pStr++; rval = 16; } else if (*pStr == 'b') /* must be binary */ { pStr++; while (*pStr == '0' || *pStr == '1') pStr++; rval = 2; } else /* must be octal */ { while (isdigit(*pStr) && *pStr != '8' && *pStr != '9') pStr++; rval = 8; } } else /* must be decimal */ { while (isdigit(*pStr)) pStr++; rval = 10; } /* ignore trailing whitespace */ while (isspace(*pStr)) pStr++; return *pStr ? 0 : rval; } /******************************************************************************* * * ROUTINE: fetch_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #if ARCH_NATIVE_64_BIT_INTEGER #define FETCH(bo, what) \ do { \ if (sign) \ GET_ ## bo ## _ ## what (ptr, iv.value.s, i); \ else \ GET_ ## bo ## _ ## what (ptr, iv.value.u, u); \ } while (0) #else #define FETCH(bo, what) \ do { \ if(sign) \ { \ GET_ ## bo ## _ ## what (ptr, iv.value.s.l, i); \ iv.value.s.h = ((i_32) iv.value.s.l) < 0 ? -1 : 0; \ } \ else \ { \ GET_ ## bo ## _ ## what (ptr, iv.value.u.l, u); \ iv.value.u.h = 0; \ } \ } while (0) #endif void fetch_integer(unsigned size, unsigned sign, unsigned bits, unsigned shift, CByteOrder bo, const void *src, IntValue *pIV) { register const u_8 *ptr = (const u_8 *) src; IntValue iv = *pIV; switch (size) { case 1: FETCH(BE, BYTE); break; case 2: if (bo == CBO_BIG_ENDIAN) FETCH(BE, WORD); else FETCH(LE, WORD); break; case 4: if (bo == CBO_BIG_ENDIAN) FETCH(BE, LONG); else FETCH(LE, LONG); break; case 8: #if ARCH_NATIVE_64_BIT_INTEGER if (bo == CBO_BIG_ENDIAN) FETCH(BE, LONGLONG); else FETCH(LE, LONGLONG); #else if (bo == CBO_BIG_ENDIAN) { GET_BE_LONG(ptr, iv.value.u.h, u); GET_BE_LONG(ptr+4, iv.value.u.l, u); } else { GET_LE_LONG(ptr, iv.value.u.l, u); GET_LE_LONG(ptr+4, iv.value.u.h, u); } #endif break; default: break; } iv.sign = sign; if (bits > 0) { if (shift > 0) shift_integer(&iv.value.u, shift, SHIFT_RIGHT); mask_integer(&iv.value.u, bits, 0, sign); } if (iv.string) (void) integer2string(&iv); *pIV = iv; } #undef FETCH /******************************************************************************* * * ROUTINE: store_integer * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #if ARCH_NATIVE_64_BIT_INTEGER #define STORE(bo, what) \ do { \ SET_ ## bo ## _ ## what (ptr, iv.value.u); \ } while (0) #else #define STORE(bo, what) \ do { \ SET_ ## bo ## _ ## what (ptr, iv.value.u.l); \ } while (0) #endif void store_integer(unsigned size, unsigned bits, unsigned shift, CByteOrder bo, void *dest, const IntValue *pIV) { register u_8 *ptr = (u_8 *) dest; IntValue iv = *pIV; if (iv.string) string2integer(&iv); if (bits > 0) { IntValue orig; orig.string = NULL; fetch_integer(size, 0, 0, 0, bo, dest, &orig); if (shift > 0) shift_integer(&iv.value.u, shift, SHIFT_LEFT); merge_integer(&orig.value.u, &iv.value.u, bits, shift); iv = orig; } switch (size) { case 1: STORE(BE, BYTE); break; case 2: if (bo == CBO_BIG_ENDIAN) STORE(BE, WORD); else STORE(LE, WORD); break; case 4: if (bo == CBO_BIG_ENDIAN) STORE(BE, LONG); else STORE(LE, LONG); break; case 8: #if ARCH_NATIVE_64_BIT_INTEGER if (bo == CBO_BIG_ENDIAN) STORE(BE, LONGLONG); else STORE(LE, LONGLONG); #else if (bo == CBO_BIG_ENDIAN) { SET_BE_LONG(ptr, iv.value.u.h); SET_BE_LONG(ptr+4, iv.value.u.l); } else { SET_LE_LONG(ptr, iv.value.u.l); SET_LE_LONG(ptr+4, iv.value.u.h); } #endif break; default: break; } } #undef STORE Convert-Binary-C-0.76/ctlib/byteorder.h0000644000175000001440000000364011550664614016463 0ustar mhxusers/******************************************************************************* * * HEADER: byteorder.h * ******************************************************************************** * * DESCRIPTION: Architecture independent integer conversion. * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:17 +0200 $ * $Revision: 18 $ * $Source: /ctlib/byteorder.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_BYTEORDER_H #define _CTLIB_BYTEORDER_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "arch.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef enum { CBO_BIG_ENDIAN, CBO_LITTLE_ENDIAN } CByteOrder; typedef struct { union { u_64 u; i_64 s; } value; int sign; char *string; } IntValue; /*===== FUNCTION PROTOTYPES ==================================================*/ #define string_is_integer CTlib_string_is_integer int string_is_integer(const char *pStr); #define fetch_integer CTlib_fetch_integer void fetch_integer(unsigned size, unsigned sign, unsigned bits, unsigned shift, CByteOrder bo, const void *src, IntValue *pIV); #define store_integer CTlib_store_integer void store_integer(unsigned size, unsigned bits, unsigned shift, CByteOrder bo, void *dest, const IntValue *pIV); #endif Convert-Binary-C-0.76/ctlib/fileinfo.c0000644000175000001440000001057311550664614016255 0ustar mhxusers/******************************************************************************* * * MODULE: fileinfo.c * ******************************************************************************** * * DESCRIPTION: Retrieving information about files * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:19 +0200 $ * $Revision: 13 $ * $Source: /ctlib/fileinfo.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "fileinfo.h" #include "util/memalloc.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: fileinfo_new * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: FileInfo object constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ FileInfo *fileinfo_new( FILE *file, char *name, size_t name_len ) { FileInfo *pFileInfo; struct stat buf; if( name != NULL && name_len == 0 ) name_len = strlen( name ); AllocF( FileInfo *, pFileInfo, offsetof( FileInfo, name ) + name_len + 1 ); if( name != NULL ) { strncpy( pFileInfo->name, name, name_len ); pFileInfo->name[name_len] = '\0'; } else pFileInfo->name[0] = '\0'; if( file != NULL && fstat( fileno( file ), &buf ) == 0 ) { pFileInfo->valid = 1; pFileInfo->size = buf.st_size; pFileInfo->access_time = buf.st_atime; pFileInfo->modify_time = buf.st_mtime; pFileInfo->change_time = buf.st_ctime; } else { pFileInfo->valid = 0; pFileInfo->size = 0; pFileInfo->access_time = 0; pFileInfo->modify_time = 0; pFileInfo->change_time = 0; } return pFileInfo; } /******************************************************************************* * * ROUTINE: fileinfo_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: FileInfo object destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void fileinfo_delete( FileInfo *pFileInfo ) { if( pFileInfo ) Free( pFileInfo ); } /******************************************************************************* * * ROUTINE: fileinfo_clone * * WRITTEN BY: Marcus Holland-Moritz ON: Nov 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clone FileInfo object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ FileInfo *fileinfo_clone( const FileInfo *pSrc ) { FileInfo *pDest; size_t size; if( pSrc == NULL ) return NULL; size = offsetof( FileInfo, name ) + 1; if( pSrc->name[0] != '\0' ) size += strlen( pSrc->name ); AllocF( FileInfo *, pDest, size ); memcpy( pDest, pSrc, size ); return pDest; } Convert-Binary-C-0.76/ctlib/fileinfo.h0000644000175000001440000000334611550664615016263 0ustar mhxusers/******************************************************************************* * * HEADER: fileinfo.h * ******************************************************************************** * * DESCRIPTION: Retrieving information about files * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:19 +0200 $ * $Revision: 14 $ * $Source: /ctlib/fileinfo.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_FILEINFO_H #define _CTLIB_FILEINFO_H /*===== GLOBAL INCLUDES ======================================================*/ #include #include /*===== LOCAL INCLUDES =======================================================*/ /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct { int valid; size_t size; time_t access_time; time_t modify_time; time_t change_time; char name[1]; } FileInfo; /*===== FUNCTION PROTOTYPES ==================================================*/ #define fileinfo_new CTlib_fileinfo_new FileInfo *fileinfo_new( FILE *file, char *name, size_t name_len ); #define fileinfo_delete CTlib_fileinfo_delete void fileinfo_delete( FileInfo *pFileInfo ); #define fileinfo_clone CTlib_fileinfo_clone FileInfo *fileinfo_clone( const FileInfo *pSrc ); #endif Convert-Binary-C-0.76/ctlib/y_parser.c0000644000175000001440000061174311550664635016317 0ustar mhxusers/* A Bison parser, made by GNU Bison 2.4.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.4.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ #define yyparse c_parse #define yylex c_lex #define yyerror c_error #define yylval c_lval #define yychar c_char #define yydebug c_debug #define yynerrs c_nerrs /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ #line 1 "ctlib/parser.y" /******************************************************************************* * * MODULE: parser.y * ******************************************************************************** * * DESCRIPTION: C parser * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:20 +0200 $ * $Revision: 99 $ * $Source: /ctlib/parser.y $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * * Portions Copyright (c) 1989, 1990 James A. Roskind. * Also see the original copyright notice below. * *******************************************************************************/ /* Copyright (C) 1989,1990 James A. Roskind, All rights reserved. This grammar was developed and written by James A. Roskind. Copying of this grammar description, as a whole, is permitted providing this notice is intact and applicable in all complete copies. Translations as a whole to other parser generator input languages (or grammar description languages) is permitted provided that this notice is intact and applicable in all such copies, along with a disclaimer that the contents are a translation. The reproduction of derived text, such as modified versions of this grammar, or the output of parser generators, is permitted, provided the resulting work includes the copyright notice "Portions Copyright (c) 1989, 1990 James A. Roskind". Derived products, such as compilers, translators, browsers, etc., that use this grammar, must also provide the notice "Portions Copyright (c) 1989, 1990 James A. Roskind" in a manner appropriate to the utility, and in keeping with copyright law (e.g.: EITHER displayed when first invoked/executed; OR displayed continuously on display terminal; OR via placement in the object code in form readable in a printout, with or near the title of the work, or at the end of the file). No royalties, licenses or commissions of any kind are required to copy this grammar, its translations, or derivative products, when the copies are made in compliance with this notice. Persons or corporations that do make copies in compliance with this notice may charge whatever price is agreeable to a buyer, for such copies or derivative works. THIS GRAMMAR IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. James A. Roskind Independent Consultant 516 Latania Palm Drive Indialantic FL, 32903 (407)729-4348 jar@ileaf.com ACKNOWLEDGMENT: Without the effort expended by the ANSI C standardizing committee, I would have been lost. Although the ANSI C standard does not include a fully disambiguated syntax description, the committee has at least provided most of the disambiguating rules in narratives. Several reviewers have also recently critiqued this grammar, and/or assisted in discussions during it's preparation. These reviewers are certainly not responsible for the errors I have committed here, but they are responsible for allowing me to provide fewer errors. These colleagues include: Bruce Blodgett, and Mark Langley. */ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" #include "ctparse.h" #include "cterror.h" #include "fileinfo.h" #include "parser.h" #include "pragma.h" #include "util/ccattr.h" #include "util/list.h" #include "util/memalloc.h" #include "ucpp/cpp.h" #include "cppreent.h" /*===== DEFINES ==============================================================*/ /* ADDITIONAL BISON CONFIGURATION */ #define YYMAXDEPTH 10000 #define YYPARSE_PARAM pState #define YYLEX_PARAM pState /* * Bison version >= 1.31 is needed for YYFPRINTF */ #if YYDEBUG && defined CTLIB_DEBUGGING #define YYFPRINTF BisonDebugFunc #endif #define c_error(msg) parser_error(PSTATE, msg) #define c_parse CTlib_c_parse /* MACROS */ #define PSTATE ((ParserState *) pState) #define DELETE_NODE(node) \ do { \ if (node != NULL) \ HN_delete(node); \ } while (0) #define POSTFIX_DECL(decl, postfix) \ do { \ if (postfix) \ { \ if (decl->pointer_flag) \ LL_destroy(postfix, (LLDestroyFunc) value_delete); \ else \ { \ if (decl->array_flag) \ LL_delete(LL_splice(decl->ext.array, 0, 0, postfix)); \ else \ { \ decl->array_flag = 1; \ decl->ext.array = postfix; \ } \ } \ } \ } while (0) #define MAKE_TYPEDEF(list, decl) \ do { \ Typedef *pTypedef = typedef_new(&(list->type), decl); \ CT_DEBUG(PARSER, ("making new typedef => %s (list @ %p)", \ decl->identifier, list)); \ LL_push(list->typedefs, pTypedef); \ HT_store(PSTATE->pCPI->htTypedefs, decl->identifier, 0, 0, pTypedef);\ } while (0) #define UNDEF_VAL(x) do { x.iv = 0; x.flags = V_IS_UNDEF; } while (0) #define UNARY_OP(result, op, val) \ do { result.iv = op val.iv; result.flags = val.flags; } while (0) #define BINARY_OP(result, val1, op, val2) \ do { \ result.iv = val1.iv op val2.iv; \ result.flags = val1.flags | val2.flags; \ } while (0) #define LLC_OR(t1, t2) \ ( \ ((t1) & T_LONG) && ((t2) & T_LONG) \ ? (t1) | (t2) | T_LONGLONG : (t1) | (t2) \ ) #define F_LOCAL 0x00000001U #define BEGIN_LOCAL (PSTATE->flags |= F_LOCAL) #define END_LOCAL (PSTATE->flags &= ~F_LOCAL) #define IS_LOCAL (PSTATE->flags & F_LOCAL) /*===== TYPEDEFS =============================================================*/ struct _parserState { const CParseConfig *pCPC; CParseInfo *pCPI; PragmaState *pragma; struct CPP *pp; struct lexer_state *pLexer; FileInfo *pFI; u_32 flags; }; /* Line 189 of yacc.c */ #line 288 "ctlib/y_parser.c" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 1 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { AUTO_TOK = 258, DOUBLE_TOK = 259, INT_TOK = 260, STRUCT_TOK = 261, BREAK_TOK = 262, ELSE_TOK = 263, LONG_TOK = 264, SWITCH_TOK = 265, CASE_TOK = 266, ENUM_TOK = 267, REGISTER_TOK = 268, TYPEDEF_TOK = 269, CHAR_TOK = 270, EXTERN_TOK = 271, RETURN_TOK = 272, UNION_TOK = 273, CONST_TOK = 274, FLOAT_TOK = 275, SHORT_TOK = 276, UNSIGNED_TOK = 277, CONTINUE_TOK = 278, FOR_TOK = 279, SIGNED_TOK = 280, VOID_TOK = 281, DEFAULT_TOK = 282, GOTO_TOK = 283, SIZEOF_TOK = 284, VOLATILE_TOK = 285, DO_TOK = 286, IF_TOK = 287, STATIC_TOK = 288, WHILE_TOK = 289, INLINE_TOK = 290, RESTRICT_TOK = 291, ASM_TOK = 292, SKIP_TOK = 293, PTR_OP = 294, INC_OP = 295, DEC_OP = 296, LEFT_OP = 297, RIGHT_OP = 298, LE_OP = 299, GE_OP = 300, EQ_OP = 301, NE_OP = 302, AND_OP = 303, OR_OP = 304, ELLIPSIS = 305, MUL_ASSIGN = 306, DIV_ASSIGN = 307, MOD_ASSIGN = 308, ADD_ASSIGN = 309, SUB_ASSIGN = 310, LEFT_ASSIGN = 311, RIGHT_ASSIGN = 312, AND_ASSIGN = 313, XOR_ASSIGN = 314, OR_ASSIGN = 315, STRING_LITERAL = 316, CONSTANT = 317, TYPE_NAME = 318, IDENTIFIER = 319 }; #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 214 of yacc.c */ #line 252 "ctlib/parser.y" HashNode identifier; Declarator *pDecl; AbstractDeclarator absDecl; StructDeclaration *pStructDecl; TypedefList *pTypedefList; LinkedList list; Enumerator *pEnum; Typedef *pTypedef; TypeSpec tspec; Value value; struct { u_32 uval; ContextInfo ctx; } context; u_32 uval; char oper; /* Line 214 of yacc.c */ #line 409 "ctlib/y_parser.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ #line 271 "ctlib/parser.y" /*===== STATIC VARIABLES =====================================================*/ /* TOKEN MAPPING TABLE */ static const int tokentab[] = { 0, /* NONE, */ /* whitespace */ 0, /* NEWLINE, */ /* newline */ 0, /* COMMENT, */ /* comment */ 0, /* NUMBER, */ /* number constant */ 0, /* NAME, */ /* identifier */ 0, /* BUNCH, */ /* non-C characters */ 0, /* PRAGMA, */ /* a #pragma directive */ 0, /* CONTEXT, */ /* new file or #line */ 0, /* STRING, */ /* constant "xxx" */ CONSTANT, /* CHAR, */ /* constant 'xxx' */ '/', /* SLASH, */ /* / */ DIV_ASSIGN, /* ASSLASH, */ /* /= */ '-', /* MINUS, */ /* - */ DEC_OP, /* MMINUS, */ /* -- */ SUB_ASSIGN, /* ASMINUS, */ /* -= */ PTR_OP, /* ARROW, */ /* -> */ '+', /* PLUS, */ /* + */ INC_OP, /* PPLUS, */ /* ++ */ ADD_ASSIGN, /* ASPLUS, */ /* += */ '<', /* LT, */ /* < */ LE_OP, /* LEQ, */ /* <= */ LEFT_OP, /* LSH, */ /* << */ LEFT_ASSIGN, /* ASLSH, */ /* <<= */ '>', /* GT, */ /* > */ GE_OP, /* GEQ, */ /* >= */ RIGHT_OP, /* RSH, */ /* >> */ RIGHT_ASSIGN, /* ASRSH, */ /* >>= */ '=', /* ASGN, */ /* = */ EQ_OP, /* SAME, */ /* == */ #ifdef CAST_OP 0, /* CAST, */ /* => */ #endif '~', /* NOT, */ /* ~ */ NE_OP, /* NEQ, */ /* != */ '&', /* AND, */ /* & */ AND_OP, /* LAND, */ /* && */ AND_ASSIGN, /* ASAND, */ /* &= */ '|', /* OR, */ /* | */ OR_OP, /* LOR, */ /* || */ OR_ASSIGN, /* ASOR, */ /* |= */ '%', /* PCT, */ /* % */ MOD_ASSIGN, /* ASPCT, */ /* %= */ '*', /* STAR, */ /* * */ MUL_ASSIGN, /* ASSTAR, */ /* *= */ '^', /* CIRC, */ /* ^ */ XOR_ASSIGN, /* ASCIRC, */ /* ^= */ '!', /* LNOT, */ /* ! */ '{', /* LBRA, */ /* { */ '}', /* RBRA, */ /* } */ '[', /* LBRK, */ /* [ */ ']', /* RBRK, */ /* ] */ '(', /* LPAR, */ /* ( */ ')', /* RPAR, */ /* ) */ ',', /* COMMA, */ /* , */ '?', /* QUEST, */ /* ? */ ';', /* SEMIC, */ /* ; */ ':', /* COLON, */ /* : */ '.', /* DOT, */ /* . */ ELLIPSIS, /* MDOTS, */ /* ... */ 0, /* SHARP, */ /* # */ 0, /* DSHARP, */ /* ## */ 0, /* OPT_NONE, */ /* optional space to separate tokens in text output */ 0, /* DIGRAPH_TOKENS, */ /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ '[', /* DIG_LBRK, */ /* <: */ ']', /* DIG_RBRK, */ /* :> */ '{', /* DIG_LBRA, */ /* <% */ '}', /* DIG_RBRA, */ /* %> */ 0, /* DIG_SHARP, */ /* %: */ 0, /* DIG_DSHARP, */ /* %:%: */ 0, /* DIGRAPH_TOKENS_END, */ /* digraph tokens end here */ 0, /* LAST_MEANINGFUL_TOKEN, */ /* reserved words will go there */ 0, /* MACROARG, */ /* special token for representing macro arguments */ 0, /* UPLUS = CPPERR, */ /* unary + */ 0, /* UMINUS */ /* unary - */ }; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static inline int c_lex(YYSTYPE *plval, ParserState *pState); static inline int get_char_value(const char *s); static inline int string_size(const char *s); static inline int check_type(YYSTYPE *plval, ParserState *pState, const char *s); static void parser_error(ParserState *pState, const char *msg); /* Line 264 of yacc.c */ #line 525 "ctlib/y_parser.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 125 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 2186 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 89 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 133 /* YYNRULES -- Number of rules. */ #define YYNRULES 367 /* YYNRULES -- Number of states. */ #define YYNSTATES 618 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 319 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 80, 2, 2, 2, 82, 75, 2, 65, 66, 76, 77, 69, 78, 72, 81, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 68, 67, 83, 88, 84, 87, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 70, 2, 71, 85, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 73, 86, 74, 79, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 5, 8, 13, 14, 16, 22, 29, 38, 49, 62, 63, 65, 67, 71, 76, 84, 86, 90, 92, 94, 96, 100, 102, 107, 111, 116, 117, 122, 123, 128, 131, 134, 142, 144, 146, 148, 152, 154, 157, 160, 163, 166, 171, 173, 175, 177, 179, 181, 183, 185, 190, 192, 196, 200, 204, 206, 210, 214, 216, 220, 224, 226, 230, 234, 238, 242, 244, 248, 252, 254, 258, 260, 264, 266, 270, 272, 276, 278, 282, 284, 290, 292, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 319, 321, 323, 327, 329, 330, 332, 335, 338, 341, 344, 349, 354, 360, 365, 370, 376, 378, 380, 382, 384, 386, 388, 390, 393, 396, 398, 401, 402, 404, 406, 408, 410, 412, 414, 417, 420, 423, 426, 428, 431, 434, 437, 440, 443, 446, 448, 450, 452, 455, 458, 460, 463, 466, 468, 470, 473, 476, 479, 481, 484, 487, 489, 491, 493, 495, 497, 499, 501, 503, 505, 507, 509, 511, 513, 515, 517, 519, 521, 526, 532, 535, 537, 539, 541, 542, 544, 546, 549, 552, 555, 557, 560, 564, 567, 569, 570, 572, 575, 581, 588, 591, 593, 595, 599, 601, 605, 607, 611, 613, 617, 619, 622, 625, 628, 630, 633, 636, 638, 641, 644, 647, 649, 652, 655, 657, 661, 663, 665, 667, 670, 672, 675, 676, 679, 682, 687, 689, 692, 697, 698, 701, 703, 706, 710, 713, 714, 716, 718, 720, 722, 724, 726, 728, 730, 734, 739, 743, 746, 750, 754, 759, 761, 764, 766, 769, 772, 778, 786, 792, 798, 806, 816, 820, 823, 826, 830, 831, 833, 835, 838, 840, 842, 844, 845, 849, 850, 855, 856, 861, 862, 867, 868, 873, 874, 878, 879, 884, 885, 890, 891, 896, 897, 902, 903, 908, 909, 915, 916, 922, 923, 929, 930, 936, 938, 940, 942, 944, 946, 949, 951, 953, 956, 960, 964, 969, 971, 976, 982, 985, 989, 993, 998, 1003, 1005, 1009, 1011, 1013, 1015, 1018, 1022, 1025, 1029, 1034, 1036, 1040, 1042, 1045, 1049, 1054, 1058, 1063, 1065, 1067, 1069, 1071, 1074, 1078, 1083, 1089, 1095, 1100, 1105, 1110, 1112, 1115, 1118, 1122, 1126, 1130, 1134 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 184, 0, -1, 61, -1, 90, 61, -1, 37, 65, 90, 66, -1, -1, 91, -1, 37, 65, 122, 66, 67, -1, 37, 132, 65, 122, 66, 67, -1, 37, 132, 65, 122, 68, 95, 66, 67, -1, 37, 132, 65, 122, 68, 95, 68, 95, 66, 67, -1, 37, 132, 65, 122, 68, 95, 68, 95, 68, 98, 66, 67, -1, -1, 96, -1, 97, -1, 96, 69, 97, -1, 61, 65, 122, 66, -1, 70, 64, 71, 61, 65, 122, 66, -1, 90, -1, 98, 69, 90, -1, 64, -1, 62, -1, 90, -1, 65, 122, 66, -1, 99, -1, 100, 70, 122, 71, -1, 100, 65, 66, -1, 100, 65, 104, 66, -1, -1, 100, 101, 72, 103, -1, -1, 100, 102, 39, 103, -1, 100, 40, -1, 100, 41, -1, 65, 167, 66, 73, 170, 174, 74, -1, 64, -1, 63, -1, 119, -1, 104, 69, 119, -1, 100, -1, 40, 105, -1, 41, 105, -1, 106, 107, -1, 29, 105, -1, 29, 65, 167, 66, -1, 75, -1, 76, -1, 77, -1, 78, -1, 79, -1, 80, -1, 105, -1, 65, 167, 66, 107, -1, 107, -1, 108, 76, 107, -1, 108, 81, 107, -1, 108, 82, 107, -1, 108, -1, 109, 77, 108, -1, 109, 78, 108, -1, 109, -1, 110, 42, 109, -1, 110, 43, 109, -1, 110, -1, 111, 83, 110, -1, 111, 84, 110, -1, 111, 44, 110, -1, 111, 45, 110, -1, 111, -1, 112, 46, 111, -1, 112, 47, 111, -1, 112, -1, 113, 75, 112, -1, 113, -1, 114, 85, 113, -1, 114, -1, 115, 86, 114, -1, 115, -1, 116, 48, 115, -1, 116, -1, 117, 49, 116, -1, 117, -1, 117, 87, 122, 68, 118, -1, 118, -1, 105, 120, 119, -1, 88, -1, 51, -1, 52, -1, 53, -1, 54, -1, 55, -1, 56, -1, 57, -1, 58, -1, 59, -1, 60, -1, -1, 119, -1, 119, -1, 122, 69, 119, -1, 118, -1, -1, 122, -1, 137, 67, -1, 138, 67, -1, 127, 67, -1, 126, 67, -1, 130, 211, 92, 168, -1, 131, 211, 92, 168, -1, 126, 69, 211, 92, 168, -1, 128, 203, 92, 168, -1, 129, 203, 92, 168, -1, 127, 69, 203, 92, 168, -1, 135, -1, 137, -1, 142, -1, 136, -1, 138, -1, 143, -1, 144, -1, 131, 144, -1, 130, 133, -1, 134, -1, 131, 134, -1, -1, 131, -1, 144, -1, 134, -1, 19, -1, 36, -1, 30, -1, 130, 145, -1, 136, 144, -1, 135, 133, -1, 135, 145, -1, 145, -1, 131, 145, -1, 136, 134, -1, 136, 145, -1, 130, 146, -1, 138, 144, -1, 137, 133, -1, 140, -1, 139, -1, 158, -1, 131, 158, -1, 139, 134, -1, 147, -1, 131, 147, -1, 140, 134, -1, 140, -1, 143, -1, 143, 144, -1, 130, 63, -1, 142, 133, -1, 63, -1, 131, 63, -1, 143, 134, -1, 14, -1, 16, -1, 33, -1, 3, -1, 13, -1, 35, -1, 5, -1, 15, -1, 21, -1, 9, -1, 20, -1, 4, -1, 25, -1, 22, -1, 26, -1, 147, -1, 158, -1, 148, 73, 150, 74, -1, 148, 166, 73, 150, 74, -1, 148, 166, -1, 149, -1, 6, -1, 18, -1, -1, 151, -1, 152, -1, 151, 152, -1, 154, 67, -1, 153, 67, -1, 141, -1, 129, 155, -1, 154, 69, 155, -1, 203, 156, -1, 157, -1, -1, 157, -1, 68, 123, -1, 159, 73, 160, 174, 74, -1, 159, 166, 73, 160, 174, 74, -1, 159, 166, -1, 12, -1, 161, -1, 160, 69, 161, -1, 166, -1, 166, 88, 123, -1, 163, -1, 163, 69, 50, -1, 164, -1, 163, 69, 164, -1, 128, -1, 128, 217, -1, 128, 211, -1, 128, 205, -1, 130, -1, 130, 217, -1, 130, 211, -1, 129, -1, 129, 217, -1, 129, 211, -1, 129, 205, -1, 131, -1, 131, 217, -1, 131, 211, -1, 64, -1, 165, 69, 64, -1, 64, -1, 63, -1, 129, -1, 129, 217, -1, 131, -1, 131, 217, -1, -1, 88, 169, -1, 73, 74, -1, 73, 170, 174, 74, -1, 119, -1, 171, 169, -1, 170, 69, 171, 169, -1, -1, 172, 88, -1, 173, -1, 172, 173, -1, 70, 123, 71, -1, 72, 166, -1, -1, 69, -1, 176, -1, 177, -1, 180, -1, 181, -1, 182, -1, 183, -1, 94, -1, 166, 68, 175, -1, 11, 123, 68, 175, -1, 27, 68, 175, -1, 73, 74, -1, 73, 178, 74, -1, 73, 179, 74, -1, 73, 178, 179, 74, -1, 125, -1, 178, 125, -1, 175, -1, 179, 175, -1, 124, 67, -1, 32, 65, 122, 66, 175, -1, 32, 65, 122, 66, 175, 8, 175, -1, 10, 65, 122, 66, 175, -1, 34, 65, 122, 66, 175, -1, 31, 175, 34, 65, 122, 66, 67, -1, 24, 65, 124, 67, 124, 67, 124, 66, 175, -1, 28, 166, 67, -1, 23, 67, -1, 7, 67, -1, 17, 124, 67, -1, -1, 185, -1, 186, -1, 185, 186, -1, 187, -1, 125, -1, 93, -1, -1, 211, 188, 177, -1, -1, 128, 211, 189, 177, -1, -1, 129, 211, 190, 177, -1, -1, 130, 211, 191, 177, -1, -1, 131, 211, 192, 177, -1, -1, 215, 193, 177, -1, -1, 128, 215, 194, 177, -1, -1, 129, 215, 195, 177, -1, -1, 130, 215, 196, 177, -1, -1, 131, 215, 197, 177, -1, -1, 215, 178, 198, 177, -1, -1, 128, 215, 178, 199, 177, -1, -1, 129, 215, 178, 200, 177, -1, -1, 130, 215, 178, 201, 177, -1, -1, 131, 215, 178, 202, 177, -1, 211, -1, 204, -1, 208, -1, 205, -1, 63, -1, 63, 218, -1, 206, -1, 207, -1, 76, 205, -1, 76, 131, 205, -1, 65, 206, 66, -1, 65, 206, 66, 218, -1, 209, -1, 76, 65, 210, 66, -1, 76, 131, 65, 210, 66, -1, 76, 208, -1, 76, 131, 208, -1, 65, 208, 66, -1, 65, 210, 218, 66, -1, 65, 208, 66, 218, -1, 63, -1, 65, 210, 66, -1, 212, -1, 214, -1, 213, -1, 76, 211, -1, 76, 131, 211, -1, 214, 218, -1, 65, 212, 66, -1, 65, 212, 66, 218, -1, 64, -1, 65, 214, 66, -1, 216, -1, 76, 215, -1, 76, 131, 215, -1, 214, 65, 165, 66, -1, 65, 215, 66, -1, 65, 215, 66, 218, -1, 220, -1, 221, -1, 218, -1, 219, -1, 65, 66, -1, 65, 162, 66, -1, 70, 132, 121, 71, -1, 70, 33, 132, 119, 71, -1, 70, 131, 33, 119, 71, -1, 70, 132, 76, 71, -1, 219, 70, 119, 71, -1, 219, 70, 76, 71, -1, 76, -1, 76, 131, -1, 76, 217, -1, 76, 131, 217, -1, 65, 220, 66, -1, 65, 221, 66, -1, 65, 218, 66, -1, 65, 220, 66, 218, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 627, 627, 628, 636, 639, 641, 645, 649, 650, 652, 655, 661, 663, 667, 668, 672, 673, 681, 682, 687, 702, 703, 704, 714, 715, 716, 717, 718, 718, 719, 719, 720, 721, 722, 726, 727, 731, 732, 736, 737, 738, 739, 757, 758, 762, 763, 764, 765, 766, 767, 771, 772, 776, 777, 779, 786, 796, 797, 799, 804, 805, 807, 812, 813, 815, 817, 819, 824, 825, 827, 832, 833, 838, 839, 844, 845, 850, 851, 856, 857, 862, 863, 868, 869, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 887, 888, 891, 892, 896, 900, 902, 940, 941, 942, 943, 950, 974, 980, 991, 1013, 1019, 1031, 1036, 1037, 1042, 1047, 1048, 1054, 1055, 1056, 1060, 1061, 1064, 1066, 1070, 1071, 1075, 1076, 1077, 1081, 1082, 1083, 1084, 1088, 1089, 1090, 1091, 1095, 1100, 1105, 1113, 1114, 1118, 1119, 1120, 1124, 1125, 1126, 1130, 1131, 1134, 1139, 1144, 1152, 1153, 1154, 1158, 1159, 1160, 1161, 1162, 1163, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1179, 1180, 1184, 1201, 1237, 1266, 1275, 1276, 1280, 1281, 1285, 1296, 1310, 1311, 1315, 1319, 1332, 1346, 1373, 1393, 1394, 1398, 1402, 1419, 1455, 1486, 1494, 1509, 1528, 1541, 1557, 1558, 1562, 1563, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1588, 1589, 1593, 1594, 1601, 1614, 1635, 1643, 1654, 1656, 1660, 1661, 1662, 1666, 1667, 1670, 1672, 1676, 1677, 1681, 1682, 1685, 1687, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1702, 1703, 1704, 1708, 1709, 1710, 1711, 1715, 1716, 1720, 1721, 1725, 1729, 1730, 1731, 1735, 1736, 1737, 1741, 1742, 1743, 1744, 1750, 1752, 1756, 1757, 1761, 1762, 1763, 1767, 1767, 1769, 1769, 1771, 1771, 1773, 1773, 1775, 1775, 1778, 1778, 1779, 1779, 1780, 1780, 1781, 1781, 1782, 1782, 1784, 1784, 1785, 1785, 1786, 1786, 1787, 1787, 1788, 1788, 1792, 1793, 1797, 1798, 1802, 1806, 1820, 1827, 1828, 1834, 1843, 1844, 1855, 1856, 1862, 1868, 1874, 1883, 1884, 1889, 1897, 1901, 1905, 1906, 1910, 1911, 1917, 1926, 1931, 1932, 1940, 1952, 1956, 1957, 1958, 1962, 1967, 1968, 1976, 1977, 1978, 1996, 1997, 1998, 2002, 2013, 2024, 2035, 2036, 2047, 2061, 2066, 2071, 2076, 2084, 2085, 2086, 2101 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "AUTO_TOK", "DOUBLE_TOK", "INT_TOK", "STRUCT_TOK", "BREAK_TOK", "ELSE_TOK", "LONG_TOK", "SWITCH_TOK", "CASE_TOK", "ENUM_TOK", "REGISTER_TOK", "TYPEDEF_TOK", "CHAR_TOK", "EXTERN_TOK", "RETURN_TOK", "UNION_TOK", "CONST_TOK", "FLOAT_TOK", "SHORT_TOK", "UNSIGNED_TOK", "CONTINUE_TOK", "FOR_TOK", "SIGNED_TOK", "VOID_TOK", "DEFAULT_TOK", "GOTO_TOK", "SIZEOF_TOK", "VOLATILE_TOK", "DO_TOK", "IF_TOK", "STATIC_TOK", "WHILE_TOK", "INLINE_TOK", "RESTRICT_TOK", "ASM_TOK", "SKIP_TOK", "PTR_OP", "INC_OP", "DEC_OP", "LEFT_OP", "RIGHT_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "ELLIPSIS", "MUL_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", "ADD_ASSIGN", "SUB_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "STRING_LITERAL", "CONSTANT", "TYPE_NAME", "IDENTIFIER", "'('", "')'", "';'", "':'", "','", "'['", "']'", "'.'", "'{'", "'}'", "'&'", "'*'", "'+'", "'-'", "'~'", "'!'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'", "'='", "$accept", "string_literal_list", "asm_string", "asm_string_opt", "asm_expr", "asm_statement", "asm_operands_opt", "asm_operands", "asm_operand", "asm_clobbers", "primary_expression", "postfix_expression", "$@1", "$@2", "member_name", "argument_expression_list", "unary_expression", "unary_operator", "cast_expression", "multiplicative_expression", "additive_expression", "shift_expression", "relational_expression", "equality_expression", "AND_expression", "exclusive_OR_expression", "inclusive_OR_expression", "logical_AND_expression", "logical_OR_expression", "conditional_expression", "assignment_expression", "assignment_operator", "assignment_expression_opt", "comma_expression", "constant_expression", "comma_expression_opt", "declaration", "default_declaring_list", "declaring_list", "declaration_specifier", "type_specifier", "declaration_qualifier_list", "type_qualifier_list", "type_qualifier_list_opt", "declaration_qualifier", "type_qualifier", "basic_declaration_specifier", "basic_type_specifier", "sue_declaration_specifier", "sue_type_specifier", "enum_type_specifier", "su_type_specifier", "sut_type_specifier", "typedef_declaration_specifier", "typedef_type_specifier", "storage_class", "basic_type_name", "elaborated_type_name", "aggregate_name", "aggregate_key_context", "aggregate_key", "member_declaration_list_opt", "member_declaration_list", "member_declaration", "unnamed_su_declaration", "member_declaring_list", "member_declarator", "bit_field_size_opt", "bit_field_size", "enum_name", "enum_key_context", "enumerator_list", "enumerator", "parameter_type_list", "parameter_list", "parameter_declaration", "identifier_list", "identifier_or_typedef_name", "type_name", "initializer_opt", "initializer", "initializer_list", "designation_opt", "designator_list", "designator", "comma_opt", "statement", "labeled_statement", "compound_statement", "declaration_list", "statement_list", "expression_statement", "selection_statement", "iteration_statement", "jump_statement", "source_file", "translation_unit", "external_definition", "function_definition", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12", "$@13", "$@14", "$@15", "$@16", "$@17", "declarator", "typedef_declarator", "parameter_typedef_declarator", "clean_typedef_declarator", "clean_postfix_typedef_declarator", "paren_typedef_declarator", "paren_postfix_typedef_declarator", "simple_paren_typedef_declarator", "identifier_declarator", "unary_identifier_declarator", "postfix_identifier_declarator", "paren_identifier_declarator", "old_function_declarator", "postfix_old_function_declarator", "abstract_declarator", "postfixing_abstract_declarator", "array_abstract_declarator", "unary_abstract_declarator", "postfix_abstract_declarator", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 40, 41, 59, 58, 44, 91, 93, 46, 123, 125, 38, 42, 43, 45, 126, 33, 47, 37, 60, 62, 94, 124, 63, 61 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 89, 90, 90, 91, 92, 92, 93, 94, 94, 94, 94, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 99, 99, 100, 100, 100, 100, 101, 100, 102, 100, 100, 100, 100, 103, 103, 104, 104, 105, 105, 105, 105, 105, 105, 106, 106, 106, 106, 106, 106, 107, 107, 108, 108, 108, 108, 109, 109, 109, 110, 110, 110, 111, 111, 111, 111, 111, 112, 112, 112, 113, 113, 114, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 122, 122, 123, 124, 124, 125, 125, 125, 125, 126, 126, 126, 127, 127, 127, 128, 128, 128, 129, 129, 129, 130, 130, 130, 131, 131, 132, 132, 133, 133, 134, 134, 134, 135, 135, 135, 135, 136, 136, 136, 136, 137, 137, 137, 138, 138, 139, 139, 139, 140, 140, 140, 141, 141, 142, 142, 142, 143, 143, 143, 144, 144, 144, 144, 144, 144, 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, 146, 147, 147, 147, 148, 149, 149, 150, 150, 151, 151, 152, 152, 153, 154, 154, 155, 155, 156, 156, 157, 158, 158, 158, 159, 160, 160, 161, 161, 162, 162, 163, 163, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 165, 165, 166, 166, 167, 167, 167, 167, 168, 168, 169, 169, 169, 170, 170, 171, 171, 172, 172, 173, 173, 174, 174, 175, 175, 175, 175, 175, 175, 175, 176, 176, 176, 177, 177, 177, 177, 178, 178, 179, 179, 180, 181, 181, 181, 182, 182, 182, 183, 183, 183, 183, 184, 184, 185, 185, 186, 186, 186, 188, 187, 189, 187, 190, 187, 191, 187, 192, 187, 193, 187, 194, 187, 195, 187, 196, 187, 197, 187, 198, 187, 199, 187, 200, 187, 201, 187, 202, 187, 203, 203, 204, 204, 205, 205, 205, 206, 206, 206, 207, 207, 208, 208, 208, 208, 208, 209, 209, 209, 210, 210, 211, 211, 212, 212, 212, 213, 213, 213, 214, 214, 215, 215, 215, 216, 216, 216, 217, 217, 217, 218, 218, 218, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 221, 221, 221, 221 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 2, 4, 0, 1, 5, 6, 8, 10, 12, 0, 1, 1, 3, 4, 7, 1, 3, 1, 1, 1, 3, 1, 4, 3, 4, 0, 4, 0, 4, 2, 2, 7, 1, 1, 1, 3, 1, 2, 2, 2, 2, 4, 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, 1, 0, 1, 2, 2, 2, 2, 4, 4, 5, 4, 4, 5, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 2, 1, 1, 1, 0, 1, 1, 2, 2, 2, 1, 2, 3, 2, 1, 0, 1, 2, 5, 6, 2, 1, 1, 3, 1, 3, 1, 3, 1, 3, 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1, 2, 2, 1, 3, 1, 1, 1, 2, 1, 2, 0, 2, 2, 4, 1, 2, 4, 0, 2, 1, 2, 3, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 3, 4, 3, 2, 3, 3, 4, 1, 2, 1, 2, 2, 5, 7, 5, 5, 7, 9, 3, 2, 2, 3, 0, 1, 1, 2, 1, 1, 1, 0, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 3, 0, 4, 0, 4, 0, 4, 0, 4, 0, 4, 0, 5, 0, 5, 0, 5, 0, 5, 1, 1, 1, 1, 1, 2, 1, 1, 2, 3, 3, 4, 1, 4, 5, 2, 3, 3, 4, 4, 1, 3, 1, 1, 1, 2, 3, 2, 3, 4, 1, 3, 1, 2, 3, 4, 3, 4, 1, 1, 1, 1, 2, 3, 4, 5, 5, 4, 4, 4, 1, 2, 2, 3, 3, 3, 3, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { 273, 161, 169, 164, 179, 167, 198, 162, 158, 165, 159, 180, 128, 168, 166, 171, 170, 172, 130, 160, 163, 129, 0, 155, 340, 0, 0, 279, 278, 0, 0, 0, 0, 0, 0, 122, 113, 116, 114, 117, 143, 142, 115, 118, 119, 135, 147, 0, 178, 144, 0, 0, 274, 275, 277, 280, 332, 334, 333, 290, 342, 0, 0, 0, 0, 0, 335, 343, 106, 0, 105, 0, 314, 0, 0, 5, 311, 313, 316, 317, 312, 322, 310, 292, 5, 310, 294, 153, 121, 127, 126, 131, 139, 173, 174, 5, 296, 156, 123, 120, 136, 148, 145, 5, 298, 133, 134, 137, 132, 138, 103, 141, 104, 140, 146, 149, 154, 157, 152, 224, 223, 181, 177, 0, 197, 1, 276, 0, 0, 124, 337, 351, 258, 0, 0, 0, 0, 300, 0, 0, 0, 0, 2, 21, 20, 0, 45, 46, 47, 48, 49, 50, 22, 24, 39, 51, 0, 53, 57, 60, 63, 68, 71, 73, 75, 77, 79, 81, 83, 98, 0, 338, 341, 346, 336, 344, 0, 0, 5, 333, 0, 0, 5, 310, 0, 315, 330, 0, 0, 0, 0, 0, 0, 318, 325, 0, 6, 229, 0, 302, 0, 229, 0, 304, 0, 229, 0, 306, 0, 229, 0, 308, 0, 0, 0, 116, 117, 142, 187, 118, 0, 182, 183, 0, 0, 181, 242, 199, 201, 0, 101, 281, 221, 352, 207, 214, 211, 218, 114, 117, 0, 203, 205, 0, 124, 125, 96, 0, 5, 5, 259, 0, 291, 0, 43, 0, 40, 41, 0, 225, 227, 118, 0, 3, 32, 33, 0, 0, 0, 0, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 85, 0, 51, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, 347, 0, 0, 229, 0, 0, 0, 229, 0, 320, 327, 0, 0, 0, 319, 326, 0, 0, 110, 283, 0, 293, 111, 285, 0, 295, 107, 287, 0, 297, 108, 289, 0, 299, 0, 188, 191, 192, 175, 184, 186, 185, 0, 0, 243, 0, 0, 242, 0, 0, 0, 101, 0, 0, 0, 0, 101, 0, 0, 124, 155, 20, 254, 250, 102, 0, 0, 260, 244, 245, 101, 101, 246, 247, 248, 249, 0, 360, 210, 209, 208, 350, 348, 349, 217, 216, 215, 0, 360, 213, 212, 220, 219, 353, 0, 345, 0, 125, 0, 0, 46, 97, 0, 46, 0, 301, 0, 0, 23, 0, 360, 226, 228, 0, 26, 0, 37, 0, 0, 0, 84, 54, 55, 56, 58, 59, 61, 62, 66, 67, 64, 65, 69, 70, 72, 74, 76, 78, 80, 0, 7, 99, 109, 0, 112, 331, 321, 329, 328, 323, 0, 0, 236, 233, 230, 303, 305, 307, 309, 100, 194, 190, 193, 189, 176, 200, 195, 202, 0, 271, 0, 0, 0, 270, 101, 101, 0, 0, 0, 0, 0, 262, 101, 255, 101, 256, 261, 0, 0, 0, 361, 362, 361, 204, 206, 222, 0, 0, 357, 354, 359, 358, 44, 0, 361, 236, 52, 27, 0, 25, 36, 35, 29, 31, 0, 324, 4, 0, 0, 231, 242, 0, 0, 238, 196, 0, 101, 272, 0, 253, 269, 0, 0, 0, 0, 251, 257, 366, 364, 365, 363, 355, 356, 242, 38, 82, 0, 241, 236, 0, 234, 237, 239, 101, 252, 101, 0, 101, 101, 0, 367, 0, 240, 0, 232, 265, 0, 0, 263, 266, 0, 12, 34, 235, 101, 0, 101, 8, 0, 0, 0, 13, 14, 0, 267, 264, 0, 0, 0, 12, 0, 101, 0, 0, 9, 0, 15, 268, 16, 0, 0, 0, 0, 10, 18, 0, 0, 0, 0, 17, 11, 19 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 152, 196, 205, 27, 369, 586, 587, 588, 611, 153, 154, 268, 269, 518, 421, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 281, 408, 370, 466, 371, 132, 29, 30, 133, 134, 135, 136, 246, 88, 35, 36, 37, 38, 39, 40, 41, 218, 42, 43, 44, 45, 92, 46, 47, 48, 220, 221, 222, 223, 224, 341, 467, 342, 49, 50, 226, 227, 240, 241, 242, 243, 372, 262, 324, 460, 526, 527, 528, 529, 351, 373, 374, 375, 137, 377, 378, 379, 380, 381, 51, 52, 53, 54, 127, 198, 202, 206, 210, 138, 200, 204, 208, 212, 251, 326, 330, 334, 338, 75, 76, 77, 78, 79, 189, 81, 190, 66, 56, 57, 179, 64, 60, 497, 387, 131, 388, 389 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -507 static const yytype_int16 yypact[] = { 1279, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -56, -507, -507, 42, 331, -507, -507, 134, 144, 431, 431, 1487, 1523, -507, 2106, 2106, 970, 696, 67, 67, 798, 798, -507, -507, -507, 227, -507, -507, 262, 28, 1279, -507, -507, -507, -507, -507, -40, 1851, -507, 1969, -42, 307, -1, 331, -507, -507, -507, 113, -507, 620, 231, 656, 49, 94, -507, -507, -507, -507, -507, -507, 87, 1851, 94, 157, 1851, -507, -507, -507, -507, -507, -507, -507, -507, 22, 1851, -507, -507, -507, -507, -507, -507, 32, 1851, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, 1885, 167, 117, 203, -507, -507, 210, 1722, 198, -507, 82, -507, 620, 620, 1588, 1624, 1851, 210, 1976, 2021, 2021, -507, -507, -507, 917, -507, -507, -507, -507, -507, -507, 111, -507, 469, 911, 1969, -507, 191, 245, 385, 17, 477, 272, 271, 303, 335, 9, -507, -507, 21, 231, -507, 231, -507, -507, 113, 876, 94, 231, 670, 103, 94, -507, 1778, -507, -507, 656, 327, 332, 231, 656, 686, -507, -507, 351, -507, 347, 210, 1851, 210, 347, 210, 1851, 210, 347, 210, 1851, 210, 347, 210, 1851, 210, 407, 1913, 2150, -507, 24, -507, 62, 346, 1885, -507, 379, 297, 1885, 388, -507, 405, 117, 762, -507, -507, -507, 694, 694, 1315, 1383, 798, 599, 414, 404, -507, 173, 67, 224, 2028, 2073, 94, 94, -507, 210, -507, 917, -507, 917, -507, -507, 218, 34, 1686, 67, 434, -507, -507, -507, 1916, 1969, 441, 501, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, 1969, -507, -507, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 1969, 475, 1969, -507, -507, 314, 876, 347, 670, 670, 1044, 347, 356, 231, 231, 485, 378, 656, -507, -507, 497, 1110, -507, -507, 210, -507, -507, -507, 210, -507, -507, -507, 210, -507, -507, -507, 210, -507, 1969, -507, -507, 505, -507, -507, -507, -507, 407, 502, 117, 503, 1969, 388, 508, 514, 1969, 1969, 513, 517, 533, 117, 1065, 544, 545, 67, 549, 553, -507, -507, 554, 558, 561, -507, -507, -507, 840, 663, -507, -507, -507, -507, 1143, 1014, -507, -507, -507, -507, -507, -507, -507, -507, -507, 1211, 1175, -507, -507, -507, -507, -507, 1812, -507, 567, 67, 1969, 1969, 562, -507, 564, 565, 566, -507, 575, 578, -507, 1419, 641, -507, -507, 1924, -507, 239, -507, 7, 464, 464, -507, -507, -507, -507, 191, 191, 245, 245, 385, 385, 385, 385, 17, 17, 477, 272, 271, 303, 335, 480, -507, -507, -507, 670, -507, -507, -507, -507, -507, -507, 421, 267, 266, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, 576, -507, 1969, 581, 585, -507, 1969, 1065, 586, 633, 1969, 1969, 589, -507, 1065, -507, 991, -507, -507, 602, 606, 609, 1014, -507, 1175, -507, -507, -507, 607, 610, -507, -507, -507, -507, 616, 616, 641, 205, -507, -507, 1969, -507, -507, -507, -507, -507, 1969, -507, -507, 1969, 117, -507, 613, 1110, 99, -507, -507, 282, 1065, -507, 626, -507, -507, 636, 291, 316, 1969, -507, -507, -507, 231, -507, -507, -507, -507, 613, -507, -507, 627, -507, 340, 628, -507, -507, -507, 1065, -507, 1969, 1969, 1065, 1065, 416, -507, 634, -507, 1110, -507, -507, 640, 333, 705, -507, 647, 41, -507, -507, 1969, 648, 1065, -507, 658, 666, 410, 676, -507, 681, -507, -507, 1969, 682, 687, 41, 41, 1065, 381, 699, -507, 454, -507, -507, -507, 690, 733, 497, 1969, -507, 111, 392, 445, 737, 497, -507, -507, 111 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -507, -310, -507, -20, -507, -507, 166, -507, 209, -507, -507, -507, -507, -507, 382, -507, 299, -507, -139, 276, 265, 365, 275, 511, 512, 510, 515, 519, -507, -338, -172, -507, -507, -61, -325, -354, 5, -507, -507, 36, 153, 37, 150, -204, -23, 8, -507, 304, -76, 137, -507, -105, -507, -507, 353, 426, 252, -507, 217, -507, -507, 588, -507, 595, -507, -507, 470, -507, 478, 367, -507, 600, 482, -507, -507, 430, -507, -43, 283, 208, -506, 337, 324, -507, 354, -331, 79, -507, 418, -57, 507, -507, -507, -507, -507, -507, -507, 827, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, -507, 6, -507, -51, -63, -507, 178, -507, -120, 1, -17, -507, 123, 614, -507, 109, -52, -507, -300, -123 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -289 static const yytype_int16 yytable[] = { 170, 55, 465, 478, 122, 28, 130, 124, 62, 61, 188, 130, 457, 105, 465, 111, 217, 283, 465, 116, 185, 556, 474, 193, 171, 128, 199, 473, 125, 203, 129, 477, 82, 85, 95, 103, 31, 33, 84, 207, 404, 89, 98, 12, 89, 107, 89, 211, 114, 115, 89, 117, 238, 55, 18, 197, 62, 28, 301, 195, 21, 291, 292, 579, 201, 173, 174, 314, 12, 195, 178, 318, 183, 98, 407, 410, 304, 182, 515, 18, 228, 12, 494, 209, 258, 21, 12, 303, 31, 33, 304, -150, 18, 494, 422, -286, 302, 18, 21, 415, 293, 294, 584, 21, 129, -288, 24, 25, 238, 426, 416, 585, 72, 24, 191, 494, 217, 188, 26, 305, 217, 306, 12, 58, 188, 74, 534, 130, 188, -151, 193, 195, 447, 18, 183, 183, 248, 249, 317, 21, 84, 320, 250, 89, 98, 427, 428, 429, 63, 58, 34, 459, 247, 32, 58, 58, 58, 58, 309, 62, -282, 486, 313, 62, 234, 236, 72, 24, 311, 523, 62, 524, 263, 376, 62, 58, 65, 24, 176, 181, 119, 120, 551, 384, 390, 465, 228, 557, 58, 177, 314, 318, 258, 174, 258, 555, 63, 58, 552, 456, 98, 68, 34, 69, 250, 32, 423, 572, 250, 80, 80, 70, 250, 71, 183, 111, 250, 12, 567, 343, 234, 236, 98, 107, 192, 115, 589, 117, 18, 209, -284, 244, 502, 503, 21, 385, 391, 395, 397, 401, 225, 445, 402, 12, 89, 98, 89, 188, 188, 80, 93, 101, 194, 98, 18, 130, 188, 405, 216, 495, 21, 320, 317, 452, 453, 239, 317, 284, 98, 117, 495, 214, 285, 286, 213, 523, 229, 524, 237, 245, 512, 235, 216, 230, 414, 91, 100, 304, 106, 109, 119, 120, 495, 62, 62, 260, 184, 610, 259, 307, 121, 129, 62, 307, 617, 513, 238, 228, 514, 174, 63, 80, 80, 174, 63, 58, 98, 238, 482, 188, 98, 239, 287, 288, 238, 119, 120, 308, 263, 456, 493, 312, 193, 522, 237, 123, 523, 235, 524, 238, 525, 493, 550, 386, 392, 396, 398, 297, 559, 183, 12, 304, 93, 101, 343, 459, 298, 563, 216, 194, 304, 18, 216, 493, 347, 62, 348, 21, 417, 418, 321, 214, 128, 172, 213, 214, 62, 129, 213, 184, 172, 250, 564, 300, 129, 304, 188, 91, 100, 299, 216, 80, 216, 315, 403, 24, 25, 459, 316, 581, 94, 102, 304, 260, 317, 260, 259, 26, 259, 328, 523, 98, 524, 332, -243, 531, 322, 336, 234, 236, 344, 184, 451, 538, 539, 215, 129, 289, 290, 234, 236, 101, 62, 307, 307, 323, 234, 236, 254, 256, 257, 483, 63, 184, 455, 320, 346, 604, 129, 215, 304, 234, 236, 93, 101, 282, 492, 350, 613, 90, 99, 614, 90, 108, 90, 113, 100, 109, 90, 118, 72, 24, 180, 400, 219, 340, 594, 101, 595, 565, 399, 553, 576, 181, 577, 304, 184, 521, 91, 100, 321, 129, 566, 352, 72, 24, 73, 174, 261, 174, 419, 573, 94, 102, 98, 307, 98, 74, -30, 264, 265, 615, 100, 424, 304, 403, 307, 448, 98, 239, 606, 450, 607, 295, 296, 215, 80, 516, 517, 215, 239, 598, 237, 496, 266, 235, 412, 239, 413, 267, 425, -28, 446, 237, 498, 231, 235, 612, 520, 304, 237, 454, 239, 235, 432, 433, 252, 215, 142, 215, 535, 90, 99, 430, 431, 237, 510, 541, 235, 492, 438, 439, 307, 340, 219, 475, 470, 472, 219, 476, 479, 102, 480, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 481, 1, 94, 102, 546, 261, 546, 261, 484, 485, 560, 7, 8, 59, 10, 325, -224, 327, 546, 329, -223, 331, 304, 333, 487, 335, 102, 337, 488, 339, 501, 19, 504, 20, 505, 506, 507, 571, 282, 67, 508, 574, 575, 509, 83, 86, 96, 104, 532, 530, 282, 533, 536, 540, 282, 434, 435, 436, 437, 12, 591, 90, 99, 90, 113, 59, 537, 543, 411, 354, 18, 544, 355, 356, 545, 603, 21, 547, 175, 357, 548, 554, 72, 24, 180, 358, 359, 67, 511, 360, 361, 139, 561, 362, 363, 181, 364, 568, 1, 365, 562, 570, 140, 141, 12, 415, 580, 578, 7, 8, 129, 10, 582, 583, 590, 18, 416, 282, 186, 24, 187, 21, 592, 142, 143, 119, 367, 145, 19, 593, 20, 74, 186, 24, 310, 230, 491, 146, 147, 148, 149, 150, 151, 461, 596, 181, 597, 462, 72, 24, 319, 463, 599, 600, 608, 464, 72, 24, 382, 605, 601, 74, 112, 129, 1, 2, 3, 4, 354, 383, 5, 355, 356, 6, 7, 8, 9, 10, 357, 11, 12, 13, 14, 15, 358, 359, 16, 17, 360, 361, 139, 18, 362, 363, 19, 364, 20, 21, 365, 609, 1, 140, 141, 616, 602, 175, 519, 440, 442, 441, 7, 8, 349, 10, 443, 345, 12, 469, 282, 444, 468, 282, 142, 143, 366, 367, 145, 18, 353, 500, 19, 471, 20, 21, 230, 368, 146, 147, 148, 149, 150, 151, 1, 2, 3, 4, 354, 549, 5, 355, 356, 6, 7, 8, 9, 10, 357, 11, 12, 13, 14, 15, 358, 359, 16, 17, 360, 361, 139, 18, 362, 363, 19, 364, 20, 21, 365, 569, 126, 140, 141, 558, 490, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 142, 143, 366, 367, 145, 18, 0, 0, 0, 0, 0, 21, 230, 489, 146, 147, 148, 149, 150, 151, 2, 3, 4, 0, 0, 5, 0, 0, 6, 0, 0, 9, 0, 0, 11, 12, 13, 14, 15, 24, 176, 16, 17, 0, 0, 139, 18, 0, 0, 0, 0, 177, 21, 0, 0, 0, 140, 141, 0, 0, 0, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 1, 0, 0, 0, 0, 142, 143, 23, 144, 145, 7, 8, 0, 10, 0, 0, 12, 0, 0, 146, 147, 148, 149, 150, 151, 354, 280, 18, 355, 356, 19, 0, 20, 21, 0, 357, 0, 0, 0, 0, 0, 358, 359, 0, 0, 360, 361, 139, 0, 362, 363, 0, 364, 0, 0, 365, 0, 0, 140, 141, 12, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 21, 0, 142, 143, 119, 367, 145, 0, 0, 0, 0, 0, 0, 12, 230, 542, 146, 147, 148, 149, 150, 151, 354, 0, 18, 355, 356, 72, 24, 382, 21, 0, 357, 0, 129, 0, 0, 0, 358, 359, 383, 0, 360, 361, 139, 0, 362, 363, 0, 364, 0, 0, 365, 0, 0, 140, 141, 72, 24, 449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 142, 143, 119, 367, 145, 0, 0, 0, 0, 0, 0, 0, 230, 139, 146, 147, 148, 149, 150, 151, 1, 2, 3, 4, 140, 141, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 142, 143, 18, 144, 145, 19, 0, 20, 21, 0, 0, 0, 458, 0, 146, 147, 148, 149, 150, 151, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 23, 24, 382, 233, 0, 21, 0, 129, 1, 2, 3, 4, 0, 383, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 24, 393, 18, 0, 0, 19, 129, 20, 21, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 393, 233, 0, 0, 0, 129, 1, 2, 3, 4, 0, 394, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 22, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 23, 24, 25, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 24, 393, 0, 0, 0, 0, 129, 1, 2, 3, 4, 0, 394, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 97, 24, 393, 18, 0, 0, 19, 129, 20, 21, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 415, 233, 0, 0, 0, 129, 1, 2, 3, 4, 0, 416, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 87, 24, 25, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 24, 25, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 26, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 87, 24, 176, 18, 0, 0, 19, 0, 20, 21, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 24, 176, 2, 3, 4, 0, 0, 5, 0, 0, 6, 0, 177, 9, 0, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 0, 0, 0, 21, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 97, 0, 415, 18, 0, 0, 19, 129, 20, 21, 0, 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 23, 232, 5, 233, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 1, 2, 3, 4, 0, 0, 5, 0, 0, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 23, 18, 0, 233, 19, 0, 20, 21, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 5, 0, 499, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, 15, 0, 23, 16, 17, 0, 0, 0, 18, 0, 0, 19, 0, 20, 21, 0, 2, 3, 4, 0, 0, 5, 0, 0, 6, 0, 0, 9, 0, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 23, 18, 0, 2, 3, 4, 0, 21, 5, 0, 0, 6, 0, 0, 9, 0, 0, 11, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 139, 0, 0, 23, 21, 0, 0, 0, 139, 0, 0, 140, 141, 0, 0, 0, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 142, 143, 0, 144, 145, 420, 0, 0, 142, 143, 0, 144, 145, 0, 146, 147, 148, 149, 150, 151, 511, 139, 146, 147, 148, 149, 150, 151, 139, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 143, 0, 144, 145, 0, 0, 142, 143, 0, 144, 253, 0, 0, 146, 147, 148, 149, 150, 151, 139, 146, 147, 148, 149, 150, 151, 139, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 140, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 143, 0, 144, 255, 0, 0, 142, 143, 0, 144, 145, 0, 0, 146, 147, 148, 149, 150, 151, 139, 146, 406, 148, 149, 150, 151, 1, 2, 3, 0, 140, 141, 5, 0, 0, 0, 7, 8, 9, 10, 0, 0, 12, 13, 14, 15, 0, 0, 16, 17, 0, 142, 143, 18, 144, 145, 19, 0, 20, 21, 0, 0, 0, 0, 0, 146, 409, 148, 149, 150, 151, 2, 3, 0, 0, 0, 5, 0, 0, 0, 0, 0, 9, 0, 0, 0, 12, 13, 14, 15, 0, 0, 16, 17, 0, 0, 0, 18, 0, 0, 0, 0, 0, 21 }; static const yytype_int16 yycheck[] = { 61, 0, 340, 357, 47, 0, 58, 50, 25, 65, 73, 63, 322, 36, 352, 38, 121, 156, 356, 42, 72, 527, 353, 74, 66, 65, 83, 352, 0, 86, 70, 356, 31, 32, 33, 34, 0, 0, 32, 96, 244, 33, 34, 19, 36, 37, 38, 104, 40, 41, 42, 43, 128, 52, 30, 75, 73, 52, 49, 37, 36, 44, 45, 569, 84, 66, 65, 187, 19, 37, 69, 191, 71, 65, 246, 247, 69, 71, 71, 30, 123, 19, 382, 103, 145, 36, 19, 66, 52, 52, 69, 67, 30, 393, 266, 73, 87, 30, 36, 65, 83, 84, 61, 36, 70, 73, 64, 65, 184, 281, 76, 70, 63, 64, 65, 415, 221, 180, 76, 171, 225, 173, 19, 0, 187, 76, 480, 179, 191, 67, 181, 37, 304, 30, 133, 134, 135, 136, 190, 36, 134, 192, 137, 135, 136, 284, 285, 286, 25, 26, 0, 323, 70, 0, 31, 32, 33, 34, 178, 176, 73, 365, 182, 180, 128, 128, 63, 64, 65, 70, 187, 72, 61, 230, 191, 52, 26, 64, 65, 76, 63, 64, 520, 234, 235, 523, 229, 88, 65, 76, 310, 311, 253, 192, 255, 526, 73, 74, 523, 319, 192, 67, 52, 69, 199, 52, 267, 561, 203, 31, 32, 67, 207, 69, 213, 238, 211, 19, 549, 213, 184, 184, 214, 215, 74, 217, 580, 219, 30, 249, 73, 33, 404, 405, 36, 234, 235, 236, 237, 66, 73, 302, 69, 19, 236, 237, 238, 310, 311, 71, 33, 34, 74, 245, 30, 307, 319, 33, 121, 382, 36, 312, 314, 315, 316, 128, 318, 76, 260, 261, 393, 121, 81, 82, 121, 70, 73, 72, 128, 129, 419, 128, 145, 73, 66, 33, 34, 69, 36, 37, 63, 64, 415, 310, 311, 145, 65, 607, 145, 176, 73, 70, 319, 180, 614, 66, 382, 350, 69, 308, 187, 133, 134, 312, 191, 192, 308, 393, 361, 382, 312, 184, 77, 78, 400, 63, 64, 177, 61, 449, 382, 181, 383, 66, 184, 73, 70, 184, 72, 415, 74, 393, 514, 234, 235, 236, 237, 75, 66, 348, 19, 69, 135, 136, 348, 527, 85, 66, 221, 181, 69, 30, 225, 415, 67, 382, 69, 36, 259, 260, 192, 221, 65, 66, 221, 225, 393, 70, 225, 65, 66, 376, 66, 48, 70, 69, 449, 135, 136, 86, 253, 213, 255, 66, 244, 64, 65, 569, 66, 66, 33, 34, 69, 253, 456, 255, 253, 76, 255, 201, 70, 403, 72, 205, 74, 476, 65, 209, 382, 382, 74, 65, 66, 484, 485, 121, 70, 42, 43, 393, 393, 214, 449, 310, 311, 88, 400, 400, 139, 140, 141, 362, 319, 65, 66, 496, 67, 66, 70, 145, 69, 415, 415, 236, 237, 156, 377, 69, 66, 33, 34, 69, 36, 37, 38, 39, 214, 215, 42, 43, 63, 64, 65, 69, 121, 68, 66, 260, 68, 540, 66, 524, 66, 76, 68, 69, 65, 66, 236, 237, 312, 70, 544, 88, 63, 64, 65, 496, 145, 498, 66, 562, 135, 136, 496, 382, 498, 76, 39, 40, 41, 66, 260, 72, 69, 365, 393, 309, 510, 382, 66, 313, 68, 46, 47, 221, 348, 63, 64, 225, 393, 592, 382, 383, 65, 382, 253, 400, 255, 70, 39, 72, 67, 393, 394, 127, 393, 608, 68, 69, 400, 66, 415, 400, 289, 290, 138, 253, 61, 255, 481, 135, 136, 287, 288, 415, 416, 488, 415, 490, 295, 296, 449, 68, 221, 67, 74, 74, 225, 65, 67, 214, 65, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 68, 3, 236, 237, 496, 253, 498, 255, 65, 65, 532, 13, 14, 0, 16, 198, 68, 200, 510, 202, 68, 204, 69, 206, 67, 208, 260, 210, 68, 212, 64, 33, 71, 35, 71, 71, 71, 559, 340, 26, 66, 563, 564, 66, 31, 32, 33, 34, 68, 74, 352, 67, 67, 65, 356, 291, 292, 293, 294, 19, 582, 236, 237, 238, 239, 52, 34, 66, 251, 7, 30, 66, 10, 11, 66, 597, 36, 71, 65, 17, 71, 69, 63, 64, 65, 23, 24, 74, 73, 27, 28, 29, 67, 31, 32, 76, 34, 71, 3, 37, 65, 74, 40, 41, 19, 65, 67, 74, 13, 14, 70, 16, 8, 67, 67, 30, 76, 419, 63, 64, 65, 36, 65, 61, 62, 63, 64, 65, 33, 64, 35, 76, 63, 64, 65, 73, 74, 75, 76, 77, 78, 79, 80, 326, 69, 76, 66, 330, 63, 64, 65, 334, 71, 67, 65, 338, 63, 64, 65, 61, 595, 76, 67, 70, 3, 4, 5, 6, 7, 76, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 67, 3, 40, 41, 67, 596, 192, 425, 297, 299, 298, 13, 14, 225, 16, 300, 221, 19, 348, 520, 301, 343, 523, 61, 62, 63, 64, 65, 30, 229, 400, 33, 350, 35, 36, 73, 74, 75, 76, 77, 78, 79, 80, 3, 4, 5, 6, 7, 511, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 554, 52, 40, 41, 528, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, 61, 62, 63, 64, 65, 30, -1, -1, -1, -1, -1, 36, 73, 74, 75, 76, 77, 78, 79, 80, 4, 5, 6, -1, -1, 9, -1, -1, 12, -1, -1, 15, -1, -1, 18, 19, 20, 21, 22, 64, 65, 25, 26, -1, -1, 29, 30, -1, -1, -1, -1, 76, 36, -1, -1, -1, 40, 41, -1, -1, -1, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, 3, -1, -1, -1, -1, 61, 62, 63, 64, 65, 13, 14, -1, 16, -1, -1, 19, -1, -1, 75, 76, 77, 78, 79, 80, 7, 88, 30, 10, 11, 33, -1, 35, 36, -1, 17, -1, -1, -1, -1, -1, 23, 24, -1, -1, 27, 28, 29, -1, 31, 32, -1, 34, -1, -1, 37, -1, -1, 40, 41, 19, -1, -1, -1, 67, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, -1, 36, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, 19, 73, 74, 75, 76, 77, 78, 79, 80, 7, -1, 30, 10, 11, 63, 64, 65, 36, -1, 17, -1, 70, -1, -1, -1, 23, 24, 76, -1, 27, 28, 29, -1, 31, 32, -1, 34, -1, -1, 37, -1, -1, 40, 41, 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, 61, 62, 63, 64, 65, -1, -1, -1, -1, -1, -1, -1, 73, 29, 75, 76, 77, 78, 79, 80, 3, 4, 5, 6, 40, 41, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, 61, 62, 30, 64, 65, 33, -1, 35, 36, -1, -1, -1, 73, -1, 75, 76, 77, 78, 79, 80, -1, -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 63, 64, 65, 66, -1, 36, -1, 70, 3, 4, 5, 6, -1, 76, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, 64, 65, 30, -1, -1, 33, 70, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, 66, -1, -1, -1, 70, 3, 4, 5, 6, -1, 76, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, 37, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, 64, 65, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, -1, -1, -1, -1, 70, 3, 4, 5, 6, -1, 76, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, 64, 65, 30, -1, -1, 33, 70, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, -1, 65, 66, -1, -1, -1, 70, 3, 4, 5, 6, -1, 76, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, 64, 65, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, 76, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, 64, 65, 30, -1, -1, 33, -1, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 64, 65, 4, 5, 6, -1, -1, 9, -1, -1, 12, -1, 76, 15, -1, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, -1, -1, -1, 36, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, 63, -1, 65, 30, -1, -1, 33, 70, 35, 36, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 63, 64, 9, 66, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, 3, 4, 5, 6, -1, -1, 9, -1, -1, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, 63, 30, -1, 66, 33, -1, 35, 36, -1, -1, -1, -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, 50, 12, 13, 14, 15, 16, -1, 18, 19, 20, 21, 22, -1, 63, 25, 26, -1, -1, -1, 30, -1, -1, 33, -1, 35, 36, -1, 4, 5, 6, -1, -1, 9, -1, -1, 12, -1, -1, 15, -1, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, 63, 30, -1, 4, 5, 6, -1, 36, 9, -1, -1, 12, -1, -1, 15, -1, -1, 18, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, 29, -1, -1, 63, 36, -1, -1, -1, 29, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 61, 62, -1, 64, 65, 66, -1, -1, 61, 62, -1, 64, 65, -1, 75, 76, 77, 78, 79, 80, 73, 29, 75, 76, 77, 78, 79, 80, 29, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, 62, -1, 64, 65, -1, -1, 61, 62, -1, 64, 65, -1, -1, 75, 76, 77, 78, 79, 80, 29, 75, 76, 77, 78, 79, 80, 29, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, 62, -1, 64, 65, -1, -1, 61, 62, -1, 64, 65, -1, -1, 75, 76, 77, 78, 79, 80, 29, 75, 76, 77, 78, 79, 80, 3, 4, 5, -1, 40, 41, 9, -1, -1, -1, 13, 14, 15, 16, -1, -1, 19, 20, 21, 22, -1, -1, 25, 26, -1, 61, 62, 30, 64, 65, 33, -1, 35, 36, -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, 80, 4, 5, -1, -1, -1, 9, -1, -1, -1, -1, -1, 15, -1, -1, -1, 19, 20, 21, 22, -1, -1, 25, 26, -1, -1, -1, 30, -1, -1, -1, -1, -1, 36 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 9, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 25, 26, 30, 33, 35, 36, 37, 63, 64, 65, 76, 93, 125, 126, 127, 128, 129, 130, 131, 134, 135, 136, 137, 138, 139, 140, 142, 143, 144, 145, 147, 148, 149, 158, 159, 184, 185, 186, 187, 211, 212, 213, 214, 215, 216, 65, 212, 214, 215, 131, 211, 215, 67, 69, 67, 69, 63, 65, 76, 203, 204, 205, 206, 207, 208, 209, 211, 215, 203, 211, 215, 63, 133, 134, 144, 145, 146, 147, 158, 211, 215, 63, 134, 144, 145, 147, 158, 211, 215, 133, 145, 134, 144, 145, 67, 133, 67, 144, 134, 134, 133, 134, 144, 63, 64, 73, 166, 73, 166, 0, 186, 188, 65, 70, 218, 219, 125, 128, 129, 130, 131, 178, 193, 29, 40, 41, 61, 62, 64, 65, 75, 76, 77, 78, 79, 80, 90, 99, 100, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 66, 66, 66, 211, 215, 65, 76, 211, 214, 65, 76, 203, 211, 65, 218, 63, 65, 206, 208, 210, 65, 131, 205, 208, 37, 91, 92, 189, 178, 194, 92, 190, 178, 195, 92, 191, 178, 196, 92, 192, 178, 197, 129, 131, 136, 138, 140, 141, 143, 150, 151, 152, 153, 154, 73, 160, 161, 166, 73, 73, 177, 64, 66, 128, 129, 130, 131, 137, 138, 162, 163, 164, 165, 33, 131, 132, 70, 211, 211, 125, 198, 177, 65, 105, 65, 105, 105, 122, 129, 131, 143, 167, 61, 40, 41, 65, 70, 101, 102, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 88, 120, 105, 107, 76, 81, 82, 77, 78, 42, 43, 44, 45, 83, 84, 46, 47, 75, 85, 86, 48, 49, 87, 66, 69, 218, 218, 214, 131, 92, 65, 65, 131, 92, 210, 66, 66, 218, 210, 65, 205, 208, 65, 88, 168, 177, 199, 177, 168, 177, 200, 177, 168, 177, 201, 177, 168, 177, 202, 177, 68, 155, 157, 203, 74, 152, 67, 67, 69, 150, 69, 174, 88, 160, 7, 10, 11, 17, 23, 24, 27, 28, 31, 32, 34, 37, 63, 64, 74, 94, 122, 124, 166, 175, 176, 177, 178, 179, 180, 181, 182, 183, 65, 76, 205, 211, 217, 218, 220, 221, 205, 211, 217, 65, 76, 211, 217, 211, 217, 66, 69, 66, 69, 131, 132, 33, 76, 119, 121, 76, 119, 177, 167, 167, 66, 65, 76, 217, 217, 66, 66, 104, 119, 122, 72, 39, 119, 107, 107, 107, 108, 108, 109, 109, 110, 110, 110, 110, 111, 111, 112, 113, 114, 115, 116, 122, 67, 119, 168, 65, 168, 66, 218, 218, 66, 66, 210, 90, 73, 119, 169, 177, 177, 177, 177, 118, 123, 156, 157, 155, 74, 161, 74, 123, 174, 67, 65, 123, 124, 67, 65, 68, 166, 175, 65, 65, 132, 67, 68, 74, 179, 74, 175, 218, 220, 221, 131, 217, 131, 50, 164, 64, 119, 119, 71, 71, 71, 71, 66, 66, 131, 73, 107, 66, 69, 71, 63, 64, 103, 103, 68, 66, 66, 70, 72, 74, 170, 171, 172, 173, 74, 122, 68, 67, 124, 175, 67, 34, 122, 122, 65, 175, 74, 66, 66, 66, 217, 71, 71, 170, 119, 118, 123, 166, 69, 174, 169, 88, 173, 66, 175, 67, 65, 66, 66, 122, 218, 174, 71, 171, 74, 175, 124, 122, 175, 175, 66, 68, 74, 169, 67, 66, 8, 67, 61, 70, 95, 96, 97, 124, 67, 175, 65, 64, 66, 68, 69, 66, 122, 71, 67, 95, 97, 175, 66, 61, 66, 68, 65, 67, 90, 98, 122, 66, 69, 66, 67, 90 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, YYLEX_PARAM) #else # define YYLEX yylex (&yylval) #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { case 64: /* "IDENTIFIER" */ /* Line 724 of yacc.c */ #line 431 "ctlib/parser.y" { if ((yyvaluep->identifier)) fprintf(yyoutput, "'%s' len=%d, hash=0x%lx", (yyvaluep->identifier)->key, (yyvaluep->identifier)->keylen, (unsigned long)(yyvaluep->identifier)->hash); else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2028 "ctlib/y_parser.c" break; case 155: /* "member_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2058 "ctlib/y_parser.c" break; case 166: /* "identifier_or_typedef_name" */ /* Line 724 of yacc.c */ #line 431 "ctlib/parser.y" { if ((yyvaluep->identifier)) fprintf(yyoutput, "'%s' len=%d, hash=0x%lx", (yyvaluep->identifier)->key, (yyvaluep->identifier)->keylen, (unsigned long)(yyvaluep->identifier)->hash); else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2072 "ctlib/y_parser.c" break; case 203: /* "declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2102 "ctlib/y_parser.c" break; case 204: /* "typedef_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2132 "ctlib/y_parser.c" break; case 205: /* "parameter_typedef_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2162 "ctlib/y_parser.c" break; case 206: /* "clean_typedef_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2192 "ctlib/y_parser.c" break; case 207: /* "clean_postfix_typedef_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2222 "ctlib/y_parser.c" break; case 208: /* "paren_typedef_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2252 "ctlib/y_parser.c" break; case 209: /* "paren_postfix_typedef_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2282 "ctlib/y_parser.c" break; case 210: /* "simple_paren_typedef_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2312 "ctlib/y_parser.c" break; case 211: /* "identifier_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2342 "ctlib/y_parser.c" break; case 212: /* "unary_identifier_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2372 "ctlib/y_parser.c" break; case 213: /* "postfix_identifier_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2402 "ctlib/y_parser.c" break; case 214: /* "paren_identifier_declarator" */ /* Line 724 of yacc.c */ #line 511 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { if ((yyvaluep->pDecl)->bitfield_flag) fprintf(yyoutput, "%s:%d", (yyvaluep->pDecl)->identifier, (yyvaluep->pDecl)->ext.bitfield.bits); else { fprintf(yyoutput, "%s%s", (yyvaluep->pDecl)->pointer_flag ? "*" : "", (yyvaluep->pDecl)->identifier); if ((yyvaluep->pDecl)->array_flag) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvaluep->pDecl)->ext.array) fprintf(yyoutput, "[%ld]", pValue->iv); } } } else fprintf(yyoutput, "NULL"); }; /* Line 724 of yacc.c */ #line 2432 "ctlib/y_parser.c" break; default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { case 64: /* "IDENTIFIER" */ /* Line 1009 of yacc.c */ #line 422 "ctlib/parser.y" { if ((yyvaluep->identifier)) { CT_DEBUG(PARSER, ("deleting node @ %p", (yyvaluep->identifier))); HN_delete((yyvaluep->identifier)); } }; /* Line 1009 of yacc.c */ #line 2812 "ctlib/y_parser.c" break; case 150: /* "member_declaration_list_opt" */ /* Line 1009 of yacc.c */ #line 570 "ctlib/parser.y" { if ((yyvaluep->list)) { CT_DEBUG(PARSER, ("deleting struct declaration list @ %p", (yyvaluep->list))); LL_destroy((yyvaluep->list), (LLDestroyFunc) structdecl_delete); } }; /* Line 1009 of yacc.c */ #line 2827 "ctlib/y_parser.c" break; case 151: /* "member_declaration_list" */ /* Line 1009 of yacc.c */ #line 570 "ctlib/parser.y" { if ((yyvaluep->list)) { CT_DEBUG(PARSER, ("deleting struct declaration list @ %p", (yyvaluep->list))); LL_destroy((yyvaluep->list), (LLDestroyFunc) structdecl_delete); } }; /* Line 1009 of yacc.c */ #line 2842 "ctlib/y_parser.c" break; case 152: /* "member_declaration" */ /* Line 1009 of yacc.c */ #line 467 "ctlib/parser.y" { if ((yyvaluep->pStructDecl)) { CT_DEBUG(PARSER, ("deleting struct declaration @ %p", (yyvaluep->pStructDecl))); structdecl_delete((yyvaluep->pStructDecl)); } }; /* Line 1009 of yacc.c */ #line 2857 "ctlib/y_parser.c" break; case 153: /* "unnamed_su_declaration" */ /* Line 1009 of yacc.c */ #line 467 "ctlib/parser.y" { if ((yyvaluep->pStructDecl)) { CT_DEBUG(PARSER, ("deleting struct declaration @ %p", (yyvaluep->pStructDecl))); structdecl_delete((yyvaluep->pStructDecl)); } }; /* Line 1009 of yacc.c */ #line 2872 "ctlib/y_parser.c" break; case 154: /* "member_declaring_list" */ /* Line 1009 of yacc.c */ #line 467 "ctlib/parser.y" { if ((yyvaluep->pStructDecl)) { CT_DEBUG(PARSER, ("deleting struct declaration @ %p", (yyvaluep->pStructDecl))); structdecl_delete((yyvaluep->pStructDecl)); } }; /* Line 1009 of yacc.c */ #line 2887 "ctlib/y_parser.c" break; case 155: /* "member_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 2902 "ctlib/y_parser.c" break; case 160: /* "enumerator_list" */ /* Line 1009 of yacc.c */ #line 553 "ctlib/parser.y" { if ((yyvaluep->list)) { CT_DEBUG(PARSER, ("deleting enumerator list @ %p", (yyvaluep->list))); LL_destroy((yyvaluep->list), (LLDestroyFunc) enum_delete); } }; /* Line 1009 of yacc.c */ #line 2917 "ctlib/y_parser.c" break; case 166: /* "identifier_or_typedef_name" */ /* Line 1009 of yacc.c */ #line 422 "ctlib/parser.y" { if ((yyvaluep->identifier)) { CT_DEBUG(PARSER, ("deleting node @ %p", (yyvaluep->identifier))); HN_delete((yyvaluep->identifier)); } }; /* Line 1009 of yacc.c */ #line 2932 "ctlib/y_parser.c" break; case 203: /* "declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 2947 "ctlib/y_parser.c" break; case 204: /* "typedef_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 2962 "ctlib/y_parser.c" break; case 205: /* "parameter_typedef_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 2977 "ctlib/y_parser.c" break; case 206: /* "clean_typedef_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 2992 "ctlib/y_parser.c" break; case 207: /* "clean_postfix_typedef_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 3007 "ctlib/y_parser.c" break; case 208: /* "paren_typedef_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 3022 "ctlib/y_parser.c" break; case 209: /* "paren_postfix_typedef_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 3037 "ctlib/y_parser.c" break; case 210: /* "simple_paren_typedef_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 3052 "ctlib/y_parser.c" break; case 211: /* "identifier_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 3067 "ctlib/y_parser.c" break; case 212: /* "unary_identifier_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 3082 "ctlib/y_parser.c" break; case 213: /* "postfix_identifier_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 3097 "ctlib/y_parser.c" break; case 214: /* "paren_identifier_declarator" */ /* Line 1009 of yacc.c */ #line 491 "ctlib/parser.y" { if ((yyvaluep->pDecl)) { CT_DEBUG(PARSER, ("deleting declarator @ %p", (yyvaluep->pDecl))); decl_delete((yyvaluep->pDecl)); } }; /* Line 1009 of yacc.c */ #line 3112 "ctlib/y_parser.c" break; case 218: /* "postfixing_abstract_declarator" */ /* Line 1009 of yacc.c */ #line 561 "ctlib/parser.y" { if ((yyvaluep->list)) { CT_DEBUG(PARSER, ("deleting array list @ %p", (yyvaluep->list))); LL_destroy((yyvaluep->list), (LLDestroyFunc) value_delete); } }; /* Line 1009 of yacc.c */ #line 3127 "ctlib/y_parser.c" break; case 219: /* "array_abstract_declarator" */ /* Line 1009 of yacc.c */ #line 561 "ctlib/parser.y" { if ((yyvaluep->list)) { CT_DEBUG(PARSER, ("deleting array list @ %p", (yyvaluep->list))); LL_destroy((yyvaluep->list), (LLDestroyFunc) value_delete); } }; /* Line 1009 of yacc.c */ #line 3142 "ctlib/y_parser.c" break; default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /*-------------------------. | yyparse or yypush_parse. | `-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yytoken = 0; yyss = yyssa; yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: /* Line 1464 of yacc.c */ #line 629 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (2)].value), +, (yyvsp[(2) - (2)].value)); ;} break; case 17: /* Line 1464 of yacc.c */ #line 674 "ctlib/parser.y" { if ((yyvsp[(2) - (7)].identifier)) HN_delete((yyvsp[(2) - (7)].identifier)); ;} break; case 20: /* Line 1464 of yacc.c */ #line 688 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); if ((yyvsp[(1) - (1)].identifier)) { Enumerator *pEnum = HT_get(PSTATE->pCPI->htEnumerators, (yyvsp[(1) - (1)].identifier)->key, (yyvsp[(1) - (1)].identifier)->keylen, (yyvsp[(1) - (1)].identifier)->hash); if (pEnum) { CT_DEBUG(CLEXER, ("enum found!")); (yyval.value) = pEnum->value; } HN_delete((yyvsp[(1) - (1)].identifier)); } ;} break; case 22: /* Line 1464 of yacc.c */ #line 703 "ctlib/parser.y" { (yyval.value) = (yyvsp[(1) - (1)].value); (yyval.value).iv++; ;} break; case 23: /* Line 1464 of yacc.c */ #line 704 "ctlib/parser.y" { (yyval.value) = (yyvsp[(2) - (3)].value); ;} break; case 25: /* Line 1464 of yacc.c */ #line 715 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 26: /* Line 1464 of yacc.c */ #line 716 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 27: /* Line 1464 of yacc.c */ #line 717 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 28: /* Line 1464 of yacc.c */ #line 718 "ctlib/parser.y" {;} break; case 29: /* Line 1464 of yacc.c */ #line 718 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 30: /* Line 1464 of yacc.c */ #line 719 "ctlib/parser.y" {;} break; case 31: /* Line 1464 of yacc.c */ #line 719 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 32: /* Line 1464 of yacc.c */ #line 720 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 33: /* Line 1464 of yacc.c */ #line 721 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 34: /* Line 1464 of yacc.c */ #line 722 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 35: /* Line 1464 of yacc.c */ #line 726 "ctlib/parser.y" { if((yyvsp[(1) - (1)].identifier)) HN_delete((yyvsp[(1) - (1)].identifier)); ;} break; case 36: /* Line 1464 of yacc.c */ #line 727 "ctlib/parser.y" {;} break; case 37: /* Line 1464 of yacc.c */ #line 731 "ctlib/parser.y" {;} break; case 38: /* Line 1464 of yacc.c */ #line 732 "ctlib/parser.y" {;} break; case 40: /* Line 1464 of yacc.c */ #line 737 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 41: /* Line 1464 of yacc.c */ #line 738 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 42: /* Line 1464 of yacc.c */ #line 740 "ctlib/parser.y" { switch( (yyvsp[(1) - (2)].oper) ) { case '-' : UNARY_OP((yyval.value), -, (yyvsp[(2) - (2)].value)); break; case '~' : UNARY_OP((yyval.value), ~, (yyvsp[(2) - (2)].value)); break; case '!' : UNARY_OP((yyval.value), !, (yyvsp[(2) - (2)].value)); break; case '+' : (yyval.value) = (yyvsp[(2) - (2)].value); break; case '*' : case '&' : (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).flags |= V_IS_UNSAFE_PTROP; break; default: UNDEF_VAL((yyval.value)); break; } ;} break; case 43: /* Line 1464 of yacc.c */ #line 757 "ctlib/parser.y" { (yyval.value) = (yyvsp[(2) - (2)].value); ;} break; case 44: /* Line 1464 of yacc.c */ #line 758 "ctlib/parser.y" { (yyval.value) = (yyvsp[(3) - (4)].value); ;} break; case 45: /* Line 1464 of yacc.c */ #line 762 "ctlib/parser.y" { (yyval.oper) = '&'; ;} break; case 46: /* Line 1464 of yacc.c */ #line 763 "ctlib/parser.y" { (yyval.oper) = '*'; ;} break; case 47: /* Line 1464 of yacc.c */ #line 764 "ctlib/parser.y" { (yyval.oper) = '+'; ;} break; case 48: /* Line 1464 of yacc.c */ #line 765 "ctlib/parser.y" { (yyval.oper) = '-'; ;} break; case 49: /* Line 1464 of yacc.c */ #line 766 "ctlib/parser.y" { (yyval.oper) = '~'; ;} break; case 50: /* Line 1464 of yacc.c */ #line 767 "ctlib/parser.y" { (yyval.oper) = '!'; ;} break; case 52: /* Line 1464 of yacc.c */ #line 772 "ctlib/parser.y" { (yyval.value) = (yyvsp[(4) - (4)].value); (yyval.value).flags |= V_IS_UNSAFE_CAST; ;} break; case 54: /* Line 1464 of yacc.c */ #line 778 "ctlib/parser.y" { BINARY_OP( (yyval.value), (yyvsp[(1) - (3)].value), *, (yyvsp[(3) - (3)].value) ); ;} break; case 55: /* Line 1464 of yacc.c */ #line 780 "ctlib/parser.y" { if ((yyvsp[(3) - (3)].value).iv == 0) UNDEF_VAL((yyval.value)); else BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), /, (yyvsp[(3) - (3)].value)); ;} break; case 56: /* Line 1464 of yacc.c */ #line 787 "ctlib/parser.y" { if ((yyvsp[(3) - (3)].value).iv == 0) UNDEF_VAL((yyval.value)); else BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), %, (yyvsp[(3) - (3)].value)); ;} break; case 58: /* Line 1464 of yacc.c */ #line 798 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), +, (yyvsp[(3) - (3)].value)); ;} break; case 59: /* Line 1464 of yacc.c */ #line 800 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), -, (yyvsp[(3) - (3)].value)); ;} break; case 61: /* Line 1464 of yacc.c */ #line 806 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), <<, (yyvsp[(3) - (3)].value)); ;} break; case 62: /* Line 1464 of yacc.c */ #line 808 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), >>, (yyvsp[(3) - (3)].value)); ;} break; case 64: /* Line 1464 of yacc.c */ #line 814 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), <, (yyvsp[(3) - (3)].value)); ;} break; case 65: /* Line 1464 of yacc.c */ #line 816 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), >, (yyvsp[(3) - (3)].value)); ;} break; case 66: /* Line 1464 of yacc.c */ #line 818 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), <=, (yyvsp[(3) - (3)].value)); ;} break; case 67: /* Line 1464 of yacc.c */ #line 820 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), >=, (yyvsp[(3) - (3)].value)); ;} break; case 69: /* Line 1464 of yacc.c */ #line 826 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), ==, (yyvsp[(3) - (3)].value)); ;} break; case 70: /* Line 1464 of yacc.c */ #line 828 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), !=, (yyvsp[(3) - (3)].value)); ;} break; case 72: /* Line 1464 of yacc.c */ #line 834 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), &, (yyvsp[(3) - (3)].value)); ;} break; case 74: /* Line 1464 of yacc.c */ #line 840 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), ^, (yyvsp[(3) - (3)].value)); ;} break; case 76: /* Line 1464 of yacc.c */ #line 846 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), |, (yyvsp[(3) - (3)].value)); ;} break; case 78: /* Line 1464 of yacc.c */ #line 852 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), &&, (yyvsp[(3) - (3)].value)); ;} break; case 80: /* Line 1464 of yacc.c */ #line 858 "ctlib/parser.y" { BINARY_OP((yyval.value), (yyvsp[(1) - (3)].value), ||, (yyvsp[(3) - (3)].value)); ;} break; case 82: /* Line 1464 of yacc.c */ #line 864 "ctlib/parser.y" { (yyval.value) = (yyvsp[(1) - (5)].value).iv ? (yyvsp[(3) - (5)].value) : (yyvsp[(5) - (5)].value); (yyval.value).flags |= (yyvsp[(1) - (5)].value).flags; ;} break; case 84: /* Line 1464 of yacc.c */ #line 869 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 85: /* Line 1464 of yacc.c */ #line 873 "ctlib/parser.y" {;} break; case 86: /* Line 1464 of yacc.c */ #line 874 "ctlib/parser.y" {;} break; case 87: /* Line 1464 of yacc.c */ #line 875 "ctlib/parser.y" {;} break; case 88: /* Line 1464 of yacc.c */ #line 876 "ctlib/parser.y" {;} break; case 89: /* Line 1464 of yacc.c */ #line 877 "ctlib/parser.y" {;} break; case 90: /* Line 1464 of yacc.c */ #line 878 "ctlib/parser.y" {;} break; case 91: /* Line 1464 of yacc.c */ #line 879 "ctlib/parser.y" {;} break; case 92: /* Line 1464 of yacc.c */ #line 880 "ctlib/parser.y" {;} break; case 93: /* Line 1464 of yacc.c */ #line 881 "ctlib/parser.y" {;} break; case 94: /* Line 1464 of yacc.c */ #line 882 "ctlib/parser.y" {;} break; case 95: /* Line 1464 of yacc.c */ #line 883 "ctlib/parser.y" {;} break; case 96: /* Line 1464 of yacc.c */ #line 887 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 99: /* Line 1464 of yacc.c */ #line 892 "ctlib/parser.y" { (yyval.value) = (yyvsp[(3) - (3)].value); ;} break; case 102: /* Line 1464 of yacc.c */ #line 902 "ctlib/parser.y" {;} break; case 103: /* Line 1464 of yacc.c */ #line 940 "ctlib/parser.y" {;} break; case 104: /* Line 1464 of yacc.c */ #line 941 "ctlib/parser.y" {;} break; case 105: /* Line 1464 of yacc.c */ #line 942 "ctlib/parser.y" {;} break; case 106: /* Line 1464 of yacc.c */ #line 943 "ctlib/parser.y" {;} break; case 107: /* Line 1464 of yacc.c */ #line 951 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pTypedefList) = NULL; else { if ((yyvsp[(1) - (4)].uval) & T_TYPEDEF) { TypeSpec ts; ts.tflags = (yyvsp[(1) - (4)].uval); ts.ptr = NULL; if ((ts.tflags & ANY_TYPE_NAME) == 0) ts.tflags |= T_INT; (yyval.pTypedefList) = typedef_list_new(ts, LL_new()); LL_push(PSTATE->pCPI->typedef_lists, (yyval.pTypedefList)); MAKE_TYPEDEF((yyval.pTypedefList), (yyvsp[(2) - (4)].pDecl)); } else { (yyval.pTypedefList) = NULL; decl_delete((yyvsp[(2) - (4)].pDecl)); } } ;} break; case 108: /* Line 1464 of yacc.c */ #line 975 "ctlib/parser.y" { (yyval.pTypedefList) = NULL; if ((yyvsp[(2) - (4)].pDecl)) decl_delete((yyvsp[(2) - (4)].pDecl)); ;} break; case 109: /* Line 1464 of yacc.c */ #line 981 "ctlib/parser.y" { (yyval.pTypedefList) = (yyvsp[(1) - (5)].pTypedefList); if ((yyval.pTypedefList)) MAKE_TYPEDEF((yyval.pTypedefList), (yyvsp[(3) - (5)].pDecl)); else if((yyvsp[(3) - (5)].pDecl)) decl_delete((yyvsp[(3) - (5)].pDecl)); ;} break; case 110: /* Line 1464 of yacc.c */ #line 992 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pTypedefList) = NULL; else { if ((yyvsp[(1) - (4)].tspec).tflags & T_TYPEDEF) { if (((yyvsp[(1) - (4)].tspec).tflags & ANY_TYPE_NAME) == 0) (yyvsp[(1) - (4)].tspec).tflags |= T_INT; ctt_refcount_inc((yyvsp[(1) - (4)].tspec).ptr); (yyval.pTypedefList) = typedef_list_new((yyvsp[(1) - (4)].tspec), LL_new()); LL_push(PSTATE->pCPI->typedef_lists, (yyval.pTypedefList)); MAKE_TYPEDEF((yyval.pTypedefList), (yyvsp[(2) - (4)].pDecl)); } else { (yyval.pTypedefList) = NULL; decl_delete((yyvsp[(2) - (4)].pDecl)); } } ;} break; case 111: /* Line 1464 of yacc.c */ #line 1014 "ctlib/parser.y" { (yyval.pTypedefList) = NULL; if ((yyvsp[(2) - (4)].pDecl)) decl_delete((yyvsp[(2) - (4)].pDecl)); ;} break; case 112: /* Line 1464 of yacc.c */ #line 1020 "ctlib/parser.y" { (yyval.pTypedefList) = (yyvsp[(1) - (5)].pTypedefList); if ((yyval.pTypedefList)) MAKE_TYPEDEF((yyval.pTypedefList), (yyvsp[(3) - (5)].pDecl)); else if ((yyvsp[(3) - (5)].pDecl)) decl_delete((yyvsp[(3) - (5)].pDecl)); ;} break; case 113: /* Line 1464 of yacc.c */ #line 1032 "ctlib/parser.y" { (yyval.tspec).ptr = NULL; (yyval.tspec).tflags = (yyvsp[(1) - (1)].uval); ;} break; case 116: /* Line 1464 of yacc.c */ #line 1043 "ctlib/parser.y" { (yyval.tspec).ptr = NULL; (yyval.tspec).tflags = (yyvsp[(1) - (1)].uval); ;} break; case 120: /* Line 1464 of yacc.c */ #line 1055 "ctlib/parser.y" { (yyval.uval) = (yyvsp[(2) - (2)].uval); ;} break; case 121: /* Line 1464 of yacc.c */ #line 1056 "ctlib/parser.y" { (yyval.uval) = (yyvsp[(1) - (2)].uval) | (yyvsp[(2) - (2)].uval); ;} break; case 127: /* Line 1464 of yacc.c */ #line 1071 "ctlib/parser.y" { (yyval.uval) = 0; ;} break; case 131: /* Line 1464 of yacc.c */ #line 1081 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[(1) - (2)].uval), (yyvsp[(2) - (2)].uval)); ;} break; case 132: /* Line 1464 of yacc.c */ #line 1082 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[(1) - (2)].uval), (yyvsp[(2) - (2)].uval)); ;} break; case 133: /* Line 1464 of yacc.c */ #line 1083 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[(1) - (2)].uval), (yyvsp[(2) - (2)].uval)); ;} break; case 134: /* Line 1464 of yacc.c */ #line 1084 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[(1) - (2)].uval), (yyvsp[(2) - (2)].uval)); ;} break; case 136: /* Line 1464 of yacc.c */ #line 1089 "ctlib/parser.y" { (yyval.uval) = (yyvsp[(2) - (2)].uval); ;} break; case 137: /* Line 1464 of yacc.c */ #line 1090 "ctlib/parser.y" { (yyval.uval) = (yyvsp[(1) - (2)].uval); ;} break; case 138: /* Line 1464 of yacc.c */ #line 1091 "ctlib/parser.y" { (yyval.uval) = LLC_OR((yyvsp[(1) - (2)].uval), (yyvsp[(2) - (2)].uval)); ;} break; case 139: /* Line 1464 of yacc.c */ #line 1096 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[(2) - (2)].tspec).ptr; (yyval.tspec).tflags = (yyvsp[(2) - (2)].tspec).tflags | (yyvsp[(1) - (2)].uval); ;} break; case 140: /* Line 1464 of yacc.c */ #line 1101 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[(1) - (2)].tspec).ptr; (yyval.tspec).tflags = (yyvsp[(1) - (2)].tspec).tflags | (yyvsp[(2) - (2)].uval); ;} break; case 141: /* Line 1464 of yacc.c */ #line 1106 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[(1) - (2)].tspec).ptr; (yyval.tspec).tflags = (yyvsp[(1) - (2)].tspec).tflags | (yyvsp[(2) - (2)].uval); ;} break; case 145: /* Line 1464 of yacc.c */ #line 1119 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[(2) - (2)].tspec); ;} break; case 146: /* Line 1464 of yacc.c */ #line 1120 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[(1) - (2)].tspec); ;} break; case 148: /* Line 1464 of yacc.c */ #line 1125 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[(2) - (2)].tspec); ;} break; case 149: /* Line 1464 of yacc.c */ #line 1126 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[(1) - (2)].tspec); ;} break; case 152: /* Line 1464 of yacc.c */ #line 1135 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[(1) - (2)].tspec).ptr; (yyval.tspec).tflags = (yyvsp[(1) - (2)].tspec).tflags | (yyvsp[(2) - (2)].uval); ;} break; case 153: /* Line 1464 of yacc.c */ #line 1140 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[(2) - (2)].pTypedef); (yyval.tspec).tflags = T_TYPE | (yyvsp[(1) - (2)].uval); ;} break; case 154: /* Line 1464 of yacc.c */ #line 1145 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[(1) - (2)].tspec).ptr; (yyval.tspec).tflags = (yyvsp[(1) - (2)].tspec).tflags | (yyvsp[(2) - (2)].uval); ;} break; case 155: /* Line 1464 of yacc.c */ #line 1152 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[(1) - (1)].pTypedef); (yyval.tspec).tflags = T_TYPE; ;} break; case 156: /* Line 1464 of yacc.c */ #line 1153 "ctlib/parser.y" { (yyval.tspec).ptr = (yyvsp[(2) - (2)].pTypedef); (yyval.tspec).tflags = T_TYPE; ;} break; case 157: /* Line 1464 of yacc.c */ #line 1154 "ctlib/parser.y" { (yyval.tspec) = (yyvsp[(1) - (2)].tspec); ;} break; case 158: /* Line 1464 of yacc.c */ #line 1158 "ctlib/parser.y" { (yyval.uval) = T_TYPEDEF; ;} break; case 159: /* Line 1464 of yacc.c */ #line 1159 "ctlib/parser.y" { (yyval.uval) = 0; ;} break; case 160: /* Line 1464 of yacc.c */ #line 1160 "ctlib/parser.y" { (yyval.uval) = 0; ;} break; case 161: /* Line 1464 of yacc.c */ #line 1161 "ctlib/parser.y" { (yyval.uval) = 0; ;} break; case 162: /* Line 1464 of yacc.c */ #line 1162 "ctlib/parser.y" { (yyval.uval) = 0; ;} break; case 163: /* Line 1464 of yacc.c */ #line 1163 "ctlib/parser.y" { (yyval.uval) = 0; ;} break; case 164: /* Line 1464 of yacc.c */ #line 1167 "ctlib/parser.y" { (yyval.uval) = T_INT; ;} break; case 165: /* Line 1464 of yacc.c */ #line 1168 "ctlib/parser.y" { (yyval.uval) = T_CHAR; ;} break; case 166: /* Line 1464 of yacc.c */ #line 1169 "ctlib/parser.y" { (yyval.uval) = T_SHORT; ;} break; case 167: /* Line 1464 of yacc.c */ #line 1170 "ctlib/parser.y" { (yyval.uval) = T_LONG; ;} break; case 168: /* Line 1464 of yacc.c */ #line 1171 "ctlib/parser.y" { (yyval.uval) = T_FLOAT; ;} break; case 169: /* Line 1464 of yacc.c */ #line 1172 "ctlib/parser.y" { (yyval.uval) = T_DOUBLE; ;} break; case 170: /* Line 1464 of yacc.c */ #line 1173 "ctlib/parser.y" { (yyval.uval) = T_SIGNED; ;} break; case 171: /* Line 1464 of yacc.c */ #line 1174 "ctlib/parser.y" { (yyval.uval) = T_UNSIGNED; ;} break; case 172: /* Line 1464 of yacc.c */ #line 1175 "ctlib/parser.y" { (yyval.uval) = T_VOID; ;} break; case 175: /* Line 1464 of yacc.c */ #line 1185 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; } else { Struct *pStruct; pStruct = struct_new(NULL, 0, (yyvsp[(1) - (4)].context).uval, pragma_parser_get_pack(PSTATE->pragma), (yyvsp[(3) - (4)].list)); pStruct->context = (yyvsp[(1) - (4)].context).ctx; LL_push(PSTATE->pCPI->structs, pStruct); (yyval.tspec).tflags = (yyvsp[(1) - (4)].context).uval; (yyval.tspec).ptr = pStruct; } ;} break; case 176: /* Line 1464 of yacc.c */ #line 1202 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { Struct *pStruct = HT_get(PSTATE->pCPI->htStructs, (yyvsp[(2) - (5)].identifier)->key, (yyvsp[(2) - (5)].identifier)->keylen, (yyvsp[(2) - (5)].identifier)->hash); if (pStruct == NULL) { pStruct = struct_new((yyvsp[(2) - (5)].identifier)->key, (yyvsp[(2) - (5)].identifier)->keylen, (yyvsp[(1) - (5)].context).uval, pragma_parser_get_pack(PSTATE->pragma), (yyvsp[(4) - (5)].list)); pStruct->context = (yyvsp[(1) - (5)].context).ctx; LL_push(PSTATE->pCPI->structs, pStruct); HT_storenode(PSTATE->pCPI->htStructs, (yyvsp[(2) - (5)].identifier), pStruct); } else { DELETE_NODE((yyvsp[(2) - (5)].identifier)); if (pStruct->declarations == NULL) { pStruct->context = (yyvsp[(1) - (5)].context).ctx; pStruct->declarations = (yyvsp[(4) - (5)].list); pStruct->pack = pragma_parser_get_pack(PSTATE->pragma); } else LL_destroy((yyvsp[(4) - (5)].list), (LLDestroyFunc) structdecl_delete); } (yyval.tspec).tflags = (yyvsp[(1) - (5)].context).uval; (yyval.tspec).ptr = pStruct; } ;} break; case 177: /* Line 1464 of yacc.c */ #line 1238 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { Struct *pStruct = HT_get(PSTATE->pCPI->htStructs, (yyvsp[(2) - (2)].identifier)->key, (yyvsp[(2) - (2)].identifier)->keylen, (yyvsp[(2) - (2)].identifier)->hash); if (pStruct == NULL) { pStruct = struct_new((yyvsp[(2) - (2)].identifier)->key, (yyvsp[(2) - (2)].identifier)->keylen, (yyvsp[(1) - (2)].context).uval, 0, NULL); pStruct->context = (yyvsp[(1) - (2)].context).ctx; LL_push(PSTATE->pCPI->structs, pStruct); HT_storenode(PSTATE->pCPI->htStructs, (yyvsp[(2) - (2)].identifier), pStruct); } else DELETE_NODE((yyvsp[(2) - (2)].identifier)); (yyval.tspec).tflags = (yyvsp[(1) - (2)].context).uval; (yyval.tspec).ptr = pStruct; } ;} break; case 178: /* Line 1464 of yacc.c */ #line 1267 "ctlib/parser.y" { (yyval.context).uval = (yyvsp[(1) - (1)].uval); (yyval.context).ctx.pFI = PSTATE->pFI; (yyval.context).ctx.line = PSTATE->pLexer->ctok->line; ;} break; case 179: /* Line 1464 of yacc.c */ #line 1275 "ctlib/parser.y" { (yyval.uval) = T_STRUCT; ;} break; case 180: /* Line 1464 of yacc.c */ #line 1276 "ctlib/parser.y" { (yyval.uval) = T_UNION; ;} break; case 181: /* Line 1464 of yacc.c */ #line 1280 "ctlib/parser.y" { (yyval.list) = IS_LOCAL ? NULL : LL_new(); ;} break; case 183: /* Line 1464 of yacc.c */ #line 1286 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { ctt_refcount_inc((yyvsp[(1) - (1)].pStructDecl)->type.ptr); (yyval.list) = LL_new(); LL_push((yyval.list), (yyvsp[(1) - (1)].pStructDecl)); } ;} break; case 184: /* Line 1464 of yacc.c */ #line 1297 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { ctt_refcount_inc((yyvsp[(2) - (2)].pStructDecl)->type.ptr); (yyval.list) = (yyvsp[(1) - (2)].list); LL_push((yyval.list), (yyvsp[(2) - (2)].pStructDecl)); } ;} break; case 187: /* Line 1464 of yacc.c */ #line 1315 "ctlib/parser.y" { (yyval.pStructDecl) = IS_LOCAL ? NULL : structdecl_new((yyvsp[(1) - (1)].tspec), NULL); ;} break; case 188: /* Line 1464 of yacc.c */ #line 1320 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pStructDecl) = NULL; else { if (((yyvsp[(1) - (2)].tspec).tflags & ANY_TYPE_NAME) == 0) (yyvsp[(1) - (2)].tspec).tflags |= T_INT; (yyval.pStructDecl) = structdecl_new((yyvsp[(1) - (2)].tspec), LL_new()); if ((yyvsp[(2) - (2)].pDecl)) LL_push((yyval.pStructDecl)->declarators, (yyvsp[(2) - (2)].pDecl)); } ;} break; case 189: /* Line 1464 of yacc.c */ #line 1333 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pStructDecl) = NULL; else { (yyval.pStructDecl) = (yyvsp[(1) - (3)].pStructDecl); if ((yyvsp[(3) - (3)].pDecl)) LL_push((yyval.pStructDecl)->declarators, (yyvsp[(3) - (3)].pDecl)); } ;} break; case 190: /* Line 1464 of yacc.c */ #line 1347 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pDecl) = NULL; else { (yyval.pDecl) = (yyvsp[(1) - (2)].pDecl); if (((yyvsp[(2) - (2)].value).flags & V_IS_UNDEF) == 0) { if ((yyvsp[(2) - (2)].value).iv <= 0) { char *msg; AllocF(char *, msg, 80 + CTT_IDLEN((yyvsp[(1) - (2)].pDecl))); sprintf(msg, "%s width for bit-field '%s'", (yyvsp[(2) - (2)].value).iv < 0 ? "negative" : "zero", (yyvsp[(1) - (2)].pDecl)->identifier); decl_delete((yyvsp[(1) - (2)].pDecl)); yyerror(msg); Free(msg); YYERROR; } (yyval.pDecl)->bitfield_flag = 1; (yyval.pDecl)->ext.bitfield.bits = (unsigned char) (yyvsp[(2) - (2)].value).iv; } } ;} break; case 191: /* Line 1464 of yacc.c */ #line 1374 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pDecl) = NULL; else { if ((yyvsp[(1) - (1)].value).iv < 0) { yyerror("negative width for bit-field"); YYERROR; } (yyval.pDecl) = decl_new("", 0); (yyval.pDecl)->bitfield_flag = 1; (yyval.pDecl)->ext.bitfield.bits = (unsigned char) (yyvsp[(1) - (1)].value).iv; } ;} break; case 192: /* Line 1464 of yacc.c */ #line 1393 "ctlib/parser.y" { UNDEF_VAL((yyval.value)); ;} break; case 194: /* Line 1464 of yacc.c */ #line 1398 "ctlib/parser.y" { (yyval.value) = (yyvsp[(2) - (2)].value); ;} break; case 195: /* Line 1464 of yacc.c */ #line 1403 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; LL_destroy((yyvsp[(3) - (5)].list), (LLDestroyFunc) enum_delete); } else { EnumSpecifier *pEnum = enumspec_new(NULL, 0, (yyvsp[(3) - (5)].list)); pEnum->context = (yyvsp[(1) - (5)].context).ctx; LL_push(PSTATE->pCPI->enums, pEnum); (yyval.tspec).tflags = T_ENUM; (yyval.tspec).ptr = pEnum; } ;} break; case 196: /* Line 1464 of yacc.c */ #line 1420 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { EnumSpecifier *pEnum = HT_get(PSTATE->pCPI->htEnums, (yyvsp[(2) - (6)].identifier)->key, (yyvsp[(2) - (6)].identifier)->keylen, (yyvsp[(2) - (6)].identifier)->hash); if (pEnum == NULL) { pEnum = enumspec_new((yyvsp[(2) - (6)].identifier)->key, (yyvsp[(2) - (6)].identifier)->keylen, (yyvsp[(4) - (6)].list)); pEnum->context = (yyvsp[(1) - (6)].context).ctx; LL_push(PSTATE->pCPI->enums, pEnum); HT_storenode(PSTATE->pCPI->htEnums, (yyvsp[(2) - (6)].identifier), pEnum); } else { DELETE_NODE((yyvsp[(2) - (6)].identifier)); if (pEnum->enumerators == NULL) { enumspec_update(pEnum, (yyvsp[(4) - (6)].list)); pEnum->context = (yyvsp[(1) - (6)].context).ctx; } else LL_destroy((yyvsp[(4) - (6)].list), (LLDestroyFunc) enum_delete); } (yyval.tspec).tflags = T_ENUM; (yyval.tspec).ptr = pEnum; } ;} break; case 197: /* Line 1464 of yacc.c */ #line 1456 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.tspec).tflags = 0; (yyval.tspec).ptr = NULL; /* identifier_or_typedef_name is NULL */ } else { EnumSpecifier *pEnum = HT_get(PSTATE->pCPI->htEnums, (yyvsp[(2) - (2)].identifier)->key, (yyvsp[(2) - (2)].identifier)->keylen, (yyvsp[(2) - (2)].identifier)->hash); if (pEnum == NULL) { pEnum = enumspec_new((yyvsp[(2) - (2)].identifier)->key, (yyvsp[(2) - (2)].identifier)->keylen, NULL); pEnum->context = (yyvsp[(1) - (2)].context).ctx; LL_push(PSTATE->pCPI->enums, pEnum); HT_storenode(PSTATE->pCPI->htEnums, (yyvsp[(2) - (2)].identifier), pEnum); } else { DELETE_NODE((yyvsp[(2) - (2)].identifier)); } (yyval.tspec).tflags = T_ENUM; (yyval.tspec).ptr = pEnum; } ;} break; case 198: /* Line 1464 of yacc.c */ #line 1487 "ctlib/parser.y" { (yyval.context).ctx.pFI = PSTATE->pFI; (yyval.context).ctx.line = PSTATE->pLexer->ctok->line; ;} break; case 199: /* Line 1464 of yacc.c */ #line 1495 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = LL_new(); if ((yyvsp[(1) - (1)].pEnum)->value.flags & V_IS_UNDEF) { (yyvsp[(1) - (1)].pEnum)->value.flags &= ~V_IS_UNDEF; (yyvsp[(1) - (1)].pEnum)->value.iv = 0; } LL_push((yyval.list), (yyvsp[(1) - (1)].pEnum)); } ;} break; case 200: /* Line 1464 of yacc.c */ #line 1510 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { if ((yyvsp[(3) - (3)].pEnum)->value.flags & V_IS_UNDEF) { Enumerator *pEnum = LL_get((yyvsp[(1) - (3)].list), -1); (yyvsp[(3) - (3)].pEnum)->value.flags = pEnum->value.flags; (yyvsp[(3) - (3)].pEnum)->value.iv = pEnum->value.iv + 1; } LL_push((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].pEnum)); (yyval.list) = (yyvsp[(1) - (3)].list); } ;} break; case 201: /* Line 1464 of yacc.c */ #line 1529 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.pEnum) = NULL; /* identifier_or_typedef_name is NULL */ } else { (yyval.pEnum) = enum_new((yyvsp[(1) - (1)].identifier)->key, (yyvsp[(1) - (1)].identifier)->keylen, NULL); HT_storenode(PSTATE->pCPI->htEnumerators, (yyvsp[(1) - (1)].identifier), (yyval.pEnum)); } ;} break; case 202: /* Line 1464 of yacc.c */ #line 1542 "ctlib/parser.y" { if (IS_LOCAL) { (yyval.pEnum) = NULL; /* identifier_or_typedef_name is NULL */ } else { (yyval.pEnum) = enum_new((yyvsp[(1) - (3)].identifier)->key, (yyvsp[(1) - (3)].identifier)->keylen, &(yyvsp[(3) - (3)].value)); HT_storenode(PSTATE->pCPI->htEnumerators, (yyvsp[(1) - (3)].identifier), (yyval.pEnum)); } ;} break; case 207: /* Line 1464 of yacc.c */ #line 1567 "ctlib/parser.y" {;} break; case 208: /* Line 1464 of yacc.c */ #line 1568 "ctlib/parser.y" {;} break; case 209: /* Line 1464 of yacc.c */ #line 1569 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) decl_delete((yyvsp[(2) - (2)].pDecl)); ;} break; case 210: /* Line 1464 of yacc.c */ #line 1570 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) decl_delete((yyvsp[(2) - (2)].pDecl)); ;} break; case 211: /* Line 1464 of yacc.c */ #line 1571 "ctlib/parser.y" {;} break; case 212: /* Line 1464 of yacc.c */ #line 1572 "ctlib/parser.y" {;} break; case 213: /* Line 1464 of yacc.c */ #line 1573 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) decl_delete((yyvsp[(2) - (2)].pDecl)); ;} break; case 214: /* Line 1464 of yacc.c */ #line 1574 "ctlib/parser.y" {;} break; case 215: /* Line 1464 of yacc.c */ #line 1575 "ctlib/parser.y" {;} break; case 216: /* Line 1464 of yacc.c */ #line 1576 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) decl_delete((yyvsp[(2) - (2)].pDecl)); ;} break; case 217: /* Line 1464 of yacc.c */ #line 1577 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) decl_delete((yyvsp[(2) - (2)].pDecl)); ;} break; case 218: /* Line 1464 of yacc.c */ #line 1578 "ctlib/parser.y" {;} break; case 219: /* Line 1464 of yacc.c */ #line 1579 "ctlib/parser.y" {;} break; case 220: /* Line 1464 of yacc.c */ #line 1580 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) decl_delete((yyvsp[(2) - (2)].pDecl)); ;} break; case 221: /* Line 1464 of yacc.c */ #line 1588 "ctlib/parser.y" { if ((yyvsp[(1) - (1)].identifier)) HN_delete((yyvsp[(1) - (1)].identifier)); ;} break; case 222: /* Line 1464 of yacc.c */ #line 1589 "ctlib/parser.y" { if ((yyvsp[(3) - (3)].identifier)) HN_delete((yyvsp[(3) - (3)].identifier)); ;} break; case 224: /* Line 1464 of yacc.c */ #line 1595 "ctlib/parser.y" { (yyval.identifier) = IS_LOCAL ? NULL : HN_new((yyvsp[(1) - (1)].pTypedef)->pDecl->identifier, CTT_IDLEN((yyvsp[(1) - (1)].pTypedef)->pDecl), 0); ;} break; case 225: /* Line 1464 of yacc.c */ #line 1602 "ctlib/parser.y" { if (!IS_LOCAL) { unsigned size; u_32 flags; (void) PSTATE->pCPC->get_type_info(&PSTATE->pCPC->layout, &(yyvsp[(1) - (1)].tspec), NULL, "sf", &size, &flags); (yyval.value).iv = size; (yyval.value).flags = 0; if (flags & T_UNSAFE_VAL) (yyval.value).flags |= V_IS_UNSAFE; } ;} break; case 226: /* Line 1464 of yacc.c */ #line 1615 "ctlib/parser.y" { if (!IS_LOCAL) { if ((yyvsp[(2) - (2)].absDecl).pointer_flag) { (yyval.value).iv = PSTATE->pCPC->layout.ptr_size * (yyvsp[(2) - (2)].absDecl).multiplicator; (yyval.value).flags = 0; } else { unsigned size; u_32 flags; (void) PSTATE->pCPC->get_type_info(&PSTATE->pCPC->layout, &(yyvsp[(1) - (2)].tspec), NULL, "sf", &size, &flags); (yyval.value).iv = size * (yyvsp[(2) - (2)].absDecl).multiplicator; (yyval.value).flags = 0; if (flags & T_UNSAFE_VAL) (yyval.value).flags |= V_IS_UNSAFE; } } ;} break; case 227: /* Line 1464 of yacc.c */ #line 1636 "ctlib/parser.y" { if (!IS_LOCAL) { (yyval.value).iv = PSTATE->pCPC->layout.int_size; (yyval.value).flags = 0; } ;} break; case 228: /* Line 1464 of yacc.c */ #line 1644 "ctlib/parser.y" { if (!IS_LOCAL) { (yyval.value).iv = (yyvsp[(2) - (2)].absDecl).multiplicator * ((yyvsp[(2) - (2)].absDecl).pointer_flag ? PSTATE->pCPC->layout.ptr_size : PSTATE->pCPC->layout.int_size); (yyval.value).flags = 0; } ;} break; case 233: /* Line 1464 of yacc.c */ #line 1662 "ctlib/parser.y" {;} break; case 241: /* Line 1464 of yacc.c */ #line 1682 "ctlib/parser.y" { DELETE_NODE((yyvsp[(2) - (2)].identifier)); ;} break; case 251: /* Line 1464 of yacc.c */ #line 1702 "ctlib/parser.y" { DELETE_NODE((yyvsp[(1) - (3)].identifier)); ;} break; case 269: /* Line 1464 of yacc.c */ #line 1741 "ctlib/parser.y" { DELETE_NODE((yyvsp[(2) - (3)].identifier)); ;} break; case 280: /* Line 1464 of yacc.c */ #line 1767 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 281: /* Line 1464 of yacc.c */ #line 1768 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[(1) - (3)].pDecl)); ;} break; case 282: /* Line 1464 of yacc.c */ #line 1769 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 283: /* Line 1464 of yacc.c */ #line 1770 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[(2) - (4)].pDecl)); ;} break; case 284: /* Line 1464 of yacc.c */ #line 1771 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 285: /* Line 1464 of yacc.c */ #line 1772 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[(2) - (4)].pDecl)); ;} break; case 286: /* Line 1464 of yacc.c */ #line 1773 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 287: /* Line 1464 of yacc.c */ #line 1774 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[(2) - (4)].pDecl)); ;} break; case 288: /* Line 1464 of yacc.c */ #line 1775 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 289: /* Line 1464 of yacc.c */ #line 1776 "ctlib/parser.y" { END_LOCAL; decl_delete((yyvsp[(2) - (4)].pDecl)); ;} break; case 290: /* Line 1464 of yacc.c */ #line 1778 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 291: /* Line 1464 of yacc.c */ #line 1778 "ctlib/parser.y" { END_LOCAL; ;} break; case 292: /* Line 1464 of yacc.c */ #line 1779 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 293: /* Line 1464 of yacc.c */ #line 1779 "ctlib/parser.y" { END_LOCAL; ;} break; case 294: /* Line 1464 of yacc.c */ #line 1780 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 295: /* Line 1464 of yacc.c */ #line 1780 "ctlib/parser.y" { END_LOCAL; ;} break; case 296: /* Line 1464 of yacc.c */ #line 1781 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 297: /* Line 1464 of yacc.c */ #line 1781 "ctlib/parser.y" { END_LOCAL; ;} break; case 298: /* Line 1464 of yacc.c */ #line 1782 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 299: /* Line 1464 of yacc.c */ #line 1782 "ctlib/parser.y" { END_LOCAL; ;} break; case 300: /* Line 1464 of yacc.c */ #line 1784 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 301: /* Line 1464 of yacc.c */ #line 1784 "ctlib/parser.y" { END_LOCAL; ;} break; case 302: /* Line 1464 of yacc.c */ #line 1785 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 303: /* Line 1464 of yacc.c */ #line 1785 "ctlib/parser.y" { END_LOCAL; ;} break; case 304: /* Line 1464 of yacc.c */ #line 1786 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 305: /* Line 1464 of yacc.c */ #line 1786 "ctlib/parser.y" { END_LOCAL; ;} break; case 306: /* Line 1464 of yacc.c */ #line 1787 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 307: /* Line 1464 of yacc.c */ #line 1787 "ctlib/parser.y" { END_LOCAL; ;} break; case 308: /* Line 1464 of yacc.c */ #line 1788 "ctlib/parser.y" { BEGIN_LOCAL; ;} break; case 309: /* Line 1464 of yacc.c */ #line 1788 "ctlib/parser.y" { END_LOCAL; ;} break; case 314: /* Line 1464 of yacc.c */ #line 1803 "ctlib/parser.y" { (yyval.pDecl) = IS_LOCAL ? NULL : decl_new((yyvsp[(1) - (1)].pTypedef)->pDecl->identifier, CTT_IDLEN((yyvsp[(1) - (1)].pTypedef)->pDecl)); ;} break; case 315: /* Line 1464 of yacc.c */ #line 1807 "ctlib/parser.y" { if (IS_LOCAL) (yyval.pDecl) = NULL; else { (yyval.pDecl) = decl_new((yyvsp[(1) - (2)].pTypedef)->pDecl->identifier, CTT_IDLEN((yyvsp[(1) - (2)].pTypedef)->pDecl)); if ((yyvsp[(2) - (2)].list)) { (yyval.pDecl)->array_flag = 1; (yyval.pDecl)->ext.array = (yyvsp[(2) - (2)].list); } } ;} break; case 318: /* Line 1464 of yacc.c */ #line 1829 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) (yyvsp[(2) - (2)].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[(2) - (2)].pDecl); ;} break; case 319: /* Line 1464 of yacc.c */ #line 1835 "ctlib/parser.y" { if ((yyvsp[(3) - (3)].pDecl)) (yyvsp[(3) - (3)].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[(3) - (3)].pDecl); ;} break; case 320: /* Line 1464 of yacc.c */ #line 1843 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[(2) - (3)].pDecl); ;} break; case 321: /* Line 1464 of yacc.c */ #line 1845 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[(2) - (4)].pDecl), (yyvsp[(4) - (4)].list)); (yyval.pDecl) = (yyvsp[(2) - (4)].pDecl); ;} break; case 323: /* Line 1464 of yacc.c */ #line 1857 "ctlib/parser.y" { if ((yyvsp[(3) - (4)].pDecl)) (yyvsp[(3) - (4)].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[(3) - (4)].pDecl); ;} break; case 324: /* Line 1464 of yacc.c */ #line 1863 "ctlib/parser.y" { if ((yyvsp[(4) - (5)].pDecl)) (yyvsp[(4) - (5)].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[(4) - (5)].pDecl); ;} break; case 325: /* Line 1464 of yacc.c */ #line 1869 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) (yyvsp[(2) - (2)].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[(2) - (2)].pDecl); ;} break; case 326: /* Line 1464 of yacc.c */ #line 1875 "ctlib/parser.y" { if ((yyvsp[(3) - (3)].pDecl)) (yyvsp[(3) - (3)].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[(3) - (3)].pDecl); ;} break; case 327: /* Line 1464 of yacc.c */ #line 1883 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[(2) - (3)].pDecl); ;} break; case 328: /* Line 1464 of yacc.c */ #line 1885 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[(2) - (4)].pDecl), (yyvsp[(3) - (4)].list)); (yyval.pDecl) = (yyvsp[(2) - (4)].pDecl); ;} break; case 329: /* Line 1464 of yacc.c */ #line 1890 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[(2) - (4)].pDecl), (yyvsp[(4) - (4)].list)); (yyval.pDecl) = (yyvsp[(2) - (4)].pDecl); ;} break; case 330: /* Line 1464 of yacc.c */ #line 1898 "ctlib/parser.y" { (yyval.pDecl) = IS_LOCAL ? NULL : decl_new((yyvsp[(1) - (1)].pTypedef)->pDecl->identifier, CTT_IDLEN((yyvsp[(1) - (1)].pTypedef)->pDecl)); ;} break; case 331: /* Line 1464 of yacc.c */ #line 1901 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[(2) - (3)].pDecl); ;} break; case 335: /* Line 1464 of yacc.c */ #line 1912 "ctlib/parser.y" { if ((yyvsp[(2) - (2)].pDecl)) (yyvsp[(2) - (2)].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[(2) - (2)].pDecl); ;} break; case 336: /* Line 1464 of yacc.c */ #line 1918 "ctlib/parser.y" { if ((yyvsp[(3) - (3)].pDecl)) (yyvsp[(3) - (3)].pDecl)->pointer_flag = 1; (yyval.pDecl) = (yyvsp[(3) - (3)].pDecl); ;} break; case 337: /* Line 1464 of yacc.c */ #line 1927 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[(1) - (2)].pDecl), (yyvsp[(2) - (2)].list)); (yyval.pDecl) = (yyvsp[(1) - (2)].pDecl); ;} break; case 338: /* Line 1464 of yacc.c */ #line 1931 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[(2) - (3)].pDecl); ;} break; case 339: /* Line 1464 of yacc.c */ #line 1933 "ctlib/parser.y" { POSTFIX_DECL((yyvsp[(2) - (4)].pDecl), (yyvsp[(4) - (4)].list)); (yyval.pDecl) = (yyvsp[(2) - (4)].pDecl); ;} break; case 340: /* Line 1464 of yacc.c */ #line 1941 "ctlib/parser.y" { if ((yyvsp[(1) - (1)].identifier)) { (yyval.pDecl) = decl_new((yyvsp[(1) - (1)].identifier)->key, (yyvsp[(1) - (1)].identifier)->keylen); HN_delete((yyvsp[(1) - (1)].identifier)); } else { (yyval.pDecl) = NULL; } ;} break; case 341: /* Line 1464 of yacc.c */ #line 1952 "ctlib/parser.y" { (yyval.pDecl) = (yyvsp[(2) - (3)].pDecl); ;} break; case 342: /* Line 1464 of yacc.c */ #line 1956 "ctlib/parser.y" {;} break; case 343: /* Line 1464 of yacc.c */ #line 1957 "ctlib/parser.y" {;} break; case 344: /* Line 1464 of yacc.c */ #line 1958 "ctlib/parser.y" {;} break; case 345: /* Line 1464 of yacc.c */ #line 1963 "ctlib/parser.y" { if ((yyvsp[(1) - (4)].pDecl)) decl_delete((yyvsp[(1) - (4)].pDecl)); ;} break; case 346: /* Line 1464 of yacc.c */ #line 1967 "ctlib/parser.y" {;} break; case 347: /* Line 1464 of yacc.c */ #line 1969 "ctlib/parser.y" { if ((yyvsp[(4) - (4)].list)) LL_destroy((yyvsp[(4) - (4)].list), (LLDestroyFunc) value_delete); ;} break; case 350: /* Line 1464 of yacc.c */ #line 1979 "ctlib/parser.y" { (yyval.absDecl).pointer_flag = 0; (yyval.absDecl).multiplicator = 1; if ((yyvsp[(1) - (1)].list)) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvsp[(1) - (1)].list)) (yyval.absDecl).multiplicator *= pValue->iv; LL_destroy((yyvsp[(1) - (1)].list), (LLDestroyFunc) value_delete); } ;} break; case 352: /* Line 1464 of yacc.c */ #line 1997 "ctlib/parser.y" { (yyval.list) = NULL; ;} break; case 353: /* Line 1464 of yacc.c */ #line 1998 "ctlib/parser.y" { (yyval.list) = NULL; ;} break; case 354: /* Line 1464 of yacc.c */ #line 2003 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = LL_new(); LL_push((yyval.list), value_new((yyvsp[(3) - (4)].value).iv, (yyvsp[(3) - (4)].value).flags)); CT_DEBUG(PARSER, ("array dimension => %ld", (yyvsp[(3) - (4)].value).iv)); } ;} break; case 355: /* Line 1464 of yacc.c */ #line 2014 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = LL_new(); LL_push((yyval.list), value_new((yyvsp[(4) - (5)].value).iv, (yyvsp[(4) - (5)].value).flags)); CT_DEBUG(PARSER, ("array dimension => %ld", (yyvsp[(4) - (5)].value).iv)); } ;} break; case 356: /* Line 1464 of yacc.c */ #line 2025 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = LL_new(); LL_push((yyval.list), value_new((yyvsp[(4) - (5)].value).iv, (yyvsp[(4) - (5)].value).flags)); CT_DEBUG(PARSER, ("array dimension => %ld", (yyvsp[(4) - (5)].value).iv)); } ;} break; case 357: /* Line 1464 of yacc.c */ #line 2035 "ctlib/parser.y" { (yyval.list) = NULL; ;} break; case 358: /* Line 1464 of yacc.c */ #line 2037 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = (yyvsp[(1) - (4)].list) ? (yyvsp[(1) - (4)].list) : LL_new(); LL_push((yyval.list), value_new((yyvsp[(3) - (4)].value).iv, (yyvsp[(3) - (4)].value).flags)); CT_DEBUG(PARSER, ("array dimension => %ld", (yyvsp[(3) - (4)].value).iv)); } ;} break; case 359: /* Line 1464 of yacc.c */ #line 2048 "ctlib/parser.y" { if (IS_LOCAL) (yyval.list) = NULL; else { (yyval.list) = (yyvsp[(1) - (4)].list) ? (yyvsp[(1) - (4)].list) : LL_new(); LL_push((yyval.list), value_new(0, 0)); CT_DEBUG(PARSER, ("array dimension => *" )); } ;} break; case 360: /* Line 1464 of yacc.c */ #line 2062 "ctlib/parser.y" { (yyval.absDecl).pointer_flag = 1; (yyval.absDecl).multiplicator = 1; ;} break; case 361: /* Line 1464 of yacc.c */ #line 2067 "ctlib/parser.y" { (yyval.absDecl).pointer_flag = 1; (yyval.absDecl).multiplicator = 1; ;} break; case 362: /* Line 1464 of yacc.c */ #line 2072 "ctlib/parser.y" { (yyvsp[(2) - (2)].absDecl).pointer_flag = 1; (yyval.absDecl) = (yyvsp[(2) - (2)].absDecl); ;} break; case 363: /* Line 1464 of yacc.c */ #line 2077 "ctlib/parser.y" { (yyvsp[(3) - (3)].absDecl).pointer_flag = 1; (yyval.absDecl) = (yyvsp[(3) - (3)].absDecl); ;} break; case 364: /* Line 1464 of yacc.c */ #line 2084 "ctlib/parser.y" { (yyval.absDecl) = (yyvsp[(2) - (3)].absDecl); ;} break; case 365: /* Line 1464 of yacc.c */ #line 2085 "ctlib/parser.y" { (yyval.absDecl) = (yyvsp[(2) - (3)].absDecl); ;} break; case 366: /* Line 1464 of yacc.c */ #line 2087 "ctlib/parser.y" { (yyval.absDecl).pointer_flag = 0; (yyval.absDecl).multiplicator = 1; if ((yyvsp[(2) - (3)].list)) { ListIterator ai; Value *pValue; LL_foreach(pValue, ai, (yyvsp[(2) - (3)].list)) (yyval.absDecl).multiplicator *= pValue->iv; LL_destroy((yyvsp[(2) - (3)].list), (LLDestroyFunc) value_delete); } ;} break; case 367: /* Line 1464 of yacc.c */ #line 2102 "ctlib/parser.y" { (yyval.absDecl) = (yyvsp[(2) - (4)].absDecl); if ((yyvsp[(4) - (4)].list)) LL_destroy((yyvsp[(4) - (4)].list), (LLDestroyFunc) value_delete); ;} break; /* Line 1464 of yacc.c */ #line 5740 "ctlib/y_parser.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 1684 of yacc.c */ #line 2109 "ctlib/parser.y" /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: c_lex * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: C lexer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int c_lex(YYSTYPE *plval, ParserState *pState) { int rval, token; struct lexer_state *pLexer = pState->pLexer; dUCPP(pState->pp); CT_DEBUG(CLEXER, ("parser.y::c_lex()")); while ((rval = lex(aUCPP_ pLexer)) < CPPERR_EOF) { if (rval) { CT_DEBUG(CLEXER, ("lex() returned %d", rval)); continue; } token = pLexer->ctok->type; switch (token) { case NONE: CT_DEBUG(CLEXER, ("token-type => NONE")); break; case COMMENT: CT_DEBUG(CLEXER, ("token-type => COMMENT => [%s]", pLexer->ctok->name)); break; case NEWLINE: CT_DEBUG(CLEXER, ("token-type => NEWLINE")); break; case BUNCH: CT_DEBUG(CLEXER, ("token-type => BUNCH => [%s]", pLexer->ctok->name)); break; case CONTEXT: CT_DEBUG(CLEXER, ("token-type => CONTEXT => [%s]", pLexer->ctok->name)); { FileInfo *pFI; size_t len = strlen(pLexer->ctok->name); CT_DEBUG(CLEXER, ("new context: file '%s', line %ld", pLexer->ctok->name, pLexer->ctok->line)); pFI = HT_get(pState->pCPI->htFiles, pLexer->ctok->name, len, 0); if (pFI == NULL) { pFI = fileinfo_new(pLexer->input, pLexer->ctok->name, len); HT_store(pState->pCPI->htFiles, pLexer->ctok->name, len, 0, pFI); } pState->pFI = pFI; } break; case NUMBER: CT_DEBUG(CLEXER, ("token-type => NUMBER => [%s]", pLexer->ctok->name)); plval->value.iv = strtol(pLexer->ctok->name, NULL, 0); plval->value.flags = 0; CT_DEBUG(CLEXER, ("constant: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return CONSTANT; case STRING: CT_DEBUG(CLEXER, ("token-type => STRING => [%s]", pLexer->ctok->name)); plval->value.iv = string_size(pLexer->ctok->name); plval->value.flags = 0; CT_DEBUG(CLEXER, ("string literal: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return STRING_LITERAL; case CHAR: CT_DEBUG(CLEXER, ("token-type => CHAR => [%s]", pLexer->ctok->name)); plval->value.iv = get_char_value(pLexer->ctok->name); plval->value.flags = 0; CT_DEBUG(CLEXER, ("constant: %s -> %ld", pLexer->ctok->name, plval->value.iv)); return CONSTANT; case PRAGMA: CT_DEBUG(CLEXER, ("token-type => PRAGMA")); CT_DEBUG(CLEXER, ("line %ld: <#pragma>", pLexer->line)); pragma_parser_set_context(pState->pragma, pState->pFI ? pState->pFI->name : "unknown", pLexer->line - 1, pLexer->ctok->name); pragma_parser_parse(pState->pragma); CT_DEBUG(CLEXER, ("current packing: %d\n", pragma_parser_get_pack(pState->pragma))); break; case NAME: CT_DEBUG(CLEXER, ("token-type => NAME => [%s]", pLexer->ctok->name)); { char *tokstr = pLexer->ctok->name; const CKeywordToken *ckt; #include "token/t_parser.c" unknown: if ((ckt = HT_get(pState->pCPC->keyword_map, tokstr, 0, 0)) != NULL) { if (ckt->token == SKIP_TOK) { CT_DEBUG(CLEXER, ("skipping token '%s' in line %ld", tokstr, pLexer->line)); break; } return ckt->token; } return check_type(plval, pState, tokstr); } default: CT_DEBUG(CLEXER, ("token-type => %d", token)); if ((rval = tokentab[token]) != 0) return rval; CT_DEBUG(CLEXER, ("unhandled token in line %ld: <%2d>", pLexer->line, token)); break; } } CT_DEBUG(CLEXER, ("EOF!")); return 0; } /******************************************************************************* * * ROUTINE: parser_error * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void parser_error(ParserState *pState, const char *msg) { push_error(pState->pCPI, "%s, line %ld: %s", pState->pFI ? pState->pFI->name : "[unknown]", pState->pLexer->ctok->line, msg); } /******************************************************************************* * * ROUTINE: get_char_value * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int get_char_value(const char *s) { while (*s && *s != '\'') s++; if (*++s != '\\') return (int) *s; switch (*++s) { case '0' : case '1' : case '2' : case '3' : return (int) strtol(s, NULL, 8); case 'a' : return (int) '\a'; case 'b' : return (int) '\b'; case 'f' : return (int) '\f'; case 'h' : return (int) strtol(++s, NULL, 16); case 'n' : return (int) '\n'; case 'r' : return (int) '\r'; case 't' : return (int) '\t'; case 'v' : return (int) '\v'; default: return (int) *s; } } /******************************************************************************* * * ROUTINE: string_size * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int string_size(const char *s) { int size, count; while (*s && *s != '\"') s++; for (s++, size=0; *s; size++) { if (*s == '\"') break; if (*s++ != '\\') continue; if (*s == 'x') { count = 0; do s++; while (count++ < 2 && ((*s >= '0' && *s <= '9') || (*s >= 'a' && *s <= 'f') || (*s >= 'A' && *s <= 'F'))); continue; } if (*s >= '0' && *s <= '7') { count = 0; do s++; while (count++ < 2 && *s >= '0' && *s <= '7'); } else s++; } return size; } /******************************************************************************* * * ROUTINE: check_type * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int check_type(YYSTYPE *plval, ParserState *pState, const char *s) { Typedef *pTypedef; HashSum hash; int len; CT_DEBUG(CLEXER, ("check_type( \"%s\" )", s)); HASH_STR_LEN(hash, s, len); pTypedef = HT_get(pState->pCPI->htTypedefs, s, len, hash); if (pTypedef) { CT_DEBUG(CLEXER, ("typedef found!")); plval->pTypedef = pTypedef; return TYPE_NAME; } plval->identifier = pState->flags & F_LOCAL ? NULL : HN_new(s, len, hash); return IDENTIFIER; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: get_c_keyword_token * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const CKeywordToken *get_c_keyword_token(const char *name) { #include "token/t_ckeytok.c" unknown: return NULL; } /******************************************************************************* * * ROUTINE: get_skip_token * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ const CKeywordToken *get_skip_token(void) { static const CKeywordToken ckt = { SKIP_TOK, NULL }; return &ckt; } /******************************************************************************* * * ROUTINE: c_parser_new * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Create a new C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ ParserState *c_parser_new(const CParseConfig *pCPC, CParseInfo *pCPI, pUCPP_ struct lexer_state *pLexer) { ParserState *pState; #ifdef CTLIB_DEBUGGING #ifdef YYDEBUG extern int pragma_debug; c_debug = pragma_debug = DEBUG_FLAG(YACC) ? 1 : 0; #endif #endif if (pCPC == NULL || pCPI == NULL || pLexer == NULL) return NULL; AllocF(ParserState *, pState, sizeof(ParserState)); pState->pCPI = pCPI; pState->pCPC = pCPC; pState->pLexer = pLexer; pState->pp = aUCPP; pState->flags = 0; pState->pFI = NULL; pState->pragma = pragma_parser_new(pCPI); return pState; } /******************************************************************************* * * ROUTINE: c_parser_run * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Run the C parser. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int c_parser_run(ParserState *pState) { return c_parse((void *) pState); } /******************************************************************************* * * ROUTINE: c_parser_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Dec 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Delete a C parser object. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void c_parser_delete(ParserState *pState) { if (pState == NULL) return; pragma_parser_delete(pState->pragma); Free(pState); } Convert-Binary-C-0.76/ctlib/ctparse.c0000644000175000001440000006611011550664614016121 0ustar mhxusers/******************************************************************************* * * MODULE: ctparse.c * ******************************************************************************** * * DESCRIPTION: Parser interface routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:18 +0200 $ * $Revision: 72 $ * $Source: /ctlib/ctparse.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctparse.h" #include "cterror.h" #include "ctdebug.h" #include "fileinfo.h" #include "parser.h" #include "util/memalloc.h" #include "ucpp/cpp.h" #ifdef MEM_DEBUG #include "ucpp/mem.h" /* for report_leaks() */ #endif #include "cppreent.h" /*===== DEFINES ==============================================================*/ #if defined MSDOS || defined WIN32 #define SYSTEM_DIRECTORY_DELIMITER '\\' #define IS_NON_SYSTEM_DIR_DELIM( c ) ( (c) == '/' ) #else #define SYSTEM_DIRECTORY_DELIMITER '/' #define IS_NON_SYSTEM_DIR_DELIM( c ) ( (c) == '\\' ) #endif #define IS_ANY_DIRECTORY_DELIMITER( c ) ( (c) == '/' || (c) == '\\' ) #define BUFFER_NAME "[buffer]" /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static char *get_path_name(const char *dir, const char *file); static void macro_callback(const struct macro_info *pmi); static void add_predef_callback(const struct macro_info *pmi); static void destroy_cpp(struct CPP *pp); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ #ifdef MEM_DEBUG static int gs_num_cpp; #endif /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_path_name * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static char *get_path_name(const char *dir, const char *file) { int dirlen = 0, filelen, append_delim = 0; char *buf, *b; if (dir != NULL) { dirlen = strlen(dir); if (!IS_ANY_DIRECTORY_DELIMITER(dir[dirlen-1])) append_delim = 1; } filelen = strlen(file); AllocF(char *, buf, dirlen + append_delim + filelen + 1); if (dir != NULL) strcpy(buf, dir); if (append_delim) buf[dirlen++] = SYSTEM_DIRECTORY_DELIMITER; strcpy(buf+dirlen, file); for (b = buf; *b; b++) if (IS_NON_SYSTEM_DIR_DELIM(*b)) *b = SYSTEM_DIRECTORY_DELIMITER; return buf; } /******************************************************************************* * * ROUTINE: macro_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ struct macro_cb_arg { HashTable predef; void (*func)(const CMacroInfo *); CMacroInfo info; }; static void macro_callback(const struct macro_info *pmi) { struct macro_cb_arg *a = pmi->arg; if (a->predef == NULL || !HT_exists(a->predef, pmi->name, 0, 0)) { CMacroInfo *p = &a->info; p->name = pmi->name; p->definition = pmi->definition; p->definition_len = pmi->definition_len; a->func(p); } } /******************************************************************************* * * ROUTINE: add_predef_callback * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void add_predef_callback(const struct macro_info *pmi) { HT_store(pmi->arg, pmi->name, 0, 0, NULL); } /******************************************************************************* * * ROUTINE: destroy_cpp * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void destroy_cpp(struct CPP *pp) { assert(pp != 0); wipeout(pp); del_cpp(pp); /* XXX: This cannot be used with concurrent preprocessor objects. * Leak checking has to be done when all objects are gone. */ #ifdef MEM_DEBUG assert(gs_num_cpp > 0); gs_num_cpp--; if (gs_num_cpp == 0) { report_leaks(); } #endif } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: macro_is_defined * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int macro_is_defined(CParseInfo *pCPI, const char *name) { assert(pCPI != NULL); if (pCPI->pp) return is_macro_defined(pCPI->pp, name); return 0; } /******************************************************************************* * * ROUTINE: macro_get_def * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ char *macro_get_def(CParseInfo *pCPI, const char *name, size_t *plen) { assert(pCPI != NULL); if (pCPI->pp) return get_macro_definition(pCPI->pp, name, plen); return NULL; } /******************************************************************************* * * ROUTINE: macro_free_def * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void macro_free_def(char *p) { free_macro_definition(p); } /******************************************************************************* * * ROUTINE: macro_iterate_defs * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void macro_iterate_defs(CParseInfo *pCPI, void (*func)(const CMacroInfo *), void *arg, CMIFlags flags) { if (pCPI && pCPI->pp) { struct macro_cb_arg a; unsigned long ppflags = 0; if (flags & CMIF_WITH_DEFINITION) ppflags |= MI_WITH_DEFINITION; if (flags & CMIF_NO_PREDEFINED) a.predef = pCPI->htPredefined; else a.predef = NULL; a.func = func; a.info.arg = arg; iterate_macros(pCPI->pp, macro_callback, &a, ppflags); } } /******************************************************************************* * * ROUTINE: parse_buffer * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int parse_buffer(const char *filename, const Buffer *pBuf, const CParseConfig *pCPC, CParseInfo *pCPI) { int rval, pp_needs_init; char *file, *str; FILE *infile; struct lexer_state lexer; ParserState *pState; struct CPP *pp; CT_DEBUG(CTLIB, ("ctparse::parse_buffer( %s, %p, %p, %p )", filename ? filename : BUFFER_NAME, pBuf, pCPI, pCPC)); /*----------------------------------*/ /* Initialize parse info structures */ /*----------------------------------*/ if (!pCPI->available) { assert(pCPI->enums == NULL); assert(pCPI->structs == NULL); assert(pCPI->typedef_lists == NULL); assert(pCPI->htEnumerators == NULL); assert(pCPI->htEnums == NULL); assert(pCPI->htStructs == NULL); assert(pCPI->htTypedefs == NULL); assert(pCPI->htFiles == NULL); CT_DEBUG(CTLIB, ("creating linked lists")); pCPI->enums = LL_new(); pCPI->structs = LL_new(); pCPI->typedef_lists = LL_new(); pCPI->htEnumerators = HT_new_ex(5, HT_AUTOGROW); pCPI->htEnums = HT_new_ex(4, HT_AUTOGROW); pCPI->htStructs = HT_new_ex(4, HT_AUTOGROW); pCPI->htTypedefs = HT_new_ex(4, HT_AUTOGROW); pCPI->htFiles = HT_new_ex(3, HT_AUTOGROW); pCPI->htPredefined = HT_new_ex(3, HT_AUTOGROW); pCPI->errorStack = LL_new(); pCPI->available = 1; } else if (pCPI->enums != NULL && pCPI->structs != NULL && pCPI->typedef_lists != NULL) { CT_DEBUG(CTLIB, ("re-using linked lists")); pop_all_errors(pCPI); } else fatal_error("CParseInfo is inconsistent!"); /* make sure we trigger update_parse_info() afterwards */ pCPI->ready = 0; /*----------------------------*/ /* Try to open the input file */ /*----------------------------*/ infile = NULL; if (filename != NULL) { file = get_path_name(NULL, filename); CT_DEBUG(CTLIB, ("Trying '%s'...", file)); infile = fopen(file, "r"); if (infile == NULL) { ListIterator li; LL_foreach(str, li, pCPC->includes) { Free(file); file = get_path_name(str, filename); CT_DEBUG(CTLIB, ("Trying '%s'...", file)); if((infile = fopen(file, "r")) != NULL) break; } if (infile == NULL) { Free(file); push_error(pCPI, "Cannot find input file '%s'", filename); return 0; } } } /*-------------------------*/ /* Set up new preprocessor */ /*-------------------------*/ CT_DEBUG(CTLIB, ("setting up preprocessor")); pp_needs_init = pCPI->pp == NULL; if (pp_needs_init) { #ifdef MEM_DEBUG gs_num_cpp++; #endif pp = pCPI->pp = new_cpp(); CT_DEBUG(CTLIB, ("created preprocessor object @ %p", pp)); init_cpp(pp); pp->ucpp_ouch = my_ucpp_ouch; pp->ucpp_error = my_ucpp_error; pp->ucpp_warning = my_ucpp_warning; pp->callback_arg = (void *) pCPI; r_no_special_macros = 0; r_emit_defines = 0; r_emit_assertions = 0; r_emit_dependencies = 0; r_c99_compliant = 0; r_c99_hosted = 0; init_tables(aUCPP_ 1); CT_DEBUG(CTLIB, ("configuring preprocessor")); init_include_path(aUCPP_ NULL); } else { pp = pCPI->pp; } if (filename != NULL) { set_init_filename(aUCPP_ file, 1); Free(file); } else { set_init_filename(aUCPP_ BUFFER_NAME, 0); } init_lexer_state(&lexer); init_lexer_mode(&lexer); lexer.flags |= HANDLE_ASSERTIONS | HANDLE_PRAGMA | LINE_NUM; if (pCPC->issue_warnings) lexer.flags |= WARN_STANDARD | WARN_ANNOYING | WARN_TRIGRAPHS | WARN_TRIGRAPHS_MORE; if (pCPC->has_cpp_comments) lexer.flags |= CPLUSPLUS_COMMENTS; if (pCPC->has_macro_vaargs) lexer.flags |= MACRO_VAARG; if (infile != NULL) { lexer.input = infile; } else { lexer.input = NULL; lexer.input_string = (unsigned char *) pBuf->buffer; lexer.pbuf = pBuf->pos; lexer.ebuf = pBuf->length; } if (pp_needs_init) { ListIterator li; /* Configure standard C features */ if (pCPC->has_std_c) { char tmp[20 + 4*sizeof(pCPC->std_c_version)]; sprintf(tmp, "__STDC_VERSION__=%ldL", pCPC->std_c_version); (void) define_macro(aUCPP_ &lexer, tmp); } if (pCPC->has_std_c_hosted) { char tmp[20]; sprintf(tmp, "__STDC_HOSTED__=%u", pCPC->is_std_c_hosted); (void) define_macro(aUCPP_ &lexer, tmp); } /* Add includes */ LL_foreach(str, li, pCPC->includes) { CT_DEBUG(CTLIB, ("adding include path '%s'", str)); add_incpath(aUCPP_ str); } /* Make defines */ LL_foreach(str, li, pCPC->defines) { CT_DEBUG(CTLIB, ("defining macro '%s'", str)); (void) define_macro(aUCPP_ &lexer, str); } /* Make assertions */ LL_foreach(str, li, pCPC->assertions) { CT_DEBUG(CTLIB, ("making assertion '%s'", str)); (void) make_assertion(aUCPP_ str); } iterate_macros(aUCPP_ add_predef_callback, pCPI->htPredefined, 0); } enter_file(aUCPP_ &lexer, lexer.flags); /*---------------------*/ /* Create the C parser */ /*---------------------*/ pState = c_parser_new(pCPC, pCPI, aUCPP_ &lexer); /*-----------------*/ /* Parse the input */ /*-----------------*/ if (pCPC->disable_parser) { CT_DEBUG(CTLIB, ("parser is disabled, running only preprocessor")); rval = 0; } else { CT_DEBUG(CTLIB, ("entering parser")); rval = c_parser_run(pState); CT_DEBUG(CTLIB, ("c_parse() returned %d", rval)); } /*-------------------------------*/ /* Finish parsing (cleanup ucpp) */ /*-------------------------------*/ if (rval || pCPC->disable_parser) while (lex(aUCPP_ &lexer) < CPPERR_EOF); (void) check_cpp_errors(aUCPP_ &lexer); if (DEBUG_FLAG(PREPROC)) { pp->emit_output = stderr; /* the best we can get here... */ print_defines(pp); print_assertions(pp); } free_lexer_state(&lexer); /*----------------------*/ /* Cleanup the C parser */ /*----------------------*/ c_parser_delete(pState); /* Invalidate the buffer name in the parsed files table */ if (filename == NULL) ((FileInfo *) HT_get(pCPI->htFiles, BUFFER_NAME, 0, 0))->valid = 0; #if !defined NDEBUG && defined CTLIB_DEBUGGING if (DEBUG_FLAG(HASH)) { HT_dump(pCPI->htEnumerators); HT_dump(pCPI->htEnums); HT_dump(pCPI->htStructs); HT_dump(pCPI->htTypedefs); HT_dump(pCPI->htFiles); HT_dump(pCPI->htPredefined); } #endif return rval ? 0 : 1; } /******************************************************************************* * * ROUTINE: init_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void init_parse_info(CParseInfo *pCPI) { CT_DEBUG( CTLIB, ("ctparse::init_parse_info()") ); if (pCPI) { pCPI->typedef_lists = NULL; pCPI->structs = NULL; pCPI->enums = NULL; pCPI->htEnumerators = NULL; pCPI->htEnums = NULL; pCPI->htStructs = NULL; pCPI->htTypedefs = NULL; pCPI->htFiles = NULL; pCPI->htPredefined = NULL; pCPI->errorStack = NULL; pCPI->pp = NULL; pCPI->available = 0; pCPI->ready = 0; } } /******************************************************************************* * * ROUTINE: reset_preprocessor * * WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void reset_preprocessor(CParseInfo *pCPI) { CT_DEBUG(CTLIB, ("ctparse::reset_preprocessor()")); if (pCPI && pCPI->pp) { CT_DEBUG(CTLIB, ("destroying preprocessor object @ %p", pCPI->pp)); destroy_cpp(pCPI->pp); pCPI->pp = NULL; } } /******************************************************************************* * * ROUTINE: free_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void free_parse_info(CParseInfo *pCPI) { CT_DEBUG(CTLIB, ("ctparse::free_parse_info()")); if (pCPI) { if (pCPI->available) { LL_destroy(pCPI->enums, (LLDestroyFunc) enumspec_delete); LL_destroy(pCPI->structs, (LLDestroyFunc) struct_delete); LL_destroy(pCPI->typedef_lists, (LLDestroyFunc) typedef_list_delete); HT_destroy(pCPI->htEnumerators, NULL); HT_destroy(pCPI->htEnums, NULL); HT_destroy(pCPI->htStructs, NULL); HT_destroy(pCPI->htTypedefs, NULL); HT_destroy(pCPI->htFiles, (LLDestroyFunc) fileinfo_delete); HT_destroy(pCPI->htPredefined, NULL); if (pCPI->errorStack) { pop_all_errors(pCPI); LL_delete(pCPI->errorStack); } } reset_preprocessor(pCPI); init_parse_info(pCPI); /* make sure everything is NULL'd */ } } /******************************************************************************* * * ROUTINE: reset_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void reset_parse_info(CParseInfo *pCPI) { ListIterator li, ti; Struct *pStruct; TypedefList *pTDL; Typedef *pTD; CT_DEBUG(CTLIB, ("ctparse::reset_parse_info(): got %d struct(s)", LL_count(pCPI->structs))); /* clear size and align fields */ LL_foreach(pStruct, li, pCPI->structs) { CT_DEBUG(CTLIB, ("resetting struct '%s':", pStruct->identifier[0] ? pStruct->identifier : "")); pStruct->align = 0; pStruct->size = 0; } LL_foreach(pTDL, li, pCPI->typedef_lists) LL_foreach(pTD, ti, pTDL->typedefs) { pTD->pDecl->size = -1; pTD->pDecl->item_size = -1; } pCPI->ready = 0; } /******************************************************************************* * * ROUTINE: update_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void update_parse_info(CParseInfo *pCPI, const CParseConfig *pCPC) { ListIterator li, ti; Struct *pStruct; TypedefList *pTDL; Typedef *pTD; CT_DEBUG(CTLIB, ("ctparse::update_parse_info(): got %d struct(s)", LL_count(pCPI->structs))); /* compute size and alignment */ LL_foreach(pStruct, li, pCPI->structs) { CT_DEBUG(CTLIB, ("updating struct '%s':", pStruct->identifier[0] ? pStruct->identifier : "")); if (pStruct->align == 0) pCPC->layout_compound(&pCPC->layout, pStruct); } LL_foreach(pTDL, li, pCPI->typedef_lists) LL_foreach(pTD, ti, pTDL->typedefs) if (pTD->pDecl->size < 0) { unsigned size, item_size; if (pCPC->get_type_info(&pCPC->layout, pTD->pType, pTD->pDecl, "si", &size, &item_size) == GTI_NO_ERROR) { pTD->pDecl->size = (int) size; pTD->pDecl->item_size = (int) item_size; } } pCPI->ready = 1; } /******************************************************************************* * * ROUTINE: clone_parse_info * * WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define PTR_NOT_FOUND(ptr) \ fatal_error("FATAL: pointer " #ptr " (%p) not found! (%s:%d)\n", \ ptr, __FILE__, __LINE__) #define REMAP_PTR(what, target) \ do { \ if (target != NULL) \ { \ void *ptr = HT_get(ptrmap, (const char *) &target, \ sizeof(void *), 0); \ \ CT_DEBUG(CTLIB, (#what ": %p => %p", target, ptr)); \ \ if (ptr) \ target = ptr; \ else \ PTR_NOT_FOUND((void *) target); \ } \ } while (0) void clone_parse_info(CParseInfo *pDest, const CParseInfo *pSrc) { ListIterator li; HashTable ptrmap; EnumSpecifier *pES; Struct *pStruct; TypedefList *pTDL; CT_DEBUG(CTLIB, ("ctparse::clone_parse_info()")); if (!pSrc->available) return; /* don't clone empty objects */ assert(pSrc->enums != NULL); assert(pSrc->structs != NULL); assert(pSrc->typedef_lists != NULL); assert(pSrc->htEnumerators != NULL); assert(pSrc->htEnums != NULL); assert(pSrc->htStructs != NULL); assert(pSrc->htTypedefs != NULL); assert(pSrc->htFiles != NULL); assert(pSrc->htPredefined != NULL); if (pSrc->pp) { #ifdef MEM_DEBUG gs_num_cpp++; #endif pDest->pp = clone_cpp(pSrc->pp); assert(pDest->pp != NULL); CT_DEBUG(CTLIB, ("cloned preprocessor object @ %p -> %p", pSrc->pp, pDest->pp)); } ptrmap = HT_new_ex(3, HT_AUTOGROW); pDest->enums = LL_new(); pDest->structs = LL_new(); pDest->typedef_lists = LL_new(); pDest->htEnumerators = HT_new_ex(HT_size(pSrc->htEnumerators), HT_AUTOGROW); pDest->htEnums = HT_new_ex(HT_size(pSrc->htEnums), HT_AUTOGROW); pDest->htStructs = HT_new_ex(HT_size(pSrc->htStructs), HT_AUTOGROW); pDest->htTypedefs = HT_new_ex(HT_size(pSrc->htTypedefs), HT_AUTOGROW); pDest->errorStack = LL_new(); pDest->available = pSrc->available; pDest->ready = pSrc->ready; CT_DEBUG(CTLIB, ("cloning enums")); LL_foreach(pES, li, pSrc->enums) { ListIterator ei; Enumerator *pEnum; EnumSpecifier *pClone = enumspec_clone(pES); CT_DEBUG(CTLIB, ("storing pointer to map: %p <=> %p", pES, pClone)); HT_store(ptrmap, (const char *) &pES, sizeof(pES), 0, pClone); LL_push(pDest->enums, pClone); if (pClone->identifier[0]) HT_store(pDest->htEnums, pClone->identifier, 0, 0, pClone); LL_foreach(pEnum, ei, pClone->enumerators) HT_store(pDest->htEnumerators, pEnum->identifier, 0, 0, pEnum); } CT_DEBUG(CTLIB, ("cloning structs")); LL_foreach(pStruct, li, pSrc->structs) { Struct *pClone = struct_clone(pStruct); CT_DEBUG(CTLIB, ("storing pointer to map: %p <=> %p", pStruct, pClone)); HT_store(ptrmap, (const char *) &pStruct, sizeof(pStruct), 0, pClone); LL_push(pDest->structs, pClone); if (pClone->identifier[0]) HT_store(pDest->htStructs, pClone->identifier, 0, 0, pClone); } CT_DEBUG(CTLIB, ("cloning typedefs")); LL_foreach(pTDL, li, pSrc->typedef_lists) { ListIterator oi, ci; TypedefList *pClone = typedef_list_clone(pTDL); LI_init(&oi, pTDL->typedefs); LI_init(&ci, pClone->typedefs); while (LI_next(&oi) && LI_next(&ci)) { Typedef *pOld = LI_curr(&oi), *pNew = LI_curr(&ci); CT_DEBUG(CTLIB, ("storing pointer to map: %p <=> %p", pOld, pNew)); HT_store(ptrmap, (const char *) &pOld, sizeof(pOld), 0, pNew); HT_store(pDest->htTypedefs, pNew->pDecl->identifier, 0, 0, pNew); } LL_push(pDest->typedef_lists, pClone); } CT_DEBUG(CTLIB, ("cloning file information")); { HashIterator isrc, idst; void *pOld, *pNew; pDest->htFiles = HT_clone(pSrc->htFiles, (HTCloneFunc) fileinfo_clone); HI_init(&isrc, pSrc->htFiles); HI_init(&idst, pDest->htFiles); while (HI_next(&isrc, NULL, NULL, &pOld) && HI_next(&idst, NULL, NULL, &pNew)) { CT_DEBUG(CTLIB, ("storing pointer to map: %p <=> %p", pOld, pNew)); HT_store(ptrmap, (const char *) &pOld, sizeof(pOld), 0, pNew); } } CT_DEBUG(CTLIB, ("cloning predefined macros")); pDest->htPredefined = HT_clone(pSrc->htPredefined, NULL); CT_DEBUG(CTLIB, ("remapping pointers for enums")); LL_foreach(pES, li, pDest->enums) REMAP_PTR(EnumSpec, pES->context.pFI); CT_DEBUG(CTLIB, ("remapping pointers for structs")); LL_foreach(pStruct, li, pDest->structs) { ListIterator sdi; StructDeclaration *pStructDecl; CT_DEBUG(CTLIB, ("remapping pointers for struct @ %p ('%s')", pStruct, pStruct->identifier)); LL_foreach(pStructDecl, sdi, pStruct->declarations) REMAP_PTR(StructDecl, pStructDecl->type.ptr); REMAP_PTR(Struct, pStruct->context.pFI); } CT_DEBUG(CTLIB, ("remapping pointers for typedef lists")); LL_foreach(pTDL, li, pDest->typedef_lists) REMAP_PTR(TypedefList, pTDL->type.ptr); HT_destroy(ptrmap, NULL); } #undef REMAP_PTR #undef PTR_NOT_FOUND Convert-Binary-C-0.76/ctlib/ctparse.h0000644000175000001440000001131511550664614016123 0ustar mhxusers/******************************************************************************* * * HEADER: ctparse.h * ******************************************************************************** * * DESCRIPTION: Parser interface routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:18 +0200 $ * $Revision: 45 $ * $Source: /ctlib/ctparse.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTPARSE_H #define _CTLIB_CTPARSE_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/cttype.h" #include "ctlib/layout.h" #include "util/list.h" #include "util/hash.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ struct CPP; typedef struct { char *buffer; unsigned long pos, length; } Buffer; typedef struct { LayoutParam layout; ErrorGTI (*get_type_info)(const LayoutParam *, const TypeSpec *, const Declarator *, const char *, ...); void (*layout_compound)(const LayoutParam *, Struct *); /* boolean options */ unsigned unsigned_chars : 1; unsigned unsigned_bitfields : 1; unsigned issue_warnings : 1; unsigned disable_parser : 1; unsigned has_cpp_comments : 1; unsigned has_macro_vaargs : 1; unsigned has_std_c : 1; unsigned has_std_c_hosted : 1; unsigned is_std_c_hosted : 1; long int std_c_version; u_32 keywords; #define HAS_KEYWORD_AUTO 0x00000001U #define HAS_KEYWORD_CONST 0x00000002U #define HAS_KEYWORD_DOUBLE 0x00000004U #define HAS_KEYWORD_ENUM 0x00000008U #define HAS_KEYWORD_EXTERN 0x00000010U #define HAS_KEYWORD_FLOAT 0x00000020U #define HAS_KEYWORD_INLINE 0x00000040U #define HAS_KEYWORD_LONG 0x00000080U #define HAS_KEYWORD_REGISTER 0x00000100U #define HAS_KEYWORD_RESTRICT 0x00000200U #define HAS_KEYWORD_SHORT 0x00000400U #define HAS_KEYWORD_SIGNED 0x00000800U #define HAS_KEYWORD_STATIC 0x00001000U #define HAS_KEYWORD_UNSIGNED 0x00002000U #define HAS_KEYWORD_VOID 0x00004000U #define HAS_KEYWORD_VOLATILE 0x00008000U #define HAS_KEYWORD_ASM 0x00010000U #define HAS_ALL_KEYWORDS 0x0001FFFFU LinkedList disabled_keywords; LinkedList includes; LinkedList defines; LinkedList assertions; HashTable keyword_map; } CParseConfig; typedef struct { LinkedList enums; LinkedList structs; LinkedList typedef_lists; HashTable htEnumerators; HashTable htEnums; HashTable htStructs; HashTable htTypedefs; HashTable htFiles; HashTable htPredefined; LinkedList errorStack; struct CPP *pp; unsigned available : 1; unsigned ready : 1; } CParseInfo; typedef struct { void *arg; const char *name; const char *definition; size_t definition_len; } CMacroInfo; #define CMIF_WITH_DEFINITION 0x00000001 #define CMIF_NO_PREDEFINED 0x00000002 typedef unsigned CMIFlags; /*===== FUNCTION PROTOTYPES ==================================================*/ #define parse_buffer CTlib_parse_buffer int parse_buffer(const char *filename, const Buffer *pBuf, const CParseConfig *pCPC, CParseInfo *pCPI); #define init_parse_info CTlib_init_parse_info void init_parse_info(CParseInfo *pCPI); #define free_parse_info CTlib_free_parse_info void free_parse_info(CParseInfo *pCPI); #define reset_preprocessor CTlib_reset_preprocessor void reset_preprocessor(CParseInfo *pCPI); #define reset_parse_info CTlib_reset_parse_info void reset_parse_info(CParseInfo *pCPI); #define update_parse_info CTlib_update_parse_info void update_parse_info(CParseInfo *pCPI, const CParseConfig *pCPC); #define clone_parse_info CTlib_clone_parse_info void clone_parse_info(CParseInfo *pDest, const CParseInfo *pSrc); #define macro_is_defined CTlib_macro_is_defined int macro_is_defined(CParseInfo *pCPI, const char *name); #define macro_get_def CTlib_macro_get_def char *macro_get_def(CParseInfo *pCPI, const char *name, size_t *plen); #define macro_free_def CTlib_macro_free_def void macro_free_def(char *p); #define macro_iterate_defs CTlib_macro_iterate_defs void macro_iterate_defs(CParseInfo *pCPI, void (*func)(const CMacroInfo *), void *arg, CMIFlags flags); #endif Convert-Binary-C-0.76/ctlib/pragma.h0000644000175000001440000000363011550664615015733 0ustar mhxusers/******************************************************************************* * * HEADER: parser.h * ******************************************************************************** * * DESCRIPTION: Pragma parser * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:20 +0200 $ * $Revision: 14 $ * $Source: /ctlib/pragma.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_PRAGMA_H #define _CTLIB_PRAGMA_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctparse.h" #include "util/list.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ typedef struct _pragmaState PragmaState; /*===== FUNCTION PROTOTYPES ==================================================*/ #define pragma_parser_new CTlib_pragma_parser_new PragmaState *pragma_parser_new(CParseInfo *pCPI); #define pragma_parser_delete CTlib_pragma_parser_delete void pragma_parser_delete(PragmaState *pPragma); #define pragma_parser_parse CTlib_pragma_parser_parse int pragma_parser_parse(PragmaState *pPragma); #define pragma_parser_set_context CTlib_pragma_parser_set_context void pragma_parser_set_context(PragmaState *pPragma, const char *file, long int line, const char *code); #define pragma_parser_get_pack CTlib_pragma_parser_get_pack unsigned pragma_parser_get_pack(PragmaState *pPragma); #endif Convert-Binary-C-0.76/ctlib/pragma.y0000644000175000001440000003122511550664615015755 0ustar mhxusers%{ /******************************************************************************* * * MODULE: pragma.y * ******************************************************************************** * * DESCRIPTION: Pragma parser * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:20 +0200 $ * $Revision: 21 $ * $Source: /ctlib/pragma.y $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" #include "cterror.h" #include "pragma.h" #include "util/ccattr.h" #include "util/memalloc.h" #include "util/list.h" #include "ucpp/cpp.h" /*===== DEFINES ==============================================================*/ /* ADDITIONAL BISON CONFIGURATION */ #define YYPARSE_PARAM pState #define YYLEX_PARAM pState #define YYERROR_VERBOSE /* * Bison version >= 1.31 is needed for YYFPRINTF */ #if YYDEBUG && defined CTLIB_DEBUGGING #define YYFPRINTF BisonDebugFunc #endif #define pragma_error( msg ) \ CT_DEBUG( PRAGMA, ("pragma_error(): %s", msg) ) #define pragma_parse CTlib_pragma_parse /* MACROS */ #define PSTATE ((PragmaState *) pState) #define VALID_PACK( value ) \ ( (value) == 0 \ || (value) == 1 \ || (value) == 2 \ || (value) == 4 \ || (value) == 8 \ ) /*===== TYPEDEFS =============================================================*/ struct _pragmaState { CParseInfo *pCPI; const char *file; long int line; const char *code; struct { LinkedList stack; unsigned current; } pack; }; typedef struct { unsigned size; } PackElement; /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /* TOKEN MAPPING TABLE */ static const int tokentab[] = { 0, /* NONE, */ /* whitespace */ 0, /* NEWLINE, */ /* newline */ 0, /* COMMENT, */ /* comment */ 0, /* NUMBER, */ /* number constant */ 0, /* NAME, */ /* identifier */ 0, /* BUNCH, */ /* non-C characters */ 0, /* PRAGMA, */ /* a #pragma directive */ 0, /* CONTEXT, */ /* new file or #line */ 0, /* STRING, */ /* constant "xxx" */ 0, /* CHAR, */ /* constant 'xxx' */ '/', /* SLASH, */ /* / */ 0, /* ASSLASH, */ /* /= */ '-', /* MINUS, */ /* - */ 0, /* MMINUS, */ /* -- */ 0, /* ASMINUS, */ /* -= */ 0, /* ARROW, */ /* -> */ '+', /* PLUS, */ /* + */ 0, /* PPLUS, */ /* ++ */ 0, /* ASPLUS, */ /* += */ '<', /* LT, */ /* < */ 0, /* LEQ, */ /* <= */ 0, /* LSH, */ /* << */ 0, /* ASLSH, */ /* <<= */ '>', /* GT, */ /* > */ 0, /* GEQ, */ /* >= */ 0, /* RSH, */ /* >> */ 0, /* ASRSH, */ /* >>= */ '=', /* ASGN, */ /* = */ 0, /* SAME, */ /* == */ #ifdef CAST_OP 0, /* CAST, */ /* => */ #endif '~', /* NOT, */ /* ~ */ 0, /* NEQ, */ /* != */ '&', /* AND, */ /* & */ 0, /* LAND, */ /* && */ 0, /* ASAND, */ /* &= */ '|', /* OR, */ /* | */ 0, /* LOR, */ /* || */ 0, /* ASOR, */ /* |= */ '%', /* PCT, */ /* % */ 0, /* ASPCT, */ /* %= */ '*', /* STAR, */ /* * */ 0, /* ASSTAR, */ /* *= */ '^', /* CIRC, */ /* ^ */ 0, /* ASCIRC, */ /* ^= */ '!', /* LNOT, */ /* ! */ '{', /* LBRA, */ /* { */ '}', /* RBRA, */ /* } */ '[', /* LBRK, */ /* [ */ ']', /* RBRK, */ /* ] */ '(', /* LPAR, */ /* ( */ ')', /* RPAR, */ /* ) */ ',', /* COMMA, */ /* , */ '?', /* QUEST, */ /* ? */ ';', /* SEMIC, */ /* ; */ ':', /* COLON, */ /* : */ '.', /* DOT, */ /* . */ 0, /* MDOTS, */ /* ... */ 0, /* SHARP, */ /* # */ 0, /* DSHARP, */ /* ## */ 0, /* OPT_NONE, */ /* optional space to separate tokens in text output */ 0, /* DIGRAPH_TOKENS, */ /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ '[', /* DIG_LBRK, */ /* <: */ ']', /* DIG_RBRK, */ /* :> */ '{', /* DIG_LBRA, */ /* <% */ '}', /* DIG_RBRA, */ /* %> */ 0, /* DIG_SHARP, */ /* %: */ 0, /* DIG_DSHARP, */ /* %:%: */ 0, /* DIGRAPH_TOKENS_END, */ /* digraph tokens end here */ 0, /* LAST_MEANINGFUL_TOKEN, */ /* reserved words will go there */ 0, /* MACROARG, */ /* special token for representing macro arguments */ 0, /* UPLUS = CPPERR, */ /* unary + */ 0, /* UMINUS */ /* unary - */ }; %} /*===== YACC PARSER DEFINITION ================================================*/ %union { int ival; } %{ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static int is_valid_pack_arg(PragmaState *pState, int arg); static inline int pragma_lex(YYSTYPE *plval, PragmaState *pState); static PackElement *packelem_new(unsigned size); static void packelem_delete(PackElement *pPack); %} %token CONSTANT %token PACK_TOK %token PUSH_TOK POP_TOK %pure_parser %start pragma %% pragma : pragma_pack ; pragma_pack : PACK_TOK { PSTATE->pack.current = 0; } | PACK_TOK '(' ')' { PSTATE->pack.current = 0; } | PACK_TOK '(' pragma_pack_args ')' ; pragma_pack_args : CONSTANT { if (is_valid_pack_arg(PSTATE, $1)) { PSTATE->pack.current = $1; } } | PUSH_TOK ',' CONSTANT { if (is_valid_pack_arg(PSTATE, $3)) { LL_push(PSTATE->pack.stack, packelem_new(PSTATE->pack.current)); PSTATE->pack.current = $3; } } | POP_TOK { PackElement *pPack = LL_pop(PSTATE->pack.stack); if (pPack) { PSTATE->pack.current = pPack->size; packelem_delete(pPack); } else PSTATE->pack.current = 0; } ; %% /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: is_valid_pack_arg * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int is_valid_pack_arg(PragmaState *pState, int arg) { if (VALID_PACK(arg)) return 1; push_error(pState->pCPI, "%s, line %ld: invalid argument %d to #pragma pack", pState->file, pState->line, arg); return 0; } /******************************************************************************* * * ROUTINE: packelem_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static PackElement *packelem_new(unsigned size) { PackElement *pPack; AllocF(PackElement *, pPack, sizeof(PackElement)); pPack->size = size; return pPack; } /******************************************************************************* * * ROUTINE: packelem_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void packelem_delete(PackElement *pPack) { if (pPack) Free(pPack); } /******************************************************************************* * * ROUTINE: pragma_lex * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pragma lexer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int pragma_lex(YYSTYPE *plval, PragmaState *pState) { int token, rval; CT_DEBUG( PRAGMA, ("pragma_lex()")); while ((token = (int) *pState->code++) != 0) { switch (token) { case NUMBER: { const char *num = pState->code; pState->code = strchr(num, PRAGMA_TOKEN_END) + 1; plval->ival = strtol(num, NULL, 0); CT_DEBUG(PRAGMA, ("pragma - constant: %d", plval->ival)); return CONSTANT; } case NAME: { const char *tokstr = pState->code; int toklen, tokval; #include "token/t_pragma.c" success: pState->code += toklen + 1; return tokval; unknown: break; } default: if ((rval = tokentab[token]) != 0) return rval; break; } } return 0; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: pragma_parser_parse * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int pragma_parser_parse(PragmaState *pPragma) { return pragma_parse(pPragma); } /******************************************************************************* * * ROUTINE: pragma_parser_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ PragmaState *pragma_parser_new(CParseInfo *pCPI) { PragmaState *pState; CT_DEBUG(PRAGMA, ("pragma_parser_new")); AllocF(PragmaState *, pState, sizeof(PragmaState)); pState->pCPI = pCPI; pState->file = 0; pState->line = 0; pState->code = 0; pState->pack.stack = LL_new(); pState->pack.current = 0; return pState; } /******************************************************************************* * * ROUTINE: pragma_parser_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pragma_parser_delete(PragmaState *pPragma) { if (pPragma) { CT_DEBUG(PRAGMA, ("pragma_parser_delete")); LL_destroy(pPragma->pack.stack, (LLDestroyFunc) packelem_delete); Free(pPragma); } } /******************************************************************************* * * ROUTINE: pragma_parser_set_context * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pragma_parser_set_context(PragmaState *pPragma, const char *file, long int line, const char *code) { pPragma->file = file; pPragma->line = line; pPragma->code = code; } /******************************************************************************* * * ROUTINE: pragma_parser_get_pack * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ unsigned pragma_parser_get_pack(PragmaState *pPragma) { return pPragma->pack.current; } Convert-Binary-C-0.76/ctlib/y_pragma.c0000644000175000001440000015251611550664635016270 0ustar mhxusers/* A Bison parser, made by GNU Bison 2.4.3. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.4.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Substitute the variable and function names. */ #define yyparse pragma_parse #define yylex pragma_lex #define yyerror pragma_error #define yylval pragma_lval #define yychar pragma_char #define yydebug pragma_debug #define yynerrs pragma_nerrs /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ #line 1 "ctlib/pragma.y" /******************************************************************************* * * MODULE: pragma.y * ******************************************************************************** * * DESCRIPTION: Pragma parser * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:20 +0200 $ * $Revision: 21 $ * $Source: /ctlib/pragma.y $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" #include "cterror.h" #include "pragma.h" #include "util/ccattr.h" #include "util/memalloc.h" #include "util/list.h" #include "ucpp/cpp.h" /*===== DEFINES ==============================================================*/ /* ADDITIONAL BISON CONFIGURATION */ #define YYPARSE_PARAM pState #define YYLEX_PARAM pState #define YYERROR_VERBOSE /* * Bison version >= 1.31 is needed for YYFPRINTF */ #if YYDEBUG && defined CTLIB_DEBUGGING #define YYFPRINTF BisonDebugFunc #endif #define pragma_error( msg ) \ CT_DEBUG( PRAGMA, ("pragma_error(): %s", msg) ) #define pragma_parse CTlib_pragma_parse /* MACROS */ #define PSTATE ((PragmaState *) pState) #define VALID_PACK( value ) \ ( (value) == 0 \ || (value) == 1 \ || (value) == 2 \ || (value) == 4 \ || (value) == 8 \ ) /*===== TYPEDEFS =============================================================*/ struct _pragmaState { CParseInfo *pCPI; const char *file; long int line; const char *code; struct { LinkedList stack; unsigned current; } pack; }; typedef struct { unsigned size; } PackElement; /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /* TOKEN MAPPING TABLE */ static const int tokentab[] = { 0, /* NONE, */ /* whitespace */ 0, /* NEWLINE, */ /* newline */ 0, /* COMMENT, */ /* comment */ 0, /* NUMBER, */ /* number constant */ 0, /* NAME, */ /* identifier */ 0, /* BUNCH, */ /* non-C characters */ 0, /* PRAGMA, */ /* a #pragma directive */ 0, /* CONTEXT, */ /* new file or #line */ 0, /* STRING, */ /* constant "xxx" */ 0, /* CHAR, */ /* constant 'xxx' */ '/', /* SLASH, */ /* / */ 0, /* ASSLASH, */ /* /= */ '-', /* MINUS, */ /* - */ 0, /* MMINUS, */ /* -- */ 0, /* ASMINUS, */ /* -= */ 0, /* ARROW, */ /* -> */ '+', /* PLUS, */ /* + */ 0, /* PPLUS, */ /* ++ */ 0, /* ASPLUS, */ /* += */ '<', /* LT, */ /* < */ 0, /* LEQ, */ /* <= */ 0, /* LSH, */ /* << */ 0, /* ASLSH, */ /* <<= */ '>', /* GT, */ /* > */ 0, /* GEQ, */ /* >= */ 0, /* RSH, */ /* >> */ 0, /* ASRSH, */ /* >>= */ '=', /* ASGN, */ /* = */ 0, /* SAME, */ /* == */ #ifdef CAST_OP 0, /* CAST, */ /* => */ #endif '~', /* NOT, */ /* ~ */ 0, /* NEQ, */ /* != */ '&', /* AND, */ /* & */ 0, /* LAND, */ /* && */ 0, /* ASAND, */ /* &= */ '|', /* OR, */ /* | */ 0, /* LOR, */ /* || */ 0, /* ASOR, */ /* |= */ '%', /* PCT, */ /* % */ 0, /* ASPCT, */ /* %= */ '*', /* STAR, */ /* * */ 0, /* ASSTAR, */ /* *= */ '^', /* CIRC, */ /* ^ */ 0, /* ASCIRC, */ /* ^= */ '!', /* LNOT, */ /* ! */ '{', /* LBRA, */ /* { */ '}', /* RBRA, */ /* } */ '[', /* LBRK, */ /* [ */ ']', /* RBRK, */ /* ] */ '(', /* LPAR, */ /* ( */ ')', /* RPAR, */ /* ) */ ',', /* COMMA, */ /* , */ '?', /* QUEST, */ /* ? */ ';', /* SEMIC, */ /* ; */ ':', /* COLON, */ /* : */ '.', /* DOT, */ /* . */ 0, /* MDOTS, */ /* ... */ 0, /* SHARP, */ /* # */ 0, /* DSHARP, */ /* ## */ 0, /* OPT_NONE, */ /* optional space to separate tokens in text output */ 0, /* DIGRAPH_TOKENS, */ /* there begin digraph tokens */ /* for DIG_*, do not change order, unless checking undig() in cpp.c */ '[', /* DIG_LBRK, */ /* <: */ ']', /* DIG_RBRK, */ /* :> */ '{', /* DIG_LBRA, */ /* <% */ '}', /* DIG_RBRA, */ /* %> */ 0, /* DIG_SHARP, */ /* %: */ 0, /* DIG_DSHARP, */ /* %:%: */ 0, /* DIGRAPH_TOKENS_END, */ /* digraph tokens end here */ 0, /* LAST_MEANINGFUL_TOKEN, */ /* reserved words will go there */ 0, /* MACROARG, */ /* special token for representing macro arguments */ 0, /* UPLUS = CPPERR, */ /* unary + */ 0, /* UMINUS */ /* unary - */ }; /* Line 189 of yacc.c */ #line 275 "ctlib/y_pragma.c" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { CONSTANT = 258, PACK_TOK = 259, PUSH_TOK = 260, POP_TOK = 261 }; #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 214 of yacc.c */ #line 197 "ctlib/pragma.y" int ival; /* Line 214 of yacc.c */ #line 323 "ctlib/y_pragma.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ #line 201 "ctlib/pragma.y" /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static int is_valid_pack_arg(PragmaState *pState, int arg); static inline int pragma_lex(YYSTYPE *plval, PragmaState *pState); static PackElement *packelem_new(unsigned size); static void packelem_delete(PackElement *pPack); /* Line 264 of yacc.c */ #line 349 "ctlib/y_pragma.c" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 9 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 10 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 4 /* YYNRULES -- Number of rules. */ #define YYNRULES 8 /* YYNRULES -- Number of states. */ #define YYNSTATES 14 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 261 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7, 8, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint8 yyprhs[] = { 0, 0, 3, 5, 7, 11, 16, 18, 22 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 11, 0, -1, 12, -1, 4, -1, 4, 7, 8, -1, 4, 7, 13, 8, -1, 3, -1, 5, 9, 3, -1, 6, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { 0, 226, 226, 230, 232, 234, 238, 245, 253 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "CONSTANT", "PACK_TOK", "PUSH_TOK", "POP_TOK", "'('", "')'", "','", "$accept", "pragma", "pragma_pack", "pragma_pack_args", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 40, 41, 44 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 10, 11, 12, 12, 12, 13, 13, 13 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 1, 3, 4, 1, 3, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 0, 3, 0, 2, 0, 1, 6, 0, 8, 4, 0, 0, 5, 7 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 2, 3, 10 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -7 static const yytype_int8 yypact[] = { 0, -6, 6, -7, -3, -7, -7, -2, -7, -7, 1, 5, -7, -7 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -7, -7, -7, -7 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint8 yytable[] = { 6, 4, 7, 8, 1, 9, 5, 11, 13, 12 }; static const yytype_uint8 yycheck[] = { 3, 7, 5, 6, 4, 8, 0, 9, 3, 8 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 4, 11, 12, 7, 0, 3, 5, 6, 8, 13, 9, 8, 3 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (&yylval, YYLEX_PARAM) #else # define YYLEX yylex (&yylval) #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /*-------------------------. | yyparse or yypush_parse. | `-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yytoken = 0; yyss = yyssa; yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 3: /* Line 1464 of yacc.c */ #line 231 "ctlib/pragma.y" { PSTATE->pack.current = 0; ;} break; case 4: /* Line 1464 of yacc.c */ #line 233 "ctlib/pragma.y" { PSTATE->pack.current = 0; ;} break; case 6: /* Line 1464 of yacc.c */ #line 239 "ctlib/pragma.y" { if (is_valid_pack_arg(PSTATE, (yyvsp[(1) - (1)].ival))) { PSTATE->pack.current = (yyvsp[(1) - (1)].ival); } ;} break; case 7: /* Line 1464 of yacc.c */ #line 246 "ctlib/pragma.y" { if (is_valid_pack_arg(PSTATE, (yyvsp[(3) - (3)].ival))) { LL_push(PSTATE->pack.stack, packelem_new(PSTATE->pack.current)); PSTATE->pack.current = (yyvsp[(3) - (3)].ival); } ;} break; case 8: /* Line 1464 of yacc.c */ #line 254 "ctlib/pragma.y" { PackElement *pPack = LL_pop(PSTATE->pack.stack); if (pPack) { PSTATE->pack.current = pPack->size; packelem_delete(pPack); } else PSTATE->pack.current = 0; ;} break; /* Line 1464 of yacc.c */ #line 1597 "ctlib/y_pragma.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 1684 of yacc.c */ #line 267 "ctlib/pragma.y" /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: is_valid_pack_arg * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static int is_valid_pack_arg(PragmaState *pState, int arg) { if (VALID_PACK(arg)) return 1; push_error(pState->pCPI, "%s, line %ld: invalid argument %d to #pragma pack", pState->file, pState->line, arg); return 0; } /******************************************************************************* * * ROUTINE: packelem_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element constructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static PackElement *packelem_new(unsigned size) { PackElement *pPack; AllocF(PackElement *, pPack, sizeof(PackElement)); pPack->size = size; return pPack; } /******************************************************************************* * * ROUTINE: packelem_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pack element destructor. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void packelem_delete(PackElement *pPack) { if (pPack) Free(pPack); } /******************************************************************************* * * ROUTINE: pragma_lex * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Pragma lexer. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static inline int pragma_lex(YYSTYPE *plval, PragmaState *pState) { int token, rval; CT_DEBUG( PRAGMA, ("pragma_lex()")); while ((token = (int) *pState->code++) != 0) { switch (token) { case NUMBER: { const char *num = pState->code; pState->code = strchr(num, PRAGMA_TOKEN_END) + 1; plval->ival = strtol(num, NULL, 0); CT_DEBUG(PRAGMA, ("pragma - constant: %d", plval->ival)); return CONSTANT; } case NAME: { const char *tokstr = pState->code; int toklen, tokval; #include "token/t_pragma.c" success: pState->code += toklen + 1; return tokval; unknown: break; } default: if ((rval = tokentab[token]) != 0) return rval; break; } } return 0; } /*===== FUNCTIONS ============================================================*/ /******************************************************************************* * * ROUTINE: pragma_parser_parse * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int pragma_parser_parse(PragmaState *pPragma) { return pragma_parse(pPragma); } /******************************************************************************* * * ROUTINE: pragma_parser_new * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ PragmaState *pragma_parser_new(CParseInfo *pCPI) { PragmaState *pState; CT_DEBUG(PRAGMA, ("pragma_parser_new")); AllocF(PragmaState *, pState, sizeof(PragmaState)); pState->pCPI = pCPI; pState->file = 0; pState->line = 0; pState->code = 0; pState->pack.stack = LL_new(); pState->pack.current = 0; return pState; } /******************************************************************************* * * ROUTINE: pragma_parser_delete * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pragma_parser_delete(PragmaState *pPragma) { if (pPragma) { CT_DEBUG(PRAGMA, ("pragma_parser_delete")); LL_destroy(pPragma->pack.stack, (LLDestroyFunc) packelem_delete); Free(pPragma); } } /******************************************************************************* * * ROUTINE: pragma_parser_set_context * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void pragma_parser_set_context(PragmaState *pPragma, const char *file, long int line, const char *code) { pPragma->file = file; pPragma->line = line; pPragma->code = code; } /******************************************************************************* * * ROUTINE: pragma_parser_get_pack * * WRITTEN BY: Marcus Holland-Moritz ON: Jun 2007 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ unsigned pragma_parser_get_pack(PragmaState *pPragma) { return pPragma->pack.current; } Convert-Binary-C-0.76/ctlib/arch.pl0000644000175000001440000001031411550664614015561 0ustar mhxusers################################################################################ # # PROGRAM: arch.pl # ################################################################################ # # DESCRIPTION: Generate header file for architecture specific definitions # ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:17 +0200 $ # $Revision: 22 $ # $Source: /ctlib/arch.pl $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Config; $file = @ARGV ? shift : 'ctlib/arch.h'; open OUT, ">$file" or die "$file: $!\n"; %cfg = %Config; # because we modify some values in %cfg %use = ( '64BIT' => 1, 'LONGLONG' => 1, 'LONGDOUBLE' => 1, ); if( $Config{osname} eq 'hpux' and $Config{cc} eq 'cc' and $Config{osvers} =~ /(\d+)\.(\d+)/ and $1 < 11 ) { # At least some versions of HP's cc compiler have a broken # preprocessor/compiler implementation of 64-bit data types. $use{'64BIT'} = 0; $use{'LONGLONG'} = 0; } for( keys %use ) { exists $ENV{"CBC_USE$_"} and $use{$_} = $ENV{"CBC_USE$_"}; } # required to support perl < 5.6.0 unless( exists $cfg{i8type} ) { $b8 = 'char'; for( qw( int short long ) ) { if( not defined $b16 and $cfg{"${_}size"} == 2 ) { $b16 = $_ } if( not defined $b32 and $cfg{"${_}size"} == 4 ) { $b32 = $_ } } defined $b16 and defined $b32 or die "cannot determine integer sizes"; $cfg{i8type} = "signed $b8"; $cfg{u8type} = "unsigned $b8"; $cfg{i16type} = "signed $b16"; $cfg{u16type} = "unsigned $b16"; $cfg{i32type} = "signed $b32"; $cfg{u32type} = "unsigned $b32"; } # # make the i_8 explicitly signed # (i8type was plain 'char' on an IPAQ system where 'char' was unsigned) if( $cfg{i8type} eq 'char' ) { $cfg{i8type} = 'signed char'; } sub is_big_endian () { my $byteorder = $cfg{byteorder} || unpack( "a*", pack "L", 0x34333231 ); die "Native byte order ($byteorder) not supported!\n" if $byteorder ne '1234' and $byteorder ne '4321' and $byteorder ne '12345678' and $byteorder ne '87654321'; $byteorder eq '4321' or $byteorder eq '87654321'; } sub config ($) { local $_ = shift; s/\${([^}]+)}/$cfg{$1}/g; print OUT; } $long_double = $use{LONGDOUBLE} && $cfg{d_longdbl} eq 'define' ? 1 : 0; print "DISABLED long double support\n" if $use{LONGDOUBLE} == 0; $long_long = $use{LONGLONG} && $cfg{d_longlong} eq 'define' ? 1 : 0; print "DISABLED long long support\n" if $use{LONGLONG} == 0; config < #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctdebug.h" /*===== DEFINES ==============================================================*/ /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ void (*g_CT_dbfunc)(const char *, ...) = NULL; unsigned long g_CT_dbflags = 0; /*===== STATIC VARIABLES =====================================================*/ static void (*gs_vprintf)(const char *, va_list *) = NULL; /*===== STATIC FUNCTIONS =====================================================*/ /*===== FUNCTIONS ============================================================*/ #ifdef CTLIB_FORMAT_CHECK void CT_dbfunc_check( const char *str __attribute(( __unused__ )), ... ) { fprintf( stderr, "compiled with CTLIB_FORMAT_CHECK, please don't run\n" ); abort(); } #endif /******************************************************************************* * * ROUTINE: SetDebugCType * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int SetDebugCType( void (*dbfunc)(const char *, ...), void (*dbvprintf)(const char *, va_list *), unsigned long dbflags ) { g_CT_dbfunc = dbfunc; gs_vprintf = dbvprintf; g_CT_dbflags = dbflags; return 1; } /******************************************************************************* * * ROUTINE: BisonDebugFunc * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ void BisonDebugFunc( void *dummy, const char *fmt, ... ) { if( dummy != NULL && gs_vprintf != NULL ) { va_list l; va_start( l, fmt ); gs_vprintf( fmt, &l ); va_end( l ); } } #endif /* CTLIB_DEBUGGING */ Convert-Binary-C-0.76/ctlib/ctdebug.h0000644000175000001440000000544611550664614016107 0ustar mhxusers/******************************************************************************* * * HEADER: ctdebug.h * ******************************************************************************** * * DESCRIPTION: Debugging support * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:18 +0200 $ * $Revision: 23 $ * $Source: /ctlib/ctdebug.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_CTDEBUG_H #define _CTLIB_CTDEBUG_H /*===== GLOBAL INCLUDES ======================================================*/ #include /*===== LOCAL INCLUDES =======================================================*/ #include "util/ccattr.h" /*===== DEFINES ==============================================================*/ #define DB_CTLIB_MAIN 0x00000001 #define DB_CTLIB_PARSER 0x00000002 #define DB_CTLIB_CLEXER 0x00000004 #define DB_CTLIB_YACC 0x00000008 #define DB_CTLIB_PRAGMA 0x00000010 #define DB_CTLIB_CTLIB 0x00000020 #define DB_CTLIB_HASH 0x00000040 #define DB_CTLIB_TYPE 0x00000080 #define DB_CTLIB_PREPROC 0x00000100 #ifdef CTLIB_DEBUGGING #define DEBUG_FLAG( flag ) \ (g_CT_dbfunc && ((DB_CTLIB_ ## flag) & g_CT_dbflags)) #ifdef CTLIB_FORMAT_CHECK # define CTLIB_DEBUG_FUNC CT_dbfunc_check #else # define CTLIB_DEBUG_FUNC g_CT_dbfunc #endif #define CT_DEBUG( flag, out ) \ do { \ if( DEBUG_FLAG( flag ) ) \ CTLIB_DEBUG_FUNC out ; \ } while(0) #else #define DEBUG_FLAG( flag ) 0 #define CT_DEBUG( flag, out ) (void) 0 #endif /*===== TYPEDEFS =============================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #ifdef CTLIB_DEBUGGING extern void (*g_CT_dbfunc)(const char *, ...); extern unsigned long g_CT_dbflags; #endif #ifdef CTLIB_DEBUGGING # ifdef CTLIB_FORMAT_CHECK void CT_dbfunc_check( const char *str, ... ) __attribute__(( __format__( __printf__, 1, 2 ), __noreturn__ )); # endif int SetDebugCType( void (*dbfunc)(const char *, ...), void (*dbvprintf)(const char *, va_list *), unsigned long dbflags ); void BisonDebugFunc( void *dummy, const char *fmt, ... ); #else # define SetDebugCType( func, flags ) 0 #endif #endif Convert-Binary-C-0.76/ctlib/bitfields.c0000644000175000001440000006062111550664614016426 0ustar mhxusers/******************************************************************************* * * MODULE: bitfields.c * ******************************************************************************** * * DESCRIPTION: Bitfield layouting routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:17 +0200 $ * $Revision: 27 $ * $Source: /ctlib/bitfields.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctdebug.h" #include "ctlib/cterror.h" #include "ctlib/bitfields.h" #include "util/ccattr.h" #include "util/memalloc.h" /*===== DEFINES ==============================================================*/ #define REG_BL_CLASS(cls) { #cls, sizeof(struct _BL_ ## cls), &cls ## _vtable } #define BL_SELF(cls) BL_ ## cls self = (BL_ ## cls) _self #define aSELF BitfieldLayouter _self __attribute__((unused)) #ifdef BITS # undef BITS #endif #define BITS(bytes) (8*(bytes)) #define BYTE_ORDER_STRING (self->byte_order == BLPV_BIG_ENDIAN ? "BE" : "LE") /*===== TYPEDEFS =============================================================*/ typedef struct _BL_Generic { BL_CLASS_FIXED; BLPropValStr byte_order; BLPropValInt max_align; BLPropValInt align; BLPropValInt offset; int bit_offset; int cur_type_size; int cur_type_align; } *BL_Generic; typedef struct _BL_Microsoft { BL_CLASS_FIXED; BLPropValStr byte_order; BLPropValInt max_align; BLPropValInt align; BLPropValInt offset; int bit_offset; int cur_type_size; int cur_type_align; } *BL_Microsoft; typedef struct _BL_Simple { BL_CLASS_FIXED; BLPropValStr byte_order; BLPropValInt max_align; BLPropValInt align; BLPropValInt offset; BLPropValInt block_size; int pos; int bits_left; } *BL_Simple; /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ static void Generic_init(aSELF); static void Generic_reset(aSELF); static enum BLError Generic_push(aSELF, const BLPushParam *pParam); static enum BLError Generic_finalize(aSELF); static enum BLError Generic_get(aSELF, BLProperty prop, BLPropValue *value); static enum BLError Generic_set(aSELF, BLProperty prop, const BLPropValue *value); static const BLOption * Generic_options(aSELF, int *count); static void Microsoft_init(aSELF); static void Microsoft_reset(aSELF); static enum BLError Microsoft_push(aSELF, const BLPushParam *pParam); static enum BLError Microsoft_finalize(aSELF); static enum BLError Microsoft_get(aSELF, BLProperty prop, BLPropValue *value); static enum BLError Microsoft_set(aSELF, BLProperty prop, const BLPropValue *value); static const BLOption * Microsoft_options(aSELF, int *count); static void Simple_init(aSELF); static void Simple_reset(aSELF); static enum BLError Simple_push(aSELF, const BLPushParam *pParam); static enum BLError Simple_finalize(aSELF); static enum BLError Simple_get(aSELF, BLProperty prop, BLPropValue *value); static enum BLError Simple_set(aSELF, BLProperty prop, const BLPropValue *value); static const BLOption * Simple_options(aSELF, int *count); static void bl_destroy(BitfieldLayouter self); static BitfieldLayouter bl_clone(BitfieldLayouter self); static const char * bl_class_name(BitfieldLayouter self); /*===== EXTERNAL VARIABLES ===================================================*/ /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ static const struct BLVtable Generic_vtable = { bl_clone, Generic_init, Generic_reset, bl_destroy, Generic_push, Generic_finalize, Generic_get, Generic_set, Generic_options, bl_class_name, }; static const struct BLVtable Microsoft_vtable = { bl_clone, Microsoft_init, Microsoft_reset, bl_destroy, Microsoft_push, Microsoft_finalize, Microsoft_get, Microsoft_set, Microsoft_options, bl_class_name, }; static const struct BLVtable Simple_vtable = { bl_clone, Simple_init, Simple_reset, bl_destroy, Simple_push, Simple_finalize, Simple_get, Simple_set, Simple_options, bl_class_name, }; static const struct BLClass { const char *name; const size_t size; const struct BLVtable *vtbl; } bl_classes[] = { REG_BL_CLASS(Generic), REG_BL_CLASS(Microsoft), REG_BL_CLASS(Simple) }; /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* ******************************************************************************** ******************************************************************************** ______ _ / ____/__ ____ ___ _____(_)____ / / __/ _ \/ __ \/ _ \/ ___/ / ___/ / /_/ / __/ / / / __/ / / / /__ \____/\___/_/ /_/\___/_/ /_/\___/ ******************************************************************************** ******************************************************************************** *******************************************************************************/ /******************************************************************************* * * ROUTINE: Generic_init * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Generic_init(aSELF) { BL_SELF(Generic); self->byte_order = BLPV_LITTLE_ENDIAN; } /******************************************************************************* * * ROUTINE: Generic_reset * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Generic_reset(aSELF) { BL_SELF(Generic); self->bit_offset = 0; self->cur_type_size = 0; self->cur_type_align = 0; } /******************************************************************************* * * ROUTINE: Generic_push * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Generic_push(aSELF, const BLPushParam *pParam) { BL_SELF(Generic); BitfieldInfo *bit; assert(pParam->pDecl != NULL); assert(pParam->pDecl->bitfield_flag); bit = &pParam->pDecl->ext.bitfield; CT_DEBUG(CTLIB, ("(Generic) pushing bitfield (%s:%d/s=%d/a=%d), offset=%d.%d, max_align=%d", pParam->pDecl->identifier, bit->bits, pParam->type_size, pParam->type_align, (int) self->offset, self->bit_offset, (int) self->max_align)); if (self->cur_type_size != (int) pParam->type_size) { int align = (int) pParam->type_align < self->max_align ? (int) pParam->type_align : self->max_align; int delta = self->offset % align; if (align > self->align) self->align = align; self->offset -= delta; self->bit_offset += BITS(delta); CT_DEBUG(CTLIB, ("(Generic) type size change: size: %d -> %d, align: %d -> %d, offset=%d.%d", self->cur_type_size, pParam->type_size, self->cur_type_align, align, (int) self->offset, self->bit_offset)); self->cur_type_size = pParam->type_size; self->cur_type_align = align; } while (bit->bits > BITS(self->cur_type_size) - self->bit_offset) { self->offset += self->cur_type_align; if (self->bit_offset > BITS(self->cur_type_align)) self->bit_offset -= BITS(self->cur_type_align); else self->bit_offset = 0; CT_DEBUG(CTLIB, ("(Generic) move offset -> %d.%d", (int) self->offset, self->bit_offset)); } if (bit->bits == 0) { if (self->bit_offset > 0) { self->offset += self->cur_type_size - (self->offset % self->cur_type_size); self->bit_offset = 0; } } else { int used_bytes, new_bit_offset; new_bit_offset = self->bit_offset + bit->bits; if (new_bit_offset <= BITS(1)) used_bytes = 1; else if (new_bit_offset <= BITS(2)) used_bytes = 2; else if (new_bit_offset <= BITS(4)) used_bytes = 4; else if (new_bit_offset <= BITS(8)) used_bytes = 8; assert(used_bytes <= self->cur_type_size); pParam->pDecl->offset = self->offset; pParam->pDecl->size = used_bytes; bit->size = used_bytes; switch (self->byte_order) { case BLPV_LITTLE_ENDIAN: bit->pos = self->bit_offset; break; case BLPV_BIG_ENDIAN: bit->pos = BITS(used_bytes) - self->bit_offset - bit->bits; break; default: fatal_error("(Generic) invalid byte-order (%d)", self->byte_order); break; } assert(bit->pos < 64); self->bit_offset = new_bit_offset; } CT_DEBUG(CTLIB, ("(Generic) new %s bitfield (%s) at (offset=%d, size=%d, pos=%d, bits=%d)", BYTE_ORDER_STRING, pParam->pDecl->identifier, pParam->pDecl->offset, bit->size, bit->pos, bit->bits)); return BLE_NO_ERROR; } /******************************************************************************* * * ROUTINE: Generic_finalize * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Generic_finalize(aSELF) { BL_SELF(Generic); CT_DEBUG(CTLIB, ("(Generic) finalizing bitfield (offset=%d.%d)", (int) self->offset, self->bit_offset)); self->offset += (self->bit_offset + (BITS(1)-1)) / BITS(1); CT_DEBUG(CTLIB, ("(Generic) final offset=%d", (int) self->offset)); return BLE_NO_ERROR; } /******************************************************************************* ******************************************************************************** ******************************************************************************** __ ____ ______ / |/ (_)_____________ _________ / __/ /_ / /|_/ / / ___/ ___/ __ \/ ___/ __ \/ /_/ __/ / / / / / /__/ / / /_/ (__ ) /_/ / __/ /_ /_/ /_/_/\___/_/ \____/____/\____/_/ \__/ ******************************************************************************** ******************************************************************************** *******************************************************************************/ /******************************************************************************* * * ROUTINE: Microsoft_init * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Microsoft_init(aSELF) { BL_SELF(Microsoft); self->byte_order = BLPV_LITTLE_ENDIAN; } /******************************************************************************* * * ROUTINE: Microsoft_reset * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Microsoft_reset(aSELF) { BL_SELF(Microsoft); self->bit_offset = 0; self->cur_type_size = 0; self->cur_type_align = 0; } /******************************************************************************* * * ROUTINE: Microsoft_push * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Microsoft_push(aSELF, const BLPushParam *pParam) { BL_SELF(Microsoft); BitfieldInfo *bit; assert(pParam->pDecl != NULL); assert(pParam->pDecl->bitfield_flag); bit = &pParam->pDecl->ext.bitfield; if (self->cur_type_size != (int) pParam->type_size) { int delta; int align = (int) pParam->type_align < self->max_align ? (int) pParam->type_align : self->max_align; if (align > self->align) self->align = align; if (self->bit_offset > 0) { self->offset += self->cur_type_size; self->bit_offset = 0; } delta = self->offset % align; if (delta) { self->offset += align - delta; self->bit_offset = 0; } self->cur_type_size = pParam->type_size; self->cur_type_align = align; } if (bit->bits == 0) { if (self->bit_offset > 0) { self->offset += self->cur_type_size; self->bit_offset = 0; } } else { if (bit->bits > BITS(self->cur_type_size) - self->bit_offset) { if (bit->bits > BITS(self->cur_type_size)) return BLE_BITFIELD_TOO_WIDE; self->offset += self->cur_type_size; self->bit_offset = 0; } switch (self->byte_order) { case BLPV_LITTLE_ENDIAN: bit->pos = self->bit_offset; break; case BLPV_BIG_ENDIAN: bit->pos = BITS(self->cur_type_size) - self->bit_offset - bit->bits; break; default: fatal_error("(Microsoft) invalid byte-order (%d)", self->byte_order); break; } assert(bit->pos < 64); self->bit_offset += bit->bits; pParam->pDecl->offset = self->offset; pParam->pDecl->size = self->cur_type_size; bit->size = self->cur_type_size; CT_DEBUG(CTLIB, ("(Microsoft) new %s bitfield (%s) at (offset=%d, size=%d, pos=%d, bits=%d), bit_offset=%d", BYTE_ORDER_STRING, pParam->pDecl->identifier, pParam->pDecl->offset, bit->size, bit->pos, bit->bits, self->bit_offset)); } return BLE_NO_ERROR; } /******************************************************************************* * * ROUTINE: Microsoft_finalize * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Microsoft_finalize(aSELF) { BL_SELF(Microsoft); if (self->bit_offset > 0) self->offset += self->cur_type_size; return BLE_NO_ERROR; } /******************************************************************************* ******************************************************************************** ******************************************************************************** _____ _ __ / ___/(_)___ ___ ____ / /__ \__ \/ / __ `__ \/ __ \/ / _ \ ___/ / / / / / / / /_/ / / __/ /____/_/_/ /_/ /_/ .___/_/\___/ /_/ ******************************************************************************** ******************************************************************************** *******************************************************************************/ /******************************************************************************* * * ROUTINE: Simple_init * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Simple_init(aSELF) { BL_SELF(Simple); self->byte_order = BLPV_LITTLE_ENDIAN; self->block_size = 4; } /******************************************************************************* * * ROUTINE: Simple_reset * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void Simple_reset(aSELF) { BL_SELF(Simple); self->offset += self->block_size - (self->offset % self->block_size); self->pos = 0; self->bits_left = BITS(self->block_size); } /******************************************************************************* * * ROUTINE: Simple_push * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Simple_push(aSELF, const BLPushParam *pParam) { BL_SELF(Simple); BitfieldInfo *bit; assert(pParam->pDecl != NULL); assert(pParam->pDecl->bitfield_flag); bit = &pParam->pDecl->ext.bitfield; if (bit->bits == 0) { self->pos += self->block_size; self->bits_left = BITS(self->block_size); } else { if (bit->bits > self->bits_left) { self->pos += self->block_size; self->bits_left = BITS(self->block_size); } pParam->pDecl->offset = self->offset + self->pos; pParam->pDecl->size = self->block_size; bit->size = (unsigned char) self->block_size; switch (self->byte_order) { case BLPV_LITTLE_ENDIAN: bit->pos = BITS(self->block_size) - self->bits_left; break; case BLPV_BIG_ENDIAN: bit->pos = self->bits_left - bit->bits; break; default: fatal_error("(Simple) invalid byte-order (%d)", self->byte_order); break; } self->bits_left -= bit->bits; CT_DEBUG(CTLIB, ("(Simple) new %s bitfield (%s) at (offset=%d, size=%d, pos=%d, bits=%d), bits_left=%d", BYTE_ORDER_STRING, pParam->pDecl->identifier, pParam->pDecl->offset, pParam->pDecl->size, bit->pos, bit->bits, self->bits_left)); } return BLE_NO_ERROR; } /******************************************************************************* * * ROUTINE: Simple_finalize * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static enum BLError Simple_finalize(aSELF) { BL_SELF(Simple); if (self->bits_left != BITS(self->block_size)) self->pos += self->block_size; self->offset += self->pos; self->align = self->block_size; return BLE_NO_ERROR; } /******************************************************************************* ******************************************************************************** ******************************************************************************** __ _ __ _____ __ __ __ __ / /_ (_) /_/ __(_)__ / /___/ / / /___ ___ ______ __ __/ /____ _____ / __ \/ / __/ /_/ / _ \/ / __ / / / __ `/ / / / __ \/ / / / __/ _ \/ ___/ / /_/ / / /_/ __/ / __/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / /_/ __/ / /_.___/_/\__/_/ /_/\___/_/\__,_/____/_/\__,_/\__, /\____/\__,_/\__/\___/_/ /_____/ /____/ ******************************************************************************** ******************************************************************************** *******************************************************************************/ /******************************************************************************* * * ROUTINE: bl_destroy * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Destroys a BitfieldLayouter. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static void bl_destroy(BitfieldLayouter self) { if (self) Free(self); } /******************************************************************************* * * ROUTINE: bl_clone * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Clones a BitfieldLayouter. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static BitfieldLayouter bl_clone(BitfieldLayouter self) { BitfieldLayouter clone; const struct BLClass *pc; assert(self != NULL); pc = self->blc; AllocF(BitfieldLayouter, clone, pc->size); memcpy(clone, self, pc->size); return clone; } /******************************************************************************* * * ROUTINE: bl_class_name * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Returns the class name of a BitfieldLayouter. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ static const char *bl_class_name(BitfieldLayouter self) { assert(self != NULL); return self->blc->name; } /******************************************************************************* * * ROUTINE: bl_create * * WRITTEN BY: Marcus Holland-Moritz ON: May 2005 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ BitfieldLayouter bl_create(const char *class_name) { BitfieldLayouter self; unsigned i; const struct BLClass *pc = NULL; assert(class_name != NULL); CT_DEBUG(CTLIB, ("trying to create new [%s] bitfield layouter", class_name)); for (i = 0; i < sizeof bl_classes / sizeof bl_classes[0]; i++) if (strcmp(class_name, bl_classes[i].name) == 0) { pc = &bl_classes[i]; break; } if (pc == NULL) { CT_DEBUG(CTLIB, ("no such bitfield layouter class [%s]", class_name)); return NULL; } AllocF(BitfieldLayouter, self, pc->size); memset(self, 0, pc->size); self->blc = pc; self->m = pc->vtbl; if (self->m->init) self->m->init(self); CT_DEBUG(CTLIB, ("created new [%s] bitfield layouter", class_name)); return self; } #include "token/t_blproperty.c" Convert-Binary-C-0.76/ctlib/bitfields.h0000644000175000001440000000656611550664614016443 0ustar mhxusers/******************************************************************************* * * HEADER: bitfields.h * ******************************************************************************** * * DESCRIPTION: Bitfield layouting routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:17 +0200 $ * $Revision: 13 $ * $Source: /ctlib/bitfields.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_BITFIELDS_H #define _CTLIB_BITFIELDS_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/cttype.h" #include "token/t_blproperty.h" /*===== DEFINES ==============================================================*/ #define BL_CLASS_FIXED \ const struct BLVtable *m; \ const struct BLClass *blc /*===== TYPEDEFS =============================================================*/ struct BLClass; enum BLError { BLE_NO_ERROR, BLE_INVALID_PROPERTY, BLE_BITFIELD_TOO_WIDE }; typedef signed long BLPropValInt; typedef struct _BLPropValue { enum BLPVType { BLPVT_INT, BLPVT_STR } type; union { BLPropValInt v_int; BLPropValStr v_str; } v; } BLPropValue; typedef struct _BLOption { BLProperty prop; enum BLPVType type; int nval; /* number of allowed values (0: all values allowed) */ const void *pval; /* pointer to list of allowed values */ } BLOption; typedef struct _BLPushParam { Struct *pStruct; Declarator *pDecl; unsigned type_size; unsigned type_align; } BLPushParam; typedef struct _BitfieldLayouter *BitfieldLayouter; struct BLVtable { BitfieldLayouter (*clone) (BitfieldLayouter); void (*init) (BitfieldLayouter); void (*reset) (BitfieldLayouter); void (*destroy) (BitfieldLayouter); enum BLError (*push) (BitfieldLayouter, const BLPushParam *); enum BLError (*finalize) (BitfieldLayouter); enum BLError (*get) (BitfieldLayouter, BLProperty, BLPropValue *); enum BLError (*set) (BitfieldLayouter, BLProperty, const BLPropValue *); const BLOption * (*options) (BitfieldLayouter, int *count); const char * (*class_name) (BitfieldLayouter); }; struct _BitfieldLayouter { BL_CLASS_FIXED; }; /*===== EXTERNAL VARIABLES ===================================================*/ /*===== FUNCTION PROTOTYPES ==================================================*/ #define bl_create CTlib_bl_create BitfieldLayouter bl_create(const char *class_name); #define bl_property CTlib_bl_property BLProperty bl_property(const char *property); #define bl_property_string CTlib_bl_property_string const char *bl_property_string(BLProperty property); #define bl_propval CTlib_bl_propval BLPropValStr bl_propval(const char *propval); #define bl_propval_string CTlib_bl_propval_string const char *bl_propval_string(BLPropValStr propval); #endif Convert-Binary-C-0.76/ctlib/layout.c0000644000175000001440000005365311550664615016006 0ustar mhxusers/******************************************************************************* * * MODULE: layout.c * ******************************************************************************** * * DESCRIPTION: Type layouting routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:19 +0200 $ * $Revision: 20 $ * $Source: /ctlib/layout.c $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ /*===== GLOBAL INCLUDES ======================================================*/ #include #include /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/ctdebug.h" #include "ctlib/cterror.h" #include "ctlib/layout.h" /*===== DEFINES ==============================================================*/ #define LAYOUT_ALIGNMENT(pLP) ((pLP)->alignment ? (pLP)->alignment \ : CTLIB_ALIGNMENT) #define LAYOUT_COMPOUND_ALIGNMENT(pLP) ((pLP)->compound_alignment \ ? (pLP)->compound_alignment \ : CTLIB_COMPOUND_ALIGNMENT) /*===== TYPEDEFS =============================================================*/ /*===== STATIC FUNCTION PROTOTYPES ===========================================*/ /*===== EXTERNAL VARIABLES ===================================================*/ unsigned native_alignment = 0; unsigned native_compound_alignment = 0; /*===== GLOBAL VARIABLES =====================================================*/ /*===== STATIC VARIABLES =====================================================*/ /*===== STATIC FUNCTIONS =====================================================*/ /******************************************************************************* * * ROUTINE: get_type_info_generic * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ ErrorGTI get_type_info_generic(const LayoutParam *pLP, const TypeSpec *pTS, const Declarator *pDecl, const char *format, ...) { u_32 flags = pTS->tflags; void *tptr = pTS->ptr; unsigned *pSize = NULL, *pItemSize = NULL, *pAlign = NULL; u_32 *pFlags = NULL; ErrorGTI err = GTI_NO_ERROR; unsigned size; va_list ap; CT_DEBUG(CTLIB, ("get_type_info_generic( pLP=%p, pTS=%p " "[flags=0x%08lX, ptr=%p], pDecl=%p, format=\"%s\" )", pLP, pTS, (unsigned long) flags, tptr, pDecl, format)); va_start(ap, format); for (; *format; format++) { switch (*format) { case 'a': pAlign = va_arg(ap, unsigned *); break; case 'f': pFlags = va_arg(ap, u_32 *); break; case 'i': pItemSize = va_arg(ap, unsigned *); break; case 's': pSize = va_arg(ap, unsigned *); break; default: fatal_error("invalid format character (%c) in get_type_info_generic()", *format); break; } } va_end(ap); if (pFlags) *pFlags = 0; if (pDecl && pDecl->pointer_flag) { CT_DEBUG(CTLIB, ("pointer flag set")); size = pLP->ptr_size ? pLP->ptr_size : CTLIB_POINTER_SIZE; if (pAlign) *pAlign = size; } else if (flags & T_TYPE) { Typedef *pTypedef = (Typedef *) tptr; CT_DEBUG(CTLIB, ("T_TYPE flag set")); assert(pTypedef != NULL); if (pFlags) { u_32 flags; err = get_type_info_generic(pLP, pTypedef->pType, pTypedef->pDecl, "saf", &size, pAlign, &flags); *pFlags |= flags; } else err = get_type_info_generic(pLP, pTypedef->pType, pTypedef->pDecl, "sa", &size, pAlign); } else if (flags & T_ENUM) { CT_DEBUG(CTLIB, ("T_ENUM flag set")); assert(pLP->enum_size > 0 || tptr != NULL); size = pLP->enum_size > 0 ? (unsigned) pLP->enum_size : ((EnumSpecifier *) tptr)->sizes[-pLP->enum_size]; if (pAlign) *pAlign = size; } else if (flags & T_COMPOUND) { Struct *pStruct = (Struct *) tptr; CT_DEBUG(CTLIB, ("T_STRUCT or T_UNION flag set")); assert(pStruct != NULL); if (pStruct->declarations == NULL) { CT_DEBUG(CTLIB, ("no struct declarations in get_type_info_generic")); size = pLP->int_size ? pLP->int_size : sizeof(int); if( pAlign ) *pAlign = size; err = GTI_NO_STRUCT_DECL; } else { if (pStruct->align == 0) layout_compound_generic(pLP, pStruct); size = pStruct->size; if (pAlign) *pAlign = pStruct->align; } if (pFlags) *pFlags |= pStruct->tflags & (T_HASBITFIELD | T_UNSAFE_VAL); } else { CT_DEBUG( CTLIB, ("only basic type flags set") ); #define LOAD_SIZE( type ) \ size = pLP->type ## _size ? pLP->type ## _size : CTLIB_ ## type ## _SIZE if (flags & T_VOID) /* XXX: do we want void ? */ size = 1; else if ((flags & (T_LONG|T_DOUBLE)) == (T_LONG|T_DOUBLE)) LOAD_SIZE(long_double); else if(flags & T_LONGLONG) LOAD_SIZE(long_long); else if(flags & T_FLOAT) LOAD_SIZE(float); else if(flags & T_DOUBLE) LOAD_SIZE(double); else if(flags & T_CHAR) LOAD_SIZE(char); else if(flags & T_SHORT) LOAD_SIZE(short); else if(flags & T_LONG) LOAD_SIZE(long); else LOAD_SIZE(int); #undef LOAD_SIZE if (pAlign) *pAlign = size; } if (pItemSize) *pItemSize = size; if (pSize) { if (pDecl && pDecl->array_flag) { if (pDecl->array_flag) { ListIterator ai; Value *pValue; CT_DEBUG(CTLIB, ("processing array [%p]", pDecl->ext.array)); LL_foreach(pValue, ai, pDecl->ext.array) { CT_DEBUG(CTLIB, ("[%ld]", pValue->iv)); size *= pValue->iv; if (pFlags && IS_UNSAFE_VAL(*pValue)) *pFlags |= T_UNSAFE_VAL; } } else if (pDecl->bitfield_flag) { size = 0; } } *pSize = size; } CT_DEBUG(CTLIB, ("get_type_info_generic( size(%p)=%d, align(%p)=%d, " "item(%p)=%d, flags(%p)=0x%08lX ) finished", pSize, pSize ? *pSize : 0, pAlign, pAlign ? *pAlign : 0, pItemSize, pItemSize ? *pItemSize : 0, pFlags, (unsigned long) (pFlags ? *pFlags : 0))); return err; } /******************************************************************************* * * ROUTINE: layout_compound_generic * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define BL_SET_BYTE_ORDER(byte_order) \ do { \ BLPropValue pv; \ enum BLError error; \ switch (byte_order) \ { \ case CBO_BIG_ENDIAN: pv.v.v_str = BLPV_BIG_ENDIAN; break; \ case CBO_LITTLE_ENDIAN: pv.v.v_str = BLPV_LITTLE_ENDIAN; break; \ default: \ fatal_error("invalid byte-order in BL_SET_BYTEORDER()"); \ break; \ } \ pv.type = BLPVT_STR; \ error = bl->m->set(bl, BLP_BYTE_ORDER, &pv); \ if (error != BLE_NO_ERROR) \ fatal_error(blproperror, 's', BLP_BYTE_ORDER, error); \ } while (0) #define BL_SET(prop, val) \ do { \ BLPropValue pv; \ enum BLError error; \ pv.type = BLPVT_INT; \ pv.v.v_int = val; \ error = bl->m->set(bl, BLP_ ## prop, &pv); \ if (error != BLE_NO_ERROR) \ fatal_error(blproperror, 's', BLP_ ## prop, error); \ } while (0) #define BL_GET(prop, val) \ do { \ BLPropValue pv; \ enum BLError error; \ error = bl->m->get(bl, BLP_ ## prop, &pv); \ if (error != BLE_NO_ERROR) \ fatal_error(blproperror, 'g', BLP_ ## prop, error); \ assert(pv.type == BLPVT_INT); \ val = pv.v.v_int; \ } while (0) #define FINISH_BITFIELD \ do { \ bl->m->finalize(bl); \ BL_GET(OFFSET, pStruct->size ); \ BL_GET(ALIGN, pStruct->align); \ } while (0) void layout_compound_generic(const LayoutParam *pLP, Struct *pStruct) { ListIterator sdi; static const char *blproperror = "couldn't %cet bitfield layouter property (%d) => error %d"; StructDeclaration *pStructDecl; Declarator *pDecl; unsigned size, item_size, align, alignment; u_32 flags; int in_bitfield = 0; BitfieldLayouter bl = pLP->bflayouter; CT_DEBUG(CTLIB, ("layout_compound_generic( %s ), got %d struct declaration(s)", pStruct->identifier[0] ? pStruct->identifier : "", LL_count(pStruct->declarations))); if (pStruct->declarations == NULL) { CT_DEBUG(CTLIB, ("no struct declarations in layout_compound_generic")); return; } alignment = pStruct->pack ? pStruct->pack : LAYOUT_ALIGNMENT(pLP); pStruct->align = alignment < LAYOUT_COMPOUND_ALIGNMENT(pLP) ? alignment : LAYOUT_COMPOUND_ALIGNMENT(pLP); BL_SET(MAX_ALIGN, alignment); BL_SET_BYTE_ORDER(pLP->byte_order); LL_foreach(pStructDecl, sdi, pStruct->declarations) { CT_DEBUG(CTLIB, ("%d declarators in struct declaration, tflags=0x%08lX ptr=%p", LL_count(pStructDecl->declarators), (unsigned long) pStructDecl->type.tflags, pStructDecl->type.ptr)); pStructDecl->offset = pStruct->tflags & T_STRUCT ? -1 : 0; pStructDecl->size = 0; if (pStructDecl->declarators) { ListIterator di; LL_foreach(pDecl, di, pStructDecl->declarators) { CT_DEBUG(CTLIB, ("current declarator [%s]", pDecl->identifier[0] ? pDecl->identifier : "")); get_type_info_generic(pLP, &pStructDecl->type, pDecl, "saif", &size, &align, &item_size, &flags); CT_DEBUG(CTLIB, ("declarator size=%u, item=%u, align=%u, flags=0x%08lX", size, item_size, align, (unsigned long) flags)); if ((flags & T_HASBITFIELD) || pDecl->bitfield_flag) { CT_DEBUG(CTLIB, ("found bitfield '%s' in '%s %s'", pDecl->identifier[0] ? pDecl->identifier : "", pStruct->tflags & T_STRUCT ? "struct" : "union", pStruct->identifier[0] ? pStruct->identifier : "")); pStruct->tflags |= T_HASBITFIELD; } if (flags & T_UNSAFE_VAL) { CT_DEBUG(CTLIB, ("unsafe values in '%s %s'", pStruct->tflags & T_STRUCT ? "struct" : "union", pStruct->identifier[0] ? pStruct->identifier : "")); pStruct->tflags |= T_UNSAFE_VAL; } if (pDecl->bitfield_flag) { BLPushParam pp; enum BLError error; if (!in_bitfield) { bl->m->reset(bl); BL_SET(ALIGN, pStruct->align); if (pStruct->tflags & T_STRUCT) { BL_SET(OFFSET, pStruct->size); in_bitfield = 1; } else /* T_UNION */ { BL_SET(OFFSET, 0); /* don't set in_bitfield = 1 */ } } pp.pStruct = pStruct; pp.pDecl = pDecl; pp.type_size = item_size; pp.type_align = align; error = bl->m->push(bl, &pp); if (error != BLE_NO_ERROR) fatal_error("couldn't push bitfield => error %d", error); if (pStruct->tflags & T_UNION) FINISH_BITFIELD; } else { if (in_bitfield) { FINISH_BITFIELD; in_bitfield = 0; } pDecl->size = size; pDecl->item_size = item_size; if (align > alignment) align = alignment; if (align > pStruct->align) pStruct->align = align; if (pStruct->tflags & T_STRUCT) { unsigned mod = pStruct->size % align; if (mod) pStruct->size += align - mod; if (pStructDecl->offset < 0) pStructDecl->offset = pStruct->size; pDecl->offset = pStruct->size; pStruct->size += size; } else /* T_UNION */ { pDecl->offset = 0; if (size > pStruct->size) pStruct->size = size; } } } } else /* unnamed struct/union */ { if (in_bitfield) { FINISH_BITFIELD; in_bitfield = 0; } CT_DEBUG(CTLIB, ("current declaration is an unnamed struct/union")); get_type_info_generic(pLP, &pStructDecl->type, NULL, "saf", &size, &align, &flags); CT_DEBUG(CTLIB, ("unnamed struct/union: size=%d, align=%d, flags=0x%08lX", size, align, (unsigned long) flags)); if (flags & T_HASBITFIELD) { CT_DEBUG(CTLIB, ("found bitfield in unnamed struct/union")); pStruct->tflags |= T_HASBITFIELD; } if (flags & T_UNSAFE_VAL) { CT_DEBUG(CTLIB, ("unsafe values in unnamed struct/union")); pStruct->tflags |= T_UNSAFE_VAL; } if (align > alignment) align = alignment; if (align > pStruct->align) pStruct->align = align; if (pStruct->tflags & T_STRUCT) { unsigned mod = pStruct->size % align; if (mod) pStruct->size += align - mod; if (pStructDecl->offset < 0) pStructDecl->offset = pStruct->size; pStruct->size += size; } else /* T_UNION */ { if (size > pStruct->size) pStruct->size = size; } } if (pStructDecl->offset < 0) pStructDecl->offset = pStruct->size; pStructDecl->size = pStruct->size - pStructDecl->offset; } if (in_bitfield) FINISH_BITFIELD; if (pStruct->size % pStruct->align) pStruct->size += pStruct->align - pStruct->size % pStruct->align; CT_DEBUG(CTLIB, ("layout_compound_generic( %s ): size=%d, align=%d", pStruct->identifier[0] ? pStruct->identifier : "", pStruct->size, pStruct->align)); } /******************************************************************************* * * ROUTINE: get_native_alignment * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine the native struct member alignment and store it to * the global native_alignment. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ #define CHECK_NATIVE_ALIGNMENT(type) \ do { \ struct _align { char a; type b; }; \ unsigned off = offsetof(struct _align, b); \ if (off > align) \ align = off; \ } while (0) unsigned get_native_alignment(void) { unsigned align = 0; CHECK_NATIVE_ALIGNMENT(int); CHECK_NATIVE_ALIGNMENT(int *); CHECK_NATIVE_ALIGNMENT(long); CHECK_NATIVE_ALIGNMENT(float); CHECK_NATIVE_ALIGNMENT(double); #if ARCH_HAVE_LONG_LONG CHECK_NATIVE_ALIGNMENT(long long); #endif #if ARCH_HAVE_LONG_DOUBLE CHECK_NATIVE_ALIGNMENT(long double); #endif native_alignment = align; return align; } #undef CHECK_NATIVE_ALIGNMENT /******************************************************************************* * * ROUTINE: get_native_compound_alignment * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine the native compound alignment and store it to the * global native_compound_alignment. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ unsigned get_native_compound_alignment(void) { struct _align { char a; struct { char x; } b; }; unsigned align = offsetof(struct _align, b); native_compound_alignment = align; return align; } /******************************************************************************* * * ROUTINE: get_native_enum_size * * WRITTEN BY: Marcus Holland-Moritz ON: Aug 2004 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine the native enum size. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_native_enum_size(void) { enum pbyte { PB1 = 0, PB2 = 255 }; enum nbyte { NB1 = -128, NB2 = 127 }; enum pword { PW1 = 0, PW2 = 65535 }; enum nword { NW1 = -32768, NW2 = 32767 }; enum plong { PL1 = 0, PL2 = 65536 }; enum nlong { NL1 = -32768, NL2 = 32768 }; if (sizeof(enum pbyte) == 2 && sizeof(enum nbyte) == 1 && sizeof(enum pword) == 4 && sizeof(enum nword) == 2 && sizeof(enum plong) == 4 && sizeof(enum nlong) == 4) return -1; if (sizeof(enum pbyte) == 1 && sizeof(enum nbyte) == 1 && sizeof(enum pword) == 2 && sizeof(enum nword) == 2 && sizeof(enum plong) == 4 && sizeof(enum nlong) == 4) return 0; if (sizeof(enum pbyte) == sizeof(enum nbyte) && sizeof(enum pbyte) == sizeof(enum pword) && sizeof(enum pbyte) == sizeof(enum nword) && sizeof(enum pbyte) == sizeof(enum plong) && sizeof(enum pbyte) == sizeof(enum nlong)) return sizeof(enum pbyte); fatal_error("Unsupported native enum size (%d:%d:%d:%d:%d:%d)", sizeof(enum pbyte), sizeof(enum nbyte), sizeof(enum pword), sizeof(enum nword), sizeof(enum plong), sizeof(enum nlong)); return -1000; } /******************************************************************************* * * ROUTINE: get_native_unsigned_chars * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine if native chars are unsigned. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_native_unsigned_chars(void) { char c = -1; int i = (int) c; if (i == -1) return 0; if (i > 0) return 1; fatal_error("Strange result of cast from char to int (%d)", i); return -1000; } /******************************************************************************* * * ROUTINE: get_native_unsigned_bitfields * * WRITTEN BY: Marcus Holland-Moritz ON: Jan 2006 * CHANGED BY: ON: * ******************************************************************************** * * DESCRIPTION: Determine if native bitfields are unsigned. * * ARGUMENTS: * * RETURNS: * *******************************************************************************/ int get_native_unsigned_bitfields(void) { struct { int a:3; } x = { -1 }; int i = (int) x.a; if (i == -1) return 0; if (i > 0) return 1; fatal_error("Strange result of cast from bitfield to int (%d)", i); return -1000; } Convert-Binary-C-0.76/ctlib/layout.h0000644000175000001440000000762311550664615016007 0ustar mhxusers/******************************************************************************* * * HEADER: layout.h * ******************************************************************************** * * DESCRIPTION: Type layouting routines * ******************************************************************************** * * $Project: /Convert-Binary-C $ * $Author: mhx $ * $Date: 2011/04/10 12:32:19 +0200 $ * $Revision: 11 $ * $Source: /ctlib/layout.h $ * ******************************************************************************** * * Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. * This program is free software; you can redistribute it and/or modify * it under the same terms as Perl itself. * *******************************************************************************/ #ifndef _CTLIB_LAYOUT_H #define _CTLIB_LAYOUT_H /*===== GLOBAL INCLUDES ======================================================*/ /*===== LOCAL INCLUDES =======================================================*/ #include "ctlib/arch.h" #include "ctlib/cttype.h" #include "ctlib/bitfields.h" #include "ctlib/byteorder.h" /*===== DEFINES ==============================================================*/ #if ARCH_HAVE_LONG_LONG #define CTLIB_long_long_SIZE sizeof(long long) #else #define CTLIB_long_long_SIZE 8 #endif #if ARCH_HAVE_LONG_DOUBLE #define CTLIB_long_double_SIZE sizeof(long double) #else #define CTLIB_long_double_SIZE 12 #endif #define CTLIB_double_SIZE sizeof(double) #define CTLIB_float_SIZE sizeof(float) #define CTLIB_char_SIZE sizeof(char) #define CTLIB_short_SIZE sizeof(short) #define CTLIB_long_SIZE sizeof(long) #define CTLIB_int_SIZE sizeof(int) #define CTLIB_POINTER_SIZE sizeof(void *) #define CTLIB_ALIGNMENT (native_alignment ? native_alignment \ : get_native_alignment()) #define CTLIB_COMPOUND_ALIGNMENT (native_compound_alignment \ ? native_compound_alignment \ : get_native_compound_alignment()) /*===== TYPEDEFS =============================================================*/ typedef enum { GTI_NO_ERROR = 0, GTI_NO_STRUCT_DECL } ErrorGTI; typedef struct { unsigned alignment; unsigned compound_alignment; unsigned char_size; unsigned int_size; unsigned short_size; unsigned long_size; unsigned long_long_size; int enum_size; unsigned ptr_size; unsigned float_size; unsigned double_size; unsigned long_double_size; CByteOrder byte_order; BitfieldLayouter bflayouter; } LayoutParam; /*===== EXTERNAL VARIABLES ===================================================*/ #define native_alignment CTlib_native_alignment extern unsigned native_alignment; #define native_compound_alignment CTlib_native_compound_alignment extern unsigned native_compound_alignment; /*===== FUNCTION PROTOTYPES ==================================================*/ #define get_type_info_generic CTlib_get_type_info_generic ErrorGTI get_type_info_generic(const LayoutParam *pLP, const TypeSpec *pTS, const Declarator *pDecl, const char *format, ...); #define layout_compound_generic CTlib_layout_compound_generic void layout_compound_generic(const LayoutParam *pLP, Struct *pStruct); #define get_native_alignment CTlib_get_native_alignment unsigned get_native_alignment(void); #define get_native_compound_alignment CTlib_get_native_compound_alignment unsigned get_native_compound_alignment(void); #define get_native_enum_size CTlib_get_native_enum_size int get_native_enum_size(void); #define get_native_unsigned_chars CTlib_get_native_unsigned_chars int get_native_unsigned_chars(void); #define get_native_unsigned_bitfields CTlib_get_native_unsigned_bitfields int get_native_unsigned_bitfields(void); #endif Convert-Binary-C-0.76/tests/0000755000175000001440000000000011550665107014353 5ustar mhxusersConvert-Binary-C-0.76/tests/210_depend.t0000644000175000001440000000523611550664620016366 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:22 +0200 $ # $Revision: 18 $ # $Source: /tests/210_depend.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 483 } my $CCCFG = require 'tests/include/config.pl'; eval { $c1 = new Convert::Binary::C Include => ['tests/include/files']; $c2 = new Convert::Binary::C Include => ['tests/include/files']; }; ok($@,'',"failed to create Convert::Binary::C objects"); eval { $c1->parse_file( 'tests/include/files/files.h' ); $c2->parse( < #include #include #include CODE }; ok($@,'',"failed to parse C-code"); eval { $dep1 = $c1->dependencies; $dep2 = $c2->dependencies; @files1a = $c1->dependencies; @files2a = $c2->dependencies; }; ok($@,'',"failed to retrieve dependencies"); @files1s = keys %$dep1; @files2s = keys %$dep2; @incs = qw( tests/include/files/empty.h tests/include/files/ifdef.h tests/include/files/ifnull.h tests/include/files/something.h ); @ref1 = ( 'tests/include/files/files.h', @incs ); @ref2 = @incs; s/\\/\//g for @files1a, @files2a, @files1s, @files2s; print "# \@files1a => @files1a\n"; ok( join(',', sort @ref1), join(',', sort @files1a), "dependency names differ" ); print "# \@files1s => @files1s\n"; ok( join(',', sort @ref1), join(',', sort @files1s), "dependency names differ" ); print "# \@files2a => @files2a\n"; ok( join(',', sort @ref2), join(',', sort @files2a), "dependency names differ" ); print "# \@files2s => @files2s\n"; ok( join(',', sort @ref2), join(',', sort @files2s), "dependency names differ" ); eval { $c2 = new Convert::Binary::C %$CCCFG; $c2->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to create object / parse file"); eval { $dep2 = $c2->dependencies; }; ok($@,'',"failed to retrieve dependencies"); # check that the size, mtime and ctime entries are correct for my $dep ( $dep1, $dep2 ) { for my $file ( keys %$dep ) { my($size, $mtime, $ctime) = (stat($file))[7,9,10]; ok( $size, $dep->{$file}{size}, "size mismatch for '$file'" ); ok( $mtime, $dep->{$file}{mtime}, "mtime mismatch for '$file'" ); ok( $ctime, $dep->{$file}{ctime}, "ctime mismatch for '$file'" ); } } Convert-Binary-C-0.76/tests/213_string.t0000644000175000001440000001101411550664620016427 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:23 +0200 $ # $Revision: 16 $ # $Source: /tests/213_string.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 91 } eval { $C{B} = new Convert::Binary::C LongSize => 4, LongLongSize => 8, ByteOrder => 'BigEndian'; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $C{B}->parse( <<'ENDC' ); typedef signed long long int i_64; typedef unsigned long long int u_64; typedef signed long int i_32; typedef unsigned long int u_32; ENDC }; ok($@,'',"failed to parse code"); eval { $C{L} = $C{B}->clone->ByteOrder( 'LittleEndian' ); }; ok($@,'',"failed to clone LittleEndian object"); @bytes = ( 0xAB, 0x54, 0xA9, 0x8C, 0xEB, 0x1F, 0x0A, 0xD2 ); $str{B} = pack 'C*', @bytes; $str{L} = pack 'C*', reverse @bytes; %order = ( B => 'BigEndian', L => 'LittleEndian', ); @tests = ( { type => 'u_64', B => "12345678901234567890", L => "12345678901234567890", }, { type => 'i_64', B => "-6101065172474983726", L => "-6101065172474983726", }, { type => 'u_32', B => "2874452364", L => "3944680146", }, { type => 'i_32', B => "-1420514932", L => "-350287150", }, ); for my $test ( @tests ) { for my $bo ( qw( B L ) ) { print "# unpack $order{$bo} $test->{type}\n"; eval { $val = $C{$bo}->unpack( $test->{type}, $str{$bo} ) }; ok($@,'',"unpack failed"); ok($val, $test->{$bo}, "wrong value"); } } @tests = ( { type => 'u_64', B => " + 12345678901234567890", L => "12345678901234567890", }, { type => 'i_64', B => " -6101065172474983726", L => "- 6101065172474983726", }, { type => 'u_32', B => " + 2874452364", L => "3944680146", }, { type => 'i_32', B => "- 1420514932", L => " - 350287150", }, ); for my $test ( @tests ) { for my $bo ( qw( B L ) ) { print "# pack $order{$bo} $test->{type}\n"; eval { $val = $C{$bo}->pack( $test->{type}, $test->{$bo} ) }; ok($@,'',"pack failed for $order{$bo} $test->{type} test"); ok(length($val), $C{$bo}->sizeof($test->{type}), "wrong string size" ); ok($val, substr($str{$bo}, 0, length($val)), "wrong string"); } } @tests = ( { name => 'dec', type => 'u_64', str => pack("C*", 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0x0E), B => " 81985529216486670", L => "1066697293388129025", }, { name => 'hex', type => 'u_64', str => pack("C*", 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0x0E), B => "0x0123456789aBCd0E", L => " 0x0ECdaB8967452301", }, { name => 'oct', type => 'u_64', str => pack("C*", 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0x0E), B => "04432126361152746416", L => " 073155270454721221401", }, { name => 'bin', type => 'u_64', str => pack("C*", 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0x0E), B => " 0b100100011010001010110011110001001101010111100110100001110 ", L => "0b111011001101101010111000100101100111010001010010001100000001 ", }, { name => 'dec', type => 'u_32', str => pack("C*", 0x00, 0xaf, 0xfe, 0x00), B => " 11533824 ", L => " 16690944", }, { name => 'hex', type => 'u_32', str => pack("C*", 0x00, 0xaf, 0xfe, 0x00), B => " 0x00AffE00", L => "0x00FeaF00 ", }, { name => 'oct', type => 'u_32', str => pack("C*", 0x00, 0xaf, 0xfe, 0x00), B => " 053777000", L => " 077527400 ", }, { name => 'bin', type => 'u_32', str => pack("C*", 0x00, 0xaf, 0xfe, 0x00), B => " 0b101011111111111000000000", L => " 0b111111101010111100000000", }, ); for my $test ( @tests ) { for my $bo ( qw( B L ) ) { print "# pack $test->{name} $order{$bo} $test->{type}\n"; eval { $val = $C{$bo}->pack( $test->{type}, $test->{$bo} ) }; ok($@,'',"pack failed for $order{$bo} $test->{type} test"); ok(length($val), $C{$bo}->sizeof($test->{type}), "wrong string size" ); ok($val, substr($test->{str}, 0, length($val)), "wrong string"); } } Convert-Binary-C-0.76/tests/225_magic.t0000644000175000001440000000651211550664621016214 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:24 +0200 $ # $Revision: 11 $ # $Source: /tests/225_magic.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 8 } tie @a1, 'Tie::Array::CBCTest'; tie @a2, 'Tie::Array::CBCTest'; tie @a3, 'Tie::Array::CBCTest'; tie @a4, 'Tie::Array::CBCTest'; tie %h1, 'Tie::Hash::CBCTest'; tie %h2, 'Tie::Hash::CBCTest'; tie @a, 'Tie::Array::CBCTest'; tie %h, 'Tie::Hash::CBCTest'; @a1 = ( 1 .. 4 ); @a2 = ( 4, 5 ); @a3 = ( 7, 8 ); %h1 = ( i => 3, c => \@a2 ); %h2 = ( i => 6, c => \@a3 ); @a4 = ( \%h1, \%h2 ); %h = ( foo => 1, bar => 2, baz => \@a1, xxx => \@a4 ); $ref = { foo => 2, bar => 3, baz => [2 .. 5], xxx => [ { i => 4, c => [5, 6] }, { i => 7, c => [8, 9] } ] }; $c = Convert::Binary::C->new->parse( <pack('tie', \%h); $p2 = $c->pack('tie', $ref); ok( $p1, $p2 ); $p1 = $c->pack('tie.baz', $h{baz}); $p2 = $c->pack('tie.baz', $ref->{baz}); ok( $p1, $p2 ); $p1 = $c->pack('tie.xxx[0]', $h{xxx}[0]); $p2 = $c->pack('tie.xxx[0]', $ref->{xxx}[0]); ok( $p1, $p2 ); $i1 = $c->initializer('tie', \%h); $i2 = $c->initializer('tie', $ref); ok( $i1, $i2 ); $i1 = $c->initializer('tie.baz', $h{baz}); $i2 = $c->initializer('tie.baz', $ref->{baz}); ok( $i1, $i2 ); $i1 = $c->initializer('tie.xxx[0]', $h{xxx}[0]); $i2 = $c->initializer('tie.xxx[0]', $ref->{xxx}[0]); ok( $i1, $i2 ); @a = ('FOO=42'); $c->configure( Define => \@a ); $c->parse( 'typedef char zaphod[FOO];' ); ok( $c->sizeof('zaphod'), 42 ); @a = sort qw( const inline restrict ); $c->configure( DisabledKeywords => \@a ); $b = $c->configure( 'DisabledKeywords' ); ok( "@a", "@$b" ); package Tie::Hash::CBCTest; sub TIEHASH { bless {}, $_[0] } sub STORE { $_[0]->{$_[1]} = $_[2] } sub FETCH { my $x = $_[0]->{$_[1]}; ref $x || $x =~ /\D/ ? $x : $x+1 } sub FIRSTKEY { my $a = scalar keys %{$_[0]}; each %{$_[0]} } sub NEXTKEY { each %{$_[0]} } sub EXISTS { exists $_[0]->{$_[1]} } sub DELETE { delete $_[0]->{$_[1]} } sub CLEAR { %{$_[0]} = () } package Tie::Array::CBCTest; sub TIEARRAY { bless [], $_[0] } sub EXTEND { } sub FETCHSIZE { scalar @{$_[0]} } sub STORESIZE { $#{$_[0]} = $_[1]-1 } sub STORE { $_[0]->[$_[1]] = $_[2] } sub FETCH { my $x = $_[0]->[$_[1]]; ref $x || $x =~ /\D/ ? $x : $x+1 } sub CLEAR { @{$_[0]} = () } sub POP { pop(@{$_[0]}) } sub PUSH { my $o = shift; push(@$o,@_) } sub SHIFT { shift(@{$_[0]}) } sub UNSHIFT { my $o = shift; unshift(@$o,@_) } # sub EXISTS { defined $_[0]->[$_[1]] } # exists doesn't work for < 5.6.0 # sub DELETE { undef $_[0]->[$_[1]] } # delete doesn't work for < 5.6.0 sub SPLICE { my $ob = shift; my $sz = $ob->FETCHSIZE; my $off = @_ ? shift : 0; $off += $sz if $off < 0; my $len = @_ ? shift : $sz-$off; return splice(@$ob,$off,$len,@_); } Convert-Binary-C-0.76/tests/cache/0000755000175000001440000000000011550665107015416 5ustar mhxusersConvert-Binary-C-0.76/tests/cache/sub/0000755000175000001440000000000011550665107016207 5ustar mhxusersConvert-Binary-C-0.76/tests/cache/sub/dir.10000644000175000001440000000011211550664622017042 0ustar mhxusers#ifndef SUB_DIR_H #define SUB_DIR_H union _union { int dir; }; #endif Convert-Binary-C-0.76/tests/cache/sub/dir.20000644000175000001440000000011211550664622017043 0ustar mhxusers#ifndef SUB_DIR_H #define SUB_DIR_H union _union { int sub; }; #endif Convert-Binary-C-0.76/tests/cache/header.10000644000175000001440000000007711550664622016735 0ustar mhxusers#ifndef HEADER_H #define HEADER_H typedef char _char; #endif Convert-Binary-C-0.76/tests/cache/header.20000644000175000001440000000011511550664622016727 0ustar mhxusers#ifndef HEADER_H #define HEADER_H struct _struct { int member; }; #endif Convert-Binary-C-0.76/tests/cache/cache.10000644000175000001440000000014511550664622016544 0ustar mhxusers#ifndef CACHE_H #define CACHE_H #include "header.h" #include "sub/dir.h" typedef int _int; #endif Convert-Binary-C-0.76/tests/cache/cache.20000644000175000001440000000012411550664622016542 0ustar mhxusers#ifndef CACHE_H #define CACHE_H #include "header.h" enum _enum { XXX }; #endif Convert-Binary-C-0.76/tests/234_format.t0000644000175000001440000001364011550664621016424 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:26 +0200 $ # $Revision: 11 $ # $Source: /tests/234_format.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 148 } # TODO: different alignments my $c = new Convert::Binary::C ByteOrder => 'LittleEndian', IntSize => 4, CharSize => 1, EnumSize => 4; eval { $c->parse(<tag($_, Format => 'String') }; ok($@, ''); } for (qw( xxx flexbin )) { eval { $c->tag($_, Format => 'Binary') }; ok($@, ''); } ok($c->unpack('string', "Hello\0Worl"), "Hello"); ok($c->unpack('test.type', "Foo\0Bar!!!"), "Foo"); $data = "Hello World\0Flex Array"; ok($c->unpack('test.flex', $data), "Hell"); ok($c->unpack('flexbin', $data), $data); eval { $c->tag('flexbin', Format => 'Binary'); $c->tag('u_8', Format => 'String'); }; ok($@,''); ok($c->pack('flexbin', undef), ''); ok($c->pack('u_8', undef), "\x00"); ok($c->pack('xxx', undef), "\x00"x12); eval { $c->tag('u_8', Format => undef) }; ok($@,''); eval { $c->tag('flexbin', Format => 'String') }; ok($@,''); ok($c->unpack('flexbin', $data), "Hello World"); ok($c->pack('flexbin', undef), ''); eval { $c->tag('test.flex', Format => undef) }; ok($@,''); eval { $c->tag('test.flex.y', Format => 'String') }; ok($@,''); $data = "XXXXHello World\0Flex Array"; $rv = $c->unpack('test.flex', $data); ok($rv->{x} != 0); ok($rv->{y}, "Hello World"); eval { $c->tag('test.flex.y', Format => 'Binary') }; ok($@,''); $rv = $c->unpack('test.flex', $data); ok($rv->{x} != 0); ok($rv->{y}, "Hello World\0Flex Arr"); $data = 'X' x $c->sizeof('test'); substr($data, $c->offsetof('test', 'type'), 8) = "String!\0"; substr($data, $c->offsetof('test', 'yyy'), 12) = "Hello,\0World"; $rv = $c->unpack('test', $data); ok($rv->{type}, "String!"); ok($rv->{yyy}, "Hello,\0World"); eval { $c->tag('array', Format => 'String') }; ok($@, ''); $rv = $c->unpack('array', "Hello"); ok($rv, "Hell"); eval { $c->tag('array', Format => 'Binary') }; ok($@, ''); $rv = $c->unpack('array', "Hello\0W"); ok($rv, "Hell"); $c->Alignment(4); eval { $c->tag('xxx', Format => 'String') }; ok($@, ''); $string = "The big brown fox jumps over the lazy dog.\0Just another Perl hacker,\n"; $data = pack("Vc10C13xVVVV", 123456789, 65 .. 74, 200 .. 212, 111111111, 222222222, 333333333, 444444444) . $string; $rv = $c->unpack('test', $data); ok($rv->{version}, 123456789); ok($rv->{type}, join '', map chr, 65 .. 74); ok(join(':', @{$rv->{data}}), join(':', 200 .. 212)); ok($rv->{binary}{a}, 111111111); ok($rv->{binary}{b}, 222222222); ok($rv->{binary}{c}, 333333333); ok($rv->{flex}{x}, 444444444); ok($rv->{flex}{y}, "The big brown fox jumps over the lazy dog.\0Just another Perl hacker,"); ok($rv->{pad_it}, ord 'T'); ok($rv->{yyy}, 'big brown fo'); eval { $c->tag('test.flex.y', Format => 'String') }; ok($@, ''); $old_rv = $rv = $c->unpack('test', $data); ok($rv->{version}, 123456789); ok($rv->{type}, join '', map chr, 65 .. 74); ok(join(':', @{$rv->{data}}), join(':', 200 .. 212)); ok($rv->{binary}{a}, 111111111); ok($rv->{binary}{b}, 222222222); ok($rv->{binary}{c}, 333333333); ok($rv->{flex}{x}, 444444444); ok($rv->{flex}{y}, 'The big brown fox jumps over the lazy dog.'); ok($rv->{pad_it}, ord 'T'); ok($rv->{yyy}, 'big brown fo'); eval { $c->tag('test.flex', Format => 'Binary') }; ok($@, ''); $rv = $c->unpack('test', $data); ok($rv->{flex}, pack 'V', 444444444); eval { $c->tag('test.flex', Format => undef) }; ok($@, ''); $rv = $c->pack('test', $old_rv); $data =~ s/\x00[^\x00]+$/\x00\x00/; ok($rv, $data); eval { $c->tag('weekday', Format => 'Binary', Hooks => { pack => sub { push @p, @_; pack 'V', $_[0] }, unpack => sub { push @u, @_; $_[0] ? unpack 'V', $_[0] : undef } }); }; ok($@, ''); $rv = $c->pack('weekday', 2); ok($rv, pack('V', 2)); ok(scalar @p, 1); ok($p[0], 2); $rv = $c->unpack('weekday', pack('V', 3)); ok($rv, 3); ok(scalar @u, 1); ok($u[0], pack('V', 3)); @p = (); @u = (); { my @w; local $SIG{__WARN__} = sub { push @w, @_ }; $rv = $c->unpack('weekday', 'x'); ok(scalar @w, 1); ok($w[0], qr/Data too short/); ok(not defined $rv); ok(scalar @u, 1); ok($u[0], ''); @w = (); $rv = $c->unpack('array', 'x'); ok(scalar @w, 0); ok($rv, ''); } eval { $c->tag('multi', Format => 'Binary') }; ok($@, ''); for (0 .. 23) { $rv = $c->unpack('multi', 'x'x$_); ok($rv, ''); } for (24 .. 47) { $rv = $c->unpack('multi', 'x'x$_); ok($rv, 'x'x24); } $rv = $c->unpack('multi', 'abcd'x12); ok($rv, 'abcd'x12); $rv = $c->pack('multi', ''); ok($rv, ''); for (1 .. 24) { $rv = $c->pack('multi', 'x'x$_); ok($rv, ('x'x$_).("\x00"x(24-$_))); } eval { $c->tag('multi', Format => 'String') }; ok($@, ''); $rv = $c->pack('multi', ''); ok($rv, "\x00"x24); # ----------------- # bitfields cannot be tagged eval { $c->tag('bits.y', Format => 'Binary'); }; ok($@, qr/Cannot use 'Format' tag on bitfields/); Convert-Binary-C-0.76/tests/226_indexed.t0000644000175000001440000000470011550664621016552 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:24 +0200 $ # $Revision: 14 $ # $Source: /tests/226_indexed.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 45 } my $reason = do { my @w; local $SIG{__WARN__} = sub { push @w, @_ }; my $c = new Convert::Binary::C OrderMembers => 1; (grep /Couldn't load a module for member ordering/, @w) ? "member ordering requires indexed hashes" : ""; }; my $order = $reason ? 0 : 1; my @keys = grep !/do|if/, 'aa' .. 'zz'; my $members = join "\n", map "unsigned char $_;", @keys; my $u = new Convert::Binary::C OrderMembers => 0; my $o = new Convert::Binary::C OrderMembers => $order; for my $c ( $u, $o ) { $c->parse( <sizeof('order'); my $unp_u = $u->unpack( 'order', $data ); my $unp_o = $o->unpack( 'order', $data ); my $fail = 0; my $keys = join ',', @keys; for( @keys ) { $unp_u->{$_} == $unp_o->{$_} or $fail++; $unp_u->{foo}[0]{$_} == $unp_o->{foo}[0]{$_} or $fail++; $unp_u->{foo}[1]{$_} == $unp_o->{foo}[1]{$_} or $fail++; } ok( $fail, 0 ); skip( $reason, $keys.",foo", join(',', keys %$unp_o) ); skip( $reason, $keys, join(',', keys %{$unp_o->{foo}[0]}) ); skip( $reason, $keys, join(',', keys %{$unp_o->{foo}[1]}) ); my $list = pack 'C*', map { rand(256) } 1 .. 10*$u->sizeof('order'); my @unp_u = $u->unpack('order', $list); my @unp_o = $o->unpack('order', $list); ok(scalar @unp_u, scalar @unp_o); for my $i (0 .. $#unp_u) { $unp_u = $unp_u[$i]; $unp_o = $unp_o[$i]; $fail = 0; for( @keys ) { $unp_u->{$_} == $unp_o->{$_} or $fail++; $unp_u->{foo}[0]{$_} == $unp_o->{foo}[0]{$_} or $fail++; $unp_u->{foo}[1]{$_} == $unp_o->{foo}[1]{$_} or $fail++; } ok( $fail, 0 ); skip( $reason, $keys.",foo", join(',', keys %$unp_o) ); skip( $reason, $keys, join(',', keys %{$unp_o->{foo}[0]}) ); skip( $reason, $keys, join(',', keys %{$unp_o->{foo}[1]}) ); } Convert-Binary-C-0.76/tests/702_env.t0000644000175000001440000000403011550664622015716 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:28 +0200 $ # $Revision: 17 $ # $Source: /tests/702_env.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; $^W = 1; BEGIN { plan tests => 16 } $ENV{CBC_DISABLE_PARSER} = 1; $ENV{CBC_ORDER_MEMBERS} = 1; eval { require Tie::Hash::Indexed }; $@ and eval { require Tie::IxHash }; $ixhash = $@ ? '' : 'indexed hash module is installed'; @warn = (); $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { my $fail = 0; if( @warn != @_ ) { print "# wrong number of warnings (got ", scalar @warn, ", expected ", scalar @_, ")\n"; $fail++; } for my $ix ( 0 .. $#_ ) { my $e = $_[$ix]; my $w = $warn[$ix]; unless( $w =~ ref($e) ? $e : qr/\Q$e\E/ ) { print "# wrong warning, expected $e, got $w\n"; $fail++; } } if( $fail ) { print "# $_" for @warn } ok( $fail, 0, "warnings check failed" ); @warn = (); } eval { require Convert::Binary::C }; ok( $@, '', "could not require Convert::Binary::C" ); chkwarn(); @w= ( qr/^Convert::Binary::C parser is DISABLED/ ); $ixhash or push @w, qr/^Couldn't load a module for member ordering/; $c = eval { new Convert::Binary::C }; ok( $@, '', "could not create Convert::Binary::C object" ); chkwarn( @w ); ok( $c->OrderMembers, 1 ); chkwarn(); $c->OrderMembers(0); chkwarn(); ok( $c->OrderMembers, 0 ); chkwarn(); $c = eval { new Convert::Binary::C OrderMembers => 0 }; ok( $@, '', "could not create Convert::Binary::C object" ); chkwarn( $w[0] ); ok( $c->OrderMembers, 0 ); chkwarn(); $c->OrderMembers(1); chkwarn( $ixhash ? () : $w[1] ); ok( $c->OrderMembers, 1 ); chkwarn(); Convert-Binary-C-0.76/tests/233_tags.t0000644000175000001440000001547111550664621016075 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:25 +0200 $ # $Revision: 19 $ # $Source: /tests/233_tags.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 148 } my $c = new Convert::Binary::C; eval { $c->parse(<tag('string', 'Format') }; ok($@, ''); ok(not defined $rv); eval { $c->tag('string', Format => 'String') }; ok($@, ''); $rv = eval { $c->tag('string', 'Format') }; ok($@, ''); ok($rv, 'String'); $rv = eval { $c->tag('string') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'String'); eval { $c->tag('test.data', Format => 'Binary') }; ok($@, ''); $rv = eval { $c->tag('test.data', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('test.data') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); eval { $c->tag('xxx', Format => 'Binary') }; ok($@, ''); $rv = eval { $c->tag('xxx', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); eval { $c->tag('test.binary', Format => 'Binary') }; ok($@, ''); $rv = eval { $c->tag('test.binary', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('test.binary') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); my $d = $c->clone; $rv = eval { $d->tag('test.binary', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $d->tag('test.binary') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); $rv = eval { $d->tag('string', 'Format') }; ok($@, ''); ok($rv, 'String'); $rv = eval { $d->tag('string') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'String'); $rv = eval { $d->tag('test.data', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $d->tag('test.data') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); $rv = eval { $d->tag('xxx', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $d->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); eval { $d->tag('test.binary', Format => undef) }; ok($@, ''); $rv = eval { $d->tag('test.binary', 'Format') }; ok($@, ''); ok(not defined $rv); $rv = eval { $d->tag('test.binary') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 0); eval { $d->untag('string', 'Format') }; ok($@, ''); $rv = eval { $d->tag('string', 'Format') }; ok($@, ''); ok(not defined $rv); $rv = eval { $d->tag('string') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 0); eval { $d->untag('test.data', 'Format') }; ok($@, ''); $rv = eval { $d->tag('test.data', 'Format') }; ok($@, ''); ok(not defined $rv); $rv = eval { $d->tag('test.data') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 0); eval { $d->untag('xxx') }; ok($@, ''); $rv = eval { $d->tag('xxx', 'Format') }; ok($@, ''); ok(not defined $rv); $rv = eval { $d->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 0); $rv = eval { $c->tag('test.binary', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('test.binary') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); $rv = eval { $c->tag('string', 'Format') }; ok($@, ''); ok($rv, 'String'); $rv = eval { $c->tag('string') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'String'); $rv = eval { $c->tag('test.data', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('test.data') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); $rv = eval { $c->tag('xxx', 'Format') }; ok($@, ''); ok($rv, 'Binary'); $rv = eval { $c->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{Format}, 'Binary'); my $sub = sub { @_ }; eval { $c->tag('xxx', 'Hooks', { unpack => $sub, pack => [$sub, 42] }) }; ok($@, ''); $rv = eval { $c->tag('xxx', 'Hooks') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 2); ok($rv->{unpack}, $sub); ok(ref $rv->{pack}, 'ARRAY'); ok(@{$rv->{pack}}, 2); ok($rv->{pack}[0], $sub); ok($rv->{pack}[1], 42); $rv = eval { $c->tag('xxx') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 2); ok($rv->{Format}, 'Binary'); ok(ref $rv->{Hooks}, 'HASH'); eval { $c->tag('xxx', 'Hooks', { pack => undef }) }; ok($@, ''); $rv = eval { $c->tag('xxx', 'Hooks') }; ok($@, ''); ok(ref $rv, 'HASH'); ok(keys %$rv, 1); ok($rv->{unpack}, $sub); eval { $c->tag('xxx', 'Hooks', { unpack => undef }) }; ok($@, ''); $rv = eval { $c->tag('xxx', 'Hooks') }; ok($@, ''); ok(not defined $rv); ### test that tagging test.mc.x also tags c.x $c->clean->parse(<tag('test.ma', Format => 'Binary') ->tag('test.mb', Format => 'Binary') ->tag('test.mc', Format => 'Binary'); }; ok($@, ''); for my $i (qw( a b c )) { $rv = eval { $c->tag($i, 'Format') }; ok(not defined $rv); } eval { $c->tag('test.mc.x', Format => 'String'); $c->tag('test.mc', Format => undef); }; ok($@, ''); $rv = eval { $c->tag('test.mc', 'Format') }; ok(not defined $rv); $rv = eval { $c->tag('test.mc.x', 'Format') }; ok($rv, 'String'); $rv = eval { $c->tag('c.x', 'Format') }; ok($rv, 'String'); ### test multiple tags $c->clean; eval { $c->tag('int', Format => 'Binary', Hooks => { pack => sub { $_[0] } }, Format => 'String') }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), 'Format,Hooks'); $rv = eval { $c->untag('int') }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), ''); eval { $c->tag('int', Format => 'Binary', Hooks => { pack => sub { $_[0] } }, Format => 'String') }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), 'Format,Hooks'); $rv = eval { $c->untag('int', 'Format') }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), 'Hooks'); $rv = eval { $c->tag('int', Hooks => { pack => undef }) }; ok($@, ''); $rv = eval { $c->tag('int') }; ok($@, ''); ok(join(',', sort keys %$rv), ''); Convert-Binary-C-0.76/tests/216_language.t0000644000175000001440000000767311550664620016727 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:23 +0200 $ # $Revision: 22 $ # $Source: /tests/216_language.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 43 } eval { $c = new Convert::Binary::C; }; ok($@,'',"failed to create Convert::Binary::C object"); #------------------------ # check the void keyword #------------------------ eval { $c->clean->DisabledKeywords( [] ); $c->parse( "typedef int void;" ); }; ok($@, qr/(parse|syntax) error/); eval { $c->clean->DisabledKeywords( ['void'] ); $c->parse( "typedef int void;" ); @td = $c->typedef_names; }; ok($@,''); ok( scalar @td, 1 ); ok( $td[0], 'void' ); #------------------------ # check the C99 keywords #------------------------ eval { $c->clean->DisabledKeywords( [] ); $c->parse( "struct inline { int restrict; };" ); }; ok($@, qr/(parse|syntax) error/); eval { $c->clean->DisabledKeywords( [qw( inline restrict )] ); $c->parse( "struct inline { int restrict; };" ); @st = $c->struct_names; }; ok($@, ''); ok( scalar @st, 1 ); ok( $st[0], 'inline' ); my @c99decl = ( 'void funky(const int * const restrict foo[const restrict 8]);', 'void funky(const int * const foo[const restrict 8]);', 'void funky(const int * const foo[static const restrict 8]);', 'void funky(const int * const foo[const restrict static 8]);', 'void funky(const int * const foo[static 8]);', 'void funky(restrict int * const foo[restrict 8]);', ); $c->DisabledKeywords([]); for my $c99 (@c99decl) { eval { $c->clean->parse($c99) }; ok($@, ''); } #-------------------- # check C++ comments #-------------------- eval { $c->clean->DisabledKeywords( [] ); $c->parse( "struct foo { int a[8//*comment*/4]; };\n" ) }; ok($@, qr/(parse|syntax) error/); eval { $c->clean->HasCPPComments( 0 ); $c->parse( "struct foo { char a[8//*comment*/4]; };\n" ); $s = $c->sizeof('foo'); }; ok($@, ''); ok( $s, 2 ); #----------------------------- # check (some) GNU extensions #----------------------------- eval { $c->clean->parse( "typedef __signed __extension__ long long _signed;" ); }; ok($@, qr/(parse|syntax) error/); eval { $c->clean->Define( qw( __signed=signed __extension__= ) ); $c->parse( "typedef __signed __extension__ long long _signed;" ); }; ok($@, ''); eval { $c->clean->parse( <clean->KeywordMap( { __signed => 'signed', __extension__ => undef } ); $c->parse( <clean->Define( [] ); $c->parse( <clean->parse( <clean->DisabledKeywords( ['signed'] ); $c->parse( <clean->parse("$code\n"); $s = $c->sizeof('test'); @m = $c->member('test'); }; ok($@, '', $code); ok($s, 0); ok(scalar @m, 0); } Convert-Binary-C-0.76/tests/229_substr.t0000644000175000001440000000532711550664621016465 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:25 +0200 $ # $Revision: 12 $ # $Source: /tests/229_substr.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 41 } $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { my $fail = 0; if( @warn != @_ ) { print "# wrong number of warnings (got ", scalar @warn, ", expected ", scalar @_, ")\n"; $fail++; } for my $ix ( 0 .. $#_ ) { my $e = $_[$ix]; my $w = $warn[$ix]; unless( $w =~ ref($e) ? $e : qr/\Q$e\E/ ) { print "# wrong warning, expected $e, got $w\n"; $fail++; } } if( $fail ) { print "# $_" for @warn } ok( $fail, 0, "warnings check failed" ); @warn = (); } $c = new Convert::Binary::C ByteOrder => 'BigEndian', IntSize => 4; $c->parse("typedef unsigned int u_32;"); $ref = pack "N*", 1000000, 5000000, 3000000, 4000000; $data = pack "N*", 1000000, 2000000, 3000000, 4000000; $x = eval { $c->unpack('u_32', $data) }; ok($@, ''); ok($x, 1000000); chkwarn(); $x = eval { $c->unpack('u_32', substr $data, 0, 4) }; ok($@, ''); ok($x, 1000000); chkwarn(); $x = eval { $c->unpack('u_32', substr $data, 4) }; ok($@, ''); ok($x, 2000000); chkwarn(); $x = eval { $c->unpack('u_32', substr $data, 8, 4) }; ok($@, ''); ok($x, 3000000); chkwarn(); $x = eval { $c->unpack('u_32', substr $data, 8, 3) }; ok($@, ''); ok(not defined $x); chkwarn(qr/Data too short/); $x = $data; eval { substr($x, 4, 4) = $c->pack('u_32', 5000000) }; ok($@, ''); ok($x, $ref); chkwarn(); $x = eval { $c->pack('u_32', 5000000, substr($data, 4, 4)) }; ok($@, ''); ok($x, pack('N', 5000000)); chkwarn(); $x = $data; eval { $c->pack('u_32', 5000000, substr($x, 4, 4)) }; ok($@, ''); ok($x, $ref); chkwarn(); eval { $c->pack('u_32', 5000000, substr('Hello World', 4, 4)) }; ok($@, qr/Modification of a read-only value attempted/); chkwarn(); $x = $data; eval { $c->pack('u_32', 5000000, substr($x, 4)) }; ok($@, ''); ok($x, $ref); chkwarn(); $x = $data; eval { $c->pack('u_32', 5000000, substr($x, 4, 0)) }; ok($@, ''); ok($x, pack('N*', 1000000, 5000000, 2000000, 3000000, 4000000)); chkwarn(); for my $ix (0 .. 2) { my $r = eval { $c->unpack('u_32', substr $data, ($ix+1)*$c->sizeof('u_32')) }; ok($@, ''); ok($r, (unpack "N*", $data)[$ix+1]); chkwarn(); } Convert-Binary-C-0.76/tests/228_hooks.t0000644000175000001440000002552411550664621016266 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:25 +0200 $ # $Revision: 24 $ # $Source: /tests/228_hooks.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 420 } eval { require Scalar::Util }; my $reason = $@ ? 'cannot load Scalar::Util' : ''; unless ($reason) { eval { Scalar::Util::dualvar(42, 'answer') eq 'answer' or die }; $reason = 'cannot use dualvar()' if $@; } my $c = new Convert::Binary::C ByteOrder => 'BigEndian', EnumType => 'String', EnumSize => 4, IntSize => 4, PointerSize => 4; $c->parse(<<'ENDC'); enum Enum { Zero, One, Two, Three, Four, Five, Six, Seven }; typedef unsigned int u_32; typedef u_32 TextId; typedef TextId SetTextId; struct String { u_32 len; char buf[]; }; struct Date { u_32 year; u_32 month; u_32 day; }; struct Test { u_32 header; SetTextId id; }; struct PtrHookTest { struct Test *pTest; struct Date *pDate; enum Enum *pEnum; TextId *pText; }; ENDC my %TEXTID = ( 4 => 'perl', 1179602721 => 'rules' ); my %RTEXTID = reverse %TEXTID; my $d = pack("N", 4) . "FOO!"; no_hooks(); $c->tag('Enum', Hooks => { pack => \&enum_pack, unpack => \&enum_unpack }); $c->tag('TextId', Hooks => { pack => \&textid_pack, unpack => \&textid_unpack }); $c->tag('String', Hooks => { pack => \&string_pack, unpack => \&string_unpack }); with_hooks(); $c = $c->clone; with_hooks(); $c->tag($_, Hooks => undef) for qw(Enum String); { my $hook = $reason ? sub { $_[0] } # identity : sub { Scalar::Util::dualvar($_[0], $TEXTID{$_[0]}) }; $c->tag('TextId', Hooks => { unpack => $hook, pack => undef }); } with_single_hook(); $c = $c->clone; with_single_hook(); # This should completely remove the 'TextId' hooks $c->tag('TextId', Hooks => { unpack => undef }); no_hooks(); $c = $c->clone; no_hooks(); $c->tag('Enum', Hooks => undef) ->tag('TextId', Hooks => undef) ->tag('String', Hooks => undef) ->tag('Enum', Hooks => { pack => \&enum_pack }) ->tag('TextId', Hooks => { pack => \&textid_pack }) ->tag('String', Hooks => { pack => \&string_pack }) ->tag('Enum', Hooks => { unpack => \&enum_unpack }) ->tag('TextId', Hooks => { unpack => \&textid_unpack }) ->tag('String', Hooks => { unpack => \&string_unpack }); with_hooks(); $c = $c->tag('String', Hooks => undef) ->tag('Enum', Hooks => undef) ->tag('TextId', Hooks => undef) ->clone; no_hooks(); test_args(); test_ptr_hooks(); sub test_ptr_hooks { my $pack = sub { $_[0] =~ /{(0x[^}]+)}/ ? hex $1 : '' }; $c->tag('Test', Hooks => { unpack_ptr => sub { sprintf "Test{0x%X}", $_[0] }, pack_ptr => [$pack, $c->arg('DATA')] }); $c->tag('Date', Hooks => { unpack_ptr => [sub { sprintf "$_[1]\{0x%X}", $_[0] }, $c->arg('DATA', 'TYPE')], pack_ptr => $pack }); $c->tag('Enum', Hooks => { unpack_ptr => [sub { sprintf "$_[0]\{0x%X}", $_[1] }, $c->arg('TYPE', 'DATA')], pack_ptr => [$pack, $c->arg('DATA', 'SELF'), 'foo'] }); $c->tag('TextId', Hooks => { unpack_ptr => [sub { sprintf "Text\{0x%X}", $_[0] }, $c->arg('DATA')], pack_ptr => $pack }); my $str = pack('N*', 0xdeadbeef, 0x2badc0de, 0x12345678, 0xdeadc0de); my $u = $c->unpack('PtrHookTest', $str); ok($u->{pTest}, "Test{0xDEADBEEF}"); ok($u->{pDate}, "struct Date{0x2BADC0DE}"); ok($u->{pEnum}, "enum Enum{0x12345678}"); ok($u->{pText}, "Text{0xDEADC0DE}"); my $p = $c->pack('PtrHookTest', $u); ok($p, $str); $c->tag($_, Hooks => undef) for qw( Test Date Enum TextId ); } sub test_args { my(@ap, @au, $x); my $sub_p = sub { push @ap, @_; shift }; my $sub_u = sub { push @au, @_; shift }; my @t = ( { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [], res_u => [], arg_p => [], res_p => [] }, { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [1], res_u => [1], arg_p => [2], res_p => [2] }, { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [$c->arg('DATA')], res_u => [0x12345678], arg_p => [$c->arg('DATA', 'HOOK')], res_p => [4711, 'pack'] }, { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [$c->arg('DATA', 'TYPE', 'SELF'), 123], res_u => [0x12345678, 'TextId', '{self}', 123], arg_p => [$c->arg('DATA', 'TYPE', 'SELF'), 456], res_p => [4711, 'TextId', '{self}', 456] }, { type => 'TextId', in_p => 4711, in_u => pack("N", 0x12345678), arg_u => [$c->arg('DATA', 'TYPE'), 'foo', $c->arg('SELF', 'DATA')], res_u => [0x12345678, 'TextId', 'foo', '{self}', 0x12345678], arg_p => [$c->arg('DATA', 'TYPE'), 'bar', $c->arg('SELF')], res_p => [4711, 'TextId', 'bar', '{self}'] }, { type => 'Enum', in_p => 'Seven', in_u => pack("N", 8), arg_u => [$c->arg('DATA', 'TYPE', 'HOOK')], res_u => ['', 'enum Enum', 'unpack'], arg_p => [$c->arg('DATA', 'TYPE', 'DATA')], res_p => ['Seven', 'enum Enum', 'Seven'] }, { type => 'Date', in_p => {}, in_u => pack("N3", 4, 5, 6), arg_u => [$c->arg('DATA', 'TYPE')], res_u => [qr/HASH/, 'struct Date'], arg_p => [$c->arg('DATA', 'TYPE')], res_p => [qr/HASH/, 'struct Date'] }, ); for my $t (@t) { $c->tag($t->{type}, Hooks => { pack => [$sub_p, @{$t->{arg_p}}], unpack => [$sub_u, @{$t->{arg_u}}], }); for my $cbc ($c, $c->clone) { $x = $cbc->pack($t->{type}, $t->{in_p}); $x = $cbc->unpack($t->{type}, $t->{in_u}); ok(scalar @ap, scalar @{$t->{res_p}}); for (0 .. $#ap) { my $res = $t->{res_p}[$_] eq '{self}' ? $cbc : $t->{res_p}[$_]; ok($ap[$_], $res); } ok(scalar @au, scalar @{$t->{res_u}}); for (0 .. $#au) { my $res = $t->{res_u}[$_] eq '{self}' ? $cbc : $t->{res_u}[$_]; ok($au[$_], $res); } $cbc->tag($t->{type}, Hooks => undef); @ap = (); @au = (); } } } sub no_hooks { my($u, $p); $u = $c->unpack('Enum', $d); ok($u, 'Four'); $p = $c->pack('Enum', $u); ok($p, substr($d, 0, $c->sizeof('Enum'))); $u = $c->unpack('u_32', $d); ok($u, 4); $p = $c->pack('u_32', $u); ok($p, substr($d, 0, $c->sizeof('u_32'))); $u = $c->unpack('TextId', $d); ok($u, 4); $p = $c->pack('TextId', $u); ok($p, substr($d, 0, $c->sizeof('TextId'))); $u = $c->unpack('SetTextId', $d); ok($u, 4); $p = $c->pack('SetTextId', $u); ok($p, substr($d, 0, $c->sizeof('SetTextId'))); $u = $c->unpack('String', $d); ok($u->{len}, 4); ok("@{$u->{buf}}", "@{[unpack 'c*', 'FOO!']}"); $p = $c->pack('String', $u); ok($p, $d); $u = $c->unpack('Test', $d); ok($u->{header}, 4); ok($u->{id}, unpack('N', 'FOO!')); $p = $c->pack('Test', $u); ok($p, substr($d, 0, $c->sizeof('Test'))); } sub with_hooks { my($u, $p); $u = $c->unpack('Enum', $d); ok($u, 'FOUR'); $p = $c->pack('Enum', $u); ok($p, substr($d, 0, $c->sizeof('Enum'))); $u = $c->unpack('u_32', $d); ok($u, 4); $p = $c->pack('u_32', $u); ok($p, substr($d, 0, $c->sizeof('u_32'))); $u = $c->unpack('TextId', $d); ok($u, 'perl'); $p = $c->pack('TextId', $u); ok($p, substr($d, 0, $c->sizeof('TextId'))); $u = $c->unpack('SetTextId', $d); ok($u, 'perl'); $p = $c->pack('SetTextId', $u); ok($p, substr($d, 0, $c->sizeof('SetTextId'))); $u = $c->unpack('String', $d); ok($u, 'FOO!'); $p = $c->pack('String', $u); ok($p, $d); $u = $c->unpack('Test', $d); ok($u->{header}, 4); ok($u->{id}, 'rules'); $p = $c->pack('Test', $u); ok($p, substr($d, 0, $c->sizeof('Test'))); } sub with_single_hook { my($u, $p); $u = $c->unpack('Enum', $d); ok($u, 'Four'); $p = $c->pack('Enum', $u); ok($p, substr($d, 0, $c->sizeof('Enum'))); $u = $c->unpack('u_32', $d); ok($u, 4); $p = $c->pack('u_32', $u); ok($p, substr($d, 0, $c->sizeof('u_32'))); $u = $c->unpack('TextId', $d); skip($reason, $u, 'perl'); $p = $c->pack('TextId', $u); ok($p, substr($d, 0, $c->sizeof('TextId'))); $u = $c->unpack('SetTextId', $d); skip($reason, $u, 'perl'); $p = $c->pack('SetTextId', $u); ok($p, substr($d, 0, $c->sizeof('SetTextId'))); $u = $c->unpack('String', $d); ok($u->{len}, 4); ok("@{$u->{buf}}", "@{[unpack 'c*', 'FOO!']}"); $p = $c->pack('String', $u); ok($p, $d); $u = $c->unpack('Test', $d); ok($u->{header}, 4); skip($reason, $u->{id}, 'rules'); $p = $c->pack('Test', $u); ok($p, substr($d, 0, $c->sizeof('Test'))); } # the hooks sub enum_pack { ucfirst lc $_[0] } sub enum_unpack { uc $_[0] } sub textid_pack { $RTEXTID{$_[0]} } sub textid_unpack { $TEXTID{$_[0]} } sub string_pack { { len => length $_[0], buf => [unpack 'c*', $_[0]] } } sub string_unpack { pack "c$_[0]->{len}", @{$_[0]->{buf}} } # dying hooks used to leak memory # we cannot really test that they don't leak, but we test if dying works # any remaining leaks will hopefully show up with valgrind... $c->clean->EnumType('Integer')->parse(<sizeof('test'); my $pd = eval { $c->unpack('test', $bd) }; for my $t (['foo' => 40], ['enum NUM' => 10], ['struct inlined' => 4]) { $c->tag($t->[0], Hooks => { pack => sub { rand($t->[1]) < 1 and die "($t->[0]) pack\n"; shift }, unpack => sub { rand($t->[1]) < 1 and die "($t->[0]) unpack\n"; shift }, pack_ptr => sub { rand($t->[1]) < 1 and die "($t->[0]) pack_ptr\n"; shift }, unpack_ptr => sub { rand($t->[1]) < 1 and die "($t->[0]) unpack_ptr\n"; shift } }); } for (1 .. 100) { my $x = eval { $c->pack('test', $pd) }; $@ and print "# $@"; ok($@ =~ /pack/ xor defined $x); my $y = eval { $c->unpack('test', $bd) }; $@ and print "# $@"; ok($@ =~ /unpack/ xor defined $y); } #### TODO: is there a way to check for leaking scalars? (Devel::Arena ?) Convert-Binary-C-0.76/tests/211_clone.t0000644000175000001440000000616011550664620016225 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:22 +0200 $ # $Revision: 21 $ # $Source: /tests/211_clone.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 35 } my $CCCFG = require 'tests/include/config.pl'; eval { $orig = new Convert::Binary::C %$CCCFG; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { # Clone at least twice, to make sure memory of the first clone(s) will # get freed (and to make sure that cloning works a couple of times) $clone = $orig->clone->clone->clone; }; ok($@,'',"failed to clone empty object"); ok( reccmp($orig->configure(), $clone->configure()), 1, "wrong configuration" ); eval { my $foo = $clone->struct; }; ok( $@, qr/without parse data/, "parse data check failed" ); eval { $orig->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to parse C-file"); eval { $clone = $orig->clone->clone->clone; }; ok($@,'',"failed to clone full object"); eval { $dump1 = $orig->sourcify; $dump2 = $clone->sourcify; }; ok($@,'',"failed to sourcify"); ok( $dump1, $dump2, "dumps differ" ); ok( reccmp(scalar $orig->dependencies, scalar $clone->dependencies), 1, "dependencies differ" ); ok( reccmp($orig->configure, $clone->configure), 1, "wrong configuration" ); @meth = qw( enum compound struct union typedef ); for my $meth ( @meth ) { my $meth_names = $meth.'_names'; $ORIG{$meth} = [$orig->$meth()]; $ORIG{$meth_names} = [$orig->$meth_names()]; $ORIG{$meth.'hash'} = { map { ($_ => $orig->$meth($_)) } $orig->$meth_names() }; } undef $orig; # destroy original object for my $meth ( @meth ) { my $meth_names = $meth.'_names'; my @orig_names = sort @{$ORIG{$meth_names}}; print "# checking if any names exist\n"; ok( @orig_names > 0 ); print "# checking counts for \$clone->$meth / \$clone->$meth_names\n"; ok(scalar @{$ORIG{$_}}, scalar $clone->$_(), "count mismatch in $_") for $meth, $meth_names; print "# checking parsed names for \$clone->$meth_names\n"; ok(join( ',', @orig_names ), join( ',', sort $clone->$meth_names() ), "parsed names differ in $meth_names" ); ok( scalar grep $_, map { print "# checking \$clone->$meth( \"$_\" )\n"; reccmp($ORIG{$meth.'hash'}{$_}, $clone->$meth($_)) } @orig_names ); } sub reccmp { my($ref, $val) = @_; ref $ref or return $ref eq $val; if( ref $ref eq 'ARRAY' ) { @$ref == @$val or return 0; for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ) or return 0; } } elsif( ref $ref eq 'HASH' ) { @{[keys %$ref]} == @{[keys %$val]} or return 0; for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ) or return 0; } } else { return 0 } return 1; } Convert-Binary-C-0.76/tests/241_sizeof.t0000644000175000001440000000435411550664621016433 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:26 +0200 $ # $Revision: 5 $ # $Source: /tests/241_sizeof.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 71; use Convert::Binary::C @ARGV; my $c = new Convert::Binary::C IntSize => 4, CharSize => 1, Alignment => 1; eval { $c->parse(<<'ENDC'); struct normal { int a; char b[3]; char c[3][3][3]; }; struct flexible { int a; char b[]; }; ENDC }; is($@, '', "parse C code"); my @tests = ( [ 'normal.a' => 4 ], [ 'normal.b' => 3 ], [ 'normal.b[0]' => 1 ], [ 'normal.b[1]' => 1 ], [ 'normal.b[2]' => 1 ], [ 'normal.b[3]' => 1 ], [ 'normal.b[4]' => 1 ], [ 'normal.b[+4]' => 1 ], [ 'normal.b[+1000000]' => 1 ], [ 'normal.b[-0]' => 1 ], [ 'normal.b[-1]' => 1 ], [ 'normal.b[-2]' => 1 ], [ 'normal.b[-3]' => 1 ], [ 'normal.b[-4]' => 1 ], [ 'normal.b[-5]' => 1 ], [ 'normal.b[-1000000]' => 1 ], [ 'normal.c[-10]' => 9 ], [ 'normal.c[-10][-10]' => 3 ], [ 'normal.c[-9][-9][-9]' => 1 ], [ 'flexible.a' => 4 ], [ 'flexible.b' => 0 ], [ 'flexible.b[0]' => 1 ], [ 'flexible.b[1]' => 1 ], [ 'flexible.b[2]' => 1 ], [ 'flexible.b[3]' => 1 ], [ 'flexible.b[4]' => 1 ], [ 'flexible.b[+4]' => 1 ], [ 'flexible.b[+1000000]' => 1 ], [ 'flexible.b[-0]' => 1 ], [ 'flexible.b[-1]' => 1 ], [ 'flexible.b[-2]' => 1 ], [ 'flexible.b[-3]' => 1 ], [ 'flexible.b[-4]' => 1 ], [ 'flexible.b[-5]' => 1 ], [ 'flexible.b[-1000000]' => 1 ], ); for my $t (@tests) { my $size = eval { $c->sizeof($t->[0]) }; is($@, '', "eval { sizeof($t->[0]) }"); is($size, $t->[1], "sizeof($t->[0]) == $t->[1]"); } Convert-Binary-C-0.76/tests/501_bfsimple.t0000644000175000001440000003101011550664621016721 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:27 +0200 $ # $Revision: 17 $ # $Source: /tests/501_bfsimple.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 8990; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $BIN = $] < 5.006 ? '%x' : '%08b'; my $c = eval { new Convert::Binary::C Bitfields => { Engine => 'Simple', BlockSize => 4 }, EnumType => 'String' }; is($@, '', "failed to create Convert::Binary::C object"); eval { $c->parse(<sizeof('bfu'), 4); is($c->sizeof('bfs'), 4); is($c->sizeof('bfue'), 4); is($c->sizeof('bfse'), 4); for my $cfg ({ bo => 'BigEndian' }, { bo => 'BigEndian' }, { bo => 'LittleEndian' }, { bo => 'LittleEndian' }) { $c->ByteOrder($cfg->{bo}); my $bfu = $c->unpack('bfu', pack "C*", (255)x4); my $bfs = $c->unpack('bfs', pack "C*", (255)x4); my $bfue = $c->unpack('bfue', pack "C*", (255)x4); my $bfse = $c->unpack('bfse', pack "C*", (255)x4); for (1 .. 7) { is($bfu->{"b$_"}, (1 << $_) - 1); is($bfs->{"b$_"}, -1); is($bfue->{"b$_"}, "U$_" . ($_ == 1 ? '1' : 'A')); is($bfse->{"b$_"}, "S$_" . ($_ == 1 ? '1' : 'A')); } } $c->ByteOrder('LittleEndian'); my @ru = (); my @rs = (); my @rue = (); my @rse = (); for my $b (1 .. 7) { for my $i (0 .. ($b-1)) { for (\@ru, \@rs) { push @$_, { map { ("b$_" => 0) } 1 .. 7 }; } push @rue, { map { ("b$_" => "U${_}0") } 1 .. 7 }; push @rse, { map { ("b$_" => "S${_}0") } 1 .. 7 }; $ru[-1]{"b$b"} = 1 << $i; $rs[-1]{"b$b"} = $i == ($b-1) ? -(1 << $i) : 1 << $i; $rue[-1]{"b$b"} = "U$b" . ($i+1); $rse[-1]{"b$b"} = "S$b" . ($i+1); } } while (@ru < 32) { for (\@ru, \@rs) { push @$_, { map { ("b$_" => 0) } 1 .. 7 }; } push @rue, { map { ("b$_" => "U${_}0") } 1 .. 7 }; push @rse, { map { ("b$_" => "S${_}0") } 1 .. 7 }; } for my $bit (0 .. 31) { debug("LittleEndian, Bit=$bit\n"); my $pk = pack "V", 1<<$bit; my $bfu = $c->unpack('bfu', $pk); my $bfs = $c->unpack('bfs', $pk); my $bfue = $c->unpack('bfue', $pk); my $bfse = $c->unpack('bfse', $pk); is(join(',', map { qq/b$_=$bfu->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$ru[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfs->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rs[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfue->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rue[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfse->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rse[$bit]{"b$_"}/ } 1 .. 7)); $pk = pack "V", 0 if $bit >= 28; my $pu = $c->pack('bfu', $ru[$bit]); my $ps = $c->pack('bfs', $rs[$bit]); my $pue = $c->pack('bfue', $rue[$bit]); my $pse = $c->pack('bfse', $rse[$bit]); debug(sprintf "pk =%s\npu =%s\nps =%s\npue=%s\npse=%s\n", map { showbits($_) } $pk, $pu, $ps, $pue, $pse); is($pu, $pk); is($ps, $pk); is($pue, $pk); is($pse, $pk); } $c->ByteOrder('BigEndian'); @ru = (); @rs = (); @rue = (); @rse = (); for my $b (1 .. 7) { for my $i (reverse(0 .. ($b-1))) { for (\@ru, \@rs) { unshift @$_, { map { ("b$_" => 0) } 1 .. 7 }; } unshift @rue, { map { ("b$_" => "U${_}0") } 1 .. 7 }; unshift @rse, { map { ("b$_" => "S${_}0") } 1 .. 7 }; $ru[0]{"b$b"} = 1 << $i; $rs[0]{"b$b"} = $i == ($b-1) ? -(1 << $i) : 1 << $i; $rue[0]{"b$b"} = "U$b" . ($i+1); $rse[0]{"b$b"} = "S$b" . ($i+1); } } while (@ru < 32) { for (\@ru, \@rs) { unshift @$_, { map { ("b$_" => 0) } 1 .. 7 }; } unshift @rue, { map { ("b$_" => "U${_}0") } 1 .. 7 }; unshift @rse, { map { ("b$_" => "S${_}0") } 1 .. 7 }; } for my $bit (0 .. 31) { debug("BigEndian, Bit=$bit\n"); my $pk = pack "N", 1<<$bit; my $bfu = $c->unpack('bfu', $pk); my $bfs = $c->unpack('bfs', $pk); my $bfue = $c->unpack('bfue', $pk); my $bfse = $c->unpack('bfse', $pk); is(join(',', map { qq/b$_=$bfu->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$ru[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfs->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rs[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfue->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rue[$bit]{"b$_"}/ } 1 .. 7)); is(join(',', map { qq/b$_=$bfse->{"b$_"}/ } 1 .. 7), join(',', map { qq/b$_=$rse[$bit]{"b$_"}/ } 1 .. 7)); $pk = pack "N", 0 if $bit <= 3; my $pu = $c->pack('bfu', $ru[$bit]); my $ps = $c->pack('bfs', $rs[$bit]); my $pue = $c->pack('bfue', $rue[$bit]); my $pse = $c->pack('bfse', $rse[$bit]); debug(sprintf "pk =%s\npu =%s\nps =%s\npue=%s\npse=%s\n", map { showbits($_) } $pk, $pu, $ps, $pue, $pse); is($pu, $pk); is($ps, $pk); is($pue, $pk); is($pse, $pk); } $c->clean->parse(<sizeof('sbf'), 8); is($c->sizeof('ubf'), 4); $c->ByteOrder('BigEndian'); my $us = $c->unpack('sbf', pack "NN", 0xF0FFFFFF, 0x4FFFFFFF); is($us->{b1}, 1); is($us->{b2}, 2); is($us->{b3}, 2); my $uu = $c->unpack('ubf', pack "N", 0x4FFFFFFF); is($uu->{b1}, 0); is($uu->{b2}, 1); is($uu->{b3}, 2); my $ps = $c->pack('sbf', { b1 => 1, b2 => 2, b3 => 3 }); my $pu = $c->pack('ubf', { b1 => 0, b2 => 1, b3 => 2 }); is($ps, pack "NN", 0x90000000, 0x60000000); is($pu, pack "N", 0x40000000); $c->ByteOrder('LittleEndian'); $us = $c->unpack('sbf', pack "VV", 0xFFFFFF0F, 0xFFFFFFF4); is($us->{b1}, 1); is($us->{b2}, 1); is($us->{b3}, 4); $uu = $c->unpack('ubf', pack "V", 0xFFFFFFFA); is($uu->{b1}, 0); is($uu->{b2}, 2); is($uu->{b3}, 2); $ps = $c->pack('sbf', { b1 => 1, b2 => 2, b3 => 3 }); $pu = $c->pack('ubf', { b1 => 0, b2 => 1, b3 => 2 }); is($ps, pack "VV", 0x00000011, 0x00000003); is($pu, pack "V", 0x00000002); my @shlone = qw( 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912 1073741824 2147483648 4294967296 8589934592 17179869184 34359738368 68719476736 137438953472 274877906944 549755813888 1099511627776 2199023255552 4398046511104 8796093022208 17592186044416 35184372088832 70368744177664 140737488355328 281474976710656 562949953421312 1125899906842624 2251799813685248 4503599627370496 9007199254740992 18014398509481984 36028797018963968 72057594037927936 144115188075855872 288230376151711744 576460752303423488 1152921504606846976 2305843009213693952 4611686018427387904 9223372036854775808 ); my @allbit = qw( 0 1 3 7 15 31 63 127 255 511 1023 2047 4095 8191 16383 32767 65535 131071 262143 524287 1048575 2097151 4194303 8388607 16777215 33554431 67108863 134217727 268435455 536870911 1073741823 2147483647 4294967295 8589934591 17179869183 34359738367 68719476735 137438953471 274877906943 549755813887 1099511627775 2199023255551 4398046511103 8796093022207 17592186044415 35184372088831 70368744177663 140737488355327 281474976710655 562949953421311 1125899906842623 2251799813685247 4503599627370495 9007199254740991 18014398509481983 36028797018963967 72057594037927935 144115188075855871 288230376151711743 576460752303423487 1152921504606846975 2305843009213693951 4611686018427387903 9223372036854775807 18446744073709551615 ); for my $block_size (1, 2, 4, 8) { my $max_bits = 8*$block_size; $c->Bitfields({ BlockSize => $block_size }); for my $bits (1 .. $max_bits) { for my $shift (0 .. $max_bits-$bits) { my $shm = $shift ? "unsigned : $shift;" : ''; $c->clean->parse(<sizeof('bfu'), $block_size); is($c->sizeof('bfs'), $block_size); my @test = ( { bo => 'LittleEndian', pk => sub { my $bit = shift; scalar reverse packbits($block_size, 1, $shift + $bit) }, pkall => sub { scalar reverse packbits($block_size, $bits, $shift) } }, { bo => 'BigEndian', pk => sub { my $bit = shift; packbits($block_size, 1, 8*$block_size - ($shift + $bits) + $bit) }, pkall => sub { packbits($block_size, $bits, 8*$block_size - ($shift + $bits)) } }, ); my $fail = 0; for my $t (@test) { $c->ByteOrder($t->{bo}); for my $bit (0 .. $bits-1) { my $pk = $t->{pk}->($bit); my $pu = $c->pack('bfu', { b => $shlone[$bit] }); my $ps = $c->pack('bfs', { b => ($bit == $bits-1 ? "-$shlone[$bit]" : $shlone[$bit]) }); my $uu = $c->unpack('bfu', $pk); my $us = $c->unpack('bfs', $pk); my $f = 0; $pu eq $pk or $f++; $ps eq $pk or $f++; $uu->{b} eq $shlone[$bit] or $f++; $us->{b} eq ($bit == $bits-1 ? "-$shlone[$bit]" : $shlone[$bit]) or $f++; if ($f > 0) { diag("[$t->{bo}/ONE] block_size=$block_size, bits=$bits, shift=$shift, bit=$bit\n", sprintf("pk = %s\npu = %s\nps = %s\n", map { showbits($_) } $pk, $pu, $ps), "1 << \$bit = $shlone[$bit]\n", "\$uu->{b} = $uu->{b}\n", "\$us->{b} = $us->{b}\n"); } $fail += $f; } my $pk = $t->{pkall}->(); my $pu = $c->pack('bfu', { b => $allbit[$bits] }); my $ps = $c->pack('bfs', { b => -1 }); my $uu = $c->unpack('bfu', $pk); my $us = $c->unpack('bfs', $pk); my $f = 0; $pu eq $pk or $f++; $ps eq $pk or $f++; $uu->{b} eq $allbit[$bits] or $f++; $us->{b} == -1 or $f++; if ($f > 0) { diag("[$t->{bo}/ALL] block_size=$block_size, bits=$bits, shift=$shift\n", sprintf("pk = %s\npu = %s\nps = %s\n", map { showbits($_) } $pk, $pu, $ps), "allbits = $allbit[$bits]\n", "\$uu->{b} = $uu->{b}\n", "\$us->{b} = $us->{b}\n"); } $fail += $f; } is($fail, 0); } } } ### test UnsignedBitfields option $c->clean->Bitfields({ BlockSize => 1 })->parse(<unpack('bf', pack('C', 255)); is($bf->{x}, -1); $c->UnsignedBitfields(1); $bf = $c->unpack('bf', pack('C', 255)); is($bf->{x}, 255); sub debug { $ENV{CBC_TEST_DEBUG} and diag(@_); } sub showbits { join ' ', map { sprintf $BIN, $_ } unpack "C*", shift; } sub packbits { my($width, $bits, $offs) = @_; my @b = (0) x $width; for my $bit ($offs .. $offs + $bits - 1) { @b[$bit/8] |= 1 << ($bit%8); } pack "C*", reverse @b; } Convert-Binary-C-0.76/tests/220_new.t0000644000175000001440000000170111550664620015712 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:24 +0200 $ # $Revision: 13 $ # $Source: /tests/220_new.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 3; } # This test is basically only for the 901_memory.t test $c = eval { new Convert::Binary::C }; ok( $@, '' ); $c = eval { new Convert::Binary::C 'foo' }; ok( $@, qr/^Number of configuration arguments to new must be even/ ); $c = eval { new Convert::Binary::C foo => 42 }; ok( $@, qr/^Invalid option 'foo'/ ); Convert-Binary-C-0.76/tests/230_compiler.t0000644000175000001440000000316711550664621016745 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:25 +0200 $ # $Revision: 12 $ # $Source: /tests/230_compiler.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; use vars '%config'; $^W = 1; BEGIN { %cc = map { /^(.*?([\w-]+))\.cfg$/ ? ( $2 => { cfg => "$1.cfg", bin => "$1.bin", dat => "$1.dat" } ) : () } glob 'tests/compiler/*.cfg'; plan tests => 2 * keys %cc; } sub slurp { my $file = shift; local *F; open F, $file or die "$file: $!\n"; my $data = do { local $/; }; close F; return $data; } for my $cur (sort keys %cc) { print "# -- $cur --\n"; my $dat = eval slurp($cc{$cur}{dat}); my $bin = slurp($cc{$cur}{bin}); $bin =~ s/\s+//gms; $bin = pack "H*", $bin; do $cc{$cur}{cfg}; my $c = new Convert::Binary::C %config; $c->parse_file('tests/compiler/test.h'); my $pck = $c->pack('test', $dat); my $pass = 0; my $fail = 0; for my $i (0 .. $c->sizeof('test')-1) { my $a = ord substr $pck, $i, 1; my $b = ord substr $bin, $i, 1; next if $b == 0; $pass++; next if $a == $b; $fail++; print "# [$i] $a != $b\n"; } print "# pass=$pass fail=$fail\n"; ok($pass > 0); ok($fail == 0); } Convert-Binary-C-0.76/tests/801_examples.t0000644000175000001440000000176411550664622016757 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:28 +0200 $ # $Revision: 12 $ # $Source: /tests/801_examples.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { @files = ; plan tests => 1 + 3*@files; } ok( @files > 0 ); $perl = "$^X -w " . join( ' ', map qq["-I$_"], @INC ); for my $ex ( @files ) { my $out = ''; my $open; print "# checking '$ex'\n"; if( $open = open FILE, "$perl $ex |" ) { $out = do { local $/; }; close FILE; } ok( $open ); ok( length($out) > 0 ); ok( $?, 0 ); } Convert-Binary-C-0.76/tests/224_typeof.t0000644000175000001440000000542711550664621016445 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:24 +0200 $ # $Revision: 11 $ # $Source: /tests/224_typeof.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 31 } ($code, $tests) = split /-{40,}/, do { local $/; }, 2; @tests = map { chomp; /^\s*(.*?)\s*=>\s*(.*?)\s*$/ ? { name => $1, type => $2 } : () } split $/, $tests; $c = eval { new Convert::Binary::C }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $c->parse( $code ) }; ok($@,'',"failed to parse C code"); { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; for my $t ( @tests ) { ok( $c->typeof($t->{name}), $t->{type} ); } ok( @warn == 0 ); } __DATA__ typedef unsigned char u_8; typedef unsigned int u_32; typedef unsigned int ary[10]; struct foo { u_8 a; union { u_32 a, b[10]; ary c, d[10], e[4][6]; char *f, *g[4][8], ****h[1][2][3]; } b; struct { u_8 a:1, b:2, c:3; u_32 d:4; signed short e:5; } c; struct { int d:16; int *e; }; }; ------------------------------------------------------------------------------- u_8 => u_8 u_32 => u_32 ary => ary foo => struct foo foo.a => u_8 foo.b => union foo.b.a => u_32 foo.b.b => u_32 [10] foo.b.b[5] => u_32 foo.b.c => ary foo.b.d => ary [10] foo.b.d[5] => ary foo.b.e => ary [4][6] foo.b.e[2] => ary [6] foo.b.e[2][2] => ary foo.b.f => char * foo.b.g => char * [4][8] foo.b.g[2] => char * [8] foo.b.g[2][4] => char * foo.b.h => char * [1][2][3] struct foo.c => struct struct foo.c.a => u_8 :1 struct foo.c.b => u_8 :2 struct foo.c.c => u_8 :3 struct foo.c.d => u_32 :4 struct foo.c.e => signed short :5 struct foo.d => int :16 struct foo.e => int * Convert-Binary-C-0.76/tests/601_speed.t0000644000175000001440000000631311550664621016231 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:27 +0200 $ # $Revision: 18 $ # $Source: /tests/601_speed.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; use Convert::Binary::C::Cached; $^W = 1; BEGIN { plan tests => 11; } my $CCCFG = require 'tests/include/config.pl'; eval { require Data::Dumper }; $Data_Dumper = $@; eval { require IO::File }; $IO_File = $@; if( $Data_Dumper or $IO_File ) { my $req; $req = 'IO::File' if $IO_File; $req = 'Data::Dumper' if $Data_Dumper; $req = 'Data::Dumper and IO::File' if $Data_Dumper && $IO_File; skip( "caching requires $req", 0 ) for 1 .. 11; exit; } else { ok(1) } eval { my @dummy = times }; if( $@ ) { print "# no times() funtion, trying Time::HiRes...\n"; eval { require Time::HiRes; *main::mytime = \&Time::HiRes::time; $required_time = 5; $time_per_test = 1; }; if( $@ ) { print "# can't load Time::HiRes, using time()...\n"; *main::mytime = sub { time }; $required_time = 20; $time_per_test = 4; } } else { print "# using times() for timing...\n"; *main::mytime = sub { my @t = times; $t[0]+$t[1] }; $required_time = 5; $time_per_test = 1; } $cache = 'tests/cache.cbc'; -e $cache and unlink $cache; # check "normal" C::B::C object $tests = 5; $next_test_time = 0; $iterations = 0; $start_time = mytime(); $fail = 0; do { eval { $c = new Convert::Binary::C %$CCCFG; $c->parse_file( 'tests/include/include.c' ); }; $@ and $fail = 1 and last; $iterations++; $elapsed_time = mytime() - $start_time; # this is just to prevent the user from stopping the test if( $elapsed_time >= $next_test_time and $tests > 0 ) { $tests--; $next_test_time += $time_per_test; ok(1); } } while( $elapsed_time < $required_time ); ok(1) while $tests-- > 0; ok( $fail, 0, "failed to perform reference speed test ($@)" ); print "# uncached: $iterations iterations in $elapsed_time seconds\n"; # create cache file eval { $c = new Convert::Binary::C::Cached Cache => $cache, %$CCCFG; $c->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to create cache file for speed test"); # not ok if cache file doesn't exist now ok( -e $cache ); # check cached object (this should be a lot faster) $start_time = mytime(); eval { for( 1 .. $iterations ) { $c = new Convert::Binary::C::Cached Cache => $cache, %$CCCFG; $c->parse_file( 'tests/include/include.c' ); } }; ok( $@, '', "failed to perform cached speed test ($@)" ); $cached_time = mytime() - $start_time; $speedup = $cached_time < 0.001 ? 1000 : $elapsed_time / $cached_time; print "# cached: $iterations iterations in $cached_time seconds\n"; print "# speedup is $speedup\n"; # a speedup of 2 is acceptable ok( $speedup > 2 ); -e $cache and unlink $cache; Convert-Binary-C-0.76/tests/218_member.t0000644000175000001440000002273211550664620016406 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:23 +0200 $ # $Revision: 21 $ # $Source: /tests/218_member.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 1907; } my $CCCFG = require 'tests/include/config.pl'; %basic = ( char => 1, short => 1, int => 1, long => 1, signed => 1, unsigned => 1, float => 1, double => 1, void => 1 ); eval { $c = Convert::Binary::C->new( ShortSize => 2, IntSize => 4, LongSize => 4, LongLongSize => 8, EnumSize => 4, PointerSize => 4, Alignment => 4, )->parse( < [qw(.apple.color[0] .grape[0] .melon.weight .melon.foo .melon.test .melon.compound.a)], types => [qw(char char long short enum char )], }, { members => [qw(.apple.color[1] .grape[1] .melon.weight+1 .melon.foo+1 .melon.test+1 .melon.compound+1)], types => [qw(char char long short enum struct )], }, { members => [qw(.grape[2] .melon.compound.b .melon.compound.c .melon.weight+2 .melon.test+2 .apple+2)], types => [qw(char short char long enum struct )], }, { members => [qw(.melon.weight+3 .melon.test+3 .melon.compound.b+1 .apple+3)], types => [qw(long enum short struct )], }, { members => [qw(.apple.size .melon.price[0])], types => [qw(long short )], }, { members => [qw(.apple.size+1 .melon.price[0]+1)], types => [qw(long short )], }, { members => [qw(.melon.price[1] .apple.size+2)], types => [qw(short long )], }, { members => [qw(.apple.size+3 .melon.price[1]+1)], types => [qw(long short )], }, { members => [qw(.apple.stuff.foo.a .apple.stuff.taste .melon.price[2])], types => [qw(char char short )], }, { members => [qw(.melon.price[2]+1 .apple+9)], types => [qw(short struct )], }, { members => [qw(.apple+10 .melon+10)], types => [qw(struct struct )], }, { members => [qw(.apple+11 .melon+11)], types => [qw(struct struct )], }, ); for my $off ( 0 .. $c->sizeof( 'Union' )-1 ) { my @members = eval { $c->member( 'Union', $off ) }; ok( $@, '' ); for( 0 .. $#members ) { my $type = eval { $c->typeof( "Union $members[$_]" ) }; ok( $@, '' ); ok( $members[$_], $ref[$off]{members}[$_] ); ok( $type, $ref[$off]{types}[$_] ); } } run_tests($c); eval { $c->configure(%$CCCFG)->clean->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to create Convert::Binary::C object"); run_tests($c); sub run_tests { my $c = shift; for my $mtype ( $c->compound_names ) { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; my $fail = 0; my $success = 0; my $sizeof = $c->sizeof($mtype); for my $off ( 0 .. $sizeof ) { my @warn; my $member = eval { $c->member( $mtype, $off ) }; if( $off == $sizeof ) { unless( $@ =~ /Offset $off out of range \(0 <= offset < $sizeof\)/ ) { print "# wrong error\n"; $fail++; } else { $success++ } } else { unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } my @members = eval { $c->member( $mtype, $off ) }; unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } unless( @members > 0 and $members[0] eq $member ) { print "# wrong members in list context\n"; $fail++; } else { $success++ } for $member( @members ) { my $type = eval { $c->typeof( "$mtype $member" ) || '[pad]' }; unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } my $offset = eval { $c->offsetof($mtype, $member) }; unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } unless( $offset == $off ) { print "# invalid offset\n"; $fail++; } else { $success++ } $member =~ s/\+\d+$//; while( $member ) { my $typeof = eval { $c->typeof("$mtype $member") }; unless( $@ eq '' ) { print "# unexpected error\n"; $fail++; } else { $success++ } unless( defined $typeof ) { print "# undefined type\n"; $fail++; } else { $success++ } $member =~ s/(?:\[\d+\]|\.\w+|^\w+)$//; } } } } for( @warn ) { print "# wrong warning\n"; $fail++; } ok( $fail == 0 ); ok( $success > 0 ); } for my $t ( $c->compound_names, $c->typedef_names ) { my %h; my @m; my $fail = 0; my $success = 0; my $meth = $c->def($t) or next; my $def = $c->$meth( $t ); $meth eq 'typedef' and $h{$t} = $t; get_types( \%h, \@m, $c, $t, $def ); while( my($k,$v) = each %h ) { my $to = $c->typeof($k); unless( $to eq $v ) { print "# typeof mismatch for $meth <$k> ('$to' != '$v')\n"; $fail++; } else { $success++ } } ok( $fail == 0 ); ok( $success > 0 ); if( @m >= 2 ) { $fail = $success = 0; my %dup; for my $member ( $c->member($t) ) { my $ref = shift @m; warn "[$t][$member]" unless defined $ref; if( $t.$member ne $ref ) { print "# '$t$member' ne '$ref'\n"; $fail++; } else { $success++ } if( $dup{$member}++ ) { print "# duplicate member '$t$member' (count=$dup{$member})\n"; $fail++; } else { $success++ } } ok( $fail == 0 ); ok( $success > 0 ); } } } sub get_types { my($r, $m, $c, $t, $d) = @_; if( exists $d->{declarator} ) { my($p,$n,$a) = $d->{declarator} =~ /^(\*?)(\w+)((?:\[\])?(?:\[\d+\])*)$/ or die "BOO!"; my $dim = [$a =~ /\[(\d+)?\]/g]; get_array($r, $m, $c, $t, $d->{type}, $p, $dim); } elsif( exists $d->{declarations} ) { # it's a compound for my $d1 ( @{$d->{declarations}} ) { if( exists $d1->{declarators} ) { for my $d2 ( @{$d1->{declarators}} ) { my($p,$n,$b,$a) = $d2->{declarator} =~ /^(\*?)(\w*)(:\d+)?((?:\[\])?(?:\[\d+\])*)$/ or die "BOO!"; defined $b and $n eq '' and next; my $dim = [$a =~ /\[(\d+)?\]/g]; get_array($r, $m, $c, "$t.$n", $b ? "$d1->{type} $b" : $d1->{type}, $p, $dim); } } else { get_types($r, $m, $c, $t, $d1->{type}); } } } else { push @$m, $t; } } sub get_array { my($r, $m, $c, $t, $d, $p, $dim) = @_; my $rt; if( ref $d ) { if( exists $d->{declarations} ) { $rt = $d->{type}; } elsif( exists $d->{enumerators} ) { $rt = 'enum'; } else { die "BOO!" } } else { $rt = $d } my $a = join '', map { defined $_ ? "[$_]" : '[]' } @$dim; $p and $rt .= " $p"; $a and $rt .= " $a"; $r->{$t} ||= $rt; if( @$dim ) { my @dim = @$dim; my $cd = shift @dim; defined $cd or return; # don't add incomplete types for my $i ( 0 .. $cd-1 ) { get_array($r, $m, $c, $t."[$i]", $d, $p, \@dim); } } elsif( !$p ) { if( ref $d ) { get_types($r, $m, $c, $t.$a, $d); } else { if( $d =~ /^(?:struct|union)/ ) { get_types($r, $m, $c, $t.$a, $c->compound($d)); } elsif( $d =~ /^enum\s+\w+/ ) { push @$m, $t; } elsif( $d =~ /^\w+$/ and not exists $basic{$d} ) { get_types($r, $m, $c, $t.$a, $c->typedef($d)); } else { push @$m, $t; } } } else { push @$m, $t; } } Convert-Binary-C-0.76/tests/201_config.t0000644000175000001440000004741711550664620016403 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:21 +0200 $ # $Revision: 40 $ # $Source: /tests/201_config.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; use constant SUCCEED => 1; use constant FAIL => 0; $^W = 1; BEGIN { plan tests => 2070 } $debug = Convert::Binary::C::feature( 'debug' ); ok( defined $debug ); $RDBG = $debug ? '' : 'no debugging'; # passing references as options is not legal, so this is # always checked for non-list options @refs = ( { in => [12], result => FAIL }, { in => \123, result => FAIL }, { in => {1,2}, result => FAIL }, ); $thisfile = quotemeta "at $0"; sub check_config { my $opt = ref($_[0]) eq 'HASH' ? shift : {}; my $reason = $opt->{skip} || ''; my $option = shift; my $value; for my $config ( @_ ) { my @warn; { local $SIG{__WARN__} = sub { push @warn, shift }; my $reference = $config->{out} || $config->{in}; eval { $p = new Convert::Binary::C }; skip($reason, $@, '', "failed to create Convert::Binary::C object"); print "# \$p->configure( $option => $config->{in} )\n"; eval { $p->configure( $option => $config->{in} ) }; if( $@ ) { my $err = $@; $err =~ s/^/# /g; print "# failed due to:\n$err"; } skip( $reason, ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "$option => $config->{in}" ); skip( $reason, $@, qr/$option must be.*not.*$thisfile/ ) if $config->{result} == FAIL; print "# \$p->$option( $config->{in} )\n"; eval { $p->$option( $config->{in} ) }; if( $@ ) { my $err = $@; $err =~ s/^/# /g; print "# failed due to:\n$err"; } skip( $reason, ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "$option => $config->{in}" ); skip( $reason, $@, qr/$option must be.*not.*$thisfile/ ) if $config->{result} == FAIL; if( $config->{result} == SUCCEED ) { print "# \$value = \$p->configure( $option )\n"; eval { $value = $p->configure( $option ) }; skip( $reason, $@, '', "cannot get value for '$option' via configure" ); skip( $reason, $value, $reference, "invalid value for '$option' via configure" ); print "# \$value = \$p->$option\n"; eval { $value = $p->$option() }; skip( $reason, $@, '', "cannot get value for '$option' via $option" ); skip( $reason, $value, $reference, "invalid value for '$option' via $option" ); } } if( exists $config->{warnings} ) { my $fail = 0; for my $warning ( @warn ) { print "# $warning"; my $expected = 0; $warning =~ $_ and $expected++ for @{$config->{warnings}}; $expected == 1 or $fail++; } skip( $reason, $fail, 0, "unexpected warnings issued for option '$option'" ); } else { for my $warning ( @warn ) { print "# unexpected warning: $warning"; } skip( $reason, scalar @warn, 0, "warnings issued for option '$option'" ); } } print "# \$p->configure( $option )\n"; my @warn; { local $SIG{__WARN__} = sub { push @warn, shift }; eval { $p->configure( $option ) }; } skip( $reason, $@, '', "failed to call configure in void context" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } skip( $reason, scalar @warn, 1, "invalid number of warnings issued" ); skip( $reason, $warn[0], qr/Useless use of configure in void context.*$thisfile/ ); print "# \$p->$option\n"; @warn = (); { local $SIG{__WARN__} = sub { push @warn, shift }; eval { $p->$option() }; } skip( $reason, $@, '', "failed to call $option in void context" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } skip( $reason, scalar @warn, 1, "invalid number of warnings issued" ); skip( $reason, $warn[0], qr/Useless use of $option in void context.*$thisfile/ ); } sub check_config_bool { my $opt = ref($_[0]) eq 'HASH' ? shift : {}; my $option = shift; my @tests = ( { in => 0, out => 0, result => SUCCEED }, { in => 1, out => 1, result => SUCCEED }, { in => 4711, out => 1, result => SUCCEED }, { in => -42, out => 1, result => SUCCEED }, @refs ); check_config( $opt, $option, @tests ); } sub check_option_strlist { my $option = shift; my @warn; my @tests = ( { in => \4711, result => FAIL, error => qr/$option wants an array reference/ }, { in => [], result => SUCCEED }, { in => { key => 'val' }, result => FAIL, error => qr/$option wants an array reference/ }, { in => ['const', 'void'], result => SUCCEED }, ); local $SIG{__WARN__} = sub { push @warn, shift }; for my $config ( @tests ) { @warn = (); eval { $p = new Convert::Binary::C }; ok($@, '', "failed to create Convert::Binary::C object"); print "# \$p->configure( $option => $config->{in} )\n"; eval { $p->configure( $option => $config->{in} ) }; if( $@ ) { my $err = $@; $err =~ s/^/# /g; print "# failed due to:\n$err"; } ok( ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "$option => $config->{in}" ); ok( $@, $config->{error} ) if $config->{result} == FAIL; print "# \$p->$option( $config->{in} )\n"; eval { $p->$option( $config->{in} ) }; if( $@ ) { my $err = $@; $err =~ s/^/# /g; print "# failed due to:\n$err"; } ok( ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "$option => $config->{in}" ); ok( $@, $config->{error} ) if $config->{result} == FAIL; if( $config->{result} == SUCCEED ) { print "# \$value = \$p->configure( $option )\n"; eval { $value = $p->configure( $option ) }; ok( $@, '', "cannot get value for '$option' via configure" ); ok( "@$value", "@{$config->{in}}", "invalid value for '$option' via configure" ); print "# \$value = \$p->$option\n"; eval { $value = $p->$option() }; ok( $@, '', "cannot get value for '$option' via $option" ); ok( "@$value", "@{$config->{in}}", "invalid value for '$option' via $option" ); } for my $warning ( @warn ) { print "# unexpected warning: $warning"; } ok( scalar @warn, 0, "warnings issued for option '$option'" ); } @warn = (); print "# \$p->configure( $option )\n"; eval { $p->configure( $option ) }; ok( $@, '', "failed to call configure in void context" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } ok( scalar @warn, 1, "invalid number of warnings issued" ); ok( $warn[0], qr/Useless use of configure in void context.*$thisfile/ ); @warn = (); print "# \$p->$option\n"; eval { $p->$option() }; ok( $@, '', "failed to call $option in void context" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } ok( scalar @warn, 1, "invalid number of warnings issued" ); ok( $warn[0], qr/Useless use of $option in void context.*$thisfile/ ); } sub check_option_strlist_args { my $option = shift; my @warn; eval { $p = new Convert::Binary::C; $p->$option( [qw(foo bar)] ); $p->$option( 'include' ); $p->$option( qw(a b c) ); $value = $p->$option(); }; ok( $@, '', "failed to call $option with various arguments" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } ok( scalar @warn, 0, "invalid number of warnings issued" ); ok( "@$value", "@{[qw(foo bar include a b c)]}", "invalid value for '$option'" ); } sub compare_config { my($cfg1, $cfg2) = @_; my $fail = 0; scalar keys %$cfg1 == scalar keys %$cfg2 or $fail++; for my $key ( keys %$cfg1 ) { if( ref $cfg1->{$key} eq 'ARRAY' ) { "@{$cfg1->{$key}}" eq "@{$cfg2->{$key}}" or $fail++; } elsif( ref $cfg1->{$key} eq 'HASH' ) { "@{[sort keys %{$cfg1->{$key}}]}" eq "@{[sort keys %{$cfg1->{$key}}]}" or $fail++; for( sort keys %{$cfg1->{$key}} ) { if( defined( $cfg1->{$key}{$_} ) != defined( $cfg2->{$key}{$_} ) ) { $fail++; } if( defined( $cfg1->{$key}{$_} ) and defined( $cfg2->{$key}{$_} ) and $cfg1->{$key}{$_} ne $cfg2->{$key}{$_} ) { $fail++; } } } else { if (defined($cfg1->{$key}) && defined($cfg2->{$key})) { $cfg1->{$key} eq $cfg2->{$key} or $fail++; } else { defined($cfg1->{$key}) == defined($cfg2->{$key}) or $fail++; } } } return $fail == 0; } sub checkrc { my $rc = shift; my $fail = 0; my $succ = 0; while( $rc =~ /SV\s*=\s*(\S+).*?REFCNT\s*=\s*(\d+)/g ) { if( $2 == 1 ) { $succ++ } elsif ($1 eq 'NULL' && $2 > 10000) { # we hit &PL_sv_undef... $succ++ } else { print "# REFCNT = $2 for Sv$1, should be 1\n"; $fail++; } } return $succ > 0 && $fail == 0; } @tests = ( { in => -2, result => FAIL }, { in => -1, result => SUCCEED }, { in => 0, result => SUCCEED }, { in => 1, result => SUCCEED }, { in => 2, result => SUCCEED }, { in => 3, result => FAIL }, { in => 4, result => SUCCEED }, { in => 5, result => FAIL }, { in => 6, result => FAIL }, { in => 7, result => FAIL }, { in => 8, result => SUCCEED }, { in => 9, result => FAIL }, @refs ); check_config( 'EnumSize', @tests ); @tests = ( { in => -1, result => FAIL }, { in => 0, result => SUCCEED }, { in => 1, result => SUCCEED }, { in => 2, result => SUCCEED }, { in => 3, result => FAIL }, { in => 4, result => SUCCEED }, { in => 5, result => FAIL }, { in => 6, result => FAIL }, { in => 7, result => FAIL }, { in => 8, result => SUCCEED }, { in => 9, result => FAIL }, @refs ); check_config( $_, @tests ) for qw( PointerSize IntSize CharSize ShortSize LongSize LongLongSize ); @tests = ( { in => -1, result => FAIL }, { in => 0, result => SUCCEED }, { in => 1, result => SUCCEED }, { in => 2, result => SUCCEED }, { in => 3, result => FAIL }, { in => 4, result => SUCCEED }, { in => 5, result => FAIL }, { in => 6, result => FAIL }, { in => 7, result => FAIL }, { in => 8, result => SUCCEED }, { in => 9, result => FAIL }, { in => 10, result => FAIL }, { in => 11, result => FAIL }, { in => 12, result => SUCCEED }, { in => 13, result => FAIL }, { in => 14, result => FAIL }, { in => 15, result => FAIL }, { in => 16, result => SUCCEED }, { in => 17, result => FAIL }, @refs ); check_config( $_, @tests ) for qw( FloatSize DoubleSize LongDoubleSize ); @tests = ( { in => -1, result => FAIL }, { in => 0, result => SUCCEED }, { in => 1, result => SUCCEED }, { in => 2, result => SUCCEED }, { in => 3, result => FAIL }, { in => 4, result => SUCCEED }, { in => 5, result => FAIL }, { in => 6, result => FAIL }, { in => 7, result => FAIL }, { in => 8, result => SUCCEED }, { in => 9, result => FAIL }, { in => 10, result => FAIL }, { in => 11, result => FAIL }, { in => 12, result => FAIL }, { in => 13, result => FAIL }, { in => 14, result => FAIL }, { in => 15, result => FAIL }, { in => 16, result => SUCCEED }, { in => 17, result => FAIL }, @refs ); check_config( $_, @tests ) for qw( Alignment CompoundAlignment ); check_config( 'ByteOrder', { in => 'BigEndian', result => SUCCEED }, { in => 'LittleEndian', result => SUCCEED }, { in => 'NoEndian', result => FAIL }, @refs ); check_config( 'EnumType', { in => 'Integer', result => SUCCEED }, { in => 'String', result => SUCCEED }, { in => 'Both', result => SUCCEED }, { in => 'None', result => FAIL }, @refs ); check_config_bool( $_ ) for qw( UnsignedBitfields UnsignedChars Warnings HasCPPComments HasMacroVAARGS ); check_option_strlist( $_ ) for qw( Include Define Assert DisabledKeywords ); check_option_strlist_args( $_ ) for qw( Include Define Assert); { my @warn; eval { require Tie::Hash::Indexed }; $@ and eval { require Tie::IxHash }; $@ and push @warn, qr/^Couldn't load a module for member ordering.*$thisfile/; @tests = ( { in => 0, out => 0, result => SUCCEED, warnings => [] }, { in => 1, out => 1, result => SUCCEED, warnings => \@warn }, { in => 4711, out => 1, result => SUCCEED, warnings => \@warn }, { in => -42, out => 1, result => SUCCEED, warnings => \@warn }, @refs ); check_config( 'OrderMembers', @tests ); } #=================================================================== # check DisabledKeywords option #=================================================================== eval { $p = new Convert::Binary::C; $p->configure( DisabledKeywords => ['void', 'foo', 'const'] ); }; ok( $@, qr/Cannot disable unknown keyword 'foo'.*$thisfile/ ); eval { $p = new Convert::Binary::C; $p->DisabledKeywords( 'void', 'foo', 'const' ); }; ok( $@, qr/DisabledKeywords cannot take more than one argument.*$thisfile/ ); eval { $p = new Convert::Binary::C; $p->DisabledKeywords( ['auto', 'enum'] ); $p->DisabledKeywords( ['void', 'while', 'register'] ); }; ok( $@, qr/Cannot disable unknown keyword 'while'.*$thisfile/ ); $kw = $p->DisabledKeywords; ok( "@$kw", "auto enum", 'DisabledKeywords did not preserve configuration' ); #=================================================================== # check KeywordMap option #=================================================================== eval { $p = new Convert::Binary::C; $p->configure( KeywordMap => 5 ); }; ok( $@, qr/KeywordMap wants a hash reference.*$thisfile/ ); eval { $p = new Convert::Binary::C; $p->configure( KeywordMap => [ __xxx__ => 'foo' ] ); }; ok( $@, qr/KeywordMap wants a hash reference.*$thisfile/ ); eval { $p = new Convert::Binary::C; $p->KeywordMap( { '' => 'int' } ); }; ok( $@, qr/Cannot use empty string as a keyword.*$thisfile/ ); eval { $p = new Convert::Binary::C; $p->KeywordMap( { '1_d' => 'int' } ); }; ok( $@, qr/Cannot use '1_d' as a keyword.*$thisfile/ ); eval { $p = new Convert::Binary::C; $p->KeywordMap( { '_d' => [] } ); }; ok( $@, qr/Cannot use a reference as a keyword.*$thisfile/ ); eval { $p = new Convert::Binary::C; $p->KeywordMap( { '_d' => 'foo' } ); }; ok( $@, qr/Cannot use 'foo' as a keyword.*$thisfile/ ); eval { $p = new Convert::Binary::C; $p->KeywordMap( {'__const' => 'const', '__restrict' => undef} ); $p->KeywordMap( {'__volatile' => 'volatile', '__foo' => 'foo'} ); }; ok( $@, qr/Cannot use 'foo' as a keyword.*$thisfile/ ); $kw = $p->KeywordMap; ok( "@{[sort keys %$kw]}", "__const __restrict", 'KeywordMap did not preserve configuration' ); #=================================================================== # check invalid configuration #=================================================================== @tests = ( { value => [1, 2, 3], result => FAIL, error => qr/Invalid number of arguments to configure.*$thisfile/ }, { value => [[1], 2], result => FAIL, error => qr/Option name must be a string, not a reference.*$thisfile/ }, ); foreach $config ( @tests ) { eval { $p = new Convert::Binary::C; $p->configure( @{$config->{value}} ); }; ok( ($@ eq '' ? SUCCEED : FAIL), $config->{result}, "invalid configuration: " . join(', ', @{$config->{value}}) ); ok( $@, $config->{error} ) if exists $config->{error}; } #=================================================================== # check invalid option #=================================================================== eval { $p = new Convert::Binary::C; $p->configure( Something => 'xxx', ByteOrder => 'BigEndian', EnumSize => 0, ); }; ok( $@, qr/Invalid option 'Something'.*$thisfile/ ); #=================================================================== # check invalid method #=================================================================== eval { $p = new Convert::Binary::C; $p->some_method( 1, 2, 3 ); }; ok( $@, qr/Invalid method some_method called.*$thisfile/ ); #=================================================================== # check configure returning the whole configuration #=================================================================== %config = ( 'KeywordMap' => {}, 'DisabledKeywords' => [], 'UnsignedBitfields' => 0, 'UnsignedChars' => 0, 'CharSize' => 1, 'ShortSize' => 2, 'EnumType' => 'Integer', 'EnumSize' => 4, 'Include' => [ '/usr/include' ], 'DoubleSize' => 4, 'FloatSize' => 4, 'HasCPPComments' => 1, 'Alignment' => 1, 'CompoundAlignment' => 1, 'Define' => [ 'DEBUGGING', 'FOO=123' ], 'HasMacroVAARGS' => 1, 'LongSize' => 4, 'Warnings' => 0, 'ByteOrder' => 'LittleEndian', 'Assert' => [], 'IntSize' => 4, 'PointerSize' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'OrderMembers' => 0, 'Bitfields' => { Engine => 'Simple', BlockSize => 2 }, 'StdCVersion' => undef, 'HostedC' => 0, ); eval { $p = new Convert::Binary::C %config; $cfg = $p->configure; }; ok( $@, '', "failed to retrieve configuration" ); ok( compare_config( \%config, $cfg ) ); #=================================================================== # check option chaining #=================================================================== %newcfg = ( 'KeywordMap' => {'__signed__' => 'signed', '__restrict' => undef}, 'DisabledKeywords' => ['const', 'register'], 'UnsignedBitfields' => 1, 'UnsignedChars' => 1, 'CharSize' => 2, 'ShortSize' => 4, 'EnumType' => 'Both', 'EnumSize' => 0, 'Include' => [ '/usr/local/include', '/usr/include', '/include' ], 'DoubleSize' => 8, 'FloatSize' => 8, 'HasCPPComments' => 1, 'Alignment' => 2, 'CompoundAlignment' => 4, 'Define' => [ 'DEBUGGING', 'FOO=123', 'BAR=456' ], 'HasMacroVAARGS' => 1, 'LongSize' => 4, 'Warnings' => 1, 'ByteOrder' => 'BigEndian', 'Assert' => [], 'IntSize' => 4, 'PointerSize' => 2, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'OrderMembers' => 0, 'Bitfields' => { Engine => 'Simple', BlockSize => 4 }, 'StdCVersion' => 199901, 'HostedC' => undef, ); @warn = (); eval { local $SIG{__WARN__} = sub { push @warn, shift }; $p = new Convert::Binary::C %config; $p->UnsignedChars( 1 )->configure( ShortSize => 4, EnumType => 'Both', EnumSize => 0 ) ->Include( ['/usr/local/include'] )->DoubleSize( 8 ) ->CompoundAlignment( 4 ); $p->FloatSize( 8 )->Include( qw( /usr/include /include ) )->DisabledKeywords( [qw( const register )] ) ->Alignment( 2 )->Define( qw( BAR=456 ) )->configure( ByteOrder => 'BigEndian' ); $p->configure( PointerSize => 2 )->Warnings( 1 )->UnsignedBitfields( 1 ) ->KeywordMap( {'__signed__' => 'signed', '__restrict' => undef} ); $p->CharSize(2); $p->Bitfields( { BlockSize => 4 } ); $p->configure(StdCVersion => 199901); $p->HostedC(undef); $cfg = $p->configure; }; ok( $@, '', "failed to configure object" ); if( @warn ) { print "# issued warnings:\n", map "# $_", @warn } ok( scalar @warn, 0, "invalid number of warnings issued" ); ok( compare_config( \%newcfg, $cfg ) ); $debug and $result = checkrc( Convert::Binary::C::__DUMP__( $cfg ) ); skip( $RDBG, $result ); Convert-Binary-C-0.76/tests/603_complex.t0000644000175000001440000116411711550664621016612 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:27 +0200 $ # $Revision: 31 $ # $Source: /tests/603_complex.t $ # ################################################################################ # # THIS IS AN AUTOMATICALLY GENERATED TEST SCRIPT # # ALL CHANGES MADE HERE WILL BE LOST # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More; use Convert::Binary::C; use strict; use constant NALIGN => 4; use constant NTYPES => 4; $^W = 1; BEGIN { plan tests => 380 * NALIGN * NTYPES } my %reference = ( 1=>{sizeof=>{aa=>227,ey=>1092,kc=>3252,rw=>414},content=>{aa=>{ab=>'4565936802120622773',be=>{ac=>2236113589,ad=>1063090004,ae=>1394180375,af=>[-2942,20802],ag=> 8342,ah=>[[[72]],[[-61]]],ai=>'-6417061733278339648',aj=>[[['-7032909512510964018','-6786229256383406556'],['-1571745542831432406','-4920764503352773037'],[ '2454075466962463024','-3528908605309553140']],[['7015318699935418036','-3698861162604841735'],['-7616997190430405562','-3101173563121949895'],[ '-598004097643795395','6936656258274588029']],[['4448571648049379179','-1294729436797405153'],['-4386935965237698738','1037174166098171788'],[ '7322670651580882248','-7917463919004662038']]],ak=>'-7101778636909228330',al=>212,am=>-3,an=>48,ao=>2580535007,ap=>-2058853707,aq=>2236113589,ar=>1063090004, as=>[[1394180375,1363342466]],at=>[-1018683242,1177628096,-1494088614],au=>206,av=>126,aw=>29009,ax=>[[['4676810249416873487','-7333376236790318990']]],ay=> '7660190118987172289',az=>[[['10109570921568530113','555198448556482722','6327072268883512402'],['13363082765023275824','8160324916783808862', '3983613338139164009'],['699936173668592403','7742379893290399345','2872020490439095325']],[['16101204430866382936','10060794516430402159', '12429468283669739771'],['1344356684086429800','11655675283152788009','16253859213638337667'],['3112266432129362420','2536546716242400991', '7752623011068607848']]],ba=>'4114580608502146666',bb=>-680158697,bc=>'4565936802120622773',bd=>[[[25269],[34120],[30548]]]},db=>{bf=>2236113589,bg=>2236113589, bo=>{bh=>[[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[ [-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=> -126,bj=>1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=> 2800878682,bk=>[[-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=> [[1088904740,-1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527, 1783526995,-1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>1740,bw=>[207,180,70],bx=>1798330318,by=>888758619,bz=>'5496305430086728051',ca=> 4251545919,cb=>2738460234,cc=>1796421448,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707, cj=>[[25269,34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[ 1063090004]]],[[[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]] ,cv=>32462,cw=>29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dc=>{bf=>2236113589,bg=>2236113589,bo=>{bh=> [[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98,72]],bi=> -75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=>-126,bj=> 1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=>2800878682,bk=>[ [-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=>[[1088904740, -1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527,1783526995, -1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>1740,bw=>[207,180,70],bx=>1798330318,by=>888758619,bz=>'5496305430086728051',ca=>4251545919,cb=> 2738460234,cc=>1796421448,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707,cj=>[[25269, 34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[1063090004]]],[ [[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]],cv=>32462,cw=> 29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dd=>25269,dj=>{de=>-2058853707,df=>[[1063090004,1394180375, 1363342466],[-1018683242,1177628096,-1494088614],[1901166286,-1637476849,1088904740]],dg=>-1580042126,dh=>[[2587532586,3929016769,1783526995],[3149262529, 2353817904,571383970]],di=>129267212},dk=>-13230,dl=>[[-12538],[18100]],dm=>[[1798330318,888758619,22985075],[1279708331,-43421377,-1556507062]],dn=>1796421448, dp=>2889733366,dq=>1987119542,dr=>-77,ds=>-9,dt=>125,du=>493580917,dv=>244,dw=>244,dx=>[[17396,27488],[-9353,22567],[-17280,7997]],dy=>-12,dz=>-12,ea=> 1801470964,eb=>[[1801470964,1479007095,524139648],[1876914936,1324222514,-74735841],[-1933369736,1756134999,1208902856]],ec=>43037,ed=>10514,ee=>3932528474,ef=> 49478,eg=>-95,eh=>-125,ei=>-124,ej=>-28129,ek=>20182,el=>[[[145,225],[244,105]],[[113,157],[212,253]],[[48,43],[223,214]]],em=>[[[207,153],[204,159],[51,35]],[[ 104,125],[67,172],[141,217]]],en=>644508566,eo=>123,ep=>434979697,ev=>{eq=>1973032761,er=>5945,es=>1973032761,et=>1973032761,eu=>'8996495334923966265'},ew=>{eq=> 39391232,er=>4096,es=>39391232,et=>39391232,eu=>'6206519744700944384'},ex=>40583817},ey=>{ez=>-2058853707,fa=>2236113589,fn=>{fb=>-2058853707,fc=>-2058853707, fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773',fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[-75],[98],[72] ],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fo=>{fb=>-2058853707,fc=>-2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773',fh=> '4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[-75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fp=> '4565936802120622773',fq=>6529,fr=>[6529,33363],fs=>6529,ft=>2186484097,fu=>[[2186484097,2521907956],[3234023456,1514549549],[3467047428,259084670]],fv=> -2108483199,fw=>-127,fx=>129,fy=>129,fz=>'10831512196728691073',ga=>'10831512196728691073',gb=>6529,gc=>6529,gd=>6529,ge=>-127,gf=>-127,gg=>[-127,25,83],gh=> '10831512196728691073',gi=>2186484097,gj=>2186484097,gk=>2186484097,gl=>['-7615231876980860543'],gu=>{gm=>-2108483199,gn=>-2108483199,go=>129,gp=> '-7615231876980860543',gq=>-2108483199,gr=>-127,gs=>2186484097,gt=>'10831512196728691073'},gv=>[[{gm=>-2108483199,gn=>-2108483199,go=>129,gp=> '-7615231876980860543',gq=>-2108483199,gr=>-127,gs=>2186484097,gt=>'10831512196728691073'},{gm=>-1060943840,gn=>-1060943840,go=>32,gp=>'6504940784360572960',gq=> -1060943840,gr=>32,gs=>3234023456,gt=>'6504940784360572960'}]],gw=>['-7615231876980860543','6504940784360572960'],gx=>-827919868,gy=>259084670,gz=>614360598,ha=> [94,-25],hb=>64,hc=>2714925170,hd=>42,he=>[[[[3248110237,1407856649],[3244969590,817608174]]],[[[2727103593,203558560],[1376236662,3033466572]]]],hf=>811060806, hg=>4183907179,ii=>{hh=>29492,hi=>2868993721,ht=>{hj=>1061963468,hk=>1061963468,hl=>[[[1061963468,1258121585,1218656662],[4134212407,3064741332,3010883849],[ 1920302583,1140071787,3682036576]],[[3162527783,1928863549,137523167],[2669629166,511245195,2119666883],[1690855596,2820491278,2673486098]],[[3242650213, 528778145,2437863058],[1902769377,821941405,3486965547],[866110617,1132292131,2530839980]]],hm=>18124,hn=>1061963468,ho=>'5403591063028647628',hp=>1061963468, hq=>'5403591063028647628',hr=>'5403591063028647628',hs=>[[1061963468,1258121585],[1218656662,4134212407],[3064741332,3010883849]]},hu=>{hj=>2066115179,hk=> 2066115179,hl=>[[[2066115179,434979697,1973032761],[2094659799,39391232,1445067987],[40583817,1580995961,168426868]],[[739844825,2609835361,529970473],[ 2590699064,2047389645,4275757564],[1599852312,639393769,1096378874]],[[4048258895,3751173167,4265567420],[2631701798,1591186106,3448256614],[4099862281, 257892341,478367088]]],hm=>27243,hn=>2066115179,ho=>'1868223575105104491',hp=>2066115179,hq=>'1868223575105104491',hr=>'1868223575105104491',hs=>[[2066115179, 434979697],[1973032761,2094659799],[39391232,1445067987]]},hv=>114,hw=>44,hx=>[-988190303],ig=>[[[{hy=>23748,hz=>23748,ia=>196,ib=>196,ic=>196,id=>196,ie=> '11365169102163303620'}]],[[{hy=>24941,hz=>24941,ia=>109,ib=>109,ic=>109,id=>109,ie=>'13567870743850475885'}]],[[{hy=>-11190,hz=>-11190,ia=>74,ib=>74,ic=>74,id=> 74,ie=>'17173701045531300938'}]]],ih=>{hy=>10191,hz=>10191,ia=>207,ib=>207,ic=>207,id=>207,ie=>'7847850852181682127'}},ij=>{hh=>-11566,hi=>1697162977,ht=>{hj=> 1529047093,hk=>1529047093,hl=>[[[1529047093,1371903687,2290446858],[165220430,149661630,2108746580],[4227600348,1239766853,582330105]],[[3693804236,2766939574, 1417610455],[2395257232,4211233639,3529571372],[2818993171,2702852244,3165192387]],[[229373297,2696981457,4274564980],[1463793521,494773502,1954307227],[ 1623627362,3961113055,6579173]]],hm=>26677,hn=>1529047093,ho=>'5892281470455867445',hp=>1529047093,hq=>'5892281470455867445',hr=>'5892281470455867445',hs=>[[ 1529047093,1371903687],[2290446858,165220430],[149661630,2108746580]]},hu=>{hj=>1097505666,hk=>1097505666,hl=>[[[1097505666,4184318197,3895793435],[3424416027, 761365779,1347692042],[3429054781,1339091116,1942950585]],[[30830267,2447616607,1052925947],[4232344086,4272590830,3481479692],[2458973249,2645788579, 1467715989]],[[3226244056,346641273,2370569288],[3060102578,2433158768,1341821256],[243460333,2573511341,4035709670]]],hm=>-25726,hn=>1097505666,ho=> '-475234260439360638',hp=>1097505666,hq=>'-475234260439360638',hr=>'-475234260439360638',hs=>[[1097505666,4184318197],[3895793435,3424416027],[761365779, 1347692042]]},hv=>225,hw=>27,hx=>[-1991215222],ig=>[[[{hy=>-25750,hz=>-25750,ia=>106,ib=>106,ic=>106,id=>106,ie=>'8673948681434405738'}]],[[{hy=>-30676,hz=> -30676,ia=>44,ib=>44,ic=>44,id=>44,ie=>'10097157064263724'}]],[[{hy=>-8752,hz=>-8752,ia=>208,ib=>208,ic=>208,id=>208,ie=>'6718379304003558864'}]]],ih=>{hy=> 10341,hz=>10341,ia=>101,ib=>101,ic=>101,id=>101,ie=>'11657439497090705509'}},ik=>{hh=>10603,hi=>351280026,ht=>{hj=>-1346672415,hk=>2948294881,hl=>[[[2948294881, 3655360865,3346613230],[2450346747,3648337199,2496835080],[1565847668,139126258,817237115]],[[2909240466,270852330,218837925],[1405537528,2956139561,511590166], [148058538,3944296135,1812827861]],[[3071804446,2054413311,830502626],[2467574175,4131893030,2775911303],[2721643314,3619447352,585841810]]],hm=>26849,hn=> -1346672415,ho=>'-2747088700507985695',hp=>2948294881,hq=>'-2747088700507985695',hr=>'-2747088700507985695',hs=>[[2948294881,3655360865],[3346613230,2450346747] ,[3648337199,2496835080]]},hu=>{hj=>-159562305,hk=>4135404991,hl=>[[[4135404991,3200800378,3155438837],[1062373975,3564703064,3472097201],[3126548990, 3463059680,1822581411]],[[2222092088,1186625912,1616193189],[821530386,1163541316,2890860158],[2123178588,2115744415,3271129554]],[[133189936,1926609708, 4160372370],[2380388374,2210390220,1565437161],[2144223499,2858829409,3900126922]]],hm=>17855,hn=>-159562305,ho=>'-4699411125039708737',hp=>4135404991,hq=> '-4699411125039708737',hr=>'-4699411125039708737',hs=>[[4135404991,3200800378],[3155438837,1062373975],[3564703064,3472097201]]},hv=>221,hw=>4,hx=>[1108146278], ig=>[[[{hy=>21726,hz=>21726,ia=>222,ib=>222,ic=>222,id=>222,ie=>'13843293169098642654'}]],[[{hy=>-21139,hz=>-21139,ia=>109,ib=>109,ic=>109,id=>109,ie=> '17996553021379685741'}]],[[{hy=>-27813,hz=>-27813,ia=>91,ib=>91,ic=>91,id=>91,ie=>'17813452546388300635'}]]],ih=>{hy=>-14352,hz=>-14352,ia=>240,ib=>240,ic=> 240,id=>240,ie=>'2588399536815785968'}},iu=>{il=>2329090767,im=>2329090767,in=>-49,io=>-49,ip=>-49,iq=>-1965876529,ir=>[[2329090767,1226501598],[1007219180, 4127599504],[209800661,84792733]],is=>2329090767,it=>2329090767},iv=>2329090767,iw=>2329090767,ix=>207,iy=>207,iz=>207,ja=>207,jb=>207,jc=>6863,jd=>6863,je=> '5267784254230829775',jf=>207,jg=>207,jr=>{jh=>-1965876529,ji=>[[[['5267784254230829775','17727904881673040364','364182015383260629'],['17912600136945136513', '15372549561020508183','3706597232105136756'],['165826160576807448','9159281194154625044','10539241801784512225']]]],jj=>207,jk=>-1965876529,jl=>-1965876529,jm=> 2329090767,jn=>-49,jo=>-49,jp=>'5267784254230829775',jq=>6863},js=>{jh=>-1965876529,ji=>[[[['5267784254230829775','17727904881673040364','364182015383260629'],[ '17912600136945136513','15372549561020508183','3706597232105136756'],['165826160576807448','9159281194154625044','10539241801784512225']]]],jj=>207,jk=> -1965876529,jl=>-1965876529,jm=>2329090767,jn=>-49,jo=>-49,jp=>'5267784254230829775',jq=>6863},jt=>{ab=>'5267784254230829775',be=>{ac=>2329090767,ad=> 1226501598,ae=>1007219180,af=>[11152,-2554],ag=>19925,ah=>[[[-127]],[[12]]],ai=>'7366327138490635677',aj=>[[['-1966128997648148757','5841910289332061280'],[ '-5501777960565179765','-2918182939016748541'],['6147500221767896503','-952088960241047404']],[['-4113729762056216629','661121419905120185'],[ '2484523362500116246','342043602930306034'],['-4289663538999748879','-4264620330907031332']],[['-1158642252517858277','-4430592456475973639'],[ '-4842103161220413557','-5621018274660407363'],['8667343833828280883','8156967013470161822']]],ak=>'-5334040525841725014',al=>122,am=>-92,an=>10,ao=>2448398173, ap=>-1965876529,aq=>2329090767,ar=>1226501598,as=>[[1007219180,4127599504]],at=>[209800661,84792733,1715106689],au=>235,av=>86,aw=>63638,ax=>[[[ '-3074194512689043433','3706597232105136756']]],ay=>'165826160576807448',az=>[[['9159281194154625044','10539241801784512225','12587525550568472610'],[ '13463713094558095507','12248241869207422573','4204967811668954325'],['2880499398591065816','7665312231927057853','10730428763848377959']],[[ '10896855096569343234','6172543429877391266','2225666336721036500'],['11061344483177013673','177834591787718475','1705326774049791560'],['14630687186412482151', '13646984094128510813','547002114926405607']]],ba=>'14762966666846027756',bb=>-1970104775,bc=>'5267784254230829775',bd=>[[[6863],[35539],[60894]]]},db=>{bf=> 2329090767,bg=>2329090767,bo=>{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=>-1965876529, bn=>-1965876529},bp=>{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=>-1965876529,bn=> -1965876529},bq=>[[{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=>-1965876529,bn=> -1965876529},{bh=>[[-112,43,6]],bi=>-112,bj=>4127599504,bk=>[[-167367792,209800661,84792733]],bl=>[-167367792,209800661],bm=>-167367792,bn=>-167367792}],[{bh=>[ [-127,115,58]],bi=>-127,bj=>1715106689,bk=>[[1715106689,-124365077,-457775081]],bl=>[1715106689,-124365077],bm=>1715106689,bn=>1715106689},{bh=>[[96,68,86]],bi=> 96,bj=>3579200608,bk=>[[-715766688,1360175732,863009419]],bl=>[-715766688,1360175732],bm=>-715766688,bn=>-715766688}]],br=>[-1965876529,1226501598,1007219180], bs=>[[-1965876529,1226501598,1007219180],[-167367792,209800661,84792733],[1715106689,-124365077,-457775081]],bt=>[[-715766688,1360175732,863009419],[ -1280982504,38609411,-679442412],[2132561335,1431326433,-1841108844]],bu=>34,bv=>-13952,bw=>[242,203,223],bx=>412331695,by=>-1212561687,bz=> '9157516980216773336',ca=>3436554746,cb=>200417914,cc=>785922651,cd=>'5267784254230829775',cn=>{ce=>2329090767,cf=>2329090767,cg=>2329090767,ch=> '5267784254230829775',ci=>-1965876529,cj=>[[6863,35539]],ck=>[[[[6863,35539],[60894,18714],[61932,15368]],[[11152,62982],[19925,3201],[54685,1293]]]],cl=> -1965876529,cm=>[[[[-1965876529]]],[[[1226501598]]],[[[1007219180]]]]},co=>6863,cp=>[35539],cq=>60894,cr=>[[18714],[61932],[15368]],cs=>11152,ct=>-2554,cu=>[[ 19925,3201,-10851],[1293,29569,26170]],cv=>22251,cw=>63638,cx=>23,cy=>232,cz=>-6986,da=>[[[[17504],[-10922]]],[[[-23948],[20754]]],[[[31371],[13168]]]]},dc=> {bf=>2329090767,bg=>2329090767,bo=>{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=> -1965876529,bn=>-1965876529},bp=>{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=> -1965876529,bn=>-1965876529},bq=>[[{bh=>[[-49,26,-45]],bi=>-49,bj=>2329090767,bk=>[[-1965876529,1226501598,1007219180]],bl=>[-1965876529,1226501598],bm=> -1965876529,bn=>-1965876529},{bh=>[[-112,43,6]],bi=>-112,bj=>4127599504,bk=>[[-167367792,209800661,84792733]],bl=>[-167367792,209800661],bm=>-167367792,bn=> -167367792}],[{bh=>[[-127,115,58]],bi=>-127,bj=>1715106689,bk=>[[1715106689,-124365077,-457775081]],bl=>[1715106689,-124365077],bm=>1715106689,bn=>1715106689}, {bh=>[[96,68,86]],bi=>96,bj=>3579200608,bk=>[[-715766688,1360175732,863009419]],bl=>[-715766688,1360175732],bm=>-715766688,bn=>-715766688}]],br=>[-1965876529, 1226501598,1007219180],bs=>[[-1965876529,1226501598,1007219180],[-167367792,209800661,84792733],[1715106689,-124365077,-457775081]],bt=>[[-715766688,1360175732, 863009419],[-1280982504,38609411,-679442412],[2132561335,1431326433,-1841108844]],bu=>34,bv=>-13952,bw=>[242,203,223],bx=>412331695,by=>-1212561687,bz=> '9157516980216773336',ca=>3436554746,cb=>200417914,cc=>785922651,cd=>'5267784254230829775',cn=>{ce=>2329090767,cf=>2329090767,cg=>2329090767,ch=> '5267784254230829775',ci=>-1965876529,cj=>[[6863,35539]],ck=>[[[[6863,35539],[60894,18714],[61932,15368]],[[11152,62982],[19925,3201],[54685,1293]]]],cl=> -1965876529,cm=>[[[[-1965876529]]],[[[1226501598]]],[[[1007219180]]]]},co=>6863,cp=>[35539],cq=>60894,cr=>[[18714],[61932],[15368]],cs=>11152,ct=>-2554,cu=>[[ 19925,3201,-10851],[1293,29569,26170]],cv=>22251,cw=>63638,cx=>23,cy=>232,cz=>-6986,da=>[[[[17504],[-10922]]],[[[-23948],[20754]]],[[[31371],[13168]]]]},dd=> 6863,dj=>{de=>-1965876529,df=>[[1226501598,1007219180,-167367792],[209800661,84792733,1715106689],[-124365077,-457775081,-715766688]],dg=>1360175732,dh=>[[ 863009419,3013984792,38609411],[3615524884,2132561335,1431326433]],di=>-1841108844},dk=>-32734,dl=>[[-3383],[-8245]],dm=>[[412331695,-1212561687,-965887272],[ 2132150572,-858412550,200417914]],dn=>785922651,dp=>2532377791,dq=>230500345,dr=>120,ds=>-60,dt=>-36,du=>1735024808,dv=>6,dw=>6,dx=>[[-12026,7108],[-5596,660],[ -5203,-1553]],dy=>6,dz=>6,ea=>465883398,eb=>[[465883398,43313700,-101717075],[-1567147673,-1950186657,-732583609],[-1111700124,-1457593561,867302945]],ec=> 33226,ed=>19353,ee=>2658683031,ef=>30667,eg=>2,eh=>72,ei=>94,ej=>28979,ek=>-30294,el=>[[[170,23],[103,174]],[[249,181],[122,164]],[[10,203],[93,151]]],em=>[[[ 239,145],[186,211],[99,189]],[[231,103],[147,127],[134,87]]],en=>1072433047,eo=>74,ep=>3768055624,ev=>{eq=>-1835648564,er=>14796,es=>-1835648564,et=> -1835648564,eu=>'2823242990084307404'},ew=>{eq=>-573876304,er=>22448,es=>-573876304,et=>-573876304,eu=>'-8918013881456306256'},ex=>744959621},ju=> '5267784254230829775',jv=>'5267784254230829775',jw=>6863,jx=>6863,jy=>[[[[6863,35539,60894]],[[18714,61932,15368]]],[[[11152,62982,19925]],[[3201,54685,1293]]], [[[29569,26170,22251]],[[63638,59415,58550]]]],jz=>6863,ka=>207,kb=>207},kc=>{mg=>{kd=>-2058853707,ke=>'5987959116413106004',kf=>1363342466,kg=>3276284054,kh=> 11712,ki=>49,kw=>{kj=>[[-1494088614,1901166286],[-1637476849,1088904740],[-1580042126,-1707434710]],kk=>[-1494088614],kl=>2800878682,km=>2800878682,kn=>[[ 2800878682,1901166286]],ko=>'8165447025428661338',kp=>['8165447025428661338','4676810249416873487','-7333376236790318990'],kq=>'8165447025428661338',kr=> '8165447025428661338',ks=>[-1494088614],kt=>90,ku=>90,kv=>-1494088614},kx=>'7660190118987172289',ky=>'10109570921568530113',kz=>-63,la=>3149262529,lb=> '-8337173152141021503',lc=>['-8337173152141021503','555198448556482722'],ld=>[[['10109570921568530113','555198448556482722','6327072268883512402']],[[ '13363082765023275824','8160324916783808862','3983613338139164009']]],le=>3149262529,lf=>[[3149262529,2353817904]],lg=>3149262529,lh=>-4415,lp=>[[{li=>27411,lj=> [[27411]],lk=>'699936173668592403',ll=>'699936173668592403',lm=>[[[-722048237,162966589,-139233679],[1802663293,1615066141,668694379],[1035763800,-546113505, -301452689]]],ln=>27411,lo=>[['699936173668592403'],['7742379893290399345']]},{li=>8014,lj=>[[8014]],lk=>'14059808108471852878',ll=>'14059808108471852878',lm=>[ [[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]]],ln=>8014,lo=>[['14059808108471852878'],[ '1037174166098171788']]}],[{li=>27124,lj=>[[27124]],lk=>'3112266432129362420',ll=>'3112266432129362420',lm=>[[[-1653511692,724630996,-1714432289],[590585804, -1404863128,1805048205],[1903896170,958000451,-680158697]]],ln=>27124,lo=>[['3112266432129362420'],['2536546716242400991']]},{li=>-9736,lj=>[[-9736]],lk=> '15204813217218746872',ll=>'15204813217218746872',lm=>[[[8182264,-754820848,-1990843908],[2030201666,1952332821,-653653507],[1630279970,698060525,941594293]]], ln=>55800,lo=>[['15204813217218746872'],['8719649762058838524']]}]],lq=>{li=>27374,lj=>[[27374]],lk=>'18192863195878288110',ll=>'18192863195878288110',lm=>[[[ -845518098,-59111249,419355361],[-379626545,-98165665,1329682793],[804342663,-1126197668,654196580]]],ln=>27374,lo=>[['18192863195878288110'],[ '16816260478660434657']]},lr=>'7376570264875490453',ls=>'17722894814364403768',lt=>31,lu=>28687,lv=>-31923,lw=>28,lx=>114,ly=>[[[[44],[161]],[[105],[25]],[[197] ,[196]]]],lz=>92,ma=>-1187965622,mb=>-1621004899,mc=>1254264397,md=>[['6142378113139755708'],['-1645285875830501394']],me=>[53868],mf=>[57810,10406,13669]},mh=> {kd=>-950328472,ke=>'5658919656636925334',kf=>3188316432,kg=>1409870759,kh=>-20245,ki=>125,kw=>{kj=>[[1174141967,-112597673],[-870140506,-1227085062],[ -677057499,-1873510652]],kk=>[1174141967],kl=>1174141967,km=>1174141967,kn=>[[1174141967,4182369623]],ko=>'-483603321966560241',kp=>['-483603321966560241', '-5270290207275305562','-8046666975429727195'],kq=>'-483603321966560241',kr=>'-483603321966560241',ks=>[1174141967],kt=>15,ku=>15,kv=>1174141967},kx=> '3241186914066154681',ky=>'10711818774959513852',kz=>-4,la=>332554492,lb=>'-7734925298750037764',lc=>['-7734925298750037764','8195611242654669376'],ld=>[[[ '10711818774959513852','8195611242654669376','8403928748852620277']],[['18327187265731610799','7094432050196610468','16567645484015994518']]],le=>332554492,lf=> [[332554492,2494039660]],lg=>332554492,lh=>24828,lp=>[[{li=>25699,lj=>[[25699]],lk=>'17672523628912075875',ll=>'17672523628912075875',lm=>[[[-2113903517, -180262245,469329824],[468202775,332143729,170746245],[1028674598,-1395891399,-1185951512]]],ln=>25699,lo=>[['17672523628912075875'],['2010915606990776224']]}, {li=>-12526,lj=>[[-12526]],lk=>'6845988679659540242',ll=>'6845988679659540242',lm=>[[[-1150038254,1593955950,-74325078],[373211743,-285457294,218016399],[ 1104118570,-1550675724,-1784827001]]],ln=>53010,lo=>[['6845988679659540242'],['1602932234888799146']]}],[{li=>31633,lj=>[[31633]],lk=>'8773096271991241617',ll=> '8773096271991241617',lm=>[[[-665355375,2042645651,1209313619],[-1299362812,1891001717,1217464078],[-313525615,-1391557912,-426154838]]],ln=>31633,lo=>[[ '8773096271991241617'],['12866023291740268883']]},{li=>-29686,lj=>[[-29686]],lk=>'5798254897622191114',ll=>'5798254897622191114',lm=>[[[-504329206,1350011419, -577017207],[1611554436,243805304,601837460],[2011025408,1014653353,-1289198243]]],ln=>35850,lo=>[['5798254897622191114'],['6921573602061675145']]}]],lq=>{li=> 30070,lj=>[[30070]],lk=>'11108528298467751286',ll=>'11108528298467751286',lm=>[[[-947161738,-1708561503,-518721509],[1638906728,-287711135,-70813373],[ 798100818,148469045,1955910318]]],ln=>30070,lo=>[['11108528298467751286'],['7039050801730613275']]},lr=>'8865418217952990448',ls=>'16910285960572352012',lt=> -32,lu=>-23280,lv=>2867,lw=>13,lx=>248,ly=>[[[[204],[198]],[[83],[41]],[[28],[51]]]],lz=>176,ma=>-1440842177,mb=>-955722959,mc=>3588954414,md=>[[ '-20521267330544242'],['-6975653099726015525']],me=>[5169],mf=>[9875,18351,34806]},mi=>{kd=>849704203,ke=>'-7865611094136309509',kf=>3206736700,kg=>2062974277, kh=>-14250,ki=>190,kw=>{kj=>[[1471943724,1480544906],[-1311475443,-19991553],[-524657831,-1546753512]],kk=>[1471943724],kl=>1471943724,km=>1471943724,kn=>[[ 1471943724,1480544906]],ko=>'6358891953001337900',kp=>['6358891953001337900','-85863063347758835','-6643255745242834087'],kq=>'6358891953001337900',kr=> '6358891953001337900',ks=>[1471943724],kt=>44,ku=>44,kv=>1471943724},kx=>'8684191803490738786',ky=>'1324151914916919929',kz=>121,la=>2772875897,lb=> '1324151914916919929',lc=>['1324151914916919929','9098777832765585295'],ld=>[[['1324151914916919929','9098777832765585295','11492778477819285254']],[[ '3513644960920247218','10552731876756811857','14739685473668037182']]],le=>2772875897,lf=>[[2772875897,308303142]],lg=>2772875897,lh=>-17799,lp=>[[{li=>-16416, lj=>[[-16416]],lk=>'818897211810365408',ll=>'818897211810365408',lm=>[[[-377241632,190664364,1635765825],[-894802362,-571967690,217605636],[-1219174846, 490851033,-777163328]]],ln=>49120,lo=>[['818897211810365408'],['14603597194171764289']]},{li=>-24700,lj=>[[-24700]],lk=>'13876536005094907780',ll=> '13876536005094907780',lm=>[[[-1063673980,-1064084487,907589138],[-1329073929,-338187728,-753217757],[451796618,150072393,103518268]]],ln=>40836,lo=>[[ '13876536005094907780'],['12738415015595914770']]}],[{li=>-10762,lj=>[[-10762]],lk=>'996875569566963190',ll=>'996875569566963190',lm=>[[[-2125605386,232103180, 980648197],[-1772688538,-1226303496,1447321828],[312636629,1887079249,-1514006477]]],ln=>54774,lo=>[['996875569566963190'],['10833104777986146565']]},{li=>947, lj=>[[947]],lk=>'9261674633803989939',ll=>'9261674633803989939',lm=>[[[1294074803,-2138565630,474855383],[1347346815,1122538581,-914349422],[-1344287758, -384265298,-659047994]]],ln=>947,lo=>[['9261674633803989939'],['5786810507269617623']]}]],lq=>{li=>28090,lj=>[[28090]],lk=>'18050170060185955770',ll=> '18050170060185955770',lm=>[[[751201722,-92334583,2060244393],[1527509538,-1087449030,-107548412],[2014166311,1621679300,-788109462]]],ln=>28090,lo=>[[ '18050170060185955770'],['6560603512098313641']]},lr=>'16982232608490658756',ls=>'9466463712142948847',lt=>-62,lu=>-22201,lv=>-11179,lw=>100,lx=>205,ly=>[[[[ 188],[189]],[[39],[227]],[[30],[169]]]],lz=>33,ma=>-2117454927,mb=>1217874841,mc=>2009833080,md=>[['-6158203612282599422'],['766872758556452631']],me=>[24011], mf=>[61335,47761,25555]},mj=>'-7541411168516577347',ou=>[[{mk=>['16183675675834575879','2823242990084307404'],ml=>'16183675675834575879',mm=> '16183675675834575879',mn=>1245703175,mo=>1245703175,mp=>1245703175,mq=>7,mr=>7,ms=>22448,mt=>56779,mu=>[-9825,-31684],mv=>2218580383,mw=>[[2218580383],[ 744959621]],mx=>[-97],my=>-97,mz=>-97,na=>159,nb=>['3199577211254135199'],nq=>{nc=>'14438937274395260386',nd=>'15337091602469120637',ne=>[[[[ '7838170680078770136'],['6338798129934606725'],['5837070750880514404']],[['12251487722594918884'],['5115129471442097571'],['6301746486302456423']],[[ '10257103587122409201'],['11432276215941873281'],['4466900161961532886']]]],nf=>'1478851282813619424',ng=>-11269,nh=>31765,ni=>-38,nj=>4088505383,nk=> 2960062030,nl=>3243060976,nm=>10376,nn=>'4226654220288043263',no=>13913,np=>1220259753},nr=>[['5016093930777923781']],ns=>'5016093930777923781',nt=>197,nu=>197, nv=>197,nw=>2281885893,nx=>[53445,34818],ny=>-2013081403,nz=>-2013081403,oa=>[[-12091,-30718,-16678],[17820,-15312,17730],[18673,7096,-24234]],ob=>[[[-12091]],[ [-30718]],[[-16678]]],oc=>-59,od=>-59,oe=>-2013081403,of=>-2013081403,og=>[1601761181,2916674639],oh=>-867821129,oi=>-867821129,oj=>[6583,-13242],ok=> '-4101552996699727433',ol=>[['-4101552996699727433','3102304785032962812','1366044192217212050']],om=>[3427146167,3340000071,3907150588],on=>3427146167,oo=> 3427146167,op=>3427146167,oq=>[6583,-13242,23367],or=>6583,os=>[[183],[25]],ot=>183}]],ov=>{mk=>['5371941907818177193','4279241623495376841'],ml=> '5371941907818177193',mm=>'5371941907818177193',mn=>294216361,mo=>294216361,mp=>294216361,mq=>-87,mr=>-87,ms=>42959,mt=>8593,mu=>[-2960,14492],mv=>949810288,mw=> [[949810288],[140253051]],mx=>[112],my=>112,mz=>112,na=>112,nb=>['602382268159030384'],nq=>{nc=>'13044174381705733410',nd=>'11353333398815960393',ne=>[[[[ '12541993899289435977'],['7801119036446620090'],['10686774475928325649']],[['5017575570227502593'],['11603539883796097304'],['291672421789787933']],[[ '7873347163653381746'],['2207224681977750305'],['18182901544486855671']]]],nf=>'-2872480758863845228',ng=>416,nh=>24428,ni=>30864,nj=>619064888,nk=>2494515959, nl=>1293729320,nm=>28699,nn=>'-7225859584689375476',no=>35933,np=>707443017},nr=>[['-7069849110528708104']],ns=>'-7069849110528708104',nt=>248,nu=>248,nv=>248, nw=>257110520,nx=>[12792,3923],ny=>257110520,nz=>257110520,oa=>[[12792,3923,-9807],[-25118,14241,-6318],[-383,21464,13776]],ob=>[[[12792]],[[3923]],[[-9807]]], oc=>-8,od=>-8,oe=>257110520,of=>257110520,og=>[4194482254,1040852765],oh=>515102127,oi=>515102127,oj=>[-10833,7859],ok=>'2388732567121810863',ol=>[[ '2388732567121810863','-3124452557276749942','5974471240480904677']],om=>[515102127,556170141,99966858],on=>515102127,oo=>515102127,op=>515102127,oq=>[-10833, 7859,31645],or=>-10833,os=>[[175],[213]],ot=>175},ow=>[[{mk=>['11919091463328332134','6155978030408304499'],ml=>'11919091463328332134',mm=> '11919091463328332134',mn=>756250982,mo=>756250982,mp=>756250982,mq=>102,mr=>102,ms=>30201,mt=>6654,mu=>[12511,32182],mv=>2109092063,mw=>[[2109092063],[ 2222502851]],mx=>[-33],my=>-33,mz=>-33,na=>223,nb=>['-8901167011288698657'],nq=>{nc=>'16692007906772852064',nd=>'6708136181930382809',ne=>[[[[ '10414879379027654168'],['5104886353663954604'],['4987691728449865754']],[['7876703958831977522'],['11596937235213228256'],['8439105228165753487']],[[ '14195895288439720779'],['993518774371589943'],['1371617209496046918']]]],nf=>'-2486748935767699361',ng=>-12002,nh=>-9902,ni=>31931,nj=>2057143195,nk=> 3409136662,nl=>732065425,nm=>4012,nn=>'1399737936830617073',no=>16478,np=>-412068313},nr=>[['4844999696580905958']],ns=>'4844999696580905958',nt=>230,nu=>230, nv=>230,nw=>3683945446,nx=>[35814,56212],ny=>-611021850,nz=>-611021850,oa=>[[-29722,-9324,-6771],[17212,-12294,-538],[17623,-8453,21690]],ob=>[[[-29722]],[[ -9324]],[[-6771]]],oc=>-26,od=>-26,oe=>-611021850,of=>-611021850,og=>[831694954,2620344901],oh=>-1676782,oi=>-1676782,oj=>[27154,-26],ok=>'8237393673363810834', ol=>[['8237393673363810834','-3874796034764969185','5904006231995333992']],om=>[4293290514,1917917670,851307295],on=>4293290514,oo=>4293290514,op=>4293290514, oq=>[27154,-26,6630],or=>27154,os=>[[18],[106]],ot=>18},{mk=>['11630348401043327038','13148161506419148868'],ml=>'11630348401043327038',mm=> '11630348401043327038',mn=>574113854,mo=>574113854,mp=>574113854,mq=>62,mr=>62,ms=>9750,mt=>39458,mu=>[19508,22681],mv=>1486441524,mw=>[[1486441524],[ 3680499021]],mx=>[52],my=>52,mz=>52,na=>52,nb=>['-2639121144068092876'],nq=>{nc=>'16359781076885346970',nd=>'17788237714188213432',ne=>[[[[ '7962251627858917025'],['13821153652839092987'],['14313091013165502685']],[['16623308207441924895'],['16097847631359265432'],['671083062689840816']],[[ '3726520526298001507'],['2722442135970522801'],['13992419519733415314']]]],nf=>'-8308599325722436829',ng=>26033,nh=>24464,ni=>-22052,nj=>2596093807,nk=> 2943245109,nl=>771119585,nm=>37156,nn=>'-7390520603960795475',no=>32677,np=>280194861},nr=>[['-7368552720364864808']],ns=>'-7368552720364864808',nt=>216,nu=> 216,nv=>216,nw=>1374288600,nx=>[64216,20969],ny=>1374288600,nz=>1374288600,oa=>[[-1320,20969,-23465],[-26179,-31195,6935],[-15747,-23644,-13266]],ob=>[[[-1320]] ,[[20969]],[[-23465]]],oc=>-40,od=>-40,oe=>1374288600,of=>1374288600,og=>[914202297,1509155318],oh=>-1723840868,oi=>-1723840868,oj=>[18076,-26304],ok=> '-2353735976506866020',ol=>[['-2353735976506866020','49943741155026186','-6687191512434498813']],om=>[2571126428,3746945433,1716299018],on=>2571126428,oo=> 2571126428,op=>2571126428,oq=>[18076,-26304,-9831],or=>18076,os=>[[156],[70]],ot=>156}],[{mk=>['2804913380972270176','6755149468347253742'],ml=> '2804913380972270176',mm=>'2804913380972270176',mn=>3801584224,mo=>3801584224,mp=>-493383072,mq=>96,mr=>96,ms=>31448,mt=>15344,mu=>[28162,25967],mv=>1701801474, mw=>[[1701801474],[2106772686]],mx=>[2],my=>2,mz=>2,na=>2,nb=>['9048519788177878530'],nq=>{nc=>'13760932865921548919',nd=>'15266910263688614401',ne=>[[[[ '7549428713010425775'],['13258924011924300374'],['3234583165971657345']],[['412506416670810990'],['14445821402249741849'],['7190222836968138507']],[[ '1515621447174091774'],['7552785512500700527'],['4201611016473581077']]]],nf=>'-6509213150366156519',ng=>17701,nh=>-17525,ni=>-27652,nj=>1689317785,nk=> 377916032,nl=>275490827,nm=>38463,nn=>'5883801467120791418',no=>58789,np=>1636892873},nr=>[['-1835443197966909716']],ns=>'-1835443197966909716',nt=>236,nu=>236, nv=>236,nw=>3553001196,nx=>[32492,54214],ny=>-741966100,nz=>-741966100,oa=>[[32492,-11322,12834],[-6521,29540,-9771],[-12497,18649,23850]],ob=>[[[32492]],[[ -11322]],[[12834]]],oc=>-20,od=>-20,oe=>-741966100,of=>-741966100,og=>[1855393726,2569588873],oh=>1321081611,oi=>1321081611,oj=>[6923,20158],ok=> '-2928144586096370933',ol=>[['-2928144586096370933','4905220483481672811','-3332770059196445227']],om=>[1321081611,3613205507,1860508779],on=>1321081611,oo=> 1321081611,op=>1321081611,oq=>[6923,20158,9219],or=>6923,os=>[[11],[27]],ot=>11},{mk=>['14425617732591794219','4633326486109340785'],ml=>'14425617732591794219', mm=>'14425617732591794219',mn=>3367352363,mo=>3367352363,mp=>-927614933,mq=>43,mr=>43,ms=>16000,mt=>56916,mu=>[-12038,-11531],mv=>3539325178,mw=>[[3539325178],[ 1985992493]],mx=>[-6],my=>-6,mz=>-6,na=>250,nb=>['8529772811075834106'],nq=>{nc=>'17041252131423772173',nd=>'17281217697632179172',ne=>[[[[ '3716558874906634603'],['1408387373839807588'],['11539962297404990163']],[['10374862261784835202'],['8543262886048068457'],['746669084603537704']],[[ '4636683289877871153'],['6144253268885549631'],['16512716235122384837']]]],nf=>'-7607035547628973251',ng=>-10875,nh=>18559,ni=>-7702,nj=>3355239732,nk=> 1447797871,nl=>2619152573,nm=>20844,nn=>'-2396080257624181046',no=>26080,np=>968099228},nr=>[['5914138407948954136']],ns=>'5914138407948954136',nt=>24,nu=>24, nv=>24,nw=>776645144,nx=>[43544,11850],ny=>776645144,nz=>776645144,oa=>[[-21992,11850,15756],[21011,20378,-14394],[23164,15863,-6151]],ob=>[[[-21992]],[[11850]] ,[[15756]]],oc=>24,od=>24,oe=>776645144,of=>776645144,og=>[692945473,2369031733],oh=>617527332,oi=>617527332,oj=>[-18396,9422],ok=>'150744599563778084',ol=>[[ '150744599563778084','7295863233811660065','-2255151335886674237']],om=>[617527332,35097962,3173858593],on=>617527332,oo=>617527332,op=>617527332,oq=>[-18396, 9422,-29334],or=>-18396,os=>[[36],[184]],ot=>36}],[{mk=>['12834375236041492017','10198647014159559848'],ml=>'12834375236041492017',mm=>'12834375236041492017', mn=>441632305,mo=>441632305,mp=>441632305,mq=>49,mr=>49,ms=>25740,mt=>22836,mu=>[1358,12851],mv=>842204494,mw=>[[842204494],[2088828462]],mx=>[78],my=>78,mz=> 78,na=>78,nb=>['8971449932086183246'],nq=>{nc=>'3100540571095045312',nd=>'10134616324406247595',ne=>[[[['3661177626457349346'],['2983063371392552495'],[ '12951570960767208386']],[['7381409803327037584'],['18343752660922507486'],['261616947348401278']],[['12626058829355168892'],['347164616358563822'],[ '14778219856227839895']]]],nf=>'6149374282297029947',ng=>-18324,nh=>-30873,ni=>-20775,nj=>1620897479,nk=>1382478763,nl=>1758865395,nm=>15356,nn=> '63543667013444289',no=>18703,np=>-1134003155},nr=>[['258259052641400511']],ns=>'258259052641400511',nt=>191,nu=>191,nv=>191,nw=>1958229695,nx=>[14015,29880], ny=>1958229695,nz=>1958229695,oa=>[[14015,29880,-31427],[917,-16195,-29370],[-12085,11498,18517]],ob=>[[[14015]],[[29880]],[[-31427]]],oc=>-65,od=>-65,oe=> 1958229695,of=>1958229695,og=>[1266748342,232885002],oh=>-1189873980,oi=>-1189873980,oj=>[-2364,-18157],ok=>'1776072158000445124',ol=>[['1776072158000445124', '-3527596395222212976','6726576737161975436']],om=>[3105093316,413524023,3218398864],on=>3105093316,oo=>3105093316,op=>3105093316,oq=>[-2364,-18157,-8137],or=> -2364,os=>[[196],[246]],ot=>196},{mk=>['3221264723679884746','8155203903338839394'],ml=>'3221264723679884746',mm=>'3221264723679884746',mn=>4268733898,mo=> 4268733898,mp=>-26233398,mq=>-54,mr=>-54,ms=>58818,mt=>36399,mu=>[-6067,11945],mv=>782886989,mw=>[[782886989],[102325939]],mx=>[77],my=>77,mz=>77,na=>77,nb=>[ '439486562320377933'],nq=>{nc=>'303678653994220624',nd=>'419392739270358182',ne=>[[[['6298670066572166311'],['867673612653460018'],['2729328458570201065']],[[ '5845268184039062048'],['3887653117693587018'],['5784765917866617499']],[['4769132199690432622'],['15157629401928009003'],['1930208575943788588']]]],nf=> '-725894943964808452',ng=>-17864,nh=>-6252,ni=>-17101,nj=>1533340876,nk=>3921171577,nl=>615553183,nm=>65284,nn=>'5259133717693365083',no=>36727,np=>-462479114}, nr=>[['3357353003176157639']],ns=>'3357353003176157639',nt=>199,nu=>199,nv=>199,nw=>3018318279,nx=>[57799,46055],ny=>-1276649017,nz=>-1276649017,oa=>[[-7737, -19481,-18748],[11927,17677,-258],[356,28818,-10815]],ob=>[[[-7737]],[[-19481]],[[-18748]]],oc=>-57,od=>-57,oe=>-1276649017,of=>-1276649017,og=>[2226730842, 1730796562],oh=>-2083515820,oi=>-2083515820,oj=>[4692,-31792],ok=>'7379645589389054548',ol=>[['7379645589389054548','8665580719401991415', '-1449147333995714889']],om=>[2211451476,1718207632,2288909559],on=>2211451476,oo=>2211451476,op=>2211451476,oq=>[4692,-31792,-15216],or=>4692,os=>[[84],[18]], ot=>84}]],ox=>17378,oy=>17378,oz=>[[17378,21434],[-11429,-25284]],pa=>17378,pb=>17378,pc=>1404716002,pd=>17378,pe=>-30,pf=>17378,pg=>-19487,ph=>-1524887075,pi=> 2007859186,pj=>[[[-1398621283,530381492],[602247967,5797352],[-1026938941,1998105380]]],pk=>-548908925,pl=>1398103099,pm=>[[[[4078035804,1685329781]],[[ 1941412774,1866379309]]],[[[49555801,2918583508]],[[1409459740,1375800068]]],[[[3215668980,878223248]],[[3026508442,4256184672]]]],pn=>-28,po=>-7,pp=>603440552, pq=>-29042,pr=>2420,ps=>[[['13295975655539673460','17261294399144347125']],[['1159944003302672082','15094050716025274342']],[['11941059351219164561', '18318707258084724724']]],pt=>[3803122036,3095710569],pu=>116,pv=>'-5150768418169878156',pw=>['-5150768418169878156','-1185449674565204491'],px=>2420,py=>2420, pz=>[[2420,-7505]],qi=>{qa=>'15530606823607496767',qb=>'15530606823607496767',qc=>'15530606823607496767',qd=>[['15530606823607496767']],qe=>[[325185599],[ 3616001183]],qf=>325185599,qg=>-4033,qh=>325185599},qj=>-3425,qk=>-3425,ql=>-3425,qm=>-3425,qn=>62111,qo=>159,qp=>'-2549014316366433633',qq=>-3425,qr=>[[ 160952991,-593488644]],qs=>160952991,qt=>1446194779,qu=>176577327,rg=>{qv=>'-2817552609481863067',qw=>'-8211326890911329594',qx=>['-730453007456422400', '-2077001345449549167','584053758541778181'],qy=>227053920,qz=>-1886881147,ra=>[[[[-326485604],[-1132028750],[-59456732]],[[-1904069126],[1661965493],[ 909498008]],[[931429725],[1992645357],[-1427987429]]]],rb=>'3872569357674079319',rc=>'3921346862340546472',rd=>[1373096016,2426506160],re=> '-3042263886796895430',rf=>[['-1262799910416884927'],['9018353371911903260']]},rh=>{qv=>'-8557044895282696815',qw=>'8124866953920742084',qx=>[ '8115186786095954893','6800569074011752832','4420169445721321409'],qy=>910624800,qz=>1084200451,ra=>[[[[2137200089],[2009051515],[-1262562237]],[[675001760],[ -255680385],[-1847761452]],[[-1253590508],[1995746555],[985286951]]]],rb=>'-2782376125907251457',rc=>'6175901324584392034',rd=>[997054611,2687572878],re=> '1245490572801271873',rf=>[['-1200533430289745406'],['-703475056535077921']]},ri=>200,rs=>[{rj=>'11213998157847406293',rk=>[['-7232745915862145323', '-6770694592024883504','-8187594797672514516']],rl=>9941,rm=>9941,rn=>'-7232745915862145323',ro=>107030229,rp=>213,rq=>[213,38,97],rr=>213}],rt=>[{rj=> '2663985558729483112',rk=>[['2663985558729483112','6177664439010616222','2775029539194633594']],rl=>25448,rm=>25448,rn=>'2663985558729483112',ro=>1389847400,rp=> 104,rq=>[104,99,215],rr=>104}],ru=>{rj=>'2956254854145257224',rk=>[['2956254854145257224','95644821796236187','8870539231398025196']],rl=>12040,rm=>12040,rn=> '2956254854145257224',ro=>2128228104,rp=>8,rq=>[8,47,218],rr=>8},rv=>['17459367688069238706']},rw=>{rx=>-2058853707,ry=>-2058853707,uo=>{rz=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[-2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707,sg=> -2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269,sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466, -1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=>2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466, 3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740,2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=> 2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589,to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[ -1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=> -1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286, -1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=> 30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[ [[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589, ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[-1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[ -365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=>129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004', '14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579', '2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[ 1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[[ '5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[[ '13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=> '15345570510587601721',ug=>44093,uh=>[1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50}},up=>[[{rz=>[[ -2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[-2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707, sg=>-2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269,sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466, -1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=>2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466, 3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740,2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=> 2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589,to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[ -1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=> -1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286, -1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=> 30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[ [[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589, ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[-1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[ -365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=>129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004', '14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579', '2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[ 1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[[ '5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[[ '13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=> '15345570510587601721',ug=>44093,uh=>[1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50}}],[{rz=>[[ 525266440,2029751199,1468842782],[-932664194,491261540,1512641192]],sa=>[[525266440,2029751199]],sb=>8,sc=>[8,-18],sd=>60936,se=>60936,sf=>525266440,sg=> 525266440,sh=>[[-4600,8014],[-29793,30971],[-15586,22412]],si=>-4600,sj=>-4600,sk=>'8717715019247054344',sl=>30,sm=>-61,sn=>140,so=>87,sp=>[[-932664194, 491261540]],sq=>[1512641192,1189766559],sr=>2223219137,ss=>525266440,st=>525266440,su=>525266440,sv=>[[[[525266440,2029751199,1468842782],[3362303102,491261540, 1512641192]]],[[[1189766559,2223219137,1322684959],[1777656209,4258569585,3604949808]]]],sw=>'8717715019247054344',sx=>'8717715019247054344',sy=>525266440,sz=> 525266440,ta=>[-4600,8014,-29793],tb=>-4600,tc=>525266440,to=>{td=>[[525266440,2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159, 1322684959]],te=>[[[[-7791,27124]]],[[[-25231,-556]]]],tf=>11056,tg=>-10529,th=>-26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=> 14617,tn=>-26089},tp=>{td=>[[525266440,2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159,1322684959]],te=>[[[[-7791,27124]]],[[[ -25231,-556]]]],tf=>11056,tg=>-10529,th=>-26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=>14617,tn=>-26089},tq=>{td=>[[525266440, 2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159,1322684959]],te=>[[[[-7791,27124]]],[[[-25231,-556]]]],tf=>11056,tg=>-10529,th=> -26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=>14617,tn=>-26089},ub=>{tr=>525266440,ts=>2029751199,tt=>-15586,tu=>3362303102,tv=> 491261540,tw=>4776,tx=>[[[1189766559],[-2071748159],[1322684959]],[[1777656209],[-36397711],[-690017488]],[[-1613981233],[2103976755],[-645026749]]],ty=> 644508566,tz=>123,ua=>2585213209},um=>{uc=>[8,-18,78],ud=>31,ue=>[[['6308631713685408671','2109952251444898942','5110008462292095656'],['5680888644039320001', '18290417097092948369','11514747465221745456']],[['15676375283813327667','17096633384167959446','15706540600550963481'],['2449064304420323452', '4329499668083018070','1811248637296866398']]],uf=>'10859631824568410412',ug=>14367,uh=>[3449449198,4235856047,419355361],ui=>'18025125756859800527',uj=>[ 1329682793],uk=>[-121,75,-15],ul=>47},un=>{uc=>[8,-18,78],ud=>31,ue=>[[['6308631713685408671','2109952251444898942','5110008462292095656'],[ '5680888644039320001','18290417097092948369','11514747465221745456']],[['15676375283813327667','17096633384167959446','15706540600550963481'],[ '2449064304420323452','4329499668083018070','1811248637296866398']]],uf=>'10859631824568410412',ug=>14367,uh=>[3449449198,4235856047,419355361],ui=> '18025125756859800527',uj=>[1329682793],uk=>[-121,75,-15],ul=>47}}],[{rz=>[[-1126197668,654196580,-1164125035],[1717491602,164464696,-168534289]],sa=>[[ -1126197668,654196580]],sb=>92,sc=>[92,-106],sd=>38492,se=>38492,sf=>-1126197668,sg=>-1126197668,sh=>[[-27044,-17185],[16228,9982],[-9067,-17764]],si=>-27044, sj=>-27044,sk=>'2809752919423817308',sl=>149,sm=>-36,sn=>156,so=>186,sp=>[[1717491602,164464696]],sq=>[4126433007,1880055583],sr=>1914471245,ss=>3168769628,st=> 3168769628,su=>3168769628,sv=>[[[[3168769628,654196580,3130842261],[1717491602,164464696,4126433007]]],[[[1880055583,1914471245,426352940],[2958869701, 3107001674,2673962397]]]],sw=>'2809752919423817308',sx=>'2809752919423817308',sy=>3168769628,sz=>3168769628,ta=>[-27044,-17185,16228],tb=>-27044,tc=>3168769628, to=>{td=>[[-1126197668,654196580,-1164125035],[1717491602,164464696,-168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]], tf=>28061,tg=>-24735,th=>-29107,ti=>19138,tj=>[-1512813892,1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},tp=>{td=>[[-1126197668,654196580, -1164125035],[1717491602,164464696,-168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]],tf=>28061,tg=>-24735,th=>-29107, ti=>19138,tj=>[-1512813892,1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},tq=>{td=>[[-1126197668,654196580,-1164125035],[1717491602,164464696, -168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]],tf=>28061,tg=>-24735,th=>-29107,ti=>19138,tj=>[-1512813892, 1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},ub=>{tr=>3168769628,ts=>654196580,tt=>-9067,tu=>1717491602,tv=>164464696,tw=>24303,tx=>[[[ 1880055583],[1914471245],[426352940]],[[-1336097595],[-1187965622],[-1621004899]],[[1254264397],[-1512813892],[1430133849]]],ty=>-1993879570,tz=>54,ua=> 3788690028},um=>{uc=>[92,-106,-33],ud=>-68,ue=>[[['13446865120583892836','706370492384073618','8074777247773646575'],['1831171935767921485', '13344470581406123205','5387024568326122909']],[['6142378113139755708','16801458197879050222','3847526153876329068'],['743592664873247592', '13693714806056977778','15888049585206651815']]],uf=>'17963140751742991375',ug=>46502,uh=>[721079330,3961894620,2131023780],ui=>'167591474026352724',uj=>[ 1627139323],uk=>[-46,19,108],ul=>6},un=>{uc=>[92,-106,-33],ud=>-68,ue=>[[['13446865120583892836','706370492384073618','8074777247773646575'],[ '1831171935767921485','13344470581406123205','5387024568326122909']],[['6142378113139755708','16801458197879050222','3847526153876329068'],[ '743592664873247592','13693714806056977778','15888049585206651815']]],uf=>'17963140751742991375',ug=>46502,uh=>[721079330,3961894620,2131023780],ui=> '167591474026352724',uj=>[1627139323],uk=>[-46,19,108],ul=>6}}]],uq=>-75,ur=>2236113589,us=>25269,ut=>[[34120],[30548]],uu=>16221,uv=>33047,uw=>4102181657,ux=>[ [546722114,767607624,73025073],[2127472370,370110801,1579458150]],uy=>231,vh=>{uz=>[[[[25269,-31416,30548]],[[16221,-32489,21273]],[[-2942,20802,8342]]]],va=>[[ [72,-61],[-64,45],[49,70]]],vb=>90,vc=>4,vd=>[[[-22798,32462],[29009,5647],[-24986,24100]]],ve=>[[16615]],vf=>30834,vg=>'703012593382105554'},vi=>2236113589,vj=> 2236113589,vk=>['4565936802120622773','5855511306112172311','5057874162447032470'],vl=>'8165447025428661338',vm=>'4676810249416873487',vn=>[[[ '-7333376236790318990','7660190118987172289','-8337173152141021503'],['555198448556482722','6327072268883512402','-5083661308686275792'],['8160324916783808862', '3983613338139164009','699936173668592403']],[['7742379893290399345','2872020490439095325','-2345539642843168680'],['-8385949557279149457', '-6017275790039811845','1344356684086429800'],['-6791068790556763607','-2192884860071213949','3112266432129362420']],[['2536546716242400991', '7752623011068607848','4114580608502146666'],['35142559902046743','-8550609472760686320','8385205619132623682'],['7001999158115174909','4044116695233302253', '-253880877831263506']]],vo=>'-1630483595049116959',vp=>95,vq=>28,vr=>[[38],[250],[105]],vs=>2270118233,vt=>1546645835,vu=>-2058853707,vv=>-2058853707,vw=> -2058853707,vx=>'4565936802120622773',vy=>181,vz=>181,wi=>{wa=>'4565936802120622773',wb=>'5855511306112172311',wc=>3276284054,wd=>[[192]],we=>2800878682,wf=> 206,wg=>126,wh=>2657490447},ws=>{wj=>2236113589,wk=>'5987959116413106004',wl=>'14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102], wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214,61121,48053]]},wt=>{wj=>2236113589,wk=>'5987959116413106004',wl=> '14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102],wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214, 61121,48053]]},wu=>'4565936802120622773',wv=>'4565936802120622773',ww=>'4565936802120622773',wx=>[[2236113589,1063090004,1394180375]],wy=>25269,wz=>[[25269, 34120]],xa=>'4565936802120622773',xh=>{xb=>25269,xc=>[['4565936802120622773','5855511306112172311'],['5057874162447032470','8165447025428661338'],[ '4676810249416873487','-7333376236790318990']],xd=>25269,xe=>25269,xf=>-75,xg=>-75},xi=>[['4565936802120622773','5855511306112172311','5057874162447032470'],[ '8165447025428661338','4676810249416873487','-7333376236790318990'],['7660190118987172289','-8337173152141021503','555198448556482722']],xj=> '4565936802120622773',xk=>[[2236113589,1063090004],[1394180375,1363342466]],xl=>181,xm=>181,xn=>[181],xo=>25269,xp=>2236113589,xq=>2236113589,xr=>-2058853707, xs=>[[25269],[34120]],xt=>'4565936802120622773',xu=>['4565936802120622773','5855511306112172311','5057874162447032470'],ye=>{xv=>2236113589,xw=>1063090004,xx=>[ [1394180375],[1363342466],[3276284054]],xy=>11712,xz=>[[[[17969,1114,-22798]]],[[[32462,29009,5647]]]],ya=>102,yb=>[[[[24100,16615],[30834,41426]],[[40234, 39482],[2497,59952]]],[[[30291,27214],[61121,48053]],[[26928,35916],[41122,8718]]],[[[30220,1972],[52306,52998]],[[18100,22478],[27440,24923]]]],yc=>[[13561],[ 47475],[350]],yd=>52395},yf=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],yg=>-2058853707,yh=>-2058853707,yi=>-2058853707,yj=> -2058853707,yk=>25269,yl=>181,ym=>181,yn=>'4565936802120622773',yo=>'4565936802120622773',yp=>'4565936802120622773',yq=>[25269,34120],yr=>181,ys=>2236113589,yt=> 2236113589,yu=>-2058853707,yv=>25269,yw=>25269,yx=>25269,yy=>[[25269,34120,30548]],yz=>25269,za=>25269,zb=>25269,zc=>[[25269,-31416],[30548,16221]],zd=>[[-75],[ 98]],ze=>-75,zf=>[[-2058853707,1063090004],[1394180375,1363342466]],zg=>181,zh=>181,zi=>25269,zj=>'4565936802120622773',zk=>-75,zl=>-75,zm=>25269,zn=>[[ -2058853707,1063090004]],zo=>[181,98,72],zp=>-75,zq=>-75,zr=>-75,zs=>[25269],zt=>-75,zu=>-75,zv=>[[[2236113589,1063090004],[1394180375,1363342466]]],zw=>[[ 2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096],[2800878682,1901166286,2657490447]],zx=>[[181,98,72]],zy=>'4565936802120622773',zz=> 1394180375,aaa=>[1363342466,-1018683242],aab=>1177628096,aac=>[[[[-1494088614]],[[1901166286]],[[-1637476849]]],[[[1088904740]],[[-1580042126]],[[-1707434710]]] ,[[[-365950527]],[[1783526995]],[[-1145704767]]]],aad=>-1941149392,aae=>162,aaf=>[[[160],[14],[34]],[[12],[118],[180]],[[7],[82],[204]]],aar=>[[{aag=>181,aah=>[ [98,72],[133,84],[119,93]],aai=>427890495,aaj=>1123320403,aak=>1210095185,aal=>825082051,aam=>70,aan=>90,aao=>[4,-14],aap=>'7356084020729269926',aaq=> 3881706654},{aag=>64,aah=>[[114,120],[210,161],[42,157]],aai=>163682874,aaj=>1985210928,aak=>4005653070,aal=>1764801461,aam=>76,aan=>-116,aao=>[-94,-96],aap=> '-3723905470225964530',aaq=>1186254598}],[{aag=>206,aah=>[[87,48],[107,91],[97,249]],aai=>1589211956,aaj=>1187818241,aak=>1769029452,aal=>966150909,aam=>163, aan=>72,aao=>[55,19],aap=>'8145242251964249707',aaq=>2113385334},{aag=>117,aah=>[[114,107],[29,244],[67,96]],aai=>668694379,aaj=>1035763800,aak=>3748853791,aal=> -301452689,aam=>78,aan=>31,aao=>[-97,-117],aap=>'-6017275790039811845',aaq=>241485928}],[{aag=>72,aah=>[[29,168],[18,41],[90,159]],aai=>3242650213,aaj=> 528778145,aak=>2437863058,aal=>1902769377,aam=>157,aan=>-44,aao=>[-3,48],aap=>'3719916778220347179',aaq=>1132292131},{aag=>172,aah=>[[141,217],[150,107],[106, 38]],aai=>3980620155,aaj=>2585213209,aak=>3656963957,aal=>1494220924,aam=>2,aan=>-45,aao=>[-4,33],aap=>'4329499668083018070',aaq=>167605342}]],aas=>2236113589, aat=>2236113589,aau=>[[[2236113589,1063090004],[1394180375,1363342466]]]}}}, 2=>{sizeof=>{aa=>230,ey=>1098,kc=>3252,rw=>414},content=>{aa=>{ab=>'4565936802120622773',be=>{ac=>2236113589,ad=>1063090004,ae=>1394180375,af=>[-2942,20802],ag=> 8342,ah=>[[[72]],[[-61]]],ai=>'-6417061733278339648',aj=>[[['-7032909512510964018','-6786229256383406556'],['-1571745542831432406','-4920764503352773037'],[ '2454075466962463024','-3528908605309553140']],[['7015318699935418036','-3698861162604841735'],['-7616997190430405562','-3101173563121949895'],[ '-598004097643795395','6936656258274588029']],[['4448571648049379179','-1294729436797405153'],['-4386935965237698738','1037174166098171788'],[ '7322670651580882248','-7917463919004662038']]],ak=>'-7101778636909228330',al=>212,am=>-3,an=>48,ao=>2580535007,ap=>-2058853707,aq=>2236113589,ar=>1063090004, as=>[[1394180375,1363342466]],at=>[-1018683242,1177628096,-1494088614],au=>206,av=>126,aw=>29009,ax=>[[['4676810249416873487','-7333376236790318990']]],ay=> '7660190118987172289',az=>[[['10109570921568530113','555198448556482722','6327072268883512402'],['13363082765023275824','8160324916783808862', '3983613338139164009'],['699936173668592403','7742379893290399345','2872020490439095325']],[['16101204430866382936','10060794516430402159', '12429468283669739771'],['1344356684086429800','11655675283152788009','16253859213638337667'],['3112266432129362420','2536546716242400991', '7752623011068607848']]],ba=>'4114580608502146666',bb=>-680158697,bc=>'4565936802120622773',bd=>[[[25269],[34120],[30548]]]},db=>{bf=>2236113589,bg=>2236113589, bo=>{bh=>[[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[ [-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=> -126,bj=>1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=> 2800878682,bk=>[[-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=> [[1088904740,-1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527, 1783526995,-1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>-12538,bw=>[180,70,206],bx=>1633381168,by=>-1183632135,bz=>'8160324916783808862',ca=> 2521496937,cb=>927507257,cc=>3572919059,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707, cj=>[[25269,34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[ 1063090004]]],[[[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]] ,cv=>32462,cw=>29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dc=>{bf=>2236113589,bg=>2236113589,bo=>{bh=> [[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98,72]],bi=> -75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=>-126,bj=> 1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=>2800878682,bk=>[ [-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=>[[1088904740, -1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527,1783526995, -1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>-12538,bw=>[180,70,206],bx=>1633381168,by=>-1183632135,bz=>'8160324916783808862',ca=>2521496937,cb=> 927507257,cc=>3572919059,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707,cj=>[[25269, 34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[1063090004]]],[ [[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]],cv=>32462,cw=> 29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dd=>25269,dj=>{de=>-2058853707,df=>[[1063090004,1394180375, 1363342466],[-1018683242,1177628096,-1494088614],[1901166286,-1637476849,1088904740]],dg=>-1580042126,dh=>[[2587532586,3929016769,1783526995],[3149262529, 2353817904,571383970]],di=>129267212},dk=>-13230,dl=>[[-12538],[18100]],dm=>[[1798330318,888758619,22985075],[1279708331,-43421377,-1556507062]],dn=>1796421448, dp=>2889733366,dq=>1987119542,dr=>-77,ds=>-9,dt=>125,du=>-199398542,dv=>67,dw=>67,dx=>[[24643,30571],[10203,-32680],[15804,-2017]],dy=>67,dz=>67,ea=>2003525699, eb=>[[2003525699,-2141706277,-132170308],[846192498,525266440,2029751199],[1468842782,-932664194,491261540]],ec=>4776,ed=>23081,ee=>1189766559,ef=>41409,eg=> -125,eh=>-124,ei=>31,ej=>20182,ek=>-7791,el=>[[[244,105],[113,157]],[[212,253],[48,43]],[[223,214],[207,153]]],em=>[[[204,159],[51,35],[104,125]],[[67,172],[ 141,217],[150,107]]],en=>1903896170,eo=>67,ep=>2585213209,ev=>{eq=>-638003339,er=>55157,es=>-638003339,et=>-638003339,eu=>'6417630005235865461'},ew=>{eq=> 570217218,er=>54018,es=>570217218,et=>570217218,eu=>'7728890913551602434'},ex=>1008040194},ey=>{ez=>-2058853707,fa=>2236113589,fn=>{fb=>-2058853707,fc=> -2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773',fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[ -75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fo=>{fb=>-2058853707,fc=>-2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773', fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[-75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fp=> '4565936802120622773',fq=>21273,fr=>[21273,62594],fs=>21273,ft=>4102181657,fu=>[[4102181657,546722114],[767607624,73025073],[2127472370,370110801]],fv=> -192785639,fw=>25,fx=>25,fy=>25,fz=>'2348153603732165401',ga=>'2348153603732165401',gb=>21273,gc=>21273,gd=>21273,ge=>25,gf=>25,gg=>[25,83,-126],gh=> '2348153603732165401',gi=>4102181657,gj=>4102181657,gk=>4102181657,gl=>['2348153603732165401'],gu=>{gm=>-192785639,gn=>-192785639,go=>25,gp=> '2348153603732165401',gq=>-192785639,gr=>25,gs=>4102181657,gt=>'2348153603732165401'},gv=>[[{gm=>-192785639,gn=>-192785639,go=>25,gp=>'2348153603732165401',gq=> -192785639,gr=>25,gs=>4102181657,gt=>'2348153603732165401'},{gm=>767607624,gn=>767607624,go=>72,gp=>'313640301090620232',gq=>767607624,gr=>72,gs=>767607624,gt=> '313640301090620232'}]],gw=>['2348153603732165401','313640301090620232'],gx=>2127472370,gy=>370110801,gz=>1579458150,ha=>[-25,64],hb=>114,hc=>2636816850,hd=>58, he=>[[[[3929016769,1783526995],[3149262529,2353817904]]],[[[571383970,129267212],[3473329234,1473136308]]]],hf=>1633381168,hg=>3111335161,ii=>{hh=>350,hi=> 1279708331,ht=>{hj=>-43421377,hk=>4251545919,hl=>[[[4251545919,2738460234,1796421448],[2889733366,1987119542,1971189683],[4095568754,2003525699,2153261019]],[[ 4162796988,846192498,525266440],[2029751199,1468842782,3362303102],[491261540,1512641192,1189766559]],[[2223219137,1322684959,1777656209],[4258569585, 3604949808,2680986063],[2103976755,3649940547,644508566]]],hm=>28991,hn=>-43421377,ho=>'-6685146923031498433',hp=>4251545919,hq=>'-6685146923031498433',hr=> '-6685146923031498433',hs=>[[4251545919,2738460234],[1796421448,2889733366],[1987119542,1971189683]]},hu=>{hj=>-314347141,hk=>3980620155,hl=>[[[3980620155, 2585213209,3656963957],[1494220924,570217218,1799522646],[1008040194,167605342,421714186]],[[2397921580,2528455067,1793996831],[145739162,3672243322,1540299006] ,[476047711,1500117542,1267158849]],[[2522623985,1063566559,3700762366],[3616717468,2285397598,1592723917],[1595930100,2202890255,2704044572]]],hm=>29051,hn=> -314347141,ho=>'-7343337883886718597',hp=>3980620155,hq=>'-7343337883886718597',hr=>'-7343337883886718597',hs=>[[3980620155,2585213209],[3656963957,1494220924], [570217218,1799522646]]},hv=>105,hw=>25,hx=>[-1336097595],ig=>[[[{hy=>5450,hz=>5450,ia=>74,ib=>74,ic=>74,id=>74,ie=>'11484581048955770186'}]],[[{hy=>-29107,hz=> -29107,ia=>77,ib=>77,ic=>77,id=>77,ie=>'11949257883889339981'}]],[[{hy=>7257,hz=>7257,ia=>89,ib=>89,ic=>89,id=>89,ie=>'9883096529827142745'}]]],ih=>{hy=>-15050, hz=>-15050,ia=>54,ib=>54,ic=>54,id=>54,ie=>'16272299768853218614'}},ij=>{hh=>10406,hi=>594031973,ht=>{hj=>-979974309,hk=>3314992987,hl=>[[[3314992987, 2238843473,3641724552],[3953638921,2968212488,4228897917],[3847702011,3047618889,721079330]],[[3961894620,2131023780,3300495444],[39020430,1627139323,107746258] ,[440439976,2835399585,2884989372]],[[3232485645,3366941856,1068986878],[2107965015,2086443805,3331744372],[432660320,1684268524,1788576256]]],hm=>-14501,hn=> -979974309,ho=>'-8830984572996499621',hp=>3314992987,hq=>'-8830984572996499621',hr=>'-8830984572996499621',hs=>[[3314992987,2238843473],[3641724552,3953638921], [2968212488,4228897917]]},hu=>{hj=>1738601793,hk=>1738601793,hl=>[[[1738601793,890706937,477174760],[1636111308,1411779117,1664695632],[3504909516,3474110799, 3597581171]],[[3819593473,3261070225,1148327486],[2861559548,2200571134,2431926735],[3012010898,2073138589,1284757591]],[[2840820160,1275349012,1702212237],[ 118386870,4203825297,2196303183],[1688907022,2349524633,2317083120]]],hm=>-2751,hn=>1738601793,ho=>'3825557166473934145',hp=>1738601793,hq=> '3825557166473934145',hr=>'3825557166473934145',hs=>[[1738601793,890706937],[477174760,1636111308],[1411779117,1664695632]]},hv=>119,hw=>80,hx=>[-577017207],ig=> [[[{hy=>24196,hz=>24196,ia=>132,ib=>132,ic=>132,id=>132,ie=>'1047135808882892420'}]],[[{hy=>20372,hz=>20372,ia=>148,ib=>148,ic=>148,id=>148,ie=> '8637288359386894228'}]],[[{hy=>25001,hz=>25001,ia=>169,ib=>169,ic=>169,id=>169,ie=>'12909679782978544041'}]]],ih=>{hy=>30070,hz=>30070,ia=>118,ib=>118,ic=>118, id=>118,ie=>'11108528298467751286'}},ik=>{hh=>-4069,hi=>3144212756,ht=>{hj=>-530488913,hk=>3764478383,hl=>[[[3764478383,2034495193,223542215],[1966419858, 3534620889,1425044628],[1256583773,3054271240,1736217136]],[[618719917,187933968,3335321613],[857483603,2118063792,3543247390],[422496008,227464683,402923116]], [[1943797687,2155274874,338796337],[1202661011,1963689974,955986597],[3160553634,3946615511,2101722914]]],hm=>25007,hn=>-530488913,ho=>'8738090321568686511',hp=> 3764478383,hq=>'8738090321568686511',hr=>'8738090321568686511',hs=>[[3764478383,2034495193],[223542215,1966419858],[3534620889,1425044628]]},hu=>{hj=> -933856522,hk=>3361110774,hl=>[[[3361110774,338490814,1384798140],[2030917695,4093620692,1532624590],[1780015290,2724373454,1919891564]],[[3128522884, 1428596038,4153348704],[1513833520,1325825605,2367839404],[464691070,4185510526,4031852738]],[[3585813511,4198404722,3789035255],[3219180685,1319954819, 3460369245],[1715888511,2000079530,1711594984]]],hm=>31478,hn=>-933856522,ho=>'1453806979487529718',hp=>3361110774,hq=>'1453806979487529718',hr=> '1453806979487529718',hs=>[[3361110774,338490814],[1384798140,2030917695],[4093620692,1532624590]]},hv=>248,hw=>12,hx=>[-1219174846],ig=>[[[{hy=>-13607,hz=> -13607,ia=>217,ib=>217,ic=>217,id=>217,ie=>'15108852996789881561'}]],[[{hy=>-24700,hz=>-24700,ia=>132,ib=>132,ic=>132,id=>132,ie=>'13876536005094907780'}]],[[ {hy=>-18926,hz=>-18926,ia=>18,ib=>18,ic=>18,id=>18,ie=>'12738415015595914770'}]]],ih=>{hy=>-21968,hz=>-21968,ia=>48,ib=>48,ic=>48,id=>48,ie=> '15211698444584856112'}},iu=>{il=>451796618,im=>451796618,in=>-118,io=>-118,ip=>-118,iq=>451796618,ir=>[[451796618,150072393],[103518268,2169361910],[232103180, 980648197]],is=>451796618,it=>451796618},iv=>451796618,iw=>451796618,ix=>138,iy=>138,iz=>138,ja=>138,jb=>138,jc=>56970,jd=>56970,je=>'644556020419255946',jf=> 138,jg=>138,jr=>{jh=>451796618,ji=>[[[['644556020419255946','9317338456741613628','4211851935228468492'],['13179810665941363558','1342764098534007012', '11944135770949454673'],['9261674633803989939','5786810507269617623','14519643210225587285']]]],jj=>138,jk=>451796618,jl=>451796618,jm=>451796618,jn=>-118,jo=> -118,jp=>'644556020419255946',jq=>-8566},js=>{jh=>451796618,ji=>[[[['644556020419255946','9317338456741613628','4211851935228468492'],['13179810665941363558', '1342764098534007012','11944135770949454673'],['9261674633803989939','5786810507269617623','14519643210225587285']]]],jj=>138,jk=>451796618,jl=>451796618,jm=> 451796618,jn=>-118,jo=>-118,jp=>'644556020419255946',jq=>-8566},jt=>{ab=>'644556020419255946',be=>{ac=>451796618,ad=>150072393,ae=>103518268,af=>[-10762,-32435] ,ag=>-25332,ah=>[[[-43]],[[13]]],ai=>'-7613639295723405051',aj=>[[['6216199921115600888','8104943659727877333'],['5558008960243603507','2039488342470956034'],[ '4821266495240593791','-5773671953642544494']],[['-2830589576813702226','-396574013523595846'],['6560603512098313641','-461916909069215686'],[ '6965059560114339111','-1575103437538433174']],[['4136549591609574036','-6248872290409274729'],['-2078484084410756011','-9094399657955448546'],[ '8632167350236826521','-6158203612282599422']]],ak=>'766872758556452631',al=>203,am=>93,an=>-105,ao=>1674820241,ap=>451796618,aq=>451796618,ar=>150072393,as=>[[ 103518268,2169361910]],at=>[232103180,980648197,-1772688538],au=>248,av=>23,aw=>46824,ax=>[[['1342764098534007012','-6502608302760096943']]],ay=> '9261674633803989939',az=>[[['5786810507269617623','14519643210225587285','16796337188762536946'],['3226386832324803014','8848682293905004041', '13776186055320138274'],['8650778438637383940','15061839710373076164','16982232608490658756']],[['9466463712142948847','14800187739823639490', '18312103509990292924'],['5230732614893712305','3701475119182093944','17991430912734767729'],['17264370823186381493','10621713046786259601', '5350254399687460479']]],ba=>'10562693528148244296',bb=>657337482,bc=>'644556020419255946',bd=>[[[56970],[6893],[60489]]]},db=>{bf=>451796618,bg=>451796618,bo=> {bh=>[[-118,-34,-19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[451796618,150072393],bm=>451796618,bn=>451796618},bp=>{bh=>[[-118,-34, -19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[451796618,150072393],bm=>451796618,bn=>451796618},bq=>[[{bh=>[[-118,-34,-19]],bi=>-118, bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[451796618,150072393],bm=>451796618,bn=>451796618},{bh=>[[-10,-43,77]],bi=>-10,bj=>2169361910,bk=>[[ -2125605386,232103180,980648197]],bl=>[-2125605386,232103180],bm=>-2125605386,bn=>-2125605386}],[{bh=>[[102,-21,86]],bi=>102,bj=>2522278758,bk=>[[-1772688538, -1226303496,1447321828]],bl=>[-1772688538,-1226303496],bm=>-1772688538,bn=>-1772688538},{bh=>[[-43,116,-94]],bi=>-43,bj=>312636629,bk=>[[312636629,1887079249, -1514006477]],bl=>[312636629,1887079249],bm=>312636629,bn=>312636629}]],br=>[451796618,150072393,103518268],bs=>[[451796618,150072393,103518268],[-2125605386, 232103180,980648197],[-1772688538,-1226303496,1447321828]],bt=>[[312636629,1887079249,-1514006477],[1294074803,-2138565630,474855383],[1347346815,1122538581, -914349422]],bu=>-14,bv=>-20513,bw=>[174,147,24],bx=>-659047994,by=>751201722,bz=>'8848682293905004041',ca=>1527509538,cb=>3207518266,cc=>4187418884,cd=> '644556020419255946',cn=>{ce=>451796618,cf=>451796618,cg=>451796618,ch=>'644556020419255946',ci=>451796618,cj=>[[56970,6893]],ck=>[[[[56970,6893],[60489,2289],[ 36924,1579]],[[54774,33101],[40204,3541],[33029,14963]]]],cl=>451796618,cm=>[[[[451796618]]],[[[150072393]]],[[[103518268]]]]},co=>56970,cp=>[6893],cq=>60489, cr=>[[2289],[36924],[1579]],cs=>-10762,ct=>-32435,cu=>[[-25332,3541,-32507],[14963,-5274,-27050]],cv=>6136,cw=>46824,cx=>228,cy=>96,cz=>22084,da=>[[[[29909],[ 4770]]],[[[-29871],[28794]]],[[[6195],[-23102]]]]},dc=>{bf=>451796618,bg=>451796618,bo=>{bh=>[[-118,-34,-19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393, 103518268]],bl=>[451796618,150072393],bm=>451796618,bn=>451796618},bp=>{bh=>[[-118,-34,-19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[ 451796618,150072393],bm=>451796618,bn=>451796618},bq=>[[{bh=>[[-118,-34,-19]],bi=>-118,bj=>451796618,bk=>[[451796618,150072393,103518268]],bl=>[451796618, 150072393],bm=>451796618,bn=>451796618},{bh=>[[-10,-43,77]],bi=>-10,bj=>2169361910,bk=>[[-2125605386,232103180,980648197]],bl=>[-2125605386,232103180],bm=> -2125605386,bn=>-2125605386}],[{bh=>[[102,-21,86]],bi=>102,bj=>2522278758,bk=>[[-1772688538,-1226303496,1447321828]],bl=>[-1772688538,-1226303496],bm=> -1772688538,bn=>-1772688538},{bh=>[[-43,116,-94]],bi=>-43,bj=>312636629,bk=>[[312636629,1887079249,-1514006477]],bl=>[312636629,1887079249],bm=>312636629,bn=> 312636629}]],br=>[451796618,150072393,103518268],bs=>[[451796618,150072393,103518268],[-2125605386,232103180,980648197],[-1772688538,-1226303496,1447321828]], bt=>[[312636629,1887079249,-1514006477],[1294074803,-2138565630,474855383],[1347346815,1122538581,-914349422]],bu=>-14,bv=>-20513,bw=>[174,147,24],bx=> -659047994,by=>751201722,bz=>'8848682293905004041',ca=>1527509538,cb=>3207518266,cc=>4187418884,cd=>'644556020419255946',cn=>{ce=>451796618,cf=>451796618,cg=> 451796618,ch=>'644556020419255946',ci=>451796618,cj=>[[56970,6893]],ck=>[[[[56970,6893],[60489,2289],[36924,1579]],[[54774,33101],[40204,3541],[33029,14963]]]], cl=>451796618,cm=>[[[[451796618]]],[[[150072393]]],[[[103518268]]]]},co=>56970,cp=>[6893],cq=>60489,cr=>[[2289],[36924],[1579]],cs=>-10762,ct=>-32435,cu=>[[ -25332,3541,-32507],[14963,-5274,-27050]],cv=>6136,cw=>46824,cx=>228,cy=>96,cz=>22084,da=>[[[[29909],[4770]]],[[[-29871],[28794]]],[[[6195],[-23102]]]]},dd=> -8566,dj=>{de=>451796618,df=>[[150072393,103518268,-2125605386],[232103180,980648197,-1772688538],[-1226303496,1447321828,312636629]],dg=>1887079249,dh=>[[ 2780960819,1294074803,2156401666],[474855383,1347346815,1122538581]],di=>-914349422},dk=>-13326,dl=>[[-20513],[-27730]],dm=>[[-1178146536,1840961719,369700038], [-710280577,-232621364,-667264245]],dn=>-251347154,dp=>3173513622,dq=>3703863309,dr=>-88,ds=>96,dt=>106,du=>465883398,dv=>36,dw=>36,dx=>[[-5596,660],[-5203, -1553],[14695,-23913]],dy=>36,dz=>36,ea=>43313700,eb=>[[43313700,-101717075,-1567147673],[-1950186657,-732583609,-1111700124],[-1457593561,867302945,1268351434] ],ec=>18583,ed=>40568,ee=>1208121291,ef=>13150,eg=>113,eh=>-86,ei=>-119,ej=>26391,ek=>-1618,el=>[[[181,122],[164,10]],[[203,93],[151,239]],[[145,186],[211,99]]] ,em=>[[[189,231],[103,147],[127,134]],[[87,151],[7,236],[63,74]]],en=>-526911672,eo=>204,ep=>747278998,ev=>{eq=>1471162158,er=>10030,es=>1471162158,et=> 1471162158,eu=>'-2765247780762933458'},ew=>{eq=>780502076,er=>33852,es=>780502076,et=>780502076,eu=>'-728971368006843332'},ex=>1760773753},ju=> '644556020419255946',jv=>'644556020419255946',jw=>56970,jx=>56970,jy=>[[[[56970,6893,60489]],[[2289,36924,1579]]],[[[54774,33101,40204]],[[3541,33029,14963]]],[ [[60262,38486,6136]],[[46824,24804,22084]]]],jz=>56970,ka=>138,kb=>138},kc=>{mg=>{kd=>-2058853707,ke=>'5987959116413106004',kf=>1363342466,kg=>3276284054,kh=> 11712,ki=>49,kw=>{kj=>[[-1494088614,1901166286],[-1637476849,1088904740],[-1580042126,-1707434710]],kk=>[-1494088614],kl=>2800878682,km=>2800878682,kn=>[[ 2800878682,1901166286]],ko=>'8165447025428661338',kp=>['8165447025428661338','4676810249416873487','-7333376236790318990'],kq=>'8165447025428661338',kr=> '8165447025428661338',ks=>[-1494088614],kt=>90,ku=>90,kv=>-1494088614},kx=>'7660190118987172289',ky=>'10109570921568530113',kz=>-63,la=>3149262529,lb=> '-8337173152141021503',lc=>['-8337173152141021503','555198448556482722'],ld=>[[['10109570921568530113','555198448556482722','6327072268883512402']],[[ '13363082765023275824','8160324916783808862','3983613338139164009']]],le=>3149262529,lf=>[[3149262529,2353817904]],lg=>3149262529,lh=>-4415,lp=>[[{li=>27411,lj=> [[27411]],lk=>'699936173668592403',ll=>'699936173668592403',lm=>[[[-722048237,162966589,-139233679],[1802663293,1615066141,668694379],[1035763800,-546113505, -301452689]]],ln=>27411,lo=>[['699936173668592403'],['7742379893290399345']]},{li=>8014,lj=>[[8014]],lk=>'14059808108471852878',ll=>'14059808108471852878',lm=>[ [[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]]],ln=>8014,lo=>[['14059808108471852878'],[ '1037174166098171788']]}],[{li=>27124,lj=>[[27124]],lk=>'3112266432129362420',ll=>'3112266432129362420',lm=>[[[-1653511692,724630996,-1714432289],[590585804, -1404863128,1805048205],[1903896170,958000451,-680158697]]],ln=>27124,lo=>[['3112266432129362420'],['2536546716242400991']]},{li=>-9736,lj=>[[-9736]],lk=> '15204813217218746872',ll=>'15204813217218746872',lm=>[[[8182264,-754820848,-1990843908],[2030201666,1952332821,-653653507],[1630279970,698060525,941594293]]], ln=>55800,lo=>[['15204813217218746872'],['8719649762058838524']]}]],lq=>{li=>27374,lj=>[[27374]],lk=>'18192863195878288110',ll=>'18192863195878288110',lm=>[[[ -845518098,-59111249,419355361],[-379626545,-98165665,1329682793],[804342663,-1126197668,654196580]]],ln=>27374,lo=>[['18192863195878288110'],[ '16816260478660434657']]},lr=>'7376570264875490453',ls=>'17722894814364403768',lt=>31,lu=>28687,lv=>-31923,lw=>28,lx=>114,ly=>[[[[44],[161]],[[105],[25]],[[197] ,[196]]]],lz=>92,ma=>-1187965622,mb=>-1621004899,mc=>1254264397,md=>[['6142378113139755708'],['-1645285875830501394']],me=>[53868],mf=>[57810,10406,13669]},mh=> {kd=>-950328472,ke=>'5658919656636925334',kf=>3188316432,kg=>1409870759,kh=>-20245,ki=>125,kw=>{kj=>[[1174141967,-112597673],[-870140506,-1227085062],[ -677057499,-1873510652]],kk=>[1174141967],kl=>1174141967,km=>1174141967,kn=>[[1174141967,4182369623]],ko=>'-483603321966560241',kp=>['-483603321966560241', '-5270290207275305562','-8046666975429727195'],kq=>'-483603321966560241',kr=>'-483603321966560241',ks=>[1174141967],kt=>15,ku=>15,kv=>1174141967},kx=> '3241186914066154681',ky=>'10711818774959513852',kz=>-4,la=>332554492,lb=>'-7734925298750037764',lc=>['-7734925298750037764','8195611242654669376'],ld=>[[[ '10711818774959513852','8195611242654669376','8403928748852620277']],[['18327187265731610799','7094432050196610468','16567645484015994518']]],le=>332554492,lf=> [[332554492,2494039660]],lg=>332554492,lh=>24828,lp=>[[{li=>25699,lj=>[[25699]],lk=>'17672523628912075875',ll=>'17672523628912075875',lm=>[[[-2113903517, -180262245,469329824],[468202775,332143729,170746245],[1028674598,-1395891399,-1185951512]]],ln=>25699,lo=>[['17672523628912075875'],['2010915606990776224']]}, {li=>-12526,lj=>[[-12526]],lk=>'6845988679659540242',ll=>'6845988679659540242',lm=>[[[-1150038254,1593955950,-74325078],[373211743,-285457294,218016399],[ 1104118570,-1550675724,-1784827001]]],ln=>53010,lo=>[['6845988679659540242'],['1602932234888799146']]}],[{li=>31633,lj=>[[31633]],lk=>'8773096271991241617',ll=> '8773096271991241617',lm=>[[[-665355375,2042645651,1209313619],[-1299362812,1891001717,1217464078],[-313525615,-1391557912,-426154838]]],ln=>31633,lo=>[[ '8773096271991241617'],['12866023291740268883']]},{li=>-29686,lj=>[[-29686]],lk=>'5798254897622191114',ll=>'5798254897622191114',lm=>[[[-504329206,1350011419, -577017207],[1611554436,243805304,601837460],[2011025408,1014653353,-1289198243]]],ln=>35850,lo=>[['5798254897622191114'],['6921573602061675145']]}]],lq=>{li=> 30070,lj=>[[30070]],lk=>'11108528298467751286',ll=>'11108528298467751286',lm=>[[[-947161738,-1708561503,-518721509],[1638906728,-287711135,-70813373],[ 798100818,148469045,1955910318]]],ln=>30070,lo=>[['11108528298467751286'],['7039050801730613275']]},lr=>'8865418217952990448',ls=>'16910285960572352012',lt=> -32,lu=>-23280,lv=>2867,lw=>13,lx=>248,ly=>[[[[204],[198]],[[83],[41]],[[28],[51]]]],lz=>176,ma=>-1440842177,mb=>-955722959,mc=>3588954414,md=>[[ '-20521267330544242'],['-6975653099726015525']],me=>[5169],mf=>[9875,18351,34806]},mi=>{kd=>849704203,ke=>'-7865611094136309509',kf=>3206736700,kg=>2062974277, kh=>-14250,ki=>190,kw=>{kj=>[[1471943724,1480544906],[-1311475443,-19991553],[-524657831,-1546753512]],kk=>[1471943724],kl=>1471943724,km=>1471943724,kn=>[[ 1471943724,1480544906]],ko=>'6358891953001337900',kp=>['6358891953001337900','-85863063347758835','-6643255745242834087'],kq=>'6358891953001337900',kr=> '6358891953001337900',ks=>[1471943724],kt=>44,ku=>44,kv=>1471943724},kx=>'8684191803490738786',ky=>'1324151914916919929',kz=>121,la=>2772875897,lb=> '1324151914916919929',lc=>['1324151914916919929','9098777832765585295'],ld=>[[['1324151914916919929','9098777832765585295','11492778477819285254']],[[ '3513644960920247218','10552731876756811857','14739685473668037182']]],le=>2772875897,lf=>[[2772875897,308303142]],lg=>2772875897,lh=>-17799,lp=>[[{li=>-16416, lj=>[[-16416]],lk=>'818897211810365408',ll=>'818897211810365408',lm=>[[[-377241632,190664364,1635765825],[-894802362,-571967690,217605636],[-1219174846, 490851033,-777163328]]],ln=>49120,lo=>[['818897211810365408'],['14603597194171764289']]},{li=>-24700,lj=>[[-24700]],lk=>'13876536005094907780',ll=> '13876536005094907780',lm=>[[[-1063673980,-1064084487,907589138],[-1329073929,-338187728,-753217757],[451796618,150072393,103518268]]],ln=>40836,lo=>[[ '13876536005094907780'],['12738415015595914770']]}],[{li=>-10762,lj=>[[-10762]],lk=>'996875569566963190',ll=>'996875569566963190',lm=>[[[-2125605386,232103180, 980648197],[-1772688538,-1226303496,1447321828],[312636629,1887079249,-1514006477]]],ln=>54774,lo=>[['996875569566963190'],['10833104777986146565']]},{li=>947, lj=>[[947]],lk=>'9261674633803989939',ll=>'9261674633803989939',lm=>[[[1294074803,-2138565630,474855383],[1347346815,1122538581,-914349422],[-1344287758, -384265298,-659047994]]],ln=>947,lo=>[['9261674633803989939'],['5786810507269617623']]}]],lq=>{li=>28090,lj=>[[28090]],lk=>'18050170060185955770',ll=> '18050170060185955770',lm=>[[[751201722,-92334583,2060244393],[1527509538,-1087449030,-107548412],[2014166311,1621679300,-788109462]]],ln=>28090,lo=>[[ '18050170060185955770'],['6560603512098313641']]},lr=>'16982232608490658756',ls=>'9466463712142948847',lt=>-62,lu=>-22201,lv=>-11179,lw=>100,lx=>205,ly=>[[[[ 188],[189]],[[39],[227]],[[30],[169]]]],lz=>33,ma=>-2117454927,mb=>1217874841,mc=>2009833080,md=>[['-6158203612282599422'],['766872758556452631']],me=>[24011], mf=>[61335,47761,25555]},mj=>'-7541411168516577347',ou=>[[{mk=>['16183675675834575879','2823242990084307404'],ml=>'16183675675834575879',mm=> '16183675675834575879',mn=>1245703175,mo=>1245703175,mp=>1245703175,mq=>7,mr=>7,ms=>22448,mt=>56779,mu=>[-9825,-31684],mv=>2218580383,mw=>[[2218580383],[ 744959621]],mx=>[-97],my=>-97,mz=>-97,na=>159,nb=>['3199577211254135199'],nq=>{nc=>'14438937274395260386',nd=>'15337091602469120637',ne=>[[[[ '7838170680078770136'],['6338798129934606725'],['5837070750880514404']],[['12251487722594918884'],['5115129471442097571'],['6301746486302456423']],[[ '10257103587122409201'],['11432276215941873281'],['4466900161961532886']]]],nf=>'1478851282813619424',ng=>-11269,nh=>31765,ni=>-38,nj=>4088505383,nk=> 2960062030,nl=>3243060976,nm=>10376,nn=>'4226654220288043263',no=>13913,np=>1220259753},nr=>[['5016093930777923781']],ns=>'5016093930777923781',nt=>197,nu=>197, nv=>197,nw=>2281885893,nx=>[53445,34818],ny=>-2013081403,nz=>-2013081403,oa=>[[-12091,-30718,-16678],[17820,-15312,17730],[18673,7096,-24234]],ob=>[[[-12091]],[ [-30718]],[[-16678]]],oc=>-59,od=>-59,oe=>-2013081403,of=>-2013081403,og=>[1601761181,2916674639],oh=>-867821129,oi=>-867821129,oj=>[6583,-13242],ok=> '-4101552996699727433',ol=>[['-4101552996699727433','3102304785032962812','1366044192217212050']],om=>[3427146167,3340000071,3907150588],on=>3427146167,oo=> 3427146167,op=>3427146167,oq=>[6583,-13242,23367],or=>6583,os=>[[183],[25]],ot=>183}]],ov=>{mk=>['5371941907818177193','4279241623495376841'],ml=> '5371941907818177193',mm=>'5371941907818177193',mn=>294216361,mo=>294216361,mp=>294216361,mq=>-87,mr=>-87,ms=>42959,mt=>8593,mu=>[-2960,14492],mv=>949810288,mw=> [[949810288],[140253051]],mx=>[112],my=>112,mz=>112,na=>112,nb=>['602382268159030384'],nq=>{nc=>'13044174381705733410',nd=>'11353333398815960393',ne=>[[[[ '12541993899289435977'],['7801119036446620090'],['10686774475928325649']],[['5017575570227502593'],['11603539883796097304'],['291672421789787933']],[[ '7873347163653381746'],['2207224681977750305'],['18182901544486855671']]]],nf=>'-2872480758863845228',ng=>416,nh=>24428,ni=>30864,nj=>619064888,nk=>2494515959, nl=>1293729320,nm=>28699,nn=>'-7225859584689375476',no=>35933,np=>707443017},nr=>[['-7069849110528708104']],ns=>'-7069849110528708104',nt=>248,nu=>248,nv=>248, nw=>257110520,nx=>[12792,3923],ny=>257110520,nz=>257110520,oa=>[[12792,3923,-9807],[-25118,14241,-6318],[-383,21464,13776]],ob=>[[[12792]],[[3923]],[[-9807]]], oc=>-8,od=>-8,oe=>257110520,of=>257110520,og=>[4194482254,1040852765],oh=>515102127,oi=>515102127,oj=>[-10833,7859],ok=>'2388732567121810863',ol=>[[ '2388732567121810863','-3124452557276749942','5974471240480904677']],om=>[515102127,556170141,99966858],on=>515102127,oo=>515102127,op=>515102127,oq=>[-10833, 7859,31645],or=>-10833,os=>[[175],[213]],ot=>175},ow=>[[{mk=>['11919091463328332134','6155978030408304499'],ml=>'11919091463328332134',mm=> '11919091463328332134',mn=>756250982,mo=>756250982,mp=>756250982,mq=>102,mr=>102,ms=>30201,mt=>6654,mu=>[12511,32182],mv=>2109092063,mw=>[[2109092063],[ 2222502851]],mx=>[-33],my=>-33,mz=>-33,na=>223,nb=>['-8901167011288698657'],nq=>{nc=>'16692007906772852064',nd=>'6708136181930382809',ne=>[[[[ '10414879379027654168'],['5104886353663954604'],['4987691728449865754']],[['7876703958831977522'],['11596937235213228256'],['8439105228165753487']],[[ '14195895288439720779'],['993518774371589943'],['1371617209496046918']]]],nf=>'-2486748935767699361',ng=>-12002,nh=>-9902,ni=>31931,nj=>2057143195,nk=> 3409136662,nl=>732065425,nm=>4012,nn=>'1399737936830617073',no=>16478,np=>-412068313},nr=>[['4844999696580905958']],ns=>'4844999696580905958',nt=>230,nu=>230, nv=>230,nw=>3683945446,nx=>[35814,56212],ny=>-611021850,nz=>-611021850,oa=>[[-29722,-9324,-6771],[17212,-12294,-538],[17623,-8453,21690]],ob=>[[[-29722]],[[ -9324]],[[-6771]]],oc=>-26,od=>-26,oe=>-611021850,of=>-611021850,og=>[831694954,2620344901],oh=>-1676782,oi=>-1676782,oj=>[27154,-26],ok=>'8237393673363810834', ol=>[['8237393673363810834','-3874796034764969185','5904006231995333992']],om=>[4293290514,1917917670,851307295],on=>4293290514,oo=>4293290514,op=>4293290514, oq=>[27154,-26,6630],or=>27154,os=>[[18],[106]],ot=>18},{mk=>['11630348401043327038','13148161506419148868'],ml=>'11630348401043327038',mm=> '11630348401043327038',mn=>574113854,mo=>574113854,mp=>574113854,mq=>62,mr=>62,ms=>9750,mt=>39458,mu=>[19508,22681],mv=>1486441524,mw=>[[1486441524],[ 3680499021]],mx=>[52],my=>52,mz=>52,na=>52,nb=>['-2639121144068092876'],nq=>{nc=>'16359781076885346970',nd=>'17788237714188213432',ne=>[[[[ '7962251627858917025'],['13821153652839092987'],['14313091013165502685']],[['16623308207441924895'],['16097847631359265432'],['671083062689840816']],[[ '3726520526298001507'],['2722442135970522801'],['13992419519733415314']]]],nf=>'-8308599325722436829',ng=>26033,nh=>24464,ni=>-22052,nj=>2596093807,nk=> 2943245109,nl=>771119585,nm=>37156,nn=>'-7390520603960795475',no=>32677,np=>280194861},nr=>[['-7368552720364864808']],ns=>'-7368552720364864808',nt=>216,nu=> 216,nv=>216,nw=>1374288600,nx=>[64216,20969],ny=>1374288600,nz=>1374288600,oa=>[[-1320,20969,-23465],[-26179,-31195,6935],[-15747,-23644,-13266]],ob=>[[[-1320]] ,[[20969]],[[-23465]]],oc=>-40,od=>-40,oe=>1374288600,of=>1374288600,og=>[914202297,1509155318],oh=>-1723840868,oi=>-1723840868,oj=>[18076,-26304],ok=> '-2353735976506866020',ol=>[['-2353735976506866020','49943741155026186','-6687191512434498813']],om=>[2571126428,3746945433,1716299018],on=>2571126428,oo=> 2571126428,op=>2571126428,oq=>[18076,-26304,-9831],or=>18076,os=>[[156],[70]],ot=>156}],[{mk=>['2804913380972270176','6755149468347253742'],ml=> '2804913380972270176',mm=>'2804913380972270176',mn=>3801584224,mo=>3801584224,mp=>-493383072,mq=>96,mr=>96,ms=>31448,mt=>15344,mu=>[28162,25967],mv=>1701801474, mw=>[[1701801474],[2106772686]],mx=>[2],my=>2,mz=>2,na=>2,nb=>['9048519788177878530'],nq=>{nc=>'13760932865921548919',nd=>'15266910263688614401',ne=>[[[[ '7549428713010425775'],['13258924011924300374'],['3234583165971657345']],[['412506416670810990'],['14445821402249741849'],['7190222836968138507']],[[ '1515621447174091774'],['7552785512500700527'],['4201611016473581077']]]],nf=>'-6509213150366156519',ng=>17701,nh=>-17525,ni=>-27652,nj=>1689317785,nk=> 377916032,nl=>275490827,nm=>38463,nn=>'5883801467120791418',no=>58789,np=>1636892873},nr=>[['-1835443197966909716']],ns=>'-1835443197966909716',nt=>236,nu=>236, nv=>236,nw=>3553001196,nx=>[32492,54214],ny=>-741966100,nz=>-741966100,oa=>[[32492,-11322,12834],[-6521,29540,-9771],[-12497,18649,23850]],ob=>[[[32492]],[[ -11322]],[[12834]]],oc=>-20,od=>-20,oe=>-741966100,of=>-741966100,og=>[1855393726,2569588873],oh=>1321081611,oi=>1321081611,oj=>[6923,20158],ok=> '-2928144586096370933',ol=>[['-2928144586096370933','4905220483481672811','-3332770059196445227']],om=>[1321081611,3613205507,1860508779],on=>1321081611,oo=> 1321081611,op=>1321081611,oq=>[6923,20158,9219],or=>6923,os=>[[11],[27]],ot=>11},{mk=>['14425617732591794219','4633326486109340785'],ml=>'14425617732591794219', mm=>'14425617732591794219',mn=>3367352363,mo=>3367352363,mp=>-927614933,mq=>43,mr=>43,ms=>16000,mt=>56916,mu=>[-12038,-11531],mv=>3539325178,mw=>[[3539325178],[ 1985992493]],mx=>[-6],my=>-6,mz=>-6,na=>250,nb=>['8529772811075834106'],nq=>{nc=>'17041252131423772173',nd=>'17281217697632179172',ne=>[[[[ '3716558874906634603'],['1408387373839807588'],['11539962297404990163']],[['10374862261784835202'],['8543262886048068457'],['746669084603537704']],[[ '4636683289877871153'],['6144253268885549631'],['16512716235122384837']]]],nf=>'-7607035547628973251',ng=>-10875,nh=>18559,ni=>-7702,nj=>3355239732,nk=> 1447797871,nl=>2619152573,nm=>20844,nn=>'-2396080257624181046',no=>26080,np=>968099228},nr=>[['5914138407948954136']],ns=>'5914138407948954136',nt=>24,nu=>24, nv=>24,nw=>776645144,nx=>[43544,11850],ny=>776645144,nz=>776645144,oa=>[[-21992,11850,15756],[21011,20378,-14394],[23164,15863,-6151]],ob=>[[[-21992]],[[11850]] ,[[15756]]],oc=>24,od=>24,oe=>776645144,of=>776645144,og=>[692945473,2369031733],oh=>617527332,oi=>617527332,oj=>[-18396,9422],ok=>'150744599563778084',ol=>[[ '150744599563778084','7295863233811660065','-2255151335886674237']],om=>[617527332,35097962,3173858593],on=>617527332,oo=>617527332,op=>617527332,oq=>[-18396, 9422,-29334],or=>-18396,os=>[[36],[184]],ot=>36}],[{mk=>['12834375236041492017','10198647014159559848'],ml=>'12834375236041492017',mm=>'12834375236041492017', mn=>441632305,mo=>441632305,mp=>441632305,mq=>49,mr=>49,ms=>25740,mt=>22836,mu=>[1358,12851],mv=>842204494,mw=>[[842204494],[2088828462]],mx=>[78],my=>78,mz=> 78,na=>78,nb=>['8971449932086183246'],nq=>{nc=>'3100540571095045312',nd=>'10134616324406247595',ne=>[[[['3661177626457349346'],['2983063371392552495'],[ '12951570960767208386']],[['7381409803327037584'],['18343752660922507486'],['261616947348401278']],[['12626058829355168892'],['347164616358563822'],[ '14778219856227839895']]]],nf=>'6149374282297029947',ng=>-18324,nh=>-30873,ni=>-20775,nj=>1620897479,nk=>1382478763,nl=>1758865395,nm=>15356,nn=> '63543667013444289',no=>18703,np=>-1134003155},nr=>[['258259052641400511']],ns=>'258259052641400511',nt=>191,nu=>191,nv=>191,nw=>1958229695,nx=>[14015,29880], ny=>1958229695,nz=>1958229695,oa=>[[14015,29880,-31427],[917,-16195,-29370],[-12085,11498,18517]],ob=>[[[14015]],[[29880]],[[-31427]]],oc=>-65,od=>-65,oe=> 1958229695,of=>1958229695,og=>[1266748342,232885002],oh=>-1189873980,oi=>-1189873980,oj=>[-2364,-18157],ok=>'1776072158000445124',ol=>[['1776072158000445124', '-3527596395222212976','6726576737161975436']],om=>[3105093316,413524023,3218398864],on=>3105093316,oo=>3105093316,op=>3105093316,oq=>[-2364,-18157,-8137],or=> -2364,os=>[[196],[246]],ot=>196},{mk=>['3221264723679884746','8155203903338839394'],ml=>'3221264723679884746',mm=>'3221264723679884746',mn=>4268733898,mo=> 4268733898,mp=>-26233398,mq=>-54,mr=>-54,ms=>58818,mt=>36399,mu=>[-6067,11945],mv=>782886989,mw=>[[782886989],[102325939]],mx=>[77],my=>77,mz=>77,na=>77,nb=>[ '439486562320377933'],nq=>{nc=>'303678653994220624',nd=>'419392739270358182',ne=>[[[['6298670066572166311'],['867673612653460018'],['2729328458570201065']],[[ '5845268184039062048'],['3887653117693587018'],['5784765917866617499']],[['4769132199690432622'],['15157629401928009003'],['1930208575943788588']]]],nf=> '-725894943964808452',ng=>-17864,nh=>-6252,ni=>-17101,nj=>1533340876,nk=>3921171577,nl=>615553183,nm=>65284,nn=>'5259133717693365083',no=>36727,np=>-462479114}, nr=>[['3357353003176157639']],ns=>'3357353003176157639',nt=>199,nu=>199,nv=>199,nw=>3018318279,nx=>[57799,46055],ny=>-1276649017,nz=>-1276649017,oa=>[[-7737, -19481,-18748],[11927,17677,-258],[356,28818,-10815]],ob=>[[[-7737]],[[-19481]],[[-18748]]],oc=>-57,od=>-57,oe=>-1276649017,of=>-1276649017,og=>[2226730842, 1730796562],oh=>-2083515820,oi=>-2083515820,oj=>[4692,-31792],ok=>'7379645589389054548',ol=>[['7379645589389054548','8665580719401991415', '-1449147333995714889']],om=>[2211451476,1718207632,2288909559],on=>2211451476,oo=>2211451476,op=>2211451476,oq=>[4692,-31792,-15216],or=>4692,os=>[[84],[18]], ot=>84}]],ox=>17378,oy=>17378,oz=>[[17378,21434],[-11429,-25284]],pa=>17378,pb=>17378,pc=>1404716002,pd=>17378,pe=>-30,pf=>17378,pg=>-19487,ph=>-1524887075,pi=> 2007859186,pj=>[[[-1398621283,530381492],[602247967,5797352],[-1026938941,1998105380]]],pk=>-548908925,pl=>1398103099,pm=>[[[[4078035804,1685329781]],[[ 1941412774,1866379309]]],[[[49555801,2918583508]],[[1409459740,1375800068]]],[[[3215668980,878223248]],[[3026508442,4256184672]]]],pn=>-28,po=>-7,pp=>603440552, pq=>-29042,pr=>2420,ps=>[[['13295975655539673460','17261294399144347125']],[['1159944003302672082','15094050716025274342']],[['11941059351219164561', '18318707258084724724']]],pt=>[3803122036,3095710569],pu=>116,pv=>'-5150768418169878156',pw=>['-5150768418169878156','-1185449674565204491'],px=>2420,py=>2420, pz=>[[2420,-7505]],qi=>{qa=>'15530606823607496767',qb=>'15530606823607496767',qc=>'15530606823607496767',qd=>[['15530606823607496767']],qe=>[[325185599],[ 3616001183]],qf=>325185599,qg=>-4033,qh=>325185599},qj=>-3425,qk=>-3425,ql=>-3425,qm=>-3425,qn=>62111,qo=>159,qp=>'-2549014316366433633',qq=>-3425,qr=>[[ 160952991,-593488644]],qs=>160952991,qt=>1446194779,qu=>176577327,rg=>{qv=>'-2817552609481863067',qw=>'-8211326890911329594',qx=>['-730453007456422400', '-2077001345449549167','584053758541778181'],qy=>227053920,qz=>-1886881147,ra=>[[[[-326485604],[-1132028750],[-59456732]],[[-1904069126],[1661965493],[ 909498008]],[[931429725],[1992645357],[-1427987429]]]],rb=>'3872569357674079319',rc=>'3921346862340546472',rd=>[1373096016,2426506160],re=> '-3042263886796895430',rf=>[['-1262799910416884927'],['9018353371911903260']]},rh=>{qv=>'-8557044895282696815',qw=>'8124866953920742084',qx=>[ '8115186786095954893','6800569074011752832','4420169445721321409'],qy=>910624800,qz=>1084200451,ra=>[[[[2137200089],[2009051515],[-1262562237]],[[675001760],[ -255680385],[-1847761452]],[[-1253590508],[1995746555],[985286951]]]],rb=>'-2782376125907251457',rc=>'6175901324584392034',rd=>[997054611,2687572878],re=> '1245490572801271873',rf=>[['-1200533430289745406'],['-703475056535077921']]},ri=>200,rs=>[{rj=>'11213998157847406293',rk=>[['-7232745915862145323', '-6770694592024883504','-8187594797672514516']],rl=>9941,rm=>9941,rn=>'-7232745915862145323',ro=>107030229,rp=>213,rq=>[213,38,97],rr=>213}],rt=>[{rj=> '2663985558729483112',rk=>[['2663985558729483112','6177664439010616222','2775029539194633594']],rl=>25448,rm=>25448,rn=>'2663985558729483112',ro=>1389847400,rp=> 104,rq=>[104,99,215],rr=>104}],ru=>{rj=>'2956254854145257224',rk=>[['2956254854145257224','95644821796236187','8870539231398025196']],rl=>12040,rm=>12040,rn=> '2956254854145257224',ro=>2128228104,rp=>8,rq=>[8,47,218],rr=>8},rv=>['17459367688069238706']},rw=>{rx=>-2058853707,ry=>-2058853707,uo=>{rz=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[-2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707,sg=> -2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269,sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466, -1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=>2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466, 3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740,2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=> 2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589,to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[ -1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=> -1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286, -1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=> 30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[ [[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589, ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[-1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[ -365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=>129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004', '14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579', '2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[ 1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[[ '5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[[ '13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=> '15345570510587601721',ug=>44093,uh=>[1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50}},up=>[[{rz=>[[ -2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[-2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707, sg=>-2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269,sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466, -1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=>2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466, 3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740,2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=> 2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589,to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[ -1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=> -1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286, -1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=> 30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[ [[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589, ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[-1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[ -365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=>129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004', '14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579', '2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[ 1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[[ '5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598','11660514817326145060','16874998530878119210']],[[ '13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036','14747882911104709881','10829746883279146054']]],uf=> '15345570510587601721',ug=>44093,uh=>[1987119542,1971189683,4095568754],ui=>'9248185658360160323',uj=>[4162796988],uk=>[114,-33,111],ul=>50}}],[{rz=>[[ 525266440,2029751199,1468842782],[-932664194,491261540,1512641192]],sa=>[[525266440,2029751199]],sb=>8,sc=>[8,-18],sd=>60936,se=>60936,sf=>525266440,sg=> 525266440,sh=>[[-4600,8014],[-29793,30971],[-15586,22412]],si=>-4600,sj=>-4600,sk=>'8717715019247054344',sl=>30,sm=>-61,sn=>140,so=>87,sp=>[[-932664194, 491261540]],sq=>[1512641192,1189766559],sr=>2223219137,ss=>525266440,st=>525266440,su=>525266440,sv=>[[[[525266440,2029751199,1468842782],[3362303102,491261540, 1512641192]]],[[[1189766559,2223219137,1322684959],[1777656209,4258569585,3604949808]]]],sw=>'8717715019247054344',sx=>'8717715019247054344',sy=>525266440,sz=> 525266440,ta=>[-4600,8014,-29793],tb=>-4600,tc=>525266440,to=>{td=>[[525266440,2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159, 1322684959]],te=>[[[[-7791,27124]]],[[[-25231,-556]]]],tf=>11056,tg=>-10529,th=>-26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=> 14617,tn=>-26089},tp=>{td=>[[525266440,2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159,1322684959]],te=>[[[[-7791,27124]]],[[[ -25231,-556]]]],tf=>11056,tg=>-10529,th=>-26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=>14617,tn=>-26089},tq=>{td=>[[525266440, 2029751199,1468842782],[-932664194,491261540,1512641192],[1189766559,-2071748159,1322684959]],te=>[[[[-7791,27124]]],[[[-25231,-556]]]],tf=>11056,tg=>-10529,th=> -26161,ti=>-24628,tj=>[2103976755,-645026749],tk=>644508566,tl=>-314347141,tm=>14617,tn=>-26089},ub=>{tr=>525266440,ts=>2029751199,tt=>-15586,tu=>3362303102,tv=> 491261540,tw=>4776,tx=>[[[1189766559],[-2071748159],[1322684959]],[[1777656209],[-36397711],[-690017488]],[[-1613981233],[2103976755],[-645026749]]],ty=> 644508566,tz=>123,ua=>2585213209},um=>{uc=>[8,-18,78],ud=>31,ue=>[[['6308631713685408671','2109952251444898942','5110008462292095656'],['5680888644039320001', '18290417097092948369','11514747465221745456']],[['15676375283813327667','17096633384167959446','15706540600550963481'],['2449064304420323452', '4329499668083018070','1811248637296866398']]],uf=>'10859631824568410412',ug=>14367,uh=>[3449449198,4235856047,419355361],ui=>'18025125756859800527',uj=>[ 1329682793],uk=>[-121,75,-15],ul=>47},un=>{uc=>[8,-18,78],ud=>31,ue=>[[['6308631713685408671','2109952251444898942','5110008462292095656'],[ '5680888644039320001','18290417097092948369','11514747465221745456']],[['15676375283813327667','17096633384167959446','15706540600550963481'],[ '2449064304420323452','4329499668083018070','1811248637296866398']]],uf=>'10859631824568410412',ug=>14367,uh=>[3449449198,4235856047,419355361],ui=> '18025125756859800527',uj=>[1329682793],uk=>[-121,75,-15],ul=>47}}],[{rz=>[[-1126197668,654196580,-1164125035],[1717491602,164464696,-168534289]],sa=>[[ -1126197668,654196580]],sb=>92,sc=>[92,-106],sd=>38492,se=>38492,sf=>-1126197668,sg=>-1126197668,sh=>[[-27044,-17185],[16228,9982],[-9067,-17764]],si=>-27044, sj=>-27044,sk=>'2809752919423817308',sl=>149,sm=>-36,sn=>156,so=>186,sp=>[[1717491602,164464696]],sq=>[4126433007,1880055583],sr=>1914471245,ss=>3168769628,st=> 3168769628,su=>3168769628,sv=>[[[[3168769628,654196580,3130842261],[1717491602,164464696,4126433007]]],[[[1880055583,1914471245,426352940],[2958869701, 3107001674,2673962397]]]],sw=>'2809752919423817308',sx=>'2809752919423817308',sy=>3168769628,sz=>3168769628,ta=>[-27044,-17185,16228],tb=>-27044,tc=>3168769628, to=>{td=>[[-1126197668,654196580,-1164125035],[1717491602,164464696,-168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]], tf=>28061,tg=>-24735,th=>-29107,ti=>19138,tj=>[-1512813892,1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},tp=>{td=>[[-1126197668,654196580, -1164125035],[1717491602,164464696,-168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]],tf=>28061,tg=>-24735,th=>-29107, ti=>19138,tj=>[-1512813892,1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},tq=>{td=>[[-1126197668,654196580,-1164125035],[1717491602,164464696, -168534289],[1880055583,1914471245,426352940]],te=>[[[[-15163,-20388]]],[[[5450,-18127]]]],tf=>28061,tg=>-24735,th=>-29107,ti=>19138,tj=>[-1512813892, 1430133849],tk=>-1993879570,tl=>-383072970,tm=>-11668,tn=>-7726},ub=>{tr=>3168769628,ts=>654196580,tt=>-9067,tu=>1717491602,tv=>164464696,tw=>24303,tx=>[[[ 1880055583],[1914471245],[426352940]],[[-1336097595],[-1187965622],[-1621004899]],[[1254264397],[-1512813892],[1430133849]]],ty=>-1993879570,tz=>54,ua=> 3788690028},um=>{uc=>[92,-106,-33],ud=>-68,ue=>[[['13446865120583892836','706370492384073618','8074777247773646575'],['1831171935767921485', '13344470581406123205','5387024568326122909']],[['6142378113139755708','16801458197879050222','3847526153876329068'],['743592664873247592', '13693714806056977778','15888049585206651815']]],uf=>'17963140751742991375',ug=>46502,uh=>[721079330,3961894620,2131023780],ui=>'167591474026352724',uj=>[ 1627139323],uk=>[-46,19,108],ul=>6},un=>{uc=>[92,-106,-33],ud=>-68,ue=>[[['13446865120583892836','706370492384073618','8074777247773646575'],[ '1831171935767921485','13344470581406123205','5387024568326122909']],[['6142378113139755708','16801458197879050222','3847526153876329068'],[ '743592664873247592','13693714806056977778','15888049585206651815']]],uf=>'17963140751742991375',ug=>46502,uh=>[721079330,3961894620,2131023780],ui=> '167591474026352724',uj=>[1627139323],uk=>[-46,19,108],ul=>6}}]],uq=>-75,ur=>2236113589,us=>25269,ut=>[[34120],[30548]],uu=>16221,uv=>33047,uw=>4102181657,ux=>[ [546722114,767607624,73025073],[2127472370,370110801,1579458150]],uy=>231,vh=>{uz=>[[[[25269,-31416,30548]],[[16221,-32489,21273]],[[-2942,20802,8342]]]],va=>[[ [72,-61],[-64,45],[49,70]]],vb=>90,vc=>4,vd=>[[[-22798,32462],[29009,5647],[-24986,24100]]],ve=>[[16615]],vf=>30834,vg=>'703012593382105554'},vi=>2236113589,vj=> 2236113589,vk=>['4565936802120622773','5855511306112172311','5057874162447032470'],vl=>'8165447025428661338',vm=>'4676810249416873487',vn=>[[[ '-7333376236790318990','7660190118987172289','-8337173152141021503'],['555198448556482722','6327072268883512402','-5083661308686275792'],['8160324916783808862', '3983613338139164009','699936173668592403']],[['7742379893290399345','2872020490439095325','-2345539642843168680'],['-8385949557279149457', '-6017275790039811845','1344356684086429800'],['-6791068790556763607','-2192884860071213949','3112266432129362420']],[['2536546716242400991', '7752623011068607848','4114580608502146666'],['35142559902046743','-8550609472760686320','8385205619132623682'],['7001999158115174909','4044116695233302253', '-253880877831263506']]],vo=>'-1630483595049116959',vp=>95,vq=>28,vr=>[[38],[250],[105]],vs=>2270118233,vt=>1546645835,vu=>-2058853707,vv=>-2058853707,vw=> -2058853707,vx=>'4565936802120622773',vy=>181,vz=>181,wi=>{wa=>'4565936802120622773',wb=>'5855511306112172311',wc=>3276284054,wd=>[[192]],we=>2800878682,wf=> 206,wg=>126,wh=>2657490447},ws=>{wj=>2236113589,wk=>'5987959116413106004',wl=>'14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102], wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214,61121,48053]]},wt=>{wj=>2236113589,wk=>'5987959116413106004',wl=> '14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102],wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214, 61121,48053]]},wu=>'4565936802120622773',wv=>'4565936802120622773',ww=>'4565936802120622773',wx=>[[2236113589,1063090004,1394180375]],wy=>25269,wz=>[[25269, 34120]],xa=>'4565936802120622773',xh=>{xb=>25269,xc=>[['4565936802120622773','5855511306112172311'],['5057874162447032470','8165447025428661338'],[ '4676810249416873487','-7333376236790318990']],xd=>25269,xe=>25269,xf=>-75,xg=>-75},xi=>[['4565936802120622773','5855511306112172311','5057874162447032470'],[ '8165447025428661338','4676810249416873487','-7333376236790318990'],['7660190118987172289','-8337173152141021503','555198448556482722']],xj=> '4565936802120622773',xk=>[[2236113589,1063090004],[1394180375,1363342466]],xl=>181,xm=>181,xn=>[181],xo=>25269,xp=>2236113589,xq=>2236113589,xr=>-2058853707, xs=>[[25269],[34120]],xt=>'4565936802120622773',xu=>['4565936802120622773','5855511306112172311','5057874162447032470'],ye=>{xv=>2236113589,xw=>1063090004,xx=>[ [1394180375],[1363342466],[3276284054]],xy=>11712,xz=>[[[[17969,1114,-22798]]],[[[32462,29009,5647]]]],ya=>102,yb=>[[[[24100,16615],[30834,41426]],[[40234, 39482],[2497,59952]]],[[[30291,27214],[61121,48053]],[[26928,35916],[41122,8718]]],[[[30220,1972],[52306,52998]],[[18100,22478],[27440,24923]]]],yc=>[[13561],[ 47475],[350]],yd=>52395},yf=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],yg=>-2058853707,yh=>-2058853707,yi=>-2058853707,yj=> -2058853707,yk=>25269,yl=>181,ym=>181,yn=>'4565936802120622773',yo=>'4565936802120622773',yp=>'4565936802120622773',yq=>[25269,34120],yr=>181,ys=>2236113589,yt=> 2236113589,yu=>-2058853707,yv=>25269,yw=>25269,yx=>25269,yy=>[[25269,34120,30548]],yz=>25269,za=>25269,zb=>25269,zc=>[[25269,-31416],[30548,16221]],zd=>[[-75],[ 98]],ze=>-75,zf=>[[-2058853707,1063090004],[1394180375,1363342466]],zg=>181,zh=>181,zi=>25269,zj=>'4565936802120622773',zk=>-75,zl=>-75,zm=>25269,zn=>[[ -2058853707,1063090004]],zo=>[181,98,72],zp=>-75,zq=>-75,zr=>-75,zs=>[25269],zt=>-75,zu=>-75,zv=>[[[2236113589,1063090004],[1394180375,1363342466]]],zw=>[[ 2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096],[2800878682,1901166286,2657490447]],zx=>[[181,98,72]],zy=>'4565936802120622773',zz=> 1394180375,aaa=>[1363342466,-1018683242],aab=>1177628096,aac=>[[[[-1494088614]],[[1901166286]],[[-1637476849]]],[[[1088904740]],[[-1580042126]],[[-1707434710]]] ,[[[-365950527]],[[1783526995]],[[-1145704767]]]],aad=>-1941149392,aae=>162,aaf=>[[[160],[14],[34]],[[12],[118],[180]],[[7],[82],[204]]],aar=>[[{aag=>181,aah=>[ [98,72],[133,84],[119,93]],aai=>1394180375,aaj=>1363342466,aak=>3276284054,aal=>1177628096,aam=>90,aan=>4,aao=>[-14,-90],aap=>'-7032909512510964018',aaq=> 1088904740},{aag=>114,aah=>[[120,210],[161,42],[157,58]],aai=>3929016769,aaj=>1783526995,aak=>3149262529,aal=>-1941149392,aam=>162,aan=>-96,aao=>[14,34],aap=> '-3528908605309553140',aaq=>1473136308}],[{aag=>48,aah=>[[107,91],[97,249],[52,115]],aai=>3433759070,aaj=>1899973702,aak=>2521496937,aal=>927507257,aam=>19,aan=> 107,aao=>[-10,-44],aap=>'-598004097643795395',aaq=>1802663293},{aag=>29,aah=>[[244,67],[96,107],[119,219]],aai=>1035763800,aaj=>3748853791,aak=>3993514607,aal=> -1952506034,aam=>251,aan=>120,aao=>[30,-61],aap=>'1037174166098171788',aaq=>313007432}],[{aag=>41,aah=>[[90,159],[101,234],[70,193]],aai=>2451539075,aaj=> 3784396502,aak=>2641455604,aal=>724630996,aam=>223,aan=>-42,aao=>[-49,-103],aap=>'-6033841189525676084',aaq=>1805048205},{aag=>106,aah=>[[38,123],[113,67],[237, 25]],aai=>3614808599,aaj=>8182264,aak=>3540146448,aal=>-1990843908,aam=>66,aan=>107,aao=>[2,121],aap=>'-2807420433528374251',aaq=>1630279970}]],aas=>2236113589, aat=>2236113589,aau=>[[[2236113589,1063090004],[1394180375,1363342466]]]}}}, 4=>{sizeof=>{aa=>236,ey=>1120,kc=>3324,rw=>420},content=>{aa=>{ab=>'4565936802120622773',be=>{ac=>2236113589,ad=>1063090004,ae=>1394180375,af=>[-2942,20802],ag=> 8342,ah=>[[[72]],[[-61]]],ai=>'-6417061733278339648',aj=>[[['-7032909512510964018','-6786229256383406556'],['-1571745542831432406','-4920764503352773037'],[ '2454075466962463024','-3528908605309553140']],[['7015318699935418036','-3698861162604841735'],['-7616997190430405562','-3101173563121949895'],[ '-598004097643795395','6936656258274588029']],[['4448571648049379179','-1294729436797405153'],['-4386935965237698738','1037174166098171788'],[ '7322670651580882248','-7917463919004662038']]],ak=>'-7101778636909228330',al=>212,am=>-3,an=>48,ao=>2580535007,ap=>-2058853707,aq=>2236113589,ar=>1063090004, as=>[[1394180375,1363342466]],at=>[-1018683242,1177628096,-1494088614],au=>206,av=>126,aw=>29009,ax=>[[['4676810249416873487','-7333376236790318990']]],ay=> '7660190118987172289',az=>[[['10109570921568530113','555198448556482722','6327072268883512402'],['13363082765023275824','8160324916783808862', '3983613338139164009'],['699936173668592403','7742379893290399345','2872020490439095325']],[['16101204430866382936','10060794516430402159', '12429468283669739771'],['1344356684086429800','11655675283152788009','16253859213638337667'],['3112266432129362420','2536546716242400991', '7752623011068607848']]],ba=>'4114580608502146666',bb=>-680158697,bc=>'4565936802120622773',bd=>[[[25269],[34120],[30548]]]},db=>{bf=>2236113589,bg=>2236113589, bo=>{bh=>[[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[ [-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=> -126,bj=>1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=> 2800878682,bk=>[[-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=> [[1088904740,-1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707, 1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527, 1783526995,-1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>-12538,bw=>[180,70,206],bx=>1633381168,by=>-1183632135,bz=>'8160324916783808862',ca=> 2521496937,cb=>927507257,cc=>3572919059,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707, cj=>[[25269,34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[ 1063090004]]],[[[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]] ,cv=>32462,cw=>29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dc=>{bf=>2236113589,bg=>2236113589,bo=>{bh=> [[-75,98,72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bp=>{bh=>[[-75,98, 72]],bi=>-75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},bq=>[[{bh=>[[-75,98,72]],bi=> -75,bj=>2236113589,bk=>[[-2058853707,1063090004,1394180375]],bl=>[-2058853707,1063090004],bm=>-2058853707,bn=>-2058853707},{bh=>[[-126,-12,66]],bi=>-126,bj=> 1363342466,bk=>[[1363342466,-1018683242,1177628096]],bl=>[1363342466,-1018683242],bm=>1363342466,bn=>1363342466}],[{bh=>[[90,4,-14]],bi=>90,bj=>2800878682,bk=>[ [-1494088614,1901166286,-1637476849]],bl=>[-1494088614,1901166286],bm=>-1494088614,bn=>-1494088614},{bh=>[[36,94,-25]],bi=>36,bj=>1088904740,bk=>[[1088904740, -1580042126,-1707434710]],bl=>[1088904740,-1580042126],bm=>1088904740,bn=>1088904740}]],br=>[-2058853707,1063090004,1394180375],bs=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],bt=>[[1088904740,-1580042126,-1707434710],[-365950527,1783526995, -1145704767],[-1941149392,571383970,129267212]],bu=>82,bv=>-12538,bw=>[180,70,206],bx=>1633381168,by=>-1183632135,bz=>'8160324916783808862',ca=>2521496937,cb=> 927507257,cc=>3572919059,cd=>'4565936802120622773',cn=>{ce=>2236113589,cf=>2236113589,cg=>2236113589,ch=>'4565936802120622773',ci=>-2058853707,cj=>[[25269, 34120]],ck=>[[[[25269,34120],[30548,16221],[33047,21273]],[[62594,20802],[8342,49992],[11712,17969]]]],cl=>-2058853707,cm=>[[[[-2058853707]]],[[[1063090004]]],[ [[1394180375]]]]},co=>25269,cp=>[34120],cq=>30548,cr=>[[16221],[33047],[21273]],cs=>-2942,ct=>20802,cu=>[[8342,-15544,11712],[17969,1114,-22798]],cv=>32462,cw=> 29009,cx=>15,cy=>22,cz=>-24986,da=>[[[[24100],[16615]]],[[[30834],[-24110]]],[[[-25302],[-26054]]]]},dd=>25269,dj=>{de=>-2058853707,df=>[[1063090004,1394180375, 1363342466],[-1018683242,1177628096,-1494088614],[1901166286,-1637476849,1088904740]],dg=>-1580042126,dh=>[[2587532586,3929016769,1783526995],[3149262529, 2353817904,571383970]],di=>129267212},dk=>-13230,dl=>[[-12538],[18100]],dm=>[[1633381168,-1183632135,-861208226],[1899973702,-1773470359,927507257]],dn=> -722048237,dp=>162966589,dq=>4155733617,dr=>125,ds=>117,dt=>114,du=>1615066141,dv=>107,dw=>107,dx=>[[30571,10203],[-32680,15804],[-2017,-8334]],dy=>107,dz=>107, ea=>668694379,eb=>[[668694379,1035763800,-546113505],[-301452689,-1952506034,-1021413125],[-1401006196,241485928,313007432]],ec=>23081,ed=>26015,ee=>2713798378, ef=>33923,eg=>31,eh=>-110,ei=>-42,ej=>-7791,ek=>27124,el=>[[[113,157],[212,253]],[[48,43],[223,214]],[[207,153],[204,159]]],em=>[[[51,35],[104,125],[67,172]],[[ 141,217],[150,107],[106,38]]],en=>958000451,eo=>23,ep=>8182264,ev=>{eq=>-754820848,er=>22800,es=>-754820848,et=>-754820848,eu=>'-8550609472760686320'},ew=>{eq=> 2030201666,er=>27458,es=>2030201666,et=>2030201666,eu=>'8385205619132623682'},ex=>-653653507},ey=>{ez=>-2058853707,fa=>2236113589,fn=>{fb=>-2058853707,fc=> -2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773',fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[ -75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fo=>{fb=>-2058853707,fc=>-2058853707,fd=>-2058853707,fe=>-75,ff=>-75,fg=>'4565936802120622773', fh=>'4565936802120622773',fi=>[[25269],[-31416]],fj=>[[[181],[98],[72]]],fk=>181,fl=>[[[-75],[98],[72]],[[-123],[84],[119]],[[93],[63],[23]]],fm=>25269},fp=> '4565936802120622773',fq=>62594,fr=>[62594,20802],fs=>62594,ft=>1363342466,fu=>[[1363342466,3276284054],[1177628096,2800878682],[1901166286,2657490447]],fv=> 1363342466,fw=>-126,fx=>130,fy=>130,fz=>'14071532865699640450',ga=>'14071532865699640450',gb=>-2942,gc=>-2942,gd=>-2942,ge=>-126,gf=>-126,gg=>[-126,-12,66],gh=> '14071532865699640450',gi=>1363342466,gj=>1363342466,gk=>1363342466,gl=>['-4375211208009911166'],gu=>{gm=>1363342466,gn=>1363342466,go=>130,gp=> '-4375211208009911166',gq=>1363342466,gr=>-126,gs=>1363342466,gt=>'14071532865699640450'},gv=>[[{gm=>1363342466,gn=>1363342466,go=>130,gp=> '-4375211208009911166',gq=>1363342466,gr=>-126,gs=>1363342466,gt=>'14071532865699640450'},{gm=>1177628096,gn=>1177628096,go=>192,gp=>'-6417061733278339648',gq=> 1177628096,gr=>-64,gs=>1177628096,gt=>'12029682340431211968'}]],gw=>['-4375211208009911166','-6417061733278339648'],gx=>1901166286,gy=>-1637476849,gz=> 1088904740,ha=>[114,120],hb=>-46,hc=>2587532586,hd=>-63,he=>[[[[1783526995,3149262529],[2353817904,571383970]]],[[[129267212,3473329234],[1473136308,1633381168] ]]],hf=>-1183632135,hg=>3433759070,ii=>{hh=>19526,hi=>2521496937,ht=>{hj=>927507257,hk=>927507257,hl=>[[[927507257,3572919059,162966589],[4155733617,1802663293, 1615066141],[668694379,1035763800,3748853791]],[[3993514607,2342461262,3273554171],[2893961100,241485928,313007432],[1704942121,2713798378,2451539075]],[[ 3784396502,2641455604,724630996],[2580535007,590585804,2890104168],[1805048205,1903896170,958000451]]],hm=>-23751,hn=>927507257,ho=>'-3101173563121949895',hp=> 927507257,hq=>'-3101173563121949895',hr=>'-3101173563121949895',hs=>[[927507257,3572919059],[162966589,4155733617],[1802663293,1615066141]]},hu=>{hj=> -680158697,hk=>3614808599,hl=>[[[3614808599,8182264,3540146448],[2304123388,2030201666,1952332821],[3641313789,1630279970,698060525]],[[941594293,3449449198, 4235856047],[419355361,3915340751,4196801631],[1329682793,804342663,3168769628]],[[654196580,3130842261,1717491602],[164464696,4126433007,1880055583],[ 1914471245,426352940,2958869701]]],hm=>-26089,hn=>-680158697,ho=>'35142559902046743',hp=>3614808599,hq=>'35142559902046743',hr=>'35142559902046743',hs=>[[ 3614808599,8182264],[3540146448,2304123388],[2030201666,1952332821]]},hv=>74,hw=>21,hx=>[-1621004899],ig=>[[[{hy=>-29107,hz=>-29107,ia=>77,ib=>77,ic=>77,id=>77, ie=>'11949257883889339981'}]],[[{hy=>7257,hz=>7257,ia=>89,ib=>89,ic=>89,id=>89,ie=>'9883096529827142745'}]],[[{hy=>-15050,hz=>-15050,ia=>54,ib=>54,ic=>54,id=> 54,ie=>'16272299768853218614'}]]],ih=>{hy=>10406,hz=>10406,ia=>166,ib=>166,ic=>166,id=>166,ie=>'14365114366907721894'}},ij=>{hh=>-14954,hi=>1317569906,ht=>{hj=> -1106650864,hk=>3188316432,hl=>[[[3188316432,1409870759,3699224811],[1174141967,4182369623,3424826790],[3067882234,3617909797,2421456644]],[[1737409721, 754647635,332554492],[2494039660,3282115136,1908189440],[3507334133,1956692139,1912522927]],[[4267130807,2602401188,1651801180],[3747661462,3857455561, 2181063779],[4114705051,469329824,468202775]]],hm=>-9968,hn=>-1106650864,ho=>'6055348804680014096',hp=>3188316432,hq=>'6055348804680014096',hr=> '6055348804680014096',hs=>[[3188316432,1409870759],[3699224811,1174141967],[4182369623,3424826790]]},hu=>{hj=>332143729,hk=>332143729,hl=>[[[332143729, 170746245,1028674598],[2899075897,3109015784,3144929042],[1593955950,4220642218,373211743]],[[4009510002,218016399,1104118570],[2744291572,2510140295, 3629611921],[2042645651,1209313619,2995604484]],[[1891001717,1217464078,3981441681],[2903409384,3868812458,3790638090],[1350011419,3717950089,1611554436]]],hm=> 7281,hn=>332143729,ho=>'733349538521947249',hp=>332143729,hq=>'733349538521947249',hr=>'733349538521947249',hs=>[[332143729,170746245],[1028674598,2899075897],[ 3109015784,3144929042]]},hv=>120,hw=>44,hx=>[601837460],ig=>[[[{hy=>-12288,hz=>-12288,ia=>0,ib=>0,ic=>0,id=>0,ie=>'4357902969922768896'}]],[[{hy=>25949,hz=> 25949,ia=>93,ib=>93,ic=>93,id=>93,ie=>'14378715387982800221'}]],[[{hy=>27553,hz=>27553,ia=>161,ib=>161,ic=>161,id=>161,ie=>'16218852159409187745'}]]],ih=>{hy=> -17560,hz=>-17560,ia=>104,ib=>104,ic=>104,id=>104,ie=>'17211034159828417384'}},ik=>{hh=>31043,hi=>798100818,ht=>{hj=>148469045,hk=>148469045,hl=>[[[148469045, 1955910318,4066202864],[2064141029,2452665868,3937232764],[2769298656,4161604403,693356236]],[[380646172,2854125119,3339244337],[3588954414,510397838, 4290189316],[3799675867,2670821494,647173169]],[[2281064367,849704203,950155515],[2463612002,3206736700,2062974277],[4122921046,1471943724,1480544906]]],hm=> 30005,hn=>148469045,ho=>'8400570849867429173',hp=>148469045,hq=>'8400570849867429173',hr=>'8400570849867429173',hs=>[[148469045,1955910318],[4066202864, 2064141029],[2452665868,3937232764]]},hu=>{hj=>-1311475443,hk=>2983491853,hl=>[[[2983491853,4274975743,3770309465],[2748213784,946643554,2021945967],[ 2772875897,308303142,1144059791]],[[2118474299,1554796294,2675871010],[3531479986,818084217,738717777],[2456999355,385350206,3431850456]],[[3917725664, 190664364,1635765825],[3400164934,3722999606,217605636],[3075792450,490851033,3517803968]]],hm=>30989,hn=>-1311475443,ho=>'-85863063347758835',hp=>2983491853, hq=>'-85863063347758835',hr=>'-85863063347758835',hs=>[[2983491853,4274975743],[3770309465,2748213784],[946643554,2021945967]]},hv=>132,hw=>159,hx=>[ -1064084487],ig=>[[[{hy=>-18926,hz=>-18926,ia=>18,ib=>18,ic=>18,id=>18,ie=>'12738415015595914770'}]],[[{hy=>-21968,hz=>-21968,ia=>48,ib=>48,ic=>48,id=>48,ie=> '15211698444584856112'}]],[[{hy=>-8566,hz=>-8566,ia=>138,ib=>138,ic=>138,id=>138,ie=>'644556020419255946'}]]],ih=>{hy=>-28612,hz=>-28612,ia=>60,ib=>60,ic=>60, id=>60,ie=>'9317338456741613628'}},iu=>{il=>232103180,im=>232103180,in=>12,io=>12,ip=>12,iq=>232103180,ir=>[[232103180,980648197],[2522278758,3068663800],[ 1447321828,312636629]],is=>232103180,it=>232103180},iv=>232103180,iw=>232103180,ix=>12,iy=>12,iz=>12,ja=>12,jb=>12,jc=>40204,jd=>40204,je=> '4211851935228468492',jf=>12,jg=>12,jr=>{jh=>232103180,ji=>[[[['4211851935228468492','13179810665941363558','1342764098534007012'],['11944135770949454673', '9261674633803989939','5786810507269617623'],['14519643210225587285','16796337188762536946','3226386832324803014']]]],jj=>12,jk=>232103180,jl=>232103180,jm=> 232103180,jn=>12,jo=>12,jp=>'4211851935228468492',jq=>-25332},js=>{jh=>232103180,ji=>[[[['4211851935228468492','13179810665941363558','1342764098534007012'],[ '11944135770949454673','9261674633803989939','5786810507269617623'],['14519643210225587285','16796337188762536946','3226386832324803014']]]],jj=>12,jk=> 232103180,jl=>232103180,jm=>232103180,jn=>12,jo=>12,jp=>'4211851935228468492',jq=>-25332},jt=>{ab=>'4211851935228468492',be=>{ac=>232103180,ad=>980648197,ae=> 2522278758,af=>[6136,-18712],ag=>24804,ah=>[[[68]],[[86]]],ai=>'8104943659727877333',aj=>[[['5558008960243603507','2039488342470956034'],['4821266495240593791', '-5773671953642544494'],['-2830589576813702226','-396574013523595846']],[['6560603512098313641','-461916909069215686'],['6965059560114339111', '-1575103437538433174'],['4136549591609574036','-6248872290409274729']],[['-2078484084410756011','-9094399657955448546'],['8632167350236826521', '-6158203612282599422'],['766872758556452631','7193298165793512907']]],ak=>'-7541411168516577347',al=>7,am=>-20,an=>63,ao=>3768055624,ap=>232103180,aq=> 232103180,ar=>980648197,as=>[[2522278758,3068663800]],at=>[1447321828,312636629,1887079249],au=>51,av=>24,aw=>42434,ax=>[[['-9185069439905561677', '5786810507269617623']]],ay=>'14519643210225587285',az=>[[['16796337188762536946','3226386832324803014','8848682293905004041'],['13776186055320138274', '8650778438637383940','15061839710373076164'],['16982232608490658756','9466463712142948847','14800187739823639490']],[['18312103509990292924', '5230732614893712305','3701475119182093944'],['17991430912734767729','17264370823186381493','10621713046786259601'],['5350254399687460479', '10562693528148244296','15981964116737535114']]],ba=>'3199577211254135199',bb=>1182397922,bc=>'4211851935228468492',bd=>[[[40204],[3541],[33029]]]},db=>{bf=> 232103180,bg=>232103180,bo=>{bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=> 232103180},bp=>{bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},bq=>[[ {bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},{bh=>[[-8,23,-24]],bi=> -8,bj=>3068663800,bk=>[[-1226303496,1447321828,312636629]],bl=>[-1226303496,1447321828],bm=>-1226303496,bn=>-1226303496}],[{bh=>[[81,-117,122]],bi=>81,bj=> 1887079249,bk=>[[1887079249,-1514006477,1294074803]],bl=>[1887079249,-1514006477],bm=>1887079249,bn=>1887079249},{bh=>[[2,20,-120]],bi=>2,bj=>2156401666,bk=>[[ -2138565630,474855383,1347346815]],bl=>[-2138565630,474855383],bm=>-2138565630,bn=>-2138565630}]],br=>[232103180,980648197,-1772688538],bs=>[[232103180, 980648197,-1772688538],[-1226303496,1447321828,312636629],[1887079249,-1514006477,1294074803]],bt=>[[-2138565630,474855383,1347346815],[1122538581,-914349422, -1344287758],[-384265298,-659047994,751201722]],bu=>9,bv=>-1409,bw=>[169,213,204],bx=>1527509538,by=>-1087449030,bz=>'8650778438637383940',ca=>1621679300,cb=> 3506857834,cc=>3928234948,cd=>'4211851935228468492',cn=>{ce=>232103180,cf=>232103180,cg=>232103180,ch=>'4211851935228468492',ci=>232103180,cj=>[[40204,3541]], ck=>[[[[40204,3541],[33029,14963],[60262,38486]],[[6136,46824],[24804,22084],[29909,4770]]]],cl=>232103180,cm=>[[[[232103180]]],[[[980648197]]],[[[-1772688538]] ]]},co=>40204,cp=>[3541],cq=>33029,cr=>[[14963],[60262],[38486]],cs=>6136,ct=>-18712,cu=>[[24804,22084,29909],[4770,-29871,28794]],cv=>6195,cw=>42434,cx=>179, cy=>3,cz=>19746,da=>[[[[5122],[-32632]]],[[[-18473],[7245]]],[[[-7809],[20558]]]]},dc=>{bf=>232103180,bg=>232103180,bo=>{bh=>[[12,-99,-43]],bi=>12,bj=> 232103180,bk=>[[232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},bp=>{bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[ 232103180,980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},bq=>[[{bh=>[[12,-99,-43]],bi=>12,bj=>232103180,bk=>[[232103180, 980648197,-1772688538]],bl=>[232103180,980648197],bm=>232103180,bn=>232103180},{bh=>[[-8,23,-24]],bi=>-8,bj=>3068663800,bk=>[[-1226303496,1447321828,312636629]] ,bl=>[-1226303496,1447321828],bm=>-1226303496,bn=>-1226303496}],[{bh=>[[81,-117,122]],bi=>81,bj=>1887079249,bk=>[[1887079249,-1514006477,1294074803]],bl=>[ 1887079249,-1514006477],bm=>1887079249,bn=>1887079249},{bh=>[[2,20,-120]],bi=>2,bj=>2156401666,bk=>[[-2138565630,474855383,1347346815]],bl=>[-2138565630, 474855383],bm=>-2138565630,bn=>-2138565630}]],br=>[232103180,980648197,-1772688538],bs=>[[232103180,980648197,-1772688538],[-1226303496,1447321828,312636629],[ 1887079249,-1514006477,1294074803]],bt=>[[-2138565630,474855383,1347346815],[1122538581,-914349422,-1344287758],[-384265298,-659047994,751201722]],bu=>9,bv=> -1409,bw=>[169,213,204],bx=>1527509538,by=>-1087449030,bz=>'8650778438637383940',ca=>1621679300,cb=>3506857834,cc=>3928234948,cd=>'4211851935228468492',cn=>{ce=> 232103180,cf=>232103180,cg=>232103180,ch=>'4211851935228468492',ci=>232103180,cj=>[[40204,3541]],ck=>[[[[40204,3541],[33029,14963],[60262,38486]],[[6136,46824], [24804,22084],[29909,4770]]]],cl=>232103180,cm=>[[[[232103180]]],[[[980648197]]],[[[-1772688538]]]]},co=>40204,cp=>[3541],cq=>33029,cr=>[[14963],[60262],[38486] ],cs=>6136,ct=>-18712,cu=>[[24804,22084,29909],[4770,-29871,28794]],cv=>6195,cw=>42434,cx=>179,cy=>3,cz=>19746,da=>[[[[5122],[-32632]]],[[[-18473],[7245]]],[[[ -7809],[20558]]]]},dd=>-25332,dj=>{de=>232103180,df=>[[980648197,-1772688538,-1226303496],[1447321828,312636629,1887079249],[-1514006477,1294074803,-2138565630] ],dg=>474855383,dh=>[[1347346815,1122538581,3380617874],[2950679538,3910701998,3635919302]],di=>751201722},dk=>5641,dl=>[[-1409],[-10839]],dm=>[[1527509538, -1087449030,-107548412],[2014166311,1621679300,-788109462]],dn=>-366732348,dp=>3953984148,dq=>963115503,dr=>-105,ds=>-94,dt=>95,du=>-1454928958,dv=>85,dw=>85, dx=>[[-11179,-12956],[-16964,-7385],[-22242,-479]],dy=>85,dz=>85,ea=>-849030059,eb=>[[-849030059,-483934788,-31348450],[-2117454927,1217874841,2009833080],[ 861816834,-1433818511,-106010857]],ec=>31413,ed=>2724,ee=>4019674571,ef=>47761,eg=>-45,eh=>99,ei=>-67,ej=>-27801,ek=>-31105,el=>[[[87,151],[7,236]],[[63,74],[ 72,247]],[[151,224],[204,57]]],em=>[[[150,146],[138,44],[46,39]],[[176,87],[203,221],[159,217]]],en=>744959621,eo=>226,ep=>3361827059,ev=>{eq=>-1798542723,er=> 27261,es=>-1798542723,et=>-1798542723,eu=>'-3109652471240430979'},ew=>{eq=>-2097537064,er=>8152,es=>-2097537064,et=>-2097537064,eu=>'7838170680078770136'},ex=> -1784045179},ju=>'4211851935228468492',jv=>'4211851935228468492',jw=>40204,jx=>40204,jy=>[[[[40204,3541,33029]],[[14963,60262,38486]]],[[[6136,46824,24804]],[[ 22084,29909,4770]]],[[[35665,28794,6195]],[[42434,947,19746]]]],jz=>40204,ka=>12,kb=>12},kc=>{mg=>{kd=>-2058853707,ke=>'5987959116413106004',kf=>1363342466,kg=> 3276284054,kh=>11712,ki=>49,kw=>{kj=>[[-1494088614,1901166286],[-1637476849,1088904740],[-1580042126,-1707434710]],kk=>[-1494088614],kl=>2800878682,km=> 2800878682,kn=>[[2800878682,1901166286]],ko=>'8165447025428661338',kp=>['8165447025428661338','4676810249416873487','-7333376236790318990'],kq=> '8165447025428661338',kr=>'8165447025428661338',ks=>[-1494088614],kt=>90,ku=>90,kv=>-1494088614},kx=>'7660190118987172289',ky=>'10109570921568530113',kz=>-63, la=>3149262529,lb=>'-8337173152141021503',lc=>['-8337173152141021503','555198448556482722'],ld=>[[['10109570921568530113','555198448556482722', '6327072268883512402']],[['13363082765023275824','8160324916783808862','3983613338139164009']]],le=>3149262529,lf=>[[3149262529,2353817904]],lg=>3149262529,lh=> -4415,lp=>[[{li=>27411,lj=>[[27411]],lk=>'699936173668592403',ll=>'699936173668592403',lm=>[[[-722048237,162966589,-139233679],[1802663293,1615066141,668694379] ,[1035763800,-546113505,-301452689]]],ln=>27411,lo=>[['699936173668592403'],['7742379893290399345']]},{li=>8014,lj=>[[8014]],lk=>'14059808108471852878',ll=> '14059808108471852878',lm=>[[[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]]],ln=>8014,lo=>[[ '14059808108471852878'],['1037174166098171788']]}],[{li=>27124,lj=>[[27124]],lk=>'3112266432129362420',ll=>'3112266432129362420',lm=>[[[-1653511692,724630996, -1714432289],[590585804,-1404863128,1805048205],[1903896170,958000451,-680158697]]],ln=>27124,lo=>[['3112266432129362420'],['2536546716242400991']]},{li=>-9736, lj=>[[-9736]],lk=>'15204813217218746872',ll=>'15204813217218746872',lm=>[[[8182264,-754820848,-1990843908],[2030201666,1952332821,-653653507],[1630279970, 698060525,941594293]]],ln=>55800,lo=>[['15204813217218746872'],['8719649762058838524']]}]],lq=>{li=>27374,lj=>[[27374]],lk=>'18192863195878288110',ll=> '18192863195878288110',lm=>[[[-845518098,-59111249,419355361],[-379626545,-98165665,1329682793],[804342663,-1126197668,654196580]]],ln=>27374,lo=>[[ '18192863195878288110'],['16816260478660434657']]},lr=>'7376570264875490453',ls=>'17722894814364403768',lt=>31,lu=>28687,lv=>-31923,lw=>28,lx=>114,ly=>[[[[44],[ 161]],[[105],[25]],[[197],[196]]]],lz=>92,ma=>-1187965622,mb=>-1621004899,mc=>1254264397,md=>[['6142378113139755708'],['-1645285875830501394']],me=>[53868],mf=> [57810,10406,13669]},mh=>{kd=>-950328472,ke=>'5658919656636925334',kf=>3188316432,kg=>1409870759,kh=>-20245,ki=>125,kw=>{kj=>[[1174141967,-112597673],[ -870140506,-1227085062],[-677057499,-1873510652]],kk=>[1174141967],kl=>1174141967,km=>1174141967,kn=>[[1174141967,4182369623]],ko=>'-483603321966560241',kp=>[ '-483603321966560241','-5270290207275305562','-8046666975429727195'],kq=>'-483603321966560241',kr=>'-483603321966560241',ks=>[1174141967],kt=>15,ku=>15,kv=> 1174141967},kx=>'3241186914066154681',ky=>'10711818774959513852',kz=>-4,la=>332554492,lb=>'-7734925298750037764',lc=>['-7734925298750037764', '8195611242654669376'],ld=>[[['10711818774959513852','8195611242654669376','8403928748852620277']],[['18327187265731610799','7094432050196610468', '16567645484015994518']]],le=>332554492,lf=>[[332554492,2494039660]],lg=>332554492,lh=>24828,lp=>[[{li=>25699,lj=>[[25699]],lk=>'17672523628912075875',ll=> '17672523628912075875',lm=>[[[-2113903517,-180262245,469329824],[468202775,332143729,170746245],[1028674598,-1395891399,-1185951512]]],ln=>25699,lo=>[[ '17672523628912075875'],['2010915606990776224']]},{li=>-12526,lj=>[[-12526]],lk=>'6845988679659540242',ll=>'6845988679659540242',lm=>[[[-1150038254,1593955950, -74325078],[373211743,-285457294,218016399],[1104118570,-1550675724,-1784827001]]],ln=>53010,lo=>[['6845988679659540242'],['1602932234888799146']]}],[{li=> 31633,lj=>[[31633]],lk=>'8773096271991241617',ll=>'8773096271991241617',lm=>[[[-665355375,2042645651,1209313619],[-1299362812,1891001717,1217464078],[ -313525615,-1391557912,-426154838]]],ln=>31633,lo=>[['8773096271991241617'],['12866023291740268883']]},{li=>-29686,lj=>[[-29686]],lk=>'5798254897622191114',ll=> '5798254897622191114',lm=>[[[-504329206,1350011419,-577017207],[1611554436,243805304,601837460],[2011025408,1014653353,-1289198243]]],ln=>35850,lo=>[[ '5798254897622191114'],['6921573602061675145']]}]],lq=>{li=>30070,lj=>[[30070]],lk=>'11108528298467751286',ll=>'11108528298467751286',lm=>[[[-947161738, -1708561503,-518721509],[1638906728,-287711135,-70813373],[798100818,148469045,1955910318]]],ln=>30070,lo=>[['11108528298467751286'],['7039050801730613275']]}, lr=>'8865418217952990448',ls=>'16910285960572352012',lt=>-32,lu=>-23280,lv=>2867,lw=>13,lx=>248,ly=>[[[[204],[198]],[[83],[41]],[[28],[51]]]],lz=>176,ma=> -1440842177,mb=>-955722959,mc=>3588954414,md=>[['-20521267330544242'],['-6975653099726015525']],me=>[5169],mf=>[9875,18351,34806]},mi=>{kd=>849704203,ke=> '-7865611094136309509',kf=>3206736700,kg=>2062974277,kh=>-14250,ki=>190,kw=>{kj=>[[1471943724,1480544906],[-1311475443,-19991553],[-524657831,-1546753512]],kk=> [1471943724],kl=>1471943724,km=>1471943724,kn=>[[1471943724,1480544906]],ko=>'6358891953001337900',kp=>['6358891953001337900','-85863063347758835', '-6643255745242834087'],kq=>'6358891953001337900',kr=>'6358891953001337900',ks=>[1471943724],kt=>44,ku=>44,kv=>1471943724},kx=>'8684191803490738786',ky=> '1324151914916919929',kz=>121,la=>2772875897,lb=>'1324151914916919929',lc=>['1324151914916919929','9098777832765585295'],ld=>[[['1324151914916919929', '9098777832765585295','11492778477819285254']],[['3513644960920247218','10552731876756811857','14739685473668037182']]],le=>2772875897,lf=>[[2772875897, 308303142]],lg=>2772875897,lh=>-17799,lp=>[[{li=>-16416,lj=>[[-16416]],lk=>'818897211810365408',ll=>'818897211810365408',lm=>[[[-377241632,190664364,1635765825] ,[-894802362,-571967690,217605636],[-1219174846,490851033,-777163328]]],ln=>49120,lo=>[['818897211810365408'],['14603597194171764289']]},{li=>-24700,lj=>[[ -24700]],lk=>'13876536005094907780',ll=>'13876536005094907780',lm=>[[[-1063673980,-1064084487,907589138],[-1329073929,-338187728,-753217757],[451796618, 150072393,103518268]]],ln=>40836,lo=>[['13876536005094907780'],['12738415015595914770']]}],[{li=>-10762,lj=>[[-10762]],lk=>'996875569566963190',ll=> '996875569566963190',lm=>[[[-2125605386,232103180,980648197],[-1772688538,-1226303496,1447321828],[312636629,1887079249,-1514006477]]],ln=>54774,lo=>[[ '996875569566963190'],['10833104777986146565']]},{li=>947,lj=>[[947]],lk=>'9261674633803989939',ll=>'9261674633803989939',lm=>[[[1294074803,-2138565630, 474855383],[1347346815,1122538581,-914349422],[-1344287758,-384265298,-659047994]]],ln=>947,lo=>[['9261674633803989939'],['5786810507269617623']]}]],lq=>{li=> 28090,lj=>[[28090]],lk=>'18050170060185955770',ll=>'18050170060185955770',lm=>[[[751201722,-92334583,2060244393],[1527509538,-1087449030,-107548412],[ 2014166311,1621679300,-788109462]]],ln=>28090,lo=>[['18050170060185955770'],['6560603512098313641']]},lr=>'16982232608490658756',ls=>'9466463712142948847',lt=> -62,lu=>-22201,lv=>-11179,lw=>100,lx=>205,ly=>[[[[188],[189]],[[39],[227]],[[30],[169]]]],lz=>33,ma=>-2117454927,mb=>1217874841,mc=>2009833080,md=>[[ '-6158203612282599422'],['766872758556452631']],me=>[24011],mf=>[61335,47761,25555]},mj=>'-7541411168516577347',ou=>[[{mk=>['16183675675834575879', '2823242990084307404'],ml=>'16183675675834575879',mm=>'16183675675834575879',mn=>1245703175,mo=>1245703175,mp=>1245703175,mq=>7,mr=>7,ms=>22448,mt=>56779,mu=>[ -9825,-31684],mv=>2218580383,mw=>[[2218580383],[744959621]],mx=>[-97],my=>-97,mz=>-97,na=>159,nb=>['3199577211254135199'],nq=>{nc=>'14438937274395260386',nd=> '15337091602469120637',ne=>[[[['7838170680078770136'],['6338798129934606725'],['5837070750880514404']],[['12251487722594918884'],['5115129471442097571'],[ '6301746486302456423']],[['10257103587122409201'],['11432276215941873281'],['4466900161961532886']]]],nf=>'1478851282813619424',ng=>-11269,nh=>31765,ni=>-38,nj=> 4132369329,nk=>787525742,nl=>680051021,nm=>43263,nn=>'-5789036089143978082',no=>18619,np=>-1092974590},nr=>[['5256058393179735452']],ns=>'5256058393179735452', nt=>156,nu=>156,nv=>156,nw=>3291497884,nx=>[17820,50224],ny=>-1003469412,nz=>-1003469412,oa=>[[17820,-15312,17730],[18673,7096,-24234],[-4195,24440,-5041]],ob=> [[[17820]],[[-15312]],[[17730]]],oc=>-100,od=>-100,oe=>-1003469412,of=>-1003469412,og=>[3427146167,3340000071],oh=>-387816708,oi=>-387816708,oj=>[25340,-5918], ok=>'3102304785032962812',ol=>[['3102304785032962812','1366044192217212050','5371941907818177193']],om=>[3907150588,722311619,2291639442],on=>3907150588,oo=> 3907150588,op=>3907150588,oq=>[25340,-5918,-26173],or=>25340,os=>[[252],[98]],ot=>252}]],ov=>{mk=>['4279241623495376841','4079404124927535055'],ml=> '4279241623495376841',mm=>'4279241623495376841',mn=>2357329865,mo=>2357329865,mp=>-1937637431,mq=>-55,mr=>-55,ms=>6011,mt=>2140,mu=>[9506,14802],mv=>970073378, mw=>[[970073378],[3037083517]],mx=>[34],my=>34,mz=>34,na=>34,nb=>['-5402569692003818206'],nq=>{nc=>'11353333398815960393',nd=>'12541993899289435977',ne=>[[[[ '7801119036446620090'],['10686774475928325649'],['5017575570227502593']],[['11603539883796097304'],['291672421789787933'],['7873347163653381746']],[[ '2207224681977750305'],['18182901544486855671'],['15574263314845706388']]]],nf=>'3330544485912019360',ng=>9446,nh=>19191,ni=>-27473,nj=>1880837404,nk=> 4055693068,nl=>2612565757,nm=>35933,nn=>'-2760408246606353878',no=>40418,np=>-25041070},nr=>[['-431579968224341032']],ns=>'-431579968224341032',nt=>216,nu=>216, nv=>216,nw=>902845400,nx=>[21464,13776],ny=>902845400,nz=>902845400,oa=>[[21464,13776,-18354],[-1534,10013,15882],[-10833,7859,31645]],ob=>[[[21464]],[[13776]], [[-18354]]],oc=>-40,od=>-40,oe=>902845400,of=>902845400,og=>[99966858,3567498996],oh=>1772541413,oi=>1772541413,oj=>[-10779,27046],ok=>'5974471240480904677',ol=> [['5974471240480904677','-6527652610381219482','6155978030408304499']],om=>[1772541413,1391039984,756250982],on=>1772541413,oo=>1772541413,op=>1772541413,oq=>[ -10779,27046,-27152],or=>-10779,os=>[[229],[213]],ot=>229},ow=>[[{mk=>['9058481435274278393','14930872439993316291'],ml=>'9058481435274278393',mm=> '9058481435274278393',mn=>436106745,mo=>436106745,mp=>436106745,mq=>-7,mr=>-7,ms=>60608,mt=>59301,mu=>[-10791,-2841],mv=>4108834265,mw=>[[4108834265],[ 1561859664]],mx=>[-39],my=>-39,mz=>-39,na=>217,nb=>['6708136181930382809'],nq=>{nc=>'10414879379027654168',nd=>'5104886353663954604',ne=>[[[[ '4987691728449865754'],['7876703958831977522'],['11596937235213228256']],[['8439105228165753487'],['14195895288439720779'],['993518774371589943']],[[ '1371617209496046918'],['15959995137941852255'],['9483310586605523230']]]],nf=>'7967372636975430301',ng=>11170,nh=>4012,ni=>22001,nj=>325901884,nk=>1445412958, nl=>2347165552,nm=>56212,nn=>'4960712682345481020',no=>57083,np=>831694954},nr=>[['-7201721232176571']],ns=>'-7201721232176571',nt=>69,nu=>69,nv=>69,nw=> 2620344901,nx=>[19013,39983],ny=>-1674622395,nz=>-1674622395,oa=>[[19013,-25553,27154],[-26,6630,29265],[-5345,12989,-2679]],ob=>[[[19013]],[[-25553]],[[27154]] ],oc=>69,od=>69,oe=>-1674622395,of=>-1674622395,og=>[566639976,1374633571],oh=>574113854,oi=>574113854,oj=>[18494,8760],ok=>'-6816395672666224578',ol=>[[ '-6816395672666224578','-5298582567290402748','6384217735582328342']],om=>[574113854,2707901504,1737754692],on=>574113854,oo=>574113854,op=>574113854,oq=>[ 18494,8760,19520],or=>18494,os=>[[62],[72]],ot=>62},{mk=>['3091891134085985613','8531256649531891254'],ml=>'3091891134085985613',mm=>'3091891134085985613',mn=> 3680499021,mo=>3680499021,mp=>-614468275,mq=>77,mr=>77,ms=>33780,mt=>63196,mu=>[30369,29390],mv=>1926133409,mw=>[[1926133409],[1853856171]],mx=>[-95],my=>-95, mz=>-95,na=>161,nb=>['7962251627858917025'],nq=>{nc=>'13821153652839092987',nd=>'14313091013165502685',ne=>[[[['16623308207441924895'],['16097847631359265432'], ['671083062689840816']],[['3726520526298001507'],['2722442135970522801'],['13992419519733415314']],[['10138144747987114787'],['4571058910765540785'],[ '6476650627646986941']]]],nf=>'-2903099178980463114',ng=>-26454,nh=>-26257,ni=>32677,nj=>4208464051,nk=>2757186025,nl=>2250611133,nm=>6935,nn=> '3926468970968687524',no=>57846,np=>-1723840868},nr=>[['7371448156213860761']],ns=>'7371448156213860761',nt=>153,nu=>153,nv=>153,nw=>3746945433,nx=>[55705, 57173],ny=>-548021863,nz=>-548021863,oa=>[[-9831,-8363,-23286],[26188,28561,177],[-23805,-5035,21183]],ob=>[[[-9831]],[[-8363]],[[-23286]]],oc=>-103,od=>-103, oe=>-548021863,of=>-548021863,og=>[3801584224,653069787],oh=>-1316895762,oi=>-1316895762,oj=>[-15378,-20095],ok=>'6755149468347253742',ol=>[[ '6755149468347253742','7309181676120210136','8304781162590686414']],om=>[2978071534,1572805798,1005615832],on=>2978071534,oo=>2978071534,op=>2978071534,oq=>[ -15378,-20095,7334],or=>-15378,os=>[[238],[195]],ot=>238}],[{mk=>['5543036146327005064','8655619072305591807'],ml=>'5543036146327005064',mm=> '5543036146327005064',mn=>3203966856,mo=>3203966856,mp=>-1091000440,mq=>-120,mr=>-120,ms=>62826,mt=>26820,mu=>[8790,-9563],mv=>3668255318,mw=>[[3668255318],[ 3087083811]],mx=>[86],my=>86,mz=>86,na=>86,nb=>['-5187820061785251242'],nq=>{nc=>'3234583165971657345',nd=>'412506416670810990',ne=>[[[['14445821402249741849'], ['7190222836968138507'],['1515621447174091774']],[['7552785512500700527'],['4201611016473581077'],['11937530923343395097']],[['17409108548264871205'],[ '12108796790220809392'],['13305937302619361387']]]],nf=>'56828968521135682',ng=>24977,nh=>32492,ni=>-11322,nj=>1935992455,nk=>3476019669,nl=>1563052249,nm=> 4030,nn=>'5674002317161582729',no=>9219,np=>1860508779},nr=>[['-609729958678177782']],ns=>'-609729958678177782',nt=>10,nu=>10,nv=>10,nw=>1142085642,nx=>[55306, 17426],ny=>1142085642,nz=>1142085642,oa=>[[-10230,17426,-12843],[-2167,-24759,-11841],[-18389,-14155,5861]],ob=>[[[-10230]],[[17426]],[[-12843]]],oc=>10,od=>10, oe=>1142085642,of=>1142085642,og=>[83149937,1078780388],oh=>-564904320,oi=>-564904320,oj=>[16000,-8620],ok=>'-3245458180560109952',ol=>[['-3245458180560109952', '7881824972277012269','-6228667516944732026']],om=>[3730062976,3539325178,1985992493],on=>3730062976,oo=>3730062976,op=>3730062976,oq=>[16000,-8620,-12038],or=> 16000,os=>[[128],[62]],ot=>128},{mk=>['406073197466957807','14113705518448238235'],ml=>'406073197466957807',mm=>'406073197466957807',mn=>4023597039,mo=> 4023597039,mp=>-271370257,mq=>-17,mr=>-17,ms=>39130,mt=>5003,mu=>[-23853,29241],mv=>1916379859,mw=>[[1916379859],[2686856849]],mx=>[-45],my=>-45,mz=>-45,na=> 211,nb=>['-6906781776304561453'],nq=>{nc=>'10374862261784835202',nd=>'8543262886048068457',ne=>[[[['746669084603537704'],['4636683289877871153'],[ '6144253268885549631']],[['16512716235122384837'],['10839708526080578365'],['16516074129829385605']],[['1782675910389909500'],['6844335407529499677'],[ '404310083040668083']]]],nf=>'4434970631269267892',ng=>21011,nh=>20378,ni=>-14394,nj=>3891871223,nk=>692945473,nl=>2369031733,nm=>47140,nn=> '-4815125214610879126',no=>7412,np=>-306567485},nr=>[['1896796310601996238']],ns=>'1896796310601996238',nt=>206,nu=>206,nv=>206,nw=>3769898958,nx=>[6094,57524], ny=>-525068338,nz=>-525068338,oa=>[[6094,-8012,-14799],[6738,-9145,-19940],[11432,-19308,-8340]],ob=>[[[6094]],[[-8012]],[[-14799]]],oc=>-50,od=>-50,oe=> -525068338,of=>-525068338,og=>[1496605836,842204494],oh=>2088828462,oi=>2088828462,oj=>[-466,31872],ok=>'-2896213955909190098',ol=>[['-2896213955909190098', '-64175559528721096','5519474577667089369']],om=>[2088828462,3620639936,721900856],on=>2088828462,oo=>2088828462,op=>2088828462,oq=>[-466,31872,-27456],or=> -466,os=>[[46],[254]],ot=>46}],[{mk=>['15156035716863958439','2291008132738316372'],ml=>'15156035716863958439',mm=>'15156035716863958439',mn=>852434343,mo=> 852434343,mp=>852434343,mq=>-89,mr=>-89,ms=>14635,mt=>46013,mu=>[-8048,-27420],mv=>2498027664,mw=>[[2498027664],[1718618395]],mx=>[-112],my=>-112,mz=>-112,na=> 144,nb=>['7381409803327037584'],nq=>{nc=>'18343752660922507486',nd=>'261616947348401278',ne=>[[[['12626058829355168892'],['347164616358563822'],[ '14778219856227839895']],[['6149374282297029947'],['17205913150695127148'],['2878735188948115612']],[['16433602884861192406'],['8947888363443175584'],[ '9600958315165105256']]]],nf=>'-3401469758527437931',ng=>11498,nh=>18517,ni=>2998,nj=>232885002,nk=>3105093316,nl=>413524023,nm=>56976,nn=> '5544518885271369156',no=>39399,np=>-26233398},nr=>[['-1052719289775932622']],ns=>'-1052719289775932622',nt=>50,nu=>50,nv=>50,nw=>750009138,nx=>[15154,11444], ny=>750009138,nz=>750009138,oa=>[[15154,11444,-670],[-3741,6845,28973],[-6718,-29137,-6067]],ob=>[[[15154]],[[11444]],[[-670]]],oc=>50,od=>50,oe=>750009138,of=> 750009138,og=>[102325939,2033302608],oh=>70705696,oi=>70705696,oj=>[-7648,1078],ok=>'7896627253024842272',ol=>[['7896627253024842272','-4365249560913511559', '-5246559209253150963']],om=>[70705696,1838576806,97647481],on=>70705696,oo=>70705696,op=>70705696,oq=>[-7648,1078,29862],or=>-7648,os=>[[32],[226]],ot=>32}, {mk=>['13866855832975218829','11424077683271697861'],ml=>'13866855832975218829',mm=>'13866855832975218829',mn=>202021005,mo=>202021005,mp=>202021005,mq=>-115, mr=>-115,ms=>36977,mt=>20766,mu=>[-4534,-19952],mv=>2987454026,mw=>[[2987454026],[905164777]],mx=>[74],my=>74,mz=>74,na=>74,nb=>['3887653117693587018'],nq=>{nc=> '5784765917866617499',nd=>'4769132199690432622',ne=>[[[['15157629401928009003'],['1930208575943788588'],['17720849129744743164']],[['17063221118826232376'],[ '10997765792962534244'],['10188403892069606576']],[['2375243595972883008'],['13169849018844963951'],['100485459742633623']]]],nf=>'-8883007926738784110',ng=> -9198,nh=>26409,ni=>4692,nj=>1718207632,nk=>2288909559,nl=>2017612736,nm=>9911,nn=>'6033209292715431981',no=>54107,np=>299742177},nr=>[['-4927650830213798628']] ,ns=>'-4927650830213798628',nt=>28,nu=>28,nv=>28,nw=>2146608412,nx=>[42268,32754],ny=>2146608412,nz=>2146608412,oa=>[[-23268,32754,30637],[-17507,-21342,-1356], [8092,-27873,9189]],ob=>[[[-23268]],[[32754]],[[30637]]],oc=>28,od=>28,oe=>2146608412,of=>2146608412,og=>[667091032,2871313098],oh=>1350792984,oi=>1350792984, oj=>[30488,20611],ok=>'6646151176796731160',ol=>[['6646151176796731160','1690524493301961557','-5751813916654672780']],om=>[1350792984,1547427656,3814478677], on=>1350792984,oo=>1350792984,op=>1350792984,oq=>[30488,20611,-8376],or=>30488,os=>[[24],[119]],ot=>24}]],ox=>28478,oy=>28478,oz=>[[28478,10585],[756,3284]],pa=> 28478,pb=>28478,pc=>693727038,pd=>28478,pe=>62,pf=>28478,pg=>-21002,ph=>184833026,pi=>921981441,pj=>[[[-1617903701,-627428264],[962638948,-102433360],[ 603440552,158633614]]],pk=>-882253137,pl=>1173731460,pm=>[[[[1875722352,1188229004]],[[4075611187,3219525656]]],[[[3609693802,1435619704]],[[708224838, 2415175095]]],[[[523357826,4030725689]],[[3432977249,4070561671]]]],pn=>-105,po=>9,pp=>777772192,pq=>22067,pr=>2694,ps=>[[['780362829233719942', '9345739563853076710']],[['16779318685897625099','164344521127228892']],[['17999910920364876589','8828477524735428634']]],pt=>[3496282758,181692379],pu=>-122, pv=>'780362829233719942',pw=>['780362829233719942','-9101004509856474906'],px=>2694,py=>2694,pz=>[[2694,-12187]],qi=>{qa=>'11291347294187458440',qb=> '11291347294187458440',qc=>'11291347294187458440',qd=>[['11291347294187458440']],qe=>[[966561672],[2628971658]],qf=>966561672,qg=>-28792,qh=>966561672},qj=> -17274,qk=>-17274,ql=>-17274,qm=>-17274,qn=>48262,qo=>134,qp=>'3889698806608215174',qq=>-17274,qr=>[[-1021002618,905641076]],qs=>-1021002618,qt=>-1800040830,qu=> -694656241,rg=>{qv=>'6551954075072411189',qw=>'-1992936419695561019',qx=>['-6942239734872660935','-4012647432982498586','-3802567911853239849'],qy=>-1256385928, qz=>-616442425,ra=>[[[[-1574171340],[1478291065],[-1600370751]],[[-309232345],[1157710234],[-2101049025]],[[1400011713],[2077061313],[-278739151]]]],rb=> '8758013611466584222',rc=>'-7444138742278693280',rd=>[136330583,2516792903],re=>'-5657788443315847009',rf=>[['-5359084824872912961'],['7337754411600390203']]}, rh=>{qv=>'-5981988360362356259',qw=>'5692333025785247476',qx=>['-7682338995054331963','-2840832703165068361','-1710910250647930003'],qy=>-552355094,qz=> 973214024,ra=>[[[[-650857831],[-69210282],[-1054225696]],[[-1748437444],[107030229],[-1684004887]],[[666029776],[-1576425180],[1206172716]]]],rb=> '5969349131819274729',rc=>'-7148791927621001024',rd=>[1438349587,3303636346],re=>'9140670105754198697',rf=>[['7765661077878520352'],['-3628397253630899083']]}, ri=>110,rs=>[{rj=>'2479401249560230682',rk=>[['2479401249560230682','-351153308364180916','3815424990503537042']],rl=>31514,rm=>31514,rn=>'2479401249560230682', ro=>-810386662,rp=>26,rq=>[26,123,178],rr=>26}],rt=>[{rj=>'14264314612322342283',rk=>[['-4182429461387209333','-8395911204375614600','-7331330547875690834']], rl=>5515,rm=>5515,rn=>'-4182429461387209333',ro=>2011370891,rp=>139,rq=>[139,21,227],rr=>139}],ru=>{rj=>'17338362060507688617',rk=>[['-1108382013201862999', '-6626690350051937144','1851376704937496892']],rl=>-20823,rm=>-20823,rn=>'-1108382013201862999',ro=>1940631209,rp=>169,rq=>[169,174,171],rr=>169},rv=>[ '15829028962795464798']},rw=>{rx=>-2058853707,ry=>-2058853707,uo=>{rz=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[ -2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707,sg=>-2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269, sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466,-1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=> 2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740, 2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=>2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589, to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]] ]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497, ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242, 1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995, -1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589,ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[ -1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[-365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=> 129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598', '11660514817326145060','16874998530878119210']],[['13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036', '14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[4155733617,1802663293,1615066141],ui=>'4448571648049379179',uj=>[ 3748853791],uk=>[111,50,8],ul=>-18},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004','14071532865699640450','12029682340431211968'],[ '11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579','2454075466962463024','14917835468399998476'],[ '7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[4155733617,1802663293,1615066141],ui=> '4448571648049379179',uj=>[3748853791],uk=>[111,50,8],ul=>-18}},up=>[[{rz=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],sa=>[[ -2058853707,1063090004]],sb=>-75,sc=>[-75,98],sd=>25269,se=>25269,sf=>-2058853707,sg=>-2058853707,sh=>[[25269,-31416],[30548,16221],[-32489,21273]],si=>25269, sj=>25269,sk=>'4565936802120622773',sl=>23,sm=>-127,sn=>25,so=>83,sp=>[[1363342466,-1018683242]],sq=>[1177628096,2800878682],sr=>1901166286,ss=>2236113589,st=> 2236113589,su=>2236113589,sv=>[[[[2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096]]],[[[2800878682,1901166286,2657490447],[1088904740, 2714925170,2587532586]]]],sw=>'4565936802120622773',sx=>'4565936802120622773',sy=>2236113589,sz=>2236113589,ta=>[25269,-31416,30548],tb=>25269,tc=>2236113589, to=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]] ]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},tp=>{td=>[[-2058853707,1063090004, 1394180375],[1363342466,-1018683242,1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497, ti=>-5584,tj=>[1783526995,-1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},tq=>{td=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242, 1177628096],[-1494088614,1901166286,-1637476849]],te=>[[[[24100,16615]]],[[[30834,-24110]]]],tf=>-25302,tg=>-26054,th=>2497,ti=>-5584,tj=>[1783526995, -1145704767],tk=>-1941149392,tl=>571383970,tm=>30220,tn=>1972},ub=>{tr=>2236113589,ts=>1063090004,tt=>-32489,tu=>1363342466,tv=>3276284054,tw=>11712,tx=>[[[ -1494088614],[1901166286],[-1637476849]],[[1088904740],[-1580042126],[-1707434710]],[[-365950527],[1783526995],[-1145704767]]],ty=>-1941149392,tz=>-94,ua=> 129267212},um=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004','14071532865699640450','12029682340431211968'],['11413834561198587598', '11660514817326145060','16874998530878119210']],[['13525979570356778579','2454075466962463024','14917835468399998476'],['7015318699935418036', '14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[4155733617,1802663293,1615066141],ui=>'4448571648049379179',uj=>[ 3748853791],uk=>[111,50,8],ul=>-18},un=>{uc=>[-75,98,72],ud=>-123,ue=>[[['5987959116413106004','14071532865699640450','12029682340431211968'],[ '11413834561198587598','11660514817326145060','16874998530878119210']],[['13525979570356778579','2454075466962463024','14917835468399998476'],[ '7015318699935418036','14747882911104709881','10829746883279146054']]],uf=>'15345570510587601721',ug=>44093,uh=>[4155733617,1802663293,1615066141],ui=> '4448571648049379179',uj=>[3748853791],uk=>[111,50,8],ul=>-18}}],[{rz=>[[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121]],sa=>[[ -1952506034,-1021413125]],sb=>78,sc=>[78,31],sd=>8014,se=>8014,sf=>-1952506034,sg=>-1952506034,sh=>[[8014,-29793],[30971,-15586],[22412,-21378]],si=>8014,sj=> 8014,sk=>'14059808108471852878',sl=>140,sm=>87,sn=>126,so=>172,sp=>[[241485928,313007432]],sq=>[1704942121,2713798378],sr=>2451539075,ss=>2342461262,st=> 2342461262,su=>2342461262,sv=>[[[[2342461262,3273554171,2893961100],[241485928,313007432,1704942121]]],[[[2713798378,2451539075,3784396502],[2641455604, 724630996,2580535007]]]],sw=>'-4386935965237698738',sx=>'-4386935965237698738',sy=>2342461262,sz=>2342461262,ta=>[8014,-29793,30971],tb=>8014,tc=>2342461262,to=> {td=>[[-1952506034,-1021413125,-1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]],te=>[[[[27124,-25231]]],[[[-556,11056]]]],tf=> -10529,tg=>-26161,th=>-24628,ti=>9011,tj=>[-1404863128,1805048205],tk=>1903896170,tl=>958000451,tm=>-26089,tn=>-10379},tp=>{td=>[[-1952506034,-1021413125, -1401006196],[241485928,313007432,1704942121],[-1581168918,-1843428221,-510570794]],te=>[[[[27124,-25231]]],[[[-556,11056]]]],tf=>-10529,tg=>-26161,th=>-24628, ti=>9011,tj=>[-1404863128,1805048205],tk=>1903896170,tl=>958000451,tm=>-26089,tn=>-10379},tq=>{td=>[[-1952506034,-1021413125,-1401006196],[241485928,313007432, 1704942121],[-1581168918,-1843428221,-510570794]],te=>[[[[27124,-25231]]],[[[-556,11056]]]],tf=>-10529,tg=>-26161,th=>-24628,ti=>9011,tj=>[-1404863128, 1805048205],tk=>1903896170,tl=>958000451,tm=>-26089,tn=>-10379},ub=>{tr=>2342461262,ts=>3273554171,tt=>22412,tu=>241485928,tv=>313007432,tw=>23081,tx=>[[[ -1581168918],[-1843428221],[-510570794]],[[-1653511692],[724630996],[-1714432289]],[[590585804],[-1404863128],[1805048205]]],ty=>1903896170,tz=>67,ua=> 3614808599},um=>{uc=>[78,31,-97],ud=>-117,ue=>[[['12429468283669739771','1344356684086429800','11655675283152788009'],['16253859213638337667', '3112266432129362420','2536546716242400991']],[['7752623011068607848','4114580608502146666','35142559902046743'],['9896134600948865296','8385205619132623682', '7001999158115174909']]],uf=>'4044116695233302253',ug=>27374,uh=>[4235856047,419355361,3915340751],ui=>'5710944114185739359',uj=>[804342663],uk=>[92,-106,-33], ul=>-68},un=>{uc=>[78,31,-97],ud=>-117,ue=>[[['12429468283669739771','1344356684086429800','11655675283152788009'],['16253859213638337667', '3112266432129362420','2536546716242400991']],[['7752623011068607848','4114580608502146666','35142559902046743'],['9896134600948865296','8385205619132623682', '7001999158115174909']]],uf=>'4044116695233302253',ug=>27374,uh=>[4235856047,419355361,3915340751],ui=>'5710944114185739359',uj=>[804342663],uk=>[92,-106,-33], ul=>-68}}],[{rz=>[[654196580,-1164125035,1717491602],[164464696,-168534289,1880055583]],sa=>[[654196580,-1164125035]],sb=>100,sc=>[100,63],sd=>16228,se=>16228, sf=>654196580,sg=>654196580,sh=>[[16228,9982],[-9067,-17764],[-10350,26206]],si=>16228,sj=>16228,sk=>'13446865120583892836',sl=>146,sm=>-41,sn=>94,so=>102,sp=>[ [164464696,-168534289]],sq=>[1880055583,1914471245],sr=>426352940,ss=>654196580,st=>654196580,su=>654196580,sv=>[[[[654196580,3130842261,1717491602],[164464696, 4126433007,1880055583]]],[[[1914471245,426352940,2958869701],[3107001674,2673962397,1254264397]]]],sw=>'-4999878953125658780',sx=>'-4999878953125658780',sy=> 654196580,sz=>654196580,ta=>[16228,9982,-9067],tb=>16228,tc=>654196580,to=>{td=>[[654196580,-1164125035,1717491602],[164464696,-168534289,1880055583],[ 1914471245,426352940,-1336097595]],te=>[[[[5450,-18127]]],[[[28061,-24735]]]],tf=>-29107,tg=>19138,th=>19132,ti=>-23084,tj=>[1430133849,-1993879570],tk=> -383072970,tl=>-506277268,tm=>10406,tn=>13669},tp=>{td=>[[654196580,-1164125035,1717491602],[164464696,-168534289,1880055583],[1914471245,426352940,-1336097595] ],te=>[[[[5450,-18127]]],[[[28061,-24735]]]],tf=>-29107,tg=>19138,th=>19132,ti=>-23084,tj=>[1430133849,-1993879570],tk=>-383072970,tl=>-506277268,tm=>10406,tn=> 13669},tq=>{td=>[[654196580,-1164125035,1717491602],[164464696,-168534289,1880055583],[1914471245,426352940,-1336097595]],te=>[[[[5450,-18127]]],[[[28061, -24735]]]],tf=>-29107,tg=>19138,th=>19132,ti=>-23084,tj=>[1430133849,-1993879570],tk=>-383072970,tl=>-506277268,tm=>10406,tn=>13669},ub=>{tr=>654196580,ts=> 3130842261,tt=>-10350,tu=>164464696,tv=>4126433007,tw=>24351,tx=>[[[1914471245],[426352940],[-1336097595]],[[-1187965622],[-1621004899],[1254264397]],[[ -1512813892],[1430133849],[-1993879570]]],ty=>-383072970,tz=>108,ua=>895821990},um=>{uc=>[100,63,-2],ud=>38,ue=>[[['7376570264875490453','17722894814364403768', '8222591388287459103'],['12708248599346651436','11484581048955770186','11949257883889339981']],[['9883096529827142745','16272299768853218614', '14365114366907721894'],['5658919656636925334','6055348804680014096','5042901352825336043']]],uf=>'14709519061697029463',ug=>11002,uh=>[3617909797,2421456644, 1737409721],ui=>'1428310668032541267',uj=>[2494039660],uk=>[64,26,-95],ul=>-61},un=>{uc=>[100,63,-2],ud=>38,ue=>[[['7376570264875490453','17722894814364403768', '8222591388287459103'],['12708248599346651436','11484581048955770186','11949257883889339981']],[['9883096529827142745','16272299768853218614', '14365114366907721894'],['5658919656636925334','6055348804680014096','5042901352825336043']]],uf=>'14709519061697029463',ug=>11002,uh=>[3617909797,2421456644, 1737409721],ui=>'1428310668032541267',uj=>[2494039660],uk=>[64,26,-95],ul=>-61}}]],uq=>-75,ur=>2236113589,us=>25269,ut=>[[34120],[30548]],uu=>16221,uv=>33047, uw=>4102181657,ux=>[[546722114,767607624,73025073],[2127472370,370110801,1579458150]],uy=>231,vh=>{uz=>[[[[25269,-31416,30548]],[[16221,-32489,21273]],[[-2942, 20802,8342]]]],va=>[[[72,-61],[-64,45],[49,70]]],vb=>90,vc=>4,vd=>[[[-22798,32462],[29009,5647],[-24986,24100]]],ve=>[[16615]],vf=>30834,vg=> '703012593382105554'},vi=>2236113589,vj=>2236113589,vk=>['4565936802120622773','5855511306112172311','5057874162447032470'],vl=>'8165447025428661338',vm=> '4676810249416873487',vn=>[[['-7333376236790318990','7660190118987172289','-8337173152141021503'],['555198448556482722','6327072268883512402', '-5083661308686275792'],['8160324916783808862','3983613338139164009','699936173668592403']],[['7742379893290399345','2872020490439095325', '-2345539642843168680'],['-8385949557279149457','-6017275790039811845','1344356684086429800'],['-6791068790556763607','-2192884860071213949', '3112266432129362420']],[['2536546716242400991','7752623011068607848','4114580608502146666'],['35142559902046743','-8550609472760686320','8385205619132623682'], ['7001999158115174909','4044116695233302253','-253880877831263506']]],vo=>'-1630483595049116959',vp=>95,vq=>28,vr=>[[38],[250],[105]],vs=>2270118233,vt=> 1546645835,vu=>-2058853707,vv=>-2058853707,vw=>-2058853707,vx=>'4565936802120622773',vy=>181,vz=>181,wi=>{wa=>'4565936802120622773',wb=>'5855511306112172311', wc=>3276284054,wd=>[[192]],we=>2800878682,wf=>206,wg=>126,wh=>2657490447},ws=>{wj=>2236113589,wk=>'5987959116413106004',wl=>'14071532865699640450',wm=> '12029682340431211968',wn=>1901166286,wo=>[15,22,102],wp=>24100,wq=>[16615,30834],wr=>[[41426,40234,39482],[2497,59952,30291],[27214,61121,48053]]},wt=>{wj=> 2236113589,wk=>'5987959116413106004',wl=>'14071532865699640450',wm=>'12029682340431211968',wn=>1901166286,wo=>[15,22,102],wp=>24100,wq=>[16615,30834],wr=>[[ 41426,40234,39482],[2497,59952,30291],[27214,61121,48053]]},wu=>'4565936802120622773',wv=>'4565936802120622773',ww=>'4565936802120622773',wx=>[[2236113589, 1063090004,1394180375]],wy=>25269,wz=>[[25269,34120]],xa=>'4565936802120622773',xh=>{xb=>25269,xc=>[['4565936802120622773','5855511306112172311'],[ '5057874162447032470','8165447025428661338'],['4676810249416873487','-7333376236790318990']],xd=>25269,xe=>25269,xf=>-75,xg=>-75},xi=>[['4565936802120622773', '5855511306112172311','5057874162447032470'],['8165447025428661338','4676810249416873487','-7333376236790318990'],['7660190118987172289','-8337173152141021503', '555198448556482722']],xj=>'4565936802120622773',xk=>[[2236113589,1063090004],[1394180375,1363342466]],xl=>181,xm=>181,xn=>[181],xo=>25269,xp=>2236113589,xq=> 2236113589,xr=>-2058853707,xs=>[[25269],[34120]],xt=>'4565936802120622773',xu=>['4565936802120622773','5855511306112172311','5057874162447032470'],ye=>{xv=> 2236113589,xw=>1063090004,xx=>[[1394180375],[1363342466],[3276284054]],xy=>11712,xz=>[[[[17969,1114,-22798]]],[[[32462,29009,5647]]]],ya=>102,yb=>[[[[24100, 16615],[30834,41426]],[[40234,39482],[2497,59952]]],[[[30291,27214],[61121,48053]],[[26928,35916],[41122,8718]]],[[[30220,1972],[52306,52998]],[[18100,22478],[ 27440,24923]]]],yc=>[[13561],[47475],[350]],yd=>52395},yf=>[[-2058853707,1063090004,1394180375],[1363342466,-1018683242,1177628096]],yg=>-2058853707,yh=> -2058853707,yi=>-2058853707,yj=>-2058853707,yk=>25269,yl=>181,ym=>181,yn=>'4565936802120622773',yo=>'4565936802120622773',yp=>'4565936802120622773',yq=>[25269, 34120],yr=>181,ys=>2236113589,yt=>2236113589,yu=>-2058853707,yv=>25269,yw=>25269,yx=>25269,yy=>[[25269,34120,30548]],yz=>25269,za=>25269,zb=>25269,zc=>[[25269, -31416],[30548,16221]],zd=>[[-75],[98]],ze=>-75,zf=>[[-2058853707,1063090004],[1394180375,1363342466]],zg=>181,zh=>181,zi=>25269,zj=>'4565936802120622773',zk=> -75,zl=>-75,zm=>25269,zn=>[[-2058853707,1063090004]],zo=>[181,98,72],zp=>-75,zq=>-75,zr=>-75,zs=>[25269],zt=>-75,zu=>-75,zv=>[[[2236113589,1063090004],[ 1394180375,1363342466]]],zw=>[[2236113589,1063090004,1394180375],[1363342466,3276284054,1177628096],[2800878682,1901166286,2657490447]],zx=>[[181,98,72]],zy=> '4565936802120622773',zz=>1394180375,aaa=>[1363342466,-1018683242],aab=>1177628096,aac=>[[[[-1494088614]],[[1901166286]],[[-1637476849]]],[[[1088904740]],[[ -1580042126]],[[-1707434710]]],[[[-365950527]],[[1783526995]],[[-1145704767]]]],aad=>-1941149392,aae=>162,aaf=>[[[160],[14],[34]],[[12],[118],[180]],[[7],[82],[ 204]]],aar=>[[{aag=>181,aah=>[[98,72],[133,84],[119,93]],aai=>1394180375,aaj=>1363342466,aak=>3276284054,aal=>1177628096,aam=>90,aan=>4,aao=>[-14,-90],aap=> '-7032909512510964018',aaq=>1088904740},{aag=>114,aah=>[[120,210],[161,42],[157,58]],aai=>3929016769,aaj=>1783526995,aak=>3149262529,aal=>-1941149392,aam=>162, aan=>-96,aao=>[14,34],aap=>'-3528908605309553140',aaq=>1473136308}],[{aag=>48,aah=>[[107,91],[97,249],[52,115]],aai=>3433759070,aaj=>1899973702,aak=>2521496937, aal=>927507257,aam=>19,aan=>107,aao=>[-10,-44],aap=>'-598004097643795395',aaq=>1802663293},{aag=>29,aah=>[[244,67],[96,107],[119,219]],aai=>1035763800,aaj=> 3748853791,aak=>3993514607,aal=>-1952506034,aam=>251,aan=>120,aao=>[30,-61],aap=>'1037174166098171788',aaq=>313007432}],[{aag=>41,aah=>[[90,159],[101,234],[70, 193]],aai=>2451539075,aaj=>3784396502,aak=>2641455604,aal=>724630996,aam=>223,aan=>-42,aao=>[-49,-103],aap=>'-6033841189525676084',aaq=>1805048205},{aag=>106, aah=>[[38,123],[113,67],[237,25]],aai=>3614808599,aaj=>8182264,aak=>3540146448,aal=>-1990843908,aam=>66,aan=>107,aao=>[2,121],aap=>'-2807420433528374251',aaq=> 1630279970}]],aas=>2236113589,aat=>2236113589,aau=>[[[2236113589,1063090004],[1394180375,1363342466]]]}}}, ); my %members = ( 1 => { kc=>[ 'mg.kd',1,2,3,'mg.ke',1,2,3,4,5,6,7,'mg.kf',1,2,3,'mg.kg',1,2,3,'mg.kh',1,'mg.ki','mg+23','mg.kw.kj[0][0]',1,2,3,'mg.kw.kj[0][1]',1,2,3,'mg.kw.kj[1][0]',1,2,3, 'mg.kw.kj[1][1]',1,2,3,'mg.kw.kj[2][0]',1,2,3,'mg.kw.kj[2][1]',1,2,3,'mg.kx',1,2,3,4,5,6,7,'mg.ky',1,2,3,'mg.lf[0][1]',5,6,7,'mg.lc[1]',1,2,3,4,5,6,7, 'mg.ld[0][0][2]',1,2,3,4,5,6,7,'mg.ld[1][0][0]',1,2,3,4,5,6,7,'mg.ld[1][0][1]',1,2,3,4,5,6,7,'mg.ld[1][0][2]',1,2,3,4,5,6,7,'mg.lp[0][0].li',1, 'mg.lp[0][0].lk+2','mg.lp[0][0].lk+3','mg.lp[0][0].lm[0][0][1]','mg.lp[0][0].lk+5','mg.lp[0][0].lk+6','mg.lp[0][0].lk+7','mg.lp[0][0].lm[0][0][2]',1,2,3, 'mg.lp[0][0].lm[0][1][0]',1,2,3,'mg.lp[0][0].lm[0][1][1]',1,2,3,'mg.lp[0][0].lm[0][1][2]',1,2,3,'mg.lp[0][0].lm[0][2][0]',1,2,3,'mg.lp[0][0].lm[0][2][1]',1,2,3, 'mg.lp[0][0].lm[0][2][2]',1,2,3,'mg.lp[0][1].li',1,'mg.lp[0][1].lk+2','mg.lp[0][1].lk+3','mg.lp[0][1].lm[0][0][1]','mg.lp[0][1].lk+5','mg.lp[0][1].lk+6', 'mg.lp[0][1].lk+7','mg.lp[0][1].lm[0][0][2]',1,2,3,'mg.lp[0][1].lm[0][1][0]',1,2,3,'mg.lp[0][1].lm[0][1][1]',1,2,3,'mg.lp[0][1].lm[0][1][2]',1,2,3, 'mg.lp[0][1].lm[0][2][0]',1,2,3,'mg.lp[0][1].lm[0][2][1]',1,2,3,'mg.lp[0][1].lm[0][2][2]',1,2,3,'mg.lp[1][0].li',1,'mg.lp[1][0].lk+2','mg.lp[1][0].lk+3', 'mg.lp[1][0].lm[0][0][1]','mg.lp[1][0].lk+5','mg.lp[1][0].lk+6','mg.lp[1][0].lk+7','mg.lp[1][0].lm[0][0][2]',1,2,3,'mg.lp[1][0].lm[0][1][0]',1,2,3, 'mg.lp[1][0].lm[0][1][1]',1,2,3,'mg.lp[1][0].lm[0][1][2]',1,2,3,'mg.lp[1][0].lm[0][2][0]',1,2,3,'mg.lp[1][0].lm[0][2][1]',1,2,3,'mg.lp[1][0].lm[0][2][2]',1,2,3, 'mg.lp[1][1].li',1,'mg.lp[1][1].lk+2','mg.lp[1][1].lk+3','mg.lp[1][1].lm[0][0][1]','mg.lp[1][1].lk+5','mg.lp[1][1].lk+6','mg.lp[1][1].lk+7', 'mg.lp[1][1].lm[0][0][2]',1,2,3,'mg.lp[1][1].lm[0][1][0]',1,2,3,'mg.lp[1][1].lm[0][1][1]',1,2,3,'mg.lp[1][1].lm[0][1][2]',1,2,3,'mg.lp[1][1].lm[0][2][0]',1,2,3, 'mg.lp[1][1].lm[0][2][1]',1,2,3,'mg.lp[1][1].lm[0][2][2]',1,2,3,'mg.lq.li',1,'mg.lq.lk+2','mg.lq.lk+3','mg.lq.lm[0][0][1]','mg.lq.lk+5','mg.lq.lk+6', 'mg.lq.lk+7','mg.lq.lm[0][0][2]',1,2,3,'mg.lq.lm[0][1][0]',1,2,3,'mg.lq.lm[0][1][1]',1,2,3,'mg.lq.lm[0][1][2]',1,2,3,'mg.lq.lm[0][2][0]',1,2,3, 'mg.lq.lm[0][2][1]',1,2,3,'mg.lq.lm[0][2][2]',1,2,3,'mg.lr',1,2,3,4,5,6,7,'mg.ls',1,2,3,4,5,6,7,'mg.lt','mg+301','mg.lu',1,'mg.lv',1,'mg.lw','mg.lx', 'mg.ly[0][0][0][0]','mg.ly[0][0][1][0]','mg.ly[0][1][0][0]','mg.ly[0][1][1][0]','mg.ly[0][2][0][0]','mg.ly[0][2][1][0]','mg.lz','mg+315','mg.ma',1,2,3,'mg.mb', 1,2,3,'mg.mc',1,2,3,'mg.md[0][0]',1,2,3,4,5,6,7,'mg.md[1][0]',1,2,3,4,5,6,7,'mg.me[0]',1,'mg.mf[0]',1,'mg.mf[1]',1,'mg.mf[2]',1,'mh.kd',1,2,3,'mh.ke',1,2,3,4,5, 6,7,'mh.kf',1,2,3,'mh.kg',1,2,3,'mh.kh',1,'mh.ki','mh+23','mh.kw.kj[0][0]',1,2,3,'mh.kw.kj[0][1]',1,2,3,'mh.kw.kj[1][0]',1,2,3,'mh.kw.kj[1][1]',1,2,3, 'mh.kw.kj[2][0]',1,2,3,'mh.kw.kj[2][1]',1,2,3,'mh.kx',1,2,3,4,5,6,7,'mh.ky',1,2,3,'mh.lf[0][1]',5,6,7,'mh.lc[1]',1,2,3,4,5,6,7,'mh.ld[0][0][2]',1,2,3,4,5,6,7, 'mh.ld[1][0][0]',1,2,3,4,5,6,7,'mh.ld[1][0][1]',1,2,3,4,5,6,7,'mh.ld[1][0][2]',1,2,3,4,5,6,7,'mh.lp[0][0].li',1,'mh.lp[0][0].lk+2','mh.lp[0][0].lk+3', 'mh.lp[0][0].lm[0][0][1]','mh.lp[0][0].lk+5','mh.lp[0][0].lk+6','mh.lp[0][0].lk+7','mh.lp[0][0].lm[0][0][2]',1,2,3,'mh.lp[0][0].lm[0][1][0]',1,2,3, 'mh.lp[0][0].lm[0][1][1]',1,2,3,'mh.lp[0][0].lm[0][1][2]',1,2,3,'mh.lp[0][0].lm[0][2][0]',1,2,3,'mh.lp[0][0].lm[0][2][1]',1,2,3,'mh.lp[0][0].lm[0][2][2]',1,2,3, 'mh.lp[0][1].li',1,'mh.lp[0][1].lk+2','mh.lp[0][1].lk+3','mh.lp[0][1].lm[0][0][1]','mh.lp[0][1].lk+5','mh.lp[0][1].lk+6','mh.lp[0][1].lk+7', 'mh.lp[0][1].lm[0][0][2]',1,2,3,'mh.lp[0][1].lm[0][1][0]',1,2,3,'mh.lp[0][1].lm[0][1][1]',1,2,3,'mh.lp[0][1].lm[0][1][2]',1,2,3,'mh.lp[0][1].lm[0][2][0]',1,2,3, 'mh.lp[0][1].lm[0][2][1]',1,2,3,'mh.lp[0][1].lm[0][2][2]',1,2,3,'mh.lp[1][0].li',1,'mh.lp[1][0].lk+2','mh.lp[1][0].lk+3','mh.lp[1][0].lm[0][0][1]', 'mh.lp[1][0].lk+5','mh.lp[1][0].lk+6','mh.lp[1][0].lk+7','mh.lp[1][0].lm[0][0][2]',1,2,3,'mh.lp[1][0].lm[0][1][0]',1,2,3,'mh.lp[1][0].lm[0][1][1]',1,2,3, 'mh.lp[1][0].lm[0][1][2]',1,2,3,'mh.lp[1][0].lm[0][2][0]',1,2,3,'mh.lp[1][0].lm[0][2][1]',1,2,3,'mh.lp[1][0].lm[0][2][2]',1,2,3,'mh.lp[1][1].li',1, 'mh.lp[1][1].lk+2','mh.lp[1][1].lk+3','mh.lp[1][1].lm[0][0][1]','mh.lp[1][1].lk+5','mh.lp[1][1].lk+6','mh.lp[1][1].lk+7','mh.lp[1][1].lm[0][0][2]',1,2,3, 'mh.lp[1][1].lm[0][1][0]',1,2,3,'mh.lp[1][1].lm[0][1][1]',1,2,3,'mh.lp[1][1].lm[0][1][2]',1,2,3,'mh.lp[1][1].lm[0][2][0]',1,2,3,'mh.lp[1][1].lm[0][2][1]',1,2,3, 'mh.lp[1][1].lm[0][2][2]',1,2,3,'mh.lq.li',1,'mh.lq.lk+2','mh.lq.lk+3','mh.lq.lm[0][0][1]','mh.lq.lk+5','mh.lq.lk+6','mh.lq.lk+7','mh.lq.lm[0][0][2]',1,2,3, 'mh.lq.lm[0][1][0]',1,2,3,'mh.lq.lm[0][1][1]',1,2,3,'mh.lq.lm[0][1][2]',1,2,3,'mh.lq.lm[0][2][0]',1,2,3,'mh.lq.lm[0][2][1]',1,2,3,'mh.lq.lm[0][2][2]',1,2,3, 'mh.lr',1,2,3,4,5,6,7,'mh.ls',1,2,3,4,5,6,7,'mh.lt','mh+301','mh.lu',1,'mh.lv',1,'mh.lw','mh.lx','mh.ly[0][0][0][0]','mh.ly[0][0][1][0]','mh.ly[0][1][0][0]', 'mh.ly[0][1][1][0]','mh.ly[0][2][0][0]','mh.ly[0][2][1][0]','mh.lz','mh+315','mh.ma',1,2,3,'mh.mb',1,2,3,'mh.mc',1,2,3,'mh.md[0][0]',1,2,3,4,5,6,7, 'mh.md[1][0]',1,2,3,4,5,6,7,'mh.me[0]',1,'mh.mf[0]',1,'mh.mf[1]',1,'mh.mf[2]',1,'mi.kd',1,2,3,'mi.ke',1,2,3,4,5,6,7,'mi.kf',1,2,3,'mi.kg',1,2,3,'mi.kh',1, 'mi.ki','mi+23','mi.kw.kj[0][0]',1,2,3,'mi.kw.kj[0][1]',1,2,3,'mi.kw.kj[1][0]',1,2,3,'mi.kw.kj[1][1]',1,2,3,'mi.kw.kj[2][0]',1,2,3,'mi.kw.kj[2][1]',1,2,3, 'mi.kx',1,2,3,4,5,6,7,'mi.ky',1,2,3,'mi.lf[0][1]',5,6,7,'mi.lc[1]',1,2,3,4,5,6,7,'mi.ld[0][0][2]',1,2,3,4,5,6,7,'mi.ld[1][0][0]',1,2,3,4,5,6,7,'mi.ld[1][0][1]', 1,2,3,4,5,6,7,'mi.ld[1][0][2]',1,2,3,4,5,6,7,'mi.lp[0][0].li',1,'mi.lp[0][0].lk+2','mi.lp[0][0].lk+3','mi.lp[0][0].lm[0][0][1]','mi.lp[0][0].lk+5', 'mi.lp[0][0].lk+6','mi.lp[0][0].lk+7','mi.lp[0][0].lm[0][0][2]',1,2,3,'mi.lp[0][0].lm[0][1][0]',1,2,3,'mi.lp[0][0].lm[0][1][1]',1,2,3,'mi.lp[0][0].lm[0][1][2]', 1,2,3,'mi.lp[0][0].lm[0][2][0]',1,2,3,'mi.lp[0][0].lm[0][2][1]',1,2,3,'mi.lp[0][0].lm[0][2][2]',1,2,3,'mi.lp[0][1].li',1,'mi.lp[0][1].lk+2','mi.lp[0][1].lk+3', 'mi.lp[0][1].lm[0][0][1]','mi.lp[0][1].lk+5','mi.lp[0][1].lk+6','mi.lp[0][1].lk+7','mi.lp[0][1].lm[0][0][2]',1,2,3,'mi.lp[0][1].lm[0][1][0]',1,2,3, 'mi.lp[0][1].lm[0][1][1]',1,2,3,'mi.lp[0][1].lm[0][1][2]',1,2,3,'mi.lp[0][1].lm[0][2][0]',1,2,3,'mi.lp[0][1].lm[0][2][1]',1,2,3,'mi.lp[0][1].lm[0][2][2]',1,2,3, 'mi.lp[1][0].li',1,'mi.lp[1][0].lk+2','mi.lp[1][0].lk+3','mi.lp[1][0].lm[0][0][1]','mi.lp[1][0].lk+5','mi.lp[1][0].lk+6','mi.lp[1][0].lk+7', 'mi.lp[1][0].lm[0][0][2]',1,2,3,'mi.lp[1][0].lm[0][1][0]',1,2,3,'mi.lp[1][0].lm[0][1][1]',1,2,3,'mi.lp[1][0].lm[0][1][2]',1,2,3,'mi.lp[1][0].lm[0][2][0]',1,2,3, 'mi.lp[1][0].lm[0][2][1]',1,2,3,'mi.lp[1][0].lm[0][2][2]',1,2,3,'mi.lp[1][1].li',1,'mi.lp[1][1].lk+2','mi.lp[1][1].lk+3','mi.lp[1][1].lm[0][0][1]', 'mi.lp[1][1].lk+5','mi.lp[1][1].lk+6','mi.lp[1][1].lk+7','mi.lp[1][1].lm[0][0][2]',1,2,3,'mi.lp[1][1].lm[0][1][0]',1,2,3,'mi.lp[1][1].lm[0][1][1]',1,2,3, 'mi.lp[1][1].lm[0][1][2]',1,2,3,'mi.lp[1][1].lm[0][2][0]',1,2,3,'mi.lp[1][1].lm[0][2][1]',1,2,3,'mi.lp[1][1].lm[0][2][2]',1,2,3,'mi.lq.li',1,'mi.lq.lk+2', 'mi.lq.lk+3','mi.lq.lm[0][0][1]','mi.lq.lk+5','mi.lq.lk+6','mi.lq.lk+7','mi.lq.lm[0][0][2]',1,2,3,'mi.lq.lm[0][1][0]',1,2,3,'mi.lq.lm[0][1][1]',1,2,3, 'mi.lq.lm[0][1][2]',1,2,3,'mi.lq.lm[0][2][0]',1,2,3,'mi.lq.lm[0][2][1]',1,2,3,'mi.lq.lm[0][2][2]',1,2,3,'mi.lr',1,2,3,4,5,6,7,'mi.ls',1,2,3,4,5,6,7,'mi.lt', 'mi+301','mi.lu',1,'mi.lv',1,'mi.lw','mi.lx','mi.ly[0][0][0][0]','mi.ly[0][0][1][0]','mi.ly[0][1][0][0]','mi.ly[0][1][1][0]','mi.ly[0][2][0][0]', 'mi.ly[0][2][1][0]','mi.lz','mi+315','mi.ma',1,2,3,'mi.mb',1,2,3,'mi.mc',1,2,3,'mi.md[0][0]',1,2,3,4,5,6,7,'mi.md[1][0]',1,2,3,4,5,6,7,'mi.me[0]',1,'mi.mf[0]', 1,'mi.mf[1]',1,'mi.mf[2]',1,'mj',1,2,3,4,5,6,7,'ou[0][0].mk[0]',1,2,3,4,5,6,7,'ou[0][0].mk[1]',1,2,3,4,5,6,7,'ou[0][0].ms',1,'ou[0][0].mt',1,'ou[0][0].mu[0]',1, 'ou[0][0].mu[1]',1,'ou[0][0].mw[1][0]',1,2,3,'ou[0][0].nq.nc',1,2,3,4,5,6,7,'ou[0][0].nq.nd',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.nf',1,2,3,4,5,6,7,'ou[0][0].nq.ng',1,'ou[0][0].nq.nh',1,'ou[0][0].nq.ni',1,'ou[0][0].nq.nj',1,2,3, 'ou[0][0].nq.nk',1,2,3,'ou[0][0].nq.nl',1,2,3,'ou[0][0].nq.nm',1,'ou[0][0].nq.nn',1,2,3,4,5,6,7,'ou[0][0].nq.no',1,'ou[0][0].nq.np',1,2,3,'ou[0][0].nr[0][0]',1, 'ou[0][0].nx[1]',3,'ou[0][0].oa[0][2]',5,'ou[0][0].oa[1][0]',7,'ou[0][0].oa[1][1]',1,'ou[0][0].oa[1][2]',1,'ou[0][0].oa[2][0]',1,'ou[0][0].oa[2][1]',1, 'ou[0][0].oa[2][2]',1,'ou[0][0].og[0]',1,2,3,'ou[0][0].og[1]',1,2,3,'ou[0][0].oh','ou[0][0].os[1][0]','ou[0][0].oj[1]',3,'ou[0][0].om[1]','ou[0][0].ok+5', 'ou[0][0].ok+6','ou[0][0].ok+7','ou[0][0].ol[0][1]',1,2,3,4,5,6,7,'ou[0][0].ol[0][2]',1,2,3,4,5,6,7,'ov.mk[0]',1,2,3,4,5,6,7,'ov.mk[1]',1,2,3,4,5,6,7,'ov.ms',1, 'ov.mt',1,'ov.mu[0]',1,'ov.mu[1]',1,'ov.mw[1][0]',1,2,3,'ov.nq.nc',1,2,3,4,5,6,7,'ov.nq.nd',1,2,3,4,5,6,7,'ov.nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][1][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ov.nq.nf', 1,2,3,4,5,6,7,'ov.nq.ng',1,'ov.nq.nh',1,'ov.nq.ni',1,'ov.nq.nj',1,2,3,'ov.nq.nk',1,2,3,'ov.nq.nl',1,2,3,'ov.nq.nm',1,'ov.nq.nn',1,2,3,4,5,6,7,'ov.nq.no',1, 'ov.nq.np',1,2,3,'ov.nr[0][0]',1,'ov.nx[1]',3,'ov.oa[0][2]',5,'ov.oa[1][0]',7,'ov.oa[1][1]',1,'ov.oa[1][2]',1,'ov.oa[2][0]',1,'ov.oa[2][1]',1,'ov.oa[2][2]',1, 'ov.og[0]',1,2,3,'ov.og[1]',1,2,3,'ov.oh','ov.os[1][0]','ov.oj[1]',3,'ov.om[1]','ov.ok+5','ov.ok+6','ov.ok+7','ov.ol[0][1]',1,2,3,4,5,6,7,'ov.ol[0][2]',1,2,3,4, 5,6,7,'ow[0][0].mk[0]',1,2,3,4,5,6,7,'ow[0][0].mk[1]',1,2,3,4,5,6,7,'ow[0][0].ms',1,'ow[0][0].mt',1,'ow[0][0].mu[0]',1,'ow[0][0].mu[1]',1,'ow[0][0].mw[1][0]',1, 2,3,'ow[0][0].nq.nc',1,2,3,4,5,6,7,'ow[0][0].nq.nd',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.nf',1, 2,3,4,5,6,7,'ow[0][0].nq.ng',1,'ow[0][0].nq.nh',1,'ow[0][0].nq.ni',1,'ow[0][0].nq.nj',1,2,3,'ow[0][0].nq.nk',1,2,3,'ow[0][0].nq.nl',1,2,3,'ow[0][0].nq.nm',1, 'ow[0][0].nq.nn',1,2,3,4,5,6,7,'ow[0][0].nq.no',1,'ow[0][0].nq.np',1,2,3,'ow[0][0].nr[0][0]',1,'ow[0][0].nx[1]',3,'ow[0][0].oa[0][2]',5,'ow[0][0].oa[1][0]',7, 'ow[0][0].oa[1][1]',1,'ow[0][0].oa[1][2]',1,'ow[0][0].oa[2][0]',1,'ow[0][0].oa[2][1]',1,'ow[0][0].oa[2][2]',1,'ow[0][0].og[0]',1,2,3,'ow[0][0].og[1]',1,2,3, 'ow[0][0].oh','ow[0][0].os[1][0]','ow[0][0].oj[1]',3,'ow[0][0].om[1]','ow[0][0].ok+5','ow[0][0].ok+6','ow[0][0].ok+7','ow[0][0].ol[0][1]',1,2,3,4,5,6,7, 'ow[0][0].ol[0][2]',1,2,3,4,5,6,7,'ow[0][1].mk[0]',1,2,3,4,5,6,7,'ow[0][1].mk[1]',1,2,3,4,5,6,7,'ow[0][1].ms',1,'ow[0][1].mt',1,'ow[0][1].mu[0]',1, 'ow[0][1].mu[1]',1,'ow[0][1].mw[1][0]',1,2,3,'ow[0][1].nq.nc',1,2,3,4,5,6,7,'ow[0][1].nq.nd',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.nf',1,2,3,4,5,6,7,'ow[0][1].nq.ng',1,'ow[0][1].nq.nh',1,'ow[0][1].nq.ni',1,'ow[0][1].nq.nj',1,2,3, 'ow[0][1].nq.nk',1,2,3,'ow[0][1].nq.nl',1,2,3,'ow[0][1].nq.nm',1,'ow[0][1].nq.nn',1,2,3,4,5,6,7,'ow[0][1].nq.no',1,'ow[0][1].nq.np',1,2,3,'ow[0][1].nr[0][0]',1, 'ow[0][1].nx[1]',3,'ow[0][1].oa[0][2]',5,'ow[0][1].oa[1][0]',7,'ow[0][1].oa[1][1]',1,'ow[0][1].oa[1][2]',1,'ow[0][1].oa[2][0]',1,'ow[0][1].oa[2][1]',1, 'ow[0][1].oa[2][2]',1,'ow[0][1].og[0]',1,2,3,'ow[0][1].og[1]',1,2,3,'ow[0][1].oh','ow[0][1].os[1][0]','ow[0][1].oj[1]',3,'ow[0][1].om[1]','ow[0][1].ok+5', 'ow[0][1].ok+6','ow[0][1].ok+7','ow[0][1].ol[0][1]',1,2,3,4,5,6,7,'ow[0][1].ol[0][2]',1,2,3,4,5,6,7,'ow[1][0].mk[0]',1,2,3,4,5,6,7,'ow[1][0].mk[1]',1,2,3,4,5,6, 7,'ow[1][0].ms',1,'ow[1][0].mt',1,'ow[1][0].mu[0]',1,'ow[1][0].mu[1]',1,'ow[1][0].mw[1][0]',1,2,3,'ow[1][0].nq.nc',1,2,3,4,5,6,7,'ow[1][0].nq.nd',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.nf',1,2,3,4,5,6,7,'ow[1][0].nq.ng',1,'ow[1][0].nq.nh',1, 'ow[1][0].nq.ni',1,'ow[1][0].nq.nj',1,2,3,'ow[1][0].nq.nk',1,2,3,'ow[1][0].nq.nl',1,2,3,'ow[1][0].nq.nm',1,'ow[1][0].nq.nn',1,2,3,4,5,6,7,'ow[1][0].nq.no',1, 'ow[1][0].nq.np',1,2,3,'ow[1][0].nr[0][0]',1,'ow[1][0].nx[1]',3,'ow[1][0].oa[0][2]',5,'ow[1][0].oa[1][0]',7,'ow[1][0].oa[1][1]',1,'ow[1][0].oa[1][2]',1, 'ow[1][0].oa[2][0]',1,'ow[1][0].oa[2][1]',1,'ow[1][0].oa[2][2]',1,'ow[1][0].og[0]',1,2,3,'ow[1][0].og[1]',1,2,3,'ow[1][0].oh','ow[1][0].os[1][0]', 'ow[1][0].oj[1]',3,'ow[1][0].om[1]','ow[1][0].ok+5','ow[1][0].ok+6','ow[1][0].ok+7','ow[1][0].ol[0][1]',1,2,3,4,5,6,7,'ow[1][0].ol[0][2]',1,2,3,4,5,6,7, 'ow[1][1].mk[0]',1,2,3,4,5,6,7,'ow[1][1].mk[1]',1,2,3,4,5,6,7,'ow[1][1].ms',1,'ow[1][1].mt',1,'ow[1][1].mu[0]',1,'ow[1][1].mu[1]',1,'ow[1][1].mw[1][0]',1,2,3, 'ow[1][1].nq.nc',1,2,3,4,5,6,7,'ow[1][1].nq.nd',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[1][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.nf',1, 2,3,4,5,6,7,'ow[1][1].nq.ng',1,'ow[1][1].nq.nh',1,'ow[1][1].nq.ni',1,'ow[1][1].nq.nj',1,2,3,'ow[1][1].nq.nk',1,2,3,'ow[1][1].nq.nl',1,2,3,'ow[1][1].nq.nm',1, 'ow[1][1].nq.nn',1,2,3,4,5,6,7,'ow[1][1].nq.no',1,'ow[1][1].nq.np',1,2,3,'ow[1][1].nr[0][0]',1,'ow[1][1].nx[1]',3,'ow[1][1].oa[0][2]',5,'ow[1][1].oa[1][0]',7, 'ow[1][1].oa[1][1]',1,'ow[1][1].oa[1][2]',1,'ow[1][1].oa[2][0]',1,'ow[1][1].oa[2][1]',1,'ow[1][1].oa[2][2]',1,'ow[1][1].og[0]',1,2,3,'ow[1][1].og[1]',1,2,3, 'ow[1][1].oh','ow[1][1].os[1][0]','ow[1][1].oj[1]',3,'ow[1][1].om[1]','ow[1][1].ok+5','ow[1][1].ok+6','ow[1][1].ok+7','ow[1][1].ol[0][1]',1,2,3,4,5,6,7, 'ow[1][1].ol[0][2]',1,2,3,4,5,6,7,'ow[2][0].mk[0]',1,2,3,4,5,6,7,'ow[2][0].mk[1]',1,2,3,4,5,6,7,'ow[2][0].ms',1,'ow[2][0].mt',1,'ow[2][0].mu[0]',1, 'ow[2][0].mu[1]',1,'ow[2][0].mw[1][0]',1,2,3,'ow[2][0].nq.nc',1,2,3,4,5,6,7,'ow[2][0].nq.nd',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.nf',1,2,3,4,5,6,7,'ow[2][0].nq.ng',1,'ow[2][0].nq.nh',1,'ow[2][0].nq.ni',1,'ow[2][0].nq.nj',1,2,3, 'ow[2][0].nq.nk',1,2,3,'ow[2][0].nq.nl',1,2,3,'ow[2][0].nq.nm',1,'ow[2][0].nq.nn',1,2,3,4,5,6,7,'ow[2][0].nq.no',1,'ow[2][0].nq.np',1,2,3,'ow[2][0].nr[0][0]',1, 'ow[2][0].nx[1]',3,'ow[2][0].oa[0][2]',5,'ow[2][0].oa[1][0]',7,'ow[2][0].oa[1][1]',1,'ow[2][0].oa[1][2]',1,'ow[2][0].oa[2][0]',1,'ow[2][0].oa[2][1]',1, 'ow[2][0].oa[2][2]',1,'ow[2][0].og[0]',1,2,3,'ow[2][0].og[1]',1,2,3,'ow[2][0].oh','ow[2][0].os[1][0]','ow[2][0].oj[1]',3,'ow[2][0].om[1]','ow[2][0].ok+5', 'ow[2][0].ok+6','ow[2][0].ok+7','ow[2][0].ol[0][1]',1,2,3,4,5,6,7,'ow[2][0].ol[0][2]',1,2,3,4,5,6,7,'ow[2][1].mk[0]',1,2,3,4,5,6,7,'ow[2][1].mk[1]',1,2,3,4,5,6, 7,'ow[2][1].ms',1,'ow[2][1].mt',1,'ow[2][1].mu[0]',1,'ow[2][1].mu[1]',1,'ow[2][1].mw[1][0]',1,2,3,'ow[2][1].nq.nc',1,2,3,4,5,6,7,'ow[2][1].nq.nd',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.nf',1,2,3,4,5,6,7,'ow[2][1].nq.ng',1,'ow[2][1].nq.nh',1, 'ow[2][1].nq.ni',1,'ow[2][1].nq.nj',1,2,3,'ow[2][1].nq.nk',1,2,3,'ow[2][1].nq.nl',1,2,3,'ow[2][1].nq.nm',1,'ow[2][1].nq.nn',1,2,3,4,5,6,7,'ow[2][1].nq.no',1, 'ow[2][1].nq.np',1,2,3,'ow[2][1].nr[0][0]',1,'ow[2][1].nx[1]',3,'ow[2][1].oa[0][2]',5,'ow[2][1].oa[1][0]',7,'ow[2][1].oa[1][1]',1,'ow[2][1].oa[1][2]',1, 'ow[2][1].oa[2][0]',1,'ow[2][1].oa[2][1]',1,'ow[2][1].oa[2][2]',1,'ow[2][1].og[0]',1,2,3,'ow[2][1].og[1]',1,2,3,'ow[2][1].oh','ow[2][1].os[1][0]', 'ow[2][1].oj[1]',3,'ow[2][1].om[1]','ow[2][1].ok+5','ow[2][1].ok+6','ow[2][1].ok+7','ow[2][1].ol[0][1]',1,2,3,4,5,6,7,'ow[2][1].ol[0][2]',1,2,3,4,5,6,7,'ox',1, 'oz[0][1]',1,'oz[1][0]',1,'oz[1][1]',1,'pg',1,'ph',1,2,3,'pi',1,2,3,'pj[0][0][0]',1,2,3,'pj[0][0][1]',1,2,3,'pj[0][1][0]',1,2,3,'pj[0][1][1]',1,2,3, 'pj[0][2][0]',1,2,3,'pj[0][2][1]',1,2,3,'pk',1,2,3,'pl',1,2,3,'pm[0][0][0][0]',1,2,3,'pm[0][0][0][1]',1,2,3,'pm[0][1][0][0]',1,2,3,'pm[0][1][0][1]',1,2,3, 'pm[1][0][0][0]',1,2,3,'pm[1][0][0][1]',1,2,3,'pm[1][1][0][0]',1,2,3,'pm[1][1][0][1]',1,2,3,'pm[2][0][0][0]',1,2,3,'pm[2][0][0][1]',1,2,3,'pm[2][1][0][0]',1,2, 3,'pm[2][1][0][1]',1,2,3,'pn','po','pp',1,2,3,'pq',1,'pr',1,'pz[0][1]','ps[0][0][0]+3','pt[1]','ps[0][0][0]+5','ps[0][0][0]+6','ps[0][0][0]+7','ps[0][0][1]',1, 2,3,4,5,6,7,'ps[1][0][0]',1,2,3,4,5,6,7,'ps[1][0][1]',1,2,3,4,5,6,7,'ps[2][0][0]',1,2,3,4,5,6,7,'ps[2][0][1]',1,2,3,4,5,6,7,'qi.qa',1,2,3,'qi.qe[1][0]',5,6,7, 'qj',1,'qp+2','qp+3','qr[0][1]','qp+5','qp+6','qp+7','qt',1,2,3,'qu',1,2,3,'rg.qv',1,2,3,4,5,6,7,'rg.qw',1,2,3,4,5,6,7,'rg.qx[0]',1,2,3,4,5,6,7,'rg.qx[1]',1,2, 3,4,5,6,7,'rg.qx[2]',1,2,3,4,5,6,7,'rg.qy',1,2,3,'rg.qz',1,2,3,'rg.ra[0][0][0][0]',1,2,3,'rg.ra[0][0][1][0]',1,2,3,'rg.ra[0][0][2][0]',1,2,3, 'rg.ra[0][1][0][0]',1,2,3,'rg.ra[0][1][1][0]',1,2,3,'rg.ra[0][1][2][0]',1,2,3,'rg.ra[0][2][0][0]',1,2,3,'rg.ra[0][2][1][0]',1,2,3,'rg.ra[0][2][2][0]',1,2,3, 'rg.rb',1,2,3,4,5,6,7,'rg.rc',1,2,3,4,5,6,7,'rg.rd[0]',1,2,3,'rg.rd[1]',1,2,3,'rg.re',1,2,3,4,5,6,7,'rg.rf[0][0]',1,2,3,4,5,6,7,'rg.rf[1][0]',1,2,3,4,5,6,7, 'rh.qv',1,2,3,4,5,6,7,'rh.qw',1,2,3,4,5,6,7,'rh.qx[0]',1,2,3,4,5,6,7,'rh.qx[1]',1,2,3,4,5,6,7,'rh.qx[2]',1,2,3,4,5,6,7,'rh.qy',1,2,3,'rh.qz',1,2,3, 'rh.ra[0][0][0][0]',1,2,3,'rh.ra[0][0][1][0]',1,2,3,'rh.ra[0][0][2][0]',1,2,3,'rh.ra[0][1][0][0]',1,2,3,'rh.ra[0][1][1][0]',1,2,3,'rh.ra[0][1][2][0]',1,2,3, 'rh.ra[0][2][0][0]',1,2,3,'rh.ra[0][2][1][0]',1,2,3,'rh.ra[0][2][2][0]',1,2,3,'rh.rb',1,2,3,4,5,6,7,'rh.rc',1,2,3,4,5,6,7,'rh.rd[0]',1,2,3,'rh.rd[1]',1,2,3, 'rh.re',1,2,3,4,5,6,7,'rh.rf[0][0]',1,2,3,4,5,6,7,'rh.rf[1][0]',1,2,3,4,5,6,7,'ri','+3171','rs[0].rj','rs[0].rq[1]','rs[0].rq[2]',3,4,5,6,7,'rs[0].rk[0][1]',1, 2,3,4,5,6,7,'rs[0].rk[0][2]',1,2,3,4,5,6,7,'rt[0].rj','rt[0].rq[1]','rt[0].rq[2]',3,4,5,6,7,'rt[0].rk[0][1]',1,2,3,4,5,6,7,'rt[0].rk[0][2]',1,2,3,4,5,6,7, 'ru.rj','ru.rq[1]','ru.rq[2]',3,4,5,6,7,'ru.rk[0][1]',1,2,3,4,5,6,7,'ru.rk[0][2]',1,2,3,4,5,6,7,'rv[0]',1,2,3,4,5,6,7 ], ey=>[ 'ez','fn.fj[0][1][0]','fn.fi[1][0]','fn.fl[1][0][0]','fn.fl[1][1][0]','fn.fl[1][2][0]','fn.fl[2][0][0]','fn.fl[2][1][0]','fn.fl[2][2][0]','fq','gg[1]','fr[1]', 1,'fu[0][1]',1,2,3,'fu[1][0]',1,2,3,'fu[1][1]',1,2,3,'fu[2][0]',1,2,3,'fu[2][1]',1,2,3,'gz',1,2,3,'ha[0]','ha[1]','hb','hc',1,2,3,'hd','he[0][0][0][0]',1,2,3, 'he[0][0][0][1]',1,2,3,'he[0][0][1][0]',1,2,3,'he[0][0][1][1]',1,2,3,'he[1][0][0][0]',1,2,3,'he[1][0][0][1]',1,2,3,'he[1][0][1][0]',1,2,3,'he[1][0][1][1]',1,2, 3,'hf',1,2,3,'hg',1,2,3,'ii.hh',1,'ii.hi',1,2,3,'ii.ht.hj',1,2,3,'ii.ht.hl[0][0][1]',1,2,3,'ii.ht.hl[0][0][2]',1,2,3,'ii.ht.hl[0][1][0]',1,2,3, 'ii.ht.hl[0][1][1]',1,2,3,'ii.ht.hl[0][1][2]',1,2,3,'ii.ht.hl[0][2][0]',1,2,3,'ii.ht.hl[0][2][1]',1,2,3,'ii.ht.hl[0][2][2]',1,2,3,'ii.ht.hl[1][0][0]',1,2,3, 'ii.ht.hl[1][0][1]',1,2,3,'ii.ht.hl[1][0][2]',1,2,3,'ii.ht.hl[1][1][0]',1,2,3,'ii.ht.hl[1][1][1]',1,2,3,'ii.ht.hl[1][1][2]',1,2,3,'ii.ht.hl[1][2][0]',1,2,3, 'ii.ht.hl[1][2][1]',1,2,3,'ii.ht.hl[1][2][2]',1,2,3,'ii.ht.hl[2][0][0]',1,2,3,'ii.ht.hl[2][0][1]',1,2,3,'ii.ht.hl[2][0][2]',1,2,3,'ii.ht.hl[2][1][0]',1,2,3, 'ii.ht.hl[2][1][1]',1,2,3,'ii.ht.hl[2][1][2]',1,2,3,'ii.ht.hl[2][2][0]',1,2,3,'ii.ht.hl[2][2][1]',1,2,3,'ii.ht.hl[2][2][2]',1,2,3,'ii.hu.hj',1,2,3, 'ii.hu.hl[0][0][1]',1,2,3,'ii.hu.hl[0][0][2]',1,2,3,'ii.hu.hl[0][1][0]',1,2,3,'ii.hu.hl[0][1][1]',1,2,3,'ii.hu.hl[0][1][2]',1,2,3,'ii.hu.hl[0][2][0]',1,2,3, 'ii.hu.hl[0][2][1]',1,2,3,'ii.hu.hl[0][2][2]',1,2,3,'ii.hu.hl[1][0][0]',1,2,3,'ii.hu.hl[1][0][1]',1,2,3,'ii.hu.hl[1][0][2]',1,2,3,'ii.hu.hl[1][1][0]',1,2,3, 'ii.hu.hl[1][1][1]',1,2,3,'ii.hu.hl[1][1][2]',1,2,3,'ii.hu.hl[1][2][0]',1,2,3,'ii.hu.hl[1][2][1]',1,2,3,'ii.hu.hl[1][2][2]',1,2,3,'ii.hu.hl[2][0][0]',1,2,3, 'ii.hu.hl[2][0][1]',1,2,3,'ii.hu.hl[2][0][2]',1,2,3,'ii.hu.hl[2][1][0]',1,2,3,'ii.hu.hl[2][1][1]',1,2,3,'ii.hu.hl[2][1][2]',1,2,3,'ii.hu.hl[2][2][0]',1,2,3, 'ii.hu.hl[2][2][1]',1,2,3,'ii.hu.hl[2][2][2]',1,2,3,'ii.hv','ii.hw','ii.hx[0]',1,2,3,'ii.ig[0][0][0].hy',1,'ii.ig[0][0][0].ie+2','ii.ig[0][0][0].ie+3', 'ii.ig[0][0][0].ie+4','ii.ig[0][0][0].ie+5','ii.ig[0][0][0].ie+6','ii.ig[0][0][0].ie+7','ii.ig[1][0][0].hy',1,'ii.ig[1][0][0].ie+2','ii.ig[1][0][0].ie+3', 'ii.ig[1][0][0].ie+4','ii.ig[1][0][0].ie+5','ii.ig[1][0][0].ie+6','ii.ig[1][0][0].ie+7','ii.ig[2][0][0].hy',1,'ii.ig[2][0][0].ie+2','ii.ig[2][0][0].ie+3', 'ii.ig[2][0][0].ie+4','ii.ig[2][0][0].ie+5','ii.ig[2][0][0].ie+6','ii.ig[2][0][0].ie+7','ii.ih.hy',1,'ii.ih.ie+2','ii.ih.ie+3','ii.ih.ie+4','ii.ih.ie+5', 'ii.ih.ie+6','ii.ih.ie+7','ij.hh',1,'ij.hi',1,2,3,'ij.ht.hj',1,2,3,'ij.ht.hl[0][0][1]',1,2,3,'ij.ht.hl[0][0][2]',1,2,3,'ij.ht.hl[0][1][0]',1,2,3, 'ij.ht.hl[0][1][1]',1,2,3,'ij.ht.hl[0][1][2]',1,2,3,'ij.ht.hl[0][2][0]',1,2,3,'ij.ht.hl[0][2][1]',1,2,3,'ij.ht.hl[0][2][2]',1,2,3,'ij.ht.hl[1][0][0]',1,2,3, 'ij.ht.hl[1][0][1]',1,2,3,'ij.ht.hl[1][0][2]',1,2,3,'ij.ht.hl[1][1][0]',1,2,3,'ij.ht.hl[1][1][1]',1,2,3,'ij.ht.hl[1][1][2]',1,2,3,'ij.ht.hl[1][2][0]',1,2,3, 'ij.ht.hl[1][2][1]',1,2,3,'ij.ht.hl[1][2][2]',1,2,3,'ij.ht.hl[2][0][0]',1,2,3,'ij.ht.hl[2][0][1]',1,2,3,'ij.ht.hl[2][0][2]',1,2,3,'ij.ht.hl[2][1][0]',1,2,3, 'ij.ht.hl[2][1][1]',1,2,3,'ij.ht.hl[2][1][2]',1,2,3,'ij.ht.hl[2][2][0]',1,2,3,'ij.ht.hl[2][2][1]',1,2,3,'ij.ht.hl[2][2][2]',1,2,3,'ij.hu.hj',1,2,3, 'ij.hu.hl[0][0][1]',1,2,3,'ij.hu.hl[0][0][2]',1,2,3,'ij.hu.hl[0][1][0]',1,2,3,'ij.hu.hl[0][1][1]',1,2,3,'ij.hu.hl[0][1][2]',1,2,3,'ij.hu.hl[0][2][0]',1,2,3, 'ij.hu.hl[0][2][1]',1,2,3,'ij.hu.hl[0][2][2]',1,2,3,'ij.hu.hl[1][0][0]',1,2,3,'ij.hu.hl[1][0][1]',1,2,3,'ij.hu.hl[1][0][2]',1,2,3,'ij.hu.hl[1][1][0]',1,2,3, 'ij.hu.hl[1][1][1]',1,2,3,'ij.hu.hl[1][1][2]',1,2,3,'ij.hu.hl[1][2][0]',1,2,3,'ij.hu.hl[1][2][1]',1,2,3,'ij.hu.hl[1][2][2]',1,2,3,'ij.hu.hl[2][0][0]',1,2,3, 'ij.hu.hl[2][0][1]',1,2,3,'ij.hu.hl[2][0][2]',1,2,3,'ij.hu.hl[2][1][0]',1,2,3,'ij.hu.hl[2][1][1]',1,2,3,'ij.hu.hl[2][1][2]',1,2,3,'ij.hu.hl[2][2][0]',1,2,3, 'ij.hu.hl[2][2][1]',1,2,3,'ij.hu.hl[2][2][2]',1,2,3,'ij.hv','ij.hw','ij.hx[0]',1,2,3,'ij.ig[0][0][0].hy',1,'ij.ig[0][0][0].ie+2','ij.ig[0][0][0].ie+3', 'ij.ig[0][0][0].ie+4','ij.ig[0][0][0].ie+5','ij.ig[0][0][0].ie+6','ij.ig[0][0][0].ie+7','ij.ig[1][0][0].hy',1,'ij.ig[1][0][0].ie+2','ij.ig[1][0][0].ie+3', 'ij.ig[1][0][0].ie+4','ij.ig[1][0][0].ie+5','ij.ig[1][0][0].ie+6','ij.ig[1][0][0].ie+7','ij.ig[2][0][0].hy',1,'ij.ig[2][0][0].ie+2','ij.ig[2][0][0].ie+3', 'ij.ig[2][0][0].ie+4','ij.ig[2][0][0].ie+5','ij.ig[2][0][0].ie+6','ij.ig[2][0][0].ie+7','ij.ih.hy',1,'ij.ih.ie+2','ij.ih.ie+3','ij.ih.ie+4','ij.ih.ie+5', 'ij.ih.ie+6','ij.ih.ie+7','ik.hh',1,'ik.hi',1,2,3,'ik.ht.hj',1,2,3,'ik.ht.hl[0][0][1]',1,2,3,'ik.ht.hl[0][0][2]',1,2,3,'ik.ht.hl[0][1][0]',1,2,3, 'ik.ht.hl[0][1][1]',1,2,3,'ik.ht.hl[0][1][2]',1,2,3,'ik.ht.hl[0][2][0]',1,2,3,'ik.ht.hl[0][2][1]',1,2,3,'ik.ht.hl[0][2][2]',1,2,3,'ik.ht.hl[1][0][0]',1,2,3, 'ik.ht.hl[1][0][1]',1,2,3,'ik.ht.hl[1][0][2]',1,2,3,'ik.ht.hl[1][1][0]',1,2,3,'ik.ht.hl[1][1][1]',1,2,3,'ik.ht.hl[1][1][2]',1,2,3,'ik.ht.hl[1][2][0]',1,2,3, 'ik.ht.hl[1][2][1]',1,2,3,'ik.ht.hl[1][2][2]',1,2,3,'ik.ht.hl[2][0][0]',1,2,3,'ik.ht.hl[2][0][1]',1,2,3,'ik.ht.hl[2][0][2]',1,2,3,'ik.ht.hl[2][1][0]',1,2,3, 'ik.ht.hl[2][1][1]',1,2,3,'ik.ht.hl[2][1][2]',1,2,3,'ik.ht.hl[2][2][0]',1,2,3,'ik.ht.hl[2][2][1]',1,2,3,'ik.ht.hl[2][2][2]',1,2,3,'ik.hu.hj',1,2,3, 'ik.hu.hl[0][0][1]',1,2,3,'ik.hu.hl[0][0][2]',1,2,3,'ik.hu.hl[0][1][0]',1,2,3,'ik.hu.hl[0][1][1]',1,2,3,'ik.hu.hl[0][1][2]',1,2,3,'ik.hu.hl[0][2][0]',1,2,3, 'ik.hu.hl[0][2][1]',1,2,3,'ik.hu.hl[0][2][2]',1,2,3,'ik.hu.hl[1][0][0]',1,2,3,'ik.hu.hl[1][0][1]',1,2,3,'ik.hu.hl[1][0][2]',1,2,3,'ik.hu.hl[1][1][0]',1,2,3, 'ik.hu.hl[1][1][1]',1,2,3,'ik.hu.hl[1][1][2]',1,2,3,'ik.hu.hl[1][2][0]',1,2,3,'ik.hu.hl[1][2][1]',1,2,3,'ik.hu.hl[1][2][2]',1,2,3,'ik.hu.hl[2][0][0]',1,2,3, 'ik.hu.hl[2][0][1]',1,2,3,'ik.hu.hl[2][0][2]',1,2,3,'ik.hu.hl[2][1][0]',1,2,3,'ik.hu.hl[2][1][1]',1,2,3,'ik.hu.hl[2][1][2]',1,2,3,'ik.hu.hl[2][2][0]',1,2,3, 'ik.hu.hl[2][2][1]',1,2,3,'ik.hu.hl[2][2][2]',1,2,3,'ik.hv','ik.hw','ik.hx[0]',1,2,3,'ik.ig[0][0][0].hy',1,'ik.ig[0][0][0].ie+2','ik.ig[0][0][0].ie+3', 'ik.ig[0][0][0].ie+4','ik.ig[0][0][0].ie+5','ik.ig[0][0][0].ie+6','ik.ig[0][0][0].ie+7','ik.ig[1][0][0].hy',1,'ik.ig[1][0][0].ie+2','ik.ig[1][0][0].ie+3', 'ik.ig[1][0][0].ie+4','ik.ig[1][0][0].ie+5','ik.ig[1][0][0].ie+6','ik.ig[1][0][0].ie+7','ik.ig[2][0][0].hy',1,'ik.ig[2][0][0].ie+2','ik.ig[2][0][0].ie+3', 'ik.ig[2][0][0].ie+4','ik.ig[2][0][0].ie+5','ik.ig[2][0][0].ie+6','ik.ig[2][0][0].ie+7','ik.ih.hy',1,'ik.ih.ie+2','ik.ih.ie+3','ik.ih.ie+4','ik.ih.ie+5', 'ik.ih.ie+6','ik.ih.ie+7','iu.il','jt.db.bo.bh[0][1]','jt.be.bd[0][1][0]',3,'iu.ir[0][1]',1,'jt.db.cn.ck[0][0][1][1]',3,'iu.ir[1][0]',1, 'jt.db.cn.ck[0][0][2][1]',3,'iu.ir[1][1]','jt.db.bq[0][1].bh[0][1]','jt.be.af[1]',3,'iu.ir[2][0]',1,'jt.be.ah[0][0][0]','jt.be.ah[1][0][0]','iu.ir[2][1]',1, 'jt.db.cn.ck[0][1][2][1]',3,'jr.ji[0][0][1][0]','jt.db.bq[1][0].bh[0][1]','jt.db.bq[1][0].bh[0][2]',3,'jt.be.aj[0][0][0]','jt.be.av','jt.be.aw',7, 'jr.ji[0][0][1][1]','jt.db.cy','jt.db.cz',3,'jt.be.aj[0][0][1]','jt.db.bq[1][1].bh[0][1]','jt.db.bq[1][1].bh[0][2]',7,'jr.ji[0][0][1][2]',1, 'jt.db.da[1][0][1][0]',3,'jt.be.aj[0][1][0]',5,'jt.db.da[2][0][1][0]',7,'jr.ji[0][0][2][0]',1,2,3,'jt.be.aj[0][1][1]',5,6,7,'jr.ji[0][0][2][1]',1,2,3, 'jt.be.aj[0][2][0]',5,6,7,'jr.ji[0][0][2][2]',1,2,3,'jt.be.aj[0][2][1]',5,6,7,'jt.be.az[0][0][2]','jt.db.bv','jt.dl[0][0]','jt.db.bw[0]','jt.be.aj[1][0][0]', 'jt.db.bw[2]','jt.db.bx',3,'jt.be.az[0][1][0]',5,'jt.db.by',7,'jt.be.aj[1][0][1]',1,'jt.db.bz',3,'jt.be.az[0][1][1]',5,'jt.dm[1][0]',7,'jt.be.aj[1][1][0]',1, 'jt.db.ca',3,'jt.be.az[0][1][2]',5,'jt.db.cb',7,'jt.be.aj[1][1][1]',1,'jt.db.cc',3,'jt.be.az[0][2][0]',5,'jt.dp',7,'jt.be.aj[1][2][0]',1,'jt.dq',3, 'jt.be.az[0][2][1]',5,'jt.dr','jt.ds','jt.be.aj[1][2][1]','jt.du',2,3,'jt.be.az[0][2][2]','jt.dv',6,'jt.dx[0][1]','jt.be.aj[2][0][0]','jt.dx[1][0]',2, 'jt.dx[1][1]','jt.be.az[1][0][0]','jt.dx[2][0]',6,'jt.dx[2][1]','jt.be.aj[2][0][1]','jt.eb[1][0]',2,3,'jt.be.az[1][0][1]','jt.eb[1][1]',6,7,'jt.be.aj[2][1][0]', 'jt.eb[1][2]',2,3,'jt.be.az[1][0][2]','jt.eb[2][0]',6,7,'jt.be.aj[2][1][1]','jt.eb[2][1]',2,3,'jt.be.az[1][1][0]','jt.eb[2][2]',6,7,'jt.be.aj[2][2][0]','jt.ec', 2,'jt.ed','jt.be.az[1][1][1]','jt.ee',6,7,'jt.be.aj[2][2][1]','jt.ef',2,'jt.eg','jt.be.az[1][1][2]','jt.ei','jt.ej',7,'jt.be.ak',1,'jt.el[0][0][0]', 'jt.el[0][0][1]','jt.be.az[1][2][0]','jt.el[0][1][1]','jt.el[1][0][0]','jt.el[1][0][1]','jt.be.al','jt.be.am','jt.be.an','jt.el[2][0][1]','jt.be.ao', 'jt.el[2][1][1]','jt.em[0][0][0]','jt.em[0][0][1]','jt.em[0][1][0]','jt.em[0][1][1]','jt.em[0][2][0]','jt.em[0][2][1]','jt.be.az[1][2][2]','jt.em[1][0][1]', 'jt.em[1][1][0]','jt.em[1][1][1]','jt.em[1][2][0]','jt.em[1][2][1]','jt.en',7,'jt.be.ba',1,'jt.eo','jt.ep',4,5,6,'jt.ev.eq','jt.be.bb',1,2,3,'jt.ev.eu+5', 'jt.ev.eu+6','jt.ev.eu+7','jt.ew.eq',1,2,3,'jt.ew.eu+4','jt.ew.eu+5','jt.ew.eu+6','jt.ew.eu+7','jt.ex',1,2,3 ], aa=>[ 'ab','db.bo.bh[0][1]','be.bd[0][1][0]',3,'be.ad',5,'db.cn.ck[0][0][1][1]',7,'be.ae',1,'db.cn.ck[0][0][2][1]',3,'be.af[0]','db.bq[0][1].bh[0][1]','be.af[1]',1, 'be.ag',1,'be.ah[0][0][0]','be.ah[1][0][0]','be.ai',1,'db.cn.ck[0][1][2][1]',3,'be.at[2]','db.bq[1][0].bh[0][1]','db.bq[1][0].bh[0][2]',7,'be.aj[0][0][0]', 'be.av','be.aw',3,'be.ax[0][0][0]','db.cy','db.cz',7,'be.aj[0][0][1]','db.bq[1][1].bh[0][1]','db.bq[1][1].bh[0][2]',3,'be.ax[0][0][1]',5,'db.da[1][0][1][0]',7, 'be.aj[0][1][0]',1,'db.da[2][0][1][0]',3,'be.ay',5,6,7,'be.aj[0][1][1]',1,2,3,'be.az[0][0][0]',5,6,7,'be.aj[0][2][0]',1,2,3,'be.az[0][0][1]',5,6,7, 'be.aj[0][2][1]',1,2,3,'be.az[0][0][2]','db.bv','dl[0][0]','db.bw[0]','be.aj[1][0][0]','db.bw[2]','db.bx',3,'be.az[0][1][0]',5,'db.by',7,'be.aj[1][0][1]',1, 'db.bz',3,'be.az[0][1][1]',5,'dm[1][0]',7,'be.aj[1][1][0]',1,'db.ca',3,'be.az[0][1][2]',5,'db.cb',7,'be.aj[1][1][1]',1,'db.cc',3,'be.az[0][2][0]',5,'dp',7, 'be.aj[1][2][0]',1,'dq',3,'be.az[0][2][1]',5,'dr','ds','be.aj[1][2][1]','du',2,3,'be.az[0][2][2]','dv',6,'dx[0][1]','be.aj[2][0][0]','dx[1][0]',2,'dx[1][1]', 'be.az[1][0][0]','dx[2][0]',6,'dx[2][1]','be.aj[2][0][1]','eb[1][0]',2,3,'be.az[1][0][1]','eb[1][1]',6,7,'be.aj[2][1][0]','eb[1][2]',2,3,'be.az[1][0][2]', 'eb[2][0]',6,7,'be.aj[2][1][1]','eb[2][1]',2,3,'be.az[1][1][0]','eb[2][2]',6,7,'be.aj[2][2][0]','ec',2,'ed','be.az[1][1][1]','ee',6,7,'be.aj[2][2][1]','ef',2, 'eg','be.az[1][1][2]','ei','ej',7,'be.ak',1,'el[0][0][0]','el[0][0][1]','be.az[1][2][0]','el[0][1][1]','el[1][0][0]','el[1][0][1]','be.al','be.am','be.an', 'el[2][0][1]','be.ao','el[2][1][1]','em[0][0][0]','em[0][0][1]','em[0][1][0]','em[0][1][1]','em[0][2][0]','em[0][2][1]','be.az[1][2][2]','em[1][0][1]', 'em[1][1][0]','em[1][1][1]','em[1][2][0]','em[1][2][1]','en',7,'be.ba',1,'eo','ep',4,5,6,'ev.eq','be.bb',1,2,3,'ev.eu+5','ev.eu+6','ev.eu+7','ew.eq',1,2,3, 'ew.eu+4','ew.eu+5','ew.eu+6','ew.eu+7','ex',1,2,3 ], rw=>[ 'rx','uo.sc[1]','uo.sh[0][1]','uo.um.ud','uo.rz[0][1]','aar[0][0].aah[2][0]','uo.sh[1][1]','aar[0][0].aai','uo.rz[0][2]','uo.sm','uo.sh[2][1]','uo.so', 'uo.rz[1][0]',1,'ux[0][0]','aar[0][0].aak','uo.rz[1][1]',1,'ux[0][1]','vh.va[0][0][1]','uo.rz[1][2]','vh.va[0][1][1]','ux[0][2]','vh.va[0][2][1]','uo.sq[1]', 'vh.vc','ux[1][0]','aar[0][0].aap','uo.sr','wi.wg','ux[1][1]',3,'uo.sv[1][0][0][2]','ws.wo[1]','ux[1][2]','aar[0][0].aaq','uo.sv[1][0][1][0]',1, 'uo.to.te[0][0][0][1]','aar[0][1].aag','uo.sv[1][0][1][1]','aar[0][1].aah[0][1]','uo.to.te[1][0][0][1]','aar[0][1].aah[1][1]','uo.sv[1][0][1][2]', 'aar[0][1].aah[2][1]','uo.to.tg',3,'uo.to.th',1,'uo.to.ti',1,'uo.to.tj[0]',1,'ws.wr[2][0]',3,'uo.to.tj[1]',1,'ws.wr[2][2]',3,'uo.to.tk',1,'ye.yb[1][1][0][1]', 'aar[0][1].aan','uo.to.tl','aaf[0][0][0]','ye.yb[1][1][1][1]','aaf[0][2][0]','uo.to.tm','aaf[1][1][0]','uo.to.tn','aaf[2][0][0]','vn[0][1][1]','aaf[2][2][0]', 'ye.yb[2][0][1][1]','uo.um.ue[1][0][2]+7','uo.um.ue[1][1][0]',1,'ye.yb[2][1][0][1]','aar[1][0].aah[0][0]','vn[0][1][2]','aar[1][0].aah[1][0]', 'ye.yb[2][1][1][1]','aar[1][0].aah[2][0]','uo.um.ue[1][1][1]','aar[1][0].aai','ye.yc[1][0]',3,'vn[0][2][0]','aar[1][0].aaj','ye.yd',7,'uo.um.ue[1][1][2]', 'aar[1][0].aak',2,3,'vn[0][2][1]','aar[1][0].aal',6,7,'uo.um.uf','aar[1][0].aam','aar[1][0].aan','aar[1][0].aao[0]','vn[0][2][2]','aar[1][0].aap',6,7, 'uo.um.ug',1,'uo.um.uh[0]',1,'vn[1][0][0]','aar[1][0].aaq','uo.um.uh[1]',1,2,'aar[1][1].aag','uo.um.uh[2]','aar[1][1].aah[0][1]','vn[1][0][1]', 'aar[1][1].aah[1][1]','uo.um.ui','aar[1][1].aah[2][1]','aar[1][1].aai',3,4,5,'vn[1][0][2]',7,'uo.um.uj[0]',1,'aar[1][1].aak',3,'uo.um.uk[0]','uo.um.uk[1]', 'uo.um.uk[2]','uo.um.ul','up[1][0].rz[0][0]','up[1][0].sc[1]','up[1][0].sh[0][1]','up[1][0].um.ud','up[1][0].rz[0][1]','aar[1][1].aao[1]','up[1][0].sh[1][1]',3, 'up[1][0].rz[0][2]','up[1][0].sm','up[1][0].sh[2][1]','up[1][0].so','up[1][0].rz[1][0]',1,'vn[1][1][2]',3,'up[1][0].rz[1][1]',1,'aar[2][0].aag', 'aar[2][0].aah[0][0]','up[1][0].rz[1][2]','aar[2][0].aah[1][0]','vn[1][2][0]','aar[2][0].aah[2][0]','up[1][0].sq[1]','aar[2][0].aai',2,3,'up[1][0].sr', 'aar[2][0].aaj','vn[1][2][1]',3,'up[1][0].sv[1][0][0][2]','aar[2][0].aak',2,3,'up[1][0].sv[1][0][1][0]','aar[2][0].aal','up[1][0].to.te[0][0][0][1]',3, 'up[1][0].sv[1][0][1][1]','aar[2][0].aam','up[1][0].to.te[1][0][0][1]','aar[2][0].aao[0]','up[1][0].sv[1][0][1][2]','aar[2][0].aap','up[1][0].to.tg',3, 'up[1][0].to.th',1,'up[1][0].to.ti',1,'up[1][0].to.tj[0]','aar[2][0].aaq','vn[2][0][1]',3,'up[1][0].to.tj[1]','aar[2][1].aag','aar[2][1].aah[0][0]', 'aar[2][1].aah[0][1]','up[1][0].to.tk','aar[2][1].aah[1][1]','vn[2][0][2]','aar[2][1].aah[2][1]','up[1][0].to.tl',1,2,3,'up[1][0].to.tm',1,'up[1][0].to.tn',1, 'aar[2][1].aak','up[1][0].um.ue[1][0][2]+5','up[1][0].um.ue[1][0][2]+6','up[1][0].um.ue[1][0][2]+7','up[1][0].um.ue[1][1][0]',1,'vn[2][1][1]',3,'aar[2][1].aam', 'aar[2][1].aan','aar[2][1].aao[0]','aar[2][1].aao[1]','up[1][0].um.ue[1][1][1]',1,'vn[2][1][2]',3,4,5,6,7,'up[1][0].um.ue[1][1][2]',1,'vn[2][2][0]',3,4,5,6,7, 'up[1][0].um.uf',1,'vn[2][2][1]',3,4,5,6,7,'up[1][0].um.ug',1,'up[1][0].um.uh[0]',1,2,3,'up[1][0].um.uh[1]',1,2,3,'up[1][0].um.uh[2]',1,2,3,'up[1][0].um.ui',1, 2,3,'vp','vq','vr[0][0]','vr[1][0]','up[1][0].um.uj[0]','vs',2,3,'up[1][0].um.uk[0]','up[1][0].um.uk[1]','up[1][0].um.uk[2]','up[1][0].um.ul', 'up[2][0].rz[0][0]','up[2][0].sc[1]','up[2][0].sh[0][1]','up[2][0].um.ud','up[2][0].rz[0][1]',1,'up[2][0].sh[1][1]',3,'up[2][0].rz[0][2]','up[2][0].sm', 'up[2][0].sh[2][1]','up[2][0].so','up[2][0].rz[1][0]',1,2,3,'up[2][0].rz[1][1]',1,2,3,'up[2][0].rz[1][2]',1,2,3,'up[2][0].sq[1]',1,2,3,'up[2][0].sr',1,2,3, 'up[2][0].sv[1][0][0][2]',1,2,3,'up[2][0].sv[1][0][1][0]',1,'up[2][0].to.te[0][0][0][1]',3,'up[2][0].sv[1][0][1][1]',1,'up[2][0].to.te[1][0][0][1]',3, 'up[2][0].sv[1][0][1][2]',1,'up[2][0].to.tg',3,'up[2][0].to.th',1,'up[2][0].to.ti',1,'up[2][0].to.tj[0]',1,2,3,'up[2][0].to.tj[1]',1,2,3,'up[2][0].to.tk',1,2,3, 'up[2][0].to.tl',1,2,3,'up[2][0].to.tm',1,'up[2][0].to.tn',1,'up[2][0].um.ue[1][0][2]+4','up[2][0].um.ue[1][0][2]+5','up[2][0].um.ue[1][0][2]+6', 'up[2][0].um.ue[1][0][2]+7','up[2][0].um.ue[1][1][0]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][1]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][2]',1,2,3,4,5,6,7, 'up[2][0].um.uf',1,2,3,4,5,6,7,'up[2][0].um.ug',1,'up[2][0].um.uh[0]',1,2,3,'up[2][0].um.uh[1]',1,2,3,'up[2][0].um.uh[2]',1,2,3,'up[2][0].um.ui',1,2,3,4,5,6,7, 'up[2][0].um.uj[0]',1,2,3,'up[2][0].um.uk[0]','up[2][0].um.uk[1]','up[2][0].um.uk[2]','up[2][0].um.ul' ]}, 2 => { kc=>[ 'mg.kd',1,2,3,'mg.ke',1,2,3,4,5,6,7,'mg.kf',1,2,3,'mg.kg',1,2,3,'mg.kh',1,'mg.ki','mg+23','mg.kw.kj[0][0]',1,2,3,'mg.kw.kj[0][1]',1,2,3,'mg.kw.kj[1][0]',1,2,3, 'mg.kw.kj[1][1]',1,2,3,'mg.kw.kj[2][0]',1,2,3,'mg.kw.kj[2][1]',1,2,3,'mg.kx',1,2,3,4,5,6,7,'mg.ky',1,2,3,'mg.lf[0][1]',5,6,7,'mg.lc[1]',1,2,3,4,5,6,7, 'mg.ld[0][0][2]',1,2,3,4,5,6,7,'mg.ld[1][0][0]',1,2,3,4,5,6,7,'mg.ld[1][0][1]',1,2,3,4,5,6,7,'mg.ld[1][0][2]',1,2,3,4,5,6,7,'mg.lp[0][0].li',1, 'mg.lp[0][0].lk+2','mg.lp[0][0].lk+3','mg.lp[0][0].lm[0][0][1]','mg.lp[0][0].lk+5','mg.lp[0][0].lk+6','mg.lp[0][0].lk+7','mg.lp[0][0].lm[0][0][2]',1,2,3, 'mg.lp[0][0].lm[0][1][0]',1,2,3,'mg.lp[0][0].lm[0][1][1]',1,2,3,'mg.lp[0][0].lm[0][1][2]',1,2,3,'mg.lp[0][0].lm[0][2][0]',1,2,3,'mg.lp[0][0].lm[0][2][1]',1,2,3, 'mg.lp[0][0].lm[0][2][2]',1,2,3,'mg.lp[0][1].li',1,'mg.lp[0][1].lk+2','mg.lp[0][1].lk+3','mg.lp[0][1].lm[0][0][1]','mg.lp[0][1].lk+5','mg.lp[0][1].lk+6', 'mg.lp[0][1].lk+7','mg.lp[0][1].lm[0][0][2]',1,2,3,'mg.lp[0][1].lm[0][1][0]',1,2,3,'mg.lp[0][1].lm[0][1][1]',1,2,3,'mg.lp[0][1].lm[0][1][2]',1,2,3, 'mg.lp[0][1].lm[0][2][0]',1,2,3,'mg.lp[0][1].lm[0][2][1]',1,2,3,'mg.lp[0][1].lm[0][2][2]',1,2,3,'mg.lp[1][0].li',1,'mg.lp[1][0].lk+2','mg.lp[1][0].lk+3', 'mg.lp[1][0].lm[0][0][1]','mg.lp[1][0].lk+5','mg.lp[1][0].lk+6','mg.lp[1][0].lk+7','mg.lp[1][0].lm[0][0][2]',1,2,3,'mg.lp[1][0].lm[0][1][0]',1,2,3, 'mg.lp[1][0].lm[0][1][1]',1,2,3,'mg.lp[1][0].lm[0][1][2]',1,2,3,'mg.lp[1][0].lm[0][2][0]',1,2,3,'mg.lp[1][0].lm[0][2][1]',1,2,3,'mg.lp[1][0].lm[0][2][2]',1,2,3, 'mg.lp[1][1].li',1,'mg.lp[1][1].lk+2','mg.lp[1][1].lk+3','mg.lp[1][1].lm[0][0][1]','mg.lp[1][1].lk+5','mg.lp[1][1].lk+6','mg.lp[1][1].lk+7', 'mg.lp[1][1].lm[0][0][2]',1,2,3,'mg.lp[1][1].lm[0][1][0]',1,2,3,'mg.lp[1][1].lm[0][1][1]',1,2,3,'mg.lp[1][1].lm[0][1][2]',1,2,3,'mg.lp[1][1].lm[0][2][0]',1,2,3, 'mg.lp[1][1].lm[0][2][1]',1,2,3,'mg.lp[1][1].lm[0][2][2]',1,2,3,'mg.lq.li',1,'mg.lq.lk+2','mg.lq.lk+3','mg.lq.lm[0][0][1]','mg.lq.lk+5','mg.lq.lk+6', 'mg.lq.lk+7','mg.lq.lm[0][0][2]',1,2,3,'mg.lq.lm[0][1][0]',1,2,3,'mg.lq.lm[0][1][1]',1,2,3,'mg.lq.lm[0][1][2]',1,2,3,'mg.lq.lm[0][2][0]',1,2,3, 'mg.lq.lm[0][2][1]',1,2,3,'mg.lq.lm[0][2][2]',1,2,3,'mg.lr',1,2,3,4,5,6,7,'mg.ls',1,2,3,4,5,6,7,'mg.lt','mg+301','mg.lu',1,'mg.lv',1,'mg.lw','mg.lx', 'mg.ly[0][0][0][0]','mg.ly[0][0][1][0]','mg.ly[0][1][0][0]','mg.ly[0][1][1][0]','mg.ly[0][2][0][0]','mg.ly[0][2][1][0]','mg.lz','mg+315','mg.ma',1,2,3,'mg.mb', 1,2,3,'mg.mc',1,2,3,'mg.md[0][0]',1,2,3,4,5,6,7,'mg.md[1][0]',1,2,3,4,5,6,7,'mg.me[0]',1,'mg.mf[0]',1,'mg.mf[1]',1,'mg.mf[2]',1,'mh.kd',1,2,3,'mh.ke',1,2,3,4,5, 6,7,'mh.kf',1,2,3,'mh.kg',1,2,3,'mh.kh',1,'mh.ki','mh+23','mh.kw.kj[0][0]',1,2,3,'mh.kw.kj[0][1]',1,2,3,'mh.kw.kj[1][0]',1,2,3,'mh.kw.kj[1][1]',1,2,3, 'mh.kw.kj[2][0]',1,2,3,'mh.kw.kj[2][1]',1,2,3,'mh.kx',1,2,3,4,5,6,7,'mh.ky',1,2,3,'mh.lf[0][1]',5,6,7,'mh.lc[1]',1,2,3,4,5,6,7,'mh.ld[0][0][2]',1,2,3,4,5,6,7, 'mh.ld[1][0][0]',1,2,3,4,5,6,7,'mh.ld[1][0][1]',1,2,3,4,5,6,7,'mh.ld[1][0][2]',1,2,3,4,5,6,7,'mh.lp[0][0].li',1,'mh.lp[0][0].lk+2','mh.lp[0][0].lk+3', 'mh.lp[0][0].lm[0][0][1]','mh.lp[0][0].lk+5','mh.lp[0][0].lk+6','mh.lp[0][0].lk+7','mh.lp[0][0].lm[0][0][2]',1,2,3,'mh.lp[0][0].lm[0][1][0]',1,2,3, 'mh.lp[0][0].lm[0][1][1]',1,2,3,'mh.lp[0][0].lm[0][1][2]',1,2,3,'mh.lp[0][0].lm[0][2][0]',1,2,3,'mh.lp[0][0].lm[0][2][1]',1,2,3,'mh.lp[0][0].lm[0][2][2]',1,2,3, 'mh.lp[0][1].li',1,'mh.lp[0][1].lk+2','mh.lp[0][1].lk+3','mh.lp[0][1].lm[0][0][1]','mh.lp[0][1].lk+5','mh.lp[0][1].lk+6','mh.lp[0][1].lk+7', 'mh.lp[0][1].lm[0][0][2]',1,2,3,'mh.lp[0][1].lm[0][1][0]',1,2,3,'mh.lp[0][1].lm[0][1][1]',1,2,3,'mh.lp[0][1].lm[0][1][2]',1,2,3,'mh.lp[0][1].lm[0][2][0]',1,2,3, 'mh.lp[0][1].lm[0][2][1]',1,2,3,'mh.lp[0][1].lm[0][2][2]',1,2,3,'mh.lp[1][0].li',1,'mh.lp[1][0].lk+2','mh.lp[1][0].lk+3','mh.lp[1][0].lm[0][0][1]', 'mh.lp[1][0].lk+5','mh.lp[1][0].lk+6','mh.lp[1][0].lk+7','mh.lp[1][0].lm[0][0][2]',1,2,3,'mh.lp[1][0].lm[0][1][0]',1,2,3,'mh.lp[1][0].lm[0][1][1]',1,2,3, 'mh.lp[1][0].lm[0][1][2]',1,2,3,'mh.lp[1][0].lm[0][2][0]',1,2,3,'mh.lp[1][0].lm[0][2][1]',1,2,3,'mh.lp[1][0].lm[0][2][2]',1,2,3,'mh.lp[1][1].li',1, 'mh.lp[1][1].lk+2','mh.lp[1][1].lk+3','mh.lp[1][1].lm[0][0][1]','mh.lp[1][1].lk+5','mh.lp[1][1].lk+6','mh.lp[1][1].lk+7','mh.lp[1][1].lm[0][0][2]',1,2,3, 'mh.lp[1][1].lm[0][1][0]',1,2,3,'mh.lp[1][1].lm[0][1][1]',1,2,3,'mh.lp[1][1].lm[0][1][2]',1,2,3,'mh.lp[1][1].lm[0][2][0]',1,2,3,'mh.lp[1][1].lm[0][2][1]',1,2,3, 'mh.lp[1][1].lm[0][2][2]',1,2,3,'mh.lq.li',1,'mh.lq.lk+2','mh.lq.lk+3','mh.lq.lm[0][0][1]','mh.lq.lk+5','mh.lq.lk+6','mh.lq.lk+7','mh.lq.lm[0][0][2]',1,2,3, 'mh.lq.lm[0][1][0]',1,2,3,'mh.lq.lm[0][1][1]',1,2,3,'mh.lq.lm[0][1][2]',1,2,3,'mh.lq.lm[0][2][0]',1,2,3,'mh.lq.lm[0][2][1]',1,2,3,'mh.lq.lm[0][2][2]',1,2,3, 'mh.lr',1,2,3,4,5,6,7,'mh.ls',1,2,3,4,5,6,7,'mh.lt','mh+301','mh.lu',1,'mh.lv',1,'mh.lw','mh.lx','mh.ly[0][0][0][0]','mh.ly[0][0][1][0]','mh.ly[0][1][0][0]', 'mh.ly[0][1][1][0]','mh.ly[0][2][0][0]','mh.ly[0][2][1][0]','mh.lz','mh+315','mh.ma',1,2,3,'mh.mb',1,2,3,'mh.mc',1,2,3,'mh.md[0][0]',1,2,3,4,5,6,7, 'mh.md[1][0]',1,2,3,4,5,6,7,'mh.me[0]',1,'mh.mf[0]',1,'mh.mf[1]',1,'mh.mf[2]',1,'mi.kd',1,2,3,'mi.ke',1,2,3,4,5,6,7,'mi.kf',1,2,3,'mi.kg',1,2,3,'mi.kh',1, 'mi.ki','mi+23','mi.kw.kj[0][0]',1,2,3,'mi.kw.kj[0][1]',1,2,3,'mi.kw.kj[1][0]',1,2,3,'mi.kw.kj[1][1]',1,2,3,'mi.kw.kj[2][0]',1,2,3,'mi.kw.kj[2][1]',1,2,3, 'mi.kx',1,2,3,4,5,6,7,'mi.ky',1,2,3,'mi.lf[0][1]',5,6,7,'mi.lc[1]',1,2,3,4,5,6,7,'mi.ld[0][0][2]',1,2,3,4,5,6,7,'mi.ld[1][0][0]',1,2,3,4,5,6,7,'mi.ld[1][0][1]', 1,2,3,4,5,6,7,'mi.ld[1][0][2]',1,2,3,4,5,6,7,'mi.lp[0][0].li',1,'mi.lp[0][0].lk+2','mi.lp[0][0].lk+3','mi.lp[0][0].lm[0][0][1]','mi.lp[0][0].lk+5', 'mi.lp[0][0].lk+6','mi.lp[0][0].lk+7','mi.lp[0][0].lm[0][0][2]',1,2,3,'mi.lp[0][0].lm[0][1][0]',1,2,3,'mi.lp[0][0].lm[0][1][1]',1,2,3,'mi.lp[0][0].lm[0][1][2]', 1,2,3,'mi.lp[0][0].lm[0][2][0]',1,2,3,'mi.lp[0][0].lm[0][2][1]',1,2,3,'mi.lp[0][0].lm[0][2][2]',1,2,3,'mi.lp[0][1].li',1,'mi.lp[0][1].lk+2','mi.lp[0][1].lk+3', 'mi.lp[0][1].lm[0][0][1]','mi.lp[0][1].lk+5','mi.lp[0][1].lk+6','mi.lp[0][1].lk+7','mi.lp[0][1].lm[0][0][2]',1,2,3,'mi.lp[0][1].lm[0][1][0]',1,2,3, 'mi.lp[0][1].lm[0][1][1]',1,2,3,'mi.lp[0][1].lm[0][1][2]',1,2,3,'mi.lp[0][1].lm[0][2][0]',1,2,3,'mi.lp[0][1].lm[0][2][1]',1,2,3,'mi.lp[0][1].lm[0][2][2]',1,2,3, 'mi.lp[1][0].li',1,'mi.lp[1][0].lk+2','mi.lp[1][0].lk+3','mi.lp[1][0].lm[0][0][1]','mi.lp[1][0].lk+5','mi.lp[1][0].lk+6','mi.lp[1][0].lk+7', 'mi.lp[1][0].lm[0][0][2]',1,2,3,'mi.lp[1][0].lm[0][1][0]',1,2,3,'mi.lp[1][0].lm[0][1][1]',1,2,3,'mi.lp[1][0].lm[0][1][2]',1,2,3,'mi.lp[1][0].lm[0][2][0]',1,2,3, 'mi.lp[1][0].lm[0][2][1]',1,2,3,'mi.lp[1][0].lm[0][2][2]',1,2,3,'mi.lp[1][1].li',1,'mi.lp[1][1].lk+2','mi.lp[1][1].lk+3','mi.lp[1][1].lm[0][0][1]', 'mi.lp[1][1].lk+5','mi.lp[1][1].lk+6','mi.lp[1][1].lk+7','mi.lp[1][1].lm[0][0][2]',1,2,3,'mi.lp[1][1].lm[0][1][0]',1,2,3,'mi.lp[1][1].lm[0][1][1]',1,2,3, 'mi.lp[1][1].lm[0][1][2]',1,2,3,'mi.lp[1][1].lm[0][2][0]',1,2,3,'mi.lp[1][1].lm[0][2][1]',1,2,3,'mi.lp[1][1].lm[0][2][2]',1,2,3,'mi.lq.li',1,'mi.lq.lk+2', 'mi.lq.lk+3','mi.lq.lm[0][0][1]','mi.lq.lk+5','mi.lq.lk+6','mi.lq.lk+7','mi.lq.lm[0][0][2]',1,2,3,'mi.lq.lm[0][1][0]',1,2,3,'mi.lq.lm[0][1][1]',1,2,3, 'mi.lq.lm[0][1][2]',1,2,3,'mi.lq.lm[0][2][0]',1,2,3,'mi.lq.lm[0][2][1]',1,2,3,'mi.lq.lm[0][2][2]',1,2,3,'mi.lr',1,2,3,4,5,6,7,'mi.ls',1,2,3,4,5,6,7,'mi.lt', 'mi+301','mi.lu',1,'mi.lv',1,'mi.lw','mi.lx','mi.ly[0][0][0][0]','mi.ly[0][0][1][0]','mi.ly[0][1][0][0]','mi.ly[0][1][1][0]','mi.ly[0][2][0][0]', 'mi.ly[0][2][1][0]','mi.lz','mi+315','mi.ma',1,2,3,'mi.mb',1,2,3,'mi.mc',1,2,3,'mi.md[0][0]',1,2,3,4,5,6,7,'mi.md[1][0]',1,2,3,4,5,6,7,'mi.me[0]',1,'mi.mf[0]', 1,'mi.mf[1]',1,'mi.mf[2]',1,'mj',1,2,3,4,5,6,7,'ou[0][0].mk[0]',1,2,3,4,5,6,7,'ou[0][0].mk[1]',1,2,3,4,5,6,7,'ou[0][0].ms',1,'ou[0][0].mt',1,'ou[0][0].mu[0]',1, 'ou[0][0].mu[1]',1,'ou[0][0].mw[1][0]',1,2,3,'ou[0][0].nq.nc',1,2,3,4,5,6,7,'ou[0][0].nq.nd',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.nf',1,2,3,4,5,6,7,'ou[0][0].nq.ng',1,'ou[0][0].nq.nh',1,'ou[0][0].nq.ni',1,'ou[0][0].nq.nj',1,2,3, 'ou[0][0].nq.nk',1,2,3,'ou[0][0].nq.nl',1,2,3,'ou[0][0].nq.nm',1,'ou[0][0].nq.nn',1,2,3,4,5,6,7,'ou[0][0].nq.no',1,'ou[0][0].nq.np',1,2,3,'ou[0][0].nr[0][0]',1, 'ou[0][0].nx[1]',3,'ou[0][0].oa[0][2]',5,'ou[0][0].oa[1][0]',7,'ou[0][0].oa[1][1]',1,'ou[0][0].oa[1][2]',1,'ou[0][0].oa[2][0]',1,'ou[0][0].oa[2][1]',1, 'ou[0][0].oa[2][2]',1,'ou[0][0].og[0]',1,2,3,'ou[0][0].og[1]',1,2,3,'ou[0][0].oh','ou[0][0].os[1][0]','ou[0][0].oj[1]',3,'ou[0][0].om[1]','ou[0][0].ok+5', 'ou[0][0].ok+6','ou[0][0].ok+7','ou[0][0].ol[0][1]',1,2,3,4,5,6,7,'ou[0][0].ol[0][2]',1,2,3,4,5,6,7,'ov.mk[0]',1,2,3,4,5,6,7,'ov.mk[1]',1,2,3,4,5,6,7,'ov.ms',1, 'ov.mt',1,'ov.mu[0]',1,'ov.mu[1]',1,'ov.mw[1][0]',1,2,3,'ov.nq.nc',1,2,3,4,5,6,7,'ov.nq.nd',1,2,3,4,5,6,7,'ov.nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][1][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ov.nq.nf', 1,2,3,4,5,6,7,'ov.nq.ng',1,'ov.nq.nh',1,'ov.nq.ni',1,'ov.nq.nj',1,2,3,'ov.nq.nk',1,2,3,'ov.nq.nl',1,2,3,'ov.nq.nm',1,'ov.nq.nn',1,2,3,4,5,6,7,'ov.nq.no',1, 'ov.nq.np',1,2,3,'ov.nr[0][0]',1,'ov.nx[1]',3,'ov.oa[0][2]',5,'ov.oa[1][0]',7,'ov.oa[1][1]',1,'ov.oa[1][2]',1,'ov.oa[2][0]',1,'ov.oa[2][1]',1,'ov.oa[2][2]',1, 'ov.og[0]',1,2,3,'ov.og[1]',1,2,3,'ov.oh','ov.os[1][0]','ov.oj[1]',3,'ov.om[1]','ov.ok+5','ov.ok+6','ov.ok+7','ov.ol[0][1]',1,2,3,4,5,6,7,'ov.ol[0][2]',1,2,3,4, 5,6,7,'ow[0][0].mk[0]',1,2,3,4,5,6,7,'ow[0][0].mk[1]',1,2,3,4,5,6,7,'ow[0][0].ms',1,'ow[0][0].mt',1,'ow[0][0].mu[0]',1,'ow[0][0].mu[1]',1,'ow[0][0].mw[1][0]',1, 2,3,'ow[0][0].nq.nc',1,2,3,4,5,6,7,'ow[0][0].nq.nd',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.nf',1, 2,3,4,5,6,7,'ow[0][0].nq.ng',1,'ow[0][0].nq.nh',1,'ow[0][0].nq.ni',1,'ow[0][0].nq.nj',1,2,3,'ow[0][0].nq.nk',1,2,3,'ow[0][0].nq.nl',1,2,3,'ow[0][0].nq.nm',1, 'ow[0][0].nq.nn',1,2,3,4,5,6,7,'ow[0][0].nq.no',1,'ow[0][0].nq.np',1,2,3,'ow[0][0].nr[0][0]',1,'ow[0][0].nx[1]',3,'ow[0][0].oa[0][2]',5,'ow[0][0].oa[1][0]',7, 'ow[0][0].oa[1][1]',1,'ow[0][0].oa[1][2]',1,'ow[0][0].oa[2][0]',1,'ow[0][0].oa[2][1]',1,'ow[0][0].oa[2][2]',1,'ow[0][0].og[0]',1,2,3,'ow[0][0].og[1]',1,2,3, 'ow[0][0].oh','ow[0][0].os[1][0]','ow[0][0].oj[1]',3,'ow[0][0].om[1]','ow[0][0].ok+5','ow[0][0].ok+6','ow[0][0].ok+7','ow[0][0].ol[0][1]',1,2,3,4,5,6,7, 'ow[0][0].ol[0][2]',1,2,3,4,5,6,7,'ow[0][1].mk[0]',1,2,3,4,5,6,7,'ow[0][1].mk[1]',1,2,3,4,5,6,7,'ow[0][1].ms',1,'ow[0][1].mt',1,'ow[0][1].mu[0]',1, 'ow[0][1].mu[1]',1,'ow[0][1].mw[1][0]',1,2,3,'ow[0][1].nq.nc',1,2,3,4,5,6,7,'ow[0][1].nq.nd',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.nf',1,2,3,4,5,6,7,'ow[0][1].nq.ng',1,'ow[0][1].nq.nh',1,'ow[0][1].nq.ni',1,'ow[0][1].nq.nj',1,2,3, 'ow[0][1].nq.nk',1,2,3,'ow[0][1].nq.nl',1,2,3,'ow[0][1].nq.nm',1,'ow[0][1].nq.nn',1,2,3,4,5,6,7,'ow[0][1].nq.no',1,'ow[0][1].nq.np',1,2,3,'ow[0][1].nr[0][0]',1, 'ow[0][1].nx[1]',3,'ow[0][1].oa[0][2]',5,'ow[0][1].oa[1][0]',7,'ow[0][1].oa[1][1]',1,'ow[0][1].oa[1][2]',1,'ow[0][1].oa[2][0]',1,'ow[0][1].oa[2][1]',1, 'ow[0][1].oa[2][2]',1,'ow[0][1].og[0]',1,2,3,'ow[0][1].og[1]',1,2,3,'ow[0][1].oh','ow[0][1].os[1][0]','ow[0][1].oj[1]',3,'ow[0][1].om[1]','ow[0][1].ok+5', 'ow[0][1].ok+6','ow[0][1].ok+7','ow[0][1].ol[0][1]',1,2,3,4,5,6,7,'ow[0][1].ol[0][2]',1,2,3,4,5,6,7,'ow[1][0].mk[0]',1,2,3,4,5,6,7,'ow[1][0].mk[1]',1,2,3,4,5,6, 7,'ow[1][0].ms',1,'ow[1][0].mt',1,'ow[1][0].mu[0]',1,'ow[1][0].mu[1]',1,'ow[1][0].mw[1][0]',1,2,3,'ow[1][0].nq.nc',1,2,3,4,5,6,7,'ow[1][0].nq.nd',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.nf',1,2,3,4,5,6,7,'ow[1][0].nq.ng',1,'ow[1][0].nq.nh',1, 'ow[1][0].nq.ni',1,'ow[1][0].nq.nj',1,2,3,'ow[1][0].nq.nk',1,2,3,'ow[1][0].nq.nl',1,2,3,'ow[1][0].nq.nm',1,'ow[1][0].nq.nn',1,2,3,4,5,6,7,'ow[1][0].nq.no',1, 'ow[1][0].nq.np',1,2,3,'ow[1][0].nr[0][0]',1,'ow[1][0].nx[1]',3,'ow[1][0].oa[0][2]',5,'ow[1][0].oa[1][0]',7,'ow[1][0].oa[1][1]',1,'ow[1][0].oa[1][2]',1, 'ow[1][0].oa[2][0]',1,'ow[1][0].oa[2][1]',1,'ow[1][0].oa[2][2]',1,'ow[1][0].og[0]',1,2,3,'ow[1][0].og[1]',1,2,3,'ow[1][0].oh','ow[1][0].os[1][0]', 'ow[1][0].oj[1]',3,'ow[1][0].om[1]','ow[1][0].ok+5','ow[1][0].ok+6','ow[1][0].ok+7','ow[1][0].ol[0][1]',1,2,3,4,5,6,7,'ow[1][0].ol[0][2]',1,2,3,4,5,6,7, 'ow[1][1].mk[0]',1,2,3,4,5,6,7,'ow[1][1].mk[1]',1,2,3,4,5,6,7,'ow[1][1].ms',1,'ow[1][1].mt',1,'ow[1][1].mu[0]',1,'ow[1][1].mu[1]',1,'ow[1][1].mw[1][0]',1,2,3, 'ow[1][1].nq.nc',1,2,3,4,5,6,7,'ow[1][1].nq.nd',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[1][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.nf',1, 2,3,4,5,6,7,'ow[1][1].nq.ng',1,'ow[1][1].nq.nh',1,'ow[1][1].nq.ni',1,'ow[1][1].nq.nj',1,2,3,'ow[1][1].nq.nk',1,2,3,'ow[1][1].nq.nl',1,2,3,'ow[1][1].nq.nm',1, 'ow[1][1].nq.nn',1,2,3,4,5,6,7,'ow[1][1].nq.no',1,'ow[1][1].nq.np',1,2,3,'ow[1][1].nr[0][0]',1,'ow[1][1].nx[1]',3,'ow[1][1].oa[0][2]',5,'ow[1][1].oa[1][0]',7, 'ow[1][1].oa[1][1]',1,'ow[1][1].oa[1][2]',1,'ow[1][1].oa[2][0]',1,'ow[1][1].oa[2][1]',1,'ow[1][1].oa[2][2]',1,'ow[1][1].og[0]',1,2,3,'ow[1][1].og[1]',1,2,3, 'ow[1][1].oh','ow[1][1].os[1][0]','ow[1][1].oj[1]',3,'ow[1][1].om[1]','ow[1][1].ok+5','ow[1][1].ok+6','ow[1][1].ok+7','ow[1][1].ol[0][1]',1,2,3,4,5,6,7, 'ow[1][1].ol[0][2]',1,2,3,4,5,6,7,'ow[2][0].mk[0]',1,2,3,4,5,6,7,'ow[2][0].mk[1]',1,2,3,4,5,6,7,'ow[2][0].ms',1,'ow[2][0].mt',1,'ow[2][0].mu[0]',1, 'ow[2][0].mu[1]',1,'ow[2][0].mw[1][0]',1,2,3,'ow[2][0].nq.nc',1,2,3,4,5,6,7,'ow[2][0].nq.nd',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.nf',1,2,3,4,5,6,7,'ow[2][0].nq.ng',1,'ow[2][0].nq.nh',1,'ow[2][0].nq.ni',1,'ow[2][0].nq.nj',1,2,3, 'ow[2][0].nq.nk',1,2,3,'ow[2][0].nq.nl',1,2,3,'ow[2][0].nq.nm',1,'ow[2][0].nq.nn',1,2,3,4,5,6,7,'ow[2][0].nq.no',1,'ow[2][0].nq.np',1,2,3,'ow[2][0].nr[0][0]',1, 'ow[2][0].nx[1]',3,'ow[2][0].oa[0][2]',5,'ow[2][0].oa[1][0]',7,'ow[2][0].oa[1][1]',1,'ow[2][0].oa[1][2]',1,'ow[2][0].oa[2][0]',1,'ow[2][0].oa[2][1]',1, 'ow[2][0].oa[2][2]',1,'ow[2][0].og[0]',1,2,3,'ow[2][0].og[1]',1,2,3,'ow[2][0].oh','ow[2][0].os[1][0]','ow[2][0].oj[1]',3,'ow[2][0].om[1]','ow[2][0].ok+5', 'ow[2][0].ok+6','ow[2][0].ok+7','ow[2][0].ol[0][1]',1,2,3,4,5,6,7,'ow[2][0].ol[0][2]',1,2,3,4,5,6,7,'ow[2][1].mk[0]',1,2,3,4,5,6,7,'ow[2][1].mk[1]',1,2,3,4,5,6, 7,'ow[2][1].ms',1,'ow[2][1].mt',1,'ow[2][1].mu[0]',1,'ow[2][1].mu[1]',1,'ow[2][1].mw[1][0]',1,2,3,'ow[2][1].nq.nc',1,2,3,4,5,6,7,'ow[2][1].nq.nd',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.nf',1,2,3,4,5,6,7,'ow[2][1].nq.ng',1,'ow[2][1].nq.nh',1, 'ow[2][1].nq.ni',1,'ow[2][1].nq.nj',1,2,3,'ow[2][1].nq.nk',1,2,3,'ow[2][1].nq.nl',1,2,3,'ow[2][1].nq.nm',1,'ow[2][1].nq.nn',1,2,3,4,5,6,7,'ow[2][1].nq.no',1, 'ow[2][1].nq.np',1,2,3,'ow[2][1].nr[0][0]',1,'ow[2][1].nx[1]',3,'ow[2][1].oa[0][2]',5,'ow[2][1].oa[1][0]',7,'ow[2][1].oa[1][1]',1,'ow[2][1].oa[1][2]',1, 'ow[2][1].oa[2][0]',1,'ow[2][1].oa[2][1]',1,'ow[2][1].oa[2][2]',1,'ow[2][1].og[0]',1,2,3,'ow[2][1].og[1]',1,2,3,'ow[2][1].oh','ow[2][1].os[1][0]', 'ow[2][1].oj[1]',3,'ow[2][1].om[1]','ow[2][1].ok+5','ow[2][1].ok+6','ow[2][1].ok+7','ow[2][1].ol[0][1]',1,2,3,4,5,6,7,'ow[2][1].ol[0][2]',1,2,3,4,5,6,7,'ox',1, 'oz[0][1]',1,'oz[1][0]',1,'oz[1][1]',1,'pg',1,'ph',1,2,3,'pi',1,2,3,'pj[0][0][0]',1,2,3,'pj[0][0][1]',1,2,3,'pj[0][1][0]',1,2,3,'pj[0][1][1]',1,2,3, 'pj[0][2][0]',1,2,3,'pj[0][2][1]',1,2,3,'pk',1,2,3,'pl',1,2,3,'pm[0][0][0][0]',1,2,3,'pm[0][0][0][1]',1,2,3,'pm[0][1][0][0]',1,2,3,'pm[0][1][0][1]',1,2,3, 'pm[1][0][0][0]',1,2,3,'pm[1][0][0][1]',1,2,3,'pm[1][1][0][0]',1,2,3,'pm[1][1][0][1]',1,2,3,'pm[2][0][0][0]',1,2,3,'pm[2][0][0][1]',1,2,3,'pm[2][1][0][0]',1,2, 3,'pm[2][1][0][1]',1,2,3,'pn','po','pp',1,2,3,'pq',1,'pr',1,'pz[0][1]','ps[0][0][0]+3','pt[1]','ps[0][0][0]+5','ps[0][0][0]+6','ps[0][0][0]+7','ps[0][0][1]',1, 2,3,4,5,6,7,'ps[1][0][0]',1,2,3,4,5,6,7,'ps[1][0][1]',1,2,3,4,5,6,7,'ps[2][0][0]',1,2,3,4,5,6,7,'ps[2][0][1]',1,2,3,4,5,6,7,'qi.qa',1,2,3,'qi.qe[1][0]',5,6,7, 'qj',1,'qp+2','qp+3','qr[0][1]','qp+5','qp+6','qp+7','qt',1,2,3,'qu',1,2,3,'rg.qv',1,2,3,4,5,6,7,'rg.qw',1,2,3,4,5,6,7,'rg.qx[0]',1,2,3,4,5,6,7,'rg.qx[1]',1,2, 3,4,5,6,7,'rg.qx[2]',1,2,3,4,5,6,7,'rg.qy',1,2,3,'rg.qz',1,2,3,'rg.ra[0][0][0][0]',1,2,3,'rg.ra[0][0][1][0]',1,2,3,'rg.ra[0][0][2][0]',1,2,3, 'rg.ra[0][1][0][0]',1,2,3,'rg.ra[0][1][1][0]',1,2,3,'rg.ra[0][1][2][0]',1,2,3,'rg.ra[0][2][0][0]',1,2,3,'rg.ra[0][2][1][0]',1,2,3,'rg.ra[0][2][2][0]',1,2,3, 'rg.rb',1,2,3,4,5,6,7,'rg.rc',1,2,3,4,5,6,7,'rg.rd[0]',1,2,3,'rg.rd[1]',1,2,3,'rg.re',1,2,3,4,5,6,7,'rg.rf[0][0]',1,2,3,4,5,6,7,'rg.rf[1][0]',1,2,3,4,5,6,7, 'rh.qv',1,2,3,4,5,6,7,'rh.qw',1,2,3,4,5,6,7,'rh.qx[0]',1,2,3,4,5,6,7,'rh.qx[1]',1,2,3,4,5,6,7,'rh.qx[2]',1,2,3,4,5,6,7,'rh.qy',1,2,3,'rh.qz',1,2,3, 'rh.ra[0][0][0][0]',1,2,3,'rh.ra[0][0][1][0]',1,2,3,'rh.ra[0][0][2][0]',1,2,3,'rh.ra[0][1][0][0]',1,2,3,'rh.ra[0][1][1][0]',1,2,3,'rh.ra[0][1][2][0]',1,2,3, 'rh.ra[0][2][0][0]',1,2,3,'rh.ra[0][2][1][0]',1,2,3,'rh.ra[0][2][2][0]',1,2,3,'rh.rb',1,2,3,4,5,6,7,'rh.rc',1,2,3,4,5,6,7,'rh.rd[0]',1,2,3,'rh.rd[1]',1,2,3, 'rh.re',1,2,3,4,5,6,7,'rh.rf[0][0]',1,2,3,4,5,6,7,'rh.rf[1][0]',1,2,3,4,5,6,7,'ri','+3171','rs[0].rj','rs[0].rq[1]','rs[0].rq[2]',3,4,5,6,7,'rs[0].rk[0][1]',1, 2,3,4,5,6,7,'rs[0].rk[0][2]',1,2,3,4,5,6,7,'rt[0].rj','rt[0].rq[1]','rt[0].rq[2]',3,4,5,6,7,'rt[0].rk[0][1]',1,2,3,4,5,6,7,'rt[0].rk[0][2]',1,2,3,4,5,6,7, 'ru.rj','ru.rq[1]','ru.rq[2]',3,4,5,6,7,'ru.rk[0][1]',1,2,3,4,5,6,7,'ru.rk[0][2]',1,2,3,4,5,6,7,'rv[0]',1,2,3,4,5,6,7 ], ey=>[ 'ez','fn.fj[0][1][0]','fn.fi[1][0]','fn.fl[1][0][0]','fn.fl[1][1][0]','fn.fl[1][2][0]','fn.fl[2][0][0]','fn.fl[2][1][0]','fn.fl[2][2][0]','fn+9','fq','gg[1]', 'fr[1]',1,'fu[0][1]',1,2,3,'fu[1][0]',1,2,3,'fu[1][1]',1,2,3,'fu[2][0]',1,2,3,'fu[2][1]',1,2,3,'gz',1,2,3,'ha[0]','ha[1]','hb','+41','hc',1,2,3,'hd','+47', 'he[0][0][0][0]',1,2,3,'he[0][0][0][1]',1,2,3,'he[0][0][1][0]',1,2,3,'he[0][0][1][1]',1,2,3,'he[1][0][0][0]',1,2,3,'he[1][0][0][1]',1,2,3,'he[1][0][1][0]',1,2, 3,'he[1][0][1][1]',1,2,3,'hf',1,2,3,'hg',1,2,3,'ii.hh',1,'ii.hi',1,2,3,'ii.ht.hj',1,2,3,'ii.ht.hl[0][0][1]',1,2,3,'ii.ht.hl[0][0][2]',1,2,3,'ii.ht.hl[0][1][0]', 1,2,3,'ii.ht.hl[0][1][1]',1,2,3,'ii.ht.hl[0][1][2]',1,2,3,'ii.ht.hl[0][2][0]',1,2,3,'ii.ht.hl[0][2][1]',1,2,3,'ii.ht.hl[0][2][2]',1,2,3,'ii.ht.hl[1][0][0]',1,2, 3,'ii.ht.hl[1][0][1]',1,2,3,'ii.ht.hl[1][0][2]',1,2,3,'ii.ht.hl[1][1][0]',1,2,3,'ii.ht.hl[1][1][1]',1,2,3,'ii.ht.hl[1][1][2]',1,2,3,'ii.ht.hl[1][2][0]',1,2,3, 'ii.ht.hl[1][2][1]',1,2,3,'ii.ht.hl[1][2][2]',1,2,3,'ii.ht.hl[2][0][0]',1,2,3,'ii.ht.hl[2][0][1]',1,2,3,'ii.ht.hl[2][0][2]',1,2,3,'ii.ht.hl[2][1][0]',1,2,3, 'ii.ht.hl[2][1][1]',1,2,3,'ii.ht.hl[2][1][2]',1,2,3,'ii.ht.hl[2][2][0]',1,2,3,'ii.ht.hl[2][2][1]',1,2,3,'ii.ht.hl[2][2][2]',1,2,3,'ii.hu.hj',1,2,3, 'ii.hu.hl[0][0][1]',1,2,3,'ii.hu.hl[0][0][2]',1,2,3,'ii.hu.hl[0][1][0]',1,2,3,'ii.hu.hl[0][1][1]',1,2,3,'ii.hu.hl[0][1][2]',1,2,3,'ii.hu.hl[0][2][0]',1,2,3, 'ii.hu.hl[0][2][1]',1,2,3,'ii.hu.hl[0][2][2]',1,2,3,'ii.hu.hl[1][0][0]',1,2,3,'ii.hu.hl[1][0][1]',1,2,3,'ii.hu.hl[1][0][2]',1,2,3,'ii.hu.hl[1][1][0]',1,2,3, 'ii.hu.hl[1][1][1]',1,2,3,'ii.hu.hl[1][1][2]',1,2,3,'ii.hu.hl[1][2][0]',1,2,3,'ii.hu.hl[1][2][1]',1,2,3,'ii.hu.hl[1][2][2]',1,2,3,'ii.hu.hl[2][0][0]',1,2,3, 'ii.hu.hl[2][0][1]',1,2,3,'ii.hu.hl[2][0][2]',1,2,3,'ii.hu.hl[2][1][0]',1,2,3,'ii.hu.hl[2][1][1]',1,2,3,'ii.hu.hl[2][1][2]',1,2,3,'ii.hu.hl[2][2][0]',1,2,3, 'ii.hu.hl[2][2][1]',1,2,3,'ii.hu.hl[2][2][2]',1,2,3,'ii.hv','ii.hw','ii.hx[0]',1,2,3,'ii.ig[0][0][0].hy',1,'ii.ig[0][0][0].ie+2','ii.ig[0][0][0].ie+3', 'ii.ig[0][0][0].ie+4','ii.ig[0][0][0].ie+5','ii.ig[0][0][0].ie+6','ii.ig[0][0][0].ie+7','ii.ig[1][0][0].hy',1,'ii.ig[1][0][0].ie+2','ii.ig[1][0][0].ie+3', 'ii.ig[1][0][0].ie+4','ii.ig[1][0][0].ie+5','ii.ig[1][0][0].ie+6','ii.ig[1][0][0].ie+7','ii.ig[2][0][0].hy',1,'ii.ig[2][0][0].ie+2','ii.ig[2][0][0].ie+3', 'ii.ig[2][0][0].ie+4','ii.ig[2][0][0].ie+5','ii.ig[2][0][0].ie+6','ii.ig[2][0][0].ie+7','ii.ih.hy',1,'ii.ih.ie+2','ii.ih.ie+3','ii.ih.ie+4','ii.ih.ie+5', 'ii.ih.ie+6','ii.ih.ie+7','ij.hh',1,'ij.hi',1,2,3,'ij.ht.hj',1,2,3,'ij.ht.hl[0][0][1]',1,2,3,'ij.ht.hl[0][0][2]',1,2,3,'ij.ht.hl[0][1][0]',1,2,3, 'ij.ht.hl[0][1][1]',1,2,3,'ij.ht.hl[0][1][2]',1,2,3,'ij.ht.hl[0][2][0]',1,2,3,'ij.ht.hl[0][2][1]',1,2,3,'ij.ht.hl[0][2][2]',1,2,3,'ij.ht.hl[1][0][0]',1,2,3, 'ij.ht.hl[1][0][1]',1,2,3,'ij.ht.hl[1][0][2]',1,2,3,'ij.ht.hl[1][1][0]',1,2,3,'ij.ht.hl[1][1][1]',1,2,3,'ij.ht.hl[1][1][2]',1,2,3,'ij.ht.hl[1][2][0]',1,2,3, 'ij.ht.hl[1][2][1]',1,2,3,'ij.ht.hl[1][2][2]',1,2,3,'ij.ht.hl[2][0][0]',1,2,3,'ij.ht.hl[2][0][1]',1,2,3,'ij.ht.hl[2][0][2]',1,2,3,'ij.ht.hl[2][1][0]',1,2,3, 'ij.ht.hl[2][1][1]',1,2,3,'ij.ht.hl[2][1][2]',1,2,3,'ij.ht.hl[2][2][0]',1,2,3,'ij.ht.hl[2][2][1]',1,2,3,'ij.ht.hl[2][2][2]',1,2,3,'ij.hu.hj',1,2,3, 'ij.hu.hl[0][0][1]',1,2,3,'ij.hu.hl[0][0][2]',1,2,3,'ij.hu.hl[0][1][0]',1,2,3,'ij.hu.hl[0][1][1]',1,2,3,'ij.hu.hl[0][1][2]',1,2,3,'ij.hu.hl[0][2][0]',1,2,3, 'ij.hu.hl[0][2][1]',1,2,3,'ij.hu.hl[0][2][2]',1,2,3,'ij.hu.hl[1][0][0]',1,2,3,'ij.hu.hl[1][0][1]',1,2,3,'ij.hu.hl[1][0][2]',1,2,3,'ij.hu.hl[1][1][0]',1,2,3, 'ij.hu.hl[1][1][1]',1,2,3,'ij.hu.hl[1][1][2]',1,2,3,'ij.hu.hl[1][2][0]',1,2,3,'ij.hu.hl[1][2][1]',1,2,3,'ij.hu.hl[1][2][2]',1,2,3,'ij.hu.hl[2][0][0]',1,2,3, 'ij.hu.hl[2][0][1]',1,2,3,'ij.hu.hl[2][0][2]',1,2,3,'ij.hu.hl[2][1][0]',1,2,3,'ij.hu.hl[2][1][1]',1,2,3,'ij.hu.hl[2][1][2]',1,2,3,'ij.hu.hl[2][2][0]',1,2,3, 'ij.hu.hl[2][2][1]',1,2,3,'ij.hu.hl[2][2][2]',1,2,3,'ij.hv','ij.hw','ij.hx[0]',1,2,3,'ij.ig[0][0][0].hy',1,'ij.ig[0][0][0].ie+2','ij.ig[0][0][0].ie+3', 'ij.ig[0][0][0].ie+4','ij.ig[0][0][0].ie+5','ij.ig[0][0][0].ie+6','ij.ig[0][0][0].ie+7','ij.ig[1][0][0].hy',1,'ij.ig[1][0][0].ie+2','ij.ig[1][0][0].ie+3', 'ij.ig[1][0][0].ie+4','ij.ig[1][0][0].ie+5','ij.ig[1][0][0].ie+6','ij.ig[1][0][0].ie+7','ij.ig[2][0][0].hy',1,'ij.ig[2][0][0].ie+2','ij.ig[2][0][0].ie+3', 'ij.ig[2][0][0].ie+4','ij.ig[2][0][0].ie+5','ij.ig[2][0][0].ie+6','ij.ig[2][0][0].ie+7','ij.ih.hy',1,'ij.ih.ie+2','ij.ih.ie+3','ij.ih.ie+4','ij.ih.ie+5', 'ij.ih.ie+6','ij.ih.ie+7','ik.hh',1,'ik.hi',1,2,3,'ik.ht.hj',1,2,3,'ik.ht.hl[0][0][1]',1,2,3,'ik.ht.hl[0][0][2]',1,2,3,'ik.ht.hl[0][1][0]',1,2,3, 'ik.ht.hl[0][1][1]',1,2,3,'ik.ht.hl[0][1][2]',1,2,3,'ik.ht.hl[0][2][0]',1,2,3,'ik.ht.hl[0][2][1]',1,2,3,'ik.ht.hl[0][2][2]',1,2,3,'ik.ht.hl[1][0][0]',1,2,3, 'ik.ht.hl[1][0][1]',1,2,3,'ik.ht.hl[1][0][2]',1,2,3,'ik.ht.hl[1][1][0]',1,2,3,'ik.ht.hl[1][1][1]',1,2,3,'ik.ht.hl[1][1][2]',1,2,3,'ik.ht.hl[1][2][0]',1,2,3, 'ik.ht.hl[1][2][1]',1,2,3,'ik.ht.hl[1][2][2]',1,2,3,'ik.ht.hl[2][0][0]',1,2,3,'ik.ht.hl[2][0][1]',1,2,3,'ik.ht.hl[2][0][2]',1,2,3,'ik.ht.hl[2][1][0]',1,2,3, 'ik.ht.hl[2][1][1]',1,2,3,'ik.ht.hl[2][1][2]',1,2,3,'ik.ht.hl[2][2][0]',1,2,3,'ik.ht.hl[2][2][1]',1,2,3,'ik.ht.hl[2][2][2]',1,2,3,'ik.hu.hj',1,2,3, 'ik.hu.hl[0][0][1]',1,2,3,'ik.hu.hl[0][0][2]',1,2,3,'ik.hu.hl[0][1][0]',1,2,3,'ik.hu.hl[0][1][1]',1,2,3,'ik.hu.hl[0][1][2]',1,2,3,'ik.hu.hl[0][2][0]',1,2,3, 'ik.hu.hl[0][2][1]',1,2,3,'ik.hu.hl[0][2][2]',1,2,3,'ik.hu.hl[1][0][0]',1,2,3,'ik.hu.hl[1][0][1]',1,2,3,'ik.hu.hl[1][0][2]',1,2,3,'ik.hu.hl[1][1][0]',1,2,3, 'ik.hu.hl[1][1][1]',1,2,3,'ik.hu.hl[1][1][2]',1,2,3,'ik.hu.hl[1][2][0]',1,2,3,'ik.hu.hl[1][2][1]',1,2,3,'ik.hu.hl[1][2][2]',1,2,3,'ik.hu.hl[2][0][0]',1,2,3, 'ik.hu.hl[2][0][1]',1,2,3,'ik.hu.hl[2][0][2]',1,2,3,'ik.hu.hl[2][1][0]',1,2,3,'ik.hu.hl[2][1][1]',1,2,3,'ik.hu.hl[2][1][2]',1,2,3,'ik.hu.hl[2][2][0]',1,2,3, 'ik.hu.hl[2][2][1]',1,2,3,'ik.hu.hl[2][2][2]',1,2,3,'ik.hv','ik.hw','ik.hx[0]',1,2,3,'ik.ig[0][0][0].hy',1,'ik.ig[0][0][0].ie+2','ik.ig[0][0][0].ie+3', 'ik.ig[0][0][0].ie+4','ik.ig[0][0][0].ie+5','ik.ig[0][0][0].ie+6','ik.ig[0][0][0].ie+7','ik.ig[1][0][0].hy',1,'ik.ig[1][0][0].ie+2','ik.ig[1][0][0].ie+3', 'ik.ig[1][0][0].ie+4','ik.ig[1][0][0].ie+5','ik.ig[1][0][0].ie+6','ik.ig[1][0][0].ie+7','ik.ig[2][0][0].hy',1,'ik.ig[2][0][0].ie+2','ik.ig[2][0][0].ie+3', 'ik.ig[2][0][0].ie+4','ik.ig[2][0][0].ie+5','ik.ig[2][0][0].ie+6','ik.ig[2][0][0].ie+7','ik.ih.hy',1,'ik.ih.ie+2','ik.ih.ie+3','ik.ih.ie+4','ik.ih.ie+5', 'ik.ih.ie+6','ik.ih.ie+7','iu.il','jt.db.bo.bh[0][1]','jt.be.bd[0][1][0]',3,'iu.ir[0][1]',1,'jt.db.cn.ck[0][0][1][1]',3,'iu.ir[1][0]',1, 'jt.db.cn.ck[0][0][2][1]',3,'iu.ir[1][1]','jt.db.bq[0][1].bh[0][1]','jt.be.af[1]',3,'iu.ir[2][0]',1,'jt.be.ah[0][0][0]','jt.be.ah[1][0][0]','iu.ir[2][1]',1, 'jt.db.cn.ck[0][1][2][1]',3,'jr.ji[0][0][1][0]','jt.db.bq[1][0].bh[0][1]','jt.db.bq[1][0].bh[0][2]',3,'jt.be.aj[0][0][0]','jt.be.av','jt.be.aw',7, 'jr.ji[0][0][1][1]','jt.db.cy','jt.db.cz',3,'jt.be.aj[0][0][1]','jt.db.bq[1][1].bh[0][1]','jt.db.bq[1][1].bh[0][2]',7,'jr.ji[0][0][1][2]',1, 'jt.db.da[1][0][1][0]',3,'jt.be.aj[0][1][0]',5,'jt.db.da[2][0][1][0]',7,'jr.ji[0][0][2][0]',1,2,3,'jt.be.aj[0][1][1]',5,6,7,'jr.ji[0][0][2][1]',1,2,3, 'jt.be.aj[0][2][0]',5,6,7,'jr.ji[0][0][2][2]',1,2,3,'jt.be.aj[0][2][1]',5,6,7,'jt.be.az[0][0][2]',5,'jt.db.bv',7,'jt.be.aj[1][0][0]','jt.db.bw[1]', 'jt.db.bw[2]',3,'jt.be.az[0][1][0]',5,'jt.dm[0][1]',7,'jt.be.aj[1][0][1]',1,'jt.dm[0][2]',3,'jt.be.az[0][1][1]',5,'jt.dm[1][0]',7,'jt.be.aj[1][1][0]',1, 'jt.dm[1][1]',3,'jt.be.az[0][1][2]',5,'jt.dm[1][2]',7,'jt.be.aj[1][1][1]',1,'jt.dn',3,'jt.be.az[0][2][0]',5,'jt.dp',7,'jt.be.aj[1][2][0]',1,'jt.dq',3, 'jt.be.az[0][2][1]',5,'jt.dr','jt.ds','jt.be.aj[1][2][1]',1,'jt.du',3,'jt.be.az[0][2][2]',5,'jt.dv',7,'jt.be.aj[2][0][0]',1,'jt.dx[1][0]',3,'jt.be.az[1][0][0]', 5,'jt.dx[2][0]',7,'jt.be.aj[2][0][1]',1,'jt.eb[1][0]',3,'jt.be.az[1][0][1]',5,'jt.eb[1][1]',7,'jt.be.aj[2][1][0]',1,'jt.eb[1][2]',3,'jt.be.az[1][0][2]',5, 'jt.eb[2][0]',7,'jt.be.aj[2][1][1]',1,'jt.eb[2][1]',3,'jt.be.az[1][1][0]',5,'jt.eb[2][2]',7,'jt.be.aj[2][2][0]',1,'jt.ec',3,'jt.be.az[1][1][1]',5,'jt.ee',7, 'jt.be.aj[2][2][1]',1,'jt.ef',3,'jt.be.az[1][1][2]','jt.eh','jt.ei',7,'jt.be.ak',1,'jt.ek',3,'jt.be.az[1][2][0]','jt.el[0][0][1]','jt.el[0][1][0]', 'jt.el[0][1][1]','jt.be.al','jt.be.am','jt.be.an','jt.el[1][1][1]','jt.be.ao','jt.el[2][0][1]','jt.el[2][1][0]','jt.el[2][1][1]','jt.em[0][0][0]', 'jt.em[0][0][1]','jt.em[0][1][0]','jt.em[0][1][1]','jt.be.az[1][2][2]','jt.em[0][2][1]','jt.em[1][0][0]','jt.em[1][0][1]','jt.em[1][1][0]','jt.em[1][1][1]', 'jt.em[1][2][0]','jt.em[1][2][1]','jt.be.ba',1,2,3,'jt.eo',5,'jt.ep',7,'jt.be.bb',1,'jt.ev.eq',3,2,3,'jt.ev.eu+4','jt.ev.eu+5','jt.ev.eu+6','jt.ev.eu+7', 'jt.ew.eq',1,2,3,'jt.ew.eu+4','jt.ew.eu+5','jt.ew.eu+6','jt.ew.eu+7','jt.ex',1,2,3 ], aa=>[ 'ab','db.bo.bh[0][1]','be.bd[0][1][0]',3,'be.ad',5,'db.cn.ck[0][0][1][1]',7,'be.ae',1,'db.cn.ck[0][0][2][1]',3,'be.af[0]','db.bq[0][1].bh[0][1]','be.af[1]',1, 'be.ag',1,'be.ah[0][0][0]','be.ah[1][0][0]','be.ai',1,'db.cn.ck[0][1][2][1]',3,'be.at[2]','db.bq[1][0].bh[0][1]','db.bq[1][0].bh[0][2]',7,'be.aj[0][0][0]', 'be.av','be.aw',3,'be.ax[0][0][0]','db.cy','db.cz',7,'be.aj[0][0][1]','db.bq[1][1].bh[0][1]','db.bq[1][1].bh[0][2]',3,'be.ax[0][0][1]',5,'db.da[1][0][1][0]',7, 'be.aj[0][1][0]',1,'db.da[2][0][1][0]',3,'be.ay',5,6,7,'be.aj[0][1][1]',1,2,3,'be.az[0][0][0]',5,6,7,'be.aj[0][2][0]',1,2,3,'be.az[0][0][1]',5,6,7, 'be.aj[0][2][1]',1,2,3,'be.az[0][0][2]',5,'db.bv',7,'be.aj[1][0][0]','db.bw[1]','db.bw[2]',3,'be.az[0][1][0]',5,'dm[0][1]',7,'be.aj[1][0][1]',1,'dm[0][2]',3, 'be.az[0][1][1]',5,'dm[1][0]',7,'be.aj[1][1][0]',1,'dm[1][1]',3,'be.az[0][1][2]',5,'dm[1][2]',7,'be.aj[1][1][1]',1,'dn',3,'be.az[0][2][0]',5,'dp',7, 'be.aj[1][2][0]',1,'dq',3,'be.az[0][2][1]',5,'dr','ds','be.aj[1][2][1]',1,'du',3,'be.az[0][2][2]',5,'dv',7,'be.aj[2][0][0]',1,'dx[1][0]',3,'be.az[1][0][0]',5, 'dx[2][0]',7,'be.aj[2][0][1]',1,'eb[1][0]',3,'be.az[1][0][1]',5,'eb[1][1]',7,'be.aj[2][1][0]',1,'eb[1][2]',3,'be.az[1][0][2]',5,'eb[2][0]',7,'be.aj[2][1][1]',1, 'eb[2][1]',3,'be.az[1][1][0]',5,'eb[2][2]',7,'be.aj[2][2][0]',1,'ec',3,'be.az[1][1][1]',5,'ee',7,'be.aj[2][2][1]',1,'ef',3,'be.az[1][1][2]','eh','ei',7,'be.ak', 1,'ek',3,'be.az[1][2][0]','el[0][0][1]','el[0][1][0]','el[0][1][1]','be.al','be.am','be.an','el[1][1][1]','be.ao','el[2][0][1]','el[2][1][0]','el[2][1][1]', 'em[0][0][0]','em[0][0][1]','em[0][1][0]','em[0][1][1]','be.az[1][2][2]','em[0][2][1]','em[1][0][0]','em[1][0][1]','em[1][1][0]','em[1][1][1]','em[1][2][0]', 'em[1][2][1]','be.ba',1,2,3,'eo',5,'ep',7,'be.bb',1,'ev.eq',3,2,3,'ev.eu+4','ev.eu+5','ev.eu+6','ev.eu+7','ew.eq',1,2,3,'ew.eu+4','ew.eu+5','ew.eu+6','ew.eu+7', 'ex',1,2,3 ], rw=>[ 'rx','uo.sc[1]','uo.sh[0][1]','uo.um.ud','uo.rz[0][1]','aar[0][0].aah[2][0]','uo.sh[1][1]',3,'uo.rz[0][2]','uo.sm','uo.sh[2][1]','uo.so','uo.rz[1][0]',1, 'ux[0][0]',3,'uo.rz[1][1]',1,'ux[0][1]','vh.va[0][0][1]','uo.rz[1][2]','vh.va[0][1][1]','ux[0][2]','vh.va[0][2][1]','uo.sq[1]','vh.vc','ux[1][0]', 'aar[0][0].aao[1]','uo.sr','wi.wg','ux[1][1]',3,'uo.sv[1][0][0][2]','ws.wo[1]','ux[1][2]',3,'uo.sv[1][0][1][0]',1,'uo.to.te[0][0][0][1]',3,'uo.sv[1][0][1][1]', 'aar[0][1].aah[0][0]','uo.to.te[1][0][0][1]','aar[0][1].aah[1][0]','uo.sv[1][0][1][2]','aar[0][1].aah[2][0]','uo.to.tg',3,'uo.to.th',1,'uo.to.ti',1, 'uo.to.tj[0]',1,'ws.wr[2][0]',3,'uo.to.tj[1]',1,'ws.wr[2][2]',3,'uo.to.tk',1,'ye.yb[1][1][0][1]',3,'uo.to.tl','aaf[0][0][0]','ye.yb[1][1][1][1]','aaf[0][2][0]', 'uo.to.tm','aaf[1][1][0]','uo.to.tn','aaf[2][0][0]','vn[0][1][1]','aaf[2][2][0]','ye.yb[2][0][1][1]','uo.um.ue[1][0][2]+7','uo.um.ue[1][1][0]',1, 'ye.yb[2][1][0][1]',3,'vn[0][1][2]','aar[1][0].aah[0][0]','ye.yb[2][1][1][1]','aar[1][0].aah[1][0]','uo.um.ue[1][1][1]','aar[1][0].aah[2][0]','ye.yc[1][0]',3, 'vn[0][2][0]',5,'ye.yd',7,'uo.um.ue[1][1][2]',1,2,3,'vn[0][2][1]',5,6,7,'uo.um.uf',1,2,3,'vn[0][2][2]','aar[1][0].aan','aar[1][0].aao[0]','aar[1][0].aao[1]', 'uo.um.ug',1,'uo.um.uh[0]',1,'vn[1][0][0]',3,'uo.um.uh[1]',1,'aar[1][0].aaq',3,'uo.um.uh[2]',1,'vn[1][0][1]','aar[1][1].aah[0][0]','uo.um.ui', 'aar[1][1].aah[1][0]','aar[1][1].aah[1][1]','aar[1][1].aah[2][0]','aar[1][1].aah[2][1]',5,'vn[1][0][2]',7,'uo.um.uj[0]',1,'aar[1][1].aaj',3,'uo.um.uk[0]', 'uo.um.uk[1]','uo.um.uk[2]','uo.um.ul','up[1][0].rz[0][0]','up[1][0].sc[1]','up[1][0].sh[0][1]','up[1][0].um.ud','up[1][0].rz[0][1]',1,'up[1][0].sh[1][1]', 'aar[1][1].aan','up[1][0].rz[0][2]','up[1][0].sm','up[1][0].sh[2][1]','up[1][0].so','up[1][0].rz[1][0]',1,'vn[1][1][2]',3,'up[1][0].rz[1][1]',1,'aar[1][1].aaq', 3,'up[1][0].rz[1][2]',1,'vn[1][2][0]','aar[2][0].aah[0][0]','up[1][0].sq[1]','aar[2][0].aah[1][0]','aar[2][0].aah[1][1]','aar[2][0].aah[2][0]','up[1][0].sr',1, 'vn[1][2][1]',3,'up[1][0].sv[1][0][0][2]',1,'aar[2][0].aaj',3,'up[1][0].sv[1][0][1][0]',1,'up[1][0].to.te[0][0][0][1]',3,'up[1][0].sv[1][0][1][1]',1, 'up[1][0].to.te[1][0][0][1]',3,'up[1][0].sv[1][0][1][2]',1,'up[1][0].to.tg','aar[2][0].aan','up[1][0].to.th','aar[2][0].aao[1]','up[1][0].to.ti',1, 'up[1][0].to.tj[0]',1,'vn[2][0][1]',3,'up[1][0].to.tj[1]',1,'aar[2][0].aaq',3,'up[1][0].to.tk',1,'vn[2][0][2]','aar[2][1].aah[0][0]','up[1][0].to.tl', 'aar[2][1].aah[1][0]','aar[2][1].aah[1][1]','aar[2][1].aah[2][0]','up[1][0].to.tm',1,'up[1][0].to.tn',1,'up[1][0].um.ue[1][0][2]+4','up[1][0].um.ue[1][0][2]+5', 'aar[2][1].aaj','up[1][0].um.ue[1][0][2]+7','up[1][0].um.ue[1][1][0]',1,'vn[2][1][1]',3,4,5,'aar[2][1].aal',7,'up[1][0].um.ue[1][1][1]',1,'vn[2][1][2]', 'aar[2][1].aan','aar[2][1].aao[0]','aar[2][1].aao[1]','aar[2][1].aap',7,'up[1][0].um.ue[1][1][2]',1,'vn[2][2][0]',3,4,5,'aar[2][1].aaq',7,'up[1][0].um.uf',1, 'vn[2][2][1]',3,4,5,6,7,'up[1][0].um.ug',1,'up[1][0].um.uh[0]',1,2,3,'up[1][0].um.uh[1]',1,2,3,'up[1][0].um.uh[2]',1,2,3,'up[1][0].um.ui',1,2,3,'vp','vq', 'vr[0][0]','vr[1][0]','up[1][0].um.uj[0]','vs',2,3,'up[1][0].um.uk[0]','up[1][0].um.uk[1]','up[1][0].um.uk[2]','up[1][0].um.ul','up[2][0].rz[0][0]', 'up[2][0].sc[1]','up[2][0].sh[0][1]','up[2][0].um.ud','up[2][0].rz[0][1]',1,'up[2][0].sh[1][1]',3,'up[2][0].rz[0][2]','up[2][0].sm','up[2][0].sh[2][1]', 'up[2][0].so','up[2][0].rz[1][0]',1,2,3,'up[2][0].rz[1][1]',1,2,3,'up[2][0].rz[1][2]',1,2,3,'up[2][0].sq[1]',1,2,3,'up[2][0].sr',1,2,3, 'up[2][0].sv[1][0][0][2]',1,2,3,'up[2][0].sv[1][0][1][0]',1,'up[2][0].to.te[0][0][0][1]',3,'up[2][0].sv[1][0][1][1]',1,'up[2][0].to.te[1][0][0][1]',3, 'up[2][0].sv[1][0][1][2]',1,'up[2][0].to.tg',3,'up[2][0].to.th',1,'up[2][0].to.ti',1,'up[2][0].to.tj[0]',1,2,3,'up[2][0].to.tj[1]',1,2,3,'up[2][0].to.tk',1,2,3, 'up[2][0].to.tl',1,2,3,'up[2][0].to.tm',1,'up[2][0].to.tn',1,'up[2][0].um.ue[1][0][2]+4','up[2][0].um.ue[1][0][2]+5','up[2][0].um.ue[1][0][2]+6', 'up[2][0].um.ue[1][0][2]+7','up[2][0].um.ue[1][1][0]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][1]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][2]',1,2,3,4,5,6,7, 'up[2][0].um.uf',1,2,3,4,5,6,7,'up[2][0].um.ug',1,'up[2][0].um.uh[0]',1,2,3,'up[2][0].um.uh[1]',1,2,3,'up[2][0].um.uh[2]',1,2,3,'up[2][0].um.ui',1,2,3,4,5,6,7, 'up[2][0].um.uj[0]',1,2,3,'up[2][0].um.uk[0]','up[2][0].um.uk[1]','up[2][0].um.uk[2]','up[2][0].um.ul' ]}, 4 => { kc=>[ 'mg.kd',1,2,3,'mg.ke',1,2,3,4,5,6,7,'mg.kf',1,2,3,'mg.kg',1,2,3,'mg.kh',1,'mg.ki','mg+23','mg.kw.kj[0][0]',1,2,3,'mg.kw.kj[0][1]',1,2,3,'mg.kw.kj[1][0]',1,2,3, 'mg.kw.kj[1][1]',1,2,3,'mg.kw.kj[2][0]',1,2,3,'mg.kw.kj[2][1]',1,2,3,'mg.kx',1,2,3,4,5,6,7,'mg.ky',1,2,3,'mg.lf[0][1]',5,6,7,'mg.lc[1]',1,2,3,4,5,6,7, 'mg.ld[0][0][2]',1,2,3,4,5,6,7,'mg.ld[1][0][0]',1,2,3,4,5,6,7,'mg.ld[1][0][1]',1,2,3,4,5,6,7,'mg.ld[1][0][2]',1,2,3,4,5,6,7,'mg.lp[0][0].li',1, 'mg.lp[0][0].lk+2','mg.lp[0][0].lk+3','mg.lp[0][0].lm[0][0][1]','mg.lp[0][0].lk+5','mg.lp[0][0].lk+6','mg.lp[0][0].lk+7','mg.lp[0][0].lm[0][0][2]',1,2,3, 'mg.lp[0][0].lm[0][1][0]',1,2,3,'mg.lp[0][0].lm[0][1][1]',1,2,3,'mg.lp[0][0].lm[0][1][2]',1,2,3,'mg.lp[0][0].lm[0][2][0]',1,2,3,'mg.lp[0][0].lm[0][2][1]',1,2,3, 'mg.lp[0][0].lm[0][2][2]',1,2,3,'mg.lp[0][1].li',1,'mg.lp[0][1].lk+2','mg.lp[0][1].lk+3','mg.lp[0][1].lm[0][0][1]','mg.lp[0][1].lk+5','mg.lp[0][1].lk+6', 'mg.lp[0][1].lk+7','mg.lp[0][1].lm[0][0][2]',1,2,3,'mg.lp[0][1].lm[0][1][0]',1,2,3,'mg.lp[0][1].lm[0][1][1]',1,2,3,'mg.lp[0][1].lm[0][1][2]',1,2,3, 'mg.lp[0][1].lm[0][2][0]',1,2,3,'mg.lp[0][1].lm[0][2][1]',1,2,3,'mg.lp[0][1].lm[0][2][2]',1,2,3,'mg.lp[1][0].li',1,'mg.lp[1][0].lk+2','mg.lp[1][0].lk+3', 'mg.lp[1][0].lm[0][0][1]','mg.lp[1][0].lk+5','mg.lp[1][0].lk+6','mg.lp[1][0].lk+7','mg.lp[1][0].lm[0][0][2]',1,2,3,'mg.lp[1][0].lm[0][1][0]',1,2,3, 'mg.lp[1][0].lm[0][1][1]',1,2,3,'mg.lp[1][0].lm[0][1][2]',1,2,3,'mg.lp[1][0].lm[0][2][0]',1,2,3,'mg.lp[1][0].lm[0][2][1]',1,2,3,'mg.lp[1][0].lm[0][2][2]',1,2,3, 'mg.lp[1][1].li',1,'mg.lp[1][1].lk+2','mg.lp[1][1].lk+3','mg.lp[1][1].lm[0][0][1]','mg.lp[1][1].lk+5','mg.lp[1][1].lk+6','mg.lp[1][1].lk+7', 'mg.lp[1][1].lm[0][0][2]',1,2,3,'mg.lp[1][1].lm[0][1][0]',1,2,3,'mg.lp[1][1].lm[0][1][1]',1,2,3,'mg.lp[1][1].lm[0][1][2]',1,2,3,'mg.lp[1][1].lm[0][2][0]',1,2,3, 'mg.lp[1][1].lm[0][2][1]',1,2,3,'mg.lp[1][1].lm[0][2][2]',1,2,3,'mg.lq.li',1,'mg.lq.lk+2','mg.lq.lk+3','mg.lq.lm[0][0][1]','mg.lq.lk+5','mg.lq.lk+6', 'mg.lq.lk+7','mg.lq.lm[0][0][2]',1,2,3,'mg.lq.lm[0][1][0]',1,2,3,'mg.lq.lm[0][1][1]',1,2,3,'mg.lq.lm[0][1][2]',1,2,3,'mg.lq.lm[0][2][0]',1,2,3, 'mg.lq.lm[0][2][1]',1,2,3,'mg.lq.lm[0][2][2]',1,2,3,'mg.lr',1,2,3,4,5,6,7,'mg.ls',1,2,3,4,5,6,7,'mg.lt','mg+301','mg.lu',1,'mg.lv',1,'mg.lw','mg.lx', 'mg.ly[0][0][0][0]','mg.ly[0][0][1][0]','mg.ly[0][1][0][0]','mg.ly[0][1][1][0]','mg.ly[0][2][0][0]','mg.ly[0][2][1][0]','mg.lz','mg+315','mg.ma',1,2,3,'mg.mb', 1,2,3,'mg.mc',1,2,3,'mg.md[0][0]',1,2,3,4,5,6,7,'mg.md[1][0]',1,2,3,4,5,6,7,'mg.me[0]',1,'mg.mf[0]',1,'mg.mf[1]',1,'mg.mf[2]',1,'mh.kd',1,2,3,'mh.ke',1,2,3,4,5, 6,7,'mh.kf',1,2,3,'mh.kg',1,2,3,'mh.kh',1,'mh.ki','mh+23','mh.kw.kj[0][0]',1,2,3,'mh.kw.kj[0][1]',1,2,3,'mh.kw.kj[1][0]',1,2,3,'mh.kw.kj[1][1]',1,2,3, 'mh.kw.kj[2][0]',1,2,3,'mh.kw.kj[2][1]',1,2,3,'mh.kx',1,2,3,4,5,6,7,'mh.ky',1,2,3,'mh.lf[0][1]',5,6,7,'mh.lc[1]',1,2,3,4,5,6,7,'mh.ld[0][0][2]',1,2,3,4,5,6,7, 'mh.ld[1][0][0]',1,2,3,4,5,6,7,'mh.ld[1][0][1]',1,2,3,4,5,6,7,'mh.ld[1][0][2]',1,2,3,4,5,6,7,'mh.lp[0][0].li',1,'mh.lp[0][0].lk+2','mh.lp[0][0].lk+3', 'mh.lp[0][0].lm[0][0][1]','mh.lp[0][0].lk+5','mh.lp[0][0].lk+6','mh.lp[0][0].lk+7','mh.lp[0][0].lm[0][0][2]',1,2,3,'mh.lp[0][0].lm[0][1][0]',1,2,3, 'mh.lp[0][0].lm[0][1][1]',1,2,3,'mh.lp[0][0].lm[0][1][2]',1,2,3,'mh.lp[0][0].lm[0][2][0]',1,2,3,'mh.lp[0][0].lm[0][2][1]',1,2,3,'mh.lp[0][0].lm[0][2][2]',1,2,3, 'mh.lp[0][1].li',1,'mh.lp[0][1].lk+2','mh.lp[0][1].lk+3','mh.lp[0][1].lm[0][0][1]','mh.lp[0][1].lk+5','mh.lp[0][1].lk+6','mh.lp[0][1].lk+7', 'mh.lp[0][1].lm[0][0][2]',1,2,3,'mh.lp[0][1].lm[0][1][0]',1,2,3,'mh.lp[0][1].lm[0][1][1]',1,2,3,'mh.lp[0][1].lm[0][1][2]',1,2,3,'mh.lp[0][1].lm[0][2][0]',1,2,3, 'mh.lp[0][1].lm[0][2][1]',1,2,3,'mh.lp[0][1].lm[0][2][2]',1,2,3,'mh.lp[1][0].li',1,'mh.lp[1][0].lk+2','mh.lp[1][0].lk+3','mh.lp[1][0].lm[0][0][1]', 'mh.lp[1][0].lk+5','mh.lp[1][0].lk+6','mh.lp[1][0].lk+7','mh.lp[1][0].lm[0][0][2]',1,2,3,'mh.lp[1][0].lm[0][1][0]',1,2,3,'mh.lp[1][0].lm[0][1][1]',1,2,3, 'mh.lp[1][0].lm[0][1][2]',1,2,3,'mh.lp[1][0].lm[0][2][0]',1,2,3,'mh.lp[1][0].lm[0][2][1]',1,2,3,'mh.lp[1][0].lm[0][2][2]',1,2,3,'mh.lp[1][1].li',1, 'mh.lp[1][1].lk+2','mh.lp[1][1].lk+3','mh.lp[1][1].lm[0][0][1]','mh.lp[1][1].lk+5','mh.lp[1][1].lk+6','mh.lp[1][1].lk+7','mh.lp[1][1].lm[0][0][2]',1,2,3, 'mh.lp[1][1].lm[0][1][0]',1,2,3,'mh.lp[1][1].lm[0][1][1]',1,2,3,'mh.lp[1][1].lm[0][1][2]',1,2,3,'mh.lp[1][1].lm[0][2][0]',1,2,3,'mh.lp[1][1].lm[0][2][1]',1,2,3, 'mh.lp[1][1].lm[0][2][2]',1,2,3,'mh.lq.li',1,'mh.lq.lk+2','mh.lq.lk+3','mh.lq.lm[0][0][1]','mh.lq.lk+5','mh.lq.lk+6','mh.lq.lk+7','mh.lq.lm[0][0][2]',1,2,3, 'mh.lq.lm[0][1][0]',1,2,3,'mh.lq.lm[0][1][1]',1,2,3,'mh.lq.lm[0][1][2]',1,2,3,'mh.lq.lm[0][2][0]',1,2,3,'mh.lq.lm[0][2][1]',1,2,3,'mh.lq.lm[0][2][2]',1,2,3, 'mh.lr',1,2,3,4,5,6,7,'mh.ls',1,2,3,4,5,6,7,'mh.lt','mh+301','mh.lu',1,'mh.lv',1,'mh.lw','mh.lx','mh.ly[0][0][0][0]','mh.ly[0][0][1][0]','mh.ly[0][1][0][0]', 'mh.ly[0][1][1][0]','mh.ly[0][2][0][0]','mh.ly[0][2][1][0]','mh.lz','mh+315','mh.ma',1,2,3,'mh.mb',1,2,3,'mh.mc',1,2,3,'mh.md[0][0]',1,2,3,4,5,6,7, 'mh.md[1][0]',1,2,3,4,5,6,7,'mh.me[0]',1,'mh.mf[0]',1,'mh.mf[1]',1,'mh.mf[2]',1,'mi.kd',1,2,3,'mi.ke',1,2,3,4,5,6,7,'mi.kf',1,2,3,'mi.kg',1,2,3,'mi.kh',1, 'mi.ki','mi+23','mi.kw.kj[0][0]',1,2,3,'mi.kw.kj[0][1]',1,2,3,'mi.kw.kj[1][0]',1,2,3,'mi.kw.kj[1][1]',1,2,3,'mi.kw.kj[2][0]',1,2,3,'mi.kw.kj[2][1]',1,2,3, 'mi.kx',1,2,3,4,5,6,7,'mi.ky',1,2,3,'mi.lf[0][1]',5,6,7,'mi.lc[1]',1,2,3,4,5,6,7,'mi.ld[0][0][2]',1,2,3,4,5,6,7,'mi.ld[1][0][0]',1,2,3,4,5,6,7,'mi.ld[1][0][1]', 1,2,3,4,5,6,7,'mi.ld[1][0][2]',1,2,3,4,5,6,7,'mi.lp[0][0].li',1,'mi.lp[0][0].lk+2','mi.lp[0][0].lk+3','mi.lp[0][0].lm[0][0][1]','mi.lp[0][0].lk+5', 'mi.lp[0][0].lk+6','mi.lp[0][0].lk+7','mi.lp[0][0].lm[0][0][2]',1,2,3,'mi.lp[0][0].lm[0][1][0]',1,2,3,'mi.lp[0][0].lm[0][1][1]',1,2,3,'mi.lp[0][0].lm[0][1][2]', 1,2,3,'mi.lp[0][0].lm[0][2][0]',1,2,3,'mi.lp[0][0].lm[0][2][1]',1,2,3,'mi.lp[0][0].lm[0][2][2]',1,2,3,'mi.lp[0][1].li',1,'mi.lp[0][1].lk+2','mi.lp[0][1].lk+3', 'mi.lp[0][1].lm[0][0][1]','mi.lp[0][1].lk+5','mi.lp[0][1].lk+6','mi.lp[0][1].lk+7','mi.lp[0][1].lm[0][0][2]',1,2,3,'mi.lp[0][1].lm[0][1][0]',1,2,3, 'mi.lp[0][1].lm[0][1][1]',1,2,3,'mi.lp[0][1].lm[0][1][2]',1,2,3,'mi.lp[0][1].lm[0][2][0]',1,2,3,'mi.lp[0][1].lm[0][2][1]',1,2,3,'mi.lp[0][1].lm[0][2][2]',1,2,3, 'mi.lp[1][0].li',1,'mi.lp[1][0].lk+2','mi.lp[1][0].lk+3','mi.lp[1][0].lm[0][0][1]','mi.lp[1][0].lk+5','mi.lp[1][0].lk+6','mi.lp[1][0].lk+7', 'mi.lp[1][0].lm[0][0][2]',1,2,3,'mi.lp[1][0].lm[0][1][0]',1,2,3,'mi.lp[1][0].lm[0][1][1]',1,2,3,'mi.lp[1][0].lm[0][1][2]',1,2,3,'mi.lp[1][0].lm[0][2][0]',1,2,3, 'mi.lp[1][0].lm[0][2][1]',1,2,3,'mi.lp[1][0].lm[0][2][2]',1,2,3,'mi.lp[1][1].li',1,'mi.lp[1][1].lk+2','mi.lp[1][1].lk+3','mi.lp[1][1].lm[0][0][1]', 'mi.lp[1][1].lk+5','mi.lp[1][1].lk+6','mi.lp[1][1].lk+7','mi.lp[1][1].lm[0][0][2]',1,2,3,'mi.lp[1][1].lm[0][1][0]',1,2,3,'mi.lp[1][1].lm[0][1][1]',1,2,3, 'mi.lp[1][1].lm[0][1][2]',1,2,3,'mi.lp[1][1].lm[0][2][0]',1,2,3,'mi.lp[1][1].lm[0][2][1]',1,2,3,'mi.lp[1][1].lm[0][2][2]',1,2,3,'mi.lq.li',1,'mi.lq.lk+2', 'mi.lq.lk+3','mi.lq.lm[0][0][1]','mi.lq.lk+5','mi.lq.lk+6','mi.lq.lk+7','mi.lq.lm[0][0][2]',1,2,3,'mi.lq.lm[0][1][0]',1,2,3,'mi.lq.lm[0][1][1]',1,2,3, 'mi.lq.lm[0][1][2]',1,2,3,'mi.lq.lm[0][2][0]',1,2,3,'mi.lq.lm[0][2][1]',1,2,3,'mi.lq.lm[0][2][2]',1,2,3,'mi.lr',1,2,3,4,5,6,7,'mi.ls',1,2,3,4,5,6,7,'mi.lt', 'mi+301','mi.lu',1,'mi.lv',1,'mi.lw','mi.lx','mi.ly[0][0][0][0]','mi.ly[0][0][1][0]','mi.ly[0][1][0][0]','mi.ly[0][1][1][0]','mi.ly[0][2][0][0]', 'mi.ly[0][2][1][0]','mi.lz','mi+315','mi.ma',1,2,3,'mi.mb',1,2,3,'mi.mc',1,2,3,'mi.md[0][0]',1,2,3,4,5,6,7,'mi.md[1][0]',1,2,3,4,5,6,7,'mi.me[0]',1,'mi.mf[0]', 1,'mi.mf[1]',1,'mi.mf[2]',1,'mj',1,2,3,4,5,6,7,'ou[0][0].mk[0]',1,2,3,4,5,6,7,'ou[0][0].mk[1]',1,2,3,4,5,6,7,'ou[0][0].ms',1,'ou[0][0].mt',1,'ou[0][0].mu[0]',1, 'ou[0][0].mu[1]',1,'ou[0][0].mw[1][0]',1,2,3,'ou[0][0].nq.nc',1,2,3,4,5,6,7,'ou[0][0].nq.nd',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ou[0][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ou[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ou[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ou[0][0].nq.nf',1,2,3,4,5,6,7,'ou[0][0].nq.ng',1,'ou[0][0].nq.nh',1,'ou[0][0].nq.ni',1,'ou[0][0].nq+102', 'ou[0][0].nq+103','ou[0][0].nq.nj',1,2,3,'ou[0][0].nq.nk',1,2,3,'ou[0][0].nq.nl',1,2,3,'ou[0][0].nq.nm',1,'ou[0][0].nq+118','ou[0][0].nq+119','ou[0][0].nq.nn', 1,2,3,4,5,6,7,'ou[0][0].nq.no',1,'ou[0][0].nq+130','ou[0][0].nq+131','ou[0][0].nq.np',1,2,3,'ou[0][0].nr[0][0]',1,'ou[0][0].nx[1]',3,'ou[0][0].oa[0][2]',5, 'ou[0][0].oa[1][0]',7,'ou[0][0].oa[1][1]',1,'ou[0][0].oa[1][2]',1,'ou[0][0].oa[2][0]',1,'ou[0][0].oa[2][1]',1,'ou[0][0].oa[2][2]',1,'ou[0][0]+182', 'ou[0][0]+183','ou[0][0].og[0]',1,2,3,'ou[0][0].og[1]',1,2,3,'ou[0][0].oh','ou[0][0].os[1][0]','ou[0][0].oj[1]',3,'ou[0][0].om[1]','ou[0][0].ok+5', 'ou[0][0].ok+6','ou[0][0].ok+7','ou[0][0].ol[0][1]',1,2,3,4,5,6,7,'ou[0][0].ol[0][2]',1,2,3,4,5,6,7,'ov.mk[0]',1,2,3,4,5,6,7,'ov.mk[1]',1,2,3,4,5,6,7,'ov.ms',1, 'ov.mt',1,'ov.mu[0]',1,'ov.mu[1]',1,'ov.mw[1][0]',1,2,3,'ov.nq.nc',1,2,3,4,5,6,7,'ov.nq.nd',1,2,3,4,5,6,7,'ov.nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][1][1][0]',1,2,3,4,5,6,7, 'ov.nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ov.nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ov.nq.nf', 1,2,3,4,5,6,7,'ov.nq.ng',1,'ov.nq.nh',1,'ov.nq.ni',1,'ov.nq+102','ov.nq+103','ov.nq.nj',1,2,3,'ov.nq.nk',1,2,3,'ov.nq.nl',1,2,3,'ov.nq.nm',1,'ov.nq+118', 'ov.nq+119','ov.nq.nn',1,2,3,4,5,6,7,'ov.nq.no',1,'ov.nq+130','ov.nq+131','ov.nq.np',1,2,3,'ov.nr[0][0]',1,'ov.nx[1]',3,'ov.oa[0][2]',5,'ov.oa[1][0]',7, 'ov.oa[1][1]',1,'ov.oa[1][2]',1,'ov.oa[2][0]',1,'ov.oa[2][1]',1,'ov.oa[2][2]',1,'ov+182','ov+183','ov.og[0]',1,2,3,'ov.og[1]',1,2,3,'ov.oh','ov.os[1][0]', 'ov.oj[1]',3,'ov.om[1]','ov.ok+5','ov.ok+6','ov.ok+7','ov.ol[0][1]',1,2,3,4,5,6,7,'ov.ol[0][2]',1,2,3,4,5,6,7,'ow[0][0].mk[0]',1,2,3,4,5,6,7,'ow[0][0].mk[1]',1, 2,3,4,5,6,7,'ow[0][0].ms',1,'ow[0][0].mt',1,'ow[0][0].mu[0]',1,'ow[0][0].mu[1]',1,'ow[0][0].mw[1][0]',1,2,3,'ow[0][0].nq.nc',1,2,3,4,5,6,7,'ow[0][0].nq.nd',1,2, 3,4,5,6,7,'ow[0][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7, 'ow[0][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][0][0]',1, 2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[0][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][0].nq.nf',1,2,3,4,5,6,7,'ow[0][0].nq.ng',1, 'ow[0][0].nq.nh',1,'ow[0][0].nq.ni',1,'ow[0][0].nq+102','ow[0][0].nq+103','ow[0][0].nq.nj',1,2,3,'ow[0][0].nq.nk',1,2,3,'ow[0][0].nq.nl',1,2,3,'ow[0][0].nq.nm', 1,'ow[0][0].nq+118','ow[0][0].nq+119','ow[0][0].nq.nn',1,2,3,4,5,6,7,'ow[0][0].nq.no',1,'ow[0][0].nq+130','ow[0][0].nq+131','ow[0][0].nq.np',1,2,3, 'ow[0][0].nr[0][0]',1,'ow[0][0].nx[1]',3,'ow[0][0].oa[0][2]',5,'ow[0][0].oa[1][0]',7,'ow[0][0].oa[1][1]',1,'ow[0][0].oa[1][2]',1,'ow[0][0].oa[2][0]',1, 'ow[0][0].oa[2][1]',1,'ow[0][0].oa[2][2]',1,'ow[0][0]+182','ow[0][0]+183','ow[0][0].og[0]',1,2,3,'ow[0][0].og[1]',1,2,3,'ow[0][0].oh','ow[0][0].os[1][0]', 'ow[0][0].oj[1]',3,'ow[0][0].om[1]','ow[0][0].ok+5','ow[0][0].ok+6','ow[0][0].ok+7','ow[0][0].ol[0][1]',1,2,3,4,5,6,7,'ow[0][0].ol[0][2]',1,2,3,4,5,6,7, 'ow[0][1].mk[0]',1,2,3,4,5,6,7,'ow[0][1].mk[1]',1,2,3,4,5,6,7,'ow[0][1].ms',1,'ow[0][1].mt',1,'ow[0][1].mu[0]',1,'ow[0][1].mu[1]',1,'ow[0][1].mw[1][0]',1,2,3, 'ow[0][1].nq.nc',1,2,3,4,5,6,7,'ow[0][1].nq.nd',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[0][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[0][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[0][1].nq.nf',1, 2,3,4,5,6,7,'ow[0][1].nq.ng',1,'ow[0][1].nq.nh',1,'ow[0][1].nq.ni',1,'ow[0][1].nq+102','ow[0][1].nq+103','ow[0][1].nq.nj',1,2,3,'ow[0][1].nq.nk',1,2,3, 'ow[0][1].nq.nl',1,2,3,'ow[0][1].nq.nm',1,'ow[0][1].nq+118','ow[0][1].nq+119','ow[0][1].nq.nn',1,2,3,4,5,6,7,'ow[0][1].nq.no',1,'ow[0][1].nq+130', 'ow[0][1].nq+131','ow[0][1].nq.np',1,2,3,'ow[0][1].nr[0][0]',1,'ow[0][1].nx[1]',3,'ow[0][1].oa[0][2]',5,'ow[0][1].oa[1][0]',7,'ow[0][1].oa[1][1]',1, 'ow[0][1].oa[1][2]',1,'ow[0][1].oa[2][0]',1,'ow[0][1].oa[2][1]',1,'ow[0][1].oa[2][2]',1,'ow[0][1]+182','ow[0][1]+183','ow[0][1].og[0]',1,2,3,'ow[0][1].og[1]',1, 2,3,'ow[0][1].oh','ow[0][1].os[1][0]','ow[0][1].oj[1]',3,'ow[0][1].om[1]','ow[0][1].ok+5','ow[0][1].ok+6','ow[0][1].ok+7','ow[0][1].ol[0][1]',1,2,3,4,5,6,7, 'ow[0][1].ol[0][2]',1,2,3,4,5,6,7,'ow[1][0].mk[0]',1,2,3,4,5,6,7,'ow[1][0].mk[1]',1,2,3,4,5,6,7,'ow[1][0].ms',1,'ow[1][0].mt',1,'ow[1][0].mu[0]',1, 'ow[1][0].mu[1]',1,'ow[1][0].mw[1][0]',1,2,3,'ow[1][0].nq.nc',1,2,3,4,5,6,7,'ow[1][0].nq.nd',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[1][0].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[1][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[1][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][0].nq.nf',1,2,3,4,5,6,7,'ow[1][0].nq.ng',1,'ow[1][0].nq.nh',1,'ow[1][0].nq.ni',1,'ow[1][0].nq+102', 'ow[1][0].nq+103','ow[1][0].nq.nj',1,2,3,'ow[1][0].nq.nk',1,2,3,'ow[1][0].nq.nl',1,2,3,'ow[1][0].nq.nm',1,'ow[1][0].nq+118','ow[1][0].nq+119','ow[1][0].nq.nn', 1,2,3,4,5,6,7,'ow[1][0].nq.no',1,'ow[1][0].nq+130','ow[1][0].nq+131','ow[1][0].nq.np',1,2,3,'ow[1][0].nr[0][0]',1,'ow[1][0].nx[1]',3,'ow[1][0].oa[0][2]',5, 'ow[1][0].oa[1][0]',7,'ow[1][0].oa[1][1]',1,'ow[1][0].oa[1][2]',1,'ow[1][0].oa[2][0]',1,'ow[1][0].oa[2][1]',1,'ow[1][0].oa[2][2]',1,'ow[1][0]+182', 'ow[1][0]+183','ow[1][0].og[0]',1,2,3,'ow[1][0].og[1]',1,2,3,'ow[1][0].oh','ow[1][0].os[1][0]','ow[1][0].oj[1]',3,'ow[1][0].om[1]','ow[1][0].ok+5', 'ow[1][0].ok+6','ow[1][0].ok+7','ow[1][0].ol[0][1]',1,2,3,4,5,6,7,'ow[1][0].ol[0][2]',1,2,3,4,5,6,7,'ow[1][1].mk[0]',1,2,3,4,5,6,7,'ow[1][1].mk[1]',1,2,3,4,5,6, 7,'ow[1][1].ms',1,'ow[1][1].mt',1,'ow[1][1].mu[0]',1,'ow[1][1].mu[1]',1,'ow[1][1].mw[1][0]',1,2,3,'ow[1][1].nq.nc',1,2,3,4,5,6,7,'ow[1][1].nq.nd',1,2,3,4,5,6,7, 'ow[1][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][0][0]',1, 2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7, 'ow[1][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[1][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[1][1].nq.nf',1,2,3,4,5,6,7,'ow[1][1].nq.ng',1,'ow[1][1].nq.nh',1, 'ow[1][1].nq.ni',1,'ow[1][1].nq+102','ow[1][1].nq+103','ow[1][1].nq.nj',1,2,3,'ow[1][1].nq.nk',1,2,3,'ow[1][1].nq.nl',1,2,3,'ow[1][1].nq.nm',1, 'ow[1][1].nq+118','ow[1][1].nq+119','ow[1][1].nq.nn',1,2,3,4,5,6,7,'ow[1][1].nq.no',1,'ow[1][1].nq+130','ow[1][1].nq+131','ow[1][1].nq.np',1,2,3, 'ow[1][1].nr[0][0]',1,'ow[1][1].nx[1]',3,'ow[1][1].oa[0][2]',5,'ow[1][1].oa[1][0]',7,'ow[1][1].oa[1][1]',1,'ow[1][1].oa[1][2]',1,'ow[1][1].oa[2][0]',1, 'ow[1][1].oa[2][1]',1,'ow[1][1].oa[2][2]',1,'ow[1][1]+182','ow[1][1]+183','ow[1][1].og[0]',1,2,3,'ow[1][1].og[1]',1,2,3,'ow[1][1].oh','ow[1][1].os[1][0]', 'ow[1][1].oj[1]',3,'ow[1][1].om[1]','ow[1][1].ok+5','ow[1][1].ok+6','ow[1][1].ok+7','ow[1][1].ol[0][1]',1,2,3,4,5,6,7,'ow[1][1].ol[0][2]',1,2,3,4,5,6,7, 'ow[2][0].mk[0]',1,2,3,4,5,6,7,'ow[2][0].mk[1]',1,2,3,4,5,6,7,'ow[2][0].ms',1,'ow[2][0].mt',1,'ow[2][0].mu[0]',1,'ow[2][0].mu[1]',1,'ow[2][0].mw[1][0]',1,2,3, 'ow[2][0].nq.nc',1,2,3,4,5,6,7,'ow[2][0].nq.nd',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][0][1][0]',1,2,3,4,5,6,7, 'ow[2][0].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][1][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][1][2][0]',1, 2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][1][0]',1,2,3,4,5,6,7,'ow[2][0].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][0].nq.nf',1, 2,3,4,5,6,7,'ow[2][0].nq.ng',1,'ow[2][0].nq.nh',1,'ow[2][0].nq.ni',1,'ow[2][0].nq+102','ow[2][0].nq+103','ow[2][0].nq.nj',1,2,3,'ow[2][0].nq.nk',1,2,3, 'ow[2][0].nq.nl',1,2,3,'ow[2][0].nq.nm',1,'ow[2][0].nq+118','ow[2][0].nq+119','ow[2][0].nq.nn',1,2,3,4,5,6,7,'ow[2][0].nq.no',1,'ow[2][0].nq+130', 'ow[2][0].nq+131','ow[2][0].nq.np',1,2,3,'ow[2][0].nr[0][0]',1,'ow[2][0].nx[1]',3,'ow[2][0].oa[0][2]',5,'ow[2][0].oa[1][0]',7,'ow[2][0].oa[1][1]',1, 'ow[2][0].oa[1][2]',1,'ow[2][0].oa[2][0]',1,'ow[2][0].oa[2][1]',1,'ow[2][0].oa[2][2]',1,'ow[2][0]+182','ow[2][0]+183','ow[2][0].og[0]',1,2,3,'ow[2][0].og[1]',1, 2,3,'ow[2][0].oh','ow[2][0].os[1][0]','ow[2][0].oj[1]',3,'ow[2][0].om[1]','ow[2][0].ok+5','ow[2][0].ok+6','ow[2][0].ok+7','ow[2][0].ol[0][1]',1,2,3,4,5,6,7, 'ow[2][0].ol[0][2]',1,2,3,4,5,6,7,'ow[2][1].mk[0]',1,2,3,4,5,6,7,'ow[2][1].mk[1]',1,2,3,4,5,6,7,'ow[2][1].ms',1,'ow[2][1].mt',1,'ow[2][1].mu[0]',1, 'ow[2][1].mu[1]',1,'ow[2][1].mw[1][0]',1,2,3,'ow[2][1].nq.nc',1,2,3,4,5,6,7,'ow[2][1].nq.nd',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][0][0]',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][0][1][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][0][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][0][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][1][0]',1, 2,3,4,5,6,7,'ow[2][1].nq.ne[0][1][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][0][0]',1,2,3,4,5,6,7,'ow[2][1].nq.ne[0][2][1][0]',1,2,3,4,5,6,7, 'ow[2][1].nq.ne[0][2][2][0]',1,2,3,4,5,6,7,'ow[2][1].nq.nf',1,2,3,4,5,6,7,'ow[2][1].nq.ng',1,'ow[2][1].nq.nh',1,'ow[2][1].nq.ni',1,'ow[2][1].nq+102', 'ow[2][1].nq+103','ow[2][1].nq.nj',1,2,3,'ow[2][1].nq.nk',1,2,3,'ow[2][1].nq.nl',1,2,3,'ow[2][1].nq.nm',1,'ow[2][1].nq+118','ow[2][1].nq+119','ow[2][1].nq.nn', 1,2,3,4,5,6,7,'ow[2][1].nq.no',1,'ow[2][1].nq+130','ow[2][1].nq+131','ow[2][1].nq.np',1,2,3,'ow[2][1].nr[0][0]',1,'ow[2][1].nx[1]',3,'ow[2][1].oa[0][2]',5, 'ow[2][1].oa[1][0]',7,'ow[2][1].oa[1][1]',1,'ow[2][1].oa[1][2]',1,'ow[2][1].oa[2][0]',1,'ow[2][1].oa[2][1]',1,'ow[2][1].oa[2][2]',1,'ow[2][1]+182', 'ow[2][1]+183','ow[2][1].og[0]',1,2,3,'ow[2][1].og[1]',1,2,3,'ow[2][1].oh','ow[2][1].os[1][0]','ow[2][1].oj[1]',3,'ow[2][1].om[1]','ow[2][1].ok+5', 'ow[2][1].ok+6','ow[2][1].ok+7','ow[2][1].ol[0][1]',1,2,3,4,5,6,7,'ow[2][1].ol[0][2]',1,2,3,4,5,6,7,'ox',1,'oz[0][1]',1,'oz[1][0]',1,'oz[1][1]',1,'pg',1, '+2802','+2803','ph',1,2,3,'pi',1,2,3,'pj[0][0][0]',1,2,3,'pj[0][0][1]',1,2,3,'pj[0][1][0]',1,2,3,'pj[0][1][1]',1,2,3,'pj[0][2][0]',1,2,3,'pj[0][2][1]',1,2,3, 'pk',1,2,3,'pl',1,2,3,'pm[0][0][0][0]',1,2,3,'pm[0][0][0][1]',1,2,3,'pm[0][1][0][0]',1,2,3,'pm[0][1][0][1]',1,2,3,'pm[1][0][0][0]',1,2,3,'pm[1][0][0][1]',1,2,3, 'pm[1][1][0][0]',1,2,3,'pm[1][1][0][1]',1,2,3,'pm[2][0][0][0]',1,2,3,'pm[2][0][0][1]',1,2,3,'pm[2][1][0][0]',1,2,3,'pm[2][1][0][1]',1,2,3,'pn','po','+2894', '+2895','pp',1,2,3,'pq',1,'+2902','+2903','pr',1,'pz[0][1]','ps[0][0][0]+3','pt[1]','ps[0][0][0]+5','ps[0][0][0]+6','ps[0][0][0]+7','ps[0][0][1]',1,2,3,4,5,6,7, 'ps[1][0][0]',1,2,3,4,5,6,7,'ps[1][0][1]',1,2,3,4,5,6,7,'ps[2][0][0]',1,2,3,4,5,6,7,'ps[2][0][1]',1,2,3,4,5,6,7,'qi.qa',1,2,3,'qi.qe[1][0]',5,6,7,'qj',1,'qp+2', 'qp+3','qr[0][1]','qp+5','qp+6','qp+7','qt',1,2,3,'qu',1,2,3,'rg.qv',1,2,3,4,5,6,7,'rg.qw',1,2,3,4,5,6,7,'rg.qx[0]',1,2,3,4,5,6,7,'rg.qx[1]',1,2,3,4,5,6,7, 'rg.qx[2]',1,2,3,4,5,6,7,'rg.qy',1,2,3,'rg.qz',1,2,3,'rg.ra[0][0][0][0]',1,2,3,'rg.ra[0][0][1][0]',1,2,3,'rg.ra[0][0][2][0]',1,2,3,'rg.ra[0][1][0][0]',1,2,3, 'rg.ra[0][1][1][0]',1,2,3,'rg.ra[0][1][2][0]',1,2,3,'rg.ra[0][2][0][0]',1,2,3,'rg.ra[0][2][1][0]',1,2,3,'rg.ra[0][2][2][0]',1,2,3,'rg.rb',1,2,3,4,5,6,7,'rg.rc', 1,2,3,4,5,6,7,'rg.rd[0]',1,2,3,'rg.rd[1]',1,2,3,'rg.re',1,2,3,4,5,6,7,'rg.rf[0][0]',1,2,3,4,5,6,7,'rg.rf[1][0]',1,2,3,4,5,6,7,'rh.qv',1,2,3,4,5,6,7,'rh.qw',1,2, 3,4,5,6,7,'rh.qx[0]',1,2,3,4,5,6,7,'rh.qx[1]',1,2,3,4,5,6,7,'rh.qx[2]',1,2,3,4,5,6,7,'rh.qy',1,2,3,'rh.qz',1,2,3,'rh.ra[0][0][0][0]',1,2,3,'rh.ra[0][0][1][0]', 1,2,3,'rh.ra[0][0][2][0]',1,2,3,'rh.ra[0][1][0][0]',1,2,3,'rh.ra[0][1][1][0]',1,2,3,'rh.ra[0][1][2][0]',1,2,3,'rh.ra[0][2][0][0]',1,2,3,'rh.ra[0][2][1][0]',1,2, 3,'rh.ra[0][2][2][0]',1,2,3,'rh.rb',1,2,3,4,5,6,7,'rh.rc',1,2,3,4,5,6,7,'rh.rd[0]',1,2,3,'rh.rd[1]',1,2,3,'rh.re',1,2,3,4,5,6,7,'rh.rf[0][0]',1,2,3,4,5,6,7, 'rh.rf[1][0]',1,2,3,4,5,6,7,'ri','+3241','rs[0].rj','rs[0].rq[1]','rs[0].rq[2]',3,4,5,6,7,'rs[0].rk[0][1]',1,2,3,4,5,6,7,'rs[0].rk[0][2]',1,2,3,4,5,6,7, 'rt[0].rj','rt[0].rq[1]','rt[0].rq[2]',3,4,5,6,7,'rt[0].rk[0][1]',1,2,3,4,5,6,7,'rt[0].rk[0][2]',1,2,3,4,5,6,7,'ru.rj','ru.rq[1]','ru.rq[2]',3,4,5,6,7, 'ru.rk[0][1]',1,2,3,4,5,6,7,'ru.rk[0][2]',1,2,3,4,5,6,7,'rv[0]',1,2,3,4,5,6,7,'+3322','+3323' ], ey=>[ 'ez','fn.fj[0][1][0]','fn.fi[1][0]','fn.fl[1][0][0]','fn.fl[1][1][0]','fn.fl[1][2][0]','fn.fl[2][0][0]','fn.fl[2][1][0]','fn.fl[2][2][0]','fn+9','fn+10', 'fn+11','fq','gg[1]','fr[1]',1,'fu[0][1]',1,2,3,'fu[1][0]',1,2,3,'fu[1][1]',1,2,3,'fu[2][0]',1,2,3,'fu[2][1]',1,2,3,'gz',1,2,3,'ha[0]','ha[1]','hb','+43','hc', 1,2,3,'hd','+49','+50','+51','he[0][0][0][0]',1,2,3,'he[0][0][0][1]',1,2,3,'he[0][0][1][0]',1,2,3,'he[0][0][1][1]',1,2,3,'he[1][0][0][0]',1,2,3, 'he[1][0][0][1]',1,2,3,'he[1][0][1][0]',1,2,3,'he[1][0][1][1]',1,2,3,'hf',1,2,3,'hg',1,2,3,'ii.hh',1,'ii+2','ii+3','ii.hi',1,2,3,'ii.ht.hj',1,2,3, 'ii.ht.hl[0][0][1]',1,2,3,'ii.ht.hl[0][0][2]',1,2,3,'ii.ht.hl[0][1][0]',1,2,3,'ii.ht.hl[0][1][1]',1,2,3,'ii.ht.hl[0][1][2]',1,2,3,'ii.ht.hl[0][2][0]',1,2,3, 'ii.ht.hl[0][2][1]',1,2,3,'ii.ht.hl[0][2][2]',1,2,3,'ii.ht.hl[1][0][0]',1,2,3,'ii.ht.hl[1][0][1]',1,2,3,'ii.ht.hl[1][0][2]',1,2,3,'ii.ht.hl[1][1][0]',1,2,3, 'ii.ht.hl[1][1][1]',1,2,3,'ii.ht.hl[1][1][2]',1,2,3,'ii.ht.hl[1][2][0]',1,2,3,'ii.ht.hl[1][2][1]',1,2,3,'ii.ht.hl[1][2][2]',1,2,3,'ii.ht.hl[2][0][0]',1,2,3, 'ii.ht.hl[2][0][1]',1,2,3,'ii.ht.hl[2][0][2]',1,2,3,'ii.ht.hl[2][1][0]',1,2,3,'ii.ht.hl[2][1][1]',1,2,3,'ii.ht.hl[2][1][2]',1,2,3,'ii.ht.hl[2][2][0]',1,2,3, 'ii.ht.hl[2][2][1]',1,2,3,'ii.ht.hl[2][2][2]',1,2,3,'ii.hu.hj',1,2,3,'ii.hu.hl[0][0][1]',1,2,3,'ii.hu.hl[0][0][2]',1,2,3,'ii.hu.hl[0][1][0]',1,2,3, 'ii.hu.hl[0][1][1]',1,2,3,'ii.hu.hl[0][1][2]',1,2,3,'ii.hu.hl[0][2][0]',1,2,3,'ii.hu.hl[0][2][1]',1,2,3,'ii.hu.hl[0][2][2]',1,2,3,'ii.hu.hl[1][0][0]',1,2,3, 'ii.hu.hl[1][0][1]',1,2,3,'ii.hu.hl[1][0][2]',1,2,3,'ii.hu.hl[1][1][0]',1,2,3,'ii.hu.hl[1][1][1]',1,2,3,'ii.hu.hl[1][1][2]',1,2,3,'ii.hu.hl[1][2][0]',1,2,3, 'ii.hu.hl[1][2][1]',1,2,3,'ii.hu.hl[1][2][2]',1,2,3,'ii.hu.hl[2][0][0]',1,2,3,'ii.hu.hl[2][0][1]',1,2,3,'ii.hu.hl[2][0][2]',1,2,3,'ii.hu.hl[2][1][0]',1,2,3, 'ii.hu.hl[2][1][1]',1,2,3,'ii.hu.hl[2][1][2]',1,2,3,'ii.hu.hl[2][2][0]',1,2,3,'ii.hu.hl[2][2][1]',1,2,3,'ii.hu.hl[2][2][2]',1,2,3,'ii.hv','ii.hw','ii+226', 'ii+227','ii.hx[0]',1,2,3,'ii.ig[0][0][0].hy',1,'ii.ig[0][0][0].ie+2','ii.ig[0][0][0].ie+3','ii.ig[0][0][0].ie+4','ii.ig[0][0][0].ie+5','ii.ig[0][0][0].ie+6', 'ii.ig[0][0][0].ie+7','ii.ig[1][0][0].hy',1,'ii.ig[1][0][0].ie+2','ii.ig[1][0][0].ie+3','ii.ig[1][0][0].ie+4','ii.ig[1][0][0].ie+5','ii.ig[1][0][0].ie+6', 'ii.ig[1][0][0].ie+7','ii.ig[2][0][0].hy',1,'ii.ig[2][0][0].ie+2','ii.ig[2][0][0].ie+3','ii.ig[2][0][0].ie+4','ii.ig[2][0][0].ie+5','ii.ig[2][0][0].ie+6', 'ii.ig[2][0][0].ie+7','ii.ih.hy',1,'ii.ih.ie+2','ii.ih.ie+3','ii.ih.ie+4','ii.ih.ie+5','ii.ih.ie+6','ii.ih.ie+7','ij.hh',1,'ij+2','ij+3','ij.hi',1,2,3, 'ij.ht.hj',1,2,3,'ij.ht.hl[0][0][1]',1,2,3,'ij.ht.hl[0][0][2]',1,2,3,'ij.ht.hl[0][1][0]',1,2,3,'ij.ht.hl[0][1][1]',1,2,3,'ij.ht.hl[0][1][2]',1,2,3, 'ij.ht.hl[0][2][0]',1,2,3,'ij.ht.hl[0][2][1]',1,2,3,'ij.ht.hl[0][2][2]',1,2,3,'ij.ht.hl[1][0][0]',1,2,3,'ij.ht.hl[1][0][1]',1,2,3,'ij.ht.hl[1][0][2]',1,2,3, 'ij.ht.hl[1][1][0]',1,2,3,'ij.ht.hl[1][1][1]',1,2,3,'ij.ht.hl[1][1][2]',1,2,3,'ij.ht.hl[1][2][0]',1,2,3,'ij.ht.hl[1][2][1]',1,2,3,'ij.ht.hl[1][2][2]',1,2,3, 'ij.ht.hl[2][0][0]',1,2,3,'ij.ht.hl[2][0][1]',1,2,3,'ij.ht.hl[2][0][2]',1,2,3,'ij.ht.hl[2][1][0]',1,2,3,'ij.ht.hl[2][1][1]',1,2,3,'ij.ht.hl[2][1][2]',1,2,3, 'ij.ht.hl[2][2][0]',1,2,3,'ij.ht.hl[2][2][1]',1,2,3,'ij.ht.hl[2][2][2]',1,2,3,'ij.hu.hj',1,2,3,'ij.hu.hl[0][0][1]',1,2,3,'ij.hu.hl[0][0][2]',1,2,3, 'ij.hu.hl[0][1][0]',1,2,3,'ij.hu.hl[0][1][1]',1,2,3,'ij.hu.hl[0][1][2]',1,2,3,'ij.hu.hl[0][2][0]',1,2,3,'ij.hu.hl[0][2][1]',1,2,3,'ij.hu.hl[0][2][2]',1,2,3, 'ij.hu.hl[1][0][0]',1,2,3,'ij.hu.hl[1][0][1]',1,2,3,'ij.hu.hl[1][0][2]',1,2,3,'ij.hu.hl[1][1][0]',1,2,3,'ij.hu.hl[1][1][1]',1,2,3,'ij.hu.hl[1][1][2]',1,2,3, 'ij.hu.hl[1][2][0]',1,2,3,'ij.hu.hl[1][2][1]',1,2,3,'ij.hu.hl[1][2][2]',1,2,3,'ij.hu.hl[2][0][0]',1,2,3,'ij.hu.hl[2][0][1]',1,2,3,'ij.hu.hl[2][0][2]',1,2,3, 'ij.hu.hl[2][1][0]',1,2,3,'ij.hu.hl[2][1][1]',1,2,3,'ij.hu.hl[2][1][2]',1,2,3,'ij.hu.hl[2][2][0]',1,2,3,'ij.hu.hl[2][2][1]',1,2,3,'ij.hu.hl[2][2][2]',1,2,3, 'ij.hv','ij.hw','ij+226','ij+227','ij.hx[0]',1,2,3,'ij.ig[0][0][0].hy',1,'ij.ig[0][0][0].ie+2','ij.ig[0][0][0].ie+3','ij.ig[0][0][0].ie+4', 'ij.ig[0][0][0].ie+5','ij.ig[0][0][0].ie+6','ij.ig[0][0][0].ie+7','ij.ig[1][0][0].hy',1,'ij.ig[1][0][0].ie+2','ij.ig[1][0][0].ie+3','ij.ig[1][0][0].ie+4', 'ij.ig[1][0][0].ie+5','ij.ig[1][0][0].ie+6','ij.ig[1][0][0].ie+7','ij.ig[2][0][0].hy',1,'ij.ig[2][0][0].ie+2','ij.ig[2][0][0].ie+3','ij.ig[2][0][0].ie+4', 'ij.ig[2][0][0].ie+5','ij.ig[2][0][0].ie+6','ij.ig[2][0][0].ie+7','ij.ih.hy',1,'ij.ih.ie+2','ij.ih.ie+3','ij.ih.ie+4','ij.ih.ie+5','ij.ih.ie+6','ij.ih.ie+7', 'ik.hh',1,'ik+2','ik+3','ik.hi',1,2,3,'ik.ht.hj',1,2,3,'ik.ht.hl[0][0][1]',1,2,3,'ik.ht.hl[0][0][2]',1,2,3,'ik.ht.hl[0][1][0]',1,2,3,'ik.ht.hl[0][1][1]',1,2,3, 'ik.ht.hl[0][1][2]',1,2,3,'ik.ht.hl[0][2][0]',1,2,3,'ik.ht.hl[0][2][1]',1,2,3,'ik.ht.hl[0][2][2]',1,2,3,'ik.ht.hl[1][0][0]',1,2,3,'ik.ht.hl[1][0][1]',1,2,3, 'ik.ht.hl[1][0][2]',1,2,3,'ik.ht.hl[1][1][0]',1,2,3,'ik.ht.hl[1][1][1]',1,2,3,'ik.ht.hl[1][1][2]',1,2,3,'ik.ht.hl[1][2][0]',1,2,3,'ik.ht.hl[1][2][1]',1,2,3, 'ik.ht.hl[1][2][2]',1,2,3,'ik.ht.hl[2][0][0]',1,2,3,'ik.ht.hl[2][0][1]',1,2,3,'ik.ht.hl[2][0][2]',1,2,3,'ik.ht.hl[2][1][0]',1,2,3,'ik.ht.hl[2][1][1]',1,2,3, 'ik.ht.hl[2][1][2]',1,2,3,'ik.ht.hl[2][2][0]',1,2,3,'ik.ht.hl[2][2][1]',1,2,3,'ik.ht.hl[2][2][2]',1,2,3,'ik.hu.hj',1,2,3,'ik.hu.hl[0][0][1]',1,2,3, 'ik.hu.hl[0][0][2]',1,2,3,'ik.hu.hl[0][1][0]',1,2,3,'ik.hu.hl[0][1][1]',1,2,3,'ik.hu.hl[0][1][2]',1,2,3,'ik.hu.hl[0][2][0]',1,2,3,'ik.hu.hl[0][2][1]',1,2,3, 'ik.hu.hl[0][2][2]',1,2,3,'ik.hu.hl[1][0][0]',1,2,3,'ik.hu.hl[1][0][1]',1,2,3,'ik.hu.hl[1][0][2]',1,2,3,'ik.hu.hl[1][1][0]',1,2,3,'ik.hu.hl[1][1][1]',1,2,3, 'ik.hu.hl[1][1][2]',1,2,3,'ik.hu.hl[1][2][0]',1,2,3,'ik.hu.hl[1][2][1]',1,2,3,'ik.hu.hl[1][2][2]',1,2,3,'ik.hu.hl[2][0][0]',1,2,3,'ik.hu.hl[2][0][1]',1,2,3, 'ik.hu.hl[2][0][2]',1,2,3,'ik.hu.hl[2][1][0]',1,2,3,'ik.hu.hl[2][1][1]',1,2,3,'ik.hu.hl[2][1][2]',1,2,3,'ik.hu.hl[2][2][0]',1,2,3,'ik.hu.hl[2][2][1]',1,2,3, 'ik.hu.hl[2][2][2]',1,2,3,'ik.hv','ik.hw','ik+226','ik+227','ik.hx[0]',1,2,3,'ik.ig[0][0][0].hy',1,'ik.ig[0][0][0].ie+2','ik.ig[0][0][0].ie+3', 'ik.ig[0][0][0].ie+4','ik.ig[0][0][0].ie+5','ik.ig[0][0][0].ie+6','ik.ig[0][0][0].ie+7','ik.ig[1][0][0].hy',1,'ik.ig[1][0][0].ie+2','ik.ig[1][0][0].ie+3', 'ik.ig[1][0][0].ie+4','ik.ig[1][0][0].ie+5','ik.ig[1][0][0].ie+6','ik.ig[1][0][0].ie+7','ik.ig[2][0][0].hy',1,'ik.ig[2][0][0].ie+2','ik.ig[2][0][0].ie+3', 'ik.ig[2][0][0].ie+4','ik.ig[2][0][0].ie+5','ik.ig[2][0][0].ie+6','ik.ig[2][0][0].ie+7','ik.ih.hy',1,'ik.ih.ie+2','ik.ih.ie+3','ik.ih.ie+4','ik.ih.ie+5', 'ik.ih.ie+6','ik.ih.ie+7','iu.il','jt.db.bo.bh[0][1]','jt.be.bd[0][1][0]',3,'iu.ir[0][1]',1,'jt.db.cn.ck[0][0][1][1]',3,'iu.ir[1][0]',1, 'jt.db.cn.ck[0][0][2][1]',3,'iu.ir[1][1]','jt.db.bq[0][1].bh[0][1]','jt.be.af[1]',3,'iu.ir[2][0]',1,'jt.be.ah[0][0][0]','jt.be.ah[1][0][0]','iu.ir[2][1]',1, 'jt.db.cn.ck[0][1][2][1]',3,'jr.ji[0][0][1][0]','jt.db.bq[1][0].bh[0][1]','jt.db.bq[1][0].bh[0][2]',3,'jt.be.aj[0][0][0]','jt.be.av','jt.be.aw',7, 'jr.ji[0][0][1][1]','jt.db.cy','jt.db.cz',3,'jt.be.aj[0][0][1]','jt.db.bq[1][1].bh[0][1]','jt.db.bq[1][1].bh[0][2]',7,'jr.ji[0][0][1][2]',1, 'jt.db.da[1][0][1][0]',3,'jt.be.aj[0][1][0]',5,'jt.db.da[2][0][1][0]',7,'jr.ji[0][0][2][0]',1,2,3,'jt.be.aj[0][1][1]',5,6,7,'jr.ji[0][0][2][1]',1,2,3, 'jt.be.aj[0][2][0]',5,6,7,'jr.ji[0][0][2][2]',1,2,3,'jt.be.aj[0][2][1]',5,6,7,'jt.be.az[0][0][2]',5,'jt.db.bv',7,'jt.be.aj[1][0][0]','jt.db.bw[1]', 'jt.db.bw[2]',3,'jt.be.az[0][1][0]',5,6,7,'jt.be.aj[1][0][1]',1,2,3,'jt.be.az[0][1][1]',5,6,7,'jt.be.aj[1][1][0]',1,2,3,'jt.be.az[0][1][2]',5,6,7, 'jt.be.aj[1][1][1]',1,2,3,'jt.be.az[0][2][0]',5,6,7,'jt.be.aj[1][2][0]',1,2,3,'jt.be.az[0][2][1]',5,6,7,'jt.be.aj[1][2][1]','jt.ds','jt.dt',3, 'jt.be.az[0][2][2]',5,6,7,'jt.be.aj[2][0][0]',1,'jt.dx[0][1]',3,'jt.be.az[1][0][0]',5,'jt.dx[1][1]',7,'jt.be.aj[2][0][1]',1,'jt.dx[2][1]',3,'jt.be.az[1][0][1]', 5,6,7,'jt.be.aj[2][1][0]',1,2,3,'jt.be.az[1][0][2]',5,6,7,'jt.be.aj[2][1][1]',1,2,3,'jt.be.az[1][1][0]',5,6,7,'jt.be.aj[2][2][0]',1,2,3,'jt.be.az[1][1][1]',5, 'jt.ed',7,'jt.be.aj[2][2][1]',1,2,3,'jt.be.az[1][1][2]',5,'jt.eg','jt.eh','jt.be.ak',1,'jt.ej',3,'jt.be.az[1][2][0]',5,'jt.el[0][0][0]','jt.el[0][0][1]', 'jt.be.al','jt.be.am','jt.be.an','jt.el[1][0][1]','jt.be.ao','jt.el[1][1][1]','jt.el[2][0][0]','jt.el[2][0][1]','jt.el[2][1][0]','jt.el[2][1][1]', 'jt.em[0][0][0]','jt.em[0][0][1]','jt.be.az[1][2][2]','jt.em[0][1][1]','jt.em[0][2][0]','jt.em[0][2][1]','jt.em[1][0][0]','jt.em[1][0][1]','jt.em[1][1][0]', 'jt.em[1][1][1]','jt.be.ba','jt.em[1][2][1]',2,3,'jt.en',5,6,7,'jt.be.bb',1,2,3,'jt.ep',1,2,3,'jt.ev.eq',1,2,3,'jt.ev.eu+4','jt.ev.eu+5','jt.ev.eu+6', 'jt.ev.eu+7','jt.ew.eq',1,2,3,'jt.ew.eu+4','jt.ew.eu+5','jt.ew.eu+6','jt.ew.eu+7','jt.ex',1,2,3 ], aa=>[ 'ab','db.bo.bh[0][1]','be.bd[0][1][0]',3,'be.ad',5,'db.cn.ck[0][0][1][1]',7,'be.ae',1,'db.cn.ck[0][0][2][1]',3,'be.af[0]','db.bq[0][1].bh[0][1]','be.af[1]',1, 'be.ag',1,'be.ah[0][0][0]','be.ah[1][0][0]','be.ai',1,'db.cn.ck[0][1][2][1]',3,'be.at[2]','db.bq[1][0].bh[0][1]','db.bq[1][0].bh[0][2]',7,'be.aj[0][0][0]', 'be.av','be.aw',3,'be.ax[0][0][0]','db.cy','db.cz',7,'be.aj[0][0][1]','db.bq[1][1].bh[0][1]','db.bq[1][1].bh[0][2]',3,'be.ax[0][0][1]',5,'db.da[1][0][1][0]',7, 'be.aj[0][1][0]',1,'db.da[2][0][1][0]',3,'be.ay',5,6,7,'be.aj[0][1][1]',1,2,3,'be.az[0][0][0]',5,6,7,'be.aj[0][2][0]',1,2,3,'be.az[0][0][1]',5,6,7, 'be.aj[0][2][1]',1,2,3,'be.az[0][0][2]',5,'db.bv',7,'be.aj[1][0][0]','db.bw[1]','db.bw[2]',3,'be.az[0][1][0]',5,6,7,'be.aj[1][0][1]',1,2,3,'be.az[0][1][1]',5,6, 7,'be.aj[1][1][0]',1,2,3,'be.az[0][1][2]',5,6,7,'be.aj[1][1][1]',1,2,3,'be.az[0][2][0]',5,6,7,'be.aj[1][2][0]',1,2,3,'be.az[0][2][1]',5,6,7,'be.aj[1][2][1]', 'ds','dt',3,'be.az[0][2][2]',5,6,7,'be.aj[2][0][0]',1,'dx[0][1]',3,'be.az[1][0][0]',5,'dx[1][1]',7,'be.aj[2][0][1]',1,'dx[2][1]',3,'be.az[1][0][1]',5,6,7, 'be.aj[2][1][0]',1,2,3,'be.az[1][0][2]',5,6,7,'be.aj[2][1][1]',1,2,3,'be.az[1][1][0]',5,6,7,'be.aj[2][2][0]',1,2,3,'be.az[1][1][1]',5,'ed',7,'be.aj[2][2][1]',1, 2,3,'be.az[1][1][2]',5,'eg','eh','be.ak',1,'ej',3,'be.az[1][2][0]',5,'el[0][0][0]','el[0][0][1]','be.al','be.am','be.an','el[1][0][1]','be.ao','el[1][1][1]', 'el[2][0][0]','el[2][0][1]','el[2][1][0]','el[2][1][1]','em[0][0][0]','em[0][0][1]','be.az[1][2][2]','em[0][1][1]','em[0][2][0]','em[0][2][1]','em[1][0][0]', 'em[1][0][1]','em[1][1][0]','em[1][1][1]','be.ba','em[1][2][1]',2,3,'en',5,6,7,'be.bb',1,2,3,'ep',1,2,3,'ev.eq',1,2,3,'ev.eu+4','ev.eu+5','ev.eu+6','ev.eu+7', 'ew.eq',1,2,3,'ew.eu+4','ew.eu+5','ew.eu+6','ew.eu+7','ex',1,2,3 ], rw=>[ 'rx','uo.sc[1]','uo.sh[0][1]','uo.um.ud','uo.rz[0][1]','aar[0][0].aah[2][0]','uo.sh[1][1]',3,'uo.rz[0][2]','uo.sm','uo.sh[2][1]','uo.so','uo.rz[1][0]',1, 'ux[0][0]',3,'uo.rz[1][1]',1,'ux[0][1]','vh.va[0][0][1]','uo.rz[1][2]','vh.va[0][1][1]','ux[0][2]','vh.va[0][2][1]','uo.sq[1]','vh.vc','ux[1][0]', 'aar[0][0].aao[1]','uo.sr','wi.wg','ux[1][1]',3,'uo.sv[1][0][0][2]','ws.wo[1]','ux[1][2]',3,'uo.sv[1][0][1][0]',1,'uo.to.te[0][0][0][1]',3,'uo.sv[1][0][1][1]', 'aar[0][1].aah[0][0]','uo.to.te[1][0][0][1]','aar[0][1].aah[1][0]','uo.sv[1][0][1][2]','aar[0][1].aah[2][0]','uo.to.tg',3,'uo.to.th',1,'uo.to.ti',1, 'uo.to.tj[0]',1,'ws.wr[2][0]',3,'uo.to.tj[1]',1,'ws.wr[2][2]',3,'uo.to.tk',1,'ye.yb[1][1][0][1]',3,'uo.to.tl','aaf[0][0][0]','ye.yb[1][1][1][1]','aaf[0][2][0]', 'uo.to.tm','aaf[1][1][0]','uo.to.tn','aaf[2][0][0]','vn[0][1][1]','aaf[2][2][0]','ye.yb[2][0][1][1]','uo.um.ue[1][0][2]+7','uo.um.ue[1][1][0]',1, 'ye.yb[2][1][0][1]',3,'vn[0][1][2]','aar[1][0].aah[0][0]','ye.yb[2][1][1][1]','aar[1][0].aah[1][0]','uo.um.ue[1][1][1]','aar[1][0].aah[2][0]','ye.yc[1][0]',3, 'vn[0][2][0]',5,'ye.yd',7,'uo.um.ue[1][1][2]',1,2,3,'vn[0][2][1]',5,6,7,'uo.um.uf',1,2,3,'vn[0][2][2]','aar[1][0].aan','aar[1][0].aao[0]','aar[1][0].aao[1]', 'uo.um.ug',1,6,7,'uo.um.uh[0]',1,2,3,'uo.um.uh[1]',1,2,3,'uo.um.uh[2]','aar[1][1].aah[0][0]','aar[1][1].aah[0][1]','aar[1][1].aah[1][0]','uo.um.ui', 'aar[1][1].aah[2][0]','aar[1][1].aah[2][1]',3,'vn[1][0][2]',5,6,7,'uo.um.uj[0]',1,2,3,'uo.um.uk[0]','uo.um.uk[1]','uo.um.uk[2]','uo.um.ul','up[1][0].rz[0][0]', 'up[1][0].sc[1]','up[1][0].sh[0][1]','up[1][0].um.ud','up[1][0].rz[0][1]','aar[1][1].aan','up[1][0].sh[1][1]','aar[1][1].aao[1]','up[1][0].rz[0][2]', 'up[1][0].sm','up[1][0].sh[2][1]','up[1][0].so','up[1][0].rz[1][0]',1,2,3,'up[1][0].rz[1][1]',1,2,3,'up[1][0].rz[1][2]','aar[2][0].aah[0][0]', 'aar[2][0].aah[0][1]','aar[2][0].aah[1][0]','up[1][0].sq[1]','aar[2][0].aah[2][0]','aar[2][0].aah[2][1]',3,'up[1][0].sr',1,2,3,'up[1][0].sv[1][0][0][2]',1,2,3, 'up[1][0].sv[1][0][1][0]',1,'up[1][0].to.te[0][0][0][1]',3,'up[1][0].sv[1][0][1][1]',1,'up[1][0].to.te[1][0][0][1]',3,'up[1][0].sv[1][0][1][2]','aar[2][0].aan', 'up[1][0].to.tg','aar[2][0].aao[1]','up[1][0].to.th',1,'up[1][0].to.ti',1,'up[1][0].to.tj[0]',1,2,3,'up[1][0].to.tj[1]',1,2,3,'up[1][0].to.tk', 'aar[2][1].aah[0][0]','aar[2][1].aah[0][1]','aar[2][1].aah[1][0]','up[1][0].to.tl','aar[2][1].aah[2][0]','aar[2][1].aah[2][1]',3,'up[1][0].to.tm',1, 'up[1][0].to.tn',1,'aar[2][1].aaj','up[1][0].um.ue[1][0][2]+5','up[1][0].um.ue[1][0][2]+6','up[1][0].um.ue[1][0][2]+7','up[1][0].um.ue[1][1][0]',1,2,3, 'aar[2][1].aal',5,6,7,'up[1][0].um.ue[1][1][1]','aar[2][1].aan','aar[2][1].aao[0]','aar[2][1].aao[1]','aar[2][1].aap',5,6,7,'up[1][0].um.ue[1][1][2]',1,2,3, 'aar[2][1].aaq',5,6,7,'up[1][0].um.uf',1,2,3,4,5,6,7,'up[1][0].um.ug',1,'vn[2][2][2]+2','vn[2][2][2]+3','up[1][0].um.uh[0]',1,2,3,'up[1][0].um.uh[1]',1,2,3, 'up[1][0].um.uh[2]',1,2,3,'up[1][0].um.ui','vq','vr[0][0]','vr[1][0]','vr[2][0]','vs',6,7,'up[1][0].um.uj[0]','vt',2,3,'up[1][0].um.uk[0]','up[1][0].um.uk[1]', 'up[1][0].um.uk[2]','up[1][0].um.ul','up[2][0].rz[0][0]','up[2][0].sc[1]','up[2][0].sh[0][1]','up[2][0].um.ud','up[2][0].rz[0][1]',1,'up[2][0].sh[1][1]',3, 'up[2][0].rz[0][2]','up[2][0].sm','up[2][0].sh[2][1]','up[2][0].so','up[2][0].rz[1][0]',1,2,3,'up[2][0].rz[1][1]',1,2,3,'up[2][0].rz[1][2]',1,2,3, 'up[2][0].sq[1]',1,2,3,'up[2][0].sr',1,2,3,'up[2][0].sv[1][0][0][2]',1,2,3,'up[2][0].sv[1][0][1][0]',1,'up[2][0].to.te[0][0][0][1]',3,'up[2][0].sv[1][0][1][1]', 1,'up[2][0].to.te[1][0][0][1]',3,'up[2][0].sv[1][0][1][2]',1,'up[2][0].to.tg',3,'up[2][0].to.th',1,'up[2][0].to.ti',1,'up[2][0].to.tj[0]',1,2,3, 'up[2][0].to.tj[1]',1,2,3,'up[2][0].to.tk',1,2,3,'up[2][0].to.tl',1,2,3,'up[2][0].to.tm',1,'up[2][0].to.tn',1,'up[2][0].um.ue[1][0][2]+4', 'up[2][0].um.ue[1][0][2]+5','up[2][0].um.ue[1][0][2]+6','up[2][0].um.ue[1][0][2]+7','up[2][0].um.ue[1][1][0]',1,2,3,4,5,6,7,'up[2][0].um.ue[1][1][1]',1,2,3,4,5, 6,7,'up[2][0].um.ue[1][1][2]',1,2,3,4,5,6,7,'up[2][0].um.uf',1,2,3,4,5,6,7,'up[2][0].um.ug',1,'up[2][0].um+110','up[2][0].um+111','up[2][0].um.uh[0]',1,2,3, 'up[2][0].um.uh[1]',1,2,3,'up[2][0].um.uh[2]',1,2,3,'up[2][0].um.ui',1,2,3,4,5,6,7,'up[2][0].um.uj[0]',1,2,3,'up[2][0].um.uk[0]','up[2][0].um.uk[1]', 'up[2][0].um.uk[2]','up[2][0].um.ul' ]}, ); my %sizeofs = ( 1 => { kc=>{ 1 => [qw(mg.lt mg.lw mi.lw mi.ly[0][1][0][0] ou[0][0].my ou[0][0].nu ov.mr ov.my ow[0][1].na ow[2][0].mr)], 2 => [qw(ou[0][0].ob[2][0][0] ov.oa[0][2] ov.oj[1] ow[0][0].oa[1][1] ow[1][1].ob[0][0][0] ow[2][1].ms oz[1][1] py qn rs[0].rl)], 4 => [qw(mg.kd mg.lg mh.kw.ks[0] mh.mb ov.nq.nj ow[0][0].on ow[0][1].oh ow[1][0].nq.nk pm[2][0][0][0] rg.ra[0][0][1][0])], 8 => [qw(mg.kw.kp[1] mg.lc[1] mi.lp[1][1].ll ou[0][0].ol[0][1] ov.mk[0] ow[1][0].nq.ne[0][0][0][0] ow[1][1].nq.ne[0][1][0][0] ow[2][0].nq.ne[0][2][2][0] ow[2][1].nq.ne[0][1][1][0] rh.rf[1][0])], 24 => [qw(mg.kw mh.kw mi.kw rs[0] rt[0] ru)], 36 => [qw(mg.lp[0][0] mg.lp[0][1] mg.lp[1][0] mg.lp[1][1] mg.lq mh.lp[0][0] mh.lq mi.lp[0][0] mi.lp[1][0] mi.lq)], 130 => [qw(ou[0][0].nq ov.nq ow[0][0].nq ow[0][1].nq ow[1][0].nq ow[1][1].nq ow[2][0].nq ow[2][1].nq)], 132 => [qw(rg rh)], 208 => [qw(ou[0][0] ov ow[0][0] ow[0][1] ow[1][0] ow[1][1] ow[2][0] ow[2][1])], 352 => [qw(mg mh mi)]}, ey=>{ 1 => [qw(fn.fj[0][0][0] fx ij.ih.ia ik.ig[0][0][0].id ik.ig[1][0][0].ic jf jt.be.av jt.dc.bo.bh[0][0] jt.dc.bp.bi jt.dc.bq[1][0].bh[0][1])], 2 => [qw(ij.hu.hm ij.ih.hy ik.ht.hm jt.db.cn.ck[0][0][2][1] jt.db.cn.ck[0][1][0][0] jt.db.cr[1][0] jt.db.cr[2][0] jt.db.cw jt.dc.cn.ck[0][1][0][1] jy[1][1][0][2])], 4 => [qw(gx ii.ht.hl[0][0][0] ik.hu.hl[0][1][0] jt.db.bq[0][0].bk[0][2] jt.dc.bq[1][0].bl[1] jt.dc.bq[1][0].bn jt.dc.cn.ci jt.dc.cn.cm[1][0][0][0] jt.dj.df[2][0] jt.dj.dh[1][0])], 8 => [qw(fp ij.ih ik.ih ik.ih.ie je jr.ji[0][0][1][2] jr.ji[0][0][2][0] jt.be.aj[0][1][0] jt.be.az[1][1][2] jt.be.ba)], 9 => [qw(fn fo)], 12 => [qw(jt.db.bo jt.db.bp jt.db.bq[0][0] jt.db.bq[0][1] jt.db.bq[1][1] jt.dc.bo jt.dc.bp jt.dc.bq[0][0] jt.dc.bq[0][1] jt.dc.bq[1][1])], 24 => [qw(iu jt.db.cn jt.dc.cn)], 72 => [qw(jr js jt.dj)], 106 => [qw(jt.db jt.dc)], 108 => [qw(ii.ht ii.hu ij.ht ij.hu ik.ht ik.hu)], 212 => [qw(jt.be)], 227 => [qw(jt)], 260 => [qw(ii ij ik)]}, aa=>{ 1 => [qw(be.au db.bp.bh[0][0] dc.bq[0][1].bh[0][2] dc.bq[1][0].bh[0][1] dc.bw[0] dz eg el[0][1][0] el[0][1][1] em[1][1][1])], 2 => [qw(be.aw be.bd[0][2][0] db.cr[2][0] db.ct db.da[2][0][0][0] dc.cs dc.da[0][0][1][0] dc.da[1][0][0][0] ed ew.er)], 4 => [qw(db.bp.bk[0][1] db.bq[1][0].bk[0][1] db.cn.ci db.cn.cm[1][0][0][0] dc.bq[0][1].bl[1] dc.bq[1][1].bn dc.bs[2][2] dc.cn.cm[1][0][0][0] dn en)], 8 => [qw(be.aj[0][0][0] be.aj[0][1][1] be.aj[1][2][0] be.ax[0][0][0] be.az[0][0][2] be.az[0][1][1] be.az[0][2][0] be.az[1][1][2] dc.cn.ch ev.eu)], 12 => [qw(db.bo db.bp db.bq[0][0] db.bq[0][1] db.bq[1][0] db.bq[1][1] dc.bo dc.bp dc.bq[0][0] dc.bq[0][1])], 24 => [qw(db.cn dc.cn)], 72 => [qw(dj)], 106 => [qw(db dc)], 212 => [qw(be)]}, rw=>{ 1 => [qw(uo.um.uk[1] uo.un.uc[2] up[0][0].um.ul up[1][0].sc[1] up[1][0].sl up[2][0].un.ud ws.wo[1] zk aar[0][0].aam aar[2][0].aah[2][0])], 2 => [qw(uo.tp.te[1][0][0][1] uo.un.ug up[0][0].tp.tn up[0][0].tq.te[1][0][0][1] up[1][0].sh[0][0] up[1][0].ta[2] up[2][0].to.te[0][0][0][0] ws.wr[2][1] ye.yb[0][0][0][0] yv)], 4 => [qw(uo.sv[1][0][0][0] uo.to.td[0][0] uo.to.td[0][1] uo.to.tl up[0][0].to.td[1][2] up[2][0].to.td[1][1] ux[0][2] zw[2][2] aac[1][0][0][0] aar[1][0].aak)], 8 => [qw(uo.um.ue[0][0][0] uo.um.ui uo.un.ue[0][1][0] up[0][0].un.ue[0][0][2] up[0][0].un.ue[1][1][0] up[1][0].un.ue[0][0][2] up[1][0].un.ue[1][0][1] vn[0][1][2] wv aar[0][0].aap)], 36 => [qw(wi)], 39 => [qw(aar[0][0] aar[0][1] aar[1][0] aar[1][1] aar[2][0] aar[2][1])], 48 => [qw(xh)], 50 => [qw(vh)], 60 => [qw(ws wt)], 72 => [qw(uo.to uo.tq uo.ub up[0][0].to up[0][0].tq up[1][0].tp up[1][0].tq up[2][0].tp up[2][0].tq up[2][0].ub)], 92 => [qw(ye)], 138 => [qw(uo uo.um uo.un up[0][0] up[0][0].un up[1][0].um up[1][0].un up[2][0] up[2][0].um up[2][0].un)]}}, 2 => { kc=>{ 1 => [qw(mg.lt mg.lw mi.lw mi.ly[0][1][0][0] ou[0][0].my ou[0][0].nu ov.mr ov.my ow[0][1].na ow[2][0].mr)], 2 => [qw(ou[0][0].ob[2][0][0] ov.oa[0][2] ov.oj[1] ow[0][0].oa[1][1] ow[1][1].ob[0][0][0] ow[2][1].ms oz[1][1] py qn rs[0].rl)], 4 => [qw(mg.kd mg.lg mh.kw.ks[0] mh.mb ov.nq.nj ow[0][0].on ow[0][1].oh ow[1][0].nq.nk pm[2][0][0][0] rg.ra[0][0][1][0])], 8 => [qw(mg.kw.kp[1] mg.lc[1] mi.lp[1][1].ll ou[0][0].ol[0][1] ov.mk[0] ow[1][0].nq.ne[0][0][0][0] ow[1][1].nq.ne[0][1][0][0] ow[2][0].nq.ne[0][2][2][0] ow[2][1].nq.ne[0][1][1][0] rh.rf[1][0])], 24 => [qw(mg.kw mh.kw mi.kw rs[0] rt[0] ru)], 36 => [qw(mg.lp[0][0] mg.lp[0][1] mg.lp[1][0] mg.lp[1][1] mg.lq mh.lp[0][0] mh.lq mi.lp[0][0] mi.lp[1][0] mi.lq)], 130 => [qw(ou[0][0].nq ov.nq ow[0][0].nq ow[0][1].nq ow[1][0].nq ow[1][1].nq ow[2][0].nq ow[2][1].nq)], 132 => [qw(rg rh)], 208 => [qw(ou[0][0] ov ow[0][0] ow[0][1] ow[1][0] ow[1][1] ow[2][0] ow[2][1])], 352 => [qw(mg mh mi)]}, ey=>{ 1 => [qw(fn.fj[0][0][0] fx ij.ih.ia ik.ig[0][0][0].id ik.ig[1][0][0].ic jf jt.be.av jt.dc.bo.bh[0][0] jt.dc.bp.bi jt.dc.bq[1][0].bh[0][1])], 2 => [qw(ij.hu.hm ij.ih.hy ik.ht.hm jt.db.cn.ck[0][0][2][1] jt.db.cn.ck[0][1][0][0] jt.db.cr[1][0] jt.db.cr[2][0] jt.db.cw jt.dc.cn.ck[0][1][0][1] jy[1][1][0][2])], 4 => [qw(gx ii.ht.hl[0][0][0] ik.hu.hl[0][1][0] jt.db.bq[0][0].bk[0][2] jt.dc.bq[1][0].bl[1] jt.dc.bq[1][0].bn jt.dc.cn.ci jt.dc.cn.cm[1][0][0][0] jt.dj.df[2][0] jt.dj.dh[1][0])], 8 => [qw(fp ij.ih ik.ih ik.ih.ie je jr.ji[0][0][1][2] jr.ji[0][0][2][0] jt.be.aj[0][1][0] jt.be.az[1][1][2] jt.be.ba)], 10 => [qw(fn fo)], 12 => [qw(jt.db.bo jt.db.bp jt.db.bq[0][0] jt.db.bq[0][1] jt.db.bq[1][1] jt.dc.bo jt.dc.bp jt.dc.bq[0][0] jt.dc.bq[0][1] jt.dc.bq[1][1])], 24 => [qw(iu jt.db.cn jt.dc.cn)], 72 => [qw(jr js jt.dj)], 108 => [qw(ii.ht ii.hu ij.ht ij.hu ik.ht ik.hu jt.db jt.dc)], 212 => [qw(jt.be)], 230 => [qw(jt)], 260 => [qw(ii ij ik)]}, aa=>{ 1 => [qw(be.au db.bp.bh[0][0] dc.bq[0][1].bh[0][2] dc.bq[1][0].bh[0][1] dc.bw[0] dz eg el[0][1][0] el[0][1][1] em[1][1][1])], 2 => [qw(be.aw be.bd[0][2][0] db.cr[2][0] db.ct db.da[2][0][0][0] dc.cs dc.da[0][0][1][0] dc.da[1][0][0][0] ed ew.er)], 4 => [qw(db.bp.bk[0][1] db.bq[1][0].bk[0][1] db.cn.ci db.cn.cm[1][0][0][0] dc.bq[0][1].bl[1] dc.bq[1][1].bn dc.bs[2][2] dc.cn.cm[1][0][0][0] dn en)], 8 => [qw(be.aj[0][0][0] be.aj[0][1][1] be.aj[1][2][0] be.ax[0][0][0] be.az[0][0][2] be.az[0][1][1] be.az[0][2][0] be.az[1][1][2] dc.cn.ch ev.eu)], 12 => [qw(db.bo db.bp db.bq[0][0] db.bq[0][1] db.bq[1][0] db.bq[1][1] dc.bo dc.bp dc.bq[0][0] dc.bq[0][1])], 24 => [qw(db.cn dc.cn)], 72 => [qw(dj)], 108 => [qw(db dc)], 212 => [qw(be)]}, rw=>{ 1 => [qw(uo.um.uk[1] uo.un.uc[2] up[0][0].um.ul up[1][0].sc[1] up[1][0].sl up[2][0].un.ud ws.wo[1] zk aar[0][0].aam aar[2][0].aah[2][0])], 2 => [qw(uo.tp.te[1][0][0][1] uo.un.ug up[0][0].tp.tn up[0][0].tq.te[1][0][0][1] up[1][0].sh[0][0] up[1][0].ta[2] up[2][0].to.te[0][0][0][0] ws.wr[2][1] ye.yb[0][0][0][0] yv)], 4 => [qw(uo.sv[1][0][0][0] uo.to.td[0][0] uo.to.td[0][1] uo.to.tl up[0][0].to.td[1][2] up[2][0].to.td[1][1] ux[0][2] zw[2][2] aac[1][0][0][0] aar[1][0].aak)], 8 => [qw(uo.um.ue[0][0][0] uo.um.ui uo.un.ue[0][1][0] up[0][0].un.ue[0][0][2] up[0][0].un.ue[1][1][0] up[1][0].un.ue[0][0][2] up[1][0].un.ue[1][0][1] vn[0][1][2] wv aar[0][0].aap)], 36 => [qw(wi)], 40 => [qw(aar[0][0] aar[0][1] aar[1][0] aar[1][1] aar[2][0] aar[2][1])], 48 => [qw(xh)], 50 => [qw(vh)], 60 => [qw(ws wt)], 72 => [qw(uo.to uo.tq uo.ub up[0][0].to up[0][0].tq up[1][0].tp up[1][0].tq up[2][0].tp up[2][0].tq up[2][0].ub)], 92 => [qw(ye)], 138 => [qw(uo uo.um uo.un up[0][0] up[0][0].un up[1][0].um up[1][0].un up[2][0] up[2][0].um up[2][0].un)]}}, 4 => { kc=>{ 1 => [qw(mg.lt mg.lw mi.lw mi.ly[0][1][0][0] ou[0][0].my ou[0][0].nu ov.mr ov.my ow[0][1].na ow[2][0].mr)], 2 => [qw(ou[0][0].ob[2][0][0] ov.oa[0][2] ov.oj[1] ow[0][0].oa[1][1] ow[1][1].ob[0][0][0] ow[2][1].ms oz[1][1] py qn rs[0].rl)], 4 => [qw(mg.kd mg.lg mh.kw.ks[0] mh.mb ov.nq.nj ow[0][0].on ow[0][1].oh ow[1][0].nq.nk pm[2][0][0][0] rg.ra[0][0][1][0])], 8 => [qw(mg.kw.kp[1] mg.lc[1] mi.lp[1][1].ll ou[0][0].ol[0][1] ov.mk[0] ow[1][0].nq.ne[0][0][0][0] ow[1][1].nq.ne[0][1][0][0] ow[2][0].nq.ne[0][2][2][0] ow[2][1].nq.ne[0][1][1][0] rh.rf[1][0])], 24 => [qw(mg.kw mh.kw mi.kw rs[0] rt[0] ru)], 36 => [qw(mg.lp[0][0] mg.lp[0][1] mg.lp[1][0] mg.lp[1][1] mg.lq mh.lp[0][0] mh.lq mi.lp[0][0] mi.lp[1][0] mi.lq)], 132 => [qw(rg rh)], 136 => [qw(ou[0][0].nq ov.nq ow[0][0].nq ow[0][1].nq ow[1][0].nq ow[1][1].nq ow[2][0].nq ow[2][1].nq)], 216 => [qw(ou[0][0] ov ow[0][0] ow[0][1] ow[1][0] ow[1][1] ow[2][0] ow[2][1])], 352 => [qw(mg mh mi)]}, ey=>{ 1 => [qw(fn.fj[0][0][0] fx ij.ih.ia ik.ig[0][0][0].id ik.ig[1][0][0].ic jf jt.be.av jt.dc.bo.bh[0][0] jt.dc.bp.bi jt.dc.bq[1][0].bh[0][1])], 2 => [qw(ij.hu.hm ij.ih.hy ik.ht.hm jt.db.cn.ck[0][0][2][1] jt.db.cn.ck[0][1][0][0] jt.db.cr[1][0] jt.db.cr[2][0] jt.db.cw jt.dc.cn.ck[0][1][0][1] jy[1][1][0][2])], 4 => [qw(gx ii.ht.hl[0][0][0] ik.hu.hl[0][1][0] jt.db.bq[0][0].bk[0][2] jt.dc.bq[1][0].bl[1] jt.dc.bq[1][0].bn jt.dc.cn.ci jt.dc.cn.cm[1][0][0][0] jt.dj.df[2][0] jt.dj.dh[1][0])], 8 => [qw(fp ij.ih ik.ih ik.ih.ie je jr.ji[0][0][1][2] jr.ji[0][0][2][0] jt.be.aj[0][1][0] jt.be.az[1][1][2] jt.be.ba)], 12 => [qw(fo jt.db.bo jt.db.bp jt.db.bq[1][0] jt.db.bq[1][1] jt.dc.bo jt.dc.bp jt.dc.bq[0][0] jt.dc.bq[0][1] jt.dc.bq[1][1])], 24 => [qw(iu jt.db.cn jt.dc.cn)], 72 => [qw(jr js jt.dj)], 108 => [qw(ii.ht ii.hu ij.ht ij.hu ik.ht ik.hu jt.db jt.dc)], 212 => [qw(jt.be)], 236 => [qw(jt)], 264 => [qw(ii ij ik)]}, aa=>{ 1 => [qw(be.an db.bo.bi dc.bo.bh[0][2] dc.bq[1][1].bh[0][1] dc.bu dz el[0][0][1] el[0][1][0] el[0][1][1] em[1][1][1])], 2 => [qw(be.aw be.bd[0][2][0] db.cs db.cu[1][1] db.da[2][0][1][0] dc.cr[2][0] dc.da[0][0][1][0] dc.da[1][0][1][0] ed ew.er)], 4 => [qw(db.bo.bk[0][1] db.cn.ci db.cn.cm[1][0][0][0] dc.bq[0][1].bl[1] dc.bq[1][0].bl[1] dc.bs[2][1] dc.ca dj.df[1][1] dn en)], 8 => [qw(be.aj[0][0][0] be.aj[0][1][1] be.aj[1][1][0] be.aj[1][1][1] be.ak be.az[0][0][1] be.az[0][1][0] be.az[0][1][1] be.az[1][1][0] be.az[1][1][2])], 12 => [qw(db.bo db.bq[0][0] db.bq[1][0] db.bq[1][1] dc.bo dc.bp dc.bq[0][0] dc.bq[0][1] dc.bq[1][0] dc.bq[1][1])], 24 => [qw(db.cn dc.cn)], 72 => [qw(dj)], 108 => [qw(db dc)], 212 => [qw(be)]}, rw=>{ 1 => [qw(uo.um.uk[1] up[0][0].sb up[0][0].um.ul up[1][0].sc[1] up[1][0].ub.tz up[2][0].un.uc[2] ws.wo[0] aar[0][0].aah[2][0] aar[0][0].aam aar[2][1].aah[0][0])], 2 => [qw(uo.um.ug up[0][0].ta[2] up[0][0].tq.te[0][0][0][0] up[0][0].tq.te[1][0][0][1] up[1][0].sh[0][0] up[1][0].to.te[0][0][0][0] up[2][0].to.te[0][0][0][0] wt.wr[0][2] ye.yb[0][0][1][0] yv)], 4 => [qw(uo.tc uo.to.td[0][0] uo.to.td[0][2] up[0][0].tq.tj[1] up[2][0].to.td[1][1] up[2][0].tp.td[0][0] wi.wc zw[2][2] aac[1][0][0][0] aar[1][1].aal)], 8 => [qw(uo.um.ue[0][0][0] uo.un.ue[0][0][2] up[0][0].un.ue[0][0][0] up[0][0].un.ue[0][1][0] up[1][0].un.ue[0][0][2] up[1][0].un.ue[1][1][2] vn[0][1][1] vn[2][1][1] xi[1][2] aar[0][0].aap)], 36 => [qw(wi)], 40 => [qw(aar[0][0] aar[0][1] aar[1][0] aar[1][1] aar[2][0] aar[2][1])], 48 => [qw(xh)], 50 => [qw(vh)], 60 => [qw(ws wt)], 72 => [qw(uo.to uo.tp uo.tq uo.ub up[0][0].tq up[1][0].tp up[2][0].to up[2][0].tp up[2][0].tq up[2][0].ub)], 92 => [qw(ye)], 140 => [qw(uo uo.um uo.un up[0][0].um up[0][0].un up[1][0] up[1][0].um up[1][0].un up[2][0] up[2][0].um)]}}, ); my $types = <<'ENDTYPES'; typedef union { unsigned long long ab; union { #pragma pack( push, 2 ) struct { unsigned long ac, ad, ae; signed short af[2], ag; signed char ah[2][1][1]; signed long long ai, aj[3][3][2], ak; unsigned char al; signed char am; signed char an; unsigned ao; }; #pragma pack( pop ) signed long ap; #pragma pack( push, 4 ) struct { unsigned long aq, ar, as[1][2]; int at[3]; unsigned char au, av; unsigned short aw; signed long long ax[1][1][2]; unsigned long long ay, az[2][3][3]; unsigned long long ba; signed long bb; }; #pragma pack( pop ) signed long long bc; unsigned short bd[1][3][1]; } be; union { unsigned bf, bg; #pragma pack( push, 1 ) union { signed char bh[1][3], bi; unsigned long bj; int bk[1][3], bl[2]; signed long bm, bn; } bo, bp, bq[2][2]; #pragma pack( pop ) int br[3]; struct { signed long bs[3][3], bt[3][3]; signed char bu; signed short bv; unsigned char bw[3]; signed long bx, by; signed long long bz; unsigned long ca, cb; unsigned cc; }; unsigned long long cd; union { unsigned ce, cf; unsigned long cg; signed long long ch; int ci; unsigned short cj[1][2]; unsigned short ck[1][2][3][2]; int cl, cm[3][1][1][1]; } cn; #pragma pack( push, 1 ) struct { unsigned short co, cp[1]; unsigned short cq, cr[3][1]; signed short cs; signed short ct, cu[2][3]; unsigned short cv, cw; unsigned char cx, cy; signed short cz, da[3][1][2][1]; }; #pragma pack( pop ) } db, dc; signed short dd; struct { struct { signed long de; int df[3][3], dg; unsigned long dh[2][3]; signed long di; } dj; struct { signed short dk, dl[2][1]; signed long dm[2][3], dn; unsigned dp, dq; signed char dr, ds, dt; signed long du; }; union { unsigned char dv; unsigned char dw; signed short dx[3][2]; signed char dy, dz; int ea, eb[3][3]; }; unsigned short ec, ed; struct { unsigned long ee; unsigned short ef; signed char eg, eh, ei; signed short ej, ek; unsigned char el[3][2][2], em[2][3][2]; signed long en; unsigned char eo; unsigned long ep; }; union { signed long eq; unsigned short er; int es, et; signed long long eu; } ev, ew; signed long ex; }; } aa; typedef struct { union { int ez; unsigned fa; union { int fb, fc, fd; signed char fe; signed char ff; signed long long fg, fh; signed short fi[2][1]; unsigned char fj[1][3][1], fk; signed char fl[3][3][1]; unsigned short fm; } fn, fo; unsigned long long fp; }; union { unsigned short fq, fr[2]; #pragma pack( push, 2 ) union { unsigned short fs; unsigned ft, fu[3][2]; signed long fv; signed char fw; unsigned char fx, fy; unsigned long long fz, ga; signed short gb, gc, gd; }; #pragma pack( pop ) signed char ge, gf, gg[3]; union { unsigned long long gh; unsigned gi; unsigned long gj, gk; signed long long gl[1]; }; union { int gm, gn; unsigned char go; signed long long gp; int gq; signed char gr; unsigned long gs; unsigned long long gt; } gu, gv[1][2]; struct { signed long long gw[2]; int gx, gy, gz; signed char ha[2], hb; unsigned long hc; signed char hd; unsigned he[2][1][2][2]; int hf; unsigned hg; }; }; struct { signed short hh; unsigned long hi; #pragma pack( push, 4 ) union { signed long hj; unsigned long hk, hl[3][3][3]; signed short hm; signed long hn; signed long long ho; unsigned hp; signed long long hq, hr; unsigned long hs[3][2]; } ht, hu; #pragma pack( pop ) unsigned char hv, hw; int hx[1]; union { signed short hy, hz; unsigned char ia, ib; unsigned char ic, id; unsigned long long ie; } ig[3][1][1], ih; } ii, ij, ik; union { union { unsigned long il, im; signed char in, io; signed char ip; signed long iq; unsigned ir[3][2], is, it; } iu; unsigned long iv, iw; #pragma pack( push, 4 ) union { unsigned char ix, iy, iz; unsigned char ja, jb; unsigned short jc, jd; signed long long je; unsigned char jf, jg; }; #pragma pack( pop ) #pragma pack( push, 1 ) union { int jh; unsigned long long ji[1][1][3][3]; unsigned char jj; signed long jk, jl; unsigned jm; signed char jn, jo; unsigned long long jp; signed short jq; } jr, js; #pragma pack( pop ) aa jt; union { unsigned long long ju, jv; unsigned short jw; unsigned short jx, jy[3][2][1][3]; unsigned short jz; unsigned char ka, kb; }; }; } ey; typedef struct { #pragma pack( push, 2 ) struct { struct { int kd; signed long long ke; unsigned long kf, kg; signed short kh; unsigned char ki; }; union { signed long kj[3][2], kk[1]; unsigned long kl, km, kn[1][2]; signed long long ko; signed long long kp[3], kq, kr; signed long ks[1]; signed char kt, ku; signed long kv; } kw; unsigned long long kx; union { unsigned long long ky; signed char kz; unsigned long la; signed long long lb, lc[2]; unsigned long long ld[2][1][3]; unsigned le, lf[1][2], lg; signed short lh; }; union { signed short li, lj[1][1]; unsigned long long lk, ll; signed long lm[1][3][3]; unsigned short ln; unsigned long long lo[2][1]; } lp[2][2], lq; struct { unsigned long long lr, ls; signed char lt; signed short lu, lv; unsigned char lw, lx; unsigned char ly[1][3][2][1], lz; int ma, mb; unsigned long mc; signed long long md[2][1]; }; unsigned short me[1], mf[3]; } mg, mh, mi; #pragma pack( pop ) signed long long mj; struct { union { unsigned long long mk[2], ml; unsigned long long mm; unsigned long mn, mo; signed long mp; signed char mq; signed char mr; }; unsigned short ms, mt; union { signed short mu[2]; unsigned mv, mw[2][1]; signed char mx[1]; signed char my, mz; unsigned char na; signed long long nb[1]; }; struct { unsigned long long nc, nd, ne[1][3][3][1]; signed long long nf; signed short ng, nh, ni; unsigned nj, nk, nl; unsigned short nm; signed long long nn; unsigned short no; signed long np; } nq; #pragma pack( push, 1 ) union { signed long long nr[1][1], ns; unsigned char nt, nu, nv; unsigned nw; unsigned short nx[2]; signed long ny, nz; signed short oa[3][3], ob[3][1][1]; signed char oc, od; signed long oe, of; }; #pragma pack( pop ) unsigned long og[2]; union { int oh; signed long oi; signed short oj[2]; signed long long ok, ol[1][3]; unsigned om[3], on; unsigned long oo, op; signed short oq[3], or; unsigned char os[2][1], ot; }; } ou[1][1], ov, ow[3][2]; struct { union { signed short ox, oy, oz[2][2]; unsigned short pa, pb; int pc; unsigned short pd; signed char pe; unsigned short pf; }; signed short pg; int ph; struct { unsigned pi; signed long pj[1][3][2], pk; unsigned long pl; unsigned long pm[3][2][1][2]; signed char pn, po; unsigned pp; signed short pq; }; #pragma pack( push, 1 ) union { unsigned short pr; unsigned long long ps[3][1][2]; unsigned pt[2]; signed char pu; signed long long pv, pw[2]; unsigned short px; signed short py; signed short pz[1][2]; }; #pragma pack( pop ) }; #pragma pack( push, 2 ) struct { union { unsigned long long qa, qb; unsigned long long qc, qd[1][1]; unsigned long qe[2][1], qf; signed short qg; unsigned qh; } qi; union { signed short qj; signed short qk, ql; signed short qm; unsigned short qn; unsigned char qo; signed long long qp; signed short qq; signed long qr[1][2], qs; }; signed long qt, qu; struct { signed long long qv; signed long long qw, qx[3]; signed long qy, qz, ra[1][3][3][1]; signed long long rb, rc; unsigned long rd[2]; signed long long re, rf[2][1]; } rg, rh; unsigned char ri; union { unsigned long long rj; signed long long rk[1][3]; signed short rl, rm; signed long long rn; int ro; unsigned char rp, rq[3], rr; } rs[1], rt[1], ru; unsigned long long rv[1]; }; #pragma pack( pop ) } kc; typedef union { int rx, ry; union { signed long rz[2][3], sa[1][2]; union { signed char sb, sc[2]; unsigned short sd, se; signed long sf, sg; signed short sh[3][2], si; signed short sj; }; #pragma pack( push, 4 ) struct { unsigned long long sk; unsigned char sl; signed char sm; unsigned char sn, so; int sp[1][2]; unsigned sq[2], sr; }; #pragma pack( pop ) unsigned long ss, st, su; union { unsigned long sv[2][1][2][3]; signed long long sw, sx; unsigned sy, sz; signed short ta[3], tb; unsigned long tc; }; struct { signed long td[3][3]; signed short te[2][1][1][2], tf, tg; signed short th, ti; signed long tj[2]; int tk, tl; signed short tm, tn; } to, tp, tq; #pragma pack( push, 4 ) struct { unsigned long tr, ts; signed short tt; unsigned tu, tv; unsigned short tw; signed long tx[3][3][1], ty; signed char tz; unsigned ua; } ub; #pragma pack( pop ) struct { signed char uc[3]; signed char ud; unsigned long long ue[2][2][3], uf; unsigned short ug; unsigned long uh[3]; unsigned long long ui; unsigned uj[1]; signed char uk[3], ul; } um, un; } uo, up[3][1]; signed char uq; #pragma pack( push, 1 ) union { unsigned long ur; struct { unsigned short us, ut[2][1]; unsigned short uu, uv; unsigned long uw, ux[2][3]; unsigned char uy; }; struct { signed short uz[1][3][1][3]; signed char va[1][3][2], vb; signed char vc; signed short vd[1][3][2]; signed short ve[1][1], vf; signed long long vg; } vh; unsigned vi; unsigned long vj; }; #pragma pack( pop ) #pragma pack( push, 4 ) union { #pragma pack( push, 1 ) struct { unsigned long long vk[3]; unsigned long long vl; signed long long vm, vn[3][3][3], vo; signed char vp; unsigned char vq, vr[3][1]; unsigned long vs, vt; }; #pragma pack( pop ) signed long vu, vv, vw; signed long long vx; unsigned char vy, vz; struct { unsigned long long wa, wb; unsigned long wc; unsigned char wd[1][1]; unsigned we; unsigned char wf, wg; unsigned wh; } wi; struct { unsigned wj; unsigned long long wk, wl, wm; unsigned wn; signed char wo[3]; unsigned short wp, wq[2], wr[3][3]; } ws, wt; #pragma pack( push, 1 ) union { signed long long wu, wv, ww; unsigned long wx[1][3]; unsigned short wy, wz[1][2]; unsigned long long xa; }; #pragma pack( pop ) }; #pragma pack( pop ) #pragma pack( push, 2 ) union { #pragma pack( push, 4 ) union { unsigned short xb; signed long long xc[3][2]; signed short xd; signed short xe; signed char xf, xg; } xh; #pragma pack( pop ) signed long long xi[3][3], xj; unsigned xk[2][2]; #pragma pack( push, 4 ) union { unsigned char xl; unsigned char xm, xn[1]; signed short xo; unsigned xp, xq; signed long xr; }; #pragma pack( pop ) unsigned short xs[2][1]; signed long long xt, xu[3]; }; #pragma pack( pop ) #pragma pack( push, 2 ) union { struct { unsigned long xv; unsigned xw, xx[3][1]; signed short xy, xz[2][1][1][3]; unsigned char ya; unsigned short yb[3][2][2][2], yc[3][1], yd; } ye; int yf[2][3], yg; int yh, yi, yj; unsigned short yk; union { unsigned char yl; unsigned char ym; signed long long yn; unsigned long long yo, yp; unsigned short yq[2]; unsigned char yr; unsigned ys, yt; }; }; #pragma pack( pop ) union { union { signed long yu; signed short yv, yw, yx; unsigned short yy[1][3], yz; signed short za, zb, zc[2][2]; signed char zd[2][1], ze; int zf[2][2]; unsigned char zg, zh; signed short zi; }; #pragma pack( push, 4 ) union { signed long long zj; signed char zk, zl; signed short zm; int zn[1][2]; unsigned char zo[3]; }; #pragma pack( pop ) signed char zp, zq, zr; union { unsigned short zs[1]; signed char zt, zu; unsigned zv[1][2][2]; unsigned zw[3][3]; unsigned char zx[1][3]; }; struct { unsigned long long zy; signed long zz, aaa[2]; int aab, aac[3][3][1][1], aad; unsigned char aae, aaf[3][3][1]; }; struct { unsigned char aag, aah[3][2]; unsigned aai, aaj, aak; signed long aal; unsigned char aam; signed char aan, aao[2]; signed long long aap; unsigned aaq; } aar[3][2]; unsigned long aas, aat, aau[1][2][2]; }; } rw; ENDTYPES my $SEED = 0; my $data = pack 'C*', map { ($SEED = (($SEED+13)*2869) % 8191) % 256 } 1..3324; my($succ, $fail); sub reccmp { my($ident, $ref, $val, $sparse) = @_; my $id = ref $ref; unless ($id) { if ($ref eq $val) { $succ++ } else { $fail++; diag("value mismatch for '$ident' (expected $ref, got $val)\n"); } return $ref eq $val; } if ($id eq 'ARRAY') { if ($sparse or @$ref == @$val) { $succ++; reccmp($ident."[$_]", $ref->[$_], $val->[$_], $sparse) for 0..$#$ref; } else { $fail++; diag("different array size for '$ident' (expected ", scalar @$ref, ", got ", scalar @$val, ")\n"); } } elsif ($id eq 'HASH') { if ($sparse or @{[keys %$ref]} == @{[keys %$val]}) { $succ++; for my $key (keys %$ref) { if (exists $val->{$key}) { $succ++; reccmp($ident.".$key", $ref->{$key}, $val->{$key}, $sparse); } else { $fail++; diag("member '$key' not found in '$ident'\n"); } } } else { $fail++; diag("different struct member count for '$ident' (expected ", scalar @{[keys %$ref]}, ", got ", scalar @{[keys %$val]}, ")\n"); } } } sub hexdump { my $data = shift; my $dump = ''; while (length $data) { my($i, $d, $t) = (0, '', ''); for my $c (unpack 'C*', substr $data, 0, 16, '') { $d .= sprintf "%02X", $c; $d .= ' '; $t .= $c < 32 || $c > 126 ? '.' : chr $c; next if ++$i % 4; $d .= ' '; $t .= ' ' unless $i % 8; } $dump .= sprintf "%-53s%s\n", $d, $t; } $dump; } sub chkpack { my($packref, $init, $off) = @_; $off ||= 0; for (my $i = 0; $i < length $$packref; ++$i) { my $o = ord substr $data, $off+$i, 1; my $p = ord substr $$packref, $i, 1; unless ($p == $o or $p == 0 or (defined $init and $p == $init)) { diag("inconsistent data in chkpack (init=$init, o=$o, p=$p):\n", "data @ offset $off:\n", hexdump(substr $data, $off, length $$packref), "packref:\n", hexdump($$packref)); return 0; } } return 1; } sub sparsecopy { my $ref = shift; my $id = ref $ref or return $ref; if ($id eq 'ARRAY') { return [ map { sparsecopy($ref->[$_]) } 0 .. ($#$ref/2) ]; } elsif ($id eq 'HASH') { my $i = 0; return { map { ++$i%2 ? ($_ => sparsecopy($ref->{$_})) : () } sort keys %$ref }; } } sub reccheck { my($cont, $meth, $id) = @_; my $r = ref $cont or return (0, 0); my($ok, $rcok) = (0, 0); my($o, $ro); if ($r eq 'ARRAY') { for my $ix (0 .. $#$cont) { ($o,$ro) = $meth->("$id\[$ix\]", $cont->[$ix]); $ok += $o; $rcok += $ro; ($o,$ro) = reccheck($cont->[$ix], $meth, "$id\[$ix\]"); $ok += $o; $rcok += $ro; } } elsif ($r eq 'HASH') { for my $mem (keys %$cont) { my $new = defined $id ? "$id.$mem" : $mem; ($o,$ro) = $meth->($new, $cont->{$mem}); $ok += $o; $rcok += $ro; ($o,$ro) = reccheck($cont->{$mem}, $meth, $new); $ok += $o; $rcok += $ro; } } ($ok, $rcok); } sub checkrc { my $rc = shift; while ($rc =~ /REFCNT\s*=\s*(\d+)/g) { if ($1 == 1) { $succ++ } else { diag("REFCNT = $1, should be 1\n"); $fail++; } } } my $p = new Convert::Binary::C ByteOrder => 'LittleEndian', ShortSize => 2, IntSize => 4, LongSize => 4, PointerSize => 4, FloatSize => 4, DoubleSize => 8, Alignment => 4; $p->parse($types); my $first = 1; my $debug = Convert::Binary::C::feature('debug'); for my $align (4, sort keys %reference) { if ($first) { $first = 0 } else { $p->configure(Alignment => $align) if $align; } my $sizeof = $reference{$align}{sizeof}; my $content = $reference{$align}{content}; my $sparse = { map { ( $_ => sparsecopy($content->{$_}) ) } keys %$content }; my $members = $members{$align}; my $sizeofs = $sizeofs{$align}; # perform a basic size check first for my $type (keys %$sizeof) { is($p->sizeof($type), $sizeof->{$type}, "sizeof($type)"); } # test if the unpack method works for my $type (keys %$content) { my $cont = $p->unpack($type, $data); $succ = $fail = 0; reccmp($type, $content->{$type}, $cont, 0); ok($fail == 0 && $succ > 0); # check reference counts SKIP: { skip 'no debug support', 1 unless $debug; $succ = $fail = 0; checkrc(Convert::Binary::C::__DUMP__($cont)); ok($fail == 0 && $succ > 0); } } # test if the pack method works correctly for my $type (keys %$content) { my $packed = $p->pack($type, $content->{$type}); is(length $packed, $sizeof->{$type}, "length pack($type)"); ok(chkpack(\$packed)); my $cont = $p->unpack($type, $packed); $succ = $fail = 0; reccmp($type, $content->{$type}, $cont, 0); ok($fail == 0 && $succ > 0); # is($fail, 0); # check reference count SKIP: { skip 'no debug support', 1 unless $debug; $succ = $fail = 0; checkrc(Convert::Binary::C::__DUMP__($packed)); ok($fail == 0 && $succ > 0); } } # test if pack also works for sparse data for my $type (keys %$sparse) { my $packed = $p->pack($type, $sparse->{$type}); is(length $packed, $sizeof->{$type}, "length pack($type) [sparse]"); ok(chkpack(\$packed)); my $cont = $p->unpack($type, $packed); $succ = $fail = 0; reccmp($type, $sparse->{$type}, $cont, 1); ok($fail == 0 && $succ > 0); # is($fail, 0); } # test the 3-arg version of pack for my $type (keys %$sparse) { my $packed = 'x' x $sizeof->{$type}; $p->pack($type, $sparse->{$type}, $packed); is(length $packed, $sizeof->{$type}, "length pack($type) [sparse, 3-arg]"); ok(chkpack(\$packed, ord 'x')); my $cont = $p->unpack($type, $packed); $succ = $fail = 0; reccmp($type, $sparse->{$type}, $cont, 1); ok($fail == 0 && $succ > 0); # is($fail, 0); # check reference count SKIP: { skip 'no debug support', 1 unless $debug; $succ = $fail = 0; checkrc(Convert::Binary::C::__DUMP__($packed)); ok($fail == 0 && $succ > 0); } } # test if the member(), offsetof() and typeof() methods work correctly for my $id (keys %$members) { $fail = 0; my $ref = $members->{$id}; for my $offs (0 .. $sizeof->{$id}-1) { my $m = $p->member($id, $offs); my @m = $p->member($id, $offs); my $r = $ref->[$offs]; my $diag = "(type=$id, offset=$offs):\n" . "\$m = '$m'\n" . "\@m = (" . join(', ', map { "'$_'" } @m) . ")\n"; # print "# member( '$id', $offs ) = (", join(', ', map "'$offs'", @m), ")\n"; unless ($m eq $m[0]) { diag("member mismatch for different contexts $diag"); $fail++; } if (@m > 1) { my %seen; for my $m (@m) { if ($seen{$m}++) { diag("duplicate member ($m) found in list context output $diag"); $fail++; } } } $r =~ /^\d+$/o and $r = "$ref->[$offs-$r]+$r"; $r =~ /^\w/o and $r = ".$r"; unless ($m eq $r) { diag("member mismatch (expected $r, got $m) $diag"); $fail++; } unless ($m =~ /^\+\d+$/) { my $t = $p->typeof($id.$m); unless (defined $t) { diag("undefined type for member ($id.$m) $diag"); $fail++; } } my $o = $p->offsetof($id, $m); unless (defined $o and $o == $offs) { diag("offsetof('$id', '$m') == $o, expected $offs\n"); $fail++; } } is($fail, 0); } # test if the sizeof() methods works for compound members for my $id (keys %$sizeofs) { $fail = 0; my $ref = $sizeofs->{$id}; for my $size (keys %$ref) { for my $member (@{$ref->{$size}}) { $size == $p->sizeof("$id.$member") or $fail++; } } is($fail, 0); } # test if the unpack method works for compound members for my $type (keys %$content) { my($ok, $rcok) = reccheck($content->{$type}, \&unpackcheck, $type); ok($ok); SKIP: { skip 'no debug support', 1 unless $debug; ok($rcok); } } # test if the pack method works for compound members for my $type (keys %$content) { my($ok, $rcok) = reccheck($content->{$type}, \&packcheck, $type); ok($ok); SKIP: { skip 'no debug support', 1 unless $debug; ok($rcok); } } # test Format tag (offsetof and sizeof are already validated above) for my $id (keys %$members) { my @members = $p->member($id); my %seen; for my $m (@members) { next if $m =~ /\[[^0]+\]/; $fail = $succ = 0; while ($m) { $m =~ s/(?:\[\d*\])+$//; last if $seen{$m}++; my $offs = $p->offsetof($id, $m); my $size = $p->sizeof($id.$m); my $bin = substr $data, $offs, $size; my($str) = $bin =~ /^([^\x00]*)/; my $pl = $m; my $rv; $pl =~ s/\.(\w+)/{$1}/g; $p->tag($id.$m, Format => 'Binary'); $rv = $p->unpack($id.$m, $bin); $rv eq $bin or $fail++; $rv = $p->pack($id.$m, $bin); $rv eq $bin or $fail++; $rv = $p->unpack($id, $data); eval "\$rv->$pl" eq $bin or $fail++; $p->tag($id.$m, Format => 'String'); $rv = $p->unpack($id.$m, $bin); $rv eq $str or $fail++; # use re 'debug'; $rv = $p->pack($id.$m, $str); length($rv) == $size or $fail++; $rv =~ /^\Q$str\E\x00*$/ or $fail++; $rv = $p->unpack($id, $data); eval "\$rv->$pl" eq $str or $fail++; $p->tag($id.$m, Format => undef); $m =~ s/\.\w+$//; $succ++; } if ($succ) { is($fail, 0); } } } } sub unpackcheck { my($id, $ref) = @_; my($type, $member) = split /\./, $id, 2; my $off = defined $member ? $p->offsetof($type, $member) : 0; my $size = $p->sizeof($id); my $d = substr $data, $off, $size; my $cont = $p->unpack($id, $d); $succ = $fail = 0; reccmp($id, $ref, $cont, 0); my $ok = $fail == 0 && $succ > 0; $ok or diag("check failed for unpack('$id')\n"); $succ = $fail = 0; $debug and checkrc(Convert::Binary::C::__DUMP__($cont)); my $rcok = $fail == 0 && $succ > 0; $rcok or !$debug or diag("refcount check failed for unpack('$id')\n"); ($ok, $rcok); } sub packcheck { my($id, $ref) = @_; my($type, $member) = split /\./, $id, 2; my $off = defined $member ? $p->offsetof($type, $member) : 0; my $size = $p->sizeof($id); my $d = substr($data, $off, $size); my $packed = $p->pack($id, $ref); my $ok = 1; $size == length $packed or $ok = 0, diag("size check failed for pack('$id')\n"); chkpack( \$packed, 0, $off ) or $ok = 0, diag("chkpack check failed for pack('$id')\n"); my $cont = $p->unpack($id, $packed); $succ = $fail = 0; reccmp($id, $ref, $cont, 0); $fail == 0 && $succ > 0 or $ok = 0, diag("check failed for pack('$id')\n"); $succ = $fail = 0; $debug and checkrc(Convert::Binary::C::__DUMP__($cont)); my $rcok = $fail == 0 && $succ > 0; $rcok or !$debug or diag("refcount check failed for unpack('$id')\n"); ($ok, $rcok); } Convert-Binary-C-0.76/tests/236_typeinfo.t0000644000175000001440000000516411550664621016775 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:26 +0200 $ # $Revision: 10 $ # $Source: /tests/236_typeinfo.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 49 } my $c = new Convert::Binary::C; $c->parse(<enum(' foo', 'no', "enum \t bar"); ok(defined $foo); ok($foo->{identifier}, 'foo'); ok($foo->{sign}, 0); ok(join(',', keys %{$foo->{enumerators}}), 'FOO'); ok($foo->{enumerators}{FOO}, 0); ok(defined $bar); ok($bar->{identifier}, 'bar'); ok($bar->{sign}, 1); ok(join(',', keys %{$bar->{enumerators}}), 'BAR'); ok($bar->{enumerators}{BAR}, -1); ok(not defined $ndef); ($abc, $ndef, $def) = $c->struct(' abc', 'union u1', "struct \t def"); ok(defined $abc); ok($abc->{identifier}, 'abc'); ok($abc->{type}, 'struct'); ok($abc->{pack}, 0); ok(defined $def); ok($def->{identifier}, 'def'); ok($def->{type}, 'struct'); ok($def->{pack}, 1); ok(not defined $ndef); ($u1, $ndef, $u2) = $c->union(' u1', 'struct def', "union \t u2"); ok(defined $u1); ok($u1->{identifier}, 'u1'); ok($u1->{type}, 'union'); ok($u1->{pack}, 1); ok(defined $u2); ok($u2->{identifier}, 'u2'); ok($u2->{type}, 'union'); ok($u2->{pack}, 0); ok(not defined $ndef); ($abc, $ndef, $u1) = $c->compound(' abc', 'union no', "union \t u1"); ok(defined $abc); ok($abc->{identifier}, 'abc'); ok($abc->{type}, 'struct'); ok($abc->{pack}, 0); ok(defined $u1); ok($u1->{identifier}, 'u1'); ok($u1->{type}, 'union'); ok($u1->{pack}, 1); ok(not defined $ndef); ($u_16, $ndef, $u_32) = $c->typedef('u_16', ' u_32', "u_32"); ok(defined $u_16); ok($u_16->{declarator}, 'u_16'); ok($u_16->{type}, 'unsigned short'); ok(defined $u_32); ok($u_32->{declarator}, 'u_32'); ok($u_32->{type}, 'unsigned int'); ok(not defined $ndef); ($pk0, $pk2) = $c->struct('pack0', 'pack2'); ok(defined $pk0); ok(defined $pk2); ok($pk0->{pack}, 0); ok($pk2->{pack}, 2); Convert-Binary-C-0.76/tests/239_macros.t0000644000175000001440000001110111550664621016413 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:26 +0200 $ # $Revision: 7 $ # $Source: /tests/239_macros.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 54; use Convert::Binary::C @ARGV; my @stdname = qw( __STDC_HOSTED__ __STDC_VERSION__ ); my @stddef = qw( __STDC_HOSTED__=1 __STDC_VERSION__=199901L ); my $c = new Convert::Binary::C; eval { $c->parse(''); }; is($@, '', 'parse an empty string'); is(scalar $c->macro_names, scalar @stdname, 'STDC macro name count'); is(join(',', sort $c->macro_names), join(',', sort @stdname), 'STDC macro names'); is(scalar $c->macro, scalar @stddef, 'STDC macro count'); is(scalar $c->macro('FOO', 'BAR', 'BAZ'), 3, 'macro count'); is(join(',', sort map { trim_macro($_) } $c->macro), join(',', sort @stddef), 'STDC macro definitions'); is(join(',', map { trim_macro($_) } $c->macro(@stdname)), join(',', @stddef), 'STDC macro definitions (arg)'); is(trim_macro(scalar $c->macro('__STDC_HOSTED__')), '__STDC_HOSTED__=1', 'STDC macro definition (scalar context)'); is_deeply([map { defined $_ ? trim_macro($_) : undef } $c->macro('FOOBAR', @stdname)], [undef, @stddef], 'STDC macro definitions (arg)'); for my $m ($c->macro_names) { ok($c->defined($m), "$m defined"); } ok(!$c->defined('FOOBAR'), 'FOOBAR not defined'); my @name = qw{ DEFINED MULTIPLY }; my @def = ('DEFINED', 'MULTIPLY(x,y)=((x)*(y))'); eval { $c->parse(<macro_names, @stdname + @name, 'macro name count'); is(join(',', sort $c->macro_names), join(',', sort @stdname, @name), 'macro names'); is(scalar $c->macro, 4, 'macro count'); is(join(',', sort map { trim_macro($_) } $c->macro), join(',', sort @stddef, @def), 'macro definitions'); is(join(',', map { trim_macro($_) } $c->macro(@name)), join(',', @def), 'macro definitions (arg)'); is(trim_macro(scalar $c->macro('DEFINED')), 'DEFINED', 'macro definition (scalar context)'); is_deeply([map { defined $_ ? trim_macro($_) : undef } $c->macro('NOT_DEFINED', @name)], [undef, @def], 'STDC macro definitions (arg)'); for my $m ($c->macro_names) { ok($c->defined($m), "$m defined"); } ok(!$c->defined('NOT_DEFINED'), 'NOT_DEFINED not defined'); my $src = $c->sourcify({ Defines => 1 }); my @srcdef = $src =~ /^#define\s+(.*)$/gm; is(join(',', sort map { trim_macro($_) } @srcdef), join(',', sort @def), 'sourcify'); my @cfg = ( { does_reset => 1, config => [ HasCPPComments => 1 ] }, { does_reset => 0, config => [ PointerSize => 2 ] }, { does_reset => 1, config => [ HasMacroVAARGS => 1 ] }, { does_reset => 0, config => [ Warnings => 1 ] }, { does_reset => 1, config => [ Include => ['a'] ] }, { does_reset => 1, config => [ Define => ['b'] ] }, { does_reset => 1, config => [ Assert => ['a(b)'] ] }, ); $c->configure(HasCPPComments => 0, PointerSize => 4, HasMacroVAARGS => 0, Warnings => 0, Include => [], Define => [], Assert => []); my $d = $c->clone; for my $t (@cfg) { $c->clean->parse("#define DEFINED\n"); ok($c->defined('DEFINED'), 'DEFINED defined'); $c->configure(@{$t->{config}}); if ($t->{does_reset}) { ok(!$c->defined('DEFINED'), "DEFINED not defined after $t->{config}[0]"); } else { ok($c->defined('DEFINED'), "DEFINED still defined after $t->{config}[0]"); } my($meth, @arg) = map { ref $_ ? @$_ : $_ } @{$t->{config}}; $d->clean->parse("#define DEFINED\n"); ok($d->defined('DEFINED'), 'DEFINED defined'); $d->$meth(@arg); if ($t->{does_reset}) { ok(!$d->defined('DEFINED'), "DEFINED not defined after $meth"); } else { ok($d->defined('DEFINED'), "DEFINED still defined after $meth"); } } sub trim_macro { my $m = shift; my @p; if ($m =~ /^(\w+\([^)]+\))(?:\s+(.*))?$/) { push @p, $1; defined $2 and push @p, $2; } elsif ($m =~ /^(\w+)(?:\s+(.*))?$/) { push @p, $1; defined $2 and push @p, $2; } else { die "unexpected macro format in [$m]\n"; } for (@p) { s/\s+//g } return join '=', @p; } Convert-Binary-C-0.76/tests/221_asm.t0000644000175000001440000000717111550664620015711 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:24 +0200 $ # $Revision: 11 $ # $Source: /tests/221_asm.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 14; } my $c = eval { new Convert::Binary::C KeywordMap => { __asm__ => 'asm', __volatile__ => 'volatile' } }; ok($@,''); my $d = eval { new Convert::Binary::C DisabledKeywords => [ 'asm' ] }; ok($@,''); for my $code ( do { local $/; split /-{20,}\r?\n?/, } ) { my $out = $code; $out =~ s/^/# /mg; print '# ', '-'x72, "\n", $out, '# ', '-'x72, "\n"; my @pass = map { $_ ? '' : qr/\S/ } $code =~ /\((\d+)(?:,(\d+))*\)/m; eval { $c->clean->parse( $code ) }; ok($@, $pass[0]); eval { $d->clean->parse( $code ) }; ok($@, $pass[1]); } ################################################################################ # CODE SNIPPETS ################################################################################ __DATA__ /* (1,1) function-like calls aren't a problem anyway */ void main() { asm("foo"); __asm__("foo"); asm("\n\ global memctl\n\ memctl:\n\ movq &75,%d0\n\ trap &0\n\ bcc.b noerror\n\ jmp cerror%\n\ noerror:\n\ movq &0,%d0\n\ rts"); } -------------------------------------------------- /* (1,0) this one's a lot better ;-) */ void main() { __asm__ ("" : : "r" (reference)); } -------------------------------------------------- /* (1,0) even more complex statements */ void main() { __asm__ __volatile__ ("getcon cr%1, %0" : "=r" (res) : "n" (k)); __asm__ __volatile__ ("putcon %0, cr%1" : : "r" (mm), "n" (k)); __asm__ __volatile__ ("putcfg %0, %1, %2" : : "r" (mm), "n" (s), "r" (mw)); __asm__ __volatile__ ("ld.b %m0, r63" : : "o" (((char*)mm)[s])); __asm__ __volatile__ ("" : "+m"(x->a) : "r"(x) : "memory", "cc"); __asm__ ("" : "=r"(tmp), "=r"(ret)); asm volatile ("sleep"); asm("%0"::"r"(1.5)); } -------------------------------------------------- /* (1,0) declarators */ void main() { register unsigned long long r18 asm ("r18"); register unsigned long long r19 asm ("r19"); register unsigned long long r0 asm ("r0") = 0; register unsigned long long r1 asm ("r1") = 1; register int r2 asm ("r2") = i >> 31; register int r3 asm ("r3") = j >> 31; } -------------------------------------------------- /* (1,0) declarators */ __asm__ ("foo"); __asm__ ("foo"); register unsigned long long r18 asm ("r18"); -------------------------------------------------- /* (1,0) from the gcc regression tests */ f(){asm("f":::"cc");} g(x,y){asm("g"::"%r"(x), "r"(y));} void foo (void) asm ("_bar"); void main() { asm("": "+r" (v) : "r" (0), "r" (1)); __asm__ ("mull %3" : "=a" (rp[0]), "=d" (rp[1]) : "%0" (7), "rm" (7)); asm volatile ("" : : : "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23", "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"); asm volatile ("test0 X%0Y%[arg]Z" : [arg] "=g" (x)); asm volatile ("test1 X%[out]Y%[in]Z" : [out] "=g" (y) : [in] "0"(y)); asm volatile ("test2 X%a0Y%a[arg]Z" : : [arg] "p" (&z)); asm volatile ("test3 %[in]" : [inout] "=g"(x) : "[inout]" (x), [in] "g" (y)); } Convert-Binary-C-0.76/tests/208_float.t0000644000175000001440000000347411550664620016245 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:22 +0200 $ # $Revision: 17 $ # $Source: /tests/208_float.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 30 } eval { $p = new Convert::Binary::C; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $p->parse(<<'EOF'); struct floating { struct { char a; float b; double c; } a[4]; float b[4]; double c[4]; }; EOF }; ok($@,'',"parse() failed"); $data = { a => [ { a => 42, b => -5.0 , c => 4.2e33 }, { a => 43, b => 1.5 , c => 3.14159 }, { a => 44, b => 3.14159, c => 1.5 }, { a => 45, b => 4.2e33 , c => -5.0 }, ], b => [-5.0, 1.5, 3.14159, 4.2e33], c => [-5.0, 1.5, 3.14159, 4.2e33], }; $packed = $p->pack( 'floating', $data ); $unpacked = $p->unpack( 'floating', $packed ); reccmp( $data, $unpacked ); sub reccmp { my($ref, $val) = @_; my $id = ref $ref; unless( $id ) { # special treatment because floats can be inaccurate abs( ($ref - $val) / $ref ) < 1e-6 ? ok(1) : ok($val, $ref); return; } if( $id eq 'ARRAY' ) { ok( @$ref == @$val ); for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ); } } elsif( $id eq 'HASH' ) { ok( @{[keys %$ref]} == @{[keys %$val]} ); for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ); } } } Convert-Binary-C-0.76/tests/207_typedef.t0000644000175000001440000000620411550664620016571 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:22 +0200 $ # $Revision: 18 $ # $Source: /tests/207_typedef.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 30 } eval { $c = new Convert::Binary::C; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $c->parse(<<'EOF'); /* just some C stuff */ typedef struct car truck, mobile[3], *vehicle; typedef enum { MONDAY, JANUARY, Y2K } day, month[4][5], *year; struct car { int wheel; int gear; }; /* the only way to execute the default_declaring_list */ /* rule is some strange construct like this... */ typedef const foo, *bar, baz[2][3]; EOF }; ok($@,'',"parse() failed"); # catch all warnings for further checks $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { ok( scalar @warn, scalar @_, "wrong number of warnings" ); ok( shift @warn, $_ ) for @_; @warn = (); } #----------------------------------------------------- # check what has been parsed... #----------------------------------------------------- @names = eval { $c->typedef_names }; ok( $@, '' ); $n_names = eval { $c->typedef_names }; ok( $@, '' ); @defs = eval { $c->typedef }; ok( $@, '' ); $n_defs = eval { $c->typedef }; ok( $@, '' ); ok( $n_names, 9, "wrong number of typedefs has been parsed" ); ok( $n_names, $n_defs, "typedef_names/typedef mismatch" ); ok( scalar @names, $n_names, "typedef_names array/scalar mismatch" ); ok( scalar @defs, $n_defs, "typedef array/scalar mismatch" ); #----------------------------------------------------- # some heavy typedefing ;-) #----------------------------------------------------- eval { $c->clean->IntSize(4)->parse(<def('f') }; ok( $@, '' ); ok( $r,'typedef'); $r = eval { $c->offsetof('f', '[1][2]+1') }; ok( $@, '' ); ok( $r, 29 ); $r = eval { $c->offsetof('f[9]', '[1]+2') }; ok( $@, '' ); ok( $r, 6 ); $r = eval { $c->sizeof('f[9]') }; ok( $@, '' ); ok( $r, 20 ); $r = eval { $c->sizeof('g') }; ok( $@, '' ); ok( $r, 400 ); $r = eval { $c->typeof('f[9]') }; ok( $@, '' ); ok( $r, 'd' ); $r = eval { $c->member('f', 29) }; ok( $@, '' ); ok( $r, '[1][2]+1' ); $r = eval { $c->member('f[9]', 6) }; ok( $@, '' ); ok( $r, '[1]+2' ); $r = eval { $c->member('g', 256) }; ok( $@, '' ); ok( $r, '[1].x[2][4]' ); ok( scalar @warn, 0, "unexpected warnings" ); print "# $_" for @warn; Convert-Binary-C-0.76/tests/232_native.t0000644000175000001440000000466511550664621016427 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:25 +0200 $ # $Revision: 17 $ # $Source: /tests/232_native.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Config; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 69 } eval { $s = Convert::Binary::C::native('IntSize'); }; ok($@, ''); ok($s > 0); eval { $s = Convert::Binary::C::native('foobar'); }; ok($@, qr/^Invalid property 'foobar'/); eval { $s = Convert::Binary::C::native('EnumType'); }; ok($@, qr/^Invalid property 'EnumType'/); $c = new Convert::Binary::C; eval { $s2 = $c->native('IntSize'); }; ok($@, ''); ok($s2 > 0); ok($s == $s2); $warn_utf8 = 0; for my $prop (qw( PointerSize IntSize CharSize ShortSize LongSize LongLongSize FloatSize DoubleSize LongDoubleSize Alignment CompoundAlignment )) { my $nat = $c->native($prop); ok($nat, Convert::Binary::C::native($prop)); print "# native($prop) = $nat\n"; my $cfgvar = lc $prop; if (exists $Config{$cfgvar}) { print "# found \$Config{$cfgvar}\n"; my $val = $Config{$cfgvar}; if ($val =~ /^\d+$/) { ok($val, $c->native($prop)); next; } warn " *** Your perl seems to have broken UTF-8 support ***\n" if $ENV{LANG} =~ /utf/i and not $warn_utf8++; $val =~ s/\n/\\n/g; $val =~ s/\r/\\r/g; print "# \$Config{$cfgvar} looks broken: [$val]\n"; } ok($c->native($prop), qr/^(?:1|2|4|8|12|16)$/); } ok($c->native('EnumSize'), qr/^(?:-1|0|1|2|4|8)$/); ok($c->native('ByteOrder'), qr/^(?:Big|Little)Endian$/); ok($c->native('ByteOrder'), byte_order()); ok($c->native('UnsignedChars'), qr/^(?:0|1)$/); ok($c->native('UnsignedBitfields'), qr/^(?:0|1)$/); $nh1 = $c->native; $nh2 = Convert::Binary::C::native(); ok(join(':', sort keys %$nh1), join(':', sort keys %$nh2)); for (keys %$nh1) { ok($nh1->{$_}, $nh2->{$_}); ok($nh1->{$_}, $c->native($_)); } sub byte_order { my $byteorder = $Config{byteorder} || unpack( "a*", pack "L", 0x34333231 ); $byteorder eq '4321' || $byteorder eq '87654321' ? 'BigEndian' : 'LittleEndian'; } Convert-Binary-C-0.76/tests/231_align.t0000644000175000001440000000712711550664621016226 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:25 +0200 $ # $Revision: 12 $ # $Source: /tests/231_align.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 212 } $c = new Convert::Binary::C ShortSize => 2 , LongSize => 4 ; eval { $c->parse(< [ 1, 1, 1, 1, 2, 2, 1, 2, 4], 'b' => [ 2, 2, 2, 2, 2, 2, 2, 2, 4], 'c' => [ 2, 2, 2, 2, 2, 2, 2, 2, 4], 'd' => [ 3, 3, 3, 4, 4, 4, 4, 4, 4], 'e' => [ 5, 5, 5, 6, 6, 6, 8, 8, 8], 'f' => [ 2, 2, 2, 2, 4, 4, 2, 4, 8], 'f.b' => [ 1, 1, 1, 1, 2, 2, 1, 2, 4], 'g' => [ 2, 2, 2, 2, 2, 2, 2, 2, 4], 'g.b' => [ 1, 1, 1, 1, 2, 2, 1, 2, 4], ); %offsetof = ( 'c.b' => [ 1, 1, 1, 1, 1, 1, 1, 1, 1], 'd.b' => [ 1, 1, 1, 2, 2, 2, 2, 2, 2], 'e.b' => [ 1, 1, 1, 2, 2, 2, 4, 4, 4], 'f.b' => [ 1, 1, 1, 1, 2, 2, 1, 2, 4], 'f.b.a' => [ 1, 1, 1, 1, 2, 2, 1, 2, 4], 'g.b' => [ 0, 0, 0, 0, 0, 0, 0, 0, 0], ); my $natcfg = -1; my $natalign = $c->native('Alignment'); my $natcmpnd = $c->native('CompoundAlignment'); $natalign = 4 if $natalign > 4; $natcmpnd = 4 if $natcmpnd > 4; for my $i (0 .. $#config) { print "# --- Alignment => $config[$i][0], CompoundAlignment => $config[$i][1] ---\n"; $c->configure(Alignment => $config[$i][0], CompoundAlignment => $config[$i][1]); if ($config[$i][0] == $natalign && $config[$i][1] == $natcmpnd) { $natcfg = $i; } check_it($c, $i); } ok($natcfg >= 0); $c->configure(Alignment => 0, CompoundAlignment => 0); check_it($c, $natcfg); sub check_it { my($c, $i) = @_; for my $t (sort keys %sizeof) { my $s = $c->sizeof($t); ok($s, $sizeof{$t}[$i], "sizeof('$t')"); } for my $x (sort keys %offsetof) { my($t, $m) = $x =~ /(\w+)\.(.*)/; my $o = $c->offsetof($t, $m); ok($o, $offsetof{$x}[$i], "offsetof('$t', '$m')"); my @m = map "$t$_", $c->member($t, $o); my $r = $c->typeof($x) =~ /struct|union/ ? qr/^$x/ : qr/^$x$/; ok(scalar(grep { $_ =~ $r } @m), 1); } } Convert-Binary-C-0.76/tests/compiler/0000755000175000001440000000000011550665107016165 5ustar mhxusersConvert-Binary-C-0.76/tests/compiler/gcc-hp64.bin0000644000175000001440000000567011550664622020203 0ustar mhxusersbe 58 1d 6c 15 db 80 7b b1 d5 77 94 89 07 c5 9a e8 7d 89 7f 70 5a ec 10 dc 00 00 00 00 00 00 00 0f 46 4a 91 db 38 cd d1 37 17 8f 86 dd ee 24 8b 85 4b 50 76 31 23 40 8a 12 81 d0 f1 b0 49 43 03 9e 68 7d 00 3c d7 00 00 25 00 28 3f ed 37 00 00 9d d2 9f 41 9e 1b f1 21 8b 00 00 00 00 00 00 00 9d 18 44 96 65 e5 ed 43 a1 38 d8 f4 f3 9a 81 be 9c 22 f1 36 34 6d b7 0d 97 5e 73 50 74 07 1f 5a 16 bc 63 00 4b 02 00 00 bb 00 e7 60 03 8a 00 00 d2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f5 ed 00 00 cf 16 41 4d fa 75 78 35 00 00 00 00 fe 00 d3 75 80 fb 90 80 69 99 04 b1 a1 f4 a1 56 2a ba eb 86 2c d7 e7 ae b8 73 98 7d 29 69 61 81 a5 15 ee 02 a6 aa c2 ab 79 26 c8 e5 ae 62 7a be 56 09 2e b9 b1 7f e0 ad ac 1c 93 b9 26 73 30 cf b4 9c a3 f1 1b ef 76 7f 24 04 94 bd 00 00 00 00 d4 60 20 b4 2b 68 7b 84 7e 2b cf b5 76 cd f0 43 d9 7f ce b6 93 74 02 0e b5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 5e 00 00 17 84 f5 42 78 d0 e1 c3 00 00 00 00 da 00 a0 7b 55 b6 fa ba 03 cb 04 be 7d f8 91 8f 69 c9 d3 4a 96 ff 51 dc c7 0f 4a 73 93 51 67 61 21 34 67 ce f1 5c 63 07 05 5b 78 d9 71 05 cd 68 f6 6f 9f 64 f9 1e b5 29 dd f3 1a 85 28 78 d8 c0 5b 71 72 62 13 66 72 8a c5 04 21 f7 00 00 00 00 12 80 f3 d9 24 80 13 e1 e9 90 0d b2 87 76 90 ed 6a ca 99 2a 0d a5 6a 8b b5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fc 9f 00 00 95 80 e8 e7 15 5c 4f 6e 00 00 00 00 2e 00 4a 55 fc 49 9d f0 e1 15 79 d3 3a 43 b8 2a 8b 01 9f 3f 1d fd 3a c1 2c 2a 9a c4 30 09 b6 28 dd b1 78 1a d3 16 43 71 8d 32 aa 35 52 9f d8 79 b2 6e ca 5e d8 e8 f5 22 7c 12 12 86 0f 8f d2 74 cb 65 1c f2 7a 50 9b 1e c0 74 82 a5 00 00 00 00 6e 14 88 59 04 7b 49 19 81 57 7f 42 58 7d 0b 6e 3d 7a 6b 2b 60 d5 8b 9a 3c 09 00 00 00 00 00 00 c5 09 00 00 00 00 00 00 72 3d ad e3 95 94 42 0c ff 20 25 da 1a ff a4 34 e4 2e 73 cb 9a ea 28 d3 4e 12 68 bd bb c0 85 0f 8a df 48 54 3a 76 fb ac d3 0d 3a ce 15 f4 43 5f c0 08 74 b5 39 71 c5 a5 1e 5f d5 c4 14 33 01 df 4e 27 c6 92 72 38 55 3b 80 ec 20 1f 46 3c 20 66 33 d6 64 75 c8 f4 c3 32 9f d1 b8 2f 6e 1c 06 71 66 5f ea de c8 b2 60 d9 06 92 55 f2 45 2d ed de 02 0d 90 ff 3a cc 0f d1 c6 3c ae ff 3c 03 65 1e 6f ec 43 6d 21 fb 5c b5 7c 6f 8f e3 65 ac 5f 46 9c c9 e7 55 e0 69 d1 59 34 29 ee aa d8 da f3 e0 53 a9 45 1f 8c 97 44 64 12 c5 14 8e 3c ba 40 69 29 2b 42 67 98 05 2a 7e b4 9c 29 e4 3b b2 09 ba af 5c 6a c6 6c d2 41 65 b1 00 00 00 22 4d f9 f5 d8 11 fc da 8d d2 f7 8e a8 00 00 00 e0 e6 b8 9a b5 00 e2 77 6c d5 78 39 ca 7f 5a 2c 27 06 00 00 fe b2 5d 02 07 10 45 08 d1 45 f2 1c 6a 69 4b 3a 16 11 4a 54 00 00 00 00 c3 e6 35 ca f8 2f 6d 9f 6a 9b 42 aa d9 8f d5 7e 05 00 00 00 00 00 00 00 6e 50 f8 77 00 00 00 00 8c 7d 82 bd 42 8e d6 04 8b 88 a4 2e e5 35 45 66 40 00 00 00 00 00 00 00 bf d6 52 52 00 00 00 00 d5 15 ec d5 ff 89 f8 24 d7 a4 64 53 27 dc 4d 33 a7 00 00 00 00 00 00 00 66 a7 ac 22 00 00 00 00 73 62 89 aa 44 17 9e d6 f5 aa dd 6c df 3d a7 4a e4 00 00 00 00 00 00 00 15 43 3c eb 00 00 1c 2c 5d 77 6d 4e 00 00 00 00 2e 64 d1 4b 5a 2d 05 58 Convert-Binary-C-0.76/tests/compiler/gcc-hp64.cfg0000644000175000001440000001213011550664622020157 0ustar mhxusers%config = ( 'Define' => [ '_LP64=1', '_PA_RISC2_0=1', '__CHAR_BIT__=8', '__DBL_DIG__=15', '__DBL_EPSILON__=2.2204460492503131e-16', '__DBL_MANT_DIG__=53', '__DBL_MAX_10_EXP__=308', '__DBL_MAX_EXP__=1024', '__DBL_MAX__=1.7976931348623157e+308', '__DBL_MIN_10_EXP__=(-307)', '__DBL_MIN_EXP__=(-1021)', '__DBL_MIN__=2.2250738585072014e-308', '__DECIMAL_DIG__=36', '__ELF__=1', '__FLT_DIG__=6', '__FLT_EPSILON__=1.19209290e-7F', '__FLT_EVAL_METHOD__=0', '__FLT_MANT_DIG__=24', '__FLT_MAX_10_EXP__=38', '__FLT_MAX_EXP__=128', '__FLT_MAX__=3.40282347e+38F', '__FLT_MIN_10_EXP__=(-37)', '__FLT_MIN_EXP__=(-125)', '__FLT_MIN__=1.17549435e-38F', '__FLT_RADIX__=2', '__GNUC_MINOR__=3', '__GNUC_PATCHLEVEL__=0', '__GNUC__=3', '__INT_MAX__=2147483647', '__LDBL_DIG__=33', '__LDBL_EPSILON__=1.92592994438723585305597794258492732e-34L', '__LDBL_MANT_DIG__=113', '__LDBL_MAX_10_EXP__=4932', '__LDBL_MAX_EXP__=16384', '__LDBL_MAX__=1.18973149535723176508575932662800702e+4932L', '__LDBL_MIN_10_EXP__=(-4931)', '__LDBL_MIN_EXP__=(-16381)', '__LDBL_MIN__=3.36210314311209350626267781732175260e-4932L', '__LONG_LONG_MAX__=9223372036854775807LL', '__LONG_MAX__=9223372036854775807L', '__LP64__=1', '__NO_INLINE__=1', '__PTRDIFF_TYPE__=long int', '__SCHAR_MAX__=127', '__SHRT_MAX__=32767', '__SIZE_TYPE__=long unsigned int', '__WCHAR_TYPE__=unsigned int', '__WINT_TYPE__=unsigned int', '__builtin_va_list=int', '__gnu_linux__=1', '__hppa=1', '__hppa__=1', '__linux=1', '__linux__=1', '__unix=1', '__unix__=1', 'linux=1', 'unix=1' ], 'IntSize' => 4, 'LongSize' => 8, 'ByteOrder' => 'BigEndian', 'ShortSize' => 2, 'Assert' => [ 'cpu(hppa)', 'machine(bigendian)', 'machine(hppa)', 'system(posix)', 'system(unix)' ], 'UnsignedChars' => 0, 'DoubleSize' => 8, 'EnumSize' => 4, 'PointerSize' => 8, 'FloatSize' => 4, 'DisabledKeywords' => [ 'restrict' ], 'LongLongSize' => 8, 'Alignment' => 8, 'LongDoubleSize' => 16, 'KeywordMap' => { '__imag__' => undef, '__inline' => 'inline', '__complex__' => undef, '__volatile' => 'volatile', '__real' => undef, '__imag' => undef, '__restrict' => 'restrict', '__inline__' => 'inline', '__bounded__' => undef, '__asm' => 'asm', '__volatile__' => 'volatile', '__unbounded' => undef, '__extension__' => undef, '__signed' => 'signed', '__unbounded__' => undef, '__const' => 'const', '__const__' => 'const', '__signed__' => 'signed', '__real__' => undef, '__bounded' => undef, '__restrict__' => 'restrict', '__complex' => undef, '__asm__' => 'asm' }, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 ); Convert-Binary-C-0.76/tests/compiler/gcc-hp64.dat0000644000175000001440000003772511550664622020211 0ustar mhxusers$data = { 'eb' => 39970, 'fx' => 717076680, 'da' => [ { 'cv' => -1929, 'cx' => '10054466689425556838', 'cw' => [ '10123391286775830020' ], 'cu' => [ 28240 ], 'cy' => 64 }, { 'cv' => 21074, 'cx' => '15538654922648866099', 'cw' => [ '15354438908448995364' ], 'cu' => [ -16426 ], 'cy' => -89 }, { 'cv' => -21470, 'cx' => '17702204745004721994', 'cw' => [ '8314359226459201238' ], 'cu' => [ 26279 ], 'cy' => -28 } ], 'hn' => 37, 'gl' => { 'gg' => -36, 'gj' => [ [ -587671231 ], [ 890850746 ], [ 256264849 ] ], 'gi' => -587671231, 'gk' => -587671231, 'gh' => 56568, 'gf' => -36 }, 'ci' => -10223, 'fe' => [ 172 ], 'hb' => [ [ -36 ], [ -8 ], [ -39 ] ], 'fc' => '8729885816503040702', 'dk' => '-2524028717054210630', 'co' => -7561, 'hs' => 125, 'br' => [ [ '11297815496258867545', '3758797781567468512', '6028425578017145956' ], [ '1352509864231452777', '2966537792253143678', '13014323083424696762' ] ], 'aq' => [ { 'ah' => '3969799405962142859', 'ao' => 10303, 'af' => -36, 'ac' => [ [ [ -24 ], [ 125 ] ], [ [ -119 ], [ 127 ] ] ], 'al' => 125, 'ag' => '1100649149247311313', 'ak' => 40552, 'ad' => 112, 'am' => 15575, 'ae' => [ 90, -20, 16 ], 'ai' => '-8841884974851080054', 'aj' => '1333576701141664515', 'ap' => 60727, 'an' => 37 }, { 'ah' => '-6829470288336748098', 'ao' => 59232, 'af' => -117, 'ac' => [ [ [ -99 ], [ -46 ] ], [ [ -97 ], [ 65 ] ] ], 'al' => 99, 'ag' => '-7126870997568459453', 'ak' => 5820, 'ad' => -98, 'am' => 19202, 'ae' => [ 27, -15, 33 ], 'ai' => '-7195924039474497779', 'aj' => '-7539461936790429862', 'ap' => 906, 'an' => -69 } ], 'hd' => 19898, 'bo' => 15369, 'hm' => { 'hi' => 34123, 'he' => [ [ '9604859098858471562', '1333576701141664515', '11414511288250227102' ] ], 'hg' => 75, 'hj' => 133, 'hl' => 133, 'hf' => 133, 'hh' => 80, 'hk' => 133 }, 'ck' => -29230, 'bv' => 65, 'cs' => '18352833694778017032', 'gq' => [ [ 13593 ], [ 19898 ], [ 3910 ] ], 'ge' => -8968, 'fv' => 5, 'dm' => '3969799405962142859', 'bu' => 210, 'gr' => 19089, 'dh' => 27982, 'ct' => '15079725131178265402', 'hy' => 15, 'ga' => -24, 'gb' => '15922715356655340986', 'bt' => 108, 'hx' => [ { 'hv' => 112, 'hw' => [ 28762, -5104 ], 'hu' => [ 112, 90 ] }, { 'hv' => 220, 'hw' => [ -8968, -9919 ], 'hu' => [ 220, 248 ] } ], 'hp' => '16752697369326971920', 'fa' => [ [ '3079032256771647406', '-5155609485075979903' ] ], 'dv' => '-1694046704382579696', 'fh' => 36, 'dn' => 34123, 'il' => [ [ -40 ], [ -12 ] ], 'eg' => -25566, 'dx' => 61750, 'ho' => 148, 'cb' => 34, 'fr' => '15672472511825838606', 'ey' => [ [ -2 ] ], 'in' => 151, 'id' => '1100649149247311313', 'ic' => 256264849, 'ft' => -97, 'ff' => -19300, 'dd' => 21, 'by' => 2971584209, 'fi' => 212, 'ab' => '12814279794590467482', 'gs' => '3969799405962142859', 'fj' => 728267652, 'dq' => 118, 'cg' => 34, 'ei' => 2619535670, 'cj' => -806, 'ii' => 15, 'ha' => { 'gx' => [ [ 56568 ], [ 55617 ] ], 'gw' => 56568, 'gt' => 220, 'gy' => -36, 'gv' => -8968, 'gz' => [ -36 ], 'gu' => -8968 }, 'fp' => [ 55679, 52918 ], 'fb' => 42261, 'ew' => [ 250, 117 ], 'fq' => [ 55679 ], 'fn' => 55679, 'ee' => 156, 'cd' => 8781, 'fl' => 118, 'dz' => -73, 'fy' => 232, 'eo' => { 'en' => 39092, 'em' => 53288, 'ek' => 2619535670, 'el' => [ [ 879605517, 2539549520, 1946623834 ], [ 381444964, 1258484082, 3149981536 ], [ 59435605, 3526610942, 3876370732 ] ] }, 'cp' => [ [ 27861, 30777, 51839 ] ], 'cm' => -521750374, 'go' => 217, 'ik' => 56, 'bw' => 101, 'gd' => '15922715356655340986', 'bq' => [ [ [ '8231926886881837580', '18383735297612424244', '16442206607890852051' ], [ '5625674048647234831', '10006796423635860396', '15207876173506036575' ], [ '13837438176797509029', '2188702982054543839', '5631688191333913915' ] ], [ [ '9289835450052911206', '3735283397995840306', '11516188236013373041' ], [ '7376872957226934489', '473535409858407902', '147933788650606545' ], [ '14284484529359119646', '8064895168714333365', '8966543589944090438' ] ] ], 'jg' => [ [ 232, 125, 137 ] ], 'db' => [ 5443, 15595 ], 'cn' => 181, 'du' => -6019, 'ia' => [ [ [ [ 3910, 19089 ], [ -9416, -12847 ], [ 14103, -28794 ] ], [ [ -8722, 9355 ], [ -31413, 20598 ], [ 12579, 16522 ] ] ], [ [ [ 4737, -12047 ], [ -20407, 17155 ], [ -24984, 32138 ] ], [ [ 15575, 22942 ], [ 9620, 10303 ], [ -4809, -11834 ] ] ], [ [ [ -25134, -24767 ], [ -25061, -3807 ], [ -29795, -1014 ] ], [ [ -17000, 18901 ], [ -25320, 17558 ], [ 26085, -4797 ] ] ] ], 'cr' => 9990, 'df' => 7212, 'ec' => -100, 'bm' => { 'bd' => [ [ 2026955203 ] ], 'bf' => [ [ [ 41083, 21942, 64186 ], [ 971, 1214, 32248 ], [ 37263, 27081, 54090 ] ], [ [ 38655, 20956, 50959 ], [ 19059, 37713, 26465 ], [ 8500, 26574, 61788 ] ], [ [ 25351, 1371, 30937 ], [ 28933, 52584, 63087 ], [ 40804, 63774, 46377 ] ] ], 'av' => [ [ [ '-5390135169593822929' ], [ '7934480093236017352' ], [ '8157030379582639965' ] ] ], 'ba' => '-1254988641', 'ax' => 46386, 'au' => [ '-5390135169593822929', '7934480093236017352', '8157030379582639965' ], 'bh' => [ -989584905 ], 'bb' => 65374, 'az' => '-1254988641', 'at' => '13056608904115728687', 'bc' => 394589506, 'bi' => '1333333603647493089', 'bg' => [ [ -571270523, 679008448 ], [ 1534161506, 325481098 ] ], 'aw' => -75, 'bj' => '-1616777205797973779', 'ay' => '-1254988641', 'ar' => -75, 'bk' => '7695131319212534411', 'as' => '13056608904115728687', 'be' => 218 }, 'aa' => '13715745015217225851', 'ez' => '7609118206392050006', 'bz' => 575535605, 'dw' => 156, 'ih' => 15, 'fw' => [ 12591, 28188 ], 'eh' => [ [ -25566, -3786, 13421 ], [ -18675, -26786, 29520 ], [ 29703, 8026, 5820 ] ], 'fk' => 2116800437, 'di' => 232, 'ip' => 115, 'ht' => -119, 'ea' => -100, 'bs' => '-1352897850', 'gm' => 220, 'ch' => 34, 'gc' => '15922715356655340986', 'fd' => '6199537737133973677', 'dr' => '16752697369326971920', 'ca' => 34, 'ej' => 2619535670, 'dg' => 23927, 'ds' => [ [ [ [ '16752697369326971920', '15922715356655340986' ] ], [ [ '1100649149247311313', '3969799405962142859' ] ] ], [ [ [ '9604859098858471562', '1333576701141664515' ] ], [ [ '11414511288250227102', '2707833530984419782' ] ] ], [ [ [ '11372327113238245665', '10060474265676302805' ] ], [ [ '11319873076141092163', '11617273785372803518' ] ] ] ], 'hq' => '16752697369326971920', 'ef' => [ [ '-1675431626' ], [ 879605517 ], [ '-1755417776' ] ], 'fu' => 21, 'jh' => [ 778359115, 1512899928 ], 'bx' => -79, 'fo' => 217, 'cc' => 8781, 'io' => 94, 'fs' => [ [ [ -75 ] ], [ [ 50 ] ], [ [ 100 ] ] ], 'ie' => '1100649149247311313', 'dc' => 5443, 'cf' => [ [ 34, 77 ], [ -7, -11 ] ], 'im' => '-7195924039474497779', 'cz' => { 'cv' => 19028, 'cx' => '7681806890972468606', 'cw' => [ '14116029227902922143' ], 'cu' => [ 5649 ], 'cy' => 5 }, 'hc' => 13593, 'hr' => -24, 'de' => [ [ 21, 67 ], [ 60, 235 ], [ 167, 189 ] ], 'ed' => -100, 'gn' => -8968, 'dl' => '1100649149247311313', 'bp' => 50441, 'fm' => -51, 'dp' => 80, 'cl' => [ -9, -114, -88 ], 'dt' => -6019, 'hz' => 3910, 'ce' => 8781, 'dy' => 13421, 'bn' => { 'bd' => [ [ 358371182 ] ], 'bf' => [ [ [ 19029, 64585, 40432 ], [ 57621, 31187, 14915 ], [ 47146, 35585, 40767 ] ], [ [ 7677, 15041, 11306 ], [ 39620, 12297, 46632 ], [ 56753, 30746, 54038 ] ], [ [ 17265, 36146, 43573 ], [ 21151, 55417, 45678 ], [ 51806, 55528, 62754 ] ] ], 'av' => [ [ [ '-5389102527106644084' ], [ '-5197881441193272865' ], [ '-1293409245604358839' ] ] ], 'ba' => '-1254748211', 'ax' => 46390, 'au' => [ '-5389102527106644084', '-5197881441193272865', '-1293409245604358839' ], 'bh' => [ '-1066106203' ], 'bb' => 64671, 'az' => '-1254748211', 'at' => '13057641546602907532', 'bc' => 2508253415, 'bi' => '7932114759614941465', 'bg' => [ [ 2081559174, 261083764 ], [ -882565902, 2052102942 ] ], 'aw' => -75, 'bj' => '-9126686196913861778', 'ay' => '-1254748211', 'ar' => -75, 'bk' => '4429971017524677530', 'as' => '13057641546602907532', 'be' => 46 }, 'ev' => { 'et' => -2579, 'er' => [ [ 241, 54, 52 ], [ 109, 183, 13 ] ], 'ep' => -100, 'eu' => -25779, 'es' => [ [ '-7539461936790429862', '1638293646862381426', '-4917676393526269355' ], [ '-3300065408227428052', '-3447337613252359673', '-1876762858196441097' ] ], 'eq' => 34 }, 'ib' => 256264849, 'cq' => 23084, 'gp' => 65, 'ex' => 120, 'ig' => 15, 'fz' => '16752697369326971920', 'dj' => 125, 'jf' => { 'jc' => 694772097, 'it' => 208, 'jb' => [ [ [ [ 105, -103 ], [ 4, -79 ], [ -95, -12 ] ], [ [ -95, 86 ], [ 42, -70 ], [ -21, -122 ] ], [ [ 44, -41 ], [ -25, -82 ], [ -72, 115 ] ] ] ], 'je' => 31014, 'iz' => 30773, 'is' => '15146678665482123564', 'iu' => [ 40, 152, 180 ], 'iv' => [ [ [ 157 ] ] ], 'iy' => 64117, 'ir' => [ [ -3726 ], [ -17472 ], [ -6304 ] ], 'ja' => '-84491466361302912', 'iw' => '16569981215513110519', 'iq' => [ [ 5820 ], [ 25444 ], [ 19202 ] ], 'jd' => 42261, 'ix' => '17720990867261899085' }, 'ij' => -95, 'fg' => [ [ -23567 ], [ 7151 ], [ 30335 ] ], 'bl' => { 'bd' => [ [ 4202002485 ] ], 'bf' => [ [ [ 54133, 33019, 36992 ], [ 27033, 1201, 41460 ], [ 41302, 10938, 60294 ] ], [ [ 11479, 59310, 47219 ], [ 39037, 10601, 24961 ], [ 42261, 60930, 42666 ] ], [ [ 49835, 31014, 51429 ], [ 44642, 31422, 22025 ], [ 11961, 45439, 57517 ] ] ], 'av' => [ [ [ '-3300065408227428052' ], [ '-3447337613252359673' ], [ '-1876762858196441097' ] ] ], 'ba' => -768356354, 'ax' => 53811, 'au' => [ '-3300065408227428052', '-3447337613252359673', '-1876762858196441097' ], 'bh' => [ 604279997 ], 'bb' => 62957, 'az' => -768356354, 'at' => '15146678665482123564', 'bc' => 3474342221, 'bi' => '-3143476581710136444', 'bg' => [ [ '-1407413319', 645083343 ], [ '-1264802831', 468678271 ] ], 'aw' => -46, 'bj' => '9091588651066716227', 'ay' => -768356354, 'ar' => -46, 'bk' => '-2774271561883713010', 'as' => '15146678665482123564', 'be' => 254 } }; Convert-Binary-C-0.76/tests/compiler/test.h0000644000175000001440000001716211550664622017325 0ustar mhxuserstypedef struct { unsigned long aa, ab; union { union { struct { struct { signed char ac[2][2][1], ad; signed char ae[3]; struct { signed char af; signed long ag, ah; signed long ai, aj; unsigned short ak; unsigned char al; signed short am; }; signed char an; unsigned short ao, ap; } aq[2]; struct { union { signed char ar; unsigned long as, at; signed long long au[3], av[1][3][1]; signed char aw; unsigned short ax; int ay, az, ba; }; struct { unsigned short bb; unsigned bc, bd[1][1]; }; struct { unsigned char be; unsigned short bf[3][3][3]; int bg[2][2], bh[1]; signed long long bi, bj, bk; }; } bl, bm, bn; signed short bo; struct { struct { unsigned short bp; unsigned long bq[2][3][3], br[2][3]; int bs; unsigned char bt, bu, bv; unsigned char bw; }; union { signed char bx; unsigned by; }; union { int bz; signed char ca, cb; unsigned short cc, cd; unsigned short ce; signed char cf[2][2], cg, ch; }; struct { signed short ci, cj, ck; signed char cl[3]; int cm; unsigned char cn; signed short co; unsigned short cp[1][3], cq, cr; }; unsigned long long cs, ct; struct { signed short cu[1]; signed short cv; unsigned long cw[1], cx; signed char cy; } cz, da[3]; }; struct { union { unsigned short db[2], dc; unsigned char dd, de[3][2]; }; signed short df, dg, dh; }; }; struct { union { struct { unsigned char di; unsigned char dj; signed long dk, dl, dm; unsigned short dn; unsigned char dp, dq; }; union { unsigned long dr, ds[3][2][1][2]; signed short dt, du; signed long long dv; }; }; union { struct { unsigned char dw; unsigned short dx, dy; signed char dz; }; union { signed char ea; unsigned short eb; }; union { signed char ec, ed; unsigned char ee; int ef[3][1]; signed short eg; signed short eh[3][3]; unsigned ei, ej; }; struct { unsigned ek, el[3][3]; unsigned short em, en; } eo; struct { signed char ep; unsigned char eq, er[2][3]; signed long es[2][3]; signed short et, eu; } ev; }; unsigned char ew[2], ex; struct { struct { signed char ey[1][1]; signed long long ez, fa[1][2]; unsigned short fb; unsigned long fc, fd; unsigned char fe[1]; }; signed short ff, fg[3][1]; }; unsigned char fh; struct { struct { unsigned char fi; int fj, fk; }; unsigned char fl; signed char fm; union { unsigned short fn; unsigned char fo; unsigned short fp[2], fq[1]; unsigned long long fr; }; signed char fs[3][1][1], ft; struct { unsigned char fu; signed char fv; unsigned short fw[2]; int fx; }; }; }; }; unsigned char fy; unsigned long long fz; union { struct { signed char ga; union { union { unsigned long long gb, gc, gd; signed short ge; }; union { signed char gf; signed char gg; unsigned short gh; int gi, gj[3][1], gk; } gl; unsigned char gm; struct { signed short gn; unsigned char go, gp; unsigned short gq[3][1]; unsigned short gr; unsigned long long gs; }; union { unsigned char gt; signed short gu; signed short gv; unsigned short gw, gx[2][1]; signed char gy, gz[1]; } ha; struct { signed char hb[3][1]; unsigned short hc, hd; }; }; union { unsigned long he[1][3]; struct { unsigned char hf, hg; unsigned char hh; }; union { unsigned short hi; unsigned char hj; }; unsigned char hk, hl; } hm; unsigned char hn, ho; }; unsigned long hp, hq; struct { struct { signed char hr, hs, ht; union { unsigned char hu[2]; unsigned char hv; signed short hw[2]; } hx[2]; union { unsigned char hy; signed short hz, ia[3][2][3][2]; int ib, ic; signed long long id, ie; unsigned char ig; unsigned char ih, ii; }; signed char ij, ik, il[2][1]; }; signed long im; unsigned char in, io, ip; struct { struct { signed short iq[3][1]; signed short ir[3][1]; unsigned long long is; unsigned char it, iu[3], iv[1][1][1]; unsigned long long iw, ix; unsigned short iy, iz; }; struct { signed long long ja; signed char jb[1][3][3][2]; unsigned jc; unsigned short jd; }; unsigned short je; } jf; }; }; unsigned char jg[1][3]; }; int jh[2]; } test; Convert-Binary-C-0.76/tests/compiler/gcc-vax.bin0000644000175000001440000000433411550664622020214 0ustar mhxusersbe 58 1d 6c 15 db 80 7b b1 d5 77 94 89 07 c5 9a e8 00 00 00 70 5a ec 10 dc f8 d9 41 35 19 4d ba 0f 46 4a 91 db 38 cd 00 37 17 00 00 dd 00 24 8b 85 4b 00 00 31 23 40 8a 12 81 d0 f1 b0 00 00 00 9e 68 7d 8a 3c d7 59 9e 25 94 28 3f ed 37 d1 c6 9d d2 9f 00 9e 1b 00 00 8b 00 fc 0a bd 98 00 00 9d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97 5e 00 00 74 07 1f 5a 16 bc 63 64 4b 00 f1 72 bb c0 e7 60 03 8a ea 55 d2 33 cf fe e7 0c b9 2c d0 28 98 b4 9d 40 0a 07 e5 f4 66 1f bd 8d e7 f7 f5 ed 9b 4d cf 16 41 4d fa 75 78 35 7b ea 1d 1d fe d3 d3 75 80 fb 90 80 69 99 04 b1 a1 f4 a1 56 2a ba eb 86 2c d7 e7 ae b8 73 98 7d 29 69 61 81 a5 15 ee 02 a6 aa c2 ab 79 26 c8 e5 ae 62 7a be 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 24 04 00 00 51 64 41 e7 d4 60 20 b4 2b 00 7b 84 7e 2b cf b5 76 cd f0 43 d9 7f ce b6 93 74 02 0e b5 32 64 9f 15 05 31 2f 6e 1c ef 9b 2a bd b8 c8 71 33 97 e9 95 17 cf 5d ff 5e db 69 17 84 f5 42 78 d0 e1 c3 2f d0 90 a4 da a7 a0 7b 55 b6 fa ba 03 cb 04 be 7d f8 91 8f 69 c9 d3 4a 96 ff 51 dc c7 0f 4a 73 93 51 67 61 21 34 67 ce f1 5c 63 07 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5b 71 00 00 13 66 72 8a c5 04 21 f7 2d 00 03 ef 12 80 f3 d9 24 80 13 e1 e9 90 0d b2 87 76 90 ed 6a ca 99 2a 0d a5 6a 8b b5 36 0f cd e5 a6 07 8c b7 dd 6a 5e 69 14 59 df ee 0c e3 24 d6 8b d5 49 fc 9f 7f 7f 95 80 e8 e7 15 5c 4f 6e 96 98 54 06 2e 82 4a 55 fc 49 9d f0 e1 15 79 d3 3a 43 b8 2a 8b 01 9f 3f 1d fd 3a c1 2c 2a 9a c4 30 09 b6 28 dd b1 00 00 d3 16 00 00 8d 32 aa 35 52 9f d8 79 b2 6e ca 5e d8 e8 f5 22 7c 12 12 86 0f 8f d2 74 cb 65 1c f2 7a 50 9b 1e c0 74 82 a5 57 bb 4f a1 6e 14 88 59 04 7b 49 19 81 57 7f 42 58 7d 0b 6e 3d 7a 6b 2b 60 d5 8b 9a 3c 09 36 21 43 5b 2f 5c c5 09 ef 1a d9 1f 8b cc 72 3d ad e3 95 94 42 0c ff 20 25 da 1a ff a4 34 e4 2e 73 cb 9a ea 28 d3 4e 00 00 00 bb c0 85 0f 8a df 48 54 3a 76 fb ac d3 00 00 00 15 f4 43 5f c0 00 74 b5 39 71 c5 a5 1e 5f d5 c4 14 33 00 00 4e 27 c6 92 72 38 55 3b 80 ec 20 1f 46 3c 20 66 33 d6 64 75 c8 f4 c3 32 9f d1 b8 2f 6e 00 00 00 66 5f ea de c8 b2 60 d9 06 92 55 f2 45 00 00 00 02 0d 90 ff 3a cc 0f d1 c6 3c ae ff 3c 00 00 00 6f ec 43 6d 21 fb 5c b5 7c 6f 8f e3 65 00 00 00 9c c9 e7 55 00 00 d1 59 34 29 ee aa d8 da f3 e0 53 a9 45 1f Convert-Binary-C-0.76/tests/compiler/gcc-vax.cfg0000644000175000001440000001163511550664622020205 0ustar mhxusers%config = ( 'Define' => [ '__CHAR_BIT__=8', '__DBL_DIG__=16', '__DBL_EPSILON__=2.77555756156289135e-17', '__DBL_MANT_DIG__=56', '__DBL_MAX_10_EXP__=38', '__DBL_MAX_EXP__=127', '__DBL_MAX__=1.70141183460469229e+38', '__DBL_MIN_10_EXP__=(-38)', '__DBL_MIN_EXP__=(-127)', '__DBL_MIN__=2.93873587705571877e-39', '__DECIMAL_DIG__=18', '__FLT_DIG__=6', '__FLT_EPSILON__=1.19209290e-7F', '__FLT_EVAL_METHOD__=0', '__FLT_MANT_DIG__=24', '__FLT_MAX_10_EXP__=38', '__FLT_MAX_EXP__=127', '__FLT_MAX__=1.70141173e+38F', '__FLT_MIN_10_EXP__=(-38)', '__FLT_MIN_EXP__=(-127)', '__FLT_MIN__=2.93873588e-39F', '__FLT_RADIX__=2', '__GNUC_MINOR__=3', '__GNUC_PATCHLEVEL__=0', '__GNUC__=3', '__INT_MAX__=2147483647', '__LDBL_DIG__=16', '__LDBL_EPSILON__=2.77555756156289135e-17L', '__LDBL_MANT_DIG__=56', '__LDBL_MAX_10_EXP__=38', '__LDBL_MAX_EXP__=127', '__LDBL_MAX__=1.70141183460469229e+38L', '__LDBL_MIN_10_EXP__=(-38)', '__LDBL_MIN_EXP__=(-127)', '__LDBL_MIN__=2.93873587705571877e-39L', '__LONG_LONG_MAX__=9223372036854775807LL', '__LONG_MAX__=2147483647L', '__NO_INLINE__=1', '__PTRDIFF_TYPE__=int', '__SCHAR_MAX__=127', '__SHRT_MAX__=32767', '__SIZE_TYPE__=unsigned int', '__WCHAR_TYPE__=unsigned int', '__WINT_TYPE__=unsigned int', '__bsd4_2=1', '__bsd4_2__=1', '__builtin_va_list=int', '__ultrix=1', '__ultrix__=1', '__unix=1', '__unix__=1', '__vax=1', '__vax__=1', 'bsd4_2=1', 'ultrix=1', 'unix=1', 'vax=1' ], 'ByteOrder' => 'LittleEndian', 'LongSize' => 4, 'IntSize' => 4, 'ShortSize' => 2, 'Assert' => [ 'cpu(vax)', 'machine(vax)', 'system(bsd)', 'system(unix)' ], 'UnsignedChars' => 0, 'DoubleSize' => 8, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'DisabledKeywords' => [ 'restrict' ], 'LongLongSize' => 8, 'Alignment' => 4, 'LongDoubleSize' => 8, 'KeywordMap' => { '__imag__' => undef, '__inline' => 'inline', '__volatile' => 'volatile', '__complex__' => undef, '__real' => undef, '__imag' => undef, '__restrict' => 'restrict', '__inline__' => 'inline', '__asm' => 'asm', '__bounded__' => undef, '__volatile__' => 'volatile', '__unbounded' => undef, '__extension__' => undef, '__signed' => 'signed', '__unbounded__' => undef, '__const' => 'const', '__const__' => 'const', '__signed__' => 'signed', '__bounded' => undef, '__real__' => undef, '__complex' => undef, '__restrict__' => 'restrict', '__asm__' => 'asm' }, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 ); Convert-Binary-C-0.76/tests/compiler/gcc-vax.dat0000644000175000001440000003612411550664622020216 0ustar mhxusers$data = { 'eb' => 33042, 'fx' => 1453454497, 'da' => [ { 'cv' => -8470, 'cx' => 4065694214, 'cw' => [ 3646993096 ], 'cu' => [ 24422 ], 'cy' => 69 }, { 'cv' => -112, 'cx' => 4289608902, 'cw' => [ 3507473466 ], 'cu' => [ 3330 ], 'cy' => 60 }, { 'cv' => 27971, 'cx' => 3817828220, 'cw' => [ 3042769697 ], 'cu' => [ -5009 ], 'cy' => 101 } ], 'hn' => 221, 'gl' => { 'gg' => -119, 'gj' => [ [ '-1698363511' ], [ 2139717096 ], [ 283925104 ] ], 'gi' => '-1698363511', 'gk' => '-1698363511', 'gh' => 1929, 'gf' => -119 }, 'ci' => -8310, 'fe' => [ 210 ], 'hb' => [ [ -119 ], [ 7 ], [ -59 ] ], 'fc' => 1625800891, 'dk' => '-1698363511', 'co' => -19084, 'hs' => -43, 'br' => [ [ 451873221, 3431669721, 3819781490 ], [ 205690005, 3659866367, 883228442 ] ], 'aq' => [ { 'ah' => 1104804060, 'ao' => 35620, 'af' => -24, 'ac' => [ [ [ -79 ], [ -43 ] ], [ [ 119 ], [ -108 ] ] ], 'al' => 205, 'ag' => 283925104, 'ak' => 14555, 'ad' => -119, 'am' => 5943, 'ae' => [ 7, -59, -102 ], 'ai' => '-1169352395', 'aj' => '-1857403377', 'ap' => 19333, 'an' => -35 }, { 'ah' => '-1638279364', 'ao' => 2812, 'af' => -80, 'ac' => [ [ [ 49 ], [ 35 ] ], [ [ 64 ], [ -118 ] ] ], 'al' => 159, 'ag' => '-1971492706', 'ak' => 53917, 'ad' => 18, 'am' => 7070, 'ae' => [ -127, -48, -15 ], 'ai' => 1059623973, 'aj' => -959367187, 'ap' => 39101, 'an' => -117 } ], 'hd' => 32649, 'bo' => -20003, 'hm' => { 'hi' => 17935, 'he' => [ [ 2437563919, 3519887579, 2257524535 ] ], 'hg' => 70, 'hj' => 15, 'hl' => 15, 'hf' => 15, 'hh' => 74, 'hk' => 15 }, 'ck' => 30266, 'bv' => 40, 'cs' => '4275385485998040910', 'gq' => [ [ 32232 ], [ 32649 ], [ 23152 ] ], 'ge' => 1929, 'fv' => -5, 'dm' => 283925104, 'bu' => 234, 'gr' => 4332, 'dh' => -21778, 'ct' => '7358948062991019136', 'hy' => 112, 'ga' => -79, 'gb' => '9190014952608696201', 'bt' => 154, 'hx' => [ { 'hv' => 137, 'hw' => [ 1929, -25915 ], 'hu' => [ 137, 7 ] }, { 'hv' => 232, 'hw' => [ 32232, 32649 ], 'hu' => [ 232, 125 ] } ], 'hp' => 2490881457, 'fa' => [ [ '5797081148219157812', '7233832230674433908' ] ], 'dv' => '-7294415733973854799', 'fh' => 157, 'dn' => 63708, 'il' => [ [ 73 ], [ -43 ] ], 'eg' => -32494, 'dx' => 61904, 'ho' => 238, 'cb' => -69, 'fr' => '2098090816323483130', 'ey' => [ [ -95 ] ], 'in' => 101, 'id' => '4745097306471946864', 'ic' => 283925104, 'ft' => 117, 'ff' => 3303, 'dd' => 156, 'by' => 3177714254, 'fi' => 229, 'ab' => 2072042261, 'gs' => '13424413780790081756', 'fj' => -135819843, 'dq' => 65, 'cg' => -69, 'ei' => 4056973586, 'cj' => 21576, 'ii' => 112, 'ha' => { 'gx' => [ [ 1929 ], [ 39621 ] ], 'gw' => 1929, 'gt' => 137, 'gy' => -119, 'gv' => 1929, 'gz' => [ -119 ], 'gu' => 1929 }, 'fp' => [ 30202, 13688 ], 'fb' => 587, 'ew' => [ 101, 229 ], 'fq' => [ 30202 ], 'fn' => 30202, 'ee' => 18, 'cd' => 49339, 'fl' => 207, 'dz' => 67, 'fy' => 177, 'eo' => { 'en' => 38468, 'em' => 6301, 'ek' => 4056973586, 'el' => [ [ 54741424, 2323474590, 2656687932 ], [ 1059623973, 3335600109, 1100993181 ], [ 569449374, 184327563, 3578370237 ] ] }, 'cp' => [ [ 28985, 42437, 24350 ] ], 'cm' => 1598288917, 'go' => 197, 'ik' => -104, 'bw' => 211, 'gd' => '9190014952608696201', 'bq' => [ [ [ 900346509, 2044239698, 1590324914 ], [ 586541272, 2249331324, 1959956239 ], [ 4061947339, 513495162, 2776790208 ] ], [ [ 2706357079, 1502090350, 424246020 ], [ 1115641729, 1846246744, 728463933 ], [ 2592855392, 557189436, 1546607427 ] ] ], 'jg' => [ [ 177, 213, 119 ] ], 'db' => [ 51612, 21991 ], 'cn' => 192, 'du' => -10831, 'ia' => [ [ [ [ 23152, 4332 ], [ -1828, 16857 ], [ 6453, -17843 ] ], [ [ 17935, -28342 ], [ 14555, -11827 ], [ 5943, -31089 ] ] ], [ [ [ -4387, -29916 ], [ 19333, 30288 ], [ 9009, -30144 ] ], [ [ -32494, -3632 ], [ 18864, 835 ], [ 26782, -30083 ] ] ], [ [ [ -10436, -24999 ], [ -27611, 16168 ], [ 14317, -14639 ] ], [ [ -11619, 16799 ], [ 7070, 8689 ], [ -25205, 2812 ] ] ] ], 'cr' => 13076, 'df' => 22993, 'ec' => 18, 'bm' => { 'bd' => [ [ 3022020820 ] ], 'bf' => [ [ [ 33915, 11134, 46543 ], [ 52598, 17392, 32729 ], [ 46798, 29843, 3586 ] ], [ [ 12981, 40804, 1301 ], [ 12081, 7278, 39919 ], [ 48426, 51384, 13169 ] ], [ [ 59799, 6037, 24015 ], [ 24319, 27099, 33815 ], [ 17141, 53368, 50145 ] ] ], 'av' => [ [ [ '-5917589509072090794' ], [ '-3517184698816979796' ], [ '9184791393365892276' ] ] ], 'ba' => '-1188165290', 'ax' => 2390, 'au' => [ '-5917589509072090794', '-3517184698816979796', '9184791393365892276' ], 'bh' => [ '-1886259075' ], 'bb' => 1060, 'az' => '-1188165290', 'at' => 3106802006, 'bc' => 3879822417, 'bi' => '-2570992891286271639', 'bg' => [ [ '-1534013393', 2074126298 ], [ '-1157974443', '-1106982141' ] ], 'aw' => 86, 'bj' => '7018668238016483271', 'ay' => '-1188165290', 'ar' => 86, 'bk' => '532371374579594273', 'as' => 3106802006, 'be' => 43 }, 'aa' => 1813862590, 'ez' => '3958983604041784051', 'bz' => 260423867, 'dw' => 18, 'ih' => 112, 'fw' => [ 32912, 39273 ], 'eh' => [ [ -32494, -3632, 18864 ], [ 835, 26782, -30083 ], [ -10436, -24999, -27611 ] ], 'fk' => 1302064629, 'di' => 177, 'ip' => 237, 'ht' => 119, 'ea' => 18, 'bs' => -881643804, 'gm' => 137, 'ch' => -69, 'gc' => '9190014952608696201', 'fd' => 1441434115, 'dr' => 2490881457, 'ca' => -69, 'ej' => 4056973586, 'dg' => 10548, 'ds' => [ [ [ [ 2490881457, 2596603785 ] ], [ [ 2139717096, 283925104 ] ] ], [ [ [ 1104804060, 3125614901 ] ], [ [ 2437563919, 3519887579 ] ] ], [ [ [ 2257524535, 2334453469 ] ], [ [ 1984973701, 2319459121 ] ] ] ], 'hq' => 2490881457, 'ef' => [ [ -237993710 ], [ 54741424 ], [ '-1971492706' ] ], 'fu' => 128, 'jh' => [ -520889640, 524659027 ], 'bx' => 78, 'fo' => 250, 'cc' => 49339, 'io' => 229, 'fs' => [ [ [ -2 ] ], [ [ -45 ] ], [ [ -45 ] ] ], 'ie' => '4745097306471946864', 'dc' => 51612, 'cf' => [ [ -69, -64 ], [ -123, 15 ] ], 'im' => '-1773922147', 'cz' => { 'cv' => 30052, 'cx' => 800641439, 'cw' => [ 851702984 ], 'cu' => [ -10701 ], 'cy' => 110 }, 'hc' => 32232, 'hr' => -79, 'de' => [ [ 156, 201 ], [ 231, 85 ], [ 224, 105 ] ], 'ed' => 18, 'gn' => 1929, 'dl' => 2139717096, 'bp' => 5843, 'fm' => 22, 'dp' => 217, 'cl' => [ -5, -84, -45 ], 'dt' => -10831, 'hz' => 23152, 'ce' => 49339, 'dy' => 18864, 'bn' => { 'bd' => [ [ 4146136261 ] ], 'bf' => [ [ [ 61187, 32786, 55795 ], [ 32804, 57619, 37097 ], [ 45581, 30343, 60816 ] ], [ [ 51818, 10905, 42253 ], [ 35690, 14005, 52495 ], [ 42725, 35847, 56759 ] ], [ [ 24170, 5225, 57177 ], [ 3310, 9443, 35798 ], [ 18901, 40956, 32639 ] ] ], 'av' => [ [ [ '7551698136708176645' ], [ '3005342382823534582' ], [ '-4550755308030725155' ] ] ], 'ba' => -646423803, 'ax' => 23301, 'au' => [ '7551698136708176645', '3005342382823534582', '-4550755308030725155' ], 'bh' => [ -258127364 ], 'bb' => 29019, 'az' => -646423803, 'at' => 3648543493, 'bc' => 2322753043, 'bi' => '3078284265242826209', 'bg' => [ [ -404193131, 1850694677 ], [ 106207382, 1430946350 ] ], 'aw' => 5, 'bj' => '-4523024573676977781', 'ay' => -646423803, 'ar' => 5, 'bk' => '2933542312339974700', 'as' => 3648543493, 'be' => 45 }, 'ev' => { 'et' => -25205, 'er' => [ [ 208, 241, 176 ], [ 73, 67, 3 ] ], 'ep' => 18, 'eu' => 2812, 'es' => [ [ '-1971492706', '-1638279364', 1059623973 ], [ -959367187, 1100993181, 569449374 ] ], 'eq' => 129 }, 'ib' => 283925104, 'cq' => 50389, 'gp' => 154, 'ex' => 237, 'ig' => 112, 'fz' => '11152328339735696817', 'dj' => 213, 'jf' => { 'jc' => 488499835, 'it' => 116, 'jb' => [ [ [ [ -27, -12 ], [ 102, 31 ], [ -67, -115 ] ], [ [ -25, -9 ], [ -11, -19 ], [ -101, 77 ] ], [ [ -49, 22 ], [ 65, 77 ], [ -6, 117 ] ] ] ], 'je' => 64384, 'iz' => 11449, 'is' => '5797081148219157812', 'iu' => [ 7, 31, 90 ], 'iv' => [ [ [ 22 ] ] ], 'iy' => 3303, 'ir' => [ [ -16767 ], [ 8860 ], [ 14065 ] ], 'ja' => '507288954116516048', 'iw' => '6982761658581058123', 'iq' => [ [ 14497 ], [ -2856 ], [ -25869 ] ], 'jd' => 54270, 'ix' => '18360951184290384387' }, 'ij' => -67, 'fg' => [ [ 11449 ], [ 10448 ], [ -19304 ] ], 'bl' => { 'bd' => [ [ 1684257814 ] ], 'bf' => [ [ [ 29425, 49339, 24807 ], [ 35331, 21994, 13266 ], [ 65231, 3303, 11449 ] ], [ [ 10448, 46232, 16541 ], [ 1802, 62693, 8038 ], [ 36285, 63463, 60917 ] ], [ [ 19867, 5839, 19777 ], [ 30202, 13688, 60027 ], [ 7453, 54270, 30163 ] ] ], 'av' => [ [ [ '4894820594497099933' ], [ '-4719320561932027743' ], [ '988378714258612892' ] ] ], 'ba' => '-1773922147', 'ax' => 6301, 'au' => [ '4894820594497099933', '-4719320561932027743', '988378714258612892' ], 'bh' => [ '-1360537812' ], 'bb' => 24215, 'az' => '-1773922147', 'at' => 2521045149, 'bc' => 1511982964, 'bi' => '-9123895743154195528', 'bg' => [ [ '-2137982080', '-1325098647' ], [ 1453454497, '-2031371734' ] ], 'aw' => -99, 'bj' => '-6070101717751556699', 'ay' => '-1773922147', 'ar' => -99, 'bk' => '-4721352756025612679', 'as' => 2521045149, 'be' => 75 } }; Convert-Binary-C-0.76/tests/compiler/gcc-arm.bin0000644000175000001440000000435011550664622020173 0ustar mhxusersbe 58 1d 6c 15 db 80 7b b1 d5 77 94 89 07 c5 9a e8 00 00 00 70 5a ec 10 dc f8 d9 41 35 19 4d ba 0f 46 4a 91 db 38 cd 00 37 17 00 00 dd 00 24 8b 85 4b 00 00 31 23 40 8a 12 81 d0 f1 b0 00 00 00 9e 68 7d 8a 3c d7 59 9e 25 94 28 3f ed 37 d1 c6 9d d2 9f 00 9e 1b 00 00 8b 00 fc 0a bd 98 00 00 9d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 97 5e 00 00 74 07 1f 5a 16 bc 63 64 4b 00 f1 72 bb c0 e7 60 03 8a ea 55 d2 33 cf fe e7 0c b9 2c d0 28 98 b4 9d 40 0a 07 e5 f4 66 1f bd 8d e7 f7 f5 ed 9b 4d cf 16 41 4d fa 75 78 35 7b ea 1d 1d fe d3 d3 75 80 fb 90 80 69 99 04 b1 a1 f4 a1 56 2a ba eb 86 2c d7 e7 ae b8 73 98 7d 29 69 61 81 a5 15 ee 02 a6 aa c2 ab 79 26 c8 e5 ae 62 7a be 56 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 24 04 00 00 51 64 41 e7 d4 60 20 b4 2b 00 7b 84 7e 2b cf b5 76 cd f0 43 d9 7f ce b6 93 74 02 0e b5 32 64 9f 15 05 31 2f 6e 1c ef 9b 2a bd b8 c8 71 33 97 e9 95 17 cf 5d ff 5e db 69 17 84 f5 42 78 d0 e1 c3 2f d0 90 a4 da a7 a0 7b 55 b6 fa ba 03 cb 04 be 7d f8 91 8f 69 c9 d3 4a 96 ff 51 dc c7 0f 4a 73 93 51 67 61 21 34 67 ce f1 5c 63 07 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5b 71 00 00 13 66 72 8a c5 04 21 f7 2d 00 03 ef 12 80 f3 d9 24 80 13 e1 e9 90 0d b2 87 76 90 ed 6a ca 99 2a 0d a5 6a 8b b5 36 0f cd e5 a6 07 8c b7 dd 6a 5e 69 14 59 df ee 0c e3 24 d6 8b d5 49 fc 9f 7f 7f 95 80 e8 e7 15 5c 4f 6e 96 98 54 06 2e 82 4a 55 fc 49 9d f0 e1 15 79 d3 3a 43 b8 2a 8b 01 9f 3f 1d fd 3a c1 2c 2a 9a c4 30 09 b6 28 dd b1 00 00 d3 16 00 00 8d 32 aa 35 52 9f d8 79 b2 6e ca 5e d8 e8 f5 22 7c 12 12 86 0f 8f d2 74 cb 65 1c f2 7a 50 9b 1e c0 74 82 a5 57 bb 4f a1 6e 14 88 59 04 7b 49 19 81 57 7f 42 58 7d 0b 6e 3d 7a 6b 2b 60 d5 8b 9a 3c 09 36 21 43 5b 2f 5c c5 09 ef 1a d9 1f 8b cc 72 3d ad e3 95 94 42 0c ff 20 25 da 1a ff a4 34 e4 2e 73 cb 9a ea 28 d3 4e 00 00 00 bb c0 85 0f 8a df 48 54 3a 76 fb ac d3 00 00 00 15 f4 43 5f c0 00 74 b5 39 71 c5 a5 1e 5f d5 c4 14 33 00 00 4e 27 c6 92 72 38 55 3b 80 ec 20 1f 46 3c 20 66 33 d6 64 75 c8 f4 c3 32 9f d1 b8 2f 6e 00 00 00 66 5f ea de c8 b2 60 d9 06 92 55 f2 45 00 00 00 02 0d 90 ff 3a cc 0f d1 c6 3c ae ff 3c 00 00 00 6f ec 43 6d 21 fb 5c b5 7c 6f 8f e3 65 00 00 00 9c c9 e7 55 00 00 00 00 34 29 ee aa d8 da 00 00 53 a9 45 1f 8c 97 44 64 Convert-Binary-C-0.76/tests/compiler/gcc-arm.cfg0000644000175000001440000001100511550664622020155 0ustar mhxusers%config = ( 'Define' => [ '__APCS_32__=1', '__ARMEL__=1', '__ARM_ARCH_4T__=1', '__CHAR_BIT__=8', '__CHAR_UNSIGNED__=1', '__DBL_DIG__=15', '__DBL_EPSILON__=2.2204460492503131e-16', '__DBL_MANT_DIG__=53', '__DBL_MAX_10_EXP__=308', '__DBL_MAX_EXP__=1024', '__DBL_MAX__=1.7976931348623157e+308', '__DBL_MIN_10_EXP__=(-307)', '__DBL_MIN_EXP__=(-1021)', '__DBL_MIN__=2.2250738585072014e-308', '__DECIMAL_DIG__=17', '__ELF__=1', '__FLT_DIG__=6', '__FLT_EPSILON__=1.19209290e-7F', '__FLT_EVAL_METHOD__=0', '__FLT_MANT_DIG__=24', '__FLT_MAX_10_EXP__=38', '__FLT_MAX_EXP__=128', '__FLT_MAX__=3.40282347e+38F', '__FLT_MIN_10_EXP__=(-37)', '__FLT_MIN_EXP__=(-125)', '__FLT_MIN__=1.17549435e-38F', '__FLT_RADIX__=2', '__GNUC_MINOR__=4', '__GNUC_PATCHLEVEL__=0', '__GNUC__=3', '__INT_MAX__=2147483647', '__LDBL_DIG__=15', '__LDBL_EPSILON__=2.2204460492503131e-16L', '__LDBL_MANT_DIG__=53', '__LDBL_MAX_10_EXP__=308', '__LDBL_MAX_EXP__=1024', '__LDBL_MAX__=1.7976931348623157e+308L', '__LDBL_MIN_10_EXP__=(-307)', '__LDBL_MIN_EXP__=(-1021)', '__LDBL_MIN__=2.2250738585072014e-308L', '__LONG_LONG_MAX__=9223372036854775807LL', '__LONG_MAX__=2147483647L', '__NO_INLINE__=1', '__PTRDIFF_TYPE__=long int', '__SCHAR_MAX__=127', '__SHRT_MAX__=32767', '__SIZE_TYPE__=long unsigned int', '__SOFTFP__=1', '__USES_INITFINI__=1', '__WCHAR_TYPE__=int', '__WINT_TYPE__=unsigned int', '__arm__=1', '__builtin_va_list=int' ], 'ByteOrder' => 'LittleEndian', 'LongSize' => 4, 'IntSize' => 4, 'ShortSize' => 2, 'Assert' => [ 'cpu(arm)', 'machine(arm)' ], 'UnsignedChars' => 1, 'DoubleSize' => 8, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'DisabledKeywords' => [ 'restrict' ], 'LongLongSize' => 8, 'Alignment' => 4, 'LongDoubleSize' => 8, 'KeywordMap' => { '__imag__' => undef, '__inline' => 'inline', '__volatile' => 'volatile', '__complex__' => undef, '__real' => undef, '__imag' => undef, '__restrict' => 'restrict', '__inline__' => 'inline', '__asm' => 'asm', '__volatile__' => 'volatile', '__extension__' => undef, '__signed' => 'signed', '__const' => 'const', '__const__' => 'const', '__signed__' => 'signed', '__real__' => undef, '__complex' => undef, '__restrict__' => 'restrict', '__asm__' => 'asm' }, 'HasCPPComments' => 1, 'CompoundAlignment' => 4 ); Convert-Binary-C-0.76/tests/compiler/gcc-arm.dat0000644000175000001440000003612411550664622020177 0ustar mhxusers$data = { 'eb' => 33042, 'fx' => 1453454497, 'da' => [ { 'cv' => -8470, 'cx' => 4065694214, 'cw' => [ 3646993096 ], 'cu' => [ 24422 ], 'cy' => 69 }, { 'cv' => -112, 'cx' => 4289608902, 'cw' => [ 3507473466 ], 'cu' => [ 3330 ], 'cy' => 60 }, { 'cv' => 27971, 'cx' => 3817828220, 'cw' => [ 3042769697 ], 'cu' => [ -5009 ], 'cy' => 101 } ], 'hn' => 221, 'gl' => { 'gg' => -119, 'gj' => [ [ '-1698363511' ], [ 2139717096 ], [ 283925104 ] ], 'gi' => '-1698363511', 'gk' => '-1698363511', 'gh' => 1929, 'gf' => -119 }, 'ci' => -8310, 'fe' => [ 210 ], 'hb' => [ [ -119 ], [ 7 ], [ -59 ] ], 'fc' => 1625800891, 'dk' => '-1698363511', 'co' => -19084, 'hs' => -43, 'br' => [ [ 451873221, 3431669721, 3819781490 ], [ 205690005, 3659866367, 883228442 ] ], 'aq' => [ { 'ah' => 1104804060, 'ao' => 35620, 'af' => -24, 'ac' => [ [ [ -79 ], [ -43 ] ], [ [ 119 ], [ -108 ] ] ], 'al' => 205, 'ag' => 283925104, 'ak' => 14555, 'ad' => -119, 'am' => 5943, 'ae' => [ 7, -59, -102 ], 'ai' => '-1169352395', 'aj' => '-1857403377', 'ap' => 19333, 'an' => -35 }, { 'ah' => '-1638279364', 'ao' => 2812, 'af' => -80, 'ac' => [ [ [ 49 ], [ 35 ] ], [ [ 64 ], [ -118 ] ] ], 'al' => 159, 'ag' => '-1971492706', 'ak' => 53917, 'ad' => 18, 'am' => 7070, 'ae' => [ -127, -48, -15 ], 'ai' => 1059623973, 'aj' => -959367187, 'ap' => 39101, 'an' => -117 } ], 'hd' => 32649, 'bo' => -20003, 'hm' => { 'hi' => 17935, 'he' => [ [ 2437563919, 3519887579, 2257524535 ] ], 'hg' => 70, 'hj' => 15, 'hl' => 15, 'hf' => 15, 'hh' => 74, 'hk' => 15 }, 'ck' => 30266, 'bv' => 40, 'cs' => '4275385485998040910', 'gq' => [ [ 32232 ], [ 32649 ], [ 23152 ] ], 'ge' => 1929, 'fv' => -5, 'dm' => 283925104, 'bu' => 234, 'gr' => 4332, 'dh' => -9512, 'ct' => '7358948062991019136', 'hy' => 112, 'ga' => -79, 'gb' => '9190014952608696201', 'bt' => 154, 'hx' => [ { 'hv' => 137, 'hw' => [ 1929, -25915 ], 'hu' => [ 137, 7 ] }, { 'hv' => 232, 'hw' => [ 32232, 32649 ], 'hu' => [ 232, 125 ] } ], 'hp' => 2490881457, 'fa' => [ [ '5797081148219157812', '7233832230674433908' ] ], 'dv' => '-7294415733973854799', 'fh' => 157, 'dn' => 63708, 'il' => [ [ 73 ], [ -43 ] ], 'eg' => -32494, 'dx' => 61904, 'ho' => 238, 'cb' => -69, 'fr' => '2098090816323483130', 'ey' => [ [ -95 ] ], 'in' => 101, 'id' => '4745097306471946864', 'ic' => 283925104, 'ft' => 117, 'ff' => 3303, 'dd' => 156, 'by' => 3177714254, 'fi' => 229, 'ab' => 2072042261, 'gs' => '13424413780790081756', 'fj' => -135819843, 'dq' => 65, 'cg' => -69, 'ei' => 4056973586, 'cj' => 21576, 'ii' => 112, 'ha' => { 'gx' => [ [ 1929 ], [ 39621 ] ], 'gw' => 1929, 'gt' => 137, 'gy' => -119, 'gv' => 1929, 'gz' => [ -119 ], 'gu' => 1929 }, 'fp' => [ 30202, 13688 ], 'fb' => 587, 'ew' => [ 101, 229 ], 'fq' => [ 30202 ], 'fn' => 30202, 'ee' => 18, 'cd' => 49339, 'fl' => 207, 'dz' => 67, 'fy' => 177, 'eo' => { 'en' => 38468, 'em' => 6301, 'ek' => 4056973586, 'el' => [ [ 54741424, 2323474590, 2656687932 ], [ 1059623973, 3335600109, 1100993181 ], [ 569449374, 184327563, 3578370237 ] ] }, 'cp' => [ [ 28985, 42437, 24350 ] ], 'cm' => 1598288917, 'go' => 197, 'ik' => -104, 'bw' => 211, 'gd' => '9190014952608696201', 'bq' => [ [ [ 900346509, 2044239698, 1590324914 ], [ 586541272, 2249331324, 1959956239 ], [ 4061947339, 513495162, 2776790208 ] ], [ [ 2706357079, 1502090350, 424246020 ], [ 1115641729, 1846246744, 728463933 ], [ 2592855392, 557189436, 1546607427 ] ] ], 'jg' => [ [ 177, 213, 119 ] ], 'db' => [ 51612, 21991 ], 'cn' => 192, 'du' => -10831, 'ia' => [ [ [ [ 23152, 4332 ], [ -1828, 16857 ], [ 6453, -17843 ] ], [ [ 17935, -28342 ], [ 14555, -11827 ], [ 5943, -31089 ] ] ], [ [ [ -4387, -29916 ], [ 19333, 30288 ], [ 9009, -30144 ] ], [ [ -32494, -3632 ], [ 18864, 835 ], [ 26782, -30083 ] ] ], [ [ [ -10436, -24999 ], [ -27611, 16168 ], [ 14317, -14639 ] ], [ [ -11619, 16799 ], [ 7070, 8689 ], [ -25205, 2812 ] ] ] ], 'cr' => 13076, 'df' => 10548, 'ec' => 18, 'bm' => { 'bd' => [ [ 3022020820 ] ], 'bf' => [ [ [ 33915, 11134, 46543 ], [ 52598, 17392, 32729 ], [ 46798, 29843, 3586 ] ], [ [ 12981, 40804, 1301 ], [ 12081, 7278, 39919 ], [ 48426, 51384, 13169 ] ], [ [ 59799, 6037, 24015 ], [ 24319, 27099, 33815 ], [ 17141, 53368, 50145 ] ] ], 'av' => [ [ [ '-5917589509072090794' ], [ '-3517184698816979796' ], [ '9184791393365892276' ] ] ], 'ba' => '-1188165290', 'ax' => 2390, 'au' => [ '-5917589509072090794', '-3517184698816979796', '9184791393365892276' ], 'bh' => [ '-1886259075' ], 'bb' => 1060, 'az' => '-1188165290', 'at' => 3106802006, 'bc' => 3879822417, 'bi' => '-2570992891286271639', 'bg' => [ [ '-1534013393', 2074126298 ], [ '-1157974443', '-1106982141' ] ], 'aw' => 86, 'bj' => '7018668238016483271', 'ay' => '-1188165290', 'ar' => 86, 'bk' => '532371374579594273', 'as' => 3106802006, 'be' => 43 }, 'aa' => 1813862590, 'ez' => '3958983604041784051', 'bz' => 260423867, 'dw' => 18, 'ih' => 112, 'fw' => [ 32912, 39273 ], 'eh' => [ [ -32494, -3632, 18864 ], [ 835, 26782, -30083 ], [ -10436, -24999, -27611 ] ], 'fk' => 1302064629, 'di' => 177, 'ip' => 237, 'ht' => 119, 'ea' => 18, 'bs' => -881643804, 'gm' => 137, 'ch' => -69, 'gc' => '9190014952608696201', 'fd' => 1441434115, 'dr' => 2490881457, 'ca' => -69, 'ej' => 4056973586, 'dg' => -21778, 'ds' => [ [ [ [ 2490881457, 2596603785 ] ], [ [ 2139717096, 283925104 ] ] ], [ [ [ 1104804060, 3125614901 ] ], [ [ 2437563919, 3519887579 ] ] ], [ [ [ 2257524535, 2334453469 ] ], [ [ 1984973701, 2319459121 ] ] ] ], 'hq' => 2490881457, 'ef' => [ [ -237993710 ], [ 54741424 ], [ '-1971492706' ] ], 'fu' => 128, 'jh' => [ 524659027, 1682216844 ], 'bx' => 78, 'fo' => 250, 'cc' => 49339, 'io' => 229, 'fs' => [ [ [ -2 ] ], [ [ -45 ] ], [ [ -45 ] ] ], 'ie' => '4745097306471946864', 'dc' => 51612, 'cf' => [ [ -69, -64 ], [ -123, 15 ] ], 'im' => '-1773922147', 'cz' => { 'cv' => 30052, 'cx' => 800641439, 'cw' => [ 851702984 ], 'cu' => [ -10701 ], 'cy' => 110 }, 'hc' => 32232, 'hr' => -79, 'de' => [ [ 156, 201 ], [ 231, 85 ], [ 224, 105 ] ], 'ed' => 18, 'gn' => 1929, 'dl' => 2139717096, 'bp' => 5843, 'fm' => 22, 'dp' => 217, 'cl' => [ -5, -84, -45 ], 'dt' => -10831, 'hz' => 23152, 'ce' => 49339, 'dy' => 18864, 'bn' => { 'bd' => [ [ 4146136261 ] ], 'bf' => [ [ [ 61187, 32786, 55795 ], [ 32804, 57619, 37097 ], [ 45581, 30343, 60816 ] ], [ [ 51818, 10905, 42253 ], [ 35690, 14005, 52495 ], [ 42725, 35847, 56759 ] ], [ [ 24170, 5225, 57177 ], [ 3310, 9443, 35798 ], [ 18901, 40956, 32639 ] ] ], 'av' => [ [ [ '7551698136708176645' ], [ '3005342382823534582' ], [ '-4550755308030725155' ] ] ], 'ba' => -646423803, 'ax' => 23301, 'au' => [ '7551698136708176645', '3005342382823534582', '-4550755308030725155' ], 'bh' => [ -258127364 ], 'bb' => 29019, 'az' => -646423803, 'at' => 3648543493, 'bc' => 2322753043, 'bi' => '3078284265242826209', 'bg' => [ [ -404193131, 1850694677 ], [ 106207382, 1430946350 ] ], 'aw' => 5, 'bj' => '-4523024573676977781', 'ay' => -646423803, 'ar' => 5, 'bk' => '2933542312339974700', 'as' => 3648543493, 'be' => 45 }, 'ev' => { 'et' => -25205, 'er' => [ [ 208, 241, 176 ], [ 73, 67, 3 ] ], 'ep' => 18, 'eu' => 2812, 'es' => [ [ '-1971492706', '-1638279364', 1059623973 ], [ -959367187, 1100993181, 569449374 ] ], 'eq' => 129 }, 'ib' => 283925104, 'cq' => 50389, 'gp' => 154, 'ex' => 237, 'ig' => 112, 'fz' => '11152328339735696817', 'dj' => 213, 'jf' => { 'jc' => 488499835, 'it' => 116, 'jb' => [ [ [ [ -27, -12 ], [ 102, 31 ], [ -67, -115 ] ], [ [ -25, -9 ], [ -11, -19 ], [ -101, 77 ] ], [ [ -49, 22 ], [ 65, 77 ], [ -6, 117 ] ] ] ], 'je' => 64384, 'iz' => 11449, 'is' => '5797081148219157812', 'iu' => [ 7, 31, 90 ], 'iv' => [ [ [ 22 ] ] ], 'iy' => 3303, 'ir' => [ [ -16767 ], [ 8860 ], [ 14065 ] ], 'ja' => '507288954116516048', 'iw' => '6982761658581058123', 'iq' => [ [ 14497 ], [ -2856 ], [ -25869 ] ], 'jd' => 54270, 'ix' => '18360951184290384387' }, 'ij' => -67, 'fg' => [ [ 11449 ], [ 10448 ], [ -19304 ] ], 'bl' => { 'bd' => [ [ 1684257814 ] ], 'bf' => [ [ [ 29425, 49339, 24807 ], [ 35331, 21994, 13266 ], [ 65231, 3303, 11449 ] ], [ [ 10448, 46232, 16541 ], [ 1802, 62693, 8038 ], [ 36285, 63463, 60917 ] ], [ [ 19867, 5839, 19777 ], [ 30202, 13688, 60027 ], [ 7453, 54270, 30163 ] ] ], 'av' => [ [ [ '4894820594497099933' ], [ '-4719320561932027743' ], [ '988378714258612892' ] ] ], 'ba' => '-1773922147', 'ax' => 6301, 'au' => [ '4894820594497099933', '-4719320561932027743', '988378714258612892' ], 'bh' => [ '-1360537812' ], 'bb' => 24215, 'az' => '-1773922147', 'at' => 2521045149, 'bc' => 1511982964, 'bi' => '-9123895743154195528', 'bg' => [ [ '-2137982080', '-1325098647' ], [ 1453454497, '-2031371734' ] ], 'aw' => -99, 'bj' => '-6070101717751556699', 'ay' => '-1773922147', 'ar' => -99, 'bk' => '-4721352756025612679', 'as' => 2521045149, 'be' => 75 } }; Convert-Binary-C-0.76/tests/238_byteorder.t0000644000175000001440000001141311550664621017133 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:26 +0200 $ # $Revision: 8 $ # $Source: /tests/238_byteorder.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 32; use Convert::Binary::C @ARGV; my $c = new Convert::Binary::C ByteOrder => 'LittleEndian', IntSize => 4, EnumSize => 4; eval { $c->parse(<clone->ByteOrder('LittleEndian'); my $c_be = $c->clone->ByteOrder('BigEndian'); my $data = $c->pack('test', $c->unpack('test', pack("C*", 1 .. $c->sizeof('test')))); my($t,$l,$b); # ----------------- $c->tag('bits', ByteOrder => 'BigEndian'); $c->tag('weekday', ByteOrder => 'BigEndian'); $c->tag('array', ByteOrder => 'BigEndian'); $t = $c->unpack('test', $data); $l = $c_le->unpack('test', $data); $b = $c_be->unpack('test', $data); is($t->{bits}{a}, $b->{bits}{a}, 'bits.a'); is($t->{bits}{x}, $l->{bits}{x}, 'bits.a'); is($t->{bits}{y}, $l->{bits}{y}, 'bits.a'); is($t->{bits}{b}, $b->{bits}{b}, 'bits.a'); is($t->{day}, $b->{day}, 'enum weekday'); is($c->pack('test', $t), $data, 'pack test'); $t = $c->unpack('array', $data); $b = $c_be->unpack('array', $data); is_deeply($t, $b, 'array'); # ----------------- for (qw( bits weekday array )) { $c->untag($_, 'ByteOrder'); } $t = $c->unpack('test', $data); $l = $c_le->unpack('test', $data); is($t->{bits}{a}, $l->{bits}{a}, 'bits.a'); is($t->{bits}{x}, $l->{bits}{x}, 'bits.a'); is($t->{bits}{y}, $l->{bits}{y}, 'bits.a'); is($t->{bits}{b}, $l->{bits}{b}, 'bits.a'); is($t->{day}, $l->{day}, 'enum weekday'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- $t = $c->unpack('array', $data); $l = $c_le->unpack('array', $data); is_deeply($t, $l, 'array'); is($c->pack('array', $t), $data, 'pack array'); # ----------------- $c->tag('test', ByteOrder => 'BigEndian'); $t = $c->unpack('test', $data); $b = $c_be->unpack('test', $data); delete $t->{bit}; delete $b->{bit}; is_deeply($t, $b, 'test'); # ----------------- $c->tag('test.bit', ByteOrder => 'LittleEndian'); $t = $c->unpack('test', $data); $b = $c_be->unpack('test', $data); $l = $c_le->unpack('test', $data); $b->{bit} = $l->{bit}; is_deeply($t, $b, 'test'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- $c->tag('test.bit.a', ByteOrder => 'BigEndian'); $t = $c->unpack('test', $data); $b = $c_be->unpack('test', $data); $l = $c_le->unpack('test', $data); $l->{bit}{a} = $b->{bit}{a}; $b->{bit} = $l->{bit}; is_deeply($t, $b, 'test'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- # test precedence of 'struct bits' over 'test.bit' $c->tag('bits', ByteOrder => 'BigEndian'); $t = $c->unpack('test', $data); $b = $c_be->unpack('test', $data); $l = $c_le->unpack('test', $data); $b->{bit}{y} = $l->{bit}{y}; $b->{bit}{z} = $l->{bit}{z}; is_deeply($t, $b, 'test'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- for (qw( test test.bit test.bit.a bits )) { $c->untag($_, 'ByteOrder'); } $t = $c->unpack('test', $data); $l = $c_le->unpack('test', $data); is_deeply($t, $l, 'test'); is($c->pack('test', $t), $data, 'pack test'); # ----------------- # test that hooks work correctly $b = $c_be->unpack('test', $data); my $phc = 0; my $uhc = 0; sub unpack_xxx { my $xxx = shift; is_deeply($xxx, $b->{yyy}, 'unpack_xxx'); $uhc++; return $xxx; } sub pack_xxx { my $xxx = shift; is_deeply($xxx, $b->{yyy}, 'pack_xxx'); $phc++; return $xxx; } $c->tag('xxx', ByteOrder => 'BigEndian', Hooks => { unpack => \&unpack_xxx, pack => \&pack_xxx }); $t = $c->unpack('test', $data); $l = $c_le->unpack('test', $data); $l->{yyy} = $b->{yyy}; is($uhc, 1, 'unpack hook calls'); is_deeply($t, $l, 'test'); is($c->pack('test', $t), $data, 'pack test'); is($phc, 1, 'pack hook calls'); # ----------------- # bitfields cannot be tagged eval { $c->tag('bits.y', ByteOrder => 'BigEndian'); }; like($@, qr/Cannot use 'ByteOrder' tag on bitfields/, 'tagging bitfield'); Convert-Binary-C-0.76/tests/703_bugs.t0000644000175000001440000000444211550664622016076 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:28 +0200 $ # $Revision: 8 $ # $Source: /tests/703_bugs.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 11; use Convert::Binary::C @ARGV; my $code = <new(ByteOrder => 'LittleEndian'); eval { $c1->parse($code); $c1->ByteOrder('BigEndian'); }; is($@, '', 'parse/configure'); my $c2 = Convert::Binary::C->new(ByteOrder => 'LittleEndian'); eval { $c2->ByteOrder('BigEndian'); $c2->parse($code); }; is($@, '', 'configure/parse'); my $data = pack "N", 0x60000003; for my $c ($c1, $c2) { my $t = $c->unpack('test', $data); is($t->{a}, 1, 'a'); is($t->{b}, 2, 'b'); is($t->{c}, 3, 'c'); } ### Ooops, the hash/list iterators were not reentrant... $c1->clean->parse(<<'ENDC'); struct hash { struct hash *a; struct hash *b; }; ENDC $c1->tag('hash', Hooks => { unpack_ptr => [\&unpack_hash, $c1->arg(qw(SELF TYPE DATA))] }); { my $i; sub unpack_hash { my($self, $type, $ptr) = @_; ++$i < 3 ? $self->unpack($type, $self->pack($type, { a => $i, b => 10 + $i })) : $ptr; } } { my @warn; local $SIG{__WARN__} = sub { push @warn, @_ }; my $dummy = $c1->unpack('hash', $c1->pack('hash', { a => 0, b => 10 })); is(scalar @warn, 0, 'hash/list iterator reentrancy'); ### An assertion in hook_call() could fail if a hook was called ### for a member that didn't actually exist in the hash. @warn = (); $dummy = $c1->unpack('hash', $c1->pack('hash', { a => 0 })); is(scalar @warn, 0, 'hook_call assertion failed'); } $c1->clean->parse(<<'ENDC'); typedef int foo_t; ENDC $c1->tag('foo_t', Hooks => { unpack => \&foo }); is($c1->unpack('foo_t', $c1->pack('foo_t', 42)), 42, 'unpack with moved stack'); sub blow_stack { return (1) x 2000; } sub foo { my @a = blow_stack(); $_[0]; } Convert-Binary-C-0.76/tests/206_parse.t0000644000175000001440000003602211550664620016243 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:22 +0200 $ # $Revision: 37 $ # $Source: /tests/206_parse.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 116 } my $CCCFG = require 'tests/include/config.pl'; #=================================================================== # create object (1 tests) #=================================================================== eval { $p = new Convert::Binary::C }; ok($@,'',"failed to create Convert::Binary::C object"); #=================================================================== # try to parse empty file / empty code (2 tests) #=================================================================== eval { $p->parse_file( 'tests/include/files/empty.h' ) }; ok($@,'',"failed to parse empty C-file"); eval { $p->parse( '' ) }; ok($@,'',"failed to parse empty C-code"); #=================================================================== # check that parse/parse_file return object references (4 tests) #=================================================================== $p = eval { Convert::Binary::C->new->parse_file( 'tests/include/files/empty.h' ) }; ok($@,'',"failed to create Convert::Binary::C object"); ok(ref $p, 'Convert::Binary::C', "object reference not blessed to Convert::Binary::C"); $p = eval { Convert::Binary::C->new->parse( '' ) }; ok($@,'',"failed to create Convert::Binary::C object"); ok(ref $p, 'Convert::Binary::C', "object reference not blessed to Convert::Binary::C"); #=================================================================== # create object (1 tests) #=================================================================== eval { $p = new Convert::Binary::C %$CCCFG, EnumSize => 0, ShortSize => 2, IntSize => 4, LongSize => 4, LongLongSize => 8, PointerSize => 4, FloatSize => 4, DoubleSize => 8, LongDoubleSize => 12; }; ok($@,'',"failed to create Convert::Binary::C object"); #=================================================================== # try to parse a file with lots of includes (1 test) #=================================================================== eval { $p->parse_file( 'tests/include/include.c' ); }; ok($@,'',"failed to parse C-file"); #=================================================================== # check if context is correctly evaluated (10 tests) # also do a quick check if the right stuff was parsed (12 tests) #=================================================================== @enums = $p->enum; @compounds = $p->compound; @structs = $p->struct; @unions = $p->union; @typedefs = $p->typedef; $s1 = @enums; $s2 = $p->enum; ok($s1,$s2,"context not evaluated correctly in 'enum'"); ok($s1,35,"incorrect number of enums"); $s1 = @compounds; $s2 = $p->compound; ok($s1,$s2,"context not evaluated correctly in 'compound'"); ok($s1,287,"incorrect number of compounds"); map { push @{$_->{type} eq 'union' ? \@r_unions : \@r_structs}, $_ } @compounds; $s1 = @structs; $s2 = $p->struct; ok($s1,$s2,"context not evaluated correctly in 'struct'"); $s2 = @r_structs; ok($s1,$s2,"direct/indirect counts differ in 'struct'"); ok($s1,200,"incorrect number of structs"); $s1 = @unions; $s2 = $p->union; ok($s1,$s2,"context not evaluated correctly in 'union'"); $s2 = @r_unions; ok($s1,$s2,"direct/indirect counts differ in 'union'"); ok($s1,87,"incorrect number of unions"); $s1 = @typedefs; $s2 = $p->typedef; ok($s1,$s2,"context not evaluated correctly in 'typedef'"); ok($s1,334,"incorrect number of typedefs"); @enum_ids = $p->enum_names; @compound_ids = $p->compound_names; @struct_ids = $p->struct_names; @union_ids = $p->union_names; @typedef_ids = $p->typedef_names; $s1 = @enum_ids; $s2 = $p->enum_names; ok($s1,$s2,"context not evaluated correctly in 'enum_names'"); ok($s1,4,"incorrect number of enum identifiers"); $s1 = @compound_ids; $s2 = $p->compound_names; ok($s1,$s2,"context not evaluated correctly in 'compound_names'"); ok($s1,146,"incorrect number of compound identifiers"); $s1 = @struct_ids; $s2 = $p->struct_names; ok($s1,$s2,"context not evaluated correctly in 'struct_names'"); ok($s1,141,"incorrect number of struct identifiers"); $s1 = @union_ids; $s2 = $p->union_names; ok($s1,$s2,"context not evaluated correctly in 'union_names'"); ok($s1,5,"incorrect number of union identifiers"); $s1 = @typedef_ids; $s2 = $p->typedef_names; ok($s1,$s2,"context not evaluated correctly in 'typedef_names'"); ok($s1,329,"incorrect number of typedef identifiers"); # catch warnings #=================================================================== # check if all sizes are correct (1 big test) #=================================================================== do 'tests/include/sizeof.pl'; $max_size = 0; @fail = (); @success = (); $SIG{__WARN__} = sub { print "# unexpected warning: $_[0]"; push @fail, $_[0]; }; for my $t ( keys %size ) { eval { $s = $p->sizeof($t) }; if( $@ ) { print "# sizeof failed for '$t': $@\n"; } elsif( $size{$t} != $s ) { print "# incorrect size for '$t' (expected $size{$t}, got $s)\n"; } else { $max_size = $s if $s > $max_size; push @success, $t; next; } push @fail, $t unless $s == $size{$t} } ok(@fail == 0); ok(@success > 0); #=================================================================== # check if the def method works correctly (1 big test) #=================================================================== $size{'_IO_lock_t'} = undef; @names = (); @fail = (); push @names, map { { type => qr/^enum$/, id => $_ } } map { $_->{identifier} || () } $p->enum; push @names, map { { type => qr/^(?:struct|union)$/, id => $_ } } map { $_->{identifier} || () } $p->compound; push @names, map { { type => qr/^struct$/, id => $_ } } map { $_->{identifier} || () } $p->struct; push @names, map { { type => qr/^union$/, id => $_ } } map { $_->{identifier} || () } $p->union; push @names, map { { type => qr/^typedef$/, id => $_->{declarator} =~ /(\w+)/ } } $p->typedef; for( @names ) { my $d = $p->def( $_->{id} ); unless( defined $d ) { print "# def( '$_->{id}' ) = undef for existing type\n"; push @fail, $_->{id}; next; } if( $d xor exists $size{$_->{id}} ) { print "# def( '$_->{id}' ) = $d\n"; push @fail, $_->{id}; next; } if( $d and not $d =~ $_->{type} ) { unless( defined $p->$d( $_->{id} ) ) { print "# def( '$_->{id}' ) = $d ($_->{type})\n"; push @fail, $_->{id}; next; } } } ok(@fail == 0); #=================================================================== # and check if we can pack and unpack everything (1 big test) #=================================================================== sub chkpack { my($orig, $pack) = @_; for( my $i = 0; $i < length $pack; ++$i ) { my $p = ord substr $pack, $i, 1; if ($i < length $orig) { my $o = ord substr $orig, $i, 1; return 0 unless $p == $o or $p == 0; } else { return 0 unless $p == 0; } } return 1; } # don't use random data as it may cause failures # for floating point values $data = pack 'C*', map { $_ & 0xFF } 1 .. $max_size; @fail = (); for my $id ( @enum_ids, @compound_ids, @typedef_ids ) { # skip long doubles next if grep { $id eq $_ } qw( __convert_long_double float_t double_t ); eval { $x = $p->unpack( $id, $data ) }; if( $@ ) { print "# unpack failed for '$id': $@\n"; push @fail, $id; next; } eval { $packed = $p->pack( $id, $x ) }; if( $@ ) { print "# pack failed for '$id': $@\n"; push @fail, $id; next; } unless( chkpack( $data, $packed ) ) { print "# inconsistent pack/unpack data for '$id'\n"; print "# \$data => @{[map { sprintf '%02X', $_ } unpack 'C*', substr $data, 0, $p->sizeof($id)]}\n"; print "# \$x => $x\n"; print "# \$packed => @{[map { sprintf '%02X', $_ } unpack 'C*', $packed]}\n"; push @fail, $id; } } ok(@fail == 0); #=================================================================== # check member and offsetof (1 big test) #=================================================================== @fail = (); foreach $type ( @compound_ids ) { next unless exists $size{$type}; foreach( 0 .. $size{$type}-1 ) { eval { $x = $p->member( $type, $_ ) }; if( $@ ) { print "# member failed for '$type', offset $_: $@\n"; push @fail, $_; } if( $x !~ /\+\d+$/ ) { eval { $o = $p->offsetof( $type, $x ) }; if( $@ ) { print "# offsetof failed for '$type', member '$x': $@\n"; push @fail, $_; } if( $o != $_ ) { print "# offsetof( '$type', '$x' ) = $o, expected $_\n"; push @fail, $_; } } } } ok(@fail == 0); #=================================================================== # check reference counts (38 tests) #=================================================================== eval { %rc = ( configure => $p->configure, include => $p->Include, enums_s => scalar $p->enum_names, enums_a => [$p->enum_names], compounds_s => scalar $p->compound_names, compounds_a => [$p->compound_names], structs_s => scalar $p->struct_names, structs_a => [$p->struct_names], unions_s => scalar $p->union_names, unions_a => [$p->union_names], typedefs_s => scalar $p->typedef_names, typedefs_a => [$p->typedef_names], enum_s => scalar $p->enum, enum_a => [$p->enum], compound_s => scalar $p->compound, compound_a => [$p->compound], struct_s => scalar $p->struct, struct_a => [$p->struct], union_s => scalar $p->union, union_a => [$p->union], typedef_s => scalar $p->typedef, typedef_a => [$p->typedef], enum_sx => scalar $p->enum( $p->enum_names ), enum_ax => [$p->enum( $p->enum_names )], compound_sx => scalar $p->compound( $p->compound_names ), compound_ax => [$p->compound( $p->compound_names )], struct_sx => scalar $p->struct( $p->struct_names ), struct_ax => [$p->struct( $p->struct_names )], union_sx => scalar $p->union( $p->union_names ), union_ax => [$p->union( $p->union_names )], typedef_sx => scalar $p->typedef( $p->typedef_names ), typedef_ax => [$p->typedef( $p->typedef_names )], sizeof => $p->sizeof( 'AMT' ), typeof => $p->typeof( 'AMT.table[2]' ), offsetof => $p->offsetof( 'AMT', 'table[2]' ), member_sxx => scalar $p->member( 'AMT', 100 ), member_axx => [$p->member( 'AMT', 100 )], member_sx => scalar $p->member( 'AMT' ), member_ax => [$p->member( 'AMT' )], dependencies_s => scalar $p->dependencies, dependencies_a => [$p->dependencies], sourcify => $p->sourcify, ); }; ok($@,'',"method call failed"); $debug = Convert::Binary::C::feature( 'debug' ); for( keys %rc ) { $fail = $succ = 0; if( $debug ) { # print "# dumping $_\n"; my $r = Convert::Binary::C::__DUMP__( $rc{$_} ); # print "# checking $_\n"; while( $r =~ /REFCNT\s*=\s*(\d+)/g ) { if( $1 == 1 ) { $succ++ } else { print "# REFCNT = $1, should be 1\n"; $fail++; } } # print "# $_ (succ = $succ, fail = $fail)\n"; } skip( $debug ? '' : 'no debugging', $fail == 0 && $succ > 0 ); } #=================================================================== # check parser stack (2 tests) #=================================================================== my @tests = ( { level => 4997, error => '' }, { level => 4998, error => qr/memory exhausted/ }, ); for my $t ( @tests ) { my $c = new Convert::Binary::C; my $pre = 'struct { ' x $t->{level}; my $post = ' x; }' x $t->{level}; eval { $c->parse("typedef $pre int $post deep;") }; ok( $@, $t->{error} ); # Don't try to unpack data (or even worse, call $c->typedef('deep')). # Doing so can result in a stack overflow in perl during destruction. } #=================================================================== # check parse error recovery (9 tests) #=================================================================== $c = new Convert::Binary::C IntSize => 4, EnumSize => 4; eval { $c->parse(<sizeof('foo') }; ok($@, ''); ok($s, 12); $p = eval { $c->pack('foo', { a => 4711, b => -101, c => 42 }) }; ok($@, ''); ok(length $p, $s); $u = eval { $c->unpack('foo', $p) }; ok($@, ''); ok($u->{a}, 4711); ok($u->{b}, -101); ok($u->{c}, 42); # check that another parse updates parse info eval { $c->parse(<sizeof('bar') }; ok($@, ''); ok($s, 8); # check that all possible methods update the parse info $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset my $d = $c->clone; # also check cloning here $s = eval { $c->sizeof('bar') }; ok($@, ''); ok($s, 8); $s = eval { $d->sizeof('bar') }; ok($@, ''); ok($s, 8); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->compound('bar') }; ok($@, ''); ok($s->{size}, 8); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->def('bar.a') }; ok($@, ''); ok($s, 'member'); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->enum('enu') }; ok($@, ''); ok($s->{size}, 4); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->initializer('bar', { a => 1, b => 2 }) }; ok($@, ''); ok($s, qr/^\s*\{\s*1,\s*2\s*\}\s*$/); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->member('bar', 5) }; ok($@, ''); ok($s, '.b+1'); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->offsetof('bar', '.b') }; ok($@, ''); ok($s, 4); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->pack('bar', { a => 1, b => 2 }) }; ok($@, ''); ok($s, pack('VV', 1, 2)); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->unpack('bar', pack('VV', 42, 4711)) }; ok($@, ''); ok($s->{a}, 42); ok($s->{b}, 4711); $c->ByteOrder('BigEndian')->ByteOrder('LittleEndian'); # reset $s = eval { $c->typedef('t_bar') }; ok($@, ''); ok($s->{type}{size}, 12); Convert-Binary-C-0.76/tests/parser/0000755000175000001440000000000011550665107015647 5ustar mhxusersConvert-Binary-C-0.76/tests/parser/context.c0000644000175000001440000000074111550664631017502 0ustar mhxusersenum bar { bar = 1 }; typedef int foo; struct foo { int foo : bar; int bar; int def; }; // TODO: make parser accept commented lines static int xyz(int foo) { int bar = 0; // foo = bar + 1; // return foo + bar; } static foo abc(foo foo) { // return foo + bar; } typedef foo def; int main(void) { foo foo = abc(42); int abc = bar; // struct foo bar = { bar: 0, foo: foo, def: abc }; // foo += bar.def + bar.foo; // return foo + bar.bar + xyz(foo); } Convert-Binary-C-0.76/tests/parser/bug1.c0000644000175000001440000000022311550664631016647 0ustar mhxusers/* * This must not parse correctly since unnamed enum * members just don't make sense. */ enum enu { A }; struct foo { enum enu const; }; Convert-Binary-C-0.76/tests/205_pack.t0000644000175000001440000004012511550664620016045 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:21 +0200 $ # $Revision: 29 $ # $Source: /tests/205_pack.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 275 } eval { $p = new Convert::Binary::C ByteOrder => 'BigEndian' , UnsignedChars => 0 }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $p->parse(<<'EOF'); enum _enum { FOO }; struct _struct { int foo[1]; }; typedef struct _struct _typedef; typedef int scalar; typedef int array[1]; typedef struct { array foo; } hash; typedef struct { int foo[1]; } hash2; typedef char c_8; typedef unsigned char u_8, v_8[]; typedef signed char i_8; typedef long double ldbl; typedef struct { char a; int b[3][3]; } undef_test[3]; struct zero { int :0; }; typedef int incomplete[]; struct flexarray { int a; u_8 b[]; }; EOF }; ok($@,'',"parse() failed"); # catch all warnings for further checks $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { my $fail = 0; if( @warn != @_ ) { print "# wrong number of warnings (got ", scalar @warn, ", expected ", scalar @_, ")\n"; $fail++; } for my $ix ( 0 .. $#_ ) { my $e = $_[$ix]; my $w = $warn[$ix]; unless( $w =~ ref($e) ? $e : qr/\Q$e\E/ ) { print "# wrong warning, expected $e, got $w\n"; $fail++; } } if( $fail ) { print "# $_" for @warn } ok( $fail, 0, "warnings check failed" ); @warn = (); } #=================================================================== # check errors (2 tests) #=================================================================== eval { $packed = $p->unpack( 'foo', 0 ) }; ok( $@, qr/Type of arg 2 to unpack must be string/ ); chkwarn; eval { $packed = $p->pack( 'foo', 0, 0 ) }; ok( $@, qr/Type of arg 3 to pack must be string/ ); chkwarn; #=================================================================== # check scalars #=================================================================== $val = 1234567890; $data = pack 'N', $val; eval { $packed = $p->unpack( 'scalar', $data ) }; ok($@,'',"failed in unpack"); chkwarn; ok($packed,$val); eval { $packed = $p->unpack( 'scalar', 'foo' ) }; ok($@,'',"failed in unpack"); chkwarn( qr/Data too short/ ); ok(not defined $packed); eval { $packed = $p->pack( 'scalar', $val ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data); eval { $packed = $p->pack( 'scalar', [4711] ) }; ok($@,'',"failed in pack"); chkwarn( qr/'scalar' should be a scalar value/ ); ok($packed,pack('N',0)); $packed = $data; eval { $p->pack( 'scalar', undef, $packed ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data); $packed = $data; eval { $p->pack( 'scalar', [4711], $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'scalar' should be a scalar value/ ); ok($packed,$data); $packed = $data; eval { $p->pack( 'scalar', {foo=>4711}, $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'scalar' should be a scalar value/ ); ok($packed,$data); #=================================================================== # check arrays #=================================================================== eval { $packed = $p->unpack( 'array', $data ) }; ok($@,'',"failed in unpack"); chkwarn; ok(ref $packed, 'ARRAY'); ok(scalar @$packed, 1); ok($packed->[0], $val); eval { $packed = $p->unpack( 'array', 'foo' ) }; ok($@,'',"failed in unpack"); chkwarn( qr/Data too short/ ); ok(ref $packed, 'ARRAY'); ok(scalar @$packed, 1); ok(not defined $packed->[0]); eval { $packed = $p->pack( 'array', [$val] ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data); eval { $packed = $p->pack( 'array', $val ) }; ok($@,'',"failed in pack"); chkwarn( qr/'array' should be an array reference/ ); ok($packed, pack('N',0)); eval { $packed = $p->pack( 'array', {foo=>4711} ) }; ok($@,'',"failed in pack"); chkwarn( qr/'array' should be an array reference/ ); ok($packed, pack('N',0)); $packed = '12345678'; eval { $p->pack( 'array', [$val], $packed ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data.'5678'); $packed = '12'; eval { $p->pack( 'array', $val, $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'array' should be an array reference/ ); ok($packed,'12'.pack('n',0)); #=================================================================== # check hashes (structs) #=================================================================== eval { $packed = $p->unpack( 'hash', $data ) }; ok($@,'',"failed in unpack"); chkwarn; ok(ref $packed,'HASH'); ok(scalar keys %$packed, 1); ok(ref $packed->{foo},'ARRAY'); ok(scalar @{$packed->{foo}},1); ok($packed->{foo}[0],$val); eval { $packed = $p->unpack( 'hash', 'foo' ) }; ok($@,'',"failed in unpack"); chkwarn( qr/Data too short/ ); ok(ref $packed,'HASH'); ok(scalar keys %$packed, 1); ok(ref $packed->{foo},'ARRAY'); ok(scalar @{$packed->{foo}},1); ok(not defined $packed->{foo}[0]); eval { $packed = $p->pack( 'hash', {foo => [$val]} ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data); eval { $packed = $p->pack( 'hash', [4711] ) }; ok($@,'',"failed in pack"); chkwarn( qr/'hash' should be a hash reference/ ); ok($packed,pack('N',0)); eval { $packed = $p->pack( 'hash', {foo => 4711} ) }; ok($@,'',"failed in pack"); chkwarn( qr/'foo' should be an array reference/ ); ok($packed,pack('N',0)); eval { $packed = $p->pack( 'hash2', {foo => 4711} ) }; ok($@,'',"failed in pack"); chkwarn( qr/'foo' should be an array reference/ ); ok($packed,pack('N',0)); $packed = '12345678'; eval { $p->pack( 'hash', {foo => [$val]}, $packed ) }; ok($@,'',"failed in pack"); chkwarn; ok($packed,$data.'5678'); $packed = '12'; eval { $packed = $p->pack( 'hash', [4711], $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'hash' should be a hash reference/ ); ok($packed,'12'.pack('n',0)); $packed = '1234'; eval { $packed = $p->pack( 'hash', {foo => 4711}, $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'foo' should be an array reference/ ); ok($packed,'1234'); $packed = '1234'; eval { $packed = $p->pack( 'hash2', {foo => 4711}, $packed ) }; ok($@,'',"failed in pack"); chkwarn( qr/'foo' should be an array reference/ ); ok($packed,'1234'); #=================================================================== # check unsigned chars (72 tests) #=================================================================== my %tests = ( c_8 => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => -1 }, }, i_8 => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => -1 }, }, u_8 => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => 255 }, }, 'char' => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => -1 }, }, 'signed char' => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => -1 }, }, 'unsigned char' => { pack => { in => 255, out => pack('C', 255) }, unpack => { in => pack('C', 255), out => 255 }, }, ); uchar_test( %tests ); $p->UnsignedChars(1); $tests{$_}{unpack}{out} = 255 for qw( c_8 char ); uchar_test( %tests ); #=================================================================== # check unsigned 16-bit chars (36 tests) #=================================================================== %tests = ( 'char' => { pack => { in => 65535, out => pack('n', 65535) }, unpack => { in => pack('n', 65535), out => -1 }, }, 'signed char' => { pack => { in => 65535, out => pack('n', 65535) }, unpack => { in => pack('n', 65535), out => -1 }, }, 'unsigned char' => { pack => { in => 65535, out => pack('n', 65535) }, unpack => { in => pack('n', 65535), out => 65535 }, }, ); $p->CharSize(2)->UnsignedChars(0); uchar_test( %tests ); $p->UnsignedChars(1); $tests{char}{unpack}{out} = 65535; uchar_test( %tests ); $p->CharSize(1); sub uchar_test { my %tests = @_; for my $t ( keys %tests ) { for my $m ( keys %{$tests{$t}} ) { my $res = eval { $p->$m( $t, $tests{$t}{$m}{in} ) }; ok($@,'',"failed in $m"); chkwarn; ok($res, $tests{$t}{$m}{out}, "$m( '$t', $tests{$t}{$m}{in} ) != $tests{$t}{$m}{out}"); } } } #=================================================================== # check long doubles (2 tests) #=================================================================== eval { $packed = $p->pack('ldbl', 3.14159) }; ok($@,'',"failed in pack"); my $null = pack 'C*', (0) x length($packed); if( $packed eq $null ) { chkwarn( qr/Cannot pack long doubles/ ); eval { $packed = $p->unpack('ldbl', $packed) }; ok($@,'',"failed in unpack"); chkwarn( qr/Cannot unpack long doubles/ ); ok($packed,0.0); } else { chkwarn(); eval { $packed = $p->unpack('ldbl', $packed) }; ok($@,'',"failed in unpack"); chkwarn(); ok( $packed-3.14159 < 0.0001 ); } #=================================================================== # check for warnings when explicitly passing undef (1 test) #=================================================================== $val = [ undef, { b => [undef, [undef, 2]] } ]; # undef_test[1].b[1][1] = 2 eval { $packed = $p->pack('undef_test', $val) }; ok($@,'',"failed in pack"); chkwarn; #=================================================================== # check for existence of members with undef values #=================================================================== $val = $p->sizeof( 'undef_test[0]' ); chkwarn(); $packed = 'x' x $val; eval { $val = $p->unpack( 'undef_test', $packed ) }; ok($@,'',"failed in unpack"); chkwarn( qr/Data too short/ ); ok(reccmp_keys($val->[0], $val->[1]), '', 'deep compare failed'); ok(reccmp_keys($val->[0], $val->[2]), '', 'deep compare failed'); ok(reccmp_keys($val->[1], $val->[2]), '', 'deep compare failed'); chkwarn(); ok(rec_write($val->[0]), '', 'write check failed'); ok(rec_write($val->[1]), '', 'write check failed'); ok(rec_write($val->[2]), '', 'write check failed'); chkwarn(); #=================================================================== # bug #3753 - pack() on zero size type caused segfault / bus error #=================================================================== ok($p->pack('zero', {}), '', 'pack on zero size type (bug #3753)'); ok(reccmp_keys({}, $p->unpack('zero', '')), '', 'unpack on zero size type'); #=================================================================== # check unpack in list context #=================================================================== { for my $t (qw( u_8 incomplete flexarray )) { print "# --- $t ---\n"; my $s = $p->sizeof($t); my $n = $s || 42; my $d1 = pack "C*", 2 .. 3*$n; my $d2 = pack "C*", 1 .. 3*$n; my $d3 = pack "C*", 0 .. 3*$n; my $x1 = $p->unpack($t, $d1); my @x1 = $p->unpack($t, $d1); my $x2 = $p->unpack($t, $d2); my @x2 = $p->unpack($t, $d2); my $x3 = $p->unpack($t, $d3); my @x3 = $p->unpack($t, $d3); ok(scalar @x1, $s ? int(length($d1)/$s) : 1); ok(scalar @x2, $s ? int(length($d2)/$s) : 1); ok(scalar @x3, $s ? int(length($d3)/$s) : 1); ok($p->pack($t, $x1), $p->pack($t, $x1[0])); ok($p->pack($t, $x2), $p->pack($t, $x2[0])); ok($p->pack($t, $x3), $p->pack($t, $x3[0])); if ($s > 0) { my $p1 = $p->pack($t, $x1[1]); my $p2 = $p->pack($t, $x2[1]); my $p3 = $p->pack($t, $x3[1]); ok($p1, substr($d1, $s, length $p1)); ok($p2, substr($d2, $s, length $p2)); ok($p3, substr($d3, $s, length $p3)); } } } #=================================================================== # pack() should \0 terminate its return value to make the regex # engine happy. This is rather a bug in Perl, but we fix it here. #=================================================================== $val = "\x42"; $packed = $p->pack('u_8', 0x42); ok($packed, $val); ok($packed =~ /^$val$/); ok($packed =~ /^$val.*$/); $packed = $p->pack('u_8', 0x42, ""); ok($packed, $val); ok($packed =~ /^$val$/); ok($packed =~ /^$val.*$/); $packed = ""; $p->pack('u_8', 0x42, $packed); ok($packed, $val); ok($packed =~ /^$val$/); ok($packed =~ /^$val.*$/); $val = "\x42"x100; $packed = $p->pack('v_8', [(0x42)x100]); ok($packed, $val); ok($packed =~ /^$val$/); ok($packed =~ /^$val.*$/); #=================================================================== # some tests for the 3-arg version of pack() #=================================================================== { my @res; my $c = new Convert::Binary::C; $c->parse(<pack('s', { a => 42, d => 13 }, $packed); push @res, $packed; $c->pack('s', { b => 42, c => 13 }, $packed); push @res, $packed; $packed = pack 'C*', 1 .. 6; push @res, $c->pack('s', { a => 42, d => 13 }, $packed); push @res, $packed; $c->pack('s', { b => 42, c => 13 }, $packed); push @res, $packed; }; ok($@, '', "failed during 3-arg pack test"); ok(@res == 6); ok($res[0], pack('C*',42,2,0,13)); ok($res[1], pack('C*',1,2)); ok($res[2], pack('C*',1,42,13,0)); ok($res[3], pack('C*',42,2,3,13,5,6)); ok($res[4], pack('C*',1,2,3,4,5,6)); ok($res[5], pack('C*',1,42,13,4,5,6)); @res = (); $val = $c->unpack('u', '+'); $packed = "mhx"; eval { push @res, $c->pack('u', $val, $packed); push @res, $packed; $c->pack('u', $val, $packed); push @res, $packed; push @res, $c->pack('u', $val, substr $packed, 1, 2); push @res, $packed; $c->pack('u', $val, substr $packed, 1, 2); push @res, $packed; }; ok($@, '', "failed during 3-arg pack test"); ok(@res == 6); ok($res[0], "+hx"); ok($res[1], "mhx"); ok($res[2], "+hx"); ok($res[3], "+x"); ok($res[4], "+hx"); ok($res[5], "++x"); @res = (); $packed = "xxxx"; $packed =~ s/xxx$//; eval { push @res, $c->pack('s', {}, $packed); push @res, $packed; $c->pack('s', $val, $packed); push @res, $packed; }; ok($@, '', "failed during 3-arg pack test"); ok(@res == 3); ok($res[0], "x\0\0\0"); ok($res[1], "x"); ok($res[2], "x\0\0\0"); } sub rec_write { my $ref = shift; my $r = ref $ref; if( $r eq 'HASH' ) { for my $k ( keys %$ref ) { if( ref $ref->{$k} ) { $r = rec_write( $ref->{$k} ); $r and return $r; } else { eval { $ref->{$k} = 42 }; $@ and return $@; } } } elsif( $r eq 'ARRAY' ) { for my $i ( 0 .. $#$ref ) { if( ref $ref->[$i] ) { $r = rec_write( $ref->[$i] ); $r and return $r; } else { eval { $ref->[$i] = 42 }; $@ and return $@; } } } return ''; } sub reccmp_keys { my($ref,$chk) = @_; my $r = ref $ref; if( $r eq 'HASH' ) { defined $chk or return "undefined hash reference"; keys(%$ref) == keys(%$chk) or return "key counts differ"; for my $k ( keys %$ref ) { exists $chk->{$k} or return "reference key '$k' not found"; $r = reccmp_keys( $ref->{$k}, $chk->{$k} ); $r and return $r; } } elsif( $r eq 'ARRAY' ) { defined $chk or return "undefined array reference"; @$ref == @$chk or return "array lengths differ"; for my $i ( 0 .. $#$ref ) { $r = reccmp_keys( $ref->[$i], $chk->[$i] ); $r and return $r; } } return ''; } Convert-Binary-C-0.76/tests/240_offsetof.t0000644000175000001440000002546611550664621016755 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:26 +0200 $ # $Revision: 5 $ # $Source: /tests/240_offsetof.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 377; use Convert::Binary::C @ARGV; my $c = new Convert::Binary::C IntSize => 4, CharSize => 1, Alignment => 1; eval { $c->parse(<<'ENDC'); struct normal { int a; char b[3]; char c[3][3][3]; }; struct flexible { int a; char b[]; }; ENDC }; is($@, '', "parse C code"); my @tests = ( [ 'normal', 'a' => 0 ], [ 'normal', 'b' => 4 ], [ 'normal', 'b[0]' => 4 ], [ 'normal', 'b[1]' => 5 ], [ 'normal', 'b[2]' => 6 ], [ 'normal', 'b[3]' => 7 ], [ 'normal', 'b[4]' => 8 ], [ 'normal', 'b[+4]' => 8 ], [ 'normal', 'b[+1000000]' => 1000004 ], [ 'normal', 'b[-0]' => 4 ], [ 'normal', 'b[-1]' => 3 ], [ 'normal', 'b[-2]' => 2 ], [ 'normal', 'b[-3]' => 1 ], [ 'normal', 'b[-4]' => 0 ], [ 'normal', 'b[-5]' => -1 ], [ 'normal', 'b[-1000000]' => -999996 ], [ 'normal', 'c' => 7 ], [ 'normal', 'c[0]' => 7 ], [ 'normal', 'c[+1]' => 16 ], [ 'normal', 'c[-1]' => -2 ], [ 'normal', 'c[+100]' => 907 ], [ 'normal', 'c[-100]' => -893 ], [ 'normal', 'c[0][0]' => 7 ], [ 'normal', 'c[0][+1]' => 10 ], [ 'normal', 'c[0][-1]' => 4 ], [ 'normal', 'c[0][+100]' => 307 ], [ 'normal', 'c[0][-100]' => -293 ], [ 'normal', 'c[+1][0]' => 16 ], [ 'normal', 'c[+1][+1]' => 19 ], [ 'normal', 'c[+1][-1]' => 13 ], [ 'normal', 'c[+1][+100]' => 316 ], [ 'normal', 'c[+1][-100]' => -284 ], [ 'normal', 'c[-1][0]' => -2 ], [ 'normal', 'c[-1][+1]' => 1 ], [ 'normal', 'c[-1][-1]' => -5 ], [ 'normal', 'c[-1][+100]' => 298 ], [ 'normal', 'c[-1][-100]' => -302 ], [ 'normal', 'c[+100][0]' => 907 ], [ 'normal', 'c[+100][+1]' => 910 ], [ 'normal', 'c[+100][-1]' => 904 ], [ 'normal', 'c[+100][+100]' => 1207 ], [ 'normal', 'c[+100][-100]' => 607 ], [ 'normal', 'c[-100][0]' => -893 ], [ 'normal', 'c[-100][+1]' => -890 ], [ 'normal', 'c[-100][-1]' => -896 ], [ 'normal', 'c[-100][+100]' => -593 ], [ 'normal', 'c[-100][-100]' => -1193 ], [ 'normal', 'c[0][0][0]' => 7 ], [ 'normal', 'c[0][0][+1]' => 8 ], [ 'normal', 'c[0][0][-1]' => 6 ], [ 'normal', 'c[0][0][+100]' => 107 ], [ 'normal', 'c[0][0][-100]' => -93 ], [ 'normal', 'c[0][+1][0]' => 10 ], [ 'normal', 'c[0][+1][+1]' => 11 ], [ 'normal', 'c[0][+1][-1]' => 9 ], [ 'normal', 'c[0][+1][+100]' => 110 ], [ 'normal', 'c[0][+1][-100]' => -90 ], [ 'normal', 'c[0][-1][0]' => 4 ], [ 'normal', 'c[0][-1][+1]' => 5 ], [ 'normal', 'c[0][-1][-1]' => 3 ], [ 'normal', 'c[0][-1][+100]' => 104 ], [ 'normal', 'c[0][-1][-100]' => -96 ], [ 'normal', 'c[0][+100][0]' => 307 ], [ 'normal', 'c[0][+100][+1]' => 308 ], [ 'normal', 'c[0][+100][-1]' => 306 ], [ 'normal', 'c[0][+100][+100]' => 407 ], [ 'normal', 'c[0][+100][-100]' => 207 ], [ 'normal', 'c[0][-100][0]' => -293 ], [ 'normal', 'c[0][-100][+1]' => -292 ], [ 'normal', 'c[0][-100][-1]' => -294 ], [ 'normal', 'c[0][-100][+100]' => -193 ], [ 'normal', 'c[0][-100][-100]' => -393 ], [ 'normal', 'c[+1][0][0]' => 16 ], [ 'normal', 'c[+1][0][+1]' => 17 ], [ 'normal', 'c[+1][0][-1]' => 15 ], [ 'normal', 'c[+1][0][+100]' => 116 ], [ 'normal', 'c[+1][0][-100]' => -84 ], [ 'normal', 'c[+1][+1][0]' => 19 ], [ 'normal', 'c[+1][+1][+1]' => 20 ], [ 'normal', 'c[+1][+1][-1]' => 18 ], [ 'normal', 'c[+1][+1][+100]' => 119 ], [ 'normal', 'c[+1][+1][-100]' => -81 ], [ 'normal', 'c[+1][-1][0]' => 13 ], [ 'normal', 'c[+1][-1][+1]' => 14 ], [ 'normal', 'c[+1][-1][-1]' => 12 ], [ 'normal', 'c[+1][-1][+100]' => 113 ], [ 'normal', 'c[+1][-1][-100]' => -87 ], [ 'normal', 'c[+1][+100][0]' => 316 ], [ 'normal', 'c[+1][+100][+1]' => 317 ], [ 'normal', 'c[+1][+100][-1]' => 315 ], [ 'normal', 'c[+1][+100][+100]' => 416 ], [ 'normal', 'c[+1][+100][-100]' => 216 ], [ 'normal', 'c[+1][-100][0]' => -284 ], [ 'normal', 'c[+1][-100][+1]' => -283 ], [ 'normal', 'c[+1][-100][-1]' => -285 ], [ 'normal', 'c[+1][-100][+100]' => -184 ], [ 'normal', 'c[+1][-100][-100]' => -384 ], [ 'normal', 'c[-1][0][0]' => -2 ], [ 'normal', 'c[-1][0][+1]' => -1 ], [ 'normal', 'c[-1][0][-1]' => -3 ], [ 'normal', 'c[-1][0][+100]' => 98 ], [ 'normal', 'c[-1][0][-100]' => -102 ], [ 'normal', 'c[-1][+1][0]' => 1 ], [ 'normal', 'c[-1][+1][+1]' => 2 ], [ 'normal', 'c[-1][+1][-1]' => 0 ], [ 'normal', 'c[-1][+1][+100]' => 101 ], [ 'normal', 'c[-1][+1][-100]' => -99 ], [ 'normal', 'c[-1][-1][0]' => -5 ], [ 'normal', 'c[-1][-1][+1]' => -4 ], [ 'normal', 'c[-1][-1][-1]' => -6 ], [ 'normal', 'c[-1][-1][+100]' => 95 ], [ 'normal', 'c[-1][-1][-100]' => -105 ], [ 'normal', 'c[-1][+100][0]' => 298 ], [ 'normal', 'c[-1][+100][+1]' => 299 ], [ 'normal', 'c[-1][+100][-1]' => 297 ], [ 'normal', 'c[-1][+100][+100]' => 398 ], [ 'normal', 'c[-1][+100][-100]' => 198 ], [ 'normal', 'c[-1][-100][0]' => -302 ], [ 'normal', 'c[-1][-100][+1]' => -301 ], [ 'normal', 'c[-1][-100][-1]' => -303 ], [ 'normal', 'c[-1][-100][+100]' => -202 ], [ 'normal', 'c[-1][-100][-100]' => -402 ], [ 'normal', 'c[+100][0][0]' => 907 ], [ 'normal', 'c[+100][0][+1]' => 908 ], [ 'normal', 'c[+100][0][-1]' => 906 ], [ 'normal', 'c[+100][0][+100]' => 1007 ], [ 'normal', 'c[+100][0][-100]' => 807 ], [ 'normal', 'c[+100][+1][0]' => 910 ], [ 'normal', 'c[+100][+1][+1]' => 911 ], [ 'normal', 'c[+100][+1][-1]' => 909 ], [ 'normal', 'c[+100][+1][+100]' => 1010 ], [ 'normal', 'c[+100][+1][-100]' => 810 ], [ 'normal', 'c[+100][-1][0]' => 904 ], [ 'normal', 'c[+100][-1][+1]' => 905 ], [ 'normal', 'c[+100][-1][-1]' => 903 ], [ 'normal', 'c[+100][-1][+100]' => 1004 ], [ 'normal', 'c[+100][-1][-100]' => 804 ], [ 'normal', 'c[+100][+100][0]' => 1207 ], [ 'normal', 'c[+100][+100][+1]' => 1208 ], [ 'normal', 'c[+100][+100][-1]' => 1206 ], [ 'normal', 'c[+100][+100][+100]' => 1307 ], [ 'normal', 'c[+100][+100][-100]' => 1107 ], [ 'normal', 'c[+100][-100][0]' => 607 ], [ 'normal', 'c[+100][-100][+1]' => 608 ], [ 'normal', 'c[+100][-100][-1]' => 606 ], [ 'normal', 'c[+100][-100][+100]' => 707 ], [ 'normal', 'c[+100][-100][-100]' => 507 ], [ 'normal', 'c[-100][0][0]' => -893 ], [ 'normal', 'c[-100][0][+1]' => -892 ], [ 'normal', 'c[-100][0][-1]' => -894 ], [ 'normal', 'c[-100][0][+100]' => -793 ], [ 'normal', 'c[-100][0][-100]' => -993 ], [ 'normal', 'c[-100][+1][0]' => -890 ], [ 'normal', 'c[-100][+1][+1]' => -889 ], [ 'normal', 'c[-100][+1][-1]' => -891 ], [ 'normal', 'c[-100][+1][+100]' => -790 ], [ 'normal', 'c[-100][+1][-100]' => -990 ], [ 'normal', 'c[-100][-1][0]' => -896 ], [ 'normal', 'c[-100][-1][+1]' => -895 ], [ 'normal', 'c[-100][-1][-1]' => -897 ], [ 'normal', 'c[-100][-1][+100]' => -796 ], [ 'normal', 'c[-100][-1][-100]' => -996 ], [ 'normal', 'c[-100][+100][0]' => -593 ], [ 'normal', 'c[-100][+100][+1]' => -592 ], [ 'normal', 'c[-100][+100][-1]' => -594 ], [ 'normal', 'c[-100][+100][+100]' => -493 ], [ 'normal', 'c[-100][+100][-100]' => -693 ], [ 'normal', 'c[-100][-100][0]' => -1193 ], [ 'normal', 'c[-100][-100][+1]' => -1192 ], [ 'normal', 'c[-100][-100][-1]' => -1194 ], [ 'normal', 'c[-100][-100][+100]' => -1093 ], [ 'normal', 'c[-100][-100][-100]' => -1293 ], [ 'flexible', 'a' => 0 ], [ 'flexible', 'b' => 4 ], [ 'flexible', 'b[0]' => 4 ], [ 'flexible', 'b[1]' => 5 ], [ 'flexible', 'b[2]' => 6 ], [ 'flexible', 'b[3]' => 7 ], [ 'flexible', 'b[4]' => 8 ], [ 'flexible', 'b[+4]' => 8 ], [ 'flexible', 'b[+1000000]' => 1000004 ], [ 'flexible', 'b[-0]' => 4 ], [ 'flexible', 'b[-1]' => 3 ], [ 'flexible', 'b[-2]' => 2 ], [ 'flexible', 'b[-3]' => 1 ], [ 'flexible', 'b[-4]' => 0 ], [ 'flexible', 'b[-5]' => -1 ], [ 'flexible', 'b[-1000000]' => -999996 ], ); for my $t (@tests) { my $offs = eval { $c->offsetof($t->[0], $t->[1]) }; is($@, '', "eval { offsetof($t->[0], $t->[1]) }"); is($offs, $t->[2], "offsetof($t->[0], $t->[1]) == $t->[2]"); } Convert-Binary-C-0.76/tests/217_preproc.t0000644000175000001440000001330211550664620016601 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:23 +0200 $ # $Revision: 22 $ # $Source: /tests/217_preproc.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 37; use Convert::Binary::C @ARGV; use strict; BEGIN { $^W = 1 } my $c = eval { Convert::Binary::C->new(Define => ['b=a'], Include => ['tests/include/files', 'include/files']); }; is($@, '', "create Convert::Binary::C::Cached object"); #-------------------- # check of ucpp bugs #-------------------- eval { $c->parse(<<'END'); #define a int b x; END }; is($@, '', "parse code"); # eval { # $c->parse( <<'END' ); # #include "ifnonl.h" # typedef int foo; # END # }; # is($@, '', "failed to parse code"); #---------------------------- # check if #ident is ignored #---------------------------- my $s = eval { $c->parse(<<'END'); #ident "bla bla" typedef int xxx; END $c->sizeof('xxx'); }; is($@, '', "parse code with #ident correctly"); is($s, $c->sizeof('int')); #---------------- # various checks #---------------- $c->clean; eval { $c->parse(<<'END'); #include "unmatched.h" END }; like($@, qr/unterminated #if construction/); like($@, qr/included from \[buffer\]:1/); $c->clean->CharSize(1)->Warnings(1); my @warn; $s = eval { local $SIG{__WARN__} = sub { push @warn, @_ }; $c->parse(<<'END'); ??=include "trigraph.h" END $c->sizeof('array'); }; is($@, ''); is($s, 42); is(scalar @warn, 5); like($warn[0], qr/^\[buffer\], line 1: \(warning\) trigraph \?\?= encountered/); like($warn[1], qr/trigraph\.h, line 1: \(warning\) trigraph \?\?= encountered/); like($warn[1], qr/included from \[buffer\]:1/); like($warn[2], qr/trigraph\.h, line 3: \(warning\) trigraph \?\?\( encountered/); like($warn[2], qr/included from \[buffer\]:1/); like($warn[3], qr/trigraph\.h, line 3: \(warning\) trigraph \?\?\) encountered/); like($warn[3], qr/included from \[buffer\]:1/); like($warn[4], qr/^\[buffer\]: \(warning\) 4 trigraph\(s\) encountered/); #-------------------------------------------- # promotion of conditional operator operands #-------------------------------------------- $c->clean; eval { $c->parse(<<'END'); enum test { #if 1 > (0 ? (~1) : (~1)) SS0 = 1, #else SS0 = 0, #endif #if 1 > (1 ? (~1) : (~1)) SS1 = 1, #else SS1 = 0, #endif #if 1 > (0 ? (~1U) : (~1)) US0 = 1, #else US0 = 0, #endif #if 1 > (1 ? (~1U) : (~1)) US1 = 1, #else US1 = 0, #endif #if 1 > (0 ? (~1) : (~1U)) SU0 = 1, #else SU0 = 0, #endif #if 1 > (1 ? (~1) : (~1U)) SU1 = 1, #else SU1 = 0, #endif #if 1 > (0 ? (~1U) : (~1U)) UU0 = 1, #else UU0 = 0, #endif #if 1 > (1 ? (~1U) : (~1U)) UU1 = 1, #else UU1 = 0, #endif }; END }; is($@, ''); is_deeply($c->enum('test')->{enumerators}, { SS0 => 1, SS1 => 1, US0 => 0, US1 => 0, SU0 => 0, SU1 => 0, UU0 => 0, UU1 => 0, }, 'operands of conditional operator promoted correctly'); #--------------------------------------------------------- # make sure that the promotion fix doesn't break anything #--------------------------------------------------------- $c->clean; eval { $c->parse(<<'END'); #if 1 ? 0 : 1/0 # error broken #else # define OK #endif END }; is($@, ''); ok($c->defined('OK'), 'branch of conditional operator not evaluated'); #--------------------------------------------------------- $c->clean; eval { $c->parse(<<'END'); #if (1 || 1/0) && !(0 && 2/0) # define OK #else # error broken #endif END }; is($@, ''); ok($c->defined('OK'), 'branch of short-circuiting operator not evaluated'); #--------------------------------------------------------- $c->clean; eval { $c->parse(<<'END'); #if 1 + 2 + 3 / 3 == 6 - (1 << 1) # define OK #else # error broken #endif END }; is($@, ''); ok($c->defined('OK'), 'arithmetic expressions evaluated correctly'); #--------------------------------------------------------- $c->clean; eval { $c->parse(<<'END'); #if (1 && 3 == 4 - 1 ? 5 - 3 : 7) == 2 # define OK #else # error broken #endif END }; is($@, ''); ok($c->defined('OK'), 'arithmetic expressions evaluated correctly'); #------------------------- # tests arithmetic errors #------------------------- $c->clean; eval { $c->parse(<<'END'); #if 18446744073709551615U #endif END }; is($@, ''); $c->clean; eval { $c->parse(<<'END'); #if 18446744073709551616U #endif END }; like($@, qr/constant too large/); #------------------------------ # test StdCVersion and HostedC #------------------------------ $c = Convert::Binary::C->new; is($c->StdCVersion, 199901, "StdCVersion default"); is($c->HostedC, 1, "HostedC default"); my $code = <clean ->configure(StdCVersion => undef, HostedC => undef) ->parse($code); is($c->unpack('test', $c->pack('test', 'STDC')), -1); is($c->unpack('test', $c->pack('test', 'HOSTED')), -1); $c->clean ->configure(StdCVersion => '4711', HostedC => 0) ->parse($code); is($c->unpack('test', $c->pack('test', 'STDC')), 4711); is($c->unpack('test', $c->pack('test', 'HOSTED')), 0); $c->clean ->configure(StdCVersion => '199901', HostedC => 1) ->parse($code); is($c->unpack('test', $c->pack('test', 'STDC')), 199901); is($c->unpack('test', $c->pack('test', 'HOSTED')), 1); # TODO: more arith checks (errors/warnings) Convert-Binary-C-0.76/tests/901_memory.t0000644000175000001440000000722011550664622016443 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:28 +0200 $ # $Revision: 26 $ # $Source: /tests/901_memory.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C; $^W = 1; BEGIN { @files = grep /[1-4]\d{2}_[a-z]+\.t$/i, ; plan tests => 1 + 9*@files } $debug = Convert::Binary::C::feature( 'debug' ); ok( defined $debug ); $dbfile = 'tests/debug.out'; $cmd = "$^X -w " . join( ' ', map qq["-I$_"], @INC ); @args = ( debug => "m", debugfile => $dbfile ); for my $test ( @files ) { print "# testing '$test'\n"; -e $dbfile and unlink $dbfile; if( $debug ) { open TEST, "$cmd $test @args |" or die $!; while(){} close TEST; } my $exf = -e $dbfile ? 1 : 0; my $reason = $debug ? '' : 'no debugging'; skip( $reason, $exf, 1, "dubious: no debug output file created" ); my %i = $exf ? get_alloc_info( $dbfile ) : (); if( $exf ) { print "# results for '$test':\n"; print "# allocs => $i{allocs} blocks\n"; print "# frees => $i{frees} blocks\n"; print "# max. blocks => $i{max_blocks} blocks\n"; print "# max. memory => $i{max_total} bytes\n"; print "# leakage => $i{leakage} bytes\n"; } if( $debug and !$exf ) { $reason = 'no output file created'; } skip( $reason, ($i{allocs} || 0) > 0, 1, "dubious: no memory allocations" ); skip( $reason, $i{allocs}, $i{frees}, "malloc/free mismatch" ); skip( $reason, $i{leakage}, 0, "memory leaks detected" ); for( qw( multi_alloc null_free unalloc_free not_free assert_fail ) ) { print "# $_:\n"; skip( $reason, exists $i{$_} ? @{$i{$_}} == 0 : 0 ); $i{$_} && @{$i{$_}} or next; for( @{$i{$_}} ) { print "# $_\n" } } } sub get_alloc_info { my $file = shift; my %alloc; my %info = ( allocs => 0, frees => 0, max_blocks => 0, max_total => 0, multi_alloc => [], null_free => [], unalloc_free => [], not_free => [], assert_fail => [], ); my $count = 0; my $total = 0; open MEM, $file or die $!; while( ) { /^(.*?):(A|F|V)=(?:(\d+)\@)?([0-9a-zA-Z]{8,})$/ or next; if( $2 eq 'A' ) { exists $alloc{$4} and push @{$info{multi_alloc}}, "0x$4 in $1 (previously allocated in $alloc{$4}[0])"; next if exists $alloc{$4}; $alloc{$4} = [$1,$3]; $count++; $total += $3; $info{allocs}++; $info{min_size} = $info{max_size} = $3 unless exists $info{min_size}; $info{min_size} = $3 if $3 < $info{min_size}; $info{max_size} = $3 if $3 > $info{max_size}; } elsif( $2 eq 'F' ) { $4 eq '00000000' and push @{$info{null_free}}, "0x$4 in $1"; exists $alloc{$4} or push @{$info{unalloc_free}}, "0x$4 in $1"; next unless exists $alloc{$4}; $count--; $total -= $alloc{$4}[1]; $info{frees}++; delete $alloc{$4}; } else { # $2 eq 'V' exists $alloc{$4} or push @{$info{assert_fail}}, "0x$4 in $1"; next; # nothing needs to be updated } $info{max_blocks} = $count if $count > $info{max_blocks}; $info{max_total} = $total if $total > $info{max_total}; } close MEM; for( sort keys %alloc ) { push @{$info{not_free}}, "0x$_ in $alloc{$_}[0]"; } $info{leakage} = $total; %info; } Convert-Binary-C-0.76/tests/001_init.t0000644000175000001440000001265111550664620016067 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:21 +0200 $ # $Revision: 25 $ # $Source: /tests/001_init.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 29; use constant SUCCEED => 1; use constant FAIL => 0; #=================================================================== # try to require the modules (2 tests) #=================================================================== require_ok('Convert::Binary::C'); require_ok('Convert::Binary::C::Cached'); #=================================================================== # check if we build the right object (4 tests) #=================================================================== eval { $p = new Convert::Binary::C }; is($@, '', "create Convert::Binary::C object"); is(ref $p, 'Convert::Binary::C', "blessed Convert::Binary::C reference"); eval { $p = new Convert::Binary::C::Cached }; is($@, '', "create Convert::Binary::C::Cached object"); is(ref $p, 'Convert::Binary::C::Cached', "blessed Convert::Binary::C::Cached reference"); #=================================================================== # check initialization during construction (4 tests) #=================================================================== eval { $p = new Convert::Binary::C PointerSize => 4, EnumSize => 4, IntSize => 4, Alignment => 2, ByteOrder => 'BigEndian', EnumType => 'Both'; }; is($@, '', "create Convert::Binary::C object with arguments"); is(ref $p, 'Convert::Binary::C', "blessed Convert::Binary::C reference"); @warn = (); eval { local $SIG{__WARN__} = sub { push @warn, $_[0] }; $p = new Convert::Binary::C::Cached Cache => 'tests/cache.cbc', PointerSize => 4, EnumSize => 4, IntSize => 4, Alignment => 2, ByteOrder => 'BigEndian', EnumType => 'Both'; }; is($@, '', "create Convert::Binary::C::Cached object with arguments"); is(ref $p, 'Convert::Binary::C::Cached', "blessed Convert::Binary::C::Cached reference"); if (@warn) { my $ok = 1; printf "# %d warning(s) issued:\n", scalar @warn; for (@warn) { diag($_); /Cannot load (?:Data::Dumper|IO::File), disabling cache at $0/ or $ok = 0; } ok($ok, 'warnings'); } else { pass('warnings') } #=================================================================== # check unknown options in constructor (2 tests) #=================================================================== eval { $p = new Convert::Binary::C FOO => 123, ByteOrder => 'BigEndian', BAR => ['abc']; }; like($@, qr/Invalid option 'FOO' at \Q$0/); eval { $p = new Convert::Binary::C::Cached FOO => 123, ByteOrder => 'BigEndian', BAR => ['abc']; }; like($@, qr/Invalid option 'FOO' at \Q$0/); #=================================================================== # check invalid construction (2 tests) #=================================================================== eval { $p = new Convert::Binary::C FOO; }; like($@, qr/Number of configuration arguments to new must be even at \Q$0/); eval { $p = new Convert::Binary::C::Cached FOO; }; like($@, qr/Number of configuration arguments to new must be even at \Q$0/); #=================================================================== # check invalid construction (2 tests) #=================================================================== eval { $p = new Convert::Binary::C ByteOrder => 'FOO'; }; like($@, qr/ByteOrder must be.*not 'FOO' at \Q$0/); eval { $p = new Convert::Binary::C::Cached ByteOrder => 'FOO'; }; like($@, qr/ByteOrder must be.*not 'FOO' at \Q$0/); #=================================================================== # check undefined feature (2 tests) #=================================================================== eval { $p = Convert::Binary::C::feature('foobar'); }; is($@, ''); ok(not defined $p); #=================================================================== # check calling feature as method (2 tests) #=================================================================== eval { $p = new Convert::Binary::C; $p = $p->feature('debug'); }; is($@, ''); ok(defined $p); #=================================================================== # check object corruption (8 tests) #=================================================================== for my $class (qw(Convert::Binary::C Convert::Binary::C::Cached)) { eval { $p = $class->new }; is($@, ''); eval { $p->{''} = 0 }; like($@, qr/^Modification of a read-only value attempted/); $tmp = delete $p->{''}; eval { $p->clean }; like($@, qr/THIS is corrupt/); $p->{''} = $tmp; $e = {'' => $tmp}; bless $e, ref $p; eval { $e->clean }; like($@, qr/THIS->hv is corrupt/); # don't forget to rebless to avoid warnings during cleanup bless $e, 'main'; } Convert-Binary-C-0.76/tests/243_parser.t0000644000175000001440000000153611550664621016431 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:27 +0200 $ # $Revision: 6 $ # $Source: /tests/243_parser.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 2; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $c = new Convert::Binary::C; eval { $c->parse_file('tests/parser/context.c') }; is($@, '', 'parse context.c'); eval { $c->parse_file('tests/parser/bug1.c') }; like($@, qr/syntax error/, 'parse bug1.c'); Convert-Binary-C-0.76/tests/701_debug.t0000644000175000001440000000432611550664621016222 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:28 +0200 $ # $Revision: 25 $ # $Source: /tests/701_debug.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C; $^W = 1; BEGIN { $debug = Convert::Binary::C::feature( 'debug' ); plan tests => 17; } ok( defined $debug ); $dbfile = 'tests/debug.out'; -e $dbfile and unlink $dbfile; $SIG{__WARN__} = sub { push @warnings, $_[0] }; eval qq{ use Convert::Binary::C debug => 'all', debugfile => '$dbfile'; }; ok( $@, '' ); if( $debug ) { ok( scalar @warnings, 0, "unexpected warning(s)" ); ok( 1 ); # dummy } else { ok( scalar @warnings, 1, "wrong number of warnings" ); ok( $warnings[0], qr/Convert::Binary::C not compiled with debugging support/ ); } ok( -e $dbfile xor not $debug ); ok( -z $dbfile xor not $debug ); eval { $p = new Convert::Binary::C }; ok( $@, '' ); ok( ref $p, 'Convert::Binary::C' ); undef $p; @warnings = (); eval q{ use Convert::Binary::C debugfile => ''; }; ok( $@, '', "unexpected error" ); ok( scalar @warnings, 1, "wrong number of warnings" ); ok( $warnings[0], $debug ? qr/Cannot open '', defaulting to stderr/ : qr/Convert::Binary::C not compiled with debugging support/ ); ok( -s $dbfile xor not $debug ); @warnings = (); eval qq{ import Convert::Binary::C debug => 'foo'; }; if( $debug ) { ok( $@, qr/^Unknown debug option 'f'/ ); ok( scalar @warnings, 0, "unexpected warning(s)" ); ok( 1 ); # dummy } else { ok( $@, '', "unexpected error" ); ok( scalar @warnings, 1, "wrong number of warnings" ); ok( $warnings[0], qr/Convert::Binary::C not compiled with debugging support/ ); } @warnings = (); eval qq{ import Convert::Binary::C 'debug'; }; ok( $@, qr/^You must pass an even number of module arguments/ ); ok( scalar @warnings, 0, "unexpected warning(s)" ); Convert-Binary-C-0.76/tests/209_sourcify.t0000644000175000001440000001210711550664620016775 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:22 +0200 $ # $Revision: 25 $ # $Source: /tests/209_sourcify.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 98 } my $CCCFG = require 'tests/include/config.pl'; eval { $orig = new Convert::Binary::C %$CCCFG; @clone = map { new Convert::Binary::C %$CCCFG } 1 .. 2; }; ok($@,'',"failed to create Convert::Binary::C objects"); eval { $orig->parse_file( 'tests/include/include.c' ); $orig->parse( <sourcify; $dump2 = $orig->sourcify; $dump3 = $orig->sourcify; }; ok($@,'',"failed to dump definitions"); ok( $dump1, $dump2, "dumps 1+2 differ" ); ok( $dump2, $dump3, "dumps 2+3 differ" ); ok( !/^#line/m ) for $dump1, $dump2, $dump3; ok( !/^#define/m ) for $dump1, $dump2, $dump3; eval { $dump1 = $orig->sourcify( { Context => 1 } ); $dump2 = $orig->sourcify( { Context => 1 } ); $dump3 = $orig->sourcify( { Context => 1 } ); }; ok($@,'',"failed to dump definitions with context"); ok( $dump1, $dump2, "context dumps 1+2 differ" ); ok( $dump2, $dump3, "context dumps 2+3 differ" ); ok( /^#line\s+\d+\s+"[^"]+"/m ) for $dump1, $dump2, $dump3; ok( !/^#define/m ) for $dump1, $dump2, $dump3; eval { $dump1 = $orig->sourcify( { Defines => 1 } ); $dump2 = $orig->sourcify( { Defines => 1 } ); $dump3 = $orig->sourcify( { Defines => 1 } ); }; ok($@,'',"failed to dump definitions with context"); ok( $dump1, $dump2, "context dumps 1+2 differ" ); ok( $dump2, $dump3, "context dumps 2+3 differ" ); ok( !/^#line/m ) for $dump1, $dump2, $dump3; ok( /^#define\s+\w+/m ) for $dump1, $dump2, $dump3; eval { $dump1 = $orig->sourcify( { Context => 1, Defines => 1 } ); $dump2 = $orig->sourcify( { Context => 1, Defines => 1 } ); $dump3 = $orig->sourcify( { Context => 1, Defines => 1 } ); }; ok($@,'',"failed to dump definitions with context"); ok( $dump1, $dump2, "context dumps 1+2 differ" ); ok( $dump2, $dump3, "context dumps 2+3 differ" ); ok( /^#line\s+\d+\s+"[^"]+"/m ) for $dump1, $dump2, $dump3; ok( /^#define\s+\w+/m ) for $dump1, $dump2, $dump3; eval { $clone[0]->parse( $orig->sourcify( { Context => 1, Defines => 1 } ) ); }; ok($@,'',"failed to parse clone data (0)"); eval { $clone[1]->parse( $clone[0]->sourcify( { Context => 1, Defines => 1 } ) ); }; ok($@,'',"failed to parse clone data (1)"); for my $meth ( qw( enum compound struct union typedef macro ) ) { my $meth_names = $meth.'_names'; my @orig_names = sort $orig->$meth_names(); print "# checking if any names exist\n"; ok( @orig_names > 0 ); for my $c ( 0 .. $#clone ) { print "# checking counts for \$clone[$c]->$meth_names\n"; ok(scalar $orig->$_(), scalar $clone[$c]->$_(), "count mismatch in $_ ($c)") for $meth, $meth_names; print "# checking parsed names for \$clone[$c]->$meth_names\n"; ok(join( ',', @orig_names ), join( ',', sort $clone[$c]->$meth_names() ), "parsed names differ in $meth_names ($c)" ); my @failed = map { print "# checking \$clone[$c]->$meth( \"$_\" )\n"; reccmp($orig->$meth($_), $clone[$c]->$meth($_)) ? () : $_ } @orig_names; print "# $_\n" for @failed; ok(scalar @failed, 0, "$meth failed cloning"); } } eval { $orig->clean->parse( <clean->parse( $orig->sourcify ); }; ok($@,'',"failed to parse sourcified code"); eval { $orig->clean->parse( 'typedef struct { ' . 'struct { 'x42 . 'int a;' . ' } a;'x42 . ' } rec;' ); }; ok($@,'',"failed to parse C code"); eval { $clone[1]->clean->parse( $orig->sourcify ); }; ok($@,'',"failed to parse sourcified code"); sub reccmp { my($ref, $val) = @_; unless (ref $ref) { return 1 unless defined $ref || defined $val; return 0 unless defined $ref && defined $val; my $r = $ref eq $val; print "# $ref ne $val\n" unless $r; return $r; } if( ref $ref eq 'ARRAY' ) { @$ref == @$val or return 0; for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ) or return 0; } } elsif( ref $ref eq 'HASH' ) { @{[keys %$ref]} == @{[keys %$val]} or return 0; for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ) or return 0; } } else { return 0 } return 1; } Convert-Binary-C-0.76/tests/235_basic.t0000644000175000001440000000274311550664621016220 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:26 +0200 $ # $Revision: 9 $ # $Source: /tests/235_basic.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 54 } my $c = new Convert::Binary::C; for my $t ( 'char' , 'signed char' , 'unsigned char' , 'short' , 'signed short' , 'unsigned short' , 'short int' , 'signed short int' , 'unsigned short int' , 'int' , 'signed int' , 'unsigned int' , 'long' , 'signed long' , 'unsigned long' , 'long int' , 'signed long int' , 'unsigned long int' , 'long long int' , 'signed long long int' , 'unsigned long long int' , 'long long' , 'signed long long' , 'unsigned long long' , 'float' , 'double' , 'long double' ) { my $in = $t; $in =~ s/\b/ /g; ok($c->typeof($in), $t); ok($c->sizeof($in) > 0); } Convert-Binary-C-0.76/tests/802_pod.t0000644000175000001440000000251611550664622015720 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:28 +0200 $ # $Revision: 12 $ # $Source: /tests/802_pod.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ # find all potential pod files if( open F, "MANIFEST" ) { chomp( @files = ); close F; for my $f ( @files ) { $f =~ m!^tests/include! and next; if( open F, $f ) { while( ) { if( /^=\w+/ ) { push @pods, $f; last; } } close F; } } } # load Test::Pod if possible, otherwise load Test eval { require Test::Pod; $Test::Pod::VERSION >= 0.95 or die "Test::Pod version only $Test::Pod::VERSION"; import Test::Pod tests => scalar @pods; }; $TP = $@ eq ''; unless ($TP) { print "# $@"; require Test; import Test; plan(tests => scalar @pods); } for my $pod (@pods) { print "# checking $pod\n"; if($TP) { pod_file_ok($pod); } else { skip("testing pod requires Test::Pod", 0); } } Convert-Binary-C-0.76/tests/602_threads.t0000644000175000001440000001262511550664621016567 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:27 +0200 $ # $Revision: 33 $ # $Source: /tests/602_threads.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Config; use Convert::Binary::C @ARGV; use constant NUM_THREADS => 4; $^W = 1; BEGIN { plan tests => NUM_THREADS } my $CCCFG = require 'tests/include/config.pl'; #=================================================================== # load appropriate threads module and start a couple of threads #=================================================================== my $have_threads = ($Config{useithreads} && $] >= 5.008) || $Config{use5005threads}; my $reason = $Config{useithreads} || $Config{use5005threads} ? "unsupported threads configuration" : "no threads"; my @t; if ($have_threads) { if ($Config{use5005threads}) { require Thread; @t = map { new Thread \&task, $_ } 1 .. NUM_THREADS; } elsif ($Config{useithreads} && $] >= 5.008) { require threads; @t = map { new threads \&task, $_ } 1 .. NUM_THREADS; } } else { Convert::Binary::C->new->parse(''); # allocate/free some memory @t = 1 .. NUM_THREADS } skip($have_threads ? '' : $reason, $have_threads ? $_->join : $_, '', "thread failed") for @t; sub task { my $arg = shift; my $p; eval { $p = new Convert::Binary::C %$CCCFG, EnumSize => 0, ShortSize => 2, IntSize => 4, LongSize => 4, LongLongSize => 8, PointerSize => 4, FloatSize => 4, DoubleSize => 8, LongDoubleSize => 12; if ($arg % 2) { print "# parse_file ($arg) called\n"; $p->parse_file('tests/include/include.c'); print "# parse_file ($arg) returned\n"; } else { print "# parse ($arg) called\n"; $p->parse( <enum_names; my @compound_ids = $p->compound_names; my @struct_ids = $p->struct_names; my @union_ids = $p->union_names; my @typedef_ids = $p->typedef_names; @enum_ids == 4 or return "incorrect number of enum identifiers"; @compound_ids == 146 or return "incorrect number of compound identifiers"; @struct_ids == 141 or return "incorrect number of struct identifiers"; @union_ids == 5 or return "incorrect number of union identifiers"; @typedef_ids == 329 or return "incorrect number of typedef identifiers"; my @enums = $p->enum; my @compounds = $p->compound; my @structs = $p->struct; my @unions = $p->union; my @typedefs = $p->typedef; @enums == 35 or return "incorrect number of enums"; @compounds == 287 or return "incorrect number of compounds"; @structs == 200 or return "incorrect number of structs"; @unions == 87 or return "incorrect number of unions"; @typedefs == 334 or return "incorrect number of typedefs"; my %size = do { local (@ARGV, $/) = ('tests/include/sizeof.pl'); eval <> }; my $max_size = 0; my @fail = (); local $SIG{__WARN__} = sub { print "# unexpected warning: $_[0]"; push @fail, $_[0]; }; for my $t (keys %size) { my $s = eval { $p->sizeof($t) }; if ($@) { print "# sizeof failed for '$t': $@\n"; } elsif ($size{$t} != $s) { print "# incorrect size for '$t' (expected $size{$t}, got $s)\n"; } else { $max_size = $s if $s > $max_size; next; } push @fail, $t unless $s == $size{$t} } @fail == 0 or return "size test failed for [@fail]"; # don't use random data as it may cause failures # for floating point values my $data = pack 'C*', map { $_ & 0xFF } 1 .. $max_size; @fail = (); for my $id (@enum_ids, @compound_ids, @typedef_ids) { # skip long doubles next if grep { $id eq $_ } qw( __convert_long_double float_t double_t ); my $x = eval { $p->unpack($id, $data) }; if( $@ ) { print "# ($arg) unpack failed for '$id': $@\n"; push @fail, $id; next; } my $packed = eval { $p->pack($id, $x) }; if ($@) { print "# ($arg) pack failed for '$id': $@\n"; push @fail, $id; next; } unless (chkpack($data, $packed)) { print "# ($arg) inconsistent pack/unpack data for '$id'\n"; push @fail, $id; next; } } @fail == 0 or return "pack test failed for [@fail]\n"; print "# tests ($arg) finished successfully\n"; return ''; } sub chkpack { my($orig, $pack) = @_; for (my $i = 0; $i < length $pack; ++$i) { my $p = ord substr $pack, $i, 1; if ($i < length $orig) { my $o = ord substr $orig, $i, 1; return 0 unless $p == $o or $p == 0; } else { return 0 unless $p == 0; } } return 1; } Convert-Binary-C-0.76/tests/214_cache.t0000644000175000001440000003035611550664620016177 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:23 +0200 $ # $Revision: 25 $ # $Source: /tests/214_cache.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Carp; use Convert::Binary::C @ARGV; use Convert::Binary::C::Cached; $^W = 1; BEGIN { $tests = 72; plan tests => $tests; } $thisfile = quotemeta "at $0"; { local @INC; eval { require IO::File }; $IO_File = $@; eval { require Data::Dumper }; $Data_Dumper = $@; } { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; carp 'xxx'; # carp must already be working @warn = (); # throw it away... local @INC; # let's pretend we don't have anything my $what = join ' and ', ($Data_Dumper ? ('Data::Dumper') : ()), ($IO_File ? ('IO::File') : ()); my $c = eval { Convert::Binary::C::Cached->new( Cache => 'xxx' ) }; ok( scalar @warn, 1 ); ok( $warn[0], qr/Cannot load $what, disabling cache $thisfile/ ); } eval { require IO::File }; $IO_File = $@; { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; local @INC; my $what = join ' and ', ($Data_Dumper ? ('Data::Dumper') : ()), ($IO_File ? ('IO::File') : ()); my $c = eval { Convert::Binary::C::Cached->new( Cache => 'xxx' ) }; ok( scalar @warn, 1 ); ok( $warn[0], qr/Cannot load $what, disabling cache $thisfile/ ); } eval { require Data::Dumper }; $Data_Dumper = $@; if( $Data_Dumper or $IO_File ) { my $req; $req = 'IO::File' if $IO_File; $req = 'Data::Dumper' if $Data_Dumper; $req = 'Data::Dumper and IO::File' if $Data_Dumper && $IO_File; skip( "caching requires $req", 0 ) for 5 .. $tests; # silence the memory test ;-) eval { Convert::Binary::C->new->parse("enum { XXX };") }; exit; } *main::copy = sub { my($from, $to) = @_; -e $to and unlink $to || die $!; my $fh = new IO::File; my $th = new IO::File; local $/; $fh->open("<$from") and binmode $fh and $th->open(">$to") and binmode $th or die $!; $th->print( $fh->getline ); $fh->close and $th->close or die $!; -e $to or die $!; }; $cache = 'tests/cache.cbc'; #------------------------------------------------------------------------------ # check some basic stuff first -e $cache and unlink $cache || die $!; eval { $c = new Convert::Binary::C::Cached Cache => [$cache], Include => ['tests/cache']; }; ok( $@, qr/Cache must be a string value, not a reference at \Q$0/ ); eval { $c = new Convert::Binary::C::Cached Cache => $cache, Include => ['tests/cache']; }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( 'enum { XXX };' ); }; ok($@,'',"failed to parse code"); eval { $c->parse_file( 'tests/include/include.c' ); }; ok( $@, qr/Cannot parse more than once for cached objects at \Q$0/ ); #------------------------------------------------------------------------------ # check what happens if the cache file cannot be created eval { $c = new Convert::Binary::C::Cached Cache => 'abc/def/ghi/jkl/mno.pqr', Include => ['tests/cache']; }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( 'enum { XXX };' ); }; ok( $@, qr/Cannot open 'abc\/def\/ghi\/jkl\/mno\.pqr':\s*.*?\s*at \Q$0/ ); #------------------------------------------------------------------------------ -e $cache and unlink $cache || die $!; cleanup(); # copy initial set of files copy( qw( tests/cache/cache.1 tests/cache/cache.h ) ); copy( qw( tests/cache/header.1 tests/cache/header.h ) ); copy( qw( tests/cache/sub/dir.1 tests/cache/sub/dir.h ) ); # create reference object @config = ( Include => ['tests/cache'], KeywordMap => {'__inline__' => 'inline', '__restrict__' => undef }, ); eval { $r = new Convert::Binary::C @config }; ok($@,'',"failed to create reference Convert::Binary::C object"); push @config, Cache => $cache; eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse_file( 'tests/cache/cache.h' ); $r->parse_file( 'tests/cache/cache.h' ); }; ok($@,'',"failed to parse files"); # object shouldn't be using the cache file ok( $c->__uses_cache, 0, "object is using cache file" ); # check if both objects are equivalent ok( compare( $r, $c ) ); ok( -e $cache ); #------------------------------------------------------------------------------ # this new object should now use the cache file eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse_file( 'tests/cache/cache.h' ); }; ok($@,'',"failed to parse files"); # object should be using the cache file ok( $c->__uses_cache, 1, "object isn't using cache file" ); ok( compare( $r, $c ) ); #------------------------------------------------------------------------------ # check if a changes in the files are detected for( qw( tests/cache/sub/dir tests/cache/header tests/cache/cache ) ) { # 'dir' files are the same size, so check by timestamp /dir/ and sleep 2; copy( "$_.2", "$_.h" ); /dir/ and sleep 2; eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $r->clean->parse_file( 'tests/cache/cache.h' ); $c->parse_file( 'tests/cache/cache.h' ); }; ok($@,'',"failed to parse files"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); ok( compare( $r, $c ) ); eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse_file( 'tests/cache/cache.h' ); }; ok($@,'',"failed to parse files"); # should use cache ok( $c->__uses_cache, 1, "object is not using cache file" ); ok( compare( $r, $c ) ); } #------------------------------------------------------------------------------ # changing the way we're parsing should trigger re-parsing eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $r->clean->parse( <<'ENDC' ); #include "cache.h" ENDC $c->parse( <<'ENDC' ); #include "cache.h" ENDC }; ok($@,'',"failed to parse"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); ok( compare( $r, $c ) ); eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( <<'ENDC' ); #include "cache.h" ENDC }; ok($@,'',"failed to parse files"); # should use cache ok( $c->__uses_cache, 1, "object is not using cache file" ); ok( compare( $r, $c ) ); #------------------------------------------------------------------------------ # changing the embedded code should trigger re-parsing eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $r->clean->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC $c->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC }; ok($@,'',"failed to parse"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); ok( compare( $r, $c ) ); eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC }; ok($@,'',"failed to parse files"); # should use cache ok( $c->__uses_cache, 1, "object is not using cache file" ); ok( compare( $r, $c ) ); #------------------------------------------------------------------------------ # changing the configuration should trigger re-parsing push @config, Define => ['BAR']; eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $r->clean->Define(['BAR'])->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC $c->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC }; ok($@,'',"failed to parse"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); ok( compare( $r, $c ) ); eval { $c = new Convert::Binary::C::Cached @config }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( <<'ENDC' ); #define FOO #include "cache.h" ENDC }; ok($@,'',"failed to parse files"); # should use cache ok( $c->__uses_cache, 1, "object is not using cache file" ); ok( compare( $r, $c ) ); #------------------------------------------------------------------------------ -e $cache and unlink $cache || die $!; cleanup(); #------------------------------------------------------------------------------ # check cache file corruption $code = 'typedef int foo;'; eval { $c = new Convert::Binary::C::Cached Cache => $cache }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( $code ) }; ok($@,'',"failed to parse"); # can't use cache ok( $c->__uses_cache, 0, "object is using cache file" ); undef $c; $cache_file = do { local $/; IO::File->new($cache)->getline }; $cache_file =~ s{/\*.*?\*/}{ }gs; # strip comments $fail = 0; $size = length($cache_file) - 5; for( $pos = 0; $pos < $size; $pos++ ) { $corrupted = $cache_file; # corrupt the file substr $corrupted, $pos, 5, "\n?!'§\$\n\%&\n}="; IO::File->new(">$cache")->print($corrupted); @warn = (); { local $SIG{__WARN__} = sub { push @warn, $_[0] }; eval { $c = new Convert::Binary::C::Cached Cache => $cache }; if( $@ ne '' ) { $@ =~ s/^/# /gm; print "# failed to create Convert::Binary::C::Cached object\n$@"; $fail++; } eval { $c->parse( $code ) }; if( $@ ne '' ) { $@ =~ s/^/# /gm; print "# failed to create Convert::Binary::C::Cached object\n$@"; $fail++; } } defined $c or next; # can't use cache if( $c->__uses_cache != 0 ) { $corrupted =~ s/^/# /gm; print "# object is using corrupted cache file\n$corrupted"; $fail++; } # no warnings, please for( @warn ) { s/^/# /gm; print "# warning during object creation / parsing:\n$_"; $fail++; } } ok( $fail, 0, "corrupted cache files not handled correctly" ); #------------------------------------------------------------------------------ -e $cache and unlink $cache || die $!; cleanup(); #------------------------------------------------------------------------------ sub cleanup { for( qw( tests/cache/cache.h tests/cache/header.h tests/cache/sub/dir.h ) ) { -e and unlink || die $!; } } sub compare { my($ref, $obj) = @_; my $refcfg = $ref->configure; my $objcfg = $obj->configure; delete $_->{Cache} for $refcfg, $objcfg; print "# compare configurations...\n"; reccmp( $refcfg, $objcfg ) or return 0; my $refdep = $ref->dependencies; my $objdep = $obj->dependencies; print "# compare dependencies...\n"; reccmp( $refdep, $objdep ) or return 0; for( qw( enum_names compound_names struct_names union_names typedef_names ) ) { print "# compare $_ method...\n"; reccmp( [sort $ref->$_()], [sort $obj->$_()] ) or return 0; } for my $meth ( qw( enum compound struct union typedef ) ) { print "# compare $meth method...\n"; my $i; my %ref = map { ($i = $_->{identifier} || $_->{declarator}) ? ($i => $_) : (); } $ref->$meth(); my %obj = map { ($i = $_->{identifier} || $_->{declarator}) ? ($i => $_) : (); } $obj->$meth(); reccmp( [sort keys %ref], [sort keys %obj] ) or return 0; reccmp( [@ref{sort keys %ref}], [@obj{sort keys %obj}] ) or return 0; } return 1; } sub reccmp { my($ref, $val) = @_; unless( defined $ref and defined $val ) { return defined($ref) == defined($val); } ref $ref or return $ref eq $val; if( ref $ref eq 'ARRAY' ) { @$ref == @$val or return 0; for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ) or return 0; } } elsif( ref $ref eq 'HASH' ) { @{[keys %$ref]} == @{[keys %$val]} or return 0; for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ) or return 0; } } else { return 0 } return 1; } Convert-Binary-C-0.76/tests/203_warnings.t0000644000175000001440000017422411550664620016765 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:21 +0200 $ # $Revision: 78 $ # $Source: /tests/203_warnings.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; use Convert::Binary::C::Cached; $^W = 1; BEGIN { plan tests => 7302 } my($code, $data); $code = do { local $/; }; $data = "abcd"; my %code = ( macro => <<'ENDC', #define FOO 1 #define FOO 2 ENDC assert => <<'ENDC', #assert THIS(is) garbage #assert VOID() ENDC assert_syntax => <<'ENDC', #assert TEST(assertion) #if #TEST () /* this is a syntax error */ #endif ENDC include => <<'ENDC', #include ENDC endif => <<'ENDC', #ifdef FOO BLABLA #endif #endif ENDC else => <<'ENDC', #else ENDC elif => <<'ENDC', #elif 1 ENDC unknown => <<'ENDC', #foobar ENDC pragma_pack_1 => <<'ENDC', #pragma pack(1) struct foo { int x; }; #pragma pack(3) ENDC pragma_pack_2 => <<'ENDC', #pragma pack(push, 5) struct foo { int x; }; #pragma pack(0) ENDC pragma_pack_3 => <<'ENDC', #pragma pack(1) struct foo { int x; }; #pragma pack(0) ENDC ); eval_test(q{ $p->configure; # (1) Useless use of configure in void context Convert::Binary::C::feature('foo'); # (1) Useless use of feature in void context $p->feature('foo'); # (1) Useless use of feature in void context $x = Convert::Binary::C::feature(); # (E) Usage: Convert::Binary::C::feature(feat) $x = Convert::Binary::C::feature(1, 2); # (E) Usage: Convert::Binary::C::feature(feat) $x = $p->feature(); # (E) Usage: Convert::Binary::C::feature(feat) $x = $p->feature(1, 2); # (E) Usage: Convert::Binary::C::feature(feat) Convert::Binary::C::native('IntSize'); # (1) Useless use of native in void context $p->native('IntSize'); # (1) Useless use of native in void context $x = Convert::Binary::C::native('foo', 'bar'); # (E) Usage: Convert::Binary::C::native(property) $x = $p->native('foo', 'bar'); # (E) Usage: Convert::Binary::C::native(property) $x = $p->native('foobar'); # (E) Invalid property 'foobar' $p->member('xxx', 666); # (E) Call to member without parse data $p->def('xxx'); # (1) Useless use of def in void context $p->pack('xxx', {foo=>123}); # (1) Useless use of pack in void context $p->unpack('xxx', 'yyy'); # (1) Useless use of unpack in void context $p->sizeof('xxx'); # (1) Useless use of sizeof in void context $p->typeof('xxx'); # (1) Useless use of typeof in void context $p->offsetof('xxx', 'yyy'); # (E) Call to offsetof without parse data $p->member('xxx', 123); # (E) Call to member without parse data $p->enum_names; # (E) Call to enum_names without parse data $p->enum; # (E) Call to enum without parse data $p->compound_names; # (E) Call to compound_names without parse data $p->compound; # (E) Call to compound without parse data $p->struct_names; # (E) Call to struct_names without parse data $p->struct; # (E) Call to struct without parse data $p->union_names; # (E) Call to union_names without parse data $p->union; # (E) Call to union without parse data $p->typedef_names; # (E) Call to typedef_names without parse data $p->typedef; # (E) Call to typedef without parse data $p->dependencies; # (E) Call to dependencies without parse data $p->sourcify; # (E) Call to sourcify without parse data $p->macro_names; # (E) Call to macro_names without parse data $p->macro; # (E) Call to macro without parse data $p->defined('foo'); # (E) Call to defined without parse data $p->parse_file(''); # (E) Cannot find input file '' $p->parse_file('foobar.c'); # (E) Cannot find input file 'foobar.c' $p->Include('tests/include/files', 'include/files'); # no errors/warnings $p->parse_file('empty.h')->clean; # no errors/warnings // $p->parse_file('nlnone.h')->clean; # (2) file is not newline-terminated $p->parse_file('nlunix.h')->clean; # no errors/warnings $p->parse_file('nldos.h')->clean; # no errors/warnings $p->parse_file('nlmac.h')->clean; # no errors/warnings // $p->parse_file('ifnonl.h')->clean; # (2) file is not newline-terminated $p->parse('')->clean; # no errors/warnings $p->parse("typedef int foo;")->clean; # no errors/warnings $p->parse("typedef int foo;\n")->clean; # no errors/warnings $p->parse("typedef int foo;\r\n")->clean; # no errors/warnings $p->parse("typedef int foo;\r")->clean; # no errors/warnings $p->Define(qw( DEFINE=3 DEFINE=2 )); $p->parse(''); # (E) macro ... DEFINE ... redefined $p->Define(['=']); $p->parse(''); # (E) void macro name $p->Define(['=']); $p->Define(['FOO=']); $p->parse("#if\n#endif\n"); # (E) void condition for a #if/#elif $p->parse("#if 0\n#elif\n#endif\n"); # (E) void condition for a #if/#elif $p->parse("#if FOO\n#endif\n"); # (E) void condition (after expansion) for a #if/#elif $p->parse("#if 0\n#elif FOO\n#endif\n"); # (E) void condition (after expansion) for a #if/#elif $p->Assert(qw{ PRED(answer) 1(foo) }); $p->parse(''); # (E) illegal assertion name for #assert $p->Assert([qw{ PRED(answer) SYNTAX) }]); $p->parse(''); # (E) syntax error in #assert $p->Assert([qw{ PRED(answer) UNFINISHED( }]); $p->parse(''); # (E) unfinished #assert $p->Assert([]); $x = $p->pack('signed int', 1); # no warning $x = $p->unpack('signed int', $x); # no warning $x = $p->sizeof('long long'); # no warning $x = $p->typeof('long double'); # no warning $p->parse($code{pragma_pack_1}); # (E) line 5: invalid argument 3 to #pragma pack $p->parse($code{pragma_pack_2}); # (E) line 1: invalid argument 5 to #pragma pack $p->parse($code{pragma_pack_3}); # no warning $p->parse($code{macro}); # (E) macro ... FOO ... redefined $p->parse($code{assert}); # (2) (warning) ... trailing garbage in #assert # (E) void assertion in #assert $p->parse($code{assert_syntax}); # (E) syntax error for assertion in #if $p->parse($code{include}); # (E) file ... not_here.h ... not found $p->parse($code{endif}); # (2) (warning) ... trailing garbage in #ifdef # (E) unmatched #endif $p->parse($code{else}); # (E) rogue #else $p->parse($code{elif}); # (E) rogue #elif $p->parse($code{unknown}); # (E) unknown cpp directive '#foobar' $p->parse($code); # (2) (warning) ... trailing garbage in #assert # (2) (warning) ... trailing garbage in #ifdef $p->def('xxx'); # (1) Useless use of def in void context $p->dependencies; # (1) Useless use of dependencies in void context $p->sourcify; # (1) Useless use of sourcify in void context $p->clone; # (1) Useless use of clone in void context $p->configure(Include => 'Boo'); # (E) Include wants a reference to an array of strings $p->Include({ Boo => 'Boo' }); # (E) Include wants an array reference $p->Include('Boo', ['Boo']); # (E) Argument 2 to Include must not be a reference $p->Include(['Boo'], ['Boo']); # (E) Invalid number of arguments to Include $p->ByteOrder(['Boo']); # (E) ByteOrder must be a string value, not a reference $p->ByteOrder('Boo'); # (E) ByteOrder must be 'BigEndian' or 'LittleEndian', not 'Boo' $p->FloatSize([1]); # (E) FloatSize must be an integer value, not a reference $p->FloatSize(13); # (E) FloatSize must be 0, 1, 2, 4, 8, 12 or 16, not 13 $p->FloatSize(1); # no warning $p->StdCVersion([1]); # (E) StdCVersion must be undef or an integer value, not a reference $p->StdCVersion(undef); # no warnings $p->HostedC([1]); # (E) HostedC must be undef or a boolean value, not a reference $p->HostedC(undef); # no warnings $p->configure(DisabledKeywords => 42); # (E) DisabledKeywords wants a reference to an array of strings $p->configure(DisabledKeywords => { foo => 42 }); # (E) DisabledKeywords wants an array reference $p->configure(Bitfields => 42); # (E) Bitfields wants a hash reference $p->configure(Bitfields => []); # (E) Bitfields wants a hash reference $p->configure(Bitfields => { Engine => 'FooBar' }); # (E) Unknown bitfield layout engine 'FooBar' $p->configure(Bitfields => { Engine => 'Simple' }); # no warning $p->configure(Bitfields => { ByteOrder => 'BigEndian' }); # (E) Invalid option 'ByteOrder' for bitfield layout engine 'Simple' $p->configure(Bitfields => { NoSuchOption => 42 }); # (E) Invalid option 'NoSuchOption' for bitfield layout engine 'Simple' $x = $p->def(''); # no warning $x = $p->def('struct '); # no warning $x = $p->def('notthere'); # no warning $x = $p->sourcify; # no warning $x = $p->sourcify('foo'); # (E) Sourcification of individual types is not yet supported $x = $p->sourcify({ foo => 1 }, 'foo'); # (E) Sourcification of individual types is not yet supported $x = $p->sourcify([ 1 ], 'foo', 'bar'); # (E) Sourcification of individual types is not yet supported $x = $p->sourcify([ 1 ]); # (E) Need a hash reference for configuration options $x = $p->sourcify({ foo => 1 }); # (E) Invalid option 'foo' $x = $p->sourcify({ Context => 1 }); # no warning $p->pack('xxx', 'yyy'); # (1) Useless use of pack in void context $x = $p->pack('', 1); # (E) Cannot find '' $x = $p->pack('na', 'yyy'); # (E) Cannot find 'na' $x = $p->pack('nodef', 'yyy'); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->pack('xxx', 'yyy'); # (E) Got no definition for 'union xxx' $p->pack('na', 'yyy', $data); # (E) Cannot find 'na' $x = $p->pack('hasbf', {}); # no warning $x = $p->pack('t_unsafe', []); # (1) Unsafe values used in pack('t_unsafe') $x = $p->pack('s_unsafe', {}); # (1) Unsafe values used in pack('s_unsafe') $x = $p->pack('nonnative', 0); # [ ieeefp] (1) Cannot pack 1 byte floating point values # [!ieeefp] (1) Cannot pack non-native floating point values $p->pack('enum enu', 'A', ['xxxx']); # (E) Type of arg 3 to pack must be string $p->pack('enum enu', 'A', 'xxxx'); # (E) Modification of a read-only value attempted $x = $p->pack('enum enu', 'A', 'xxxx'); # no warning $x = $p->pack('test.foo', 23); # (1) 'test.foo' should be an array reference $x = $p->pack('test.foo', {}); # (1) 'test.foo' should be an array reference $x = $p->pack('test.foo', sub { 1 }); # (1) 'test.foo' should be an array reference $x = $p->pack('test.bar', []); # (1) 'test.bar' should be a scalar value $x = $p->pack('test.xxx', {}); # (1) 'test.xxx' should be a scalar value $x = $p->pack('test', {foo => {}}); # (1) 'test.foo' should be an array reference $x = $p->pack('test', {foo => [undef, {}] }); # (1) 'test.foo[1]' should be an array reference $x = $p->pack('test', {foo => [undef, [1]] }); # (1) 'test.foo[1][0]' should be a hash reference $x = $p->pack('test', {foo => [undef, [{a => {}}]]}); # (1) 'test.foo[1][0].a' should be a scalar value $x = $p->pack('test', {foo => [undef, [{b => {}}]]}); # (1) 'test.foo[1][0].b' should be an array reference $x = []; $x->[1]{d}[2] = 1; $x = $p->pack('stuff', $x); # (1) 'stuff[1].d[2]' should be an array reference $x = []; $x->[10]{u} = 1; $x = $p->pack('stuff', $x); # (1) 'stuff[10].u' should be a hash reference $x = []; $x->[11]{u} = [1]; $x = $p->pack('stuff', $x); # (1) 'stuff[11].u' should be a hash reference $x = []; $x->[8]{u}{b} = {}; $x = $p->pack('stuff', $x); # (1) 'stuff[8].u.b' should be an array reference $x = []; $x->[7]{u}{b} = [undef, {}]; $x = $p->pack('stuff', $x); # (1) 'stuff[7].u.b[1]' should be a scalar value $x = []; $x->[6]{d}[5][4] = undef; $x = $p->pack('stuff', $x); # no warning $x = []; $x->[6]{d}[5][4] = sub { 1 }; $x = $p->pack('stuff', $x); # (1) 'stuff[6].d[5][4]' should be a scalar value $x = $p->pack('unsigned char', 42); # no warning $x = $p->pack('double', 42); # no warning $x = $p->pack('short double', 42); # (E) Unsupported basic type 'short double' $x = $p->pack('fp_unsupp', 42); # (1) Unsupported floating point type 'short float' in pack $x = $p->pack('hasbf.bf', {}); # no warning $p->unpack('test', $data); # (1) Useless use of unpack in void context $x = $p->unpack('', $data); # (E) Cannot find '' $x = $p->unpack('na', $data); # (E) Cannot find 'na' $x = $p->unpack('nodef', $data); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->unpack('xxx', $data); # (E) Got no definition for 'union xxx' $x = $p->unpack('test', $data); # (1) Data too short @x = $p->unpack('test', $data); # no warning $x = $p->unpack('array', ''); # no warning $x = $p->unpack('hasbf', $data); # no warning $x = $p->unpack('t_unsafe', $data); # (1) Unsafe values used in unpack('t_unsafe') # (1) Data too short $x = $p->unpack('s_unsafe', $data); # (1) Unsafe values used in unpack('s_unsafe') # (1) Data too short $x = $p->unpack('nonnative', 'x'); # [ ieeefp] (1) Cannot unpack 1 byte floating point values # [!ieeefp] (1) Cannot unpack non-native floating point values $x = $p->unpack('multiple', 'x'x100); # (1) Member 'a' used more than once in struct multiple defined in [buffer](62) # (1) Member 'b' used more than once in union defined in [buffer](66) $x = $p->unpack('unsigned char', 'x'x100); # no warning $x = $p->unpack('double', 'x'x100); # no warning $x = $p->unpack('signed float', 'x'x100); # (E) Unsupported basic type 'signed float' $x = $p->unpack('fp_unsupp', 'x'x100); # (1) Unsupported floating point type 'short float' in unpack $x = $p->unpack('hasbf.bf', 'x'x100); # no warning $p->initializer('test'); # (1) Useless use of initializer in void context $p->initializer('test', $data); # (1) Useless use of initializer in void context $x = $p->initializer('', $data); # (E) Cannot find '' $x = $p->initializer('na'); # (E) Cannot find 'na' $x = $p->initializer('na', $data); # (E) Cannot find 'na' $x = $p->initializer('nodef', $data); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->initializer('xxx', $data); # (E) Got no definition for 'union xxx' $x = $p->initializer('test.foo', 23); # (1) 'test.foo' should be an array reference $x = $p->initializer('test.foo', {}); # (1) 'test.foo' should be an array reference $x = $p->initializer('test.foo', sub { 1 }); # (1) 'test.foo' should be an array reference $x = $p->initializer('test.bar', []); # (1) 'test.bar' should be a scalar value $x = $p->initializer('test.xxx', {}); # (1) 'test.xxx' should be a scalar value $x = $p->initializer('test', {foo => {}}); # (1) 'test.foo' should be an array reference $x = $p->initializer('test', {foo => [undef, {}] }); # (1) 'test.foo[1]' should be an array reference $x = $p->initializer('test', {foo => [undef, [1]] }); # (1) 'test.foo[1][0]' should be a hash reference $x = $p->initializer('test', {foo => [undef, [{a => {}}]]}); # (1) 'test.foo[1][0].a' should be a scalar value $x = $p->initializer('test', {foo => [undef, [{b => {}}]]}); # (1) 'test.foo[1][0].b' should be an array reference $x = []; $x->[1]{d}[2] = 1; $x = $p->initializer('stuff', $x); # (1) 'stuff[1].d[2]' should be an array reference $x = []; $x->[10]{c} = 1; $x = $p->initializer('stuff', $x); # (1) 'stuff[10].c' should be a hash reference $x = []; $x->[11]{c} = [1]; $x = $p->initializer('stuff', $x); # (1) 'stuff[11].c' should be a hash reference $x = []; $x->[8]{c}{b} = {}; $x = $p->initializer('stuff', $x); # (1) 'stuff[8].c.b' should be an array reference $x = []; $x->[7]{c}{b} = [undef, {}]; $x = $p->initializer('stuff', $x); # (1) 'stuff[7].c.b[1]' should be a scalar value $x = []; $x->[6]{d}[5][4] = undef; $x = $p->initializer('stuff', $x); # no warning $x = []; $x->[6]{d}[5][4] = sub { 1 }; $x = $p->initializer('stuff', $x); # (1) 'stuff[6].d[5][4]' should be a scalar value $p->sizeof('na'); # (1) Useless use of sizeof in void context $x = $p->sizeof(''); # (E) Cannot find '' $x = $p->sizeof('na'); # (E) Cannot find 'na' $x = $p->sizeof('long ='); # (E) Cannot find 'long =' $x = $p->sizeof('nodef'); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->sizeof('xxx'); # (E) Got no definition for 'union xxx' $x = $p->sizeof('hasbf'); # no warning $x = $p->sizeof('hasbf.bf.c'); # (E) Cannot use sizeof on bitfields $x = $p->sizeof('t_unsafe'); # (1) Unsafe values used in sizeof('t_unsafe') $x = $p->sizeof('s_unsafe'); # (1) Unsafe values used in sizeof('s_unsafe') $x = $p->sizeof('enum enu . foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->sizeof('enumtype.foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->sizeof('ptrtype.foo'); # (E) Cannot access member 'foo' of pointer type $x = $p->sizeof('scalar.foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->sizeof('enumtype [0]'); # (E) Cannot use type as an array $x = $p->sizeof('test.666'); # (E) Struct members must start with a character or an underscore $x = $p->sizeof('test.foo.d'); # (E) Cannot access member 'd' of array type $x = $p->sizeof('test.bar.d'); # (E) Cannot access member 'd' of non-compound type $x = $p->sizeof('test.yyy.d'); # (E) Cannot access member 'd' of pointer type $x = $p->sizeof('test.ptr.d'); # (E) Cannot access member 'd' of pointer type $x = $p->sizeof('test.xxx[1]'); # (E) Cannot use 'xxx' as an array $x = $p->sizeof('test.bar[1]'); # (E) Cannot use 'bar' as an array $x = $p->sizeof('test.bar()'); # (E) Invalid character '(' (0x28) in compound member expression $x = $p->sizeof('test.bar+'); # (E) Invalid character '+' (0x2B) in compound member expression $x = $p->sizeof('test.bar+a'); # (E) Invalid character '+' (0x2B) in compound member expression $x = $p->sizeof('test.bar a'); # (E) Invalid character 'a' (0x61) in compound member expression $x = $p->sizeof('test bar'); # (E) Invalid character 'b' (0x62) in compound member expression $x = $p->sizeof('test.bar+1'); # no warning $x = $p->sizeof('test.foo[1][2'); # (E) Incomplete compound member expression $x = $p->sizeof('test.foo[1][2].d'); # (E) Cannot find struct member 'd' $x = $p->sizeof('test.foo[a]'); # (E) Array indices must be constant decimal values $x = $p->sizeof('test.foo[0x1]'); # (E) Index operator not terminated correctly $x = $p->sizeof('test.foo[2]'); # no warning $x = $p->sizeof('test.foo[1][2][0]'); # (E) Cannot use 'foo' as a 3-dimensional array $x = $p->sizeof('array[1][2]'); # (E) Cannot use type as a 2-dimensional array $p->typeof('na'); # (1) Useless use of typeof in void context $x = $p->typeof(''); # (E) Cannot find '' $x = $p->typeof('na'); # (E) Cannot find 'na' $x = $p->typeof('nodef'); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->typeof('xxx'); # (E) Got no definition for 'union xxx' $x = $p->typeof('enum enu . foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->typeof('enumtype.foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->typeof('ptrtype.foo'); # (E) Cannot access member 'foo' of pointer type $x = $p->typeof('scalar.foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->typeof('enumtype [0]'); # (E) Cannot use type as an array $x = $p->typeof('test.666'); # (E) Struct members must start with a character or an underscore $x = $p->typeof('test.foo.d'); # (E) Cannot access member 'd' of array type $x = $p->typeof('test.bar.d'); # (E) Cannot access member 'd' of non-compound type $x = $p->typeof('test.yyy.d'); # (E) Cannot access member 'd' of pointer type $x = $p->typeof('test.ptr.d'); # (E) Cannot access member 'd' of pointer type $x = $p->typeof('test.xxx[1]'); # (E) Cannot use 'xxx' as an array $x = $p->typeof('test.bar[1]'); # (E) Cannot use 'bar' as an array $x = $p->typeof('test.bar()'); # (E) Invalid character '(' (0x28) in compound member expression $x = $p->typeof('test.bar+'); # (E) Invalid character '+' (0x2B) in compound member expression $x = $p->typeof('test.bar+a'); # (E) Invalid character '+' (0x2B) in compound member expression $x = $p->typeof('test.bar+1'); # no warning $x = $p->typeof('test.foo[1][2'); # (E) Incomplete compound member expression $x = $p->typeof('test.foo[1][2].d'); # (E) Cannot find struct member 'd' $x = $p->typeof('test.foo[a]'); # (E) Array indices must be constant decimal values $x = $p->typeof('test.foo[0x1]'); # (E) Index operator not terminated correctly $x = $p->typeof('test.foo[2]'); # no warning $x = $p->typeof('test.foo[1][2][0]'); # (E) Cannot use 'foo' as a 3-dimensional array $p->offsetof('xxx', 666); # (1) Useless use of offsetof in void context $x = $p->offsetof('', 666); # (E) Cannot find '' $x = $p->offsetof('abc', 666); # (E) Cannot find 'abc' $x = $p->offsetof('nodef', 666); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->offsetof('xxx', 666); # (E) Got no definition for 'union xxx' $x = $p->offsetof('ptrtype', '666'); # (E) Invalid character '6' (0x36) in compound member expression $x = $p->offsetof('scalar', '666'); # (E) Invalid character '6' (0x36) in compound member expression $x = $p->offsetof('enu', '666'); # (E) Invalid character '6' (0x36) in compound member expression $x = $p->offsetof('ptrtype', 'a66'); # (E) Cannot access member 'a66' of pointer type $x = $p->offsetof('scalar', 'a66'); # (E) Cannot access member 'a66' of non-compound type $x = $p->offsetof('enu', 'a66'); # (E) Cannot access member 'a66' of non-compound type $x = $p->offsetof('long int', 'a66'); # (E) Cannot access member 'a66' of non-compound type $x = $p->offsetof('test', 'foo[0][0].666'); # (E) Struct members must start with a character or an underscore $x = $p->offsetof('test', 'foo.d'); # (E) Cannot access member 'd' of array type $x = $p->offsetof('test', 'bar.d'); # (E) Cannot access member 'd' of non-compound type $x = $p->offsetof('test', 'yyy.d'); # (E) Cannot access member 'd' of pointer type $x = $p->offsetof('test', 'ptr.d'); # (E) Cannot access member 'd' of pointer type $x = $p->offsetof('test', 'xxx[1]'); # (E) Cannot use 'xxx' as an array $x = $p->offsetof('test', 'bar[1]'); # (E) Cannot use 'bar' as an array $x = $p->offsetof('test', 'bar()'); # (E) Invalid character '(' (0x28) in compound member expression $x = $p->offsetof('test', 'foo[1][2'); # (E) Incomplete compound member expression $x = $p->offsetof('test', 'foo[1][2].d'); # (E) Cannot find struct member 'd' $x = $p->offsetof('test', 'foo[a]'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo[0x1]'); # (E) Index operator not terminated correctly $x = $p->offsetof('test', 'foo[+'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo[+%'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo['); # (E) Incomplete compound member expression $x = $p->offsetof('test', 'foo[%'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo[ '); # (E) Incomplete compound member expression $x = $p->offsetof('test', 'foo[ %'); # (E) Array indices must be constant decimal values $x = $p->offsetof('test', 'foo[2]'); # no warning $x = $p->offsetof('test', 'foo[1][2][0]'); # (E) Cannot use 'foo' as a 3-dimensional array $x = $p->offsetof('array', '[1][2]'); # (E) Cannot use type as a 2-dimensional array $x = $p->offsetof('hasbf', 'nobf'); # no warning $x = $p->offsetof('s_unsafe', 'foo'); # (1) Unsafe values used in offsetof('s_unsafe') $x = $p->offsetof('test.bar', 'foo'); # (E) Cannot access member 'foo' of non-compound type $x = $p->offsetof('test.arx[3][4]', 'uni[3].str.c'); # (E) Cannot find struct member 'arx' $x = $p->offsetof('test.ary[3][4]', 'uni[3].bar.c'); # (E) Cannot find union member 'bar' $x = $p->offsetof('test.ary[3][4]', 'uni[3].str.c'); # (E) Cannot find struct member 'c' $x = $p->offsetof('test.ary[2][4]', 'uni[3].str.c'); # (E) Cannot find struct member 'c' $x = $p->offsetof('test.ary[2][3]', 'uni[6].str.c'); # (E) Cannot find struct member 'c' $x = $p->offsetof('test.ary[2][3]', 'uni[1].str.c'); # (E) Cannot find struct member 'c' $x = $p->offsetof('test.ary[2][3].uni.a', 'xxx'); # (E) Cannot access member 'a' of array type $x = $p->offsetof('test.ary[2][3].uni', 'xxx'); # (E) Cannot access member 'xxx' of array type $x = $p->offsetof('test.ary[2][3]', 'uni.xxx'); # (E) Cannot access member 'xxx' of array type $x = $p->offsetof('test.ary[2][3].uni[0].a', 'xxx'); # (E) Cannot access member 'xxx' of non-compound type $x = $p->offsetof('test.ary[2][3].uni[0].str.a', 'b'); # (E) Cannot access member 'b' of pointer type $x = $p->offsetof('test.ary[2][2]', 'uni'); # no warning $x = $p->offsetof('test.ary[2][2]', ''); # (1) Empty string passed as member expression $x = $p->offsetof('test.ary[2][2]', "\t "); # (1) Empty string passed as member expression $x = $p->offsetof('hasbf', 'bf'); # no warning $x = $p->offsetof('hasbf', 'bf.c'); # (E) Cannot use offsetof on bitfields $p->member('xxx', 6666); # (1) Useless use of member in void context $x = $p->member('', 6666); # (E) Cannot find '' $x = $p->member('abc', 6666); # (E) Cannot find 'abc' $x = $p->member('nodef', 6666); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->member('xxx', 6666); # (E) Got no definition for 'union xxx' $x = $p->member('ptrtype', 6666); # (E) Cannot use member on a pointer type $x = $p->member('scalar', 6666); # (E) Cannot use member on a basic type $x = $p->member('long long', 6666); # (E) Cannot use member on a basic type $x = $p->member('enu', 6666); # (E) Cannot use member on an enum $x = $p->member('test', 6666); # (E) Offset 6666 out of range $x = $p->member('test', -10); # (E) Offset -10 out of range $x = $p->member('hasbf', 1); # no warning $x = $p->member('s_unsafe', 1); # (1) Unsafe values used in member('s_unsafe') $x = $p->member('test.bar', 6666); # (E) Cannot use member on a basic type $x = $p->member('test.arx[3][4]', 6666); # (E) Cannot find struct member 'arx' $x = $p->member('test.ary[3][4]', 6666); # (E) Offset 6666 out of range $x = $p->member('test.ary[2][4]', 6666); # (E) Offset 6666 out of range $x = $p->member('test.ary[2][3]', 6666); # (E) Offset 6666 out of range $x = $p->member('test.ary[2][3].uni.a', 6666); # (E) Cannot access member 'a' of array type $x = $p->member('test.ary[2][3].uni', 0); # no error $x = $p->member('test.ary[2][3].uni[0].a', 6666); # (E) Cannot use member on an enum $x = $p->member('test.ary[2][3].uni[0].str.a', 6666); # (E) Cannot use member on a pointer type $p->member('xxx'); # (1) Useless use of member in void context $x = $p->member(''); # (E) Cannot find '' $x = $p->member('abc'); # (E) Cannot find 'abc' $x = $p->member('nodef'); # (E) Got no struct declarations in resolution of 'nodef' $x = $p->member('xxx'); # (E) Got no definition for 'union xxx' $x = $p->member('ptrtype'); # (E) Cannot use member on a pointer type $x = $p->member('scalar'); # (E) Cannot use member on a basic type $x = $p->member('long long'); # (E) Cannot use member on a basic type $x = $p->member('enu'); # (E) Cannot use member on an enum $x = $p->member('hasbf'); # no warning $x = $p->member('s_unsafe'); # (1) Unsafe values used in member('s_unsafe') $x = $p->member('test.bar'); # (E) Cannot use member on a basic type $x = $p->member('test.arx[3][4]'); # (E) Cannot find struct member 'arx' $x = $p->member('test.ary[3][4]'); # no warning $x = $p->member('test.ary[2][4]'); # no warning $x = $p->member('test.ary[2][3].uni.a'); # (E) Cannot access member 'a' of array type $x = $p->member('test.ary[2][3].uni'); # no error $x = $p->member('test.ary[2][3].uni[0].a'); # (E) Cannot use member on an enum $x = $p->member('test.ary[2][3].uni[0].str.a'); # (E) Cannot use member on a pointer type $p->enum_names; # (1) Useless use of enum_names in void context $p->enum; # (1) Useless use of enum in void context $x = $p->enum('na'); # no warning $x = $p->enum('enum na'); # no warning @x = $p->enum('enu', ''); # no warning $x = $p->enum('enum enu'); # no warning $p->compound_names; # (1) Useless use of compound_names in void context $p->compound; # (1) Useless use of compound in void context @x = $p->compound('na', ''); # no warning $x = $p->compound('union na'); # no warning $x = $p->compound('struct na'); # no warning $x = $p->compound('__hasbf'); # no warning $x = $p->compound('test'); # no warning $x = $p->compound('struct __hasbf'); # no warning $x = $p->compound('union test'); # no warning $x = $p->compound('union __hasbf'); # no warning $x = $p->compound('struct test'); # no warning $p->struct_names; # (1) Useless use of struct_names in void context $p->struct; # (1) Useless use of struct in void context $x = $p->struct('na'); # no warning $x = $p->struct('union na'); # no warning $x = $p->struct('struct na'); # no warning $x = $p->struct('__hasbf'); # no warning $x = $p->struct('struct test'); # no warning $p->union_names; # (1) Useless use of union_names in void context $p->union; # (1) Useless use of union in void context $x = $p->union('na'); # no warning $x = $p->union('union na'); # no warning $x = $p->union('struct na'); # no warning $x = $p->union('test'); # no warning $x = $p->union('union __hasbf'); # no warning $p->typedef_names; # (1) Useless use of typedef_names in void context $p->typedef; # (1) Useless use of typedef in void context @x = $p->typedef('na', ''); # no warning $p->macro_names; # (1) Useless use of macro_names in void context $p->macro; # (1) Useless use of macro in void context $x = $p->macro('foo'); # no warning @x = $p->macro('foo', 'bar'); # no warning $x = $p->pack('e_unsafe', 'SAFE'); # no warning $x = $p->pack('e_unsafe', 'GOOD'); # no warning $x = $p->pack('e_unsafe', 'UNSAFE'); # (1) Enumerator value 'UNSAFE' is unsafe $x = $p->pack('e_unsafe', 'BAD'); # (1) Enumerator value 'BAD' is unsafe $p->EnumType('Integer'); $x = $p->unpack('e_unsafe', $data); # no warning $p->EnumType('String'); $x = $p->unpack('e_unsafe', $data); # (1) Enumeration 'e_unsafe' contains unsafe values $p->EnumType('Both'); $x = $p->unpack('e_unsafe', $data); # (1) Enumeration 'e_unsafe' contains unsafe values $p->EnumType('Integer'); $x = $p->unpack('e_unsafe_noname', $data); # no warning $p->EnumType('String'); $x = $p->unpack('e_unsafe_noname', $data); # (1) Enumeration contains unsafe values $p->EnumType('Both'); $x = $p->unpack('e_unsafe_noname', $data); # (1) Enumeration contains unsafe values $p->arg('test'); # (1) Useless use of arg in void context $x = $p->arg('test'); # (E) Unknown argument type 'test' in arg $p->tag('stuff[0]', Format => 'String'); # (E) Cannot tag array members $p->tag('stuff[0].d[1]', Format => 'String'); # (E) Cannot tag array members $p->tag('stuff[0].d[1][2]', Format => 'String'); # (E) Cannot tag array members $p->untag('stuff[0].d[1][2]', 'Format'); # (E) Cannot tag array members $p->tag('stuff[0].d', Format => 'String'); # no error $p->tag('stuff[0].a', Format => 'String'); # no error $p->tag('stuff', Format => 'String'); # no error $p->tag('noway'); # (1) Useless use of tag in void context $x = $p->tag('noway'); # (E) Cannot find 'noway' $p->tag('test.bar', { foo => 1 }); # (1) Useless use of tag in void context $x = $p->tag('test.bar', { foo => 1 }); # (E) Tag name must be a string, not a reference $p->tag('test.bar', 'foo'); # (1) Useless use of tag in void context $x = $p->tag('test.bar', 'foo'); # (E) Invalid tag name 'foo' $p->tag('test.bar', 'Format'); # (1) Useless use of tag in void context $x = $p->tag('test.bar', 'Format'); # no error $p->tag('test.bar', Format => 'foo'); # (E) Invalid value 'foo' for Format tag $p->tag('test.bar', Format => 'String', 'foo'); # (E) Invalid number of arguments to tag $p->tag('test.bar', Format => 'String', foo => 1); # (E) Invalid tag name 'foo' $p->tag('test.bar', Format => { foo => 1 }); # (E) Value for Format tag must not be a reference $p->tag('test.bar', Hooks => 'foo'); # (E) Need a hash reference to define hooks for 'test.bar' $p->tag('int', Hooks => 'foo'); # (E) Need a hash reference to define hooks for 'int' $p->tag('test', Hooks => 'foo'); # (E) Need a hash reference to define hooks for 'test' $p->tag('test', Hooks => {pack => 42}); # (E) pack hook defined for 'test' is not a code or array reference $p->tag('test', Hooks => {pack => {foo => 42}}); # (E) pack hook defined for 'test' is not a code or array reference $p->tag('test', Hooks => {pack => [42]}); # (E) pack hook defined for 'test' is not a code reference $p->tag('test', Hooks => {unpack => []}); # (E) Need at least a code reference in unpack hook for type 'test' $p->tag('test', Hooks => {this_is_no_hook => \&id}); # (E) Invalid hook type 'this_is_no_hook' $p->tag('test', Hooks => {pack => sub {$_[0]}}); # no error $p->tag('test', Hooks => {unpack => [sub {$_[0]}]}); # no error $p->tag('test', Hooks => {pack => \&id, unpack => \&id}); # no error $p->tag('noway', Hooks => undef); # (E) Cannot find 'noway' $p->tag('test.bar', Hooks => undef); # no error $p->tag('int', Hooks => undef); # no error $p->tag('enumtype', Hooks => undef); # no error $p->tag('test', Hooks => undef); # no error $p->tag('test.foo', Dimension => 42); # no error $p->tag('test.foo', Dimension => '42'); # no error $p->tag('test.foo', Dimension => '*'); # no error $p->tag('test.foo', Dimension => sub { 42 }); # no error $p->tag('test.foo', Dimension => [sub { 42 }]); # no error $p->tag('test.foo', Dimension => 'ival'); # no error $p->tag('array', Dimension => 'bar'); # (E) Cannot use member expression 'bar' as Dimension tag for 'array' when not within a compound type $p->tag('array', Dimension => sub{42}); # no error $p->tag('array', Dimension => [sub{42}]); # no error $p->tag('array', Dimension => [sub{42}, $p->arg('SELF')]); # no error $p->tag('array', Dimension => [sub{42}, $p->arg('TYPE')]); # (E) TYPE argument not allowed $p->tag('array', Dimension => [sub{42}, $p->arg('DATA')]); # (E) DATA argument not allowed $p->tag('array', Dimension => [sub{42}, $p->arg('HOOK')]); # no error $p->tag('test.foo', Dimension => 'ptr'); # (E) Cannot use a pointer type in member 'ptr' to determine a dimension for 'test.foo' $p->tag('test.foo', Dimension => 'nonono'); # (E) Cannot find struct member 'nonono' $p->tag('test.foo', Dimension => 'bar'); # (E) Cannot use member 'bar' located behind 'test.foo' in layout to determine a dimension $p->tag('enumtype', Dimension => 'bar'); # (E) Cannot use Dimension tag on an enum 'enumtype' $p->tag('enumtype', Dimension => undef); # (E) Cannot use Dimension tag on an enum 'enumtype' $p->untag('enumtype', 'Dimension'); # (E) Cannot use Dimension tag on an enum 'enumtype' $p->tag('test.foo', Dimension => {}); # (E) Invalid Dimension tag for 'test.foo' $p->tag('test.foo', Dimension => -1); # (E) Cannot use negative value -1 in Dimension tag for 'test.foo' $p->tag('test.foo', Dimension => '-2'); # (E) Cannot use negative value -2 in Dimension tag for 'test.foo' $p->tag('test.foo', Dimension => 0); # no error $p->tag('test.foo', Dimension => '0'); # no error $p->tag('test.foo', Dimension => ''); # (E) Invalid Dimension tag for 'test.foo' $p->tag('test.foo', Dimension => sub{42}); # no error $p->tag('test.foo', Dimension => [sub{42}]); # no error $p->tag('test.foo', Dimension => [sub{42}, $p->arg('SELF')]); # no error $p->tag('test.foo', Dimension => [sub{42}, $p->arg('TYPE')]); # (E) TYPE argument not allowed $p->tag('test.foo', Dimension => [sub{42}, $p->arg('DATA')]); # no error $p->tag('test.foo', Dimension => [sub{42}, $p->arg('HOOK')]); # no error $p->tag('test.ary', Dimension => 'foo[4][1].a'); # (E) Cannot use index 4 into array of size 2 $p->tag('test.ary', Dimension => 'foo[1][3].a'); # (E) Cannot use index 3 into array of size 3 $p->tag('test.ary', Dimension => 'foo[1][-2].a'); # (E) Cannot use negative index -2 into array $p->tag('test.ary', Dimension => 'foo[1][1].a+8'); # (E) Cannot use offset in compound member expression $p->tag('test.ary', Dimension => 'foo[1][1].a'); # no error $x = $p->unpack('test.ary', 'x'x$p->sizeof('test.ary')); # (1) Missing parent to look up 'foo[1][1].a' $p->tag('test.foo', Dimension => undef); # no error $p->tag('dimtag_fail.array', Dimension => 'u.a.len[0]'); # no error (offset 1 + size 1 <= offset 3) $p->tag('dimtag_fail.array', Dimension => 'u.a.len[1]'); # no error (offset 2 + size 1 <= offset 3) $p->tag('dimtag_fail.array', Dimension => 'u.a.len[2]'); # (E) Cannot use member 'u.a.len[2]' located at same offset as 'dimtag_fail.array' in layout to determine a dimension $p->tag('dimtag_fail.array', Dimension => 'u.a.len[3]'); # (E) Cannot use member 'u.a.len[3]' located behind 'dimtag_fail.array' in layout to determine a dimension $p->tag('dimtag_fail.array', Dimension => 'u.b.len[0]'); # (E) Cannot use member 'u.b.len[0]' overlapping with 'dimtag_fail.array' in layout to determine a dimension $p->tag('dimtag_fail.array', Dimension => 'u.b.len[1]'); # (E) Cannot use member 'u.b.len[1]' located behind 'dimtag_fail.array' in layout to determine a dimension $p->tag('dimtag_fail.array', Dimension => undef); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # no error $p->tag('test.foo', Format => 'Binary'); # no error, just to fool Dimension tag... $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Expected an array reference to look up index '1' in 'foo[1][1].a', not a string value $p->tag('test.foo', Format => undef); # no error $p->tag('test.foo', Hooks => {unpack=>sub{[]}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot lookup index '1' in array of size '0' (in 'foo[1][1].a') $p->tag('test.foo', Hooks => undef); # no error $p->tag('inner_struct', Format => 'Binary'); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Expected a hash reference to look up member 'a' in 'foo[1][1].a', not a string value $p->tag('inner_struct', Format => undef); # no error $p->tag('inner_struct', Hooks => {unpack=>sub{{foo=>1}}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot find member 'a' in hash (in 'foo[1][1].a') $p->tag('inner_struct', Hooks => undef); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # no error (just to be safe) $p->tag('inner_struct.a', Hooks => {unpack=>sub{{}}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use a hash reference in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => {unpack=>sub{[]}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use an array reference in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => {unpack=>sub{sub{}}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use a code reference in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => {unpack=>sub{undef}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use an undefined value in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => {unpack=>sub{'foo'}}); # no error $x = $p->unpack('test', "\0"x$p->sizeof('test')); # (1) Cannot use a string value ('foo') in 'foo[1][1].a' as dimension $p->tag('inner_struct.a', Hooks => undef); # no error $p->tag('test.ary', Dimension => sub {1}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # no error $p->tag('test.ary', Dimension => sub {{}}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use a hash reference as dimension $p->tag('test.ary', Dimension => sub {[]}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use an array reference as dimension $p->tag('test.ary', Dimension => sub {sub{}}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use a code reference as dimension $p->tag('test.ary', Dimension => sub {undef}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use an undefined value as dimension $p->tag('test.ary', Dimension => sub {'foo'}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (1) Cannot use a string value ('foo') as dimension $p->tag('test.ary', Dimension => sub {die "BOO!!!"}); # no error $x = $p->unpack('test', 'x'x$p->sizeof('test')); # (E) BOO!!! $p->tag('test.ary', Dimension => undef); # no error $p->IntSize(4); $p->tag('char', Format => 'Binary'); # no error $p->tag('int', Format => 'Binary'); # no error $p->tag('array', Format => 'Binary'); # no error $p->tag('inner.u.x', Format => 'String'); # no error $x = $p->pack('char', 'xx'); # (1) Source string "xx" is longer (2 bytes) than 'char' (1 byte) while packing 'Binary' format $x = $p->pack('char', 'abcdefghijklmno'); # (1) /Source string "abcdefghijklmno" is longer \(15 bytes\) than 'char' \(1 byte\) while packing 'Binary' format/ $x = $p->pack('char', 'abcdefghijklmnop'); # (1) /Source string "abcdefghijkl\.\.\." is longer \(16 bytes\) than 'char' \(1 byte\) while packing 'Binary' format/ $x = $p->pack('char', 'abcdefghijklmnopq'); # (1) /Source string "abcdefghijkl\.\.\." is longer \(17 bytes\) than 'char' \(1 byte\) while packing 'Binary' format/ $x = $p->pack('char', 'abcdefghijklmnopqr'); # (1) /Source string "abcdefghijkl\.\.\." is longer \(18 bytes\) than 'char' \(1 byte\) while packing 'Binary' format/ $x = $p->pack('int', 'x'x5); # (1) Source string "xxxxx" is longer (5 bytes) than 'int' (4 bytes) while packing 'Binary' format $x = $p->pack('int', 'x'x43); # (1) /Source string "xxxxxxxxxxxx\.\.\." is longer \(43 bytes\) than 'int' \(4 bytes\) while packing 'Binary' format/ $x = $p->pack('int', { hash => 1 }); # (1) /Source string "HASH.*?" is longer \(\d+ bytes\) than 'int' \(4 bytes\) while packing 'Binary' format \(Are you sure you want to pack a reference type\?\)/ $x = $p->pack('int', [ 1, 2, 3 ]); # (1) /Source string "ARRAY.*?" is longer \(\d+ bytes\) than 'int' \(4 bytes\) while packing 'Binary' format \(Are you sure you want to pack a reference type\?\)/ $x = $p->pack('int', 'x'x4); # no warning $x = $p->pack('inner', { u => { x => 'x'x5 } }); # (1) Source string "xxxxx" is longer (5 bytes) than 'inner.u.x' (4 bytes) while packing 'String' format $x = $p->pack('inner', { u => { x => 'x'x42 } }); # (1) /Source string "xxxxxxxxxxxx\.\.\." is longer \(42 bytes\) than 'inner\.u\.x' \(4 bytes\) while packing 'String' format/ $x = $p->pack('inner', { u => { x => { hash => 1 } } }); # (1) /Source string "HASH.*?" is longer \(\d+ bytes\) than 'inner\.u\.x' \(4 bytes\) while packing 'String' format \(Are you sure you want to pack a reference type\?\)/ $x = $p->pack('inner', { u => { x => [ 1, 2, 3 ] } }); # (1) /Source string "ARRAY.*?" is longer \(\d+ bytes\) than 'inner\.u\.x' \(4 bytes\) while packing 'String' format \(Are you sure you want to pack a reference type\?\)/ $x = $p->pack('inner', { u => { x => 'x'x4 } }); # no warning $x = $p->unpack('int', ''); # (1) Data too short $x = $p->unpack('array', ''); # no warning $p->tag('char', Format => undef); # no error $p->tag('int', Format => undef); # no error $p->tag('array', Format => undef); # no error $p->tag('inner.u.x', Format => undef); # no error $p->tag('hasbf.bf.c', Format => 'Binary'); # (E) Cannot use 'Format' tag on bitfields $p->tag('hasbf.bf.c', ByteOrder => 'BigEndian'); # (E) Cannot use 'ByteOrder' tag on bitfields }, [0 .. 2], [qw( Convert::Binary::C Convert::Binary::C::Cached )]); sub id { $_[0] } sub rv0 { return () } sub rv2 { return ($_[0], 42) } sub eval_test { my($test, $levels, $classes) = @_; my(@warn, $p); $SIG{__WARN__} = sub { push @warn, shift }; my @tests; for (split $/, $test) { my $active = 1; print "# $_\n"; /^\s*$/ and next; /^\s*\/\// and next; my($c, $f, $l, $w) = /^(.*;)?(?:\s*#(?:\s*\[\s*([^\]]*?)\s*\])?(?:\s*\(([E\d])\))?\s*(.*?))?\s*$/; print "# [$c] [$f] [$l] [$w] => "; for my $feat (split /\s*,\s*/, $f) { my($neg, $name) = $feat =~ /(!?)\s*([-\w]+)/; my $have = Convert::Binary::C::feature($name); print "($name=$have) "; ($neg xor $have) or $active = 0; } printf "%sactive\n", $active ? '' : 'in'; if (defined $c) { push @tests, { code => $c, warnings => [] }; } if ($active and @tests and defined $l) { if ($w =~ m[ ^ / (.*) / $ ]x) { $w = $1; } else { $w = quotemeta $w; $w =~ s/(?:\\\s)+(?:\\\.){3}(?:\\\s)+/.*/g; } if ($l eq 'E') { $tests[-1]{error} = qr/$w/; } else { push @{$tests[-1]{warnings}}, { level => $l, regex => qr/$w.*?\s+at\s+\(eval\s+\d+\)/ }; } } } for $class (@$classes) { for $level (@$levels) { print <new( Alignment => 1, Warnings => $level == 2 ) }; ok($@, '', "failed to create $class object"); for my $t (@tests) { my @warnings = map { $_->{level} <= $level ? $_->{regex} : () } @{$t->{warnings}}; @warn = (); print "# evaluating code: $t->{code}\n"; eval $t->{code}; if ($@) { my $err = $@; $err =~ s/^/# /gms; $err =~ s/[\r\n]+$//gms; print "# error:\n$err\n"; } if (exists $t->{error}) { ok($@, $t->{error}, "wrong error"); } else { ok($@, '', "failed to evaluate code"); } chomp @warn; if (@warn) { printf "# got %d warning(s):\n", scalar @warn; for (@warn) { s/^/# /gms; s/[\r\n]+$//gms; print "$_\n"; } } else { print "# got no warnings\n"; } ok(scalar @warn, scalar @warnings, "got more/less warnings than expected"); if (@warn != @warnings) { for (0 .. ($#warnings > $#warn ? $#warnings : $#warn)) { print "# (", $_+1, ") '", $warn[$_] || 'undef', "' =~ /", $warnings[$_] || 'undef', "/\n"; } } ok($warn[$_], $warnings[$_]) for 0 .. $#warnings; } } } $SIG{__WARN__} = 'DEFAULT'; } __DATA__ #assert THIS(is) garbage #assert TEST(assertion) #if #TEST (assertion) typedef struct __nodef nodef; #endif #if #TEST (nothing) # error "boo!" #endif #ifdef FOO BLABLA #endif typedef union __hasbf hasbf; typedef struct ptrstruct *ptrtype; typedef int scalar; typedef float nonnative; typedef enum enu enumtype; enum enu { A }; struct test { int ival; enum yyy *xxx; union xxx *yyy; ptrtype *ptr; int (*test[2])[3]; struct inner_struct { int a; int b[2]; int c[2][3]; } foo[2][3]; struct { int a; union { enum enu a; struct { long *a; char b[10]; } str; } uni[5]; } ary[3][4]; int bar; }; union __hasbf { struct { int a:1; int b:2; int c:3; int :10; } bf; unsigned short nobf; }; struct multiple { long a; char b; short a; union { int c; unsigned b; }; }; enum e_unsafe { SAFE = 42, GOOD, UNSAFE = &2, /* pointer op makes it unsafe */ BAD }; typedef int t_unsafe[(char)600]; /* cast makes it unsafe */ struct s_unsafe { int foo[BAD]; /* uuuhhh!! */ }; typedef struct { enum { SAFE2 = 42, GOOD2, UNSAFE2 = *2, /* pointer op makes it unsafe */ BAD2 } noname; } e_unsafe_noname; typedef short float fp_unsupp; typedef struct { int b; struct { int x; char b[sizeof(int)]; } c; union { int x; char b[sizeof(int)]; } u; } inner; typedef struct { int a; inner; int d[6][6]; } stuff[12]; typedef int array[]; struct dimtag_fail { union { struct { char a; char len[]; /* starts at offset 1 */ } a; struct { short a; short len[]; /* starts at offset 2 */ } b; } u; char foo; int array[2]; /* starts at offset 3 */ }; Convert-Binary-C-0.76/tests/212_clean.t0000644000175000001440000000217411550664620016211 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:22 +0200 $ # $Revision: 16 $ # $Source: /tests/212_clean.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 6 } eval { $c = new Convert::Binary::C; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $c->clean; }; ok($@,'',"failed to clean object"); eval { $c->parse( 'typedef struct foo { enum bar { ZERO } baz; } mytype;' ); }; ok($@,'',"failed to parse code"); eval { $copy = $c->clean; }; ok($@,'',"failed to clean object"); ok($copy, $c, "clean does not return an object reference"); eval { my $foo = $c->struct; }; ok( $@, qr/without parse data/, "parse data check failed" ); Convert-Binary-C-0.76/tests/223_initializer.t0000644000175000001440000001444611550664620017461 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:24 +0200 $ # $Revision: 20 $ # $Source: /tests/223_initializer.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 27 } my $CCCFG = require 'tests/include/config.pl'; $c = eval { new Convert::Binary::C %$CCCFG }; ok($@,'',"failed to create Convert::Binary::C objects"); eval { $c->parse_file( 'tests/include/include.c' ) }; ok($@,'',"failed to parse C-file"); $full = $zero = $c->sourcify; for( $c->typedef_names ) { next if $c->sizeof($_) == 0; my $pre = "\n$_ S_$_ = "; my $post = ";\n"; my $init = $c->unpack( $_, $c->pack($_) ); $zero .= $pre . $c->initializer( $_ ) . $post; $full .= $pre . $c->initializer( $_, $init ) . $post; } $c = eval { new Convert::Binary::C }; ok($@,'',"failed to create Convert::Binary::C objects"); { my @warn; local $SIG{__WARN__} = sub { push @warn, $_[0] }; eval { $c->clean->parse( $zero ) }; ok($@,'',"failed to parse zero initialization code"); eval { $c->clean->parse( $full ) }; ok($@,'',"failed to parse full initialization code"); ok( @warn == 0 ); } for my $snip ( split /={40,}/, do { local $/; } ) { my($code, @tests) = split /-{40,}/, $snip; eval { $c->clean->parse($code) }; ok($@,'',"failed to parse code snippet"); for my $test ( @tests ) { $test =~ s/#.*//gm; my($data, $id, $ref) = $test =~ /^\s*(?:\$\s*=\s*(.*?))?\s*(\w+)\s*=\s*(.*?)\s*$/; my $init = defined $data ? $c->initializer( $id, eval $data ) : $c->initializer( $id ); $init =~ s/\s+//g; $ref =~ s/\s+//g; print "# ref : $ref\n# init: $init\n"; ok( $init, $ref, "wrong return value" ); } } __DATA__ /* check that only the first union member is initialized */ typedef union { int c[10]; struct { char a, b; } d[2]; } uni; struct xxx { int a; union { struct { int a, b; uni; } a; int b; int c[10][10]; } b; int c; }; struct test { union { union { union { int a; int b; int c; } d; int e; int f; } g; int h; int i; } j; union { union { union { int a; int b; int c; }; int e; int f; }; int h; int i; }; }; ------------------------------------------------------------------------------- xxx = { 0, { { 0, 0, { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, 0 } ------------------------------------------------------------------------------- uni = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } ------------------------------------------------------------------------------- test = { { { { 0 } } }, { { { 0 } } } } ------------------------------------------------------------------------------- $ = { j => { g => { d => { a => 42 } } }, a => -4711 } test = { { { { 42 } } }, { { { -4711 } } } } ------------------------------------------------------------------------------- $ = { j => { g => { d => { b => 42 } } }, e => -4711, a => 101 } test = { { { { 0 } } }, { { { 101 } } } } =============================================================================== /* just another example */ struct foo { int a; union { int a; struct { union { int a; char b; } a; int b; } b; char c; } b; struct { int a; union { struct { char a; int b; } a; int b; } b; char c; } c; int d; struct { int xa; int ba; }; }; ------------------------------------------------------------------------------- foo = { 0, { 0 }, { 0, { { 0, 0 } }, 0 }, 0, { 0, 0 } } =============================================================================== /* check that bitfields are working */ struct bits { int a:3; int :0; int c:2; int d:4; }; ------------------------------------------------------------------------------- bits = { 0, 0, 0 } ------------------------------------------------------------------------------- $ = { a => 3, c => 2, d => 1 } bits = { 3, 2, 1 } ------------------------------------------------------------------------------- $ = { a => 3, x => 2, d => 1 } bits = { 3, 0, 1 } =============================================================================== /* check that bitfield padding is skipped */ struct bits { int :7; int a:3; int c:2; int d:4; }; ------------------------------------------------------------------------------- bits = { 0, 0, 0 } =============================================================================== /* taken from the docs, this revealed a bug introduced * with flexible array members */ struct date { unsigned year : 12; unsigned month: 4; unsigned day : 5; unsigned hour : 5; unsigned min : 6; }; typedef struct { enum { DATE, QWORD } type; short number; union { struct date date; unsigned long qword; } choice; } data; ------------------------------------------------------------------------------- data = { 0, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # we should be able to initialize enums $ = { type => 1 } data = { 1, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # even when out of range $ = { type => 2 } data = { 2, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # also by name $ = { type => 'DATE' } data = { DATE, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # even if it doesn't exist (could be some define) $ = { type => 'SOMETHING' } data = { SOMETHING, 0, { { 0, 0, 0, 0, 0 } } } ------------------------------------------------------------------------------- # this should work for 'normal' types as well $ = { number => 'SOMETHING' } data = { 0, SOMETHING, { { 0, 0, 0, 0, 0 } } } Convert-Binary-C-0.76/tests/202_misc.t0000644000175000001440000002135411550664620016062 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:21 +0200 $ # $Revision: 33 $ # $Source: /tests/202_misc.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 207 } #=================================================================== # perform some average stuff #=================================================================== eval { $p = new Convert::Binary::C PointerSize => 4, EnumSize => 4, IntSize => 4, LongSize => 4, Alignment => 2, ByteOrder => 'BigEndian', EnumType => 'String'; $q = new Convert::Binary::C; }; ok($@,''); #----------------------------------- # create some average ( ?? :-) code #----------------------------------- $code = <<'CCODE'; #define ONLY_ONE 1 typedef struct abc abc_type; typedef struct never ever; struct abc { abc_type *p1; #if ONLY_ONE > 1 abc_type *p2; #endif }; typedef unsigned long u32; #define Day( which ) \ which ## DAY typedef enum { Day( MON ), Day( TUES ), Day( WEDNES ), } day; # \ define __SIX__ \ ( sizeof( unsigned char * ) + sizeof( short ) ) # define SIXTEEN \ (sizeof "Hello\"\xfworld\069!") typedef union zap { signed long za[__SIX__]; short zb[SIXTEEN]; char zc[sizeof(struct never (*[2][3])[4])]; ever *zd[sizeof( abc_type )]; } ZAP; CCODE #----------------------- # try to parse the code #----------------------- eval { $p->parse( $code ); $q->parse( $code ); }; ok($@,''); #------------------------ # reconfigure the parser #------------------------ eval { $p->configure( Alignment => 8, EnumSize => 0 ); }; ok($@,''); #-------------------------------- # and parse some additional code #-------------------------------- $code = <<'CCODE'; typedef struct { abc_type xxx; u32 dusel, *fusel; int musel[((1<<1)+4)&0x00000002]; union { char bytes[(12/2)%4][(0x10|010)>>3]; day today; long value; } test; struct ints fubar; union zap hello; } husel; #pragma pack( push, 1 ) struct packer { char i; short am; char really; long packed; }; #pragma pack( pop ) struct nopack { char i; short am; char not; long packed; }; CCODE $c99_code = <<'CCODE' . $code; #define \ MYINTS( ... \ ) { int __VA_ARGS__; } struct ints MYINTS( a, b, c ); CCODE #----------------------- # try to parse the code #----------------------- eval { $q->HasMacroVAARGS( 0 ); $q->parse( $c99_code ); }; ok($@,qr/invalid macro argument/); eval { $p->parse( $c99_code ) }; ok($@,''); #------------------------ # reconfigure the parser #------------------------ eval { $p->Alignment( 4 ) }; ok($@,''); #------------------- # test some offsets #------------------- ok($p->offsetof('packer', 'i'), 0); ok($p->offsetof('packer', 'am'), 1); ok($p->offsetof('packer', 'really'), 3); ok($p->offsetof('packer', 'packed'), 4); ok($p->offsetof('nopack', 'i'), 0); ok($p->offsetof('nopack', 'am'), 2); ok($p->offsetof('nopack', 'not'), 4); ok($p->offsetof('nopack', 'packed'), 8); #------------------------ # now try some unpacking #------------------------ # on a pack()ed struct $data = pack( 'cnCN', -47, 0x1234, 0x55, 2000000000 ); eval { $result = $p->unpack( 'packer', $data ) }; ok($@,''); $refres = { i => -47, am => 0x1234, really => 0x55, packed => 2000000000, }; reccmp( $refres, $result ); # on a 'normal' struct $data = pack( 'cxnCx3N', -47, 0x1234, 0x55, 2000000000 ); eval { $result = $p->unpack( 'nopack', $data ) }; ok($@,''); $refres = { i => -47, am => 0x1234, not => 0x55, packed => 2000000000, }; reccmp( $refres, $result ); #----------------------- # test something bigger #----------------------- $data = pack( "N5c8N3C48", 123, 4711, 0xDEADBEEF, -42, 42, 1, 0, 0, 0, -2, 3, 0, 0, -10000, 5000, 8000, 1..48 ); eval { $result = $p->unpack( 'husel', $data ) }; ok($@,''); eval { undef $p }; ok($@,''); $refres = { xxx => { p1 => 123 }, dusel => 4711, fusel => 0xDEADBEEF, musel => [ -42, 42 ], test => { bytes => [ [ 1, 0, 0 ], [ 0, -2, 3 ] ], today => 'TUESDAY', value => 16777216, }, fubar => { a => -10000, b => 5000, c => 8000, }, hello => { za => [16909060, 84281096, 151653132, 219025168, 286397204, 353769240], zb => [258, 772, 1286, 1800, 2314, 2828, 3342, 3856, 4370, 4884, 5398, 5912, 6426, 6940, 7454, 7968], zc => [1..24], zd => [16909060, 84281096, 151653132, 219025168], }, }; reccmp( $refres, $result ); #------------------------------------------------ # test pack/unpack/sizeof/typeof for basic types #------------------------------------------------ $p = new Convert::Binary::C; @tests = ( ['char', $p->CharSize ], ['short', $p->ShortSize ], ['int', $p->IntSize ], ['long', $p->LongSize ], ['long long', $p->LongLongSize ], ['float', $p->FloatSize ], ['double', $p->DoubleSize ], ['long double', $p->LongDoubleSize], ); for( @tests ) { my $size = eval { $p->sizeof( $_->[0] ) }; ok( $@, '' ); ok( $size, $_->[1] ); } check_basic( $p ); # must work without parse data, too $p->clean; check_basic( $p ); #-------------------------------- # test offsetof in strange cases #-------------------------------- eval { $p->configure( IntSize => 4 , LongSize => 4 , PointerSize => 4 , EnumSize => 4 , Alignment => 4 )->parse(<offsetof( $_->[0], $_->[1] ) }; ok( $@, '' ); ok( $off, $_->[2] ); } ok( scalar @warn, 1 ); ok( $warn[0], qr/^Empty string passed as member expression/ ); #------------------------------ # some simple tests for member #------------------------------ @tests = ( ['foo', '.ary[0].x', 4], ['foo.ary[2]', '.x', 0], ['foo.ary[2]', '.y', 4], ['foo.ary', '[2].y', 20], ['foo.aryary[2]', '[2].y', 20], ['a', '[9]', 36], ['test', '.zap[5].day', 64], ['test.zap[2]', '.day', 4], ['test', '.zap[5].day+1', 65], ); @warn = (); ok( $@, '' ); for( @tests ) { my @m = eval { $p->member( $_->[0], $_->[2] ) }; ok( $@, '' ); ok( scalar @m, 1 ); ok( $m[0], $_->[1] ); } ok( scalar @warn, 0 ); #------------------------------ # test 64-bit negative numbers #------------------------------ $p->clean->parse(<LongLongSize(8); for my $bo (qw( BigEndian LittleEndian )) { $p->ByteOrder($bo); my $x = $p->pack('i_64', -1); ok($x, pack('C*', (255)x8)); } sub check_basic { my $c = shift; for my $t ( 'signed char' , 'unsigned short int' , 'long int' , 'signed int' , 'long long' ) { ok( eval { $c->typeof( $t ) }, $t ); ok( eval { $c->sizeof( $t ) } > 0 ); ok( eval { $c->unpack( $t, $c->pack($t, 42) ) }, 42 ); } } sub reccmp { my($ref, $val) = @_; my $id = ref $ref; unless( $id ) { ok( $ref, $val ); return; } if( $id eq 'ARRAY' ) { ok( @$ref == @$val ); for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ); } } elsif( $id eq 'HASH' ) { ok( @{[keys %$ref]} == @{[keys %$val]} ); for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ); } } } Convert-Binary-C-0.76/tests/215_local.t0000644000175000001440000000377311550664620016232 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:23 +0200 $ # $Revision: 16 $ # $Source: /tests/215_local.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 10; } my $CCCFG = require 'tests/include/config.pl'; eval { $c = new Convert::Binary::C; }; ok($@,'',"failed to create Convert::Binary::C::Cached object"); eval { $c->parse( <<'ENDC' ); enum Zoo { APE, BEAR }; static int a = 23; static int test( int abc ) { int x, y; y = abc; x = y * y; return x; } static void foo( void ) { enum Bar { FOO, BAR } xxx; typedef enum _foo foo; struct _bar { int test; struct _bar *xxx; }; { enum Bar; struct _bar; } } typedef unsigned long u_32; static void bar( void ) { enum Bar { BAR, FOO } xxx; typedef enum _foo foo; struct _bar { int test; struct _bar *xxx; }; } struct _bar { int foo; }; ENDC }; ok($@,'',"failed to parse code"); # check that only global types have been parsed eval { @enum = $c->enum; @comp = $c->compound; @type = $c->typedef; }; ok($@,'',"failed to get types"); ok( scalar @enum, 1, "got more/less enums than expected" ); ok( scalar @comp, 1, "got more/less compounds than expected" ); ok( scalar @type, 1, "got more/less typedefs than expected" ); ok( $enum[0]{identifier}, "Zoo" ); ok( $comp[0]{identifier}, "_bar" ); ok( $type[0]{declarator}, "u_32" ); # this file has some local types, just check if it parses correctly eval { $c->clean->configure(%$CCCFG)->parse_file('tests/include/util.c'); }; ok($@,'',"failed to parse file"); Convert-Binary-C-0.76/tests/include/0000755000175000001440000000000011550665107015776 5ustar mhxusersConvert-Binary-C-0.76/tests/include/files/0000755000175000001440000000000011550665107017100 5ustar mhxusersConvert-Binary-C-0.76/tests/include/files/empty.h0000644000175000001440000000000011550664622020376 0ustar mhxusersConvert-Binary-C-0.76/tests/include/files/files.h0000644000175000001440000000012111550664623020347 0ustar mhxusers#include #include #include #include Convert-Binary-C-0.76/tests/include/files/unmatched.h0000644000175000001440000000000611550664623021217 0ustar mhxusers#if 0 Convert-Binary-C-0.76/tests/include/files/nldos.h0000644000175000001440000000002211550664623020364 0ustar mhxuserstypedef int foo; Convert-Binary-C-0.76/tests/include/files/nlmac.h0000644000175000001440000000002111550664623020336 0ustar mhxuserstypedef int foo; Convert-Binary-C-0.76/tests/include/files/nlnone.h0000644000175000001440000000002011550664623020534 0ustar mhxuserstypedef int foo;Convert-Binary-C-0.76/tests/include/files/nlunix.h0000644000175000001440000000002111550664623020561 0ustar mhxuserstypedef int foo; Convert-Binary-C-0.76/tests/include/files/ifnonl.h0000644000175000001440000000001411550664623020533 0ustar mhxusers#if 1 #endifConvert-Binary-C-0.76/tests/include/files/something.h0000644000175000001440000000003111550664623021242 0ustar mhxusersstruct foo { int bar; }; Convert-Binary-C-0.76/tests/include/files/ifnull.h0000644000175000001440000000004411550664623020542 0ustar mhxusers#if 0 #include #endif Convert-Binary-C-0.76/tests/include/files/ifdef.h0000644000175000001440000000010311550664623020322 0ustar mhxusers#ifdef TEST #include struct bar { int foo; }; #endif Convert-Binary-C-0.76/tests/include/files/trigraph.h0000644000175000001440000000007411550664623021074 0ustar mhxusers??=define FOO #ifdef FOO typedef char array??(42??); #endif Convert-Binary-C-0.76/tests/include/config.pl0000644000175000001440000000020611550664622017577 0ustar mhxusers{ Include => ['tests/include/gccinc', 'tests/include/include', 'tests/include/perlinc'], Define => ['__builtin_va_list=int'], }; Convert-Binary-C-0.76/tests/include/gccinc/0000755000175000001440000000000011550665107017224 5ustar mhxusersConvert-Binary-C-0.76/tests/include/gccinc/float.h0000644000175000001440000001237411550664623020513 0ustar mhxusers/* Copyright (C) 2002 Free Software Foundation, Inc. This file is part of GNU CC. GNU CC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU CC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* As a special exception, if you include this header file into source files compiled by GCC, this header file does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License. */ /* * ISO C Standard: 5.2.4.2.2 Characteristics of floating types */ #ifndef _FLOAT_H___ #define _FLOAT_H___ /* Radix of exponent representation, b. */ #undef FLT_RADIX #define FLT_RADIX __FLT_RADIX__ /* Number of base-FLT_RADIX digits in the significand, p. */ #undef FLT_MANT_DIG #undef DBL_MANT_DIG #undef LDBL_MANT_DIG #define FLT_MANT_DIG __FLT_MANT_DIG__ #define DBL_MANT_DIG __DBL_MANT_DIG__ #define LDBL_MANT_DIG __LDBL_MANT_DIG__ /* Number of decimal digits, q, such that any floating-point number with q decimal digits can be rounded into a floating-point number with p radix b digits and back again without change to the q decimal digits, p * log10(b) if b is a power of 10 floor((p - 1) * log10(b)) otherwise */ #undef FLT_DIG #undef DBL_DIG #undef LDBL_DIG #define FLT_DIG __FLT_DIG__ #define DBL_DIG __DBL_DIG__ #define LDBL_DIG __LDBL_DIG__ /* Minimum int x such that FLT_RADIX**(x-1) is a normalized float, emin */ #undef FLT_MIN_EXP #undef DBL_MIN_EXP #undef LDBL_MIN_EXP #define FLT_MIN_EXP __FLT_MIN_EXP__ #define DBL_MIN_EXP __DBL_MIN_EXP__ #define LDBL_MIN_EXP __LDBL_MIN_EXP__ /* Minimum negative integer such that 10 raised to that power is in the range of normalized floating-point numbers, ceil(log10(b) * (emin - 1)) */ #undef FLT_MIN_10_EXP #undef DBL_MIN_10_EXP #undef LDBL_MIN_10_EXP #define FLT_MIN_10_EXP __FLT_MIN_10_EXP__ #define DBL_MIN_10_EXP __DBL_MIN_10_EXP__ #define LDBL_MIN_10_EXP __LDBL_MIN_10_EXP__ /* Maximum int x such that FLT_RADIX**(x-1) is a representable float, emax. */ #undef FLT_MAX_EXP #undef DBL_MAX_EXP #undef LDBL_MAX_EXP #define FLT_MAX_EXP __FLT_MAX_EXP__ #define DBL_MAX_EXP __DBL_MAX_EXP__ #define LDBL_MAX_EXP __LDBL_MAX_EXP__ /* Maximum integer such that 10 raised to that power is in the range of representable finite floating-point numbers, floor(log10((1 - b**-p) * b**emax)) */ #undef FLT_MAX_10_EXP #undef DBL_MAX_10_EXP #undef LDBL_MAX_10_EXP #define FLT_MAX_10_EXP __FLT_MAX_10_EXP__ #define DBL_MAX_10_EXP __DBL_MAX_10_EXP__ #define LDBL_MAX_10_EXP __LDBL_MAX_10_EXP__ /* Maximum representable finite floating-point number, (1 - b**-p) * b**emax */ #undef FLT_MAX #undef DBL_MAX #undef LDBL_MAX #define FLT_MAX __FLT_MAX__ #define DBL_MAX __DBL_MAX__ #define LDBL_MAX __LDBL_MAX__ /* The difference between 1 and the least value greater than 1 that is representable in the given floating point type, b**1-p. */ #undef FLT_EPSILON #undef DBL_EPSILON #undef LDBL_EPSILON #define FLT_EPSILON __FLT_EPSILON__ #define DBL_EPSILON __DBL_EPSILON__ #define LDBL_EPSILON __LDBL_EPSILON__ /* Minimum normalized positive floating-point number, b**(emin - 1). */ #undef FLT_MIN #undef DBL_MIN #undef LDBL_MIN #define FLT_MIN __FLT_MIN__ #define DBL_MIN __DBL_MIN__ #define LDBL_MIN __LDBL_MIN__ /* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown. */ /* ??? This is supposed to change with calls to fesetround in . */ #undef FLT_ROUNDS #define FLT_ROUNDS 1 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* The floating-point expression evaluation method. -1 indeterminate 0 evaluate all operations and constants just to the range and precision of the type 1 evaluate operations and constants of type float and double to the range and precision of the double type, evaluate long double operations and constants to the range and precision of the long double type 2 evaluate all operations and constants to the range and precision of the long double type ??? This ought to change with the setting of the fp control word; the value provided by the compiler assumes the widest setting. */ #undef FLT_EVAL_METHOD #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ /* Number of decimal digits, n, such that any floating-point number in the widest supported floating type with pmax radix b digits can be rounded to a floating-point number with n decimal digits and back again without change to the value, pmax * log10(b) if b is a power of 10 ceil(1 + pmax * log10(b)) otherwise */ #undef DECIMAL_DIG #define DECIMAL_DIG __DECIMAL_DIG__ #endif /* C99 */ #endif /* _FLOAT_H___ */ Convert-Binary-C-0.76/tests/include/gccinc/syslimits.h0000644000175000001440000000051211550664623021435 0ustar mhxusers/* syslimits.h stands for the system's own limits.h file. If we can use it ok unmodified, then we install this text. If fixincludes fixes it, then the fixed version is installed instead of this text. */ #define _GCC_NEXT_LIMITS_H /* tell gcc's limits.h to recurse */ #include_next #undef _GCC_NEXT_LIMITS_H Convert-Binary-C-0.76/tests/include/gccinc/stdarg.h0000644000175000001440000001034511550664623020666 0ustar mhxusers/* Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of GNU CC. GNU CC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU CC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* As a special exception, if you include this header file into source files compiled by GCC, this header file does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License. */ /* * ISO C Standard: 7.15 Variable arguments */ #ifndef _STDARG_H #ifndef _ANSI_STDARG_H_ #ifndef __need___va_list #define _STDARG_H #define _ANSI_STDARG_H_ #endif /* not __need___va_list */ #undef __need___va_list /* Define __gnuc_va_list. */ #ifndef __GNUC_VA_LIST #define __GNUC_VA_LIST typedef __builtin_va_list __gnuc_va_list; #endif /* Define the standard macros for the user, if this invocation was from the user program. */ #ifdef _STDARG_H #define va_start(v,l) __builtin_va_start(v,l) #define va_end(v) __builtin_va_end(v) #define va_arg(v,l) __builtin_va_arg(v,l) #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L #define va_copy(d,s) __builtin_va_copy(d,s) #endif #define __va_copy(d,s) __builtin_va_copy(d,s) /* Define va_list, if desired, from __gnuc_va_list. */ /* We deliberately do not define va_list when called from stdio.h, because ANSI C says that stdio.h is not supposed to define va_list. stdio.h needs to have access to that data type, but must not use that name. It should use the name __gnuc_va_list, which is safe because it is reserved for the implementation. */ #ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ #undef _VA_LIST #endif #ifdef _BSD_VA_LIST #undef _BSD_VA_LIST #endif #if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST)) /* SVR4.2 uses _VA_LIST for an internal alias for va_list, so we must avoid testing it and setting it here. SVR4 uses _VA_LIST as a flag in stdarg.h, but we should have no conflict with that. */ #ifndef _VA_LIST_ #define _VA_LIST_ #ifdef __i860__ #ifndef _VA_LIST #define _VA_LIST va_list #endif #endif /* __i860__ */ typedef __gnuc_va_list va_list; #ifdef _SCO_DS #define __VA_LIST #endif #endif /* _VA_LIST_ */ #else /* not __svr4__ || _SCO_DS */ /* The macro _VA_LIST_ is the same thing used by this file in Ultrix. But on BSD NET2 we must not test or define or undef it. (Note that the comments in NET 2's ansi.h are incorrect for _VA_LIST_--see stdio.h!) */ #if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT) /* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */ #ifndef _VA_LIST_DEFINED /* The macro _VA_LIST is used in SCO Unix 3.2. */ #ifndef _VA_LIST /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ #ifndef _VA_LIST_T_H /* The macro __va_list__ is used by BeOS. */ #ifndef __va_list__ typedef __gnuc_va_list va_list; #endif /* not __va_list__ */ #endif /* not _VA_LIST_T_H */ #endif /* not _VA_LIST */ #endif /* not _VA_LIST_DEFINED */ #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) #define _VA_LIST_ #endif #ifndef _VA_LIST #define _VA_LIST #endif #ifndef _VA_LIST_DEFINED #define _VA_LIST_DEFINED #endif #ifndef _VA_LIST_T_H #define _VA_LIST_T_H #endif #ifndef __va_list__ #define __va_list__ #endif #endif /* not _VA_LIST_, except on certain systems */ #endif /* not __svr4__ */ #endif /* _STDARG_H */ #endif /* not _ANSI_STDARG_H_ */ #endif /* not _STDARG_H */ Convert-Binary-C-0.76/tests/include/gccinc/stddef.h0000644000175000001440000003062711550664623020660 0ustar mhxusers/* Copyright (C) 1989, 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. This file is part of GNU CC. GNU CC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU CC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* As a special exception, if you include this header file into source files compiled by GCC, this header file does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License. */ /* * ISO C Standard: 7.17 Common definitions */ #if (!defined(_STDDEF_H) && !defined(_STDDEF_H_) && !defined(_ANSI_STDDEF_H) \ && !defined(__STDDEF_H__)) \ || defined(__need_wchar_t) || defined(__need_size_t) \ || defined(__need_ptrdiff_t) || defined(__need_NULL) \ || defined(__need_wint_t) /* Any one of these symbols __need_* means that GNU libc wants us just to define one data type. So don't define the symbols that indicate this file's entire job has been done. */ #if (!defined(__need_wchar_t) && !defined(__need_size_t) \ && !defined(__need_ptrdiff_t) && !defined(__need_NULL) \ && !defined(__need_wint_t)) #define _STDDEF_H #define _STDDEF_H_ /* snaroff@next.com says the NeXT needs this. */ #define _ANSI_STDDEF_H /* Irix 5.1 needs this. */ #define __STDDEF_H__ #endif #ifndef __sys_stdtypes_h /* This avoids lossage on SunOS but only if stdtypes.h comes first. There's no way to win with the other order! Sun lossage. */ /* On 4.3bsd-net2, make sure ansi.h is included, so we have one less case to deal with in the following. */ #if defined (__BSD_NET2__) || defined (____386BSD____) || (defined (__FreeBSD__) && (__FreeBSD__ < 5)) || defined(__NetBSD__) #include #endif /* On FreeBSD 5, machine/ansi.h does not exist anymore... */ #if defined (__FreeBSD__) && (__FreeBSD__ >= 5) #include #endif /* In 4.3bsd-net2, machine/ansi.h defines these symbols, which are defined if the corresponding type is *not* defined. FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_ */ #if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) #if !defined(_SIZE_T_) && !defined(_BSD_SIZE_T_) #define _SIZE_T #endif #if !defined(_PTRDIFF_T_) && !defined(_BSD_PTRDIFF_T_) #define _PTRDIFF_T #endif /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_ instead of _WCHAR_T_. */ #if !defined(_WCHAR_T_) && !defined(_BSD_WCHAR_T_) #ifndef _BSD_WCHAR_T_ #define _WCHAR_T #endif #endif /* Undef _FOO_T_ if we are supposed to define foo_t. */ #if defined (__need_ptrdiff_t) || defined (_STDDEF_H_) #undef _PTRDIFF_T_ #undef _BSD_PTRDIFF_T_ #endif #if defined (__need_size_t) || defined (_STDDEF_H_) #undef _SIZE_T_ #undef _BSD_SIZE_T_ #endif #if defined (__need_wchar_t) || defined (_STDDEF_H_) #undef _WCHAR_T_ #undef _BSD_WCHAR_T_ #endif #endif /* defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) */ /* Sequent's header files use _PTRDIFF_T_ in some conflicting way. Just ignore it. */ #if defined (__sequent__) && defined (_PTRDIFF_T_) #undef _PTRDIFF_T_ #endif /* On VxWorks, may have defined macros like _TYPE_size_t which will typedef size_t. fixincludes patched the vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is not defined, and so that defining this macro defines _GCC_SIZE_T. If we find that the macros are still defined at this point, we must invoke them so that the type is defined as expected. */ #if defined (_TYPE_ptrdiff_t) && (defined (__need_ptrdiff_t) || defined (_STDDEF_H_)) _TYPE_ptrdiff_t; #undef _TYPE_ptrdiff_t #endif #if defined (_TYPE_size_t) && (defined (__need_size_t) || defined (_STDDEF_H_)) _TYPE_size_t; #undef _TYPE_size_t #endif #if defined (_TYPE_wchar_t) && (defined (__need_wchar_t) || defined (_STDDEF_H_)) _TYPE_wchar_t; #undef _TYPE_wchar_t #endif /* In case nobody has defined these types, but we aren't running under GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and __WCHAR_TYPE__ have reasonable values. This can happen if the parts of GCC is compiled by an older compiler, that actually include gstddef.h, such as collect2. */ /* Signed type of difference of two pointers. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ #if defined (_STDDEF_H) || defined (__need_ptrdiff_t) #ifndef _PTRDIFF_T /* in case has defined it. */ #ifndef _T_PTRDIFF_ #ifndef _T_PTRDIFF #ifndef __PTRDIFF_T #ifndef _PTRDIFF_T_ #ifndef _BSD_PTRDIFF_T_ #ifndef ___int_ptrdiff_t_h #ifndef _GCC_PTRDIFF_T #define _PTRDIFF_T #define _T_PTRDIFF_ #define _T_PTRDIFF #define __PTRDIFF_T #define _PTRDIFF_T_ #define _BSD_PTRDIFF_T_ #define ___int_ptrdiff_t_h #define _GCC_PTRDIFF_T #ifndef __PTRDIFF_TYPE__ #define __PTRDIFF_TYPE__ long int #endif typedef __PTRDIFF_TYPE__ ptrdiff_t; #endif /* _GCC_PTRDIFF_T */ #endif /* ___int_ptrdiff_t_h */ #endif /* _BSD_PTRDIFF_T_ */ #endif /* _PTRDIFF_T_ */ #endif /* __PTRDIFF_T */ #endif /* _T_PTRDIFF */ #endif /* _T_PTRDIFF_ */ #endif /* _PTRDIFF_T */ /* If this symbol has done its job, get rid of it. */ #undef __need_ptrdiff_t #endif /* _STDDEF_H or __need_ptrdiff_t. */ /* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ #if defined (_STDDEF_H) || defined (__need_size_t) #ifndef __size_t__ /* BeOS */ #ifndef __SIZE_T__ /* Cray Unicos/Mk */ #ifndef _SIZE_T /* in case has defined it. */ #ifndef _SYS_SIZE_T_H #ifndef _T_SIZE_ #ifndef _T_SIZE #ifndef __SIZE_T #ifndef _SIZE_T_ #ifndef _BSD_SIZE_T_ #ifndef _SIZE_T_DEFINED_ #ifndef _SIZE_T_DEFINED #ifndef _BSD_SIZE_T_DEFINED_ /* Darwin */ #ifndef _SIZE_T_DECLARED /* FreeBSD 5 */ #ifndef ___int_size_t_h #ifndef _GCC_SIZE_T #ifndef _SIZET_ #ifndef __size_t #define __size_t__ /* BeOS */ #define __SIZE_T__ /* Cray Unicos/Mk */ #define _SIZE_T #define _SYS_SIZE_T_H #define _T_SIZE_ #define _T_SIZE #define __SIZE_T #define _SIZE_T_ #define _BSD_SIZE_T_ #define _SIZE_T_DEFINED_ #define _SIZE_T_DEFINED #define _BSD_SIZE_T_DEFINED_ /* Darwin */ #define _SIZE_T_DECLARED /* FreeBSD 5 */ #define ___int_size_t_h #define _GCC_SIZE_T #define _SIZET_ #if defined (__FreeBSD__) && (__FreeBSD__ >= 5) /* __size_t is a typedef on FreeBSD 5!, must not trash it. */ #else #define __size_t #endif #ifndef __SIZE_TYPE__ #define __SIZE_TYPE__ long unsigned int #endif #if !(defined (__GNUG__) && defined (size_t)) typedef __SIZE_TYPE__ size_t; #ifdef __BEOS__ typedef long ssize_t; #endif /* __BEOS__ */ #endif /* !(defined (__GNUG__) && defined (size_t)) */ #endif /* __size_t */ #endif /* _SIZET_ */ #endif /* _GCC_SIZE_T */ #endif /* ___int_size_t_h */ #endif /* _SIZE_T_DECLARED */ #endif /* _BSD_SIZE_T_DEFINED_ */ #endif /* _SIZE_T_DEFINED */ #endif /* _SIZE_T_DEFINED_ */ #endif /* _BSD_SIZE_T_ */ #endif /* _SIZE_T_ */ #endif /* __SIZE_T */ #endif /* _T_SIZE */ #endif /* _T_SIZE_ */ #endif /* _SYS_SIZE_T_H */ #endif /* _SIZE_T */ #endif /* __SIZE_T__ */ #endif /* __size_t__ */ #undef __need_size_t #endif /* _STDDEF_H or __need_size_t. */ /* Wide character type. Locale-writers should change this as necessary to be big enough to hold unique values not between 0 and 127, and not (wchar_t) -1, for each defined multibyte character. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ #if defined (_STDDEF_H) || defined (__need_wchar_t) #ifndef __wchar_t__ /* BeOS */ #ifndef __WCHAR_T__ /* Cray Unicos/Mk */ #ifndef _WCHAR_T #ifndef _T_WCHAR_ #ifndef _T_WCHAR #ifndef __WCHAR_T #ifndef _WCHAR_T_ #ifndef _BSD_WCHAR_T_ #ifndef _BSD_WCHAR_T_DEFINED_ /* Darwin */ #ifndef _BSD_RUNE_T_DEFINED_ /* Darwin */ #ifndef _WCHAR_T_DECLARED /* FreeBSD 5 */ #ifndef _WCHAR_T_DEFINED_ #ifndef _WCHAR_T_DEFINED #ifndef _WCHAR_T_H #ifndef ___int_wchar_t_h #ifndef __INT_WCHAR_T_H #ifndef _GCC_WCHAR_T #define __wchar_t__ /* BeOS */ #define __WCHAR_T__ /* Cray Unicos/Mk */ #define _WCHAR_T #define _T_WCHAR_ #define _T_WCHAR #define __WCHAR_T #define _WCHAR_T_ #define _BSD_WCHAR_T_ #define _WCHAR_T_DEFINED_ #define _WCHAR_T_DEFINED #define _WCHAR_T_H #define ___int_wchar_t_h #define __INT_WCHAR_T_H #define _GCC_WCHAR_T #define _WCHAR_T_DECLARED /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_ instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other symbols in the _FOO_T_ family, stays defined even after its corresponding type is defined). If we define wchar_t, then we must undef _WCHAR_T_; for BSD/386 1.1 (and perhaps others), if we undef _WCHAR_T_, then we must also define rune_t, since headers like runetype.h assume that if machine/ansi.h is included, and _BSD_WCHAR_T_ is not defined, then rune_t is available. machine/ansi.h says, "Note that _WCHAR_T_ and _RUNE_T_ must be of the same type." */ #ifdef _BSD_WCHAR_T_ #undef _BSD_WCHAR_T_ #ifdef _BSD_RUNE_T_ #if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE) typedef _BSD_RUNE_T_ rune_t; #define _BSD_WCHAR_T_DEFINED_ #define _BSD_RUNE_T_DEFINED_ /* Darwin */ #if defined (__FreeBSD__) && (__FreeBSD__ < 5) /* Why is this file so hard to maintain properly? In constrast to the comment above regarding BSD/386 1.1, on FreeBSD for as long as the symbol has existed, _BSD_RUNE_T_ must not stay defined or redundant typedefs will occur when stdlib.h is included after this file. */ #undef _BSD_RUNE_T_ #endif #endif #endif #endif /* FreeBSD 5 can't be handled well using "traditional" logic above since it no longer defines _BSD_RUNE_T_ yet still desires to export rune_t in some cases... */ #if defined (__FreeBSD__) && (__FreeBSD__ >= 5) #if !defined (_ANSI_SOURCE) && !defined (_POSIX_SOURCE) #if __BSD_VISIBLE #ifndef _RUNE_T_DECLARED typedef __rune_t rune_t; #define _RUNE_T_DECLARED #endif #endif #endif #endif #ifndef __WCHAR_TYPE__ #define __WCHAR_TYPE__ int #endif #ifndef __cplusplus typedef __WCHAR_TYPE__ wchar_t; #endif #endif #endif #endif #endif #endif #endif #endif /* _WCHAR_T_DECLARED */ #endif /* _BSD_RUNE_T_DEFINED_ */ #endif #endif #endif #endif #endif #endif #endif #endif /* __WCHAR_T__ */ #endif /* __wchar_t__ */ #undef __need_wchar_t #endif /* _STDDEF_H or __need_wchar_t. */ #if defined (__need_wint_t) #ifndef _WINT_T #define _WINT_T #ifndef __WINT_TYPE__ #define __WINT_TYPE__ unsigned int #endif typedef __WINT_TYPE__ wint_t; #endif #undef __need_wint_t #endif /* In 4.3bsd-net2, leave these undefined to indicate that size_t, etc. are already defined. */ /* BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here. */ #if defined(_ANSI_H_) || defined(_MACHINE_ANSI_H_) /* The references to _GCC_PTRDIFF_T_, _GCC_SIZE_T_, and _GCC_WCHAR_T_ are probably typos and should be removed before 2.8 is released. */ #ifdef _GCC_PTRDIFF_T_ #undef _PTRDIFF_T_ #undef _BSD_PTRDIFF_T_ #endif #ifdef _GCC_SIZE_T_ #undef _SIZE_T_ #undef _BSD_SIZE_T_ #endif #ifdef _GCC_WCHAR_T_ #undef _WCHAR_T_ #undef _BSD_WCHAR_T_ #endif /* The following ones are the real ones. */ #ifdef _GCC_PTRDIFF_T #undef _PTRDIFF_T_ #undef _BSD_PTRDIFF_T_ #endif #ifdef _GCC_SIZE_T #undef _SIZE_T_ #undef _BSD_SIZE_T_ #endif #ifdef _GCC_WCHAR_T #undef _WCHAR_T_ #undef _BSD_WCHAR_T_ #endif #endif /* _ANSI_H_ || _MACHINE_ANSI_H_ */ #endif /* __sys_stdtypes_h */ /* A null pointer constant. */ #if defined (_STDDEF_H) || defined (__need_NULL) #undef NULL /* in case has defined it. */ #ifdef __GNUG__ #define NULL __null #else /* G++ */ #ifndef __cplusplus #define NULL ((void *)0) #else /* C++ */ #define NULL 0 #endif /* C++ */ #endif /* G++ */ #endif /* NULL not defined and or need NULL. */ #undef __need_NULL #ifdef _STDDEF_H /* Offset of member MEMBER in a struct of type TYPE. */ #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #endif /* _STDDEF_H was defined this time */ #endif /* !_STDDEF_H && !_STDDEF_H_ && !_ANSI_STDDEF_H && !__STDDEF_H__ || __need_XXX was not defined before */ Convert-Binary-C-0.76/tests/include/gccinc/limits.h0000644000175000001440000000661611550664623020711 0ustar mhxusers/* This administrivia gets added to the beginning of limits.h if the system has its own version of limits.h. */ /* We use _GCC_LIMITS_H_ because we want this not to match any macros that the system's limits.h uses for its own purposes. */ #ifndef _GCC_LIMITS_H_ /* Terminated in limity.h. */ #define _GCC_LIMITS_H_ #ifndef _LIBC_LIMITS_H_ /* Use "..." so that we find syslimits.h only in this same directory. */ #include "syslimits.h" #endif #ifndef _LIMITS_H___ #define _LIMITS_H___ /* Number of bits in a `char'. */ #undef CHAR_BIT #define CHAR_BIT __CHAR_BIT__ /* Maximum length of a multibyte character. */ #ifndef MB_LEN_MAX #define MB_LEN_MAX 1 #endif /* Minimum and maximum values a `signed char' can hold. */ #undef SCHAR_MIN #define SCHAR_MIN (-SCHAR_MAX - 1) #undef SCHAR_MAX #define SCHAR_MAX __SCHAR_MAX__ /* Maximum value an `unsigned char' can hold. (Minimum is 0). */ #undef UCHAR_MAX #if __SCHAR_MAX__ == __INT_MAX__ # define UCHAR_MAX (SCHAR_MAX * 2U + 1U) #else # define UCHAR_MAX (SCHAR_MAX * 2 + 1) #endif /* Minimum and maximum values a `char' can hold. */ #ifdef __CHAR_UNSIGNED__ # undef CHAR_MIN # if __SCHAR_MAX__ == __INT_MAX__ # define CHAR_MIN 0U # else # define CHAR_MIN 0 # endif # undef CHAR_MAX # define CHAR_MAX UCHAR_MAX #else # undef CHAR_MIN # define CHAR_MIN SCHAR_MIN # undef CHAR_MAX # define CHAR_MAX SCHAR_MAX #endif /* Minimum and maximum values a `signed short int' can hold. */ #undef SHRT_MIN #define SHRT_MIN (-SHRT_MAX - 1) #undef SHRT_MAX #define SHRT_MAX __SHRT_MAX__ /* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ #undef USHRT_MAX #if __SHRT_MAX__ == __INT_MAX__ # define USHRT_MAX (SHRT_MAX * 2U + 1U) #else # define USHRT_MAX (SHRT_MAX * 2 + 1) #endif /* Minimum and maximum values a `signed int' can hold. */ #undef INT_MIN #define INT_MIN (-INT_MAX - 1) #undef INT_MAX #define INT_MAX __INT_MAX__ /* Maximum value an `unsigned int' can hold. (Minimum is 0). */ #undef UINT_MAX #define UINT_MAX (INT_MAX * 2U + 1U) /* Minimum and maximum values a `signed long int' can hold. (Same as `int'). */ #undef LONG_MIN #define LONG_MIN (-LONG_MAX - 1L) #undef LONG_MAX #define LONG_MAX __LONG_MAX__ /* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ #undef ULONG_MAX #define ULONG_MAX (LONG_MAX * 2UL + 1UL) #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* Minimum and maximum values a `signed long long int' can hold. */ # undef LLONG_MIN # define LLONG_MIN (-LLONG_MAX - 1LL) # undef LLONG_MAX # define LLONG_MAX __LONG_LONG_MAX__ /* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ # undef ULLONG_MAX # define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) #endif #if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__) /* Minimum and maximum values a `signed long long int' can hold. */ # undef LONG_LONG_MIN # define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL) # undef LONG_LONG_MAX # define LONG_LONG_MAX __LONG_LONG_MAX__ /* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ # undef ULONG_LONG_MAX # define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL) #endif #endif /* _LIMITS_H___ */ /* This administrivia gets added to the end of limits.h if the system has its own version of limits.h. */ #else /* not _GCC_LIMITS_H_ */ #ifdef _GCC_NEXT_LIMITS_H #include_next /* recurse down to the real one */ #endif #endif /* not _GCC_LIMITS_H_ */ Convert-Binary-C-0.76/tests/include/include.c0000644000175000001440000000004611550664623017567 0ustar mhxusers#include "EXTERN.h" #include "perl.h" Convert-Binary-C-0.76/tests/include/sizeof.pl0000644000175000001440000174431611550664631017653 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:28 +0200 $ # $Revision: 16 $ # $Source: /tests/include/sizeof.pl $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ %size = ( 'AMT' => 284, 'AMT.fallback' => 4, 'AMT.flags' => 4, 'AMT.table' => 268, 'AMT.table[0]' => 4, 'AMT.table[10]' => 4, 'AMT.table[11]' => 4, 'AMT.table[12]' => 4, 'AMT.table[13]' => 4, 'AMT.table[14]' => 4, 'AMT.table[15]' => 4, 'AMT.table[16]' => 4, 'AMT.table[17]' => 4, 'AMT.table[18]' => 4, 'AMT.table[19]' => 4, 'AMT.table[1]' => 4, 'AMT.table[20]' => 4, 'AMT.table[21]' => 4, 'AMT.table[22]' => 4, 'AMT.table[23]' => 4, 'AMT.table[24]' => 4, 'AMT.table[25]' => 4, 'AMT.table[26]' => 4, 'AMT.table[27]' => 4, 'AMT.table[28]' => 4, 'AMT.table[29]' => 4, 'AMT.table[2]' => 4, 'AMT.table[30]' => 4, 'AMT.table[31]' => 4, 'AMT.table[32]' => 4, 'AMT.table[33]' => 4, 'AMT.table[34]' => 4, 'AMT.table[35]' => 4, 'AMT.table[36]' => 4, 'AMT.table[37]' => 4, 'AMT.table[38]' => 4, 'AMT.table[39]' => 4, 'AMT.table[3]' => 4, 'AMT.table[40]' => 4, 'AMT.table[41]' => 4, 'AMT.table[42]' => 4, 'AMT.table[43]' => 4, 'AMT.table[44]' => 4, 'AMT.table[45]' => 4, 'AMT.table[46]' => 4, 'AMT.table[47]' => 4, 'AMT.table[48]' => 4, 'AMT.table[49]' => 4, 'AMT.table[4]' => 4, 'AMT.table[50]' => 4, 'AMT.table[51]' => 4, 'AMT.table[52]' => 4, 'AMT.table[53]' => 4, 'AMT.table[54]' => 4, 'AMT.table[55]' => 4, 'AMT.table[56]' => 4, 'AMT.table[57]' => 4, 'AMT.table[58]' => 4, 'AMT.table[59]' => 4, 'AMT.table[5]' => 4, 'AMT.table[60]' => 4, 'AMT.table[61]' => 4, 'AMT.table[62]' => 4, 'AMT.table[63]' => 4, 'AMT.table[64]' => 4, 'AMT.table[65]' => 4, 'AMT.table[66]' => 4, 'AMT.table[6]' => 4, 'AMT.table[7]' => 4, 'AMT.table[8]' => 4, 'AMT.table[9]' => 4, 'AMT.was_ok_am' => 4, 'AMT.was_ok_sub' => 4, 'AMTS' => 12, 'AMTS.flags' => 4, 'AMTS.was_ok_am' => 4, 'AMTS.was_ok_sub' => 4, 'ANY' => 4, 'ANY.any_bool' => 1, 'ANY.any_dptr' => 4, 'ANY.any_dxptr' => 4, 'ANY.any_i32' => 4, 'ANY.any_iv' => 4, 'ANY.any_long' => 4, 'ANY.any_ptr' => 4, 'ATEXIT_t' => 4, 'AV' => 16, 'AV.sv_any' => 4, 'AV.sv_flags' => 4, 'AV.sv_refcnt' => 4, 'AV.sv_u' => 4, 'AV.sv_u.svu_array' => 4, 'AV.sv_u.svu_gp' => 4, 'AV.sv_u.svu_hash' => 4, 'AV.sv_u.svu_iv' => 4, 'AV.sv_u.svu_pv' => 4, 'AV.sv_u.svu_rv' => 4, 'AV.sv_u.svu_uv' => 4, 'BINOP' => 28, 'BINOP.op_first' => 4, 'BINOP.op_flags' => 1, 'BINOP.op_last' => 4, 'BINOP.op_next' => 4, 'BINOP.op_ppaddr' => 4, 'BINOP.op_private' => 1, 'BINOP.op_sibling' => 4, 'BINOP.op_targ' => 4, 'BLOCK' => 64, 'BLOCK.blk_u' => 40, 'BLOCK.blk_u.blku_eval' => 27, 'BLOCK.blk_u.blku_eval.cur_text' => 4, 'BLOCK.blk_u.blku_eval.cur_top_env' => 4, 'BLOCK.blk_u.blku_eval.cv' => 4, 'BLOCK.blk_u.blku_eval.old_eval_root' => 4, 'BLOCK.blk_u.blku_eval.old_in_eval' => 1, 'BLOCK.blk_u.blku_eval.old_namesv' => 4, 'BLOCK.blk_u.blku_eval.old_op_type' => 2, 'BLOCK.blk_u.blku_eval.retop' => 4, 'BLOCK.blk_u.blku_givwhen' => 4, 'BLOCK.blk_u.blku_givwhen.leave_op' => 4, 'BLOCK.blk_u.blku_loop' => 40, 'BLOCK.blk_u.blku_loop.iterary' => 4, 'BLOCK.blk_u.blku_loop.iterix' => 4, 'BLOCK.blk_u.blku_loop.iterlval' => 4, 'BLOCK.blk_u.blku_loop.itermax' => 4, 'BLOCK.blk_u.blku_loop.itersave' => 4, 'BLOCK.blk_u.blku_loop.itervar' => 4, 'BLOCK.blk_u.blku_loop.label' => 4, 'BLOCK.blk_u.blku_loop.my_op' => 4, 'BLOCK.blk_u.blku_loop.next_op' => 4, 'BLOCK.blk_u.blku_loop.resetsp' => 4, 'BLOCK.blk_u.blku_sub' => 34, 'BLOCK.blk_u.blku_sub.argarray' => 4, 'BLOCK.blk_u.blku_sub.cv' => 4, 'BLOCK.blk_u.blku_sub.dfoutgv' => 4, 'BLOCK.blk_u.blku_sub.gv' => 4, 'BLOCK.blk_u.blku_sub.hasargs' => 1, 'BLOCK.blk_u.blku_sub.lval' => 1, 'BLOCK.blk_u.blku_sub.oldcomppad' => 4, 'BLOCK.blk_u.blku_sub.olddepth' => 4, 'BLOCK.blk_u.blku_sub.retop' => 4, 'BLOCK.blk_u.blku_sub.savearray' => 4, 'BLOCK.blku_gimme' => 1, 'BLOCK.blku_oldcop' => 4, 'BLOCK.blku_oldmarksp' => 4, 'BLOCK.blku_oldpm' => 4, 'BLOCK.blku_oldscopesp' => 4, 'BLOCK.blku_oldsp' => 4, 'BLOCK.blku_spare' => 1, 'BLOCK.blku_type' => 2, 'CHECKPOINT' => 4, 'CLONE_PARAMS' => 12, 'CLONE_PARAMS.flags' => 4, 'CLONE_PARAMS.proto_perl' => 4, 'CLONE_PARAMS.stashes' => 4, 'COP' => 52, 'COP.cop_filegv' => 4, 'COP.cop_hints' => 4, 'COP.cop_hints_hash' => 4, 'COP.cop_label' => 4, 'COP.cop_line' => 4, 'COP.cop_seq' => 4, 'COP.cop_stash' => 4, 'COP.cop_warnings' => 4, 'COP.op_flags' => 1, 'COP.op_next' => 4, 'COP.op_ppaddr' => 4, 'COP.op_private' => 1, 'COP.op_sibling' => 4, 'COP.op_targ' => 4, 'CV' => 16, 'CV.sv_any' => 4, 'CV.sv_flags' => 4, 'CV.sv_refcnt' => 4, 'CV.sv_u' => 4, 'CV.sv_u.svu_array' => 4, 'CV.sv_u.svu_gp' => 4, 'CV.sv_u.svu_hash' => 4, 'CV.sv_u.svu_iv' => 4, 'CV.sv_u.svu_pv' => 4, 'CV.sv_u.svu_rv' => 4, 'CV.sv_u.svu_uv' => 4, 'DESTRUCTORFUNC_NOCONTEXT_t' => 4, 'DESTRUCTORFUNC_t' => 4, 'FILE' => 148, 'FILE._IO_backup_base' => 4, 'FILE._IO_buf_base' => 4, 'FILE._IO_buf_end' => 4, 'FILE._IO_read_base' => 4, 'FILE._IO_read_end' => 4, 'FILE._IO_read_ptr' => 4, 'FILE._IO_save_base' => 4, 'FILE._IO_save_end' => 4, 'FILE._IO_write_base' => 4, 'FILE._IO_write_end' => 4, 'FILE._IO_write_ptr' => 4, 'FILE.__pad1' => 4, 'FILE.__pad2' => 4, 'FILE.__pad3' => 4, 'FILE.__pad4' => 4, 'FILE.__pad5' => 4, 'FILE._chain' => 4, 'FILE._cur_column' => 2, 'FILE._fileno' => 4, 'FILE._flags' => 4, 'FILE._flags2' => 4, 'FILE._lock' => 4, 'FILE._markers' => 4, 'FILE._mode' => 4, 'FILE._offset' => 8, 'FILE._old_offset' => 4, 'FILE._shortbuf' => 1, 'FILE._shortbuf[0]' => 1, 'FILE._unused2' => 40, 'FILE._unused2[0]' => 1, 'FILE._unused2[10]' => 1, 'FILE._unused2[11]' => 1, 'FILE._unused2[12]' => 1, 'FILE._unused2[13]' => 1, 'FILE._unused2[14]' => 1, 'FILE._unused2[15]' => 1, 'FILE._unused2[16]' => 1, 'FILE._unused2[17]' => 1, 'FILE._unused2[18]' => 1, 'FILE._unused2[19]' => 1, 'FILE._unused2[1]' => 1, 'FILE._unused2[20]' => 1, 'FILE._unused2[21]' => 1, 'FILE._unused2[22]' => 1, 'FILE._unused2[23]' => 1, 'FILE._unused2[24]' => 1, 'FILE._unused2[25]' => 1, 'FILE._unused2[26]' => 1, 'FILE._unused2[27]' => 1, 'FILE._unused2[28]' => 1, 'FILE._unused2[29]' => 1, 'FILE._unused2[2]' => 1, 'FILE._unused2[30]' => 1, 'FILE._unused2[31]' => 1, 'FILE._unused2[32]' => 1, 'FILE._unused2[33]' => 1, 'FILE._unused2[34]' => 1, 'FILE._unused2[35]' => 1, 'FILE._unused2[36]' => 1, 'FILE._unused2[37]' => 1, 'FILE._unused2[38]' => 1, 'FILE._unused2[39]' => 1, 'FILE._unused2[3]' => 1, 'FILE._unused2[4]' => 1, 'FILE._unused2[5]' => 1, 'FILE._unused2[6]' => 1, 'FILE._unused2[7]' => 1, 'FILE._unused2[8]' => 1, 'FILE._unused2[9]' => 1, 'FILE._vtable_offset' => 1, 'GP' => 44, 'GP.gp_av' => 4, 'GP.gp_cv' => 4, 'GP.gp_cvgen' => 4, 'GP.gp_egv' => 4, 'GP.gp_file_hek' => 4, 'GP.gp_form' => 4, 'GP.gp_hv' => 4, 'GP.gp_io' => 4, 'GP.gp_line' => 4, 'GP.gp_refcnt' => 4, 'GP.gp_sv' => 4, 'GV' => 16, 'GV.sv_any' => 4, 'GV.sv_flags' => 4, 'GV.sv_refcnt' => 4, 'GV.sv_u' => 4, 'GV.sv_u.svu_array' => 4, 'GV.sv_u.svu_gp' => 4, 'GV.sv_u.svu_hash' => 4, 'GV.sv_u.svu_iv' => 4, 'GV.sv_u.svu_pv' => 4, 'GV.sv_u.svu_rv' => 4, 'GV.sv_u.svu_uv' => 4, 'HE' => 12, 'HE.he_valu' => 4, 'HE.he_valu.hent_refcount' => 4, 'HE.he_valu.hent_val' => 4, 'HE.hent_hek' => 4, 'HE.hent_next' => 4, 'HEK' => 9, 'HEK.hek_hash' => 4, 'HEK.hek_key' => 1, 'HEK.hek_key[0]' => 1, 'HEK.hek_len' => 4, 'HV' => 16, 'HV.sv_any' => 4, 'HV.sv_flags' => 4, 'HV.sv_refcnt' => 4, 'HV.sv_u' => 4, 'HV.sv_u.svu_array' => 4, 'HV.sv_u.svu_gp' => 4, 'HV.sv_u.svu_hash' => 4, 'HV.sv_u.svu_iv' => 4, 'HV.sv_u.svu_pv' => 4, 'HV.sv_u.svu_rv' => 4, 'HV.sv_u.svu_uv' => 4, 'I16' => 2, 'I32' => 4, 'I8' => 1, 'IO' => 16, 'IO.sv_any' => 4, 'IO.sv_flags' => 4, 'IO.sv_refcnt' => 4, 'IO.sv_u' => 4, 'IO.sv_u.svu_array' => 4, 'IO.sv_u.svu_gp' => 4, 'IO.sv_u.svu_hash' => 4, 'IO.sv_u.svu_iv' => 4, 'IO.sv_u.svu_pv' => 4, 'IO.sv_u.svu_rv' => 4, 'IO.sv_u.svu_uv' => 4, 'IV' => 4, 'JMPENV' => 165, 'JMPENV.je_buf' => 156, 'JMPENV.je_buf[0]' => 156, 'JMPENV.je_buf[0].__jmpbuf' => 24, 'JMPENV.je_buf[0].__jmpbuf[0]' => 4, 'JMPENV.je_buf[0].__jmpbuf[1]' => 4, 'JMPENV.je_buf[0].__jmpbuf[2]' => 4, 'JMPENV.je_buf[0].__jmpbuf[3]' => 4, 'JMPENV.je_buf[0].__jmpbuf[4]' => 4, 'JMPENV.je_buf[0].__jmpbuf[5]' => 4, 'JMPENV.je_buf[0].__mask_was_saved' => 4, 'JMPENV.je_buf[0].__saved_mask' => 128, 'JMPENV.je_buf[0].__saved_mask.__val' => 128, 'JMPENV.je_buf[0].__saved_mask.__val[0]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[10]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[11]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[12]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[13]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[14]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[15]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[16]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[17]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[18]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[19]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[1]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[20]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[21]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[22]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[23]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[24]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[25]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[26]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[27]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[28]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[29]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[2]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[30]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[31]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[3]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[4]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[5]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[6]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[7]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[8]' => 4, 'JMPENV.je_buf[0].__saved_mask.__val[9]' => 4, 'JMPENV.je_mustcatch' => 1, 'JMPENV.je_prev' => 4, 'JMPENV.je_ret' => 4, 'LISTOP' => 28, 'LISTOP.op_first' => 4, 'LISTOP.op_flags' => 1, 'LISTOP.op_last' => 4, 'LISTOP.op_next' => 4, 'LISTOP.op_ppaddr' => 4, 'LISTOP.op_private' => 1, 'LISTOP.op_sibling' => 4, 'LISTOP.op_targ' => 4, 'LOGOP' => 28, 'LOGOP.op_first' => 4, 'LOGOP.op_flags' => 1, 'LOGOP.op_next' => 4, 'LOGOP.op_other' => 4, 'LOGOP.op_ppaddr' => 4, 'LOGOP.op_private' => 1, 'LOGOP.op_sibling' => 4, 'LOGOP.op_targ' => 4, 'LOOP' => 40, 'LOOP.op_first' => 4, 'LOOP.op_flags' => 1, 'LOOP.op_last' => 4, 'LOOP.op_lastop' => 4, 'LOOP.op_next' => 4, 'LOOP.op_nextop' => 4, 'LOOP.op_ppaddr' => 4, 'LOOP.op_private' => 1, 'LOOP.op_redoop' => 4, 'LOOP.op_sibling' => 4, 'LOOP.op_targ' => 4, 'MAGIC' => 24, 'MAGIC.mg_flags' => 1, 'MAGIC.mg_len' => 4, 'MAGIC.mg_moremagic' => 4, 'MAGIC.mg_obj' => 4, 'MAGIC.mg_private' => 2, 'MAGIC.mg_ptr' => 4, 'MAGIC.mg_type' => 1, 'MAGIC.mg_virtual' => 4, 'MGVTBL' => 32, 'MGVTBL.svt_clear' => 4, 'MGVTBL.svt_copy' => 4, 'MGVTBL.svt_dup' => 4, 'MGVTBL.svt_free' => 4, 'MGVTBL.svt_get' => 4, 'MGVTBL.svt_len' => 4, 'MGVTBL.svt_local' => 4, 'MGVTBL.svt_set' => 4, 'NV' => 8, 'OP' => 20, 'OP.op_flags' => 1, 'OP.op_next' => 4, 'OP.op_ppaddr' => 4, 'OP.op_private' => 1, 'OP.op_sibling' => 4, 'OP.op_targ' => 4, 'PAD' => 16, 'PAD.sv_any' => 4, 'PAD.sv_flags' => 4, 'PAD.sv_refcnt' => 4, 'PAD.sv_u' => 4, 'PAD.sv_u.svu_array' => 4, 'PAD.sv_u.svu_gp' => 4, 'PAD.sv_u.svu_hash' => 4, 'PAD.sv_u.svu_iv' => 4, 'PAD.sv_u.svu_pv' => 4, 'PAD.sv_u.svu_rv' => 4, 'PAD.sv_u.svu_uv' => 4, 'PADLIST' => 16, 'PADLIST.sv_any' => 4, 'PADLIST.sv_flags' => 4, 'PADLIST.sv_refcnt' => 4, 'PADLIST.sv_u' => 4, 'PADLIST.sv_u.svu_array' => 4, 'PADLIST.sv_u.svu_gp' => 4, 'PADLIST.sv_u.svu_hash' => 4, 'PADLIST.sv_u.svu_iv' => 4, 'PADLIST.sv_u.svu_pv' => 4, 'PADLIST.sv_u.svu_rv' => 4, 'PADLIST.sv_u.svu_uv' => 4, 'PADOFFSET' => 4, 'PADOP' => 24, 'PADOP.op_flags' => 1, 'PADOP.op_next' => 4, 'PADOP.op_padix' => 4, 'PADOP.op_ppaddr' => 4, 'PADOP.op_private' => 1, 'PADOP.op_sibling' => 4, 'PADOP.op_targ' => 4, 'PERL_CONTEXT' => 64, 'PERL_CONTEXT.cx_u' => 64, 'PERL_CONTEXT.cx_u.cx_blk' => 64, 'PERL_CONTEXT.cx_u.cx_blk.blk_u' => 40, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval' => 27, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval.cur_text' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval.cur_top_env' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval.cv' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval.old_eval_root' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval.old_in_eval' => 1, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval.old_namesv' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval.old_op_type' => 2, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_eval.retop' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_givwhen' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_givwhen.leave_op' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop' => 40, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.iterary' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.iterix' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.iterlval' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.itermax' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.itersave' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.itervar' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.label' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.my_op' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.next_op' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_loop.resetsp' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub' => 34, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.argarray' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.cv' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.dfoutgv' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.gv' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.hasargs' => 1, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.lval' => 1, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.oldcomppad' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.olddepth' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.retop' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blk_u.blku_sub.savearray' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blku_gimme' => 1, 'PERL_CONTEXT.cx_u.cx_blk.blku_oldcop' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blku_oldmarksp' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blku_oldpm' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blku_oldscopesp' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blku_oldsp' => 4, 'PERL_CONTEXT.cx_u.cx_blk.blku_spare' => 1, 'PERL_CONTEXT.cx_u.cx_blk.blku_type' => 2, 'PERL_CONTEXT.cx_u.cx_subst' => 52, 'PERL_CONTEXT.cx_u.cx_subst.sbu_dstr' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_iters' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_m' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_maxiters' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_oldsave' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_once' => 1, 'PERL_CONTEXT.cx_u.cx_subst.sbu_orig' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_rflags' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_rx' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_rxres' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_rxtainted' => 1, 'PERL_CONTEXT.cx_u.cx_subst.sbu_s' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_strend' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_targ' => 4, 'PERL_CONTEXT.cx_u.cx_subst.sbu_type' => 2, 'PERL_SI' => 32, 'PERL_SI.si_cxix' => 4, 'PERL_SI.si_cxmax' => 4, 'PERL_SI.si_cxstack' => 4, 'PERL_SI.si_markoff' => 4, 'PERL_SI.si_next' => 4, 'PERL_SI.si_prev' => 4, 'PERL_SI.si_stack' => 4, 'PERL_SI.si_type' => 4, 'PMOP' => 57, 'PMOP.op_first' => 4, 'PMOP.op_flags' => 1, 'PMOP.op_last' => 4, 'PMOP.op_next' => 4, 'PMOP.op_pmdynflags' => 1, 'PMOP.op_pmflags' => 4, 'PMOP.op_pmnext' => 4, 'PMOP.op_pmpermflags' => 4, 'PMOP.op_pmregexp' => 4, 'PMOP.op_pmreplroot' => 4, 'PMOP.op_pmreplstart' => 4, 'PMOP.op_pmstash' => 4, 'PMOP.op_ppaddr' => 4, 'PMOP.op_private' => 1, 'PMOP.op_sibling' => 4, 'PMOP.op_targ' => 4, 'PPADDR_t' => 0, 'PTR_TBL_ENT_t' => 12, 'PTR_TBL_ENT_t.newval' => 4, 'PTR_TBL_ENT_t.next' => 4, 'PTR_TBL_ENT_t.oldval' => 4, 'PTR_TBL_t' => 12, 'PTR_TBL_t.tbl_ary' => 4, 'PTR_TBL_t.tbl_items' => 4, 'PTR_TBL_t.tbl_max' => 4, 'PVOP' => 24, 'PVOP.op_flags' => 1, 'PVOP.op_next' => 4, 'PVOP.op_ppaddr' => 4, 'PVOP.op_private' => 1, 'PVOP.op_pv' => 4, 'PVOP.op_sibling' => 4, 'PVOP.op_targ' => 4, 'PerlExitListEntry' => 8, 'PerlExitListEntry.fn' => 4, 'PerlExitListEntry.ptr' => 4, 'PerlIO' => 4, 'PerlInterpreter' => 1, 'PerlInterpreter.broiled' => 1, 'Perl_check_t' => 4, 'Perl_ppaddr_t' => 4, 'REGEXP' => 76, 'REGEXP.data' => 4, 'REGEXP.endp' => 4, 'REGEXP.engine' => 4, 'REGEXP.lastcloseparen' => 4, 'REGEXP.lastparen' => 4, 'REGEXP.minlen' => 4, 'REGEXP.nparens' => 4, 'REGEXP.offsets' => 4, 'REGEXP.paren_names' => 4, 'REGEXP.precomp' => 4, 'REGEXP.prelen' => 4, 'REGEXP.program' => 4, 'REGEXP.program[0]' => 4, 'REGEXP.program[0].flags' => 1, 'REGEXP.program[0].next_off' => 2, 'REGEXP.program[0].type' => 1, 'REGEXP.refcnt' => 4, 'REGEXP.reganch' => 4, 'REGEXP.regstclass' => 4, 'REGEXP.startp' => 4, 'REGEXP.subbeg' => 4, 'REGEXP.sublen' => 4, 'REGEXP.substrs' => 4, 'STRLEN' => 4, 'SUBLEXINFO' => 20, 'SUBLEXINFO.sub_inwhat' => 4, 'SUBLEXINFO.sub_op' => 4, 'SUBLEXINFO.super_bufend' => 4, 'SUBLEXINFO.super_bufptr' => 4, 'SUBLEXINFO.super_state' => 4, 'SV' => 16, 'SV.sv_any' => 4, 'SV.sv_flags' => 4, 'SV.sv_refcnt' => 4, 'SV.sv_u' => 4, 'SV.sv_u.svu_array' => 4, 'SV.sv_u.svu_gp' => 4, 'SV.sv_u.svu_hash' => 4, 'SV.sv_u.svu_iv' => 4, 'SV.sv_u.svu_pv' => 4, 'SV.sv_u.svu_rv' => 4, 'SV.sv_u.svu_uv' => 4, 'SVCOMPARE_t' => 4, 'SVFUNC_t' => 4, 'SVOP' => 24, 'SVOP.op_flags' => 1, 'SVOP.op_next' => 4, 'SVOP.op_ppaddr' => 4, 'SVOP.op_private' => 1, 'SVOP.op_sibling' => 4, 'SVOP.op_sv' => 4, 'SVOP.op_targ' => 4, 'Sighandler_t' => 4, 'Sigsave_t' => 140, 'Sigsave_t.__sigaction_handler' => 4, 'Sigsave_t.__sigaction_handler.sa_handler' => 4, 'Sigsave_t.__sigaction_handler.sa_sigaction' => 4, 'Sigsave_t.sa_flags' => 4, 'Sigsave_t.sa_mask' => 128, 'Sigsave_t.sa_mask.__val' => 128, 'Sigsave_t.sa_mask.__val[0]' => 4, 'Sigsave_t.sa_mask.__val[10]' => 4, 'Sigsave_t.sa_mask.__val[11]' => 4, 'Sigsave_t.sa_mask.__val[12]' => 4, 'Sigsave_t.sa_mask.__val[13]' => 4, 'Sigsave_t.sa_mask.__val[14]' => 4, 'Sigsave_t.sa_mask.__val[15]' => 4, 'Sigsave_t.sa_mask.__val[16]' => 4, 'Sigsave_t.sa_mask.__val[17]' => 4, 'Sigsave_t.sa_mask.__val[18]' => 4, 'Sigsave_t.sa_mask.__val[19]' => 4, 'Sigsave_t.sa_mask.__val[1]' => 4, 'Sigsave_t.sa_mask.__val[20]' => 4, 'Sigsave_t.sa_mask.__val[21]' => 4, 'Sigsave_t.sa_mask.__val[22]' => 4, 'Sigsave_t.sa_mask.__val[23]' => 4, 'Sigsave_t.sa_mask.__val[24]' => 4, 'Sigsave_t.sa_mask.__val[25]' => 4, 'Sigsave_t.sa_mask.__val[26]' => 4, 'Sigsave_t.sa_mask.__val[27]' => 4, 'Sigsave_t.sa_mask.__val[28]' => 4, 'Sigsave_t.sa_mask.__val[29]' => 4, 'Sigsave_t.sa_mask.__val[2]' => 4, 'Sigsave_t.sa_mask.__val[30]' => 4, 'Sigsave_t.sa_mask.__val[31]' => 4, 'Sigsave_t.sa_mask.__val[3]' => 4, 'Sigsave_t.sa_mask.__val[4]' => 4, 'Sigsave_t.sa_mask.__val[5]' => 4, 'Sigsave_t.sa_mask.__val[6]' => 4, 'Sigsave_t.sa_mask.__val[7]' => 4, 'Sigsave_t.sa_mask.__val[8]' => 4, 'Sigsave_t.sa_mask.__val[9]' => 4, 'Sigsave_t.sa_restorer' => 4, 'Thread' => 4, 'U16' => 2, 'U32' => 4, 'U8' => 1, 'UNOP' => 24, 'UNOP.op_first' => 4, 'UNOP.op_flags' => 1, 'UNOP.op_next' => 4, 'UNOP.op_ppaddr' => 4, 'UNOP.op_private' => 1, 'UNOP.op_sibling' => 4, 'UNOP.op_targ' => 4, 'UV' => 4, 'XPV' => 16, 'XPV.xnv_u' => 8, 'XPV.xnv_u.xgv_stash' => 4, 'XPV.xnv_u.xnv_nv' => 8, 'XPV.xpv_cur' => 4, 'XPV.xpv_len' => 4, 'XPVAV' => 28, 'XPVAV.xav_fill' => 4, 'XPVAV.xav_max' => 4, 'XPVAV.xiv_u' => 4, 'XPVAV.xiv_u.xivu_i32' => 4, 'XPVAV.xiv_u.xivu_iv' => 4, 'XPVAV.xiv_u.xivu_namehek' => 4, 'XPVAV.xiv_u.xivu_p1' => 4, 'XPVAV.xiv_u.xivu_uv' => 4, 'XPVAV.xmg_stash' => 4, 'XPVAV.xmg_u' => 4, 'XPVAV.xmg_u.xmg_magic' => 4, 'XPVAV.xmg_u.xmg_ourstash' => 4, 'XPVAV.xnv_u' => 8, 'XPVAV.xnv_u.xgv_stash' => 4, 'XPVAV.xnv_u.xnv_nv' => 8, 'XPVBM' => 35, 'XPVBM.xbm_previous' => 2, 'XPVBM.xbm_rare' => 1, 'XPVBM.xbm_useful' => 4, 'XPVBM.xiv_u' => 4, 'XPVBM.xiv_u.xivu_i32' => 4, 'XPVBM.xiv_u.xivu_iv' => 4, 'XPVBM.xiv_u.xivu_namehek' => 4, 'XPVBM.xiv_u.xivu_p1' => 4, 'XPVBM.xiv_u.xivu_uv' => 4, 'XPVBM.xmg_stash' => 4, 'XPVBM.xmg_u' => 4, 'XPVBM.xmg_u.xmg_magic' => 4, 'XPVBM.xmg_u.xmg_ourstash' => 4, 'XPVBM.xnv_u' => 8, 'XPVBM.xnv_u.xgv_stash' => 4, 'XPVBM.xnv_u.xnv_nv' => 8, 'XPVBM.xpv_cur' => 4, 'XPVBM.xpv_len' => 4, 'XPVCV' => 62, 'XPVCV.xcv_file' => 4, 'XPVCV.xcv_flags' => 2, 'XPVCV.xcv_gv' => 4, 'XPVCV.xcv_outside' => 4, 'XPVCV.xcv_outside_seq' => 4, 'XPVCV.xcv_padlist' => 4, 'XPVCV.xcv_root_u' => 4, 'XPVCV.xcv_root_u.xcv_root' => 4, 'XPVCV.xcv_root_u.xcv_xsub' => 4, 'XPVCV.xcv_start_u' => 4, 'XPVCV.xcv_start_u.xcv_start' => 4, 'XPVCV.xcv_start_u.xcv_xsubany' => 4, 'XPVCV.xcv_start_u.xcv_xsubany.any_bool' => 1, 'XPVCV.xcv_start_u.xcv_xsubany.any_dptr' => 4, 'XPVCV.xcv_start_u.xcv_xsubany.any_dxptr' => 4, 'XPVCV.xcv_start_u.xcv_xsubany.any_i32' => 4, 'XPVCV.xcv_start_u.xcv_xsubany.any_iv' => 4, 'XPVCV.xcv_start_u.xcv_xsubany.any_long' => 4, 'XPVCV.xcv_start_u.xcv_xsubany.any_ptr' => 4, 'XPVCV.xcv_stash' => 4, 'XPVCV.xiv_u' => 4, 'XPVCV.xiv_u.xivu_i32' => 4, 'XPVCV.xiv_u.xivu_iv' => 4, 'XPVCV.xiv_u.xivu_namehek' => 4, 'XPVCV.xiv_u.xivu_p1' => 4, 'XPVCV.xiv_u.xivu_uv' => 4, 'XPVCV.xmg_stash' => 4, 'XPVCV.xmg_u' => 4, 'XPVCV.xmg_u.xmg_magic' => 4, 'XPVCV.xmg_u.xmg_ourstash' => 4, 'XPVCV.xnv_u' => 8, 'XPVCV.xnv_u.xgv_stash' => 4, 'XPVCV.xnv_u.xnv_nv' => 8, 'XPVCV.xpv_cur' => 4, 'XPVCV.xpv_len' => 4, 'XPVFM' => 66, 'XPVFM.xcv_file' => 4, 'XPVFM.xcv_flags' => 2, 'XPVFM.xcv_gv' => 4, 'XPVFM.xcv_outside' => 4, 'XPVFM.xcv_outside_seq' => 4, 'XPVFM.xcv_padlist' => 4, 'XPVFM.xcv_root_u' => 4, 'XPVFM.xcv_root_u.xcv_root' => 4, 'XPVFM.xcv_root_u.xcv_xsub' => 4, 'XPVFM.xcv_start_u' => 4, 'XPVFM.xcv_start_u.xcv_start' => 4, 'XPVFM.xcv_start_u.xcv_xsubany' => 4, 'XPVFM.xcv_start_u.xcv_xsubany.any_bool' => 1, 'XPVFM.xcv_start_u.xcv_xsubany.any_dptr' => 4, 'XPVFM.xcv_start_u.xcv_xsubany.any_dxptr' => 4, 'XPVFM.xcv_start_u.xcv_xsubany.any_i32' => 4, 'XPVFM.xcv_start_u.xcv_xsubany.any_iv' => 4, 'XPVFM.xcv_start_u.xcv_xsubany.any_long' => 4, 'XPVFM.xcv_start_u.xcv_xsubany.any_ptr' => 4, 'XPVFM.xcv_stash' => 4, 'XPVFM.xfm_lines' => 4, 'XPVFM.xiv_u' => 4, 'XPVFM.xiv_u.xivu_i32' => 4, 'XPVFM.xiv_u.xivu_iv' => 4, 'XPVFM.xiv_u.xivu_namehek' => 4, 'XPVFM.xiv_u.xivu_p1' => 4, 'XPVFM.xiv_u.xivu_uv' => 4, 'XPVFM.xmg_stash' => 4, 'XPVFM.xmg_u' => 4, 'XPVFM.xmg_u.xmg_magic' => 4, 'XPVFM.xmg_u.xmg_ourstash' => 4, 'XPVFM.xnv_u' => 8, 'XPVFM.xnv_u.xgv_stash' => 4, 'XPVFM.xnv_u.xnv_nv' => 8, 'XPVFM.xpv_cur' => 4, 'XPVFM.xpv_len' => 4, 'XPVGV' => 28, 'XPVGV.xiv_u' => 4, 'XPVGV.xiv_u.xivu_i32' => 4, 'XPVGV.xiv_u.xivu_iv' => 4, 'XPVGV.xiv_u.xivu_namehek' => 4, 'XPVGV.xiv_u.xivu_p1' => 4, 'XPVGV.xiv_u.xivu_uv' => 4, 'XPVGV.xmg_stash' => 4, 'XPVGV.xmg_u' => 4, 'XPVGV.xmg_u.xmg_magic' => 4, 'XPVGV.xmg_u.xmg_ourstash' => 4, 'XPVGV.xnv_u' => 8, 'XPVGV.xnv_u.xgv_stash' => 4, 'XPVGV.xnv_u.xnv_nv' => 8, 'XPVGV.xpv_cur' => 4, 'XPVGV.xpv_len' => 4, 'XPVHV' => 28, 'XPVHV.xhv_fill' => 4, 'XPVHV.xhv_max' => 4, 'XPVHV.xiv_u' => 4, 'XPVHV.xiv_u.xivu_i32' => 4, 'XPVHV.xiv_u.xivu_iv' => 4, 'XPVHV.xiv_u.xivu_namehek' => 4, 'XPVHV.xiv_u.xivu_p1' => 4, 'XPVHV.xiv_u.xivu_uv' => 4, 'XPVHV.xmg_stash' => 4, 'XPVHV.xmg_u' => 4, 'XPVHV.xmg_u.xmg_magic' => 4, 'XPVHV.xmg_u.xmg_ourstash' => 4, 'XPVHV.xnv_u' => 8, 'XPVHV.xnv_u.xgv_stash' => 4, 'XPVHV.xnv_u.xnv_nv' => 8, 'XPVIO' => 84, 'XPVIO.xio_bottom_gv' => 4, 'XPVIO.xio_bottom_name' => 4, 'XPVIO.xio_dirpu' => 4, 'XPVIO.xio_dirpu.xiou_any' => 4, 'XPVIO.xio_dirpu.xiou_dirp' => 4, 'XPVIO.xio_flags' => 1, 'XPVIO.xio_fmt_gv' => 4, 'XPVIO.xio_fmt_name' => 4, 'XPVIO.xio_ifp' => 4, 'XPVIO.xio_lines' => 4, 'XPVIO.xio_lines_left' => 4, 'XPVIO.xio_ofp' => 4, 'XPVIO.xio_page' => 4, 'XPVIO.xio_page_len' => 4, 'XPVIO.xio_subprocess' => 2, 'XPVIO.xio_top_gv' => 4, 'XPVIO.xio_top_name' => 4, 'XPVIO.xio_type' => 1, 'XPVIO.xiv_u' => 4, 'XPVIO.xiv_u.xivu_i32' => 4, 'XPVIO.xiv_u.xivu_iv' => 4, 'XPVIO.xiv_u.xivu_namehek' => 4, 'XPVIO.xiv_u.xivu_p1' => 4, 'XPVIO.xiv_u.xivu_uv' => 4, 'XPVIO.xmg_stash' => 4, 'XPVIO.xmg_u' => 4, 'XPVIO.xmg_u.xmg_magic' => 4, 'XPVIO.xmg_u.xmg_ourstash' => 4, 'XPVIO.xnv_u' => 8, 'XPVIO.xnv_u.xgv_stash' => 4, 'XPVIO.xnv_u.xnv_nv' => 8, 'XPVIO.xpv_cur' => 4, 'XPVIO.xpv_len' => 4, 'XPVIV' => 20, 'XPVIV.xiv_u' => 4, 'XPVIV.xiv_u.xivu_i32' => 4, 'XPVIV.xiv_u.xivu_iv' => 4, 'XPVIV.xiv_u.xivu_namehek' => 4, 'XPVIV.xiv_u.xivu_p1' => 4, 'XPVIV.xiv_u.xivu_uv' => 4, 'XPVIV.xnv_u' => 8, 'XPVIV.xnv_u.xgv_stash' => 4, 'XPVIV.xnv_u.xnv_nv' => 8, 'XPVIV.xpv_cur' => 4, 'XPVIV.xpv_len' => 4, 'XPVLV' => 41, 'XPVLV.xiv_u' => 4, 'XPVLV.xiv_u.xivu_i32' => 4, 'XPVLV.xiv_u.xivu_iv' => 4, 'XPVLV.xiv_u.xivu_namehek' => 4, 'XPVLV.xiv_u.xivu_p1' => 4, 'XPVLV.xiv_u.xivu_uv' => 4, 'XPVLV.xlv_targ' => 4, 'XPVLV.xlv_targlen' => 4, 'XPVLV.xlv_targoff' => 4, 'XPVLV.xlv_type' => 1, 'XPVLV.xmg_stash' => 4, 'XPVLV.xmg_u' => 4, 'XPVLV.xmg_u.xmg_magic' => 4, 'XPVLV.xmg_u.xmg_ourstash' => 4, 'XPVLV.xnv_u' => 8, 'XPVLV.xnv_u.xgv_stash' => 4, 'XPVLV.xnv_u.xnv_nv' => 8, 'XPVLV.xpv_cur' => 4, 'XPVLV.xpv_len' => 4, 'XPVMG' => 28, 'XPVMG.xiv_u' => 4, 'XPVMG.xiv_u.xivu_i32' => 4, 'XPVMG.xiv_u.xivu_iv' => 4, 'XPVMG.xiv_u.xivu_namehek' => 4, 'XPVMG.xiv_u.xivu_p1' => 4, 'XPVMG.xiv_u.xivu_uv' => 4, 'XPVMG.xmg_stash' => 4, 'XPVMG.xmg_u' => 4, 'XPVMG.xmg_u.xmg_magic' => 4, 'XPVMG.xmg_u.xmg_ourstash' => 4, 'XPVMG.xnv_u' => 8, 'XPVMG.xnv_u.xgv_stash' => 4, 'XPVMG.xnv_u.xnv_nv' => 8, 'XPVMG.xpv_cur' => 4, 'XPVMG.xpv_len' => 4, 'XPVNV' => 20, 'XPVNV.xiv_u' => 4, 'XPVNV.xiv_u.xivu_i32' => 4, 'XPVNV.xiv_u.xivu_iv' => 4, 'XPVNV.xiv_u.xivu_namehek' => 4, 'XPVNV.xiv_u.xivu_p1' => 4, 'XPVNV.xiv_u.xivu_uv' => 4, 'XPVNV.xnv_u' => 8, 'XPVNV.xnv_u.xgv_stash' => 4, 'XPVNV.xnv_u.xnv_nv' => 8, 'XPVNV.xpv_cur' => 4, 'XPVNV.xpv_len' => 4, 'XPVUV' => 20, 'XPVUV.xnv_u' => 8, 'XPVUV.xnv_u.xgv_stash' => 4, 'XPVUV.xnv_u.xnv_nv' => 8, 'XPVUV.xpv_cur' => 4, 'XPVUV.xpv_len' => 4, 'XPVUV.xuv_u' => 4, 'XPVUV.xuv_u.xivu_namehek' => 4, 'XPVUV.xuv_u.xuvu_iv' => 4, 'XPVUV.xuv_u.xuvu_p1' => 4, 'XPVUV.xuv_u.xuvu_uv' => 4, 'XSINIT_t' => 4, 'XSUBADDR_t' => 4, 'YYSTYPE' => 4, 'YYSTYPE.gvval' => 4, 'YYSTYPE.ival' => 4, 'YYSTYPE.opval' => 4, 'YYSTYPE.pval' => 4, '_G_fpos64_t' => 16, '_G_fpos64_t.__pos' => 8, '_G_fpos64_t.__state' => 8, '_G_fpos64_t.__state.__count' => 4, '_G_fpos64_t.__state.__value' => 4, '_G_fpos64_t.__state.__value.__wch' => 4, '_G_fpos64_t.__state.__value.__wchb' => 4, '_G_fpos64_t.__state.__value.__wchb[0]' => 1, '_G_fpos64_t.__state.__value.__wchb[1]' => 1, '_G_fpos64_t.__state.__value.__wchb[2]' => 1, '_G_fpos64_t.__state.__value.__wchb[3]' => 1, '_G_fpos_t' => 12, '_G_fpos_t.__pos' => 4, '_G_fpos_t.__state' => 8, '_G_fpos_t.__state.__count' => 4, '_G_fpos_t.__state.__value' => 4, '_G_fpos_t.__state.__value.__wch' => 4, '_G_fpos_t.__state.__value.__wchb' => 4, '_G_fpos_t.__state.__value.__wchb[0]' => 1, '_G_fpos_t.__state.__value.__wchb[1]' => 1, '_G_fpos_t.__state.__value.__wchb[2]' => 1, '_G_fpos_t.__state.__value.__wchb[3]' => 1, '_G_iconv_t' => 44, '_G_iconv_t.__cd' => 8, '_G_iconv_t.__cd.__nsteps' => 4, '_G_iconv_t.__cd.__steps' => 4, '_G_iconv_t.__combined' => 44, '_G_iconv_t.__combined.__cd' => 8, '_G_iconv_t.__combined.__cd.__nsteps' => 4, '_G_iconv_t.__combined.__cd.__steps' => 4, '_G_iconv_t.__combined.__data' => 36, '_G_iconv_t.__combined.__data.__flags' => 4, '_G_iconv_t.__combined.__data.__internal_use' => 4, '_G_iconv_t.__combined.__data.__invocation_counter' => 4, '_G_iconv_t.__combined.__data.__outbuf' => 4, '_G_iconv_t.__combined.__data.__outbufend' => 4, '_G_iconv_t.__combined.__data.__state' => 8, '_G_iconv_t.__combined.__data.__state.__count' => 4, '_G_iconv_t.__combined.__data.__state.__value' => 4, '_G_iconv_t.__combined.__data.__state.__value.__wch' => 4, '_G_iconv_t.__combined.__data.__state.__value.__wchb' => 4, '_G_iconv_t.__combined.__data.__state.__value.__wchb[0]' => 1, '_G_iconv_t.__combined.__data.__state.__value.__wchb[1]' => 1, '_G_iconv_t.__combined.__data.__state.__value.__wchb[2]' => 1, '_G_iconv_t.__combined.__data.__state.__value.__wchb[3]' => 1, '_G_iconv_t.__combined.__data.__statep' => 4, '_G_iconv_t.__combined.__data.__trans' => 4, '_G_int16_t' => 4, '_G_int32_t' => 4, '_G_uint16_t' => 4, '_G_uint32_t' => 4, '_IO_FILE' => 148, '_IO_FILE._IO_backup_base' => 4, '_IO_FILE._IO_buf_base' => 4, '_IO_FILE._IO_buf_end' => 4, '_IO_FILE._IO_read_base' => 4, '_IO_FILE._IO_read_end' => 4, '_IO_FILE._IO_read_ptr' => 4, '_IO_FILE._IO_save_base' => 4, '_IO_FILE._IO_save_end' => 4, '_IO_FILE._IO_write_base' => 4, '_IO_FILE._IO_write_end' => 4, '_IO_FILE._IO_write_ptr' => 4, '_IO_FILE.__pad1' => 4, '_IO_FILE.__pad2' => 4, '_IO_FILE.__pad3' => 4, '_IO_FILE.__pad4' => 4, '_IO_FILE.__pad5' => 4, '_IO_FILE._chain' => 4, '_IO_FILE._cur_column' => 2, '_IO_FILE._fileno' => 4, '_IO_FILE._flags' => 4, '_IO_FILE._flags2' => 4, '_IO_FILE._lock' => 4, '_IO_FILE._markers' => 4, '_IO_FILE._mode' => 4, '_IO_FILE._offset' => 8, '_IO_FILE._old_offset' => 4, '_IO_FILE._shortbuf' => 1, '_IO_FILE._shortbuf[0]' => 1, '_IO_FILE._unused2' => 40, '_IO_FILE._unused2[0]' => 1, '_IO_FILE._unused2[10]' => 1, '_IO_FILE._unused2[11]' => 1, '_IO_FILE._unused2[12]' => 1, '_IO_FILE._unused2[13]' => 1, '_IO_FILE._unused2[14]' => 1, '_IO_FILE._unused2[15]' => 1, '_IO_FILE._unused2[16]' => 1, '_IO_FILE._unused2[17]' => 1, '_IO_FILE._unused2[18]' => 1, '_IO_FILE._unused2[19]' => 1, '_IO_FILE._unused2[1]' => 1, '_IO_FILE._unused2[20]' => 1, '_IO_FILE._unused2[21]' => 1, '_IO_FILE._unused2[22]' => 1, '_IO_FILE._unused2[23]' => 1, '_IO_FILE._unused2[24]' => 1, '_IO_FILE._unused2[25]' => 1, '_IO_FILE._unused2[26]' => 1, '_IO_FILE._unused2[27]' => 1, '_IO_FILE._unused2[28]' => 1, '_IO_FILE._unused2[29]' => 1, '_IO_FILE._unused2[2]' => 1, '_IO_FILE._unused2[30]' => 1, '_IO_FILE._unused2[31]' => 1, '_IO_FILE._unused2[32]' => 1, '_IO_FILE._unused2[33]' => 1, '_IO_FILE._unused2[34]' => 1, '_IO_FILE._unused2[35]' => 1, '_IO_FILE._unused2[36]' => 1, '_IO_FILE._unused2[37]' => 1, '_IO_FILE._unused2[38]' => 1, '_IO_FILE._unused2[39]' => 1, '_IO_FILE._unused2[3]' => 1, '_IO_FILE._unused2[4]' => 1, '_IO_FILE._unused2[5]' => 1, '_IO_FILE._unused2[6]' => 1, '_IO_FILE._unused2[7]' => 1, '_IO_FILE._unused2[8]' => 1, '_IO_FILE._unused2[9]' => 1, '_IO_FILE._vtable_offset' => 1, '_IO_cookie_io_functions_t' => 16, '_IO_cookie_io_functions_t.close' => 4, '_IO_cookie_io_functions_t.read' => 4, '_IO_cookie_io_functions_t.seek' => 4, '_IO_cookie_io_functions_t.write' => 4, '_IO_marker' => 12, '_IO_marker._next' => 4, '_IO_marker._pos' => 4, '_IO_marker._sbuf' => 4, '_LIB_VERSION_TYPE' => 1, '__FILE' => 148, '__FILE._IO_backup_base' => 4, '__FILE._IO_buf_base' => 4, '__FILE._IO_buf_end' => 4, '__FILE._IO_read_base' => 4, '__FILE._IO_read_end' => 4, '__FILE._IO_read_ptr' => 4, '__FILE._IO_save_base' => 4, '__FILE._IO_save_end' => 4, '__FILE._IO_write_base' => 4, '__FILE._IO_write_end' => 4, '__FILE._IO_write_ptr' => 4, '__FILE.__pad1' => 4, '__FILE.__pad2' => 4, '__FILE.__pad3' => 4, '__FILE.__pad4' => 4, '__FILE.__pad5' => 4, '__FILE._chain' => 4, '__FILE._cur_column' => 2, '__FILE._fileno' => 4, '__FILE._flags' => 4, '__FILE._flags2' => 4, '__FILE._lock' => 4, '__FILE._markers' => 4, '__FILE._mode' => 4, '__FILE._offset' => 8, '__FILE._old_offset' => 4, '__FILE._shortbuf' => 1, '__FILE._shortbuf[0]' => 1, '__FILE._unused2' => 40, '__FILE._unused2[0]' => 1, '__FILE._unused2[10]' => 1, '__FILE._unused2[11]' => 1, '__FILE._unused2[12]' => 1, '__FILE._unused2[13]' => 1, '__FILE._unused2[14]' => 1, '__FILE._unused2[15]' => 1, '__FILE._unused2[16]' => 1, '__FILE._unused2[17]' => 1, '__FILE._unused2[18]' => 1, '__FILE._unused2[19]' => 1, '__FILE._unused2[1]' => 1, '__FILE._unused2[20]' => 1, '__FILE._unused2[21]' => 1, '__FILE._unused2[22]' => 1, '__FILE._unused2[23]' => 1, '__FILE._unused2[24]' => 1, '__FILE._unused2[25]' => 1, '__FILE._unused2[26]' => 1, '__FILE._unused2[27]' => 1, '__FILE._unused2[28]' => 1, '__FILE._unused2[29]' => 1, '__FILE._unused2[2]' => 1, '__FILE._unused2[30]' => 1, '__FILE._unused2[31]' => 1, '__FILE._unused2[32]' => 1, '__FILE._unused2[33]' => 1, '__FILE._unused2[34]' => 1, '__FILE._unused2[35]' => 1, '__FILE._unused2[36]' => 1, '__FILE._unused2[37]' => 1, '__FILE._unused2[38]' => 1, '__FILE._unused2[39]' => 1, '__FILE._unused2[3]' => 1, '__FILE._unused2[4]' => 1, '__FILE._unused2[5]' => 1, '__FILE._unused2[6]' => 1, '__FILE._unused2[7]' => 1, '__FILE._unused2[8]' => 1, '__FILE._unused2[9]' => 1, '__FILE._vtable_offset' => 1, '__blkcnt64_t' => 8, '__blkcnt_t' => 4, '__blksize_t' => 4, '__caddr_t' => 4, '__clock_t' => 4, '__clockid_t' => 4, '__codecvt_result' => 1, '__compar_fn_t' => 4, '__daddr_t' => 4, '__dev_t' => 8, '__fd_mask' => 4, '__fsblkcnt64_t' => 8, '__fsblkcnt_t' => 4, '__fsfilcnt64_t' => 8, '__fsfilcnt_t' => 4, '__fsid_t' => 8, '__fsid_t.__val' => 8, '__fsid_t.__val[0]' => 4, '__fsid_t.__val[1]' => 4, '__gconv_btowc_fct' => 4, '__gconv_end_fct' => 4, '__gconv_fct' => 4, '__gconv_info' => 8, '__gconv_info.__nsteps' => 4, '__gconv_info.__steps' => 4, '__gconv_init_fct' => 4, '__gconv_step' => 60, '__gconv_step.__btowc_fct' => 4, '__gconv_step.__counter' => 4, '__gconv_step.__data' => 4, '__gconv_step.__end_fct' => 4, '__gconv_step.__fct' => 4, '__gconv_step.__from_name' => 4, '__gconv_step.__init_fct' => 4, '__gconv_step.__max_needed_from' => 4, '__gconv_step.__max_needed_to' => 4, '__gconv_step.__min_needed_from' => 4, '__gconv_step.__min_needed_to' => 4, '__gconv_step.__modname' => 4, '__gconv_step.__shlib_handle' => 4, '__gconv_step.__stateful' => 4, '__gconv_step.__to_name' => 4, '__gconv_step_data' => 36, '__gconv_step_data.__flags' => 4, '__gconv_step_data.__internal_use' => 4, '__gconv_step_data.__invocation_counter' => 4, '__gconv_step_data.__outbuf' => 4, '__gconv_step_data.__outbufend' => 4, '__gconv_step_data.__state' => 8, '__gconv_step_data.__state.__count' => 4, '__gconv_step_data.__state.__value' => 4, '__gconv_step_data.__state.__value.__wch' => 4, '__gconv_step_data.__state.__value.__wchb' => 4, '__gconv_step_data.__state.__value.__wchb[0]' => 1, '__gconv_step_data.__state.__value.__wchb[1]' => 1, '__gconv_step_data.__state.__value.__wchb[2]' => 1, '__gconv_step_data.__state.__value.__wchb[3]' => 1, '__gconv_step_data.__statep' => 4, '__gconv_step_data.__trans' => 4, '__gconv_t' => 4, '__gconv_trans_context_fct' => 4, '__gconv_trans_data' => 20, '__gconv_trans_data.__data' => 4, '__gconv_trans_data.__next' => 4, '__gconv_trans_data.__trans_context_fct' => 4, '__gconv_trans_data.__trans_end_fct' => 4, '__gconv_trans_data.__trans_fct' => 4, '__gconv_trans_end_fct' => 4, '__gconv_trans_fct' => 4, '__gconv_trans_init_fct' => 4, '__gconv_trans_query_fct' => 4, '__gid_t' => 4, '__gnuc_va_list' => 4, '__gwchar_t' => 4, '__huge_val_t' => 8, '__huge_val_t.__c' => 8, '__huge_val_t.__c[0]' => 1, '__huge_val_t.__c[1]' => 1, '__huge_val_t.__c[2]' => 1, '__huge_val_t.__c[3]' => 1, '__huge_val_t.__c[4]' => 1, '__huge_val_t.__c[5]' => 1, '__huge_val_t.__c[6]' => 1, '__huge_val_t.__c[7]' => 1, '__huge_val_t.__d' => 8, '__huge_valf_t' => 4, '__huge_valf_t.__c' => 4, '__huge_valf_t.__c[0]' => 1, '__huge_valf_t.__c[1]' => 1, '__huge_valf_t.__c[2]' => 1, '__huge_valf_t.__c[3]' => 1, '__huge_valf_t.__f' => 4, '__id_t' => 4, '__ino64_t' => 8, '__ino_t' => 4, '__int16_t' => 2, '__int32_t' => 4, '__int64_t' => 8, '__int8_t' => 1, '__intptr_t' => 4, '__io_close_fn' => 4, '__io_read_fn' => 4, '__io_seek_fn' => 4, '__io_write_fn' => 4, '__ipc_pid_t' => 2, '__itimer_which' => 1, '__itimer_which_t' => 1, '__jmp_buf' => 24, '__jmp_buf[0]' => 4, '__jmp_buf[1]' => 4, '__jmp_buf[2]' => 4, '__jmp_buf[3]' => 4, '__jmp_buf[4]' => 4, '__jmp_buf[5]' => 4, '__jmp_buf_tag' => 156, '__jmp_buf_tag.__jmpbuf' => 24, '__jmp_buf_tag.__jmpbuf[0]' => 4, '__jmp_buf_tag.__jmpbuf[1]' => 4, '__jmp_buf_tag.__jmpbuf[2]' => 4, '__jmp_buf_tag.__jmpbuf[3]' => 4, '__jmp_buf_tag.__jmpbuf[4]' => 4, '__jmp_buf_tag.__jmpbuf[5]' => 4, '__jmp_buf_tag.__mask_was_saved' => 4, '__jmp_buf_tag.__saved_mask' => 128, '__jmp_buf_tag.__saved_mask.__val' => 128, '__jmp_buf_tag.__saved_mask.__val[0]' => 4, '__jmp_buf_tag.__saved_mask.__val[10]' => 4, '__jmp_buf_tag.__saved_mask.__val[11]' => 4, '__jmp_buf_tag.__saved_mask.__val[12]' => 4, '__jmp_buf_tag.__saved_mask.__val[13]' => 4, '__jmp_buf_tag.__saved_mask.__val[14]' => 4, '__jmp_buf_tag.__saved_mask.__val[15]' => 4, '__jmp_buf_tag.__saved_mask.__val[16]' => 4, '__jmp_buf_tag.__saved_mask.__val[17]' => 4, '__jmp_buf_tag.__saved_mask.__val[18]' => 4, '__jmp_buf_tag.__saved_mask.__val[19]' => 4, '__jmp_buf_tag.__saved_mask.__val[1]' => 4, '__jmp_buf_tag.__saved_mask.__val[20]' => 4, '__jmp_buf_tag.__saved_mask.__val[21]' => 4, '__jmp_buf_tag.__saved_mask.__val[22]' => 4, '__jmp_buf_tag.__saved_mask.__val[23]' => 4, '__jmp_buf_tag.__saved_mask.__val[24]' => 4, '__jmp_buf_tag.__saved_mask.__val[25]' => 4, '__jmp_buf_tag.__saved_mask.__val[26]' => 4, '__jmp_buf_tag.__saved_mask.__val[27]' => 4, '__jmp_buf_tag.__saved_mask.__val[28]' => 4, '__jmp_buf_tag.__saved_mask.__val[29]' => 4, '__jmp_buf_tag.__saved_mask.__val[2]' => 4, '__jmp_buf_tag.__saved_mask.__val[30]' => 4, '__jmp_buf_tag.__saved_mask.__val[31]' => 4, '__jmp_buf_tag.__saved_mask.__val[3]' => 4, '__jmp_buf_tag.__saved_mask.__val[4]' => 4, '__jmp_buf_tag.__saved_mask.__val[5]' => 4, '__jmp_buf_tag.__saved_mask.__val[6]' => 4, '__jmp_buf_tag.__saved_mask.__val[7]' => 4, '__jmp_buf_tag.__saved_mask.__val[8]' => 4, '__jmp_buf_tag.__saved_mask.__val[9]' => 4, '__key_t' => 4, '__locale_struct' => 116, '__locale_struct.__ctype_b' => 4, '__locale_struct.__ctype_tolower' => 4, '__locale_struct.__ctype_toupper' => 4, '__locale_struct.__locales' => 52, '__locale_struct.__locales[0]' => 4, '__locale_struct.__locales[10]' => 4, '__locale_struct.__locales[11]' => 4, '__locale_struct.__locales[12]' => 4, '__locale_struct.__locales[1]' => 4, '__locale_struct.__locales[2]' => 4, '__locale_struct.__locales[3]' => 4, '__locale_struct.__locales[4]' => 4, '__locale_struct.__locales[5]' => 4, '__locale_struct.__locales[6]' => 4, '__locale_struct.__locales[7]' => 4, '__locale_struct.__locales[8]' => 4, '__locale_struct.__locales[9]' => 4, '__locale_struct.__names' => 52, '__locale_struct.__names[0]' => 4, '__locale_struct.__names[10]' => 4, '__locale_struct.__names[11]' => 4, '__locale_struct.__names[12]' => 4, '__locale_struct.__names[1]' => 4, '__locale_struct.__names[2]' => 4, '__locale_struct.__names[3]' => 4, '__locale_struct.__names[4]' => 4, '__locale_struct.__names[5]' => 4, '__locale_struct.__names[6]' => 4, '__locale_struct.__names[7]' => 4, '__locale_struct.__names[8]' => 4, '__locale_struct.__names[9]' => 4, '__locale_t' => 4, '__loff_t' => 8, '__mbstate_t' => 8, '__mbstate_t.__count' => 4, '__mbstate_t.__value' => 4, '__mbstate_t.__value.__wch' => 4, '__mbstate_t.__value.__wchb' => 4, '__mbstate_t.__value.__wchb[0]' => 1, '__mbstate_t.__value.__wchb[1]' => 1, '__mbstate_t.__value.__wchb[2]' => 1, '__mbstate_t.__value.__wchb[3]' => 1, '__mode_t' => 4, '__nlink_t' => 4, '__off64_t' => 8, '__off_t' => 4, '__pid_t' => 4, '__pthread_internal_slist' => 4, '__pthread_internal_slist.__next' => 4, '__pthread_mutex_s' => 24, '__pthread_mutex_s.__count' => 4, '__pthread_mutex_s.__kind' => 4, '__pthread_mutex_s.__list' => 4, '__pthread_mutex_s.__list.__next' => 4, '__pthread_mutex_s.__lock' => 4, '__pthread_mutex_s.__nusers' => 4, '__pthread_mutex_s.__owner' => 4, '__pthread_mutex_s.__spins' => 4, '__pthread_slist_t' => 4, '__pthread_slist_t.__next' => 4, '__qaddr_t' => 4, '__quad_t' => 8, '__rlim64_t' => 8, '__rlim_t' => 4, '__sig_atomic_t' => 4, '__sighandler_t' => 4, '__sigset_t' => 128, '__sigset_t.__val' => 128, '__sigset_t.__val[0]' => 4, '__sigset_t.__val[10]' => 4, '__sigset_t.__val[11]' => 4, '__sigset_t.__val[12]' => 4, '__sigset_t.__val[13]' => 4, '__sigset_t.__val[14]' => 4, '__sigset_t.__val[15]' => 4, '__sigset_t.__val[16]' => 4, '__sigset_t.__val[17]' => 4, '__sigset_t.__val[18]' => 4, '__sigset_t.__val[19]' => 4, '__sigset_t.__val[1]' => 4, '__sigset_t.__val[20]' => 4, '__sigset_t.__val[21]' => 4, '__sigset_t.__val[22]' => 4, '__sigset_t.__val[23]' => 4, '__sigset_t.__val[24]' => 4, '__sigset_t.__val[25]' => 4, '__sigset_t.__val[26]' => 4, '__sigset_t.__val[27]' => 4, '__sigset_t.__val[28]' => 4, '__sigset_t.__val[29]' => 4, '__sigset_t.__val[2]' => 4, '__sigset_t.__val[30]' => 4, '__sigset_t.__val[31]' => 4, '__sigset_t.__val[3]' => 4, '__sigset_t.__val[4]' => 4, '__sigset_t.__val[5]' => 4, '__sigset_t.__val[6]' => 4, '__sigset_t.__val[7]' => 4, '__sigset_t.__val[8]' => 4, '__sigset_t.__val[9]' => 4, '__socket_type' => 1, '__socklen_t' => 4, '__ssize_t' => 4, '__suseconds_t' => 4, '__swblk_t' => 4, '__time_t' => 4, '__timer_t' => 4, '__timezone_ptr_t' => 4, '__u_char' => 1, '__u_int' => 4, '__u_long' => 4, '__u_quad_t' => 8, '__u_short' => 2, '__uid_t' => 4, '__uint16_t' => 2, '__uint32_t' => 4, '__uint64_t' => 8, '__uint8_t' => 1, '__useconds_t' => 4, '_fpreg' => 10, '_fpreg.exponent' => 2, '_fpreg.significand' => 8, '_fpreg.significand[0]' => 2, '_fpreg.significand[1]' => 2, '_fpreg.significand[2]' => 2, '_fpreg.significand[3]' => 2, '_fpstate' => 624, '_fpstate._fxsr_env' => 24, '_fpstate._fxsr_env[0]' => 4, '_fpstate._fxsr_env[1]' => 4, '_fpstate._fxsr_env[2]' => 4, '_fpstate._fxsr_env[3]' => 4, '_fpstate._fxsr_env[4]' => 4, '_fpstate._fxsr_env[5]' => 4, '_fpstate._fxsr_st' => 128, '_fpstate._fxsr_st[0]' => 16, '_fpstate._fxsr_st[0].exponent' => 2, '_fpstate._fxsr_st[0].padding' => 6, '_fpstate._fxsr_st[0].padding[0]' => 2, '_fpstate._fxsr_st[0].padding[1]' => 2, '_fpstate._fxsr_st[0].padding[2]' => 2, '_fpstate._fxsr_st[0].significand' => 8, '_fpstate._fxsr_st[0].significand[0]' => 2, '_fpstate._fxsr_st[0].significand[1]' => 2, '_fpstate._fxsr_st[0].significand[2]' => 2, '_fpstate._fxsr_st[0].significand[3]' => 2, '_fpstate._fxsr_st[1]' => 16, '_fpstate._fxsr_st[1].exponent' => 2, '_fpstate._fxsr_st[1].padding' => 6, '_fpstate._fxsr_st[1].padding[0]' => 2, '_fpstate._fxsr_st[1].padding[1]' => 2, '_fpstate._fxsr_st[1].padding[2]' => 2, '_fpstate._fxsr_st[1].significand' => 8, '_fpstate._fxsr_st[1].significand[0]' => 2, '_fpstate._fxsr_st[1].significand[1]' => 2, '_fpstate._fxsr_st[1].significand[2]' => 2, '_fpstate._fxsr_st[1].significand[3]' => 2, '_fpstate._fxsr_st[2]' => 16, '_fpstate._fxsr_st[2].exponent' => 2, '_fpstate._fxsr_st[2].padding' => 6, '_fpstate._fxsr_st[2].padding[0]' => 2, '_fpstate._fxsr_st[2].padding[1]' => 2, '_fpstate._fxsr_st[2].padding[2]' => 2, '_fpstate._fxsr_st[2].significand' => 8, '_fpstate._fxsr_st[2].significand[0]' => 2, '_fpstate._fxsr_st[2].significand[1]' => 2, '_fpstate._fxsr_st[2].significand[2]' => 2, '_fpstate._fxsr_st[2].significand[3]' => 2, '_fpstate._fxsr_st[3]' => 16, '_fpstate._fxsr_st[3].exponent' => 2, '_fpstate._fxsr_st[3].padding' => 6, '_fpstate._fxsr_st[3].padding[0]' => 2, '_fpstate._fxsr_st[3].padding[1]' => 2, '_fpstate._fxsr_st[3].padding[2]' => 2, '_fpstate._fxsr_st[3].significand' => 8, '_fpstate._fxsr_st[3].significand[0]' => 2, '_fpstate._fxsr_st[3].significand[1]' => 2, '_fpstate._fxsr_st[3].significand[2]' => 2, '_fpstate._fxsr_st[3].significand[3]' => 2, '_fpstate._fxsr_st[4]' => 16, '_fpstate._fxsr_st[4].exponent' => 2, '_fpstate._fxsr_st[4].padding' => 6, '_fpstate._fxsr_st[4].padding[0]' => 2, '_fpstate._fxsr_st[4].padding[1]' => 2, '_fpstate._fxsr_st[4].padding[2]' => 2, '_fpstate._fxsr_st[4].significand' => 8, '_fpstate._fxsr_st[4].significand[0]' => 2, '_fpstate._fxsr_st[4].significand[1]' => 2, '_fpstate._fxsr_st[4].significand[2]' => 2, '_fpstate._fxsr_st[4].significand[3]' => 2, '_fpstate._fxsr_st[5]' => 16, '_fpstate._fxsr_st[5].exponent' => 2, '_fpstate._fxsr_st[5].padding' => 6, '_fpstate._fxsr_st[5].padding[0]' => 2, '_fpstate._fxsr_st[5].padding[1]' => 2, '_fpstate._fxsr_st[5].padding[2]' => 2, '_fpstate._fxsr_st[5].significand' => 8, '_fpstate._fxsr_st[5].significand[0]' => 2, '_fpstate._fxsr_st[5].significand[1]' => 2, '_fpstate._fxsr_st[5].significand[2]' => 2, '_fpstate._fxsr_st[5].significand[3]' => 2, '_fpstate._fxsr_st[6]' => 16, '_fpstate._fxsr_st[6].exponent' => 2, '_fpstate._fxsr_st[6].padding' => 6, '_fpstate._fxsr_st[6].padding[0]' => 2, '_fpstate._fxsr_st[6].padding[1]' => 2, '_fpstate._fxsr_st[6].padding[2]' => 2, '_fpstate._fxsr_st[6].significand' => 8, '_fpstate._fxsr_st[6].significand[0]' => 2, '_fpstate._fxsr_st[6].significand[1]' => 2, '_fpstate._fxsr_st[6].significand[2]' => 2, '_fpstate._fxsr_st[6].significand[3]' => 2, '_fpstate._fxsr_st[7]' => 16, '_fpstate._fxsr_st[7].exponent' => 2, '_fpstate._fxsr_st[7].padding' => 6, '_fpstate._fxsr_st[7].padding[0]' => 2, '_fpstate._fxsr_st[7].padding[1]' => 2, '_fpstate._fxsr_st[7].padding[2]' => 2, '_fpstate._fxsr_st[7].significand' => 8, '_fpstate._fxsr_st[7].significand[0]' => 2, '_fpstate._fxsr_st[7].significand[1]' => 2, '_fpstate._fxsr_st[7].significand[2]' => 2, '_fpstate._fxsr_st[7].significand[3]' => 2, '_fpstate._st' => 80, '_fpstate._st[0]' => 10, '_fpstate._st[0].exponent' => 2, '_fpstate._st[0].significand' => 8, '_fpstate._st[0].significand[0]' => 2, '_fpstate._st[0].significand[1]' => 2, '_fpstate._st[0].significand[2]' => 2, '_fpstate._st[0].significand[3]' => 2, '_fpstate._st[1]' => 10, '_fpstate._st[1].exponent' => 2, '_fpstate._st[1].significand' => 8, '_fpstate._st[1].significand[0]' => 2, '_fpstate._st[1].significand[1]' => 2, '_fpstate._st[1].significand[2]' => 2, '_fpstate._st[1].significand[3]' => 2, '_fpstate._st[2]' => 10, '_fpstate._st[2].exponent' => 2, '_fpstate._st[2].significand' => 8, '_fpstate._st[2].significand[0]' => 2, '_fpstate._st[2].significand[1]' => 2, '_fpstate._st[2].significand[2]' => 2, '_fpstate._st[2].significand[3]' => 2, '_fpstate._st[3]' => 10, '_fpstate._st[3].exponent' => 2, '_fpstate._st[3].significand' => 8, '_fpstate._st[3].significand[0]' => 2, '_fpstate._st[3].significand[1]' => 2, '_fpstate._st[3].significand[2]' => 2, '_fpstate._st[3].significand[3]' => 2, '_fpstate._st[4]' => 10, '_fpstate._st[4].exponent' => 2, '_fpstate._st[4].significand' => 8, '_fpstate._st[4].significand[0]' => 2, '_fpstate._st[4].significand[1]' => 2, '_fpstate._st[4].significand[2]' => 2, '_fpstate._st[4].significand[3]' => 2, '_fpstate._st[5]' => 10, '_fpstate._st[5].exponent' => 2, '_fpstate._st[5].significand' => 8, '_fpstate._st[5].significand[0]' => 2, '_fpstate._st[5].significand[1]' => 2, '_fpstate._st[5].significand[2]' => 2, '_fpstate._st[5].significand[3]' => 2, '_fpstate._st[6]' => 10, '_fpstate._st[6].exponent' => 2, '_fpstate._st[6].significand' => 8, '_fpstate._st[6].significand[0]' => 2, '_fpstate._st[6].significand[1]' => 2, '_fpstate._st[6].significand[2]' => 2, '_fpstate._st[6].significand[3]' => 2, '_fpstate._st[7]' => 10, '_fpstate._st[7].exponent' => 2, '_fpstate._st[7].significand' => 8, '_fpstate._st[7].significand[0]' => 2, '_fpstate._st[7].significand[1]' => 2, '_fpstate._st[7].significand[2]' => 2, '_fpstate._st[7].significand[3]' => 2, '_fpstate._xmm' => 128, '_fpstate._xmm[0]' => 16, '_fpstate._xmm[0].element' => 16, '_fpstate._xmm[0].element[0]' => 4, '_fpstate._xmm[0].element[1]' => 4, '_fpstate._xmm[0].element[2]' => 4, '_fpstate._xmm[0].element[3]' => 4, '_fpstate._xmm[1]' => 16, '_fpstate._xmm[1].element' => 16, '_fpstate._xmm[1].element[0]' => 4, '_fpstate._xmm[1].element[1]' => 4, '_fpstate._xmm[1].element[2]' => 4, '_fpstate._xmm[1].element[3]' => 4, '_fpstate._xmm[2]' => 16, '_fpstate._xmm[2].element' => 16, '_fpstate._xmm[2].element[0]' => 4, '_fpstate._xmm[2].element[1]' => 4, '_fpstate._xmm[2].element[2]' => 4, '_fpstate._xmm[2].element[3]' => 4, '_fpstate._xmm[3]' => 16, '_fpstate._xmm[3].element' => 16, '_fpstate._xmm[3].element[0]' => 4, '_fpstate._xmm[3].element[1]' => 4, '_fpstate._xmm[3].element[2]' => 4, '_fpstate._xmm[3].element[3]' => 4, '_fpstate._xmm[4]' => 16, '_fpstate._xmm[4].element' => 16, '_fpstate._xmm[4].element[0]' => 4, '_fpstate._xmm[4].element[1]' => 4, '_fpstate._xmm[4].element[2]' => 4, '_fpstate._xmm[4].element[3]' => 4, '_fpstate._xmm[5]' => 16, '_fpstate._xmm[5].element' => 16, '_fpstate._xmm[5].element[0]' => 4, '_fpstate._xmm[5].element[1]' => 4, '_fpstate._xmm[5].element[2]' => 4, '_fpstate._xmm[5].element[3]' => 4, '_fpstate._xmm[6]' => 16, '_fpstate._xmm[6].element' => 16, '_fpstate._xmm[6].element[0]' => 4, '_fpstate._xmm[6].element[1]' => 4, '_fpstate._xmm[6].element[2]' => 4, '_fpstate._xmm[6].element[3]' => 4, '_fpstate._xmm[7]' => 16, '_fpstate._xmm[7].element' => 16, '_fpstate._xmm[7].element[0]' => 4, '_fpstate._xmm[7].element[1]' => 4, '_fpstate._xmm[7].element[2]' => 4, '_fpstate._xmm[7].element[3]' => 4, '_fpstate.cssel' => 4, '_fpstate.cw' => 4, '_fpstate.dataoff' => 4, '_fpstate.datasel' => 4, '_fpstate.ipoff' => 4, '_fpstate.magic' => 2, '_fpstate.mxcsr' => 4, '_fpstate.padding' => 224, '_fpstate.padding[0]' => 4, '_fpstate.padding[10]' => 4, '_fpstate.padding[11]' => 4, '_fpstate.padding[12]' => 4, '_fpstate.padding[13]' => 4, '_fpstate.padding[14]' => 4, '_fpstate.padding[15]' => 4, '_fpstate.padding[16]' => 4, '_fpstate.padding[17]' => 4, '_fpstate.padding[18]' => 4, '_fpstate.padding[19]' => 4, '_fpstate.padding[1]' => 4, '_fpstate.padding[20]' => 4, '_fpstate.padding[21]' => 4, '_fpstate.padding[22]' => 4, '_fpstate.padding[23]' => 4, '_fpstate.padding[24]' => 4, '_fpstate.padding[25]' => 4, '_fpstate.padding[26]' => 4, '_fpstate.padding[27]' => 4, '_fpstate.padding[28]' => 4, '_fpstate.padding[29]' => 4, '_fpstate.padding[2]' => 4, '_fpstate.padding[30]' => 4, '_fpstate.padding[31]' => 4, '_fpstate.padding[32]' => 4, '_fpstate.padding[33]' => 4, '_fpstate.padding[34]' => 4, '_fpstate.padding[35]' => 4, '_fpstate.padding[36]' => 4, '_fpstate.padding[37]' => 4, '_fpstate.padding[38]' => 4, '_fpstate.padding[39]' => 4, '_fpstate.padding[3]' => 4, '_fpstate.padding[40]' => 4, '_fpstate.padding[41]' => 4, '_fpstate.padding[42]' => 4, '_fpstate.padding[43]' => 4, '_fpstate.padding[44]' => 4, '_fpstate.padding[45]' => 4, '_fpstate.padding[46]' => 4, '_fpstate.padding[47]' => 4, '_fpstate.padding[48]' => 4, '_fpstate.padding[49]' => 4, '_fpstate.padding[4]' => 4, '_fpstate.padding[50]' => 4, '_fpstate.padding[51]' => 4, '_fpstate.padding[52]' => 4, '_fpstate.padding[53]' => 4, '_fpstate.padding[54]' => 4, '_fpstate.padding[55]' => 4, '_fpstate.padding[5]' => 4, '_fpstate.padding[6]' => 4, '_fpstate.padding[7]' => 4, '_fpstate.padding[8]' => 4, '_fpstate.padding[9]' => 4, '_fpstate.reserved' => 4, '_fpstate.status' => 2, '_fpstate.sw' => 4, '_fpstate.tag' => 4, '_fpxreg' => 16, '_fpxreg.exponent' => 2, '_fpxreg.padding' => 6, '_fpxreg.padding[0]' => 2, '_fpxreg.padding[1]' => 2, '_fpxreg.padding[2]' => 2, '_fpxreg.significand' => 8, '_fpxreg.significand[0]' => 2, '_fpxreg.significand[1]' => 2, '_fpxreg.significand[2]' => 2, '_fpxreg.significand[3]' => 2, '_libc_fpreg' => 10, '_libc_fpreg.exponent' => 2, '_libc_fpreg.significand' => 8, '_libc_fpreg.significand[0]' => 2, '_libc_fpreg.significand[1]' => 2, '_libc_fpreg.significand[2]' => 2, '_libc_fpreg.significand[3]' => 2, '_libc_fpstate' => 112, '_libc_fpstate._st' => 80, '_libc_fpstate._st[0]' => 10, '_libc_fpstate._st[0].exponent' => 2, '_libc_fpstate._st[0].significand' => 8, '_libc_fpstate._st[0].significand[0]' => 2, '_libc_fpstate._st[0].significand[1]' => 2, '_libc_fpstate._st[0].significand[2]' => 2, '_libc_fpstate._st[0].significand[3]' => 2, '_libc_fpstate._st[1]' => 10, '_libc_fpstate._st[1].exponent' => 2, '_libc_fpstate._st[1].significand' => 8, '_libc_fpstate._st[1].significand[0]' => 2, '_libc_fpstate._st[1].significand[1]' => 2, '_libc_fpstate._st[1].significand[2]' => 2, '_libc_fpstate._st[1].significand[3]' => 2, '_libc_fpstate._st[2]' => 10, '_libc_fpstate._st[2].exponent' => 2, '_libc_fpstate._st[2].significand' => 8, '_libc_fpstate._st[2].significand[0]' => 2, '_libc_fpstate._st[2].significand[1]' => 2, '_libc_fpstate._st[2].significand[2]' => 2, '_libc_fpstate._st[2].significand[3]' => 2, '_libc_fpstate._st[3]' => 10, '_libc_fpstate._st[3].exponent' => 2, '_libc_fpstate._st[3].significand' => 8, '_libc_fpstate._st[3].significand[0]' => 2, '_libc_fpstate._st[3].significand[1]' => 2, '_libc_fpstate._st[3].significand[2]' => 2, '_libc_fpstate._st[3].significand[3]' => 2, '_libc_fpstate._st[4]' => 10, '_libc_fpstate._st[4].exponent' => 2, '_libc_fpstate._st[4].significand' => 8, '_libc_fpstate._st[4].significand[0]' => 2, '_libc_fpstate._st[4].significand[1]' => 2, '_libc_fpstate._st[4].significand[2]' => 2, '_libc_fpstate._st[4].significand[3]' => 2, '_libc_fpstate._st[5]' => 10, '_libc_fpstate._st[5].exponent' => 2, '_libc_fpstate._st[5].significand' => 8, '_libc_fpstate._st[5].significand[0]' => 2, '_libc_fpstate._st[5].significand[1]' => 2, '_libc_fpstate._st[5].significand[2]' => 2, '_libc_fpstate._st[5].significand[3]' => 2, '_libc_fpstate._st[6]' => 10, '_libc_fpstate._st[6].exponent' => 2, '_libc_fpstate._st[6].significand' => 8, '_libc_fpstate._st[6].significand[0]' => 2, '_libc_fpstate._st[6].significand[1]' => 2, '_libc_fpstate._st[6].significand[2]' => 2, '_libc_fpstate._st[6].significand[3]' => 2, '_libc_fpstate._st[7]' => 10, '_libc_fpstate._st[7].exponent' => 2, '_libc_fpstate._st[7].significand' => 8, '_libc_fpstate._st[7].significand[0]' => 2, '_libc_fpstate._st[7].significand[1]' => 2, '_libc_fpstate._st[7].significand[2]' => 2, '_libc_fpstate._st[7].significand[3]' => 2, '_libc_fpstate.cssel' => 4, '_libc_fpstate.cw' => 4, '_libc_fpstate.dataoff' => 4, '_libc_fpstate.datasel' => 4, '_libc_fpstate.ipoff' => 4, '_libc_fpstate.status' => 4, '_libc_fpstate.sw' => 4, '_libc_fpstate.tag' => 4, '_reg_trie_accepted' => 6, '_reg_trie_accepted.endpos' => 4, '_reg_trie_accepted.wordnum' => 2, '_sublex_info' => 20, '_sublex_info.sub_inwhat' => 4, '_sublex_info.sub_op' => 4, '_sublex_info.super_bufend' => 4, '_sublex_info.super_bufptr' => 4, '_sublex_info.super_state' => 4, '_xmmreg' => 16, '_xmmreg.element' => 16, '_xmmreg.element[0]' => 4, '_xmmreg.element[1]' => 4, '_xmmreg.element[2]' => 4, '_xmmreg.element[3]' => 4, 'addrinfo' => 32, 'addrinfo.ai_addr' => 4, 'addrinfo.ai_addrlen' => 4, 'addrinfo.ai_canonname' => 4, 'addrinfo.ai_family' => 4, 'addrinfo.ai_flags' => 4, 'addrinfo.ai_next' => 4, 'addrinfo.ai_protocol' => 4, 'addrinfo.ai_socktype' => 4, 'am_table' => 284, 'am_table.fallback' => 4, 'am_table.flags' => 4, 'am_table.table' => 268, 'am_table.table[0]' => 4, 'am_table.table[10]' => 4, 'am_table.table[11]' => 4, 'am_table.table[12]' => 4, 'am_table.table[13]' => 4, 'am_table.table[14]' => 4, 'am_table.table[15]' => 4, 'am_table.table[16]' => 4, 'am_table.table[17]' => 4, 'am_table.table[18]' => 4, 'am_table.table[19]' => 4, 'am_table.table[1]' => 4, 'am_table.table[20]' => 4, 'am_table.table[21]' => 4, 'am_table.table[22]' => 4, 'am_table.table[23]' => 4, 'am_table.table[24]' => 4, 'am_table.table[25]' => 4, 'am_table.table[26]' => 4, 'am_table.table[27]' => 4, 'am_table.table[28]' => 4, 'am_table.table[29]' => 4, 'am_table.table[2]' => 4, 'am_table.table[30]' => 4, 'am_table.table[31]' => 4, 'am_table.table[32]' => 4, 'am_table.table[33]' => 4, 'am_table.table[34]' => 4, 'am_table.table[35]' => 4, 'am_table.table[36]' => 4, 'am_table.table[37]' => 4, 'am_table.table[38]' => 4, 'am_table.table[39]' => 4, 'am_table.table[3]' => 4, 'am_table.table[40]' => 4, 'am_table.table[41]' => 4, 'am_table.table[42]' => 4, 'am_table.table[43]' => 4, 'am_table.table[44]' => 4, 'am_table.table[45]' => 4, 'am_table.table[46]' => 4, 'am_table.table[47]' => 4, 'am_table.table[48]' => 4, 'am_table.table[49]' => 4, 'am_table.table[4]' => 4, 'am_table.table[50]' => 4, 'am_table.table[51]' => 4, 'am_table.table[52]' => 4, 'am_table.table[53]' => 4, 'am_table.table[54]' => 4, 'am_table.table[55]' => 4, 'am_table.table[56]' => 4, 'am_table.table[57]' => 4, 'am_table.table[58]' => 4, 'am_table.table[59]' => 4, 'am_table.table[5]' => 4, 'am_table.table[60]' => 4, 'am_table.table[61]' => 4, 'am_table.table[62]' => 4, 'am_table.table[63]' => 4, 'am_table.table[64]' => 4, 'am_table.table[65]' => 4, 'am_table.table[66]' => 4, 'am_table.table[6]' => 4, 'am_table.table[7]' => 4, 'am_table.table[8]' => 4, 'am_table.table[9]' => 4, 'am_table.was_ok_am' => 4, 'am_table.was_ok_sub' => 4, 'am_table_short' => 12, 'am_table_short.flags' => 4, 'am_table_short.was_ok_am' => 4, 'am_table_short.was_ok_sub' => 4, 'any' => 4, 'any.any_bool' => 1, 'any.any_dptr' => 4, 'any.any_dxptr' => 4, 'any.any_i32' => 4, 'any.any_iv' => 4, 'any.any_long' => 4, 'any.any_ptr' => 4, 'av' => 16, 'av.sv_any' => 4, 'av.sv_flags' => 4, 'av.sv_refcnt' => 4, 'av.sv_u' => 4, 'av.sv_u.svu_array' => 4, 'av.sv_u.svu_gp' => 4, 'av.sv_u.svu_hash' => 4, 'av.sv_u.svu_iv' => 4, 'av.sv_u.svu_pv' => 4, 'av.sv_u.svu_rv' => 4, 'av.sv_u.svu_uv' => 4, 'binop' => 28, 'binop.op_first' => 4, 'binop.op_flags' => 1, 'binop.op_last' => 4, 'binop.op_next' => 4, 'binop.op_ppaddr' => 4, 'binop.op_private' => 1, 'binop.op_sibling' => 4, 'binop.op_targ' => 4, 'blkcnt64_t' => 8, 'blkcnt_t' => 4, 'blksize_t' => 4, 'block' => 64, 'block.blk_u' => 40, 'block.blk_u.blku_eval' => 27, 'block.blk_u.blku_eval.cur_text' => 4, 'block.blk_u.blku_eval.cur_top_env' => 4, 'block.blk_u.blku_eval.cv' => 4, 'block.blk_u.blku_eval.old_eval_root' => 4, 'block.blk_u.blku_eval.old_in_eval' => 1, 'block.blk_u.blku_eval.old_namesv' => 4, 'block.blk_u.blku_eval.old_op_type' => 2, 'block.blk_u.blku_eval.retop' => 4, 'block.blk_u.blku_givwhen' => 4, 'block.blk_u.blku_givwhen.leave_op' => 4, 'block.blk_u.blku_loop' => 40, 'block.blk_u.blku_loop.iterary' => 4, 'block.blk_u.blku_loop.iterix' => 4, 'block.blk_u.blku_loop.iterlval' => 4, 'block.blk_u.blku_loop.itermax' => 4, 'block.blk_u.blku_loop.itersave' => 4, 'block.blk_u.blku_loop.itervar' => 4, 'block.blk_u.blku_loop.label' => 4, 'block.blk_u.blku_loop.my_op' => 4, 'block.blk_u.blku_loop.next_op' => 4, 'block.blk_u.blku_loop.resetsp' => 4, 'block.blk_u.blku_sub' => 34, 'block.blk_u.blku_sub.argarray' => 4, 'block.blk_u.blku_sub.cv' => 4, 'block.blk_u.blku_sub.dfoutgv' => 4, 'block.blk_u.blku_sub.gv' => 4, 'block.blk_u.blku_sub.hasargs' => 1, 'block.blk_u.blku_sub.lval' => 1, 'block.blk_u.blku_sub.oldcomppad' => 4, 'block.blk_u.blku_sub.olddepth' => 4, 'block.blk_u.blku_sub.retop' => 4, 'block.blk_u.blku_sub.savearray' => 4, 'block.blku_gimme' => 1, 'block.blku_oldcop' => 4, 'block.blku_oldmarksp' => 4, 'block.blku_oldpm' => 4, 'block.blku_oldscopesp' => 4, 'block.blku_oldsp' => 4, 'block.blku_spare' => 1, 'block.blku_type' => 2, 'block_eval' => 27, 'block_eval.cur_text' => 4, 'block_eval.cur_top_env' => 4, 'block_eval.cv' => 4, 'block_eval.old_eval_root' => 4, 'block_eval.old_in_eval' => 1, 'block_eval.old_namesv' => 4, 'block_eval.old_op_type' => 2, 'block_eval.retop' => 4, 'block_givwhen' => 4, 'block_givwhen.leave_op' => 4, 'block_loop' => 40, 'block_loop.iterary' => 4, 'block_loop.iterix' => 4, 'block_loop.iterlval' => 4, 'block_loop.itermax' => 4, 'block_loop.itersave' => 4, 'block_loop.itervar' => 4, 'block_loop.label' => 4, 'block_loop.my_op' => 4, 'block_loop.next_op' => 4, 'block_loop.resetsp' => 4, 'block_sub' => 34, 'block_sub.argarray' => 4, 'block_sub.cv' => 4, 'block_sub.dfoutgv' => 4, 'block_sub.gv' => 4, 'block_sub.hasargs' => 1, 'block_sub.lval' => 1, 'block_sub.oldcomppad' => 4, 'block_sub.olddepth' => 4, 'block_sub.retop' => 4, 'block_sub.savearray' => 4, 'caddr_t' => 4, 'clock_t' => 4, 'clockid_t' => 4, 'clone_params' => 12, 'clone_params.flags' => 4, 'clone_params.proto_perl' => 4, 'clone_params.stashes' => 4, 'cmsghdr' => 12, 'cmsghdr.cmsg_len' => 4, 'cmsghdr.cmsg_level' => 4, 'cmsghdr.cmsg_type' => 4, 'comparison_fn_t' => 4, 'context' => 64, 'context.cx_u' => 64, 'context.cx_u.cx_blk' => 64, 'context.cx_u.cx_blk.blk_u' => 40, 'context.cx_u.cx_blk.blk_u.blku_eval' => 27, 'context.cx_u.cx_blk.blk_u.blku_eval.cur_text' => 4, 'context.cx_u.cx_blk.blk_u.blku_eval.cur_top_env' => 4, 'context.cx_u.cx_blk.blk_u.blku_eval.cv' => 4, 'context.cx_u.cx_blk.blk_u.blku_eval.old_eval_root' => 4, 'context.cx_u.cx_blk.blk_u.blku_eval.old_in_eval' => 1, 'context.cx_u.cx_blk.blk_u.blku_eval.old_namesv' => 4, 'context.cx_u.cx_blk.blk_u.blku_eval.old_op_type' => 2, 'context.cx_u.cx_blk.blk_u.blku_eval.retop' => 4, 'context.cx_u.cx_blk.blk_u.blku_givwhen' => 4, 'context.cx_u.cx_blk.blk_u.blku_givwhen.leave_op' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop' => 40, 'context.cx_u.cx_blk.blk_u.blku_loop.iterary' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.iterix' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.iterlval' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.itermax' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.itersave' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.itervar' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.label' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.my_op' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.next_op' => 4, 'context.cx_u.cx_blk.blk_u.blku_loop.resetsp' => 4, 'context.cx_u.cx_blk.blk_u.blku_sub' => 34, 'context.cx_u.cx_blk.blk_u.blku_sub.argarray' => 4, 'context.cx_u.cx_blk.blk_u.blku_sub.cv' => 4, 'context.cx_u.cx_blk.blk_u.blku_sub.dfoutgv' => 4, 'context.cx_u.cx_blk.blk_u.blku_sub.gv' => 4, 'context.cx_u.cx_blk.blk_u.blku_sub.hasargs' => 1, 'context.cx_u.cx_blk.blk_u.blku_sub.lval' => 1, 'context.cx_u.cx_blk.blk_u.blku_sub.oldcomppad' => 4, 'context.cx_u.cx_blk.blk_u.blku_sub.olddepth' => 4, 'context.cx_u.cx_blk.blk_u.blku_sub.retop' => 4, 'context.cx_u.cx_blk.blk_u.blku_sub.savearray' => 4, 'context.cx_u.cx_blk.blku_gimme' => 1, 'context.cx_u.cx_blk.blku_oldcop' => 4, 'context.cx_u.cx_blk.blku_oldmarksp' => 4, 'context.cx_u.cx_blk.blku_oldpm' => 4, 'context.cx_u.cx_blk.blku_oldscopesp' => 4, 'context.cx_u.cx_blk.blku_oldsp' => 4, 'context.cx_u.cx_blk.blku_spare' => 1, 'context.cx_u.cx_blk.blku_type' => 2, 'context.cx_u.cx_subst' => 52, 'context.cx_u.cx_subst.sbu_dstr' => 4, 'context.cx_u.cx_subst.sbu_iters' => 4, 'context.cx_u.cx_subst.sbu_m' => 4, 'context.cx_u.cx_subst.sbu_maxiters' => 4, 'context.cx_u.cx_subst.sbu_oldsave' => 4, 'context.cx_u.cx_subst.sbu_once' => 1, 'context.cx_u.cx_subst.sbu_orig' => 4, 'context.cx_u.cx_subst.sbu_rflags' => 4, 'context.cx_u.cx_subst.sbu_rx' => 4, 'context.cx_u.cx_subst.sbu_rxres' => 4, 'context.cx_u.cx_subst.sbu_rxtainted' => 1, 'context.cx_u.cx_subst.sbu_s' => 4, 'context.cx_u.cx_subst.sbu_strend' => 4, 'context.cx_u.cx_subst.sbu_targ' => 4, 'context.cx_u.cx_subst.sbu_type' => 2, 'cookie_close_function_t' => 4, 'cookie_io_functions_t' => 16, 'cookie_io_functions_t.close' => 4, 'cookie_io_functions_t.read' => 4, 'cookie_io_functions_t.seek' => 4, 'cookie_io_functions_t.write' => 4, 'cookie_read_function_t' => 4, 'cookie_seek_function_t' => 4, 'cookie_write_function_t' => 4, 'cop' => 52, 'cop.cop_filegv' => 4, 'cop.cop_hints' => 4, 'cop.cop_hints_hash' => 4, 'cop.cop_label' => 4, 'cop.cop_line' => 4, 'cop.cop_seq' => 4, 'cop.cop_stash' => 4, 'cop.cop_warnings' => 4, 'cop.op_flags' => 1, 'cop.op_next' => 4, 'cop.op_ppaddr' => 4, 'cop.op_private' => 1, 'cop.op_sibling' => 4, 'cop.op_targ' => 4, 'cv' => 16, 'cv.sv_any' => 4, 'cv.sv_flags' => 4, 'cv.sv_refcnt' => 4, 'cv.sv_u' => 4, 'cv.sv_u.svu_array' => 4, 'cv.sv_u.svu_gp' => 4, 'cv.sv_u.svu_hash' => 4, 'cv.sv_u.svu_iv' => 4, 'cv.sv_u.svu_pv' => 4, 'cv.sv_u.svu_rv' => 4, 'cv.sv_u.svu_uv' => 4, 'cv_flags_t' => 2, 'daddr_t' => 4, 'dev_t' => 8, 'dirent' => 267, 'dirent.d_ino' => 4, 'dirent.d_name' => 256, 'dirent.d_name[0]' => 1, 'dirent.d_name[100]' => 1, 'dirent.d_name[101]' => 1, 'dirent.d_name[102]' => 1, 'dirent.d_name[103]' => 1, 'dirent.d_name[104]' => 1, 'dirent.d_name[105]' => 1, 'dirent.d_name[106]' => 1, 'dirent.d_name[107]' => 1, 'dirent.d_name[108]' => 1, 'dirent.d_name[109]' => 1, 'dirent.d_name[10]' => 1, 'dirent.d_name[110]' => 1, 'dirent.d_name[111]' => 1, 'dirent.d_name[112]' => 1, 'dirent.d_name[113]' => 1, 'dirent.d_name[114]' => 1, 'dirent.d_name[115]' => 1, 'dirent.d_name[116]' => 1, 'dirent.d_name[117]' => 1, 'dirent.d_name[118]' => 1, 'dirent.d_name[119]' => 1, 'dirent.d_name[11]' => 1, 'dirent.d_name[120]' => 1, 'dirent.d_name[121]' => 1, 'dirent.d_name[122]' => 1, 'dirent.d_name[123]' => 1, 'dirent.d_name[124]' => 1, 'dirent.d_name[125]' => 1, 'dirent.d_name[126]' => 1, 'dirent.d_name[127]' => 1, 'dirent.d_name[128]' => 1, 'dirent.d_name[129]' => 1, 'dirent.d_name[12]' => 1, 'dirent.d_name[130]' => 1, 'dirent.d_name[131]' => 1, 'dirent.d_name[132]' => 1, 'dirent.d_name[133]' => 1, 'dirent.d_name[134]' => 1, 'dirent.d_name[135]' => 1, 'dirent.d_name[136]' => 1, 'dirent.d_name[137]' => 1, 'dirent.d_name[138]' => 1, 'dirent.d_name[139]' => 1, 'dirent.d_name[13]' => 1, 'dirent.d_name[140]' => 1, 'dirent.d_name[141]' => 1, 'dirent.d_name[142]' => 1, 'dirent.d_name[143]' => 1, 'dirent.d_name[144]' => 1, 'dirent.d_name[145]' => 1, 'dirent.d_name[146]' => 1, 'dirent.d_name[147]' => 1, 'dirent.d_name[148]' => 1, 'dirent.d_name[149]' => 1, 'dirent.d_name[14]' => 1, 'dirent.d_name[150]' => 1, 'dirent.d_name[151]' => 1, 'dirent.d_name[152]' => 1, 'dirent.d_name[153]' => 1, 'dirent.d_name[154]' => 1, 'dirent.d_name[155]' => 1, 'dirent.d_name[156]' => 1, 'dirent.d_name[157]' => 1, 'dirent.d_name[158]' => 1, 'dirent.d_name[159]' => 1, 'dirent.d_name[15]' => 1, 'dirent.d_name[160]' => 1, 'dirent.d_name[161]' => 1, 'dirent.d_name[162]' => 1, 'dirent.d_name[163]' => 1, 'dirent.d_name[164]' => 1, 'dirent.d_name[165]' => 1, 'dirent.d_name[166]' => 1, 'dirent.d_name[167]' => 1, 'dirent.d_name[168]' => 1, 'dirent.d_name[169]' => 1, 'dirent.d_name[16]' => 1, 'dirent.d_name[170]' => 1, 'dirent.d_name[171]' => 1, 'dirent.d_name[172]' => 1, 'dirent.d_name[173]' => 1, 'dirent.d_name[174]' => 1, 'dirent.d_name[175]' => 1, 'dirent.d_name[176]' => 1, 'dirent.d_name[177]' => 1, 'dirent.d_name[178]' => 1, 'dirent.d_name[179]' => 1, 'dirent.d_name[17]' => 1, 'dirent.d_name[180]' => 1, 'dirent.d_name[181]' => 1, 'dirent.d_name[182]' => 1, 'dirent.d_name[183]' => 1, 'dirent.d_name[184]' => 1, 'dirent.d_name[185]' => 1, 'dirent.d_name[186]' => 1, 'dirent.d_name[187]' => 1, 'dirent.d_name[188]' => 1, 'dirent.d_name[189]' => 1, 'dirent.d_name[18]' => 1, 'dirent.d_name[190]' => 1, 'dirent.d_name[191]' => 1, 'dirent.d_name[192]' => 1, 'dirent.d_name[193]' => 1, 'dirent.d_name[194]' => 1, 'dirent.d_name[195]' => 1, 'dirent.d_name[196]' => 1, 'dirent.d_name[197]' => 1, 'dirent.d_name[198]' => 1, 'dirent.d_name[199]' => 1, 'dirent.d_name[19]' => 1, 'dirent.d_name[1]' => 1, 'dirent.d_name[200]' => 1, 'dirent.d_name[201]' => 1, 'dirent.d_name[202]' => 1, 'dirent.d_name[203]' => 1, 'dirent.d_name[204]' => 1, 'dirent.d_name[205]' => 1, 'dirent.d_name[206]' => 1, 'dirent.d_name[207]' => 1, 'dirent.d_name[208]' => 1, 'dirent.d_name[209]' => 1, 'dirent.d_name[20]' => 1, 'dirent.d_name[210]' => 1, 'dirent.d_name[211]' => 1, 'dirent.d_name[212]' => 1, 'dirent.d_name[213]' => 1, 'dirent.d_name[214]' => 1, 'dirent.d_name[215]' => 1, 'dirent.d_name[216]' => 1, 'dirent.d_name[217]' => 1, 'dirent.d_name[218]' => 1, 'dirent.d_name[219]' => 1, 'dirent.d_name[21]' => 1, 'dirent.d_name[220]' => 1, 'dirent.d_name[221]' => 1, 'dirent.d_name[222]' => 1, 'dirent.d_name[223]' => 1, 'dirent.d_name[224]' => 1, 'dirent.d_name[225]' => 1, 'dirent.d_name[226]' => 1, 'dirent.d_name[227]' => 1, 'dirent.d_name[228]' => 1, 'dirent.d_name[229]' => 1, 'dirent.d_name[22]' => 1, 'dirent.d_name[230]' => 1, 'dirent.d_name[231]' => 1, 'dirent.d_name[232]' => 1, 'dirent.d_name[233]' => 1, 'dirent.d_name[234]' => 1, 'dirent.d_name[235]' => 1, 'dirent.d_name[236]' => 1, 'dirent.d_name[237]' => 1, 'dirent.d_name[238]' => 1, 'dirent.d_name[239]' => 1, 'dirent.d_name[23]' => 1, 'dirent.d_name[240]' => 1, 'dirent.d_name[241]' => 1, 'dirent.d_name[242]' => 1, 'dirent.d_name[243]' => 1, 'dirent.d_name[244]' => 1, 'dirent.d_name[245]' => 1, 'dirent.d_name[246]' => 1, 'dirent.d_name[247]' => 1, 'dirent.d_name[248]' => 1, 'dirent.d_name[249]' => 1, 'dirent.d_name[24]' => 1, 'dirent.d_name[250]' => 1, 'dirent.d_name[251]' => 1, 'dirent.d_name[252]' => 1, 'dirent.d_name[253]' => 1, 'dirent.d_name[254]' => 1, 'dirent.d_name[255]' => 1, 'dirent.d_name[25]' => 1, 'dirent.d_name[26]' => 1, 'dirent.d_name[27]' => 1, 'dirent.d_name[28]' => 1, 'dirent.d_name[29]' => 1, 'dirent.d_name[2]' => 1, 'dirent.d_name[30]' => 1, 'dirent.d_name[31]' => 1, 'dirent.d_name[32]' => 1, 'dirent.d_name[33]' => 1, 'dirent.d_name[34]' => 1, 'dirent.d_name[35]' => 1, 'dirent.d_name[36]' => 1, 'dirent.d_name[37]' => 1, 'dirent.d_name[38]' => 1, 'dirent.d_name[39]' => 1, 'dirent.d_name[3]' => 1, 'dirent.d_name[40]' => 1, 'dirent.d_name[41]' => 1, 'dirent.d_name[42]' => 1, 'dirent.d_name[43]' => 1, 'dirent.d_name[44]' => 1, 'dirent.d_name[45]' => 1, 'dirent.d_name[46]' => 1, 'dirent.d_name[47]' => 1, 'dirent.d_name[48]' => 1, 'dirent.d_name[49]' => 1, 'dirent.d_name[4]' => 1, 'dirent.d_name[50]' => 1, 'dirent.d_name[51]' => 1, 'dirent.d_name[52]' => 1, 'dirent.d_name[53]' => 1, 'dirent.d_name[54]' => 1, 'dirent.d_name[55]' => 1, 'dirent.d_name[56]' => 1, 'dirent.d_name[57]' => 1, 'dirent.d_name[58]' => 1, 'dirent.d_name[59]' => 1, 'dirent.d_name[5]' => 1, 'dirent.d_name[60]' => 1, 'dirent.d_name[61]' => 1, 'dirent.d_name[62]' => 1, 'dirent.d_name[63]' => 1, 'dirent.d_name[64]' => 1, 'dirent.d_name[65]' => 1, 'dirent.d_name[66]' => 1, 'dirent.d_name[67]' => 1, 'dirent.d_name[68]' => 1, 'dirent.d_name[69]' => 1, 'dirent.d_name[6]' => 1, 'dirent.d_name[70]' => 1, 'dirent.d_name[71]' => 1, 'dirent.d_name[72]' => 1, 'dirent.d_name[73]' => 1, 'dirent.d_name[74]' => 1, 'dirent.d_name[75]' => 1, 'dirent.d_name[76]' => 1, 'dirent.d_name[77]' => 1, 'dirent.d_name[78]' => 1, 'dirent.d_name[79]' => 1, 'dirent.d_name[7]' => 1, 'dirent.d_name[80]' => 1, 'dirent.d_name[81]' => 1, 'dirent.d_name[82]' => 1, 'dirent.d_name[83]' => 1, 'dirent.d_name[84]' => 1, 'dirent.d_name[85]' => 1, 'dirent.d_name[86]' => 1, 'dirent.d_name[87]' => 1, 'dirent.d_name[88]' => 1, 'dirent.d_name[89]' => 1, 'dirent.d_name[8]' => 1, 'dirent.d_name[90]' => 1, 'dirent.d_name[91]' => 1, 'dirent.d_name[92]' => 1, 'dirent.d_name[93]' => 1, 'dirent.d_name[94]' => 1, 'dirent.d_name[95]' => 1, 'dirent.d_name[96]' => 1, 'dirent.d_name[97]' => 1, 'dirent.d_name[98]' => 1, 'dirent.d_name[99]' => 1, 'dirent.d_name[9]' => 1, 'dirent.d_off' => 4, 'dirent.d_reclen' => 2, 'dirent.d_type' => 1, 'dirent64' => 275, 'dirent64.d_ino' => 8, 'dirent64.d_name' => 256, 'dirent64.d_name[0]' => 1, 'dirent64.d_name[100]' => 1, 'dirent64.d_name[101]' => 1, 'dirent64.d_name[102]' => 1, 'dirent64.d_name[103]' => 1, 'dirent64.d_name[104]' => 1, 'dirent64.d_name[105]' => 1, 'dirent64.d_name[106]' => 1, 'dirent64.d_name[107]' => 1, 'dirent64.d_name[108]' => 1, 'dirent64.d_name[109]' => 1, 'dirent64.d_name[10]' => 1, 'dirent64.d_name[110]' => 1, 'dirent64.d_name[111]' => 1, 'dirent64.d_name[112]' => 1, 'dirent64.d_name[113]' => 1, 'dirent64.d_name[114]' => 1, 'dirent64.d_name[115]' => 1, 'dirent64.d_name[116]' => 1, 'dirent64.d_name[117]' => 1, 'dirent64.d_name[118]' => 1, 'dirent64.d_name[119]' => 1, 'dirent64.d_name[11]' => 1, 'dirent64.d_name[120]' => 1, 'dirent64.d_name[121]' => 1, 'dirent64.d_name[122]' => 1, 'dirent64.d_name[123]' => 1, 'dirent64.d_name[124]' => 1, 'dirent64.d_name[125]' => 1, 'dirent64.d_name[126]' => 1, 'dirent64.d_name[127]' => 1, 'dirent64.d_name[128]' => 1, 'dirent64.d_name[129]' => 1, 'dirent64.d_name[12]' => 1, 'dirent64.d_name[130]' => 1, 'dirent64.d_name[131]' => 1, 'dirent64.d_name[132]' => 1, 'dirent64.d_name[133]' => 1, 'dirent64.d_name[134]' => 1, 'dirent64.d_name[135]' => 1, 'dirent64.d_name[136]' => 1, 'dirent64.d_name[137]' => 1, 'dirent64.d_name[138]' => 1, 'dirent64.d_name[139]' => 1, 'dirent64.d_name[13]' => 1, 'dirent64.d_name[140]' => 1, 'dirent64.d_name[141]' => 1, 'dirent64.d_name[142]' => 1, 'dirent64.d_name[143]' => 1, 'dirent64.d_name[144]' => 1, 'dirent64.d_name[145]' => 1, 'dirent64.d_name[146]' => 1, 'dirent64.d_name[147]' => 1, 'dirent64.d_name[148]' => 1, 'dirent64.d_name[149]' => 1, 'dirent64.d_name[14]' => 1, 'dirent64.d_name[150]' => 1, 'dirent64.d_name[151]' => 1, 'dirent64.d_name[152]' => 1, 'dirent64.d_name[153]' => 1, 'dirent64.d_name[154]' => 1, 'dirent64.d_name[155]' => 1, 'dirent64.d_name[156]' => 1, 'dirent64.d_name[157]' => 1, 'dirent64.d_name[158]' => 1, 'dirent64.d_name[159]' => 1, 'dirent64.d_name[15]' => 1, 'dirent64.d_name[160]' => 1, 'dirent64.d_name[161]' => 1, 'dirent64.d_name[162]' => 1, 'dirent64.d_name[163]' => 1, 'dirent64.d_name[164]' => 1, 'dirent64.d_name[165]' => 1, 'dirent64.d_name[166]' => 1, 'dirent64.d_name[167]' => 1, 'dirent64.d_name[168]' => 1, 'dirent64.d_name[169]' => 1, 'dirent64.d_name[16]' => 1, 'dirent64.d_name[170]' => 1, 'dirent64.d_name[171]' => 1, 'dirent64.d_name[172]' => 1, 'dirent64.d_name[173]' => 1, 'dirent64.d_name[174]' => 1, 'dirent64.d_name[175]' => 1, 'dirent64.d_name[176]' => 1, 'dirent64.d_name[177]' => 1, 'dirent64.d_name[178]' => 1, 'dirent64.d_name[179]' => 1, 'dirent64.d_name[17]' => 1, 'dirent64.d_name[180]' => 1, 'dirent64.d_name[181]' => 1, 'dirent64.d_name[182]' => 1, 'dirent64.d_name[183]' => 1, 'dirent64.d_name[184]' => 1, 'dirent64.d_name[185]' => 1, 'dirent64.d_name[186]' => 1, 'dirent64.d_name[187]' => 1, 'dirent64.d_name[188]' => 1, 'dirent64.d_name[189]' => 1, 'dirent64.d_name[18]' => 1, 'dirent64.d_name[190]' => 1, 'dirent64.d_name[191]' => 1, 'dirent64.d_name[192]' => 1, 'dirent64.d_name[193]' => 1, 'dirent64.d_name[194]' => 1, 'dirent64.d_name[195]' => 1, 'dirent64.d_name[196]' => 1, 'dirent64.d_name[197]' => 1, 'dirent64.d_name[198]' => 1, 'dirent64.d_name[199]' => 1, 'dirent64.d_name[19]' => 1, 'dirent64.d_name[1]' => 1, 'dirent64.d_name[200]' => 1, 'dirent64.d_name[201]' => 1, 'dirent64.d_name[202]' => 1, 'dirent64.d_name[203]' => 1, 'dirent64.d_name[204]' => 1, 'dirent64.d_name[205]' => 1, 'dirent64.d_name[206]' => 1, 'dirent64.d_name[207]' => 1, 'dirent64.d_name[208]' => 1, 'dirent64.d_name[209]' => 1, 'dirent64.d_name[20]' => 1, 'dirent64.d_name[210]' => 1, 'dirent64.d_name[211]' => 1, 'dirent64.d_name[212]' => 1, 'dirent64.d_name[213]' => 1, 'dirent64.d_name[214]' => 1, 'dirent64.d_name[215]' => 1, 'dirent64.d_name[216]' => 1, 'dirent64.d_name[217]' => 1, 'dirent64.d_name[218]' => 1, 'dirent64.d_name[219]' => 1, 'dirent64.d_name[21]' => 1, 'dirent64.d_name[220]' => 1, 'dirent64.d_name[221]' => 1, 'dirent64.d_name[222]' => 1, 'dirent64.d_name[223]' => 1, 'dirent64.d_name[224]' => 1, 'dirent64.d_name[225]' => 1, 'dirent64.d_name[226]' => 1, 'dirent64.d_name[227]' => 1, 'dirent64.d_name[228]' => 1, 'dirent64.d_name[229]' => 1, 'dirent64.d_name[22]' => 1, 'dirent64.d_name[230]' => 1, 'dirent64.d_name[231]' => 1, 'dirent64.d_name[232]' => 1, 'dirent64.d_name[233]' => 1, 'dirent64.d_name[234]' => 1, 'dirent64.d_name[235]' => 1, 'dirent64.d_name[236]' => 1, 'dirent64.d_name[237]' => 1, 'dirent64.d_name[238]' => 1, 'dirent64.d_name[239]' => 1, 'dirent64.d_name[23]' => 1, 'dirent64.d_name[240]' => 1, 'dirent64.d_name[241]' => 1, 'dirent64.d_name[242]' => 1, 'dirent64.d_name[243]' => 1, 'dirent64.d_name[244]' => 1, 'dirent64.d_name[245]' => 1, 'dirent64.d_name[246]' => 1, 'dirent64.d_name[247]' => 1, 'dirent64.d_name[248]' => 1, 'dirent64.d_name[249]' => 1, 'dirent64.d_name[24]' => 1, 'dirent64.d_name[250]' => 1, 'dirent64.d_name[251]' => 1, 'dirent64.d_name[252]' => 1, 'dirent64.d_name[253]' => 1, 'dirent64.d_name[254]' => 1, 'dirent64.d_name[255]' => 1, 'dirent64.d_name[25]' => 1, 'dirent64.d_name[26]' => 1, 'dirent64.d_name[27]' => 1, 'dirent64.d_name[28]' => 1, 'dirent64.d_name[29]' => 1, 'dirent64.d_name[2]' => 1, 'dirent64.d_name[30]' => 1, 'dirent64.d_name[31]' => 1, 'dirent64.d_name[32]' => 1, 'dirent64.d_name[33]' => 1, 'dirent64.d_name[34]' => 1, 'dirent64.d_name[35]' => 1, 'dirent64.d_name[36]' => 1, 'dirent64.d_name[37]' => 1, 'dirent64.d_name[38]' => 1, 'dirent64.d_name[39]' => 1, 'dirent64.d_name[3]' => 1, 'dirent64.d_name[40]' => 1, 'dirent64.d_name[41]' => 1, 'dirent64.d_name[42]' => 1, 'dirent64.d_name[43]' => 1, 'dirent64.d_name[44]' => 1, 'dirent64.d_name[45]' => 1, 'dirent64.d_name[46]' => 1, 'dirent64.d_name[47]' => 1, 'dirent64.d_name[48]' => 1, 'dirent64.d_name[49]' => 1, 'dirent64.d_name[4]' => 1, 'dirent64.d_name[50]' => 1, 'dirent64.d_name[51]' => 1, 'dirent64.d_name[52]' => 1, 'dirent64.d_name[53]' => 1, 'dirent64.d_name[54]' => 1, 'dirent64.d_name[55]' => 1, 'dirent64.d_name[56]' => 1, 'dirent64.d_name[57]' => 1, 'dirent64.d_name[58]' => 1, 'dirent64.d_name[59]' => 1, 'dirent64.d_name[5]' => 1, 'dirent64.d_name[60]' => 1, 'dirent64.d_name[61]' => 1, 'dirent64.d_name[62]' => 1, 'dirent64.d_name[63]' => 1, 'dirent64.d_name[64]' => 1, 'dirent64.d_name[65]' => 1, 'dirent64.d_name[66]' => 1, 'dirent64.d_name[67]' => 1, 'dirent64.d_name[68]' => 1, 'dirent64.d_name[69]' => 1, 'dirent64.d_name[6]' => 1, 'dirent64.d_name[70]' => 1, 'dirent64.d_name[71]' => 1, 'dirent64.d_name[72]' => 1, 'dirent64.d_name[73]' => 1, 'dirent64.d_name[74]' => 1, 'dirent64.d_name[75]' => 1, 'dirent64.d_name[76]' => 1, 'dirent64.d_name[77]' => 1, 'dirent64.d_name[78]' => 1, 'dirent64.d_name[79]' => 1, 'dirent64.d_name[7]' => 1, 'dirent64.d_name[80]' => 1, 'dirent64.d_name[81]' => 1, 'dirent64.d_name[82]' => 1, 'dirent64.d_name[83]' => 1, 'dirent64.d_name[84]' => 1, 'dirent64.d_name[85]' => 1, 'dirent64.d_name[86]' => 1, 'dirent64.d_name[87]' => 1, 'dirent64.d_name[88]' => 1, 'dirent64.d_name[89]' => 1, 'dirent64.d_name[8]' => 1, 'dirent64.d_name[90]' => 1, 'dirent64.d_name[91]' => 1, 'dirent64.d_name[92]' => 1, 'dirent64.d_name[93]' => 1, 'dirent64.d_name[94]' => 1, 'dirent64.d_name[95]' => 1, 'dirent64.d_name[96]' => 1, 'dirent64.d_name[97]' => 1, 'dirent64.d_name[98]' => 1, 'dirent64.d_name[99]' => 1, 'dirent64.d_name[9]' => 1, 'dirent64.d_off' => 8, 'dirent64.d_reclen' => 2, 'dirent64.d_type' => 1, 'div_t' => 8, 'div_t.quot' => 4, 'div_t.rem' => 4, 'double_t' => 12, 'drand48_data' => 24, 'drand48_data.__a' => 8, 'drand48_data.__c' => 2, 'drand48_data.__init' => 2, 'drand48_data.__old_x' => 6, 'drand48_data.__old_x[0]' => 2, 'drand48_data.__old_x[1]' => 2, 'drand48_data.__old_x[2]' => 2, 'drand48_data.__x' => 6, 'drand48_data.__x[0]' => 2, 'drand48_data.__x[1]' => 2, 'drand48_data.__x[2]' => 2, 'error_t' => 4, 'exception' => 32, 'exception.arg1' => 8, 'exception.arg2' => 8, 'exception.name' => 4, 'exception.retval' => 8, 'exception.type' => 4, 'exitlistentry' => 8, 'exitlistentry.fn' => 4, 'exitlistentry.ptr' => 4, 'expectation' => 1, 'fd_mask' => 4, 'fd_set' => 128, 'fd_set.fds_bits' => 128, 'fd_set.fds_bits[0]' => 4, 'fd_set.fds_bits[10]' => 4, 'fd_set.fds_bits[11]' => 4, 'fd_set.fds_bits[12]' => 4, 'fd_set.fds_bits[13]' => 4, 'fd_set.fds_bits[14]' => 4, 'fd_set.fds_bits[15]' => 4, 'fd_set.fds_bits[16]' => 4, 'fd_set.fds_bits[17]' => 4, 'fd_set.fds_bits[18]' => 4, 'fd_set.fds_bits[19]' => 4, 'fd_set.fds_bits[1]' => 4, 'fd_set.fds_bits[20]' => 4, 'fd_set.fds_bits[21]' => 4, 'fd_set.fds_bits[22]' => 4, 'fd_set.fds_bits[23]' => 4, 'fd_set.fds_bits[24]' => 4, 'fd_set.fds_bits[25]' => 4, 'fd_set.fds_bits[26]' => 4, 'fd_set.fds_bits[27]' => 4, 'fd_set.fds_bits[28]' => 4, 'fd_set.fds_bits[29]' => 4, 'fd_set.fds_bits[2]' => 4, 'fd_set.fds_bits[30]' => 4, 'fd_set.fds_bits[31]' => 4, 'fd_set.fds_bits[3]' => 4, 'fd_set.fds_bits[4]' => 4, 'fd_set.fds_bits[5]' => 4, 'fd_set.fds_bits[6]' => 4, 'fd_set.fds_bits[7]' => 4, 'fd_set.fds_bits[8]' => 4, 'fd_set.fds_bits[9]' => 4, 'filter_t' => 4, 'float_t' => 12, 'flock' => 16, 'flock.l_len' => 4, 'flock.l_pid' => 4, 'flock.l_start' => 4, 'flock.l_type' => 2, 'flock.l_whence' => 2, 'flock64' => 24, 'flock64.l_len' => 8, 'flock64.l_pid' => 4, 'flock64.l_start' => 8, 'flock64.l_type' => 2, 'flock64.l_whence' => 2, 'fpos64_t' => 16, 'fpos64_t.__pos' => 8, 'fpos64_t.__state' => 8, 'fpos64_t.__state.__count' => 4, 'fpos64_t.__state.__value' => 4, 'fpos64_t.__state.__value.__wch' => 4, 'fpos64_t.__state.__value.__wchb' => 4, 'fpos64_t.__state.__value.__wchb[0]' => 1, 'fpos64_t.__state.__value.__wchb[1]' => 1, 'fpos64_t.__state.__value.__wchb[2]' => 1, 'fpos64_t.__state.__value.__wchb[3]' => 1, 'fpos_t' => 12, 'fpos_t.__pos' => 4, 'fpos_t.__state' => 8, 'fpos_t.__state.__count' => 4, 'fpos_t.__state.__value' => 4, 'fpos_t.__state.__value.__wch' => 4, 'fpos_t.__state.__value.__wchb' => 4, 'fpos_t.__state.__value.__wchb[0]' => 1, 'fpos_t.__state.__value.__wchb[1]' => 1, 'fpos_t.__state.__value.__wchb[2]' => 1, 'fpos_t.__state.__value.__wchb[3]' => 1, 'fpregset_t' => 4, 'fsblkcnt64_t' => 8, 'fsblkcnt_t' => 4, 'fsfilcnt64_t' => 8, 'fsfilcnt_t' => 4, 'fsid_t' => 8, 'fsid_t.__val' => 8, 'fsid_t.__val[0]' => 4, 'fsid_t.__val[1]' => 4, 'gaicb' => 40, 'gaicb.__return' => 4, 'gaicb.__unused' => 20, 'gaicb.__unused[0]' => 4, 'gaicb.__unused[1]' => 4, 'gaicb.__unused[2]' => 4, 'gaicb.__unused[3]' => 4, 'gaicb.__unused[4]' => 4, 'gaicb.ar_name' => 4, 'gaicb.ar_request' => 4, 'gaicb.ar_result' => 4, 'gaicb.ar_service' => 4, 'gid_t' => 4, 'gp' => 44, 'gp.gp_av' => 4, 'gp.gp_cv' => 4, 'gp.gp_cvgen' => 4, 'gp.gp_egv' => 4, 'gp.gp_file_hek' => 4, 'gp.gp_form' => 4, 'gp.gp_hv' => 4, 'gp.gp_io' => 4, 'gp.gp_line' => 4, 'gp.gp_refcnt' => 4, 'gp.gp_sv' => 4, 'greg_t' => 4, 'gregset_t' => 76, 'gregset_t[0]' => 4, 'gregset_t[10]' => 4, 'gregset_t[11]' => 4, 'gregset_t[12]' => 4, 'gregset_t[13]' => 4, 'gregset_t[14]' => 4, 'gregset_t[15]' => 4, 'gregset_t[16]' => 4, 'gregset_t[17]' => 4, 'gregset_t[18]' => 4, 'gregset_t[1]' => 4, 'gregset_t[2]' => 4, 'gregset_t[3]' => 4, 'gregset_t[4]' => 4, 'gregset_t[5]' => 4, 'gregset_t[6]' => 4, 'gregset_t[7]' => 4, 'gregset_t[8]' => 4, 'gregset_t[9]' => 4, 'group_filter' => 264, 'group_filter.gf_fmode' => 4, 'group_filter.gf_group' => 126, 'group_filter.gf_group.__ss_align' => 4, 'group_filter.gf_group.__ss_padding' => 120, 'group_filter.gf_group.__ss_padding[0]' => 1, 'group_filter.gf_group.__ss_padding[100]' => 1, 'group_filter.gf_group.__ss_padding[101]' => 1, 'group_filter.gf_group.__ss_padding[102]' => 1, 'group_filter.gf_group.__ss_padding[103]' => 1, 'group_filter.gf_group.__ss_padding[104]' => 1, 'group_filter.gf_group.__ss_padding[105]' => 1, 'group_filter.gf_group.__ss_padding[106]' => 1, 'group_filter.gf_group.__ss_padding[107]' => 1, 'group_filter.gf_group.__ss_padding[108]' => 1, 'group_filter.gf_group.__ss_padding[109]' => 1, 'group_filter.gf_group.__ss_padding[10]' => 1, 'group_filter.gf_group.__ss_padding[110]' => 1, 'group_filter.gf_group.__ss_padding[111]' => 1, 'group_filter.gf_group.__ss_padding[112]' => 1, 'group_filter.gf_group.__ss_padding[113]' => 1, 'group_filter.gf_group.__ss_padding[114]' => 1, 'group_filter.gf_group.__ss_padding[115]' => 1, 'group_filter.gf_group.__ss_padding[116]' => 1, 'group_filter.gf_group.__ss_padding[117]' => 1, 'group_filter.gf_group.__ss_padding[118]' => 1, 'group_filter.gf_group.__ss_padding[119]' => 1, 'group_filter.gf_group.__ss_padding[11]' => 1, 'group_filter.gf_group.__ss_padding[12]' => 1, 'group_filter.gf_group.__ss_padding[13]' => 1, 'group_filter.gf_group.__ss_padding[14]' => 1, 'group_filter.gf_group.__ss_padding[15]' => 1, 'group_filter.gf_group.__ss_padding[16]' => 1, 'group_filter.gf_group.__ss_padding[17]' => 1, 'group_filter.gf_group.__ss_padding[18]' => 1, 'group_filter.gf_group.__ss_padding[19]' => 1, 'group_filter.gf_group.__ss_padding[1]' => 1, 'group_filter.gf_group.__ss_padding[20]' => 1, 'group_filter.gf_group.__ss_padding[21]' => 1, 'group_filter.gf_group.__ss_padding[22]' => 1, 'group_filter.gf_group.__ss_padding[23]' => 1, 'group_filter.gf_group.__ss_padding[24]' => 1, 'group_filter.gf_group.__ss_padding[25]' => 1, 'group_filter.gf_group.__ss_padding[26]' => 1, 'group_filter.gf_group.__ss_padding[27]' => 1, 'group_filter.gf_group.__ss_padding[28]' => 1, 'group_filter.gf_group.__ss_padding[29]' => 1, 'group_filter.gf_group.__ss_padding[2]' => 1, 'group_filter.gf_group.__ss_padding[30]' => 1, 'group_filter.gf_group.__ss_padding[31]' => 1, 'group_filter.gf_group.__ss_padding[32]' => 1, 'group_filter.gf_group.__ss_padding[33]' => 1, 'group_filter.gf_group.__ss_padding[34]' => 1, 'group_filter.gf_group.__ss_padding[35]' => 1, 'group_filter.gf_group.__ss_padding[36]' => 1, 'group_filter.gf_group.__ss_padding[37]' => 1, 'group_filter.gf_group.__ss_padding[38]' => 1, 'group_filter.gf_group.__ss_padding[39]' => 1, 'group_filter.gf_group.__ss_padding[3]' => 1, 'group_filter.gf_group.__ss_padding[40]' => 1, 'group_filter.gf_group.__ss_padding[41]' => 1, 'group_filter.gf_group.__ss_padding[42]' => 1, 'group_filter.gf_group.__ss_padding[43]' => 1, 'group_filter.gf_group.__ss_padding[44]' => 1, 'group_filter.gf_group.__ss_padding[45]' => 1, 'group_filter.gf_group.__ss_padding[46]' => 1, 'group_filter.gf_group.__ss_padding[47]' => 1, 'group_filter.gf_group.__ss_padding[48]' => 1, 'group_filter.gf_group.__ss_padding[49]' => 1, 'group_filter.gf_group.__ss_padding[4]' => 1, 'group_filter.gf_group.__ss_padding[50]' => 1, 'group_filter.gf_group.__ss_padding[51]' => 1, 'group_filter.gf_group.__ss_padding[52]' => 1, 'group_filter.gf_group.__ss_padding[53]' => 1, 'group_filter.gf_group.__ss_padding[54]' => 1, 'group_filter.gf_group.__ss_padding[55]' => 1, 'group_filter.gf_group.__ss_padding[56]' => 1, 'group_filter.gf_group.__ss_padding[57]' => 1, 'group_filter.gf_group.__ss_padding[58]' => 1, 'group_filter.gf_group.__ss_padding[59]' => 1, 'group_filter.gf_group.__ss_padding[5]' => 1, 'group_filter.gf_group.__ss_padding[60]' => 1, 'group_filter.gf_group.__ss_padding[61]' => 1, 'group_filter.gf_group.__ss_padding[62]' => 1, 'group_filter.gf_group.__ss_padding[63]' => 1, 'group_filter.gf_group.__ss_padding[64]' => 1, 'group_filter.gf_group.__ss_padding[65]' => 1, 'group_filter.gf_group.__ss_padding[66]' => 1, 'group_filter.gf_group.__ss_padding[67]' => 1, 'group_filter.gf_group.__ss_padding[68]' => 1, 'group_filter.gf_group.__ss_padding[69]' => 1, 'group_filter.gf_group.__ss_padding[6]' => 1, 'group_filter.gf_group.__ss_padding[70]' => 1, 'group_filter.gf_group.__ss_padding[71]' => 1, 'group_filter.gf_group.__ss_padding[72]' => 1, 'group_filter.gf_group.__ss_padding[73]' => 1, 'group_filter.gf_group.__ss_padding[74]' => 1, 'group_filter.gf_group.__ss_padding[75]' => 1, 'group_filter.gf_group.__ss_padding[76]' => 1, 'group_filter.gf_group.__ss_padding[77]' => 1, 'group_filter.gf_group.__ss_padding[78]' => 1, 'group_filter.gf_group.__ss_padding[79]' => 1, 'group_filter.gf_group.__ss_padding[7]' => 1, 'group_filter.gf_group.__ss_padding[80]' => 1, 'group_filter.gf_group.__ss_padding[81]' => 1, 'group_filter.gf_group.__ss_padding[82]' => 1, 'group_filter.gf_group.__ss_padding[83]' => 1, 'group_filter.gf_group.__ss_padding[84]' => 1, 'group_filter.gf_group.__ss_padding[85]' => 1, 'group_filter.gf_group.__ss_padding[86]' => 1, 'group_filter.gf_group.__ss_padding[87]' => 1, 'group_filter.gf_group.__ss_padding[88]' => 1, 'group_filter.gf_group.__ss_padding[89]' => 1, 'group_filter.gf_group.__ss_padding[8]' => 1, 'group_filter.gf_group.__ss_padding[90]' => 1, 'group_filter.gf_group.__ss_padding[91]' => 1, 'group_filter.gf_group.__ss_padding[92]' => 1, 'group_filter.gf_group.__ss_padding[93]' => 1, 'group_filter.gf_group.__ss_padding[94]' => 1, 'group_filter.gf_group.__ss_padding[95]' => 1, 'group_filter.gf_group.__ss_padding[96]' => 1, 'group_filter.gf_group.__ss_padding[97]' => 1, 'group_filter.gf_group.__ss_padding[98]' => 1, 'group_filter.gf_group.__ss_padding[99]' => 1, 'group_filter.gf_group.__ss_padding[9]' => 1, 'group_filter.gf_group.ss_family' => 2, 'group_filter.gf_interface' => 4, 'group_filter.gf_numsrc' => 4, 'group_filter.gf_slist' => 126, 'group_filter.gf_slist[0]' => 126, 'group_filter.gf_slist[0].__ss_align' => 4, 'group_filter.gf_slist[0].__ss_padding' => 120, 'group_filter.gf_slist[0].__ss_padding[0]' => 1, 'group_filter.gf_slist[0].__ss_padding[100]' => 1, 'group_filter.gf_slist[0].__ss_padding[101]' => 1, 'group_filter.gf_slist[0].__ss_padding[102]' => 1, 'group_filter.gf_slist[0].__ss_padding[103]' => 1, 'group_filter.gf_slist[0].__ss_padding[104]' => 1, 'group_filter.gf_slist[0].__ss_padding[105]' => 1, 'group_filter.gf_slist[0].__ss_padding[106]' => 1, 'group_filter.gf_slist[0].__ss_padding[107]' => 1, 'group_filter.gf_slist[0].__ss_padding[108]' => 1, 'group_filter.gf_slist[0].__ss_padding[109]' => 1, 'group_filter.gf_slist[0].__ss_padding[10]' => 1, 'group_filter.gf_slist[0].__ss_padding[110]' => 1, 'group_filter.gf_slist[0].__ss_padding[111]' => 1, 'group_filter.gf_slist[0].__ss_padding[112]' => 1, 'group_filter.gf_slist[0].__ss_padding[113]' => 1, 'group_filter.gf_slist[0].__ss_padding[114]' => 1, 'group_filter.gf_slist[0].__ss_padding[115]' => 1, 'group_filter.gf_slist[0].__ss_padding[116]' => 1, 'group_filter.gf_slist[0].__ss_padding[117]' => 1, 'group_filter.gf_slist[0].__ss_padding[118]' => 1, 'group_filter.gf_slist[0].__ss_padding[119]' => 1, 'group_filter.gf_slist[0].__ss_padding[11]' => 1, 'group_filter.gf_slist[0].__ss_padding[12]' => 1, 'group_filter.gf_slist[0].__ss_padding[13]' => 1, 'group_filter.gf_slist[0].__ss_padding[14]' => 1, 'group_filter.gf_slist[0].__ss_padding[15]' => 1, 'group_filter.gf_slist[0].__ss_padding[16]' => 1, 'group_filter.gf_slist[0].__ss_padding[17]' => 1, 'group_filter.gf_slist[0].__ss_padding[18]' => 1, 'group_filter.gf_slist[0].__ss_padding[19]' => 1, 'group_filter.gf_slist[0].__ss_padding[1]' => 1, 'group_filter.gf_slist[0].__ss_padding[20]' => 1, 'group_filter.gf_slist[0].__ss_padding[21]' => 1, 'group_filter.gf_slist[0].__ss_padding[22]' => 1, 'group_filter.gf_slist[0].__ss_padding[23]' => 1, 'group_filter.gf_slist[0].__ss_padding[24]' => 1, 'group_filter.gf_slist[0].__ss_padding[25]' => 1, 'group_filter.gf_slist[0].__ss_padding[26]' => 1, 'group_filter.gf_slist[0].__ss_padding[27]' => 1, 'group_filter.gf_slist[0].__ss_padding[28]' => 1, 'group_filter.gf_slist[0].__ss_padding[29]' => 1, 'group_filter.gf_slist[0].__ss_padding[2]' => 1, 'group_filter.gf_slist[0].__ss_padding[30]' => 1, 'group_filter.gf_slist[0].__ss_padding[31]' => 1, 'group_filter.gf_slist[0].__ss_padding[32]' => 1, 'group_filter.gf_slist[0].__ss_padding[33]' => 1, 'group_filter.gf_slist[0].__ss_padding[34]' => 1, 'group_filter.gf_slist[0].__ss_padding[35]' => 1, 'group_filter.gf_slist[0].__ss_padding[36]' => 1, 'group_filter.gf_slist[0].__ss_padding[37]' => 1, 'group_filter.gf_slist[0].__ss_padding[38]' => 1, 'group_filter.gf_slist[0].__ss_padding[39]' => 1, 'group_filter.gf_slist[0].__ss_padding[3]' => 1, 'group_filter.gf_slist[0].__ss_padding[40]' => 1, 'group_filter.gf_slist[0].__ss_padding[41]' => 1, 'group_filter.gf_slist[0].__ss_padding[42]' => 1, 'group_filter.gf_slist[0].__ss_padding[43]' => 1, 'group_filter.gf_slist[0].__ss_padding[44]' => 1, 'group_filter.gf_slist[0].__ss_padding[45]' => 1, 'group_filter.gf_slist[0].__ss_padding[46]' => 1, 'group_filter.gf_slist[0].__ss_padding[47]' => 1, 'group_filter.gf_slist[0].__ss_padding[48]' => 1, 'group_filter.gf_slist[0].__ss_padding[49]' => 1, 'group_filter.gf_slist[0].__ss_padding[4]' => 1, 'group_filter.gf_slist[0].__ss_padding[50]' => 1, 'group_filter.gf_slist[0].__ss_padding[51]' => 1, 'group_filter.gf_slist[0].__ss_padding[52]' => 1, 'group_filter.gf_slist[0].__ss_padding[53]' => 1, 'group_filter.gf_slist[0].__ss_padding[54]' => 1, 'group_filter.gf_slist[0].__ss_padding[55]' => 1, 'group_filter.gf_slist[0].__ss_padding[56]' => 1, 'group_filter.gf_slist[0].__ss_padding[57]' => 1, 'group_filter.gf_slist[0].__ss_padding[58]' => 1, 'group_filter.gf_slist[0].__ss_padding[59]' => 1, 'group_filter.gf_slist[0].__ss_padding[5]' => 1, 'group_filter.gf_slist[0].__ss_padding[60]' => 1, 'group_filter.gf_slist[0].__ss_padding[61]' => 1, 'group_filter.gf_slist[0].__ss_padding[62]' => 1, 'group_filter.gf_slist[0].__ss_padding[63]' => 1, 'group_filter.gf_slist[0].__ss_padding[64]' => 1, 'group_filter.gf_slist[0].__ss_padding[65]' => 1, 'group_filter.gf_slist[0].__ss_padding[66]' => 1, 'group_filter.gf_slist[0].__ss_padding[67]' => 1, 'group_filter.gf_slist[0].__ss_padding[68]' => 1, 'group_filter.gf_slist[0].__ss_padding[69]' => 1, 'group_filter.gf_slist[0].__ss_padding[6]' => 1, 'group_filter.gf_slist[0].__ss_padding[70]' => 1, 'group_filter.gf_slist[0].__ss_padding[71]' => 1, 'group_filter.gf_slist[0].__ss_padding[72]' => 1, 'group_filter.gf_slist[0].__ss_padding[73]' => 1, 'group_filter.gf_slist[0].__ss_padding[74]' => 1, 'group_filter.gf_slist[0].__ss_padding[75]' => 1, 'group_filter.gf_slist[0].__ss_padding[76]' => 1, 'group_filter.gf_slist[0].__ss_padding[77]' => 1, 'group_filter.gf_slist[0].__ss_padding[78]' => 1, 'group_filter.gf_slist[0].__ss_padding[79]' => 1, 'group_filter.gf_slist[0].__ss_padding[7]' => 1, 'group_filter.gf_slist[0].__ss_padding[80]' => 1, 'group_filter.gf_slist[0].__ss_padding[81]' => 1, 'group_filter.gf_slist[0].__ss_padding[82]' => 1, 'group_filter.gf_slist[0].__ss_padding[83]' => 1, 'group_filter.gf_slist[0].__ss_padding[84]' => 1, 'group_filter.gf_slist[0].__ss_padding[85]' => 1, 'group_filter.gf_slist[0].__ss_padding[86]' => 1, 'group_filter.gf_slist[0].__ss_padding[87]' => 1, 'group_filter.gf_slist[0].__ss_padding[88]' => 1, 'group_filter.gf_slist[0].__ss_padding[89]' => 1, 'group_filter.gf_slist[0].__ss_padding[8]' => 1, 'group_filter.gf_slist[0].__ss_padding[90]' => 1, 'group_filter.gf_slist[0].__ss_padding[91]' => 1, 'group_filter.gf_slist[0].__ss_padding[92]' => 1, 'group_filter.gf_slist[0].__ss_padding[93]' => 1, 'group_filter.gf_slist[0].__ss_padding[94]' => 1, 'group_filter.gf_slist[0].__ss_padding[95]' => 1, 'group_filter.gf_slist[0].__ss_padding[96]' => 1, 'group_filter.gf_slist[0].__ss_padding[97]' => 1, 'group_filter.gf_slist[0].__ss_padding[98]' => 1, 'group_filter.gf_slist[0].__ss_padding[99]' => 1, 'group_filter.gf_slist[0].__ss_padding[9]' => 1, 'group_filter.gf_slist[0].ss_family' => 2, 'group_req' => 130, 'group_req.gr_group' => 126, 'group_req.gr_group.__ss_align' => 4, 'group_req.gr_group.__ss_padding' => 120, 'group_req.gr_group.__ss_padding[0]' => 1, 'group_req.gr_group.__ss_padding[100]' => 1, 'group_req.gr_group.__ss_padding[101]' => 1, 'group_req.gr_group.__ss_padding[102]' => 1, 'group_req.gr_group.__ss_padding[103]' => 1, 'group_req.gr_group.__ss_padding[104]' => 1, 'group_req.gr_group.__ss_padding[105]' => 1, 'group_req.gr_group.__ss_padding[106]' => 1, 'group_req.gr_group.__ss_padding[107]' => 1, 'group_req.gr_group.__ss_padding[108]' => 1, 'group_req.gr_group.__ss_padding[109]' => 1, 'group_req.gr_group.__ss_padding[10]' => 1, 'group_req.gr_group.__ss_padding[110]' => 1, 'group_req.gr_group.__ss_padding[111]' => 1, 'group_req.gr_group.__ss_padding[112]' => 1, 'group_req.gr_group.__ss_padding[113]' => 1, 'group_req.gr_group.__ss_padding[114]' => 1, 'group_req.gr_group.__ss_padding[115]' => 1, 'group_req.gr_group.__ss_padding[116]' => 1, 'group_req.gr_group.__ss_padding[117]' => 1, 'group_req.gr_group.__ss_padding[118]' => 1, 'group_req.gr_group.__ss_padding[119]' => 1, 'group_req.gr_group.__ss_padding[11]' => 1, 'group_req.gr_group.__ss_padding[12]' => 1, 'group_req.gr_group.__ss_padding[13]' => 1, 'group_req.gr_group.__ss_padding[14]' => 1, 'group_req.gr_group.__ss_padding[15]' => 1, 'group_req.gr_group.__ss_padding[16]' => 1, 'group_req.gr_group.__ss_padding[17]' => 1, 'group_req.gr_group.__ss_padding[18]' => 1, 'group_req.gr_group.__ss_padding[19]' => 1, 'group_req.gr_group.__ss_padding[1]' => 1, 'group_req.gr_group.__ss_padding[20]' => 1, 'group_req.gr_group.__ss_padding[21]' => 1, 'group_req.gr_group.__ss_padding[22]' => 1, 'group_req.gr_group.__ss_padding[23]' => 1, 'group_req.gr_group.__ss_padding[24]' => 1, 'group_req.gr_group.__ss_padding[25]' => 1, 'group_req.gr_group.__ss_padding[26]' => 1, 'group_req.gr_group.__ss_padding[27]' => 1, 'group_req.gr_group.__ss_padding[28]' => 1, 'group_req.gr_group.__ss_padding[29]' => 1, 'group_req.gr_group.__ss_padding[2]' => 1, 'group_req.gr_group.__ss_padding[30]' => 1, 'group_req.gr_group.__ss_padding[31]' => 1, 'group_req.gr_group.__ss_padding[32]' => 1, 'group_req.gr_group.__ss_padding[33]' => 1, 'group_req.gr_group.__ss_padding[34]' => 1, 'group_req.gr_group.__ss_padding[35]' => 1, 'group_req.gr_group.__ss_padding[36]' => 1, 'group_req.gr_group.__ss_padding[37]' => 1, 'group_req.gr_group.__ss_padding[38]' => 1, 'group_req.gr_group.__ss_padding[39]' => 1, 'group_req.gr_group.__ss_padding[3]' => 1, 'group_req.gr_group.__ss_padding[40]' => 1, 'group_req.gr_group.__ss_padding[41]' => 1, 'group_req.gr_group.__ss_padding[42]' => 1, 'group_req.gr_group.__ss_padding[43]' => 1, 'group_req.gr_group.__ss_padding[44]' => 1, 'group_req.gr_group.__ss_padding[45]' => 1, 'group_req.gr_group.__ss_padding[46]' => 1, 'group_req.gr_group.__ss_padding[47]' => 1, 'group_req.gr_group.__ss_padding[48]' => 1, 'group_req.gr_group.__ss_padding[49]' => 1, 'group_req.gr_group.__ss_padding[4]' => 1, 'group_req.gr_group.__ss_padding[50]' => 1, 'group_req.gr_group.__ss_padding[51]' => 1, 'group_req.gr_group.__ss_padding[52]' => 1, 'group_req.gr_group.__ss_padding[53]' => 1, 'group_req.gr_group.__ss_padding[54]' => 1, 'group_req.gr_group.__ss_padding[55]' => 1, 'group_req.gr_group.__ss_padding[56]' => 1, 'group_req.gr_group.__ss_padding[57]' => 1, 'group_req.gr_group.__ss_padding[58]' => 1, 'group_req.gr_group.__ss_padding[59]' => 1, 'group_req.gr_group.__ss_padding[5]' => 1, 'group_req.gr_group.__ss_padding[60]' => 1, 'group_req.gr_group.__ss_padding[61]' => 1, 'group_req.gr_group.__ss_padding[62]' => 1, 'group_req.gr_group.__ss_padding[63]' => 1, 'group_req.gr_group.__ss_padding[64]' => 1, 'group_req.gr_group.__ss_padding[65]' => 1, 'group_req.gr_group.__ss_padding[66]' => 1, 'group_req.gr_group.__ss_padding[67]' => 1, 'group_req.gr_group.__ss_padding[68]' => 1, 'group_req.gr_group.__ss_padding[69]' => 1, 'group_req.gr_group.__ss_padding[6]' => 1, 'group_req.gr_group.__ss_padding[70]' => 1, 'group_req.gr_group.__ss_padding[71]' => 1, 'group_req.gr_group.__ss_padding[72]' => 1, 'group_req.gr_group.__ss_padding[73]' => 1, 'group_req.gr_group.__ss_padding[74]' => 1, 'group_req.gr_group.__ss_padding[75]' => 1, 'group_req.gr_group.__ss_padding[76]' => 1, 'group_req.gr_group.__ss_padding[77]' => 1, 'group_req.gr_group.__ss_padding[78]' => 1, 'group_req.gr_group.__ss_padding[79]' => 1, 'group_req.gr_group.__ss_padding[7]' => 1, 'group_req.gr_group.__ss_padding[80]' => 1, 'group_req.gr_group.__ss_padding[81]' => 1, 'group_req.gr_group.__ss_padding[82]' => 1, 'group_req.gr_group.__ss_padding[83]' => 1, 'group_req.gr_group.__ss_padding[84]' => 1, 'group_req.gr_group.__ss_padding[85]' => 1, 'group_req.gr_group.__ss_padding[86]' => 1, 'group_req.gr_group.__ss_padding[87]' => 1, 'group_req.gr_group.__ss_padding[88]' => 1, 'group_req.gr_group.__ss_padding[89]' => 1, 'group_req.gr_group.__ss_padding[8]' => 1, 'group_req.gr_group.__ss_padding[90]' => 1, 'group_req.gr_group.__ss_padding[91]' => 1, 'group_req.gr_group.__ss_padding[92]' => 1, 'group_req.gr_group.__ss_padding[93]' => 1, 'group_req.gr_group.__ss_padding[94]' => 1, 'group_req.gr_group.__ss_padding[95]' => 1, 'group_req.gr_group.__ss_padding[96]' => 1, 'group_req.gr_group.__ss_padding[97]' => 1, 'group_req.gr_group.__ss_padding[98]' => 1, 'group_req.gr_group.__ss_padding[99]' => 1, 'group_req.gr_group.__ss_padding[9]' => 1, 'group_req.gr_group.ss_family' => 2, 'group_req.gr_interface' => 4, 'group_source_req' => 256, 'group_source_req.gsr_group' => 126, 'group_source_req.gsr_group.__ss_align' => 4, 'group_source_req.gsr_group.__ss_padding' => 120, 'group_source_req.gsr_group.__ss_padding[0]' => 1, 'group_source_req.gsr_group.__ss_padding[100]' => 1, 'group_source_req.gsr_group.__ss_padding[101]' => 1, 'group_source_req.gsr_group.__ss_padding[102]' => 1, 'group_source_req.gsr_group.__ss_padding[103]' => 1, 'group_source_req.gsr_group.__ss_padding[104]' => 1, 'group_source_req.gsr_group.__ss_padding[105]' => 1, 'group_source_req.gsr_group.__ss_padding[106]' => 1, 'group_source_req.gsr_group.__ss_padding[107]' => 1, 'group_source_req.gsr_group.__ss_padding[108]' => 1, 'group_source_req.gsr_group.__ss_padding[109]' => 1, 'group_source_req.gsr_group.__ss_padding[10]' => 1, 'group_source_req.gsr_group.__ss_padding[110]' => 1, 'group_source_req.gsr_group.__ss_padding[111]' => 1, 'group_source_req.gsr_group.__ss_padding[112]' => 1, 'group_source_req.gsr_group.__ss_padding[113]' => 1, 'group_source_req.gsr_group.__ss_padding[114]' => 1, 'group_source_req.gsr_group.__ss_padding[115]' => 1, 'group_source_req.gsr_group.__ss_padding[116]' => 1, 'group_source_req.gsr_group.__ss_padding[117]' => 1, 'group_source_req.gsr_group.__ss_padding[118]' => 1, 'group_source_req.gsr_group.__ss_padding[119]' => 1, 'group_source_req.gsr_group.__ss_padding[11]' => 1, 'group_source_req.gsr_group.__ss_padding[12]' => 1, 'group_source_req.gsr_group.__ss_padding[13]' => 1, 'group_source_req.gsr_group.__ss_padding[14]' => 1, 'group_source_req.gsr_group.__ss_padding[15]' => 1, 'group_source_req.gsr_group.__ss_padding[16]' => 1, 'group_source_req.gsr_group.__ss_padding[17]' => 1, 'group_source_req.gsr_group.__ss_padding[18]' => 1, 'group_source_req.gsr_group.__ss_padding[19]' => 1, 'group_source_req.gsr_group.__ss_padding[1]' => 1, 'group_source_req.gsr_group.__ss_padding[20]' => 1, 'group_source_req.gsr_group.__ss_padding[21]' => 1, 'group_source_req.gsr_group.__ss_padding[22]' => 1, 'group_source_req.gsr_group.__ss_padding[23]' => 1, 'group_source_req.gsr_group.__ss_padding[24]' => 1, 'group_source_req.gsr_group.__ss_padding[25]' => 1, 'group_source_req.gsr_group.__ss_padding[26]' => 1, 'group_source_req.gsr_group.__ss_padding[27]' => 1, 'group_source_req.gsr_group.__ss_padding[28]' => 1, 'group_source_req.gsr_group.__ss_padding[29]' => 1, 'group_source_req.gsr_group.__ss_padding[2]' => 1, 'group_source_req.gsr_group.__ss_padding[30]' => 1, 'group_source_req.gsr_group.__ss_padding[31]' => 1, 'group_source_req.gsr_group.__ss_padding[32]' => 1, 'group_source_req.gsr_group.__ss_padding[33]' => 1, 'group_source_req.gsr_group.__ss_padding[34]' => 1, 'group_source_req.gsr_group.__ss_padding[35]' => 1, 'group_source_req.gsr_group.__ss_padding[36]' => 1, 'group_source_req.gsr_group.__ss_padding[37]' => 1, 'group_source_req.gsr_group.__ss_padding[38]' => 1, 'group_source_req.gsr_group.__ss_padding[39]' => 1, 'group_source_req.gsr_group.__ss_padding[3]' => 1, 'group_source_req.gsr_group.__ss_padding[40]' => 1, 'group_source_req.gsr_group.__ss_padding[41]' => 1, 'group_source_req.gsr_group.__ss_padding[42]' => 1, 'group_source_req.gsr_group.__ss_padding[43]' => 1, 'group_source_req.gsr_group.__ss_padding[44]' => 1, 'group_source_req.gsr_group.__ss_padding[45]' => 1, 'group_source_req.gsr_group.__ss_padding[46]' => 1, 'group_source_req.gsr_group.__ss_padding[47]' => 1, 'group_source_req.gsr_group.__ss_padding[48]' => 1, 'group_source_req.gsr_group.__ss_padding[49]' => 1, 'group_source_req.gsr_group.__ss_padding[4]' => 1, 'group_source_req.gsr_group.__ss_padding[50]' => 1, 'group_source_req.gsr_group.__ss_padding[51]' => 1, 'group_source_req.gsr_group.__ss_padding[52]' => 1, 'group_source_req.gsr_group.__ss_padding[53]' => 1, 'group_source_req.gsr_group.__ss_padding[54]' => 1, 'group_source_req.gsr_group.__ss_padding[55]' => 1, 'group_source_req.gsr_group.__ss_padding[56]' => 1, 'group_source_req.gsr_group.__ss_padding[57]' => 1, 'group_source_req.gsr_group.__ss_padding[58]' => 1, 'group_source_req.gsr_group.__ss_padding[59]' => 1, 'group_source_req.gsr_group.__ss_padding[5]' => 1, 'group_source_req.gsr_group.__ss_padding[60]' => 1, 'group_source_req.gsr_group.__ss_padding[61]' => 1, 'group_source_req.gsr_group.__ss_padding[62]' => 1, 'group_source_req.gsr_group.__ss_padding[63]' => 1, 'group_source_req.gsr_group.__ss_padding[64]' => 1, 'group_source_req.gsr_group.__ss_padding[65]' => 1, 'group_source_req.gsr_group.__ss_padding[66]' => 1, 'group_source_req.gsr_group.__ss_padding[67]' => 1, 'group_source_req.gsr_group.__ss_padding[68]' => 1, 'group_source_req.gsr_group.__ss_padding[69]' => 1, 'group_source_req.gsr_group.__ss_padding[6]' => 1, 'group_source_req.gsr_group.__ss_padding[70]' => 1, 'group_source_req.gsr_group.__ss_padding[71]' => 1, 'group_source_req.gsr_group.__ss_padding[72]' => 1, 'group_source_req.gsr_group.__ss_padding[73]' => 1, 'group_source_req.gsr_group.__ss_padding[74]' => 1, 'group_source_req.gsr_group.__ss_padding[75]' => 1, 'group_source_req.gsr_group.__ss_padding[76]' => 1, 'group_source_req.gsr_group.__ss_padding[77]' => 1, 'group_source_req.gsr_group.__ss_padding[78]' => 1, 'group_source_req.gsr_group.__ss_padding[79]' => 1, 'group_source_req.gsr_group.__ss_padding[7]' => 1, 'group_source_req.gsr_group.__ss_padding[80]' => 1, 'group_source_req.gsr_group.__ss_padding[81]' => 1, 'group_source_req.gsr_group.__ss_padding[82]' => 1, 'group_source_req.gsr_group.__ss_padding[83]' => 1, 'group_source_req.gsr_group.__ss_padding[84]' => 1, 'group_source_req.gsr_group.__ss_padding[85]' => 1, 'group_source_req.gsr_group.__ss_padding[86]' => 1, 'group_source_req.gsr_group.__ss_padding[87]' => 1, 'group_source_req.gsr_group.__ss_padding[88]' => 1, 'group_source_req.gsr_group.__ss_padding[89]' => 1, 'group_source_req.gsr_group.__ss_padding[8]' => 1, 'group_source_req.gsr_group.__ss_padding[90]' => 1, 'group_source_req.gsr_group.__ss_padding[91]' => 1, 'group_source_req.gsr_group.__ss_padding[92]' => 1, 'group_source_req.gsr_group.__ss_padding[93]' => 1, 'group_source_req.gsr_group.__ss_padding[94]' => 1, 'group_source_req.gsr_group.__ss_padding[95]' => 1, 'group_source_req.gsr_group.__ss_padding[96]' => 1, 'group_source_req.gsr_group.__ss_padding[97]' => 1, 'group_source_req.gsr_group.__ss_padding[98]' => 1, 'group_source_req.gsr_group.__ss_padding[99]' => 1, 'group_source_req.gsr_group.__ss_padding[9]' => 1, 'group_source_req.gsr_group.ss_family' => 2, 'group_source_req.gsr_interface' => 4, 'group_source_req.gsr_source' => 126, 'group_source_req.gsr_source.__ss_align' => 4, 'group_source_req.gsr_source.__ss_padding' => 120, 'group_source_req.gsr_source.__ss_padding[0]' => 1, 'group_source_req.gsr_source.__ss_padding[100]' => 1, 'group_source_req.gsr_source.__ss_padding[101]' => 1, 'group_source_req.gsr_source.__ss_padding[102]' => 1, 'group_source_req.gsr_source.__ss_padding[103]' => 1, 'group_source_req.gsr_source.__ss_padding[104]' => 1, 'group_source_req.gsr_source.__ss_padding[105]' => 1, 'group_source_req.gsr_source.__ss_padding[106]' => 1, 'group_source_req.gsr_source.__ss_padding[107]' => 1, 'group_source_req.gsr_source.__ss_padding[108]' => 1, 'group_source_req.gsr_source.__ss_padding[109]' => 1, 'group_source_req.gsr_source.__ss_padding[10]' => 1, 'group_source_req.gsr_source.__ss_padding[110]' => 1, 'group_source_req.gsr_source.__ss_padding[111]' => 1, 'group_source_req.gsr_source.__ss_padding[112]' => 1, 'group_source_req.gsr_source.__ss_padding[113]' => 1, 'group_source_req.gsr_source.__ss_padding[114]' => 1, 'group_source_req.gsr_source.__ss_padding[115]' => 1, 'group_source_req.gsr_source.__ss_padding[116]' => 1, 'group_source_req.gsr_source.__ss_padding[117]' => 1, 'group_source_req.gsr_source.__ss_padding[118]' => 1, 'group_source_req.gsr_source.__ss_padding[119]' => 1, 'group_source_req.gsr_source.__ss_padding[11]' => 1, 'group_source_req.gsr_source.__ss_padding[12]' => 1, 'group_source_req.gsr_source.__ss_padding[13]' => 1, 'group_source_req.gsr_source.__ss_padding[14]' => 1, 'group_source_req.gsr_source.__ss_padding[15]' => 1, 'group_source_req.gsr_source.__ss_padding[16]' => 1, 'group_source_req.gsr_source.__ss_padding[17]' => 1, 'group_source_req.gsr_source.__ss_padding[18]' => 1, 'group_source_req.gsr_source.__ss_padding[19]' => 1, 'group_source_req.gsr_source.__ss_padding[1]' => 1, 'group_source_req.gsr_source.__ss_padding[20]' => 1, 'group_source_req.gsr_source.__ss_padding[21]' => 1, 'group_source_req.gsr_source.__ss_padding[22]' => 1, 'group_source_req.gsr_source.__ss_padding[23]' => 1, 'group_source_req.gsr_source.__ss_padding[24]' => 1, 'group_source_req.gsr_source.__ss_padding[25]' => 1, 'group_source_req.gsr_source.__ss_padding[26]' => 1, 'group_source_req.gsr_source.__ss_padding[27]' => 1, 'group_source_req.gsr_source.__ss_padding[28]' => 1, 'group_source_req.gsr_source.__ss_padding[29]' => 1, 'group_source_req.gsr_source.__ss_padding[2]' => 1, 'group_source_req.gsr_source.__ss_padding[30]' => 1, 'group_source_req.gsr_source.__ss_padding[31]' => 1, 'group_source_req.gsr_source.__ss_padding[32]' => 1, 'group_source_req.gsr_source.__ss_padding[33]' => 1, 'group_source_req.gsr_source.__ss_padding[34]' => 1, 'group_source_req.gsr_source.__ss_padding[35]' => 1, 'group_source_req.gsr_source.__ss_padding[36]' => 1, 'group_source_req.gsr_source.__ss_padding[37]' => 1, 'group_source_req.gsr_source.__ss_padding[38]' => 1, 'group_source_req.gsr_source.__ss_padding[39]' => 1, 'group_source_req.gsr_source.__ss_padding[3]' => 1, 'group_source_req.gsr_source.__ss_padding[40]' => 1, 'group_source_req.gsr_source.__ss_padding[41]' => 1, 'group_source_req.gsr_source.__ss_padding[42]' => 1, 'group_source_req.gsr_source.__ss_padding[43]' => 1, 'group_source_req.gsr_source.__ss_padding[44]' => 1, 'group_source_req.gsr_source.__ss_padding[45]' => 1, 'group_source_req.gsr_source.__ss_padding[46]' => 1, 'group_source_req.gsr_source.__ss_padding[47]' => 1, 'group_source_req.gsr_source.__ss_padding[48]' => 1, 'group_source_req.gsr_source.__ss_padding[49]' => 1, 'group_source_req.gsr_source.__ss_padding[4]' => 1, 'group_source_req.gsr_source.__ss_padding[50]' => 1, 'group_source_req.gsr_source.__ss_padding[51]' => 1, 'group_source_req.gsr_source.__ss_padding[52]' => 1, 'group_source_req.gsr_source.__ss_padding[53]' => 1, 'group_source_req.gsr_source.__ss_padding[54]' => 1, 'group_source_req.gsr_source.__ss_padding[55]' => 1, 'group_source_req.gsr_source.__ss_padding[56]' => 1, 'group_source_req.gsr_source.__ss_padding[57]' => 1, 'group_source_req.gsr_source.__ss_padding[58]' => 1, 'group_source_req.gsr_source.__ss_padding[59]' => 1, 'group_source_req.gsr_source.__ss_padding[5]' => 1, 'group_source_req.gsr_source.__ss_padding[60]' => 1, 'group_source_req.gsr_source.__ss_padding[61]' => 1, 'group_source_req.gsr_source.__ss_padding[62]' => 1, 'group_source_req.gsr_source.__ss_padding[63]' => 1, 'group_source_req.gsr_source.__ss_padding[64]' => 1, 'group_source_req.gsr_source.__ss_padding[65]' => 1, 'group_source_req.gsr_source.__ss_padding[66]' => 1, 'group_source_req.gsr_source.__ss_padding[67]' => 1, 'group_source_req.gsr_source.__ss_padding[68]' => 1, 'group_source_req.gsr_source.__ss_padding[69]' => 1, 'group_source_req.gsr_source.__ss_padding[6]' => 1, 'group_source_req.gsr_source.__ss_padding[70]' => 1, 'group_source_req.gsr_source.__ss_padding[71]' => 1, 'group_source_req.gsr_source.__ss_padding[72]' => 1, 'group_source_req.gsr_source.__ss_padding[73]' => 1, 'group_source_req.gsr_source.__ss_padding[74]' => 1, 'group_source_req.gsr_source.__ss_padding[75]' => 1, 'group_source_req.gsr_source.__ss_padding[76]' => 1, 'group_source_req.gsr_source.__ss_padding[77]' => 1, 'group_source_req.gsr_source.__ss_padding[78]' => 1, 'group_source_req.gsr_source.__ss_padding[79]' => 1, 'group_source_req.gsr_source.__ss_padding[7]' => 1, 'group_source_req.gsr_source.__ss_padding[80]' => 1, 'group_source_req.gsr_source.__ss_padding[81]' => 1, 'group_source_req.gsr_source.__ss_padding[82]' => 1, 'group_source_req.gsr_source.__ss_padding[83]' => 1, 'group_source_req.gsr_source.__ss_padding[84]' => 1, 'group_source_req.gsr_source.__ss_padding[85]' => 1, 'group_source_req.gsr_source.__ss_padding[86]' => 1, 'group_source_req.gsr_source.__ss_padding[87]' => 1, 'group_source_req.gsr_source.__ss_padding[88]' => 1, 'group_source_req.gsr_source.__ss_padding[89]' => 1, 'group_source_req.gsr_source.__ss_padding[8]' => 1, 'group_source_req.gsr_source.__ss_padding[90]' => 1, 'group_source_req.gsr_source.__ss_padding[91]' => 1, 'group_source_req.gsr_source.__ss_padding[92]' => 1, 'group_source_req.gsr_source.__ss_padding[93]' => 1, 'group_source_req.gsr_source.__ss_padding[94]' => 1, 'group_source_req.gsr_source.__ss_padding[95]' => 1, 'group_source_req.gsr_source.__ss_padding[96]' => 1, 'group_source_req.gsr_source.__ss_padding[97]' => 1, 'group_source_req.gsr_source.__ss_padding[98]' => 1, 'group_source_req.gsr_source.__ss_padding[99]' => 1, 'group_source_req.gsr_source.__ss_padding[9]' => 1, 'group_source_req.gsr_source.ss_family' => 2, 'gv' => 16, 'gv.sv_any' => 4, 'gv.sv_flags' => 4, 'gv.sv_refcnt' => 4, 'gv.sv_u' => 4, 'gv.sv_u.svu_array' => 4, 'gv.sv_u.svu_gp' => 4, 'gv.sv_u.svu_hash' => 4, 'gv.sv_u.svu_iv' => 4, 'gv.sv_u.svu_pv' => 4, 'gv.sv_u.svu_rv' => 4, 'gv.sv_u.svu_uv' => 4, 'he' => 12, 'he.he_valu' => 4, 'he.he_valu.hent_refcount' => 4, 'he.he_valu.hent_val' => 4, 'he.hent_hek' => 4, 'he.hent_next' => 4, 'hek' => 9, 'hek.hek_hash' => 4, 'hek.hek_key' => 1, 'hek.hek_key[0]' => 1, 'hek.hek_len' => 4, 'hostent' => 20, 'hostent.h_addr_list' => 4, 'hostent.h_addrtype' => 4, 'hostent.h_aliases' => 4, 'hostent.h_length' => 4, 'hostent.h_name' => 4, 'hv' => 16, 'hv.sv_any' => 4, 'hv.sv_flags' => 4, 'hv.sv_refcnt' => 4, 'hv.sv_u' => 4, 'hv.sv_u.svu_array' => 4, 'hv.sv_u.svu_gp' => 4, 'hv.sv_u.svu_hash' => 4, 'hv.sv_u.svu_iv' => 4, 'hv.sv_u.svu_pv' => 4, 'hv.sv_u.svu_rv' => 4, 'hv.sv_u.svu_uv' => 4, 'id_t' => 4, 'imaxdiv_t' => 16, 'imaxdiv_t.quot' => 8, 'imaxdiv_t.rem' => 8, 'in6_addr' => 16, 'in6_addr.in6_u' => 16, 'in6_addr.in6_u.u6_addr16' => 16, 'in6_addr.in6_u.u6_addr16[0]' => 2, 'in6_addr.in6_u.u6_addr16[1]' => 2, 'in6_addr.in6_u.u6_addr16[2]' => 2, 'in6_addr.in6_u.u6_addr16[3]' => 2, 'in6_addr.in6_u.u6_addr16[4]' => 2, 'in6_addr.in6_u.u6_addr16[5]' => 2, 'in6_addr.in6_u.u6_addr16[6]' => 2, 'in6_addr.in6_u.u6_addr16[7]' => 2, 'in6_addr.in6_u.u6_addr32' => 16, 'in6_addr.in6_u.u6_addr32[0]' => 4, 'in6_addr.in6_u.u6_addr32[1]' => 4, 'in6_addr.in6_u.u6_addr32[2]' => 4, 'in6_addr.in6_u.u6_addr32[3]' => 4, 'in6_addr.in6_u.u6_addr8' => 16, 'in6_addr.in6_u.u6_addr8[0]' => 1, 'in6_addr.in6_u.u6_addr8[10]' => 1, 'in6_addr.in6_u.u6_addr8[11]' => 1, 'in6_addr.in6_u.u6_addr8[12]' => 1, 'in6_addr.in6_u.u6_addr8[13]' => 1, 'in6_addr.in6_u.u6_addr8[14]' => 1, 'in6_addr.in6_u.u6_addr8[15]' => 1, 'in6_addr.in6_u.u6_addr8[1]' => 1, 'in6_addr.in6_u.u6_addr8[2]' => 1, 'in6_addr.in6_u.u6_addr8[3]' => 1, 'in6_addr.in6_u.u6_addr8[4]' => 1, 'in6_addr.in6_u.u6_addr8[5]' => 1, 'in6_addr.in6_u.u6_addr8[6]' => 1, 'in6_addr.in6_u.u6_addr8[7]' => 1, 'in6_addr.in6_u.u6_addr8[8]' => 1, 'in6_addr.in6_u.u6_addr8[9]' => 1, 'in6_pktinfo' => 20, 'in6_pktinfo.ipi6_addr' => 16, 'in6_pktinfo.ipi6_addr.in6_u' => 16, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16' => 16, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16[0]' => 2, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16[1]' => 2, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16[2]' => 2, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16[3]' => 2, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16[4]' => 2, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16[5]' => 2, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16[6]' => 2, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr16[7]' => 2, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr32' => 16, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr32[0]' => 4, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr32[1]' => 4, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr32[2]' => 4, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr32[3]' => 4, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8' => 16, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[0]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[10]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[11]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[12]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[13]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[14]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[15]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[1]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[2]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[3]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[4]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[5]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[6]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[7]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[8]' => 1, 'in6_pktinfo.ipi6_addr.in6_u.u6_addr8[9]' => 1, 'in6_pktinfo.ipi6_ifindex' => 4, 'in_addr' => 4, 'in_addr.s_addr' => 4, 'in_addr_t' => 4, 'in_pktinfo' => 12, 'in_pktinfo.ipi_addr' => 4, 'in_pktinfo.ipi_addr.s_addr' => 4, 'in_pktinfo.ipi_ifindex' => 4, 'in_pktinfo.ipi_spec_dst' => 4, 'in_pktinfo.ipi_spec_dst.s_addr' => 4, 'in_port_t' => 2, 'ino64_t' => 8, 'ino_t' => 4, 'int16_t' => 2, 'int32_t' => 4, 'int64_t' => 8, 'int8_t' => 1, 'int_fast16_t' => 4, 'int_fast32_t' => 4, 'int_fast64_t' => 8, 'int_fast8_t' => 1, 'int_least16_t' => 2, 'int_least32_t' => 4, 'int_least64_t' => 8, 'int_least8_t' => 1, 'interpreter' => 1, 'interpreter.broiled' => 1, 'intmax_t' => 8, 'intptr_t' => 4, 'io' => 16, 'io.sv_any' => 4, 'io.sv_flags' => 4, 'io.sv_refcnt' => 4, 'io.sv_u' => 4, 'io.sv_u.svu_array' => 4, 'io.sv_u.svu_gp' => 4, 'io.sv_u.svu_hash' => 4, 'io.sv_u.svu_iv' => 4, 'io.sv_u.svu_pv' => 4, 'io.sv_u.svu_rv' => 4, 'io.sv_u.svu_uv' => 4, 'iovec' => 8, 'iovec.iov_base' => 4, 'iovec.iov_len' => 4, 'ip_mreq' => 8, 'ip_mreq.imr_interface' => 4, 'ip_mreq.imr_interface.s_addr' => 4, 'ip_mreq.imr_multiaddr' => 4, 'ip_mreq.imr_multiaddr.s_addr' => 4, 'ip_mreq_source' => 12, 'ip_mreq_source.imr_interface' => 4, 'ip_mreq_source.imr_interface.s_addr' => 4, 'ip_mreq_source.imr_multiaddr' => 4, 'ip_mreq_source.imr_multiaddr.s_addr' => 4, 'ip_mreq_source.imr_sourceaddr' => 4, 'ip_mreq_source.imr_sourceaddr.s_addr' => 4, 'ip_mreqn' => 12, 'ip_mreqn.imr_address' => 4, 'ip_mreqn.imr_address.s_addr' => 4, 'ip_mreqn.imr_ifindex' => 4, 'ip_mreqn.imr_multiaddr' => 4, 'ip_mreqn.imr_multiaddr.s_addr' => 4, 'ip_msfilter' => 20, 'ip_msfilter.imsf_fmode' => 4, 'ip_msfilter.imsf_interface' => 4, 'ip_msfilter.imsf_interface.s_addr' => 4, 'ip_msfilter.imsf_multiaddr' => 4, 'ip_msfilter.imsf_multiaddr.s_addr' => 4, 'ip_msfilter.imsf_numsrc' => 4, 'ip_msfilter.imsf_slist' => 4, 'ip_msfilter.imsf_slist[0]' => 4, 'ip_msfilter.imsf_slist[0].s_addr' => 4, 'ip_opts' => 44, 'ip_opts.ip_dst' => 4, 'ip_opts.ip_dst.s_addr' => 4, 'ip_opts.ip_opts' => 40, 'ip_opts.ip_opts[0]' => 1, 'ip_opts.ip_opts[10]' => 1, 'ip_opts.ip_opts[11]' => 1, 'ip_opts.ip_opts[12]' => 1, 'ip_opts.ip_opts[13]' => 1, 'ip_opts.ip_opts[14]' => 1, 'ip_opts.ip_opts[15]' => 1, 'ip_opts.ip_opts[16]' => 1, 'ip_opts.ip_opts[17]' => 1, 'ip_opts.ip_opts[18]' => 1, 'ip_opts.ip_opts[19]' => 1, 'ip_opts.ip_opts[1]' => 1, 'ip_opts.ip_opts[20]' => 1, 'ip_opts.ip_opts[21]' => 1, 'ip_opts.ip_opts[22]' => 1, 'ip_opts.ip_opts[23]' => 1, 'ip_opts.ip_opts[24]' => 1, 'ip_opts.ip_opts[25]' => 1, 'ip_opts.ip_opts[26]' => 1, 'ip_opts.ip_opts[27]' => 1, 'ip_opts.ip_opts[28]' => 1, 'ip_opts.ip_opts[29]' => 1, 'ip_opts.ip_opts[2]' => 1, 'ip_opts.ip_opts[30]' => 1, 'ip_opts.ip_opts[31]' => 1, 'ip_opts.ip_opts[32]' => 1, 'ip_opts.ip_opts[33]' => 1, 'ip_opts.ip_opts[34]' => 1, 'ip_opts.ip_opts[35]' => 1, 'ip_opts.ip_opts[36]' => 1, 'ip_opts.ip_opts[37]' => 1, 'ip_opts.ip_opts[38]' => 1, 'ip_opts.ip_opts[39]' => 1, 'ip_opts.ip_opts[3]' => 1, 'ip_opts.ip_opts[4]' => 1, 'ip_opts.ip_opts[5]' => 1, 'ip_opts.ip_opts[6]' => 1, 'ip_opts.ip_opts[7]' => 1, 'ip_opts.ip_opts[8]' => 1, 'ip_opts.ip_opts[9]' => 1, 'ipc_perm' => 36, 'ipc_perm.__key' => 4, 'ipc_perm.__pad1' => 2, 'ipc_perm.__pad2' => 2, 'ipc_perm.__seq' => 2, 'ipc_perm.__unused1' => 4, 'ipc_perm.__unused2' => 4, 'ipc_perm.cgid' => 4, 'ipc_perm.cuid' => 4, 'ipc_perm.gid' => 4, 'ipc_perm.mode' => 2, 'ipc_perm.uid' => 4, 'ipv6_mreq' => 20, 'ipv6_mreq.ipv6mr_interface' => 4, 'ipv6_mreq.ipv6mr_multiaddr' => 16, 'ipv6_mreq.ipv6mr_multiaddr.in6_u' => 16, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16' => 16, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16[0]' => 2, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16[1]' => 2, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16[2]' => 2, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16[3]' => 2, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16[4]' => 2, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16[5]' => 2, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16[6]' => 2, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr16[7]' => 2, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr32' => 16, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr32[0]' => 4, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr32[1]' => 4, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr32[2]' => 4, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr32[3]' => 4, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8' => 16, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[0]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[10]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[11]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[12]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[13]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[14]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[15]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[1]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[2]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[3]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[4]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[5]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[6]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[7]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[8]' => 1, 'ipv6_mreq.ipv6mr_multiaddr.in6_u.u6_addr8[9]' => 1, 'itimerspec' => 16, 'itimerspec.it_interval' => 8, 'itimerspec.it_interval.tv_nsec' => 4, 'itimerspec.it_interval.tv_sec' => 4, 'itimerspec.it_value' => 8, 'itimerspec.it_value.tv_nsec' => 4, 'itimerspec.it_value.tv_sec' => 4, 'itimerval' => 16, 'itimerval.it_interval' => 8, 'itimerval.it_interval.tv_sec' => 4, 'itimerval.it_interval.tv_usec' => 4, 'itimerval.it_value' => 8, 'itimerval.it_value.tv_sec' => 4, 'itimerval.it_value.tv_usec' => 4, 'jmp_buf' => 156, 'jmp_buf[0]' => 156, 'jmp_buf[0].__jmpbuf' => 24, 'jmp_buf[0].__jmpbuf[0]' => 4, 'jmp_buf[0].__jmpbuf[1]' => 4, 'jmp_buf[0].__jmpbuf[2]' => 4, 'jmp_buf[0].__jmpbuf[3]' => 4, 'jmp_buf[0].__jmpbuf[4]' => 4, 'jmp_buf[0].__jmpbuf[5]' => 4, 'jmp_buf[0].__mask_was_saved' => 4, 'jmp_buf[0].__saved_mask' => 128, 'jmp_buf[0].__saved_mask.__val' => 128, 'jmp_buf[0].__saved_mask.__val[0]' => 4, 'jmp_buf[0].__saved_mask.__val[10]' => 4, 'jmp_buf[0].__saved_mask.__val[11]' => 4, 'jmp_buf[0].__saved_mask.__val[12]' => 4, 'jmp_buf[0].__saved_mask.__val[13]' => 4, 'jmp_buf[0].__saved_mask.__val[14]' => 4, 'jmp_buf[0].__saved_mask.__val[15]' => 4, 'jmp_buf[0].__saved_mask.__val[16]' => 4, 'jmp_buf[0].__saved_mask.__val[17]' => 4, 'jmp_buf[0].__saved_mask.__val[18]' => 4, 'jmp_buf[0].__saved_mask.__val[19]' => 4, 'jmp_buf[0].__saved_mask.__val[1]' => 4, 'jmp_buf[0].__saved_mask.__val[20]' => 4, 'jmp_buf[0].__saved_mask.__val[21]' => 4, 'jmp_buf[0].__saved_mask.__val[22]' => 4, 'jmp_buf[0].__saved_mask.__val[23]' => 4, 'jmp_buf[0].__saved_mask.__val[24]' => 4, 'jmp_buf[0].__saved_mask.__val[25]' => 4, 'jmp_buf[0].__saved_mask.__val[26]' => 4, 'jmp_buf[0].__saved_mask.__val[27]' => 4, 'jmp_buf[0].__saved_mask.__val[28]' => 4, 'jmp_buf[0].__saved_mask.__val[29]' => 4, 'jmp_buf[0].__saved_mask.__val[2]' => 4, 'jmp_buf[0].__saved_mask.__val[30]' => 4, 'jmp_buf[0].__saved_mask.__val[31]' => 4, 'jmp_buf[0].__saved_mask.__val[3]' => 4, 'jmp_buf[0].__saved_mask.__val[4]' => 4, 'jmp_buf[0].__saved_mask.__val[5]' => 4, 'jmp_buf[0].__saved_mask.__val[6]' => 4, 'jmp_buf[0].__saved_mask.__val[7]' => 4, 'jmp_buf[0].__saved_mask.__val[8]' => 4, 'jmp_buf[0].__saved_mask.__val[9]' => 4, 'jmpenv' => 165, 'jmpenv.je_buf' => 156, 'jmpenv.je_buf[0]' => 156, 'jmpenv.je_buf[0].__jmpbuf' => 24, 'jmpenv.je_buf[0].__jmpbuf[0]' => 4, 'jmpenv.je_buf[0].__jmpbuf[1]' => 4, 'jmpenv.je_buf[0].__jmpbuf[2]' => 4, 'jmpenv.je_buf[0].__jmpbuf[3]' => 4, 'jmpenv.je_buf[0].__jmpbuf[4]' => 4, 'jmpenv.je_buf[0].__jmpbuf[5]' => 4, 'jmpenv.je_buf[0].__mask_was_saved' => 4, 'jmpenv.je_buf[0].__saved_mask' => 128, 'jmpenv.je_buf[0].__saved_mask.__val' => 128, 'jmpenv.je_buf[0].__saved_mask.__val[0]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[10]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[11]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[12]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[13]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[14]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[15]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[16]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[17]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[18]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[19]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[1]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[20]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[21]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[22]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[23]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[24]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[25]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[26]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[27]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[28]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[29]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[2]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[30]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[31]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[3]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[4]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[5]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[6]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[7]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[8]' => 4, 'jmpenv.je_buf[0].__saved_mask.__val[9]' => 4, 'jmpenv.je_mustcatch' => 1, 'jmpenv.je_prev' => 4, 'jmpenv.je_ret' => 4, 'key_t' => 4, 'lconv' => 54, 'lconv.currency_symbol' => 4, 'lconv.decimal_point' => 4, 'lconv.frac_digits' => 1, 'lconv.grouping' => 4, 'lconv.int_curr_symbol' => 4, 'lconv.int_frac_digits' => 1, 'lconv.int_n_cs_precedes' => 1, 'lconv.int_n_sep_by_space' => 1, 'lconv.int_n_sign_posn' => 1, 'lconv.int_p_cs_precedes' => 1, 'lconv.int_p_sep_by_space' => 1, 'lconv.int_p_sign_posn' => 1, 'lconv.mon_decimal_point' => 4, 'lconv.mon_grouping' => 4, 'lconv.mon_thousands_sep' => 4, 'lconv.n_cs_precedes' => 1, 'lconv.n_sep_by_space' => 1, 'lconv.n_sign_posn' => 1, 'lconv.negative_sign' => 4, 'lconv.p_cs_precedes' => 1, 'lconv.p_sep_by_space' => 1, 'lconv.p_sign_posn' => 1, 'lconv.positive_sign' => 4, 'lconv.thousands_sep' => 4, 'ldiv_t' => 8, 'ldiv_t.quot' => 4, 'ldiv_t.rem' => 4, 'line_t' => 4, 'linger' => 8, 'linger.l_linger' => 4, 'linger.l_onoff' => 4, 'listop' => 28, 'listop.op_first' => 4, 'listop.op_flags' => 1, 'listop.op_last' => 4, 'listop.op_next' => 4, 'listop.op_ppaddr' => 4, 'listop.op_private' => 1, 'listop.op_sibling' => 4, 'listop.op_targ' => 4, 'lldiv_t' => 16, 'lldiv_t.quot' => 8, 'lldiv_t.rem' => 8, 'locale_t' => 4, 'loff_t' => 8, 'logop' => 28, 'logop.op_first' => 4, 'logop.op_flags' => 1, 'logop.op_next' => 4, 'logop.op_other' => 4, 'logop.op_ppaddr' => 4, 'logop.op_private' => 1, 'logop.op_sibling' => 4, 'logop.op_targ' => 4, 'loop' => 40, 'loop.op_first' => 4, 'loop.op_flags' => 1, 'loop.op_last' => 4, 'loop.op_lastop' => 4, 'loop.op_next' => 4, 'loop.op_nextop' => 4, 'loop.op_ppaddr' => 4, 'loop.op_private' => 1, 'loop.op_redoop' => 4, 'loop.op_sibling' => 4, 'loop.op_targ' => 4, 'magic' => 24, 'magic.mg_flags' => 1, 'magic.mg_len' => 4, 'magic.mg_moremagic' => 4, 'magic.mg_obj' => 4, 'magic.mg_private' => 2, 'magic.mg_ptr' => 4, 'magic.mg_type' => 1, 'magic.mg_virtual' => 4, 'mcontext_t' => 88, 'mcontext_t.cr2' => 4, 'mcontext_t.fpregs' => 4, 'mcontext_t.gregs' => 76, 'mcontext_t.gregs[0]' => 4, 'mcontext_t.gregs[10]' => 4, 'mcontext_t.gregs[11]' => 4, 'mcontext_t.gregs[12]' => 4, 'mcontext_t.gregs[13]' => 4, 'mcontext_t.gregs[14]' => 4, 'mcontext_t.gregs[15]' => 4, 'mcontext_t.gregs[16]' => 4, 'mcontext_t.gregs[17]' => 4, 'mcontext_t.gregs[18]' => 4, 'mcontext_t.gregs[1]' => 4, 'mcontext_t.gregs[2]' => 4, 'mcontext_t.gregs[3]' => 4, 'mcontext_t.gregs[4]' => 4, 'mcontext_t.gregs[5]' => 4, 'mcontext_t.gregs[6]' => 4, 'mcontext_t.gregs[7]' => 4, 'mcontext_t.gregs[8]' => 4, 'mcontext_t.gregs[9]' => 4, 'mcontext_t.oldmask' => 4, 'mgvtbl' => 32, 'mgvtbl.svt_clear' => 4, 'mgvtbl.svt_copy' => 4, 'mgvtbl.svt_dup' => 4, 'mgvtbl.svt_free' => 4, 'mgvtbl.svt_get' => 4, 'mgvtbl.svt_len' => 4, 'mgvtbl.svt_local' => 4, 'mgvtbl.svt_set' => 4, 'mode_t' => 4, 'msghdr' => 28, 'msghdr.msg_control' => 4, 'msghdr.msg_controllen' => 4, 'msghdr.msg_flags' => 4, 'msghdr.msg_iov' => 4, 'msghdr.msg_iovlen' => 4, 'msghdr.msg_name' => 4, 'msghdr.msg_namelen' => 4, 'netent' => 16, 'netent.n_addrtype' => 4, 'netent.n_aliases' => 4, 'netent.n_name' => 4, 'netent.n_net' => 4, 'nlink_t' => 4, 'off64_t' => 8, 'off_t' => 4, 'op' => 20, 'op.op_flags' => 1, 'op.op_next' => 4, 'op.op_ppaddr' => 4, 'op.op_private' => 1, 'op.op_sibling' => 4, 'op.op_targ' => 4, 'opcode' => 2, 'osockaddr' => 16, 'osockaddr.sa_data' => 14, 'osockaddr.sa_data[0]' => 1, 'osockaddr.sa_data[10]' => 1, 'osockaddr.sa_data[11]' => 1, 'osockaddr.sa_data[12]' => 1, 'osockaddr.sa_data[13]' => 1, 'osockaddr.sa_data[1]' => 1, 'osockaddr.sa_data[2]' => 1, 'osockaddr.sa_data[3]' => 1, 'osockaddr.sa_data[4]' => 1, 'osockaddr.sa_data[5]' => 1, 'osockaddr.sa_data[6]' => 1, 'osockaddr.sa_data[7]' => 1, 'osockaddr.sa_data[8]' => 1, 'osockaddr.sa_data[9]' => 1, 'osockaddr.sa_family' => 2, 'padop' => 24, 'padop.op_flags' => 1, 'padop.op_next' => 4, 'padop.op_padix' => 4, 'padop.op_ppaddr' => 4, 'padop.op_private' => 1, 'padop.op_sibling' => 4, 'padop.op_targ' => 4, 'padtidy_type' => 1, 'peep_t' => 4, 'perl_debug_pad' => 48, 'perl_debug_pad.pad' => 48, 'perl_debug_pad.pad[0]' => 16, 'perl_debug_pad.pad[0].sv_any' => 4, 'perl_debug_pad.pad[0].sv_flags' => 4, 'perl_debug_pad.pad[0].sv_refcnt' => 4, 'perl_debug_pad.pad[0].sv_u' => 4, 'perl_debug_pad.pad[0].sv_u.svu_array' => 4, 'perl_debug_pad.pad[0].sv_u.svu_gp' => 4, 'perl_debug_pad.pad[0].sv_u.svu_hash' => 4, 'perl_debug_pad.pad[0].sv_u.svu_iv' => 4, 'perl_debug_pad.pad[0].sv_u.svu_pv' => 4, 'perl_debug_pad.pad[0].sv_u.svu_rv' => 4, 'perl_debug_pad.pad[0].sv_u.svu_uv' => 4, 'perl_debug_pad.pad[1]' => 16, 'perl_debug_pad.pad[1].sv_any' => 4, 'perl_debug_pad.pad[1].sv_flags' => 4, 'perl_debug_pad.pad[1].sv_refcnt' => 4, 'perl_debug_pad.pad[1].sv_u' => 4, 'perl_debug_pad.pad[1].sv_u.svu_array' => 4, 'perl_debug_pad.pad[1].sv_u.svu_gp' => 4, 'perl_debug_pad.pad[1].sv_u.svu_hash' => 4, 'perl_debug_pad.pad[1].sv_u.svu_iv' => 4, 'perl_debug_pad.pad[1].sv_u.svu_pv' => 4, 'perl_debug_pad.pad[1].sv_u.svu_rv' => 4, 'perl_debug_pad.pad[1].sv_u.svu_uv' => 4, 'perl_debug_pad.pad[2]' => 16, 'perl_debug_pad.pad[2].sv_any' => 4, 'perl_debug_pad.pad[2].sv_flags' => 4, 'perl_debug_pad.pad[2].sv_refcnt' => 4, 'perl_debug_pad.pad[2].sv_u' => 4, 'perl_debug_pad.pad[2].sv_u.svu_array' => 4, 'perl_debug_pad.pad[2].sv_u.svu_gp' => 4, 'perl_debug_pad.pad[2].sv_u.svu_hash' => 4, 'perl_debug_pad.pad[2].sv_u.svu_iv' => 4, 'perl_debug_pad.pad[2].sv_u.svu_pv' => 4, 'perl_debug_pad.pad[2].sv_u.svu_rv' => 4, 'perl_debug_pad.pad[2].sv_u.svu_uv' => 4, 'pid_t' => 4, 'pmop' => 57, 'pmop.op_first' => 4, 'pmop.op_flags' => 1, 'pmop.op_last' => 4, 'pmop.op_next' => 4, 'pmop.op_pmdynflags' => 1, 'pmop.op_pmflags' => 4, 'pmop.op_pmnext' => 4, 'pmop.op_pmpermflags' => 4, 'pmop.op_pmregexp' => 4, 'pmop.op_pmreplroot' => 4, 'pmop.op_pmreplstart' => 4, 'pmop.op_pmstash' => 4, 'pmop.op_ppaddr' => 4, 'pmop.op_private' => 1, 'pmop.op_sibling' => 4, 'pmop.op_targ' => 4, 'protoent' => 12, 'protoent.p_aliases' => 4, 'protoent.p_name' => 4, 'protoent.p_proto' => 4, 'pthread_attr_t' => 36, 'pthread_attr_t.__align' => 4, 'pthread_attr_t.__size' => 36, 'pthread_attr_t.__size[0]' => 1, 'pthread_attr_t.__size[10]' => 1, 'pthread_attr_t.__size[11]' => 1, 'pthread_attr_t.__size[12]' => 1, 'pthread_attr_t.__size[13]' => 1, 'pthread_attr_t.__size[14]' => 1, 'pthread_attr_t.__size[15]' => 1, 'pthread_attr_t.__size[16]' => 1, 'pthread_attr_t.__size[17]' => 1, 'pthread_attr_t.__size[18]' => 1, 'pthread_attr_t.__size[19]' => 1, 'pthread_attr_t.__size[1]' => 1, 'pthread_attr_t.__size[20]' => 1, 'pthread_attr_t.__size[21]' => 1, 'pthread_attr_t.__size[22]' => 1, 'pthread_attr_t.__size[23]' => 1, 'pthread_attr_t.__size[24]' => 1, 'pthread_attr_t.__size[25]' => 1, 'pthread_attr_t.__size[26]' => 1, 'pthread_attr_t.__size[27]' => 1, 'pthread_attr_t.__size[28]' => 1, 'pthread_attr_t.__size[29]' => 1, 'pthread_attr_t.__size[2]' => 1, 'pthread_attr_t.__size[30]' => 1, 'pthread_attr_t.__size[31]' => 1, 'pthread_attr_t.__size[32]' => 1, 'pthread_attr_t.__size[33]' => 1, 'pthread_attr_t.__size[34]' => 1, 'pthread_attr_t.__size[35]' => 1, 'pthread_attr_t.__size[3]' => 1, 'pthread_attr_t.__size[4]' => 1, 'pthread_attr_t.__size[5]' => 1, 'pthread_attr_t.__size[6]' => 1, 'pthread_attr_t.__size[7]' => 1, 'pthread_attr_t.__size[8]' => 1, 'pthread_attr_t.__size[9]' => 1, 'pthread_barrier_t' => 20, 'pthread_barrier_t.__align' => 4, 'pthread_barrier_t.__size' => 20, 'pthread_barrier_t.__size[0]' => 1, 'pthread_barrier_t.__size[10]' => 1, 'pthread_barrier_t.__size[11]' => 1, 'pthread_barrier_t.__size[12]' => 1, 'pthread_barrier_t.__size[13]' => 1, 'pthread_barrier_t.__size[14]' => 1, 'pthread_barrier_t.__size[15]' => 1, 'pthread_barrier_t.__size[16]' => 1, 'pthread_barrier_t.__size[17]' => 1, 'pthread_barrier_t.__size[18]' => 1, 'pthread_barrier_t.__size[19]' => 1, 'pthread_barrier_t.__size[1]' => 1, 'pthread_barrier_t.__size[2]' => 1, 'pthread_barrier_t.__size[3]' => 1, 'pthread_barrier_t.__size[4]' => 1, 'pthread_barrier_t.__size[5]' => 1, 'pthread_barrier_t.__size[6]' => 1, 'pthread_barrier_t.__size[7]' => 1, 'pthread_barrier_t.__size[8]' => 1, 'pthread_barrier_t.__size[9]' => 1, 'pthread_barrierattr_t' => 4, 'pthread_barrierattr_t.__align' => 4, 'pthread_barrierattr_t.__size' => 4, 'pthread_barrierattr_t.__size[0]' => 1, 'pthread_barrierattr_t.__size[1]' => 1, 'pthread_barrierattr_t.__size[2]' => 1, 'pthread_barrierattr_t.__size[3]' => 1, 'pthread_cond_t' => 48, 'pthread_cond_t.__align' => 8, 'pthread_cond_t.__data' => 44, 'pthread_cond_t.__data.__broadcast_seq' => 4, 'pthread_cond_t.__data.__futex' => 4, 'pthread_cond_t.__data.__lock' => 4, 'pthread_cond_t.__data.__mutex' => 4, 'pthread_cond_t.__data.__nwaiters' => 4, 'pthread_cond_t.__data.__total_seq' => 8, 'pthread_cond_t.__data.__wakeup_seq' => 8, 'pthread_cond_t.__data.__woken_seq' => 8, 'pthread_cond_t.__size' => 48, 'pthread_cond_t.__size[0]' => 1, 'pthread_cond_t.__size[10]' => 1, 'pthread_cond_t.__size[11]' => 1, 'pthread_cond_t.__size[12]' => 1, 'pthread_cond_t.__size[13]' => 1, 'pthread_cond_t.__size[14]' => 1, 'pthread_cond_t.__size[15]' => 1, 'pthread_cond_t.__size[16]' => 1, 'pthread_cond_t.__size[17]' => 1, 'pthread_cond_t.__size[18]' => 1, 'pthread_cond_t.__size[19]' => 1, 'pthread_cond_t.__size[1]' => 1, 'pthread_cond_t.__size[20]' => 1, 'pthread_cond_t.__size[21]' => 1, 'pthread_cond_t.__size[22]' => 1, 'pthread_cond_t.__size[23]' => 1, 'pthread_cond_t.__size[24]' => 1, 'pthread_cond_t.__size[25]' => 1, 'pthread_cond_t.__size[26]' => 1, 'pthread_cond_t.__size[27]' => 1, 'pthread_cond_t.__size[28]' => 1, 'pthread_cond_t.__size[29]' => 1, 'pthread_cond_t.__size[2]' => 1, 'pthread_cond_t.__size[30]' => 1, 'pthread_cond_t.__size[31]' => 1, 'pthread_cond_t.__size[32]' => 1, 'pthread_cond_t.__size[33]' => 1, 'pthread_cond_t.__size[34]' => 1, 'pthread_cond_t.__size[35]' => 1, 'pthread_cond_t.__size[36]' => 1, 'pthread_cond_t.__size[37]' => 1, 'pthread_cond_t.__size[38]' => 1, 'pthread_cond_t.__size[39]' => 1, 'pthread_cond_t.__size[3]' => 1, 'pthread_cond_t.__size[40]' => 1, 'pthread_cond_t.__size[41]' => 1, 'pthread_cond_t.__size[42]' => 1, 'pthread_cond_t.__size[43]' => 1, 'pthread_cond_t.__size[44]' => 1, 'pthread_cond_t.__size[45]' => 1, 'pthread_cond_t.__size[46]' => 1, 'pthread_cond_t.__size[47]' => 1, 'pthread_cond_t.__size[4]' => 1, 'pthread_cond_t.__size[5]' => 1, 'pthread_cond_t.__size[6]' => 1, 'pthread_cond_t.__size[7]' => 1, 'pthread_cond_t.__size[8]' => 1, 'pthread_cond_t.__size[9]' => 1, 'pthread_condattr_t' => 4, 'pthread_condattr_t.__align' => 4, 'pthread_condattr_t.__size' => 4, 'pthread_condattr_t.__size[0]' => 1, 'pthread_condattr_t.__size[1]' => 1, 'pthread_condattr_t.__size[2]' => 1, 'pthread_condattr_t.__size[3]' => 1, 'pthread_key_t' => 4, 'pthread_mutex_t' => 24, 'pthread_mutex_t.__align' => 4, 'pthread_mutex_t.__data' => 24, 'pthread_mutex_t.__data.__count' => 4, 'pthread_mutex_t.__data.__kind' => 4, 'pthread_mutex_t.__data.__list' => 4, 'pthread_mutex_t.__data.__list.__next' => 4, 'pthread_mutex_t.__data.__lock' => 4, 'pthread_mutex_t.__data.__nusers' => 4, 'pthread_mutex_t.__data.__owner' => 4, 'pthread_mutex_t.__data.__spins' => 4, 'pthread_mutex_t.__size' => 24, 'pthread_mutex_t.__size[0]' => 1, 'pthread_mutex_t.__size[10]' => 1, 'pthread_mutex_t.__size[11]' => 1, 'pthread_mutex_t.__size[12]' => 1, 'pthread_mutex_t.__size[13]' => 1, 'pthread_mutex_t.__size[14]' => 1, 'pthread_mutex_t.__size[15]' => 1, 'pthread_mutex_t.__size[16]' => 1, 'pthread_mutex_t.__size[17]' => 1, 'pthread_mutex_t.__size[18]' => 1, 'pthread_mutex_t.__size[19]' => 1, 'pthread_mutex_t.__size[1]' => 1, 'pthread_mutex_t.__size[20]' => 1, 'pthread_mutex_t.__size[21]' => 1, 'pthread_mutex_t.__size[22]' => 1, 'pthread_mutex_t.__size[23]' => 1, 'pthread_mutex_t.__size[2]' => 1, 'pthread_mutex_t.__size[3]' => 1, 'pthread_mutex_t.__size[4]' => 1, 'pthread_mutex_t.__size[5]' => 1, 'pthread_mutex_t.__size[6]' => 1, 'pthread_mutex_t.__size[7]' => 1, 'pthread_mutex_t.__size[8]' => 1, 'pthread_mutex_t.__size[9]' => 1, 'pthread_mutexattr_t' => 4, 'pthread_mutexattr_t.__align' => 4, 'pthread_mutexattr_t.__size' => 4, 'pthread_mutexattr_t.__size[0]' => 1, 'pthread_mutexattr_t.__size[1]' => 1, 'pthread_mutexattr_t.__size[2]' => 1, 'pthread_mutexattr_t.__size[3]' => 1, 'pthread_once_t' => 4, 'pthread_rwlock_t' => 32, 'pthread_rwlock_t.__align' => 4, 'pthread_rwlock_t.__data' => 32, 'pthread_rwlock_t.__data.__flags' => 4, 'pthread_rwlock_t.__data.__lock' => 4, 'pthread_rwlock_t.__data.__nr_readers' => 4, 'pthread_rwlock_t.__data.__nr_readers_queued' => 4, 'pthread_rwlock_t.__data.__nr_writers_queued' => 4, 'pthread_rwlock_t.__data.__readers_wakeup' => 4, 'pthread_rwlock_t.__data.__writer' => 4, 'pthread_rwlock_t.__data.__writer_wakeup' => 4, 'pthread_rwlock_t.__size' => 32, 'pthread_rwlock_t.__size[0]' => 1, 'pthread_rwlock_t.__size[10]' => 1, 'pthread_rwlock_t.__size[11]' => 1, 'pthread_rwlock_t.__size[12]' => 1, 'pthread_rwlock_t.__size[13]' => 1, 'pthread_rwlock_t.__size[14]' => 1, 'pthread_rwlock_t.__size[15]' => 1, 'pthread_rwlock_t.__size[16]' => 1, 'pthread_rwlock_t.__size[17]' => 1, 'pthread_rwlock_t.__size[18]' => 1, 'pthread_rwlock_t.__size[19]' => 1, 'pthread_rwlock_t.__size[1]' => 1, 'pthread_rwlock_t.__size[20]' => 1, 'pthread_rwlock_t.__size[21]' => 1, 'pthread_rwlock_t.__size[22]' => 1, 'pthread_rwlock_t.__size[23]' => 1, 'pthread_rwlock_t.__size[24]' => 1, 'pthread_rwlock_t.__size[25]' => 1, 'pthread_rwlock_t.__size[26]' => 1, 'pthread_rwlock_t.__size[27]' => 1, 'pthread_rwlock_t.__size[28]' => 1, 'pthread_rwlock_t.__size[29]' => 1, 'pthread_rwlock_t.__size[2]' => 1, 'pthread_rwlock_t.__size[30]' => 1, 'pthread_rwlock_t.__size[31]' => 1, 'pthread_rwlock_t.__size[3]' => 1, 'pthread_rwlock_t.__size[4]' => 1, 'pthread_rwlock_t.__size[5]' => 1, 'pthread_rwlock_t.__size[6]' => 1, 'pthread_rwlock_t.__size[7]' => 1, 'pthread_rwlock_t.__size[8]' => 1, 'pthread_rwlock_t.__size[9]' => 1, 'pthread_rwlockattr_t' => 8, 'pthread_rwlockattr_t.__align' => 4, 'pthread_rwlockattr_t.__size' => 8, 'pthread_rwlockattr_t.__size[0]' => 1, 'pthread_rwlockattr_t.__size[1]' => 1, 'pthread_rwlockattr_t.__size[2]' => 1, 'pthread_rwlockattr_t.__size[3]' => 1, 'pthread_rwlockattr_t.__size[4]' => 1, 'pthread_rwlockattr_t.__size[5]' => 1, 'pthread_rwlockattr_t.__size[6]' => 1, 'pthread_rwlockattr_t.__size[7]' => 1, 'pthread_spinlock_t' => 4, 'pthread_t' => 4, 'ptr_tbl' => 12, 'ptr_tbl.tbl_ary' => 4, 'ptr_tbl.tbl_items' => 4, 'ptr_tbl.tbl_max' => 4, 'ptr_tbl_ent' => 12, 'ptr_tbl_ent.newval' => 4, 'ptr_tbl_ent.next' => 4, 'ptr_tbl_ent.oldval' => 4, 'ptrdiff_t' => 4, 'pvop' => 24, 'pvop.op_flags' => 1, 'pvop.op_next' => 4, 'pvop.op_ppaddr' => 4, 'pvop.op_private' => 1, 'pvop.op_pv' => 4, 'pvop.op_sibling' => 4, 'pvop.op_targ' => 4, 'quad_t' => 8, 'random_data' => 28, 'random_data.end_ptr' => 4, 'random_data.fptr' => 4, 'random_data.rand_deg' => 4, 'random_data.rand_sep' => 4, 'random_data.rand_type' => 4, 'random_data.rptr' => 4, 'random_data.state' => 4, 're_intuit_start_t' => 4, 're_intuit_string_t' => 4, 're_save_state' => 93, 're_save_state.re_state_bostr' => 4, 're_save_state.re_state_reg_curpm' => 4, 're_save_state.re_state_reg_eval_set' => 4, 're_save_state.re_state_reg_flags' => 4, 're_save_state.re_state_reg_leftiter' => 4, 're_save_state.re_state_reg_magic' => 4, 're_save_state.re_state_reg_match_utf8' => 1, 're_save_state.re_state_reg_maxiter' => 4, 're_save_state.re_state_reg_oldcurpm' => 4, 're_save_state.re_state_reg_oldpos' => 4, 're_save_state.re_state_reg_oldsaved' => 4, 're_save_state.re_state_reg_oldsavedlen' => 4, 're_save_state.re_state_reg_poscache' => 4, 're_save_state.re_state_reg_poscache_size' => 4, 're_save_state.re_state_reg_start_tmp' => 4, 're_save_state.re_state_reg_start_tmpl' => 4, 're_save_state.re_state_reg_starttry' => 4, 're_save_state.re_state_regendp' => 4, 're_save_state.re_state_regeol' => 4, 're_save_state.re_state_reginput' => 4, 're_save_state.re_state_reglastcloseparen' => 4, 're_save_state.re_state_reglastparen' => 4, 're_save_state.re_state_regsize' => 4, 're_save_state.re_state_regstartp' => 4, 're_scream_pos_data' => 8, 're_scream_pos_data.scream_olds' => 4, 're_scream_pos_data.scream_pos' => 4, 're_scream_pos_data_s' => 8, 're_scream_pos_data_s.scream_olds' => 4, 're_scream_pos_data_s.scream_pos' => 4, 'reg_trie_accepted' => 6, 'reg_trie_accepted.endpos' => 4, 'reg_trie_accepted.wordnum' => 2, 'regcomp_t' => 4, 'regdupe_t' => 4, 'regexec_t' => 4, 'regexp' => 76, 'regexp.data' => 4, 'regexp.endp' => 4, 'regexp.engine' => 4, 'regexp.lastcloseparen' => 4, 'regexp.lastparen' => 4, 'regexp.minlen' => 4, 'regexp.nparens' => 4, 'regexp.offsets' => 4, 'regexp.paren_names' => 4, 'regexp.precomp' => 4, 'regexp.prelen' => 4, 'regexp.program' => 4, 'regexp.program[0]' => 4, 'regexp.program[0].flags' => 1, 'regexp.program[0].next_off' => 2, 'regexp.program[0].type' => 1, 'regexp.refcnt' => 4, 'regexp.reganch' => 4, 'regexp.regstclass' => 4, 'regexp.startp' => 4, 'regexp.subbeg' => 4, 'regexp.sublen' => 4, 'regexp.substrs' => 4, 'regexp_engine' => 20, 'regexp_engine.checkstr' => 4, 'regexp_engine.comp' => 4, 'regexp_engine.exec' => 4, 'regexp_engine.free' => 4, 'regexp_engine.intuit' => 4, 'regfree_t' => 4, 'register_t' => 4, 'regmatch_info' => 20, 'regmatch_info.bol' => 4, 'regmatch_info.ganch' => 4, 'regmatch_info.prog' => 4, 'regmatch_info.sv' => 4, 'regmatch_info.till' => 4, 'regmatch_slab' => 4064, 'regmatch_slab.next' => 4, 'regmatch_slab.prev' => 4, 'regmatch_slab.states' => 4056, 'regmatch_slab.states[0]' => 52, 'regmatch_slab.states[0].locinput' => 4, 'regmatch_slab.states[0].resume_state' => 4, 'regmatch_slab.states[0].u' => 44, 'regmatch_slab.states[0].u.branch' => 12, 'regmatch_slab.states[0].u.branch.cp' => 4, 'regmatch_slab.states[0].u.branch.lastparen' => 4, 'regmatch_slab.states[0].u.branch.next_branch' => 4, 'regmatch_slab.states[0].u.curly' => 44, 'regmatch_slab.states[0].u.curly.A' => 4, 'regmatch_slab.states[0].u.curly.B' => 4, 'regmatch_slab.states[0].u.curly.c1' => 4, 'regmatch_slab.states[0].u.curly.c2' => 4, 'regmatch_slab.states[0].u.curly.count' => 4, 'regmatch_slab.states[0].u.curly.cp' => 4, 'regmatch_slab.states[0].u.curly.max' => 4, 'regmatch_slab.states[0].u.curly.maxpos' => 4, 'regmatch_slab.states[0].u.curly.min' => 4, 'regmatch_slab.states[0].u.curly.oldloc' => 4, 'regmatch_slab.states[0].u.curly.paren' => 4, 'regmatch_slab.states[0].u.curlym' => 37, 'regmatch_slab.states[0].u.curlym.A' => 4, 'regmatch_slab.states[0].u.curlym.B' => 4, 'regmatch_slab.states[0].u.curlym.alen' => 4, 'regmatch_slab.states[0].u.curlym.c1' => 4, 'regmatch_slab.states[0].u.curlym.c2' => 4, 'regmatch_slab.states[0].u.curlym.count' => 4, 'regmatch_slab.states[0].u.curlym.cp' => 4, 'regmatch_slab.states[0].u.curlym.me' => 4, 'regmatch_slab.states[0].u.curlym.minmod' => 1, 'regmatch_slab.states[0].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[0].u.curlyx' => 41, 'regmatch_slab.states[0].u.curlyx.A' => 4, 'regmatch_slab.states[0].u.curlyx.B' => 4, 'regmatch_slab.states[0].u.curlyx.count' => 4, 'regmatch_slab.states[0].u.curlyx.cp' => 4, 'regmatch_slab.states[0].u.curlyx.lastloc' => 4, 'regmatch_slab.states[0].u.curlyx.max' => 4, 'regmatch_slab.states[0].u.curlyx.min' => 4, 'regmatch_slab.states[0].u.curlyx.minmod' => 1, 'regmatch_slab.states[0].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[0].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[0].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[0].u.eval' => 36, 'regmatch_slab.states[0].u.eval.B' => 4, 'regmatch_slab.states[0].u.eval.close_paren' => 4, 'regmatch_slab.states[0].u.eval.cp' => 4, 'regmatch_slab.states[0].u.eval.lastcp' => 4, 'regmatch_slab.states[0].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[0].u.eval.prev_eval' => 4, 'regmatch_slab.states[0].u.eval.prev_rex' => 4, 'regmatch_slab.states[0].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[0].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[0].u.ifmatch' => 16, 'regmatch_slab.states[0].u.ifmatch.logical' => 4, 'regmatch_slab.states[0].u.ifmatch.me' => 4, 'regmatch_slab.states[0].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[0].u.ifmatch.wanted' => 4, 'regmatch_slab.states[0].u.trie' => 20, 'regmatch_slab.states[0].u.trie.B' => 4, 'regmatch_slab.states[0].u.trie.accept_buff' => 4, 'regmatch_slab.states[0].u.trie.accepted' => 4, 'regmatch_slab.states[0].u.trie.jump' => 4, 'regmatch_slab.states[0].u.trie.me' => 4, 'regmatch_slab.states[0].u.whilem' => 28, 'regmatch_slab.states[0].u.whilem.cache_mask' => 4, 'regmatch_slab.states[0].u.whilem.cache_offset' => 4, 'regmatch_slab.states[0].u.whilem.cp' => 4, 'regmatch_slab.states[0].u.whilem.lastcp' => 4, 'regmatch_slab.states[0].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[0].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[0].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[0].u.yes' => 4, 'regmatch_slab.states[0].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[10]' => 52, 'regmatch_slab.states[10].locinput' => 4, 'regmatch_slab.states[10].resume_state' => 4, 'regmatch_slab.states[10].u' => 44, 'regmatch_slab.states[10].u.branch' => 12, 'regmatch_slab.states[10].u.branch.cp' => 4, 'regmatch_slab.states[10].u.branch.lastparen' => 4, 'regmatch_slab.states[10].u.branch.next_branch' => 4, 'regmatch_slab.states[10].u.curly' => 44, 'regmatch_slab.states[10].u.curly.A' => 4, 'regmatch_slab.states[10].u.curly.B' => 4, 'regmatch_slab.states[10].u.curly.c1' => 4, 'regmatch_slab.states[10].u.curly.c2' => 4, 'regmatch_slab.states[10].u.curly.count' => 4, 'regmatch_slab.states[10].u.curly.cp' => 4, 'regmatch_slab.states[10].u.curly.max' => 4, 'regmatch_slab.states[10].u.curly.maxpos' => 4, 'regmatch_slab.states[10].u.curly.min' => 4, 'regmatch_slab.states[10].u.curly.oldloc' => 4, 'regmatch_slab.states[10].u.curly.paren' => 4, 'regmatch_slab.states[10].u.curlym' => 37, 'regmatch_slab.states[10].u.curlym.A' => 4, 'regmatch_slab.states[10].u.curlym.B' => 4, 'regmatch_slab.states[10].u.curlym.alen' => 4, 'regmatch_slab.states[10].u.curlym.c1' => 4, 'regmatch_slab.states[10].u.curlym.c2' => 4, 'regmatch_slab.states[10].u.curlym.count' => 4, 'regmatch_slab.states[10].u.curlym.cp' => 4, 'regmatch_slab.states[10].u.curlym.me' => 4, 'regmatch_slab.states[10].u.curlym.minmod' => 1, 'regmatch_slab.states[10].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[10].u.curlyx' => 41, 'regmatch_slab.states[10].u.curlyx.A' => 4, 'regmatch_slab.states[10].u.curlyx.B' => 4, 'regmatch_slab.states[10].u.curlyx.count' => 4, 'regmatch_slab.states[10].u.curlyx.cp' => 4, 'regmatch_slab.states[10].u.curlyx.lastloc' => 4, 'regmatch_slab.states[10].u.curlyx.max' => 4, 'regmatch_slab.states[10].u.curlyx.min' => 4, 'regmatch_slab.states[10].u.curlyx.minmod' => 1, 'regmatch_slab.states[10].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[10].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[10].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[10].u.eval' => 36, 'regmatch_slab.states[10].u.eval.B' => 4, 'regmatch_slab.states[10].u.eval.close_paren' => 4, 'regmatch_slab.states[10].u.eval.cp' => 4, 'regmatch_slab.states[10].u.eval.lastcp' => 4, 'regmatch_slab.states[10].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[10].u.eval.prev_eval' => 4, 'regmatch_slab.states[10].u.eval.prev_rex' => 4, 'regmatch_slab.states[10].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[10].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[10].u.ifmatch' => 16, 'regmatch_slab.states[10].u.ifmatch.logical' => 4, 'regmatch_slab.states[10].u.ifmatch.me' => 4, 'regmatch_slab.states[10].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[10].u.ifmatch.wanted' => 4, 'regmatch_slab.states[10].u.trie' => 20, 'regmatch_slab.states[10].u.trie.B' => 4, 'regmatch_slab.states[10].u.trie.accept_buff' => 4, 'regmatch_slab.states[10].u.trie.accepted' => 4, 'regmatch_slab.states[10].u.trie.jump' => 4, 'regmatch_slab.states[10].u.trie.me' => 4, 'regmatch_slab.states[10].u.whilem' => 28, 'regmatch_slab.states[10].u.whilem.cache_mask' => 4, 'regmatch_slab.states[10].u.whilem.cache_offset' => 4, 'regmatch_slab.states[10].u.whilem.cp' => 4, 'regmatch_slab.states[10].u.whilem.lastcp' => 4, 'regmatch_slab.states[10].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[10].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[10].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[10].u.yes' => 4, 'regmatch_slab.states[10].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[11]' => 52, 'regmatch_slab.states[11].locinput' => 4, 'regmatch_slab.states[11].resume_state' => 4, 'regmatch_slab.states[11].u' => 44, 'regmatch_slab.states[11].u.branch' => 12, 'regmatch_slab.states[11].u.branch.cp' => 4, 'regmatch_slab.states[11].u.branch.lastparen' => 4, 'regmatch_slab.states[11].u.branch.next_branch' => 4, 'regmatch_slab.states[11].u.curly' => 44, 'regmatch_slab.states[11].u.curly.A' => 4, 'regmatch_slab.states[11].u.curly.B' => 4, 'regmatch_slab.states[11].u.curly.c1' => 4, 'regmatch_slab.states[11].u.curly.c2' => 4, 'regmatch_slab.states[11].u.curly.count' => 4, 'regmatch_slab.states[11].u.curly.cp' => 4, 'regmatch_slab.states[11].u.curly.max' => 4, 'regmatch_slab.states[11].u.curly.maxpos' => 4, 'regmatch_slab.states[11].u.curly.min' => 4, 'regmatch_slab.states[11].u.curly.oldloc' => 4, 'regmatch_slab.states[11].u.curly.paren' => 4, 'regmatch_slab.states[11].u.curlym' => 37, 'regmatch_slab.states[11].u.curlym.A' => 4, 'regmatch_slab.states[11].u.curlym.B' => 4, 'regmatch_slab.states[11].u.curlym.alen' => 4, 'regmatch_slab.states[11].u.curlym.c1' => 4, 'regmatch_slab.states[11].u.curlym.c2' => 4, 'regmatch_slab.states[11].u.curlym.count' => 4, 'regmatch_slab.states[11].u.curlym.cp' => 4, 'regmatch_slab.states[11].u.curlym.me' => 4, 'regmatch_slab.states[11].u.curlym.minmod' => 1, 'regmatch_slab.states[11].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[11].u.curlyx' => 41, 'regmatch_slab.states[11].u.curlyx.A' => 4, 'regmatch_slab.states[11].u.curlyx.B' => 4, 'regmatch_slab.states[11].u.curlyx.count' => 4, 'regmatch_slab.states[11].u.curlyx.cp' => 4, 'regmatch_slab.states[11].u.curlyx.lastloc' => 4, 'regmatch_slab.states[11].u.curlyx.max' => 4, 'regmatch_slab.states[11].u.curlyx.min' => 4, 'regmatch_slab.states[11].u.curlyx.minmod' => 1, 'regmatch_slab.states[11].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[11].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[11].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[11].u.eval' => 36, 'regmatch_slab.states[11].u.eval.B' => 4, 'regmatch_slab.states[11].u.eval.close_paren' => 4, 'regmatch_slab.states[11].u.eval.cp' => 4, 'regmatch_slab.states[11].u.eval.lastcp' => 4, 'regmatch_slab.states[11].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[11].u.eval.prev_eval' => 4, 'regmatch_slab.states[11].u.eval.prev_rex' => 4, 'regmatch_slab.states[11].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[11].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[11].u.ifmatch' => 16, 'regmatch_slab.states[11].u.ifmatch.logical' => 4, 'regmatch_slab.states[11].u.ifmatch.me' => 4, 'regmatch_slab.states[11].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[11].u.ifmatch.wanted' => 4, 'regmatch_slab.states[11].u.trie' => 20, 'regmatch_slab.states[11].u.trie.B' => 4, 'regmatch_slab.states[11].u.trie.accept_buff' => 4, 'regmatch_slab.states[11].u.trie.accepted' => 4, 'regmatch_slab.states[11].u.trie.jump' => 4, 'regmatch_slab.states[11].u.trie.me' => 4, 'regmatch_slab.states[11].u.whilem' => 28, 'regmatch_slab.states[11].u.whilem.cache_mask' => 4, 'regmatch_slab.states[11].u.whilem.cache_offset' => 4, 'regmatch_slab.states[11].u.whilem.cp' => 4, 'regmatch_slab.states[11].u.whilem.lastcp' => 4, 'regmatch_slab.states[11].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[11].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[11].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[11].u.yes' => 4, 'regmatch_slab.states[11].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[12]' => 52, 'regmatch_slab.states[12].locinput' => 4, 'regmatch_slab.states[12].resume_state' => 4, 'regmatch_slab.states[12].u' => 44, 'regmatch_slab.states[12].u.branch' => 12, 'regmatch_slab.states[12].u.branch.cp' => 4, 'regmatch_slab.states[12].u.branch.lastparen' => 4, 'regmatch_slab.states[12].u.branch.next_branch' => 4, 'regmatch_slab.states[12].u.curly' => 44, 'regmatch_slab.states[12].u.curly.A' => 4, 'regmatch_slab.states[12].u.curly.B' => 4, 'regmatch_slab.states[12].u.curly.c1' => 4, 'regmatch_slab.states[12].u.curly.c2' => 4, 'regmatch_slab.states[12].u.curly.count' => 4, 'regmatch_slab.states[12].u.curly.cp' => 4, 'regmatch_slab.states[12].u.curly.max' => 4, 'regmatch_slab.states[12].u.curly.maxpos' => 4, 'regmatch_slab.states[12].u.curly.min' => 4, 'regmatch_slab.states[12].u.curly.oldloc' => 4, 'regmatch_slab.states[12].u.curly.paren' => 4, 'regmatch_slab.states[12].u.curlym' => 37, 'regmatch_slab.states[12].u.curlym.A' => 4, 'regmatch_slab.states[12].u.curlym.B' => 4, 'regmatch_slab.states[12].u.curlym.alen' => 4, 'regmatch_slab.states[12].u.curlym.c1' => 4, 'regmatch_slab.states[12].u.curlym.c2' => 4, 'regmatch_slab.states[12].u.curlym.count' => 4, 'regmatch_slab.states[12].u.curlym.cp' => 4, 'regmatch_slab.states[12].u.curlym.me' => 4, 'regmatch_slab.states[12].u.curlym.minmod' => 1, 'regmatch_slab.states[12].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[12].u.curlyx' => 41, 'regmatch_slab.states[12].u.curlyx.A' => 4, 'regmatch_slab.states[12].u.curlyx.B' => 4, 'regmatch_slab.states[12].u.curlyx.count' => 4, 'regmatch_slab.states[12].u.curlyx.cp' => 4, 'regmatch_slab.states[12].u.curlyx.lastloc' => 4, 'regmatch_slab.states[12].u.curlyx.max' => 4, 'regmatch_slab.states[12].u.curlyx.min' => 4, 'regmatch_slab.states[12].u.curlyx.minmod' => 1, 'regmatch_slab.states[12].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[12].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[12].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[12].u.eval' => 36, 'regmatch_slab.states[12].u.eval.B' => 4, 'regmatch_slab.states[12].u.eval.close_paren' => 4, 'regmatch_slab.states[12].u.eval.cp' => 4, 'regmatch_slab.states[12].u.eval.lastcp' => 4, 'regmatch_slab.states[12].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[12].u.eval.prev_eval' => 4, 'regmatch_slab.states[12].u.eval.prev_rex' => 4, 'regmatch_slab.states[12].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[12].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[12].u.ifmatch' => 16, 'regmatch_slab.states[12].u.ifmatch.logical' => 4, 'regmatch_slab.states[12].u.ifmatch.me' => 4, 'regmatch_slab.states[12].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[12].u.ifmatch.wanted' => 4, 'regmatch_slab.states[12].u.trie' => 20, 'regmatch_slab.states[12].u.trie.B' => 4, 'regmatch_slab.states[12].u.trie.accept_buff' => 4, 'regmatch_slab.states[12].u.trie.accepted' => 4, 'regmatch_slab.states[12].u.trie.jump' => 4, 'regmatch_slab.states[12].u.trie.me' => 4, 'regmatch_slab.states[12].u.whilem' => 28, 'regmatch_slab.states[12].u.whilem.cache_mask' => 4, 'regmatch_slab.states[12].u.whilem.cache_offset' => 4, 'regmatch_slab.states[12].u.whilem.cp' => 4, 'regmatch_slab.states[12].u.whilem.lastcp' => 4, 'regmatch_slab.states[12].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[12].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[12].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[12].u.yes' => 4, 'regmatch_slab.states[12].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[13]' => 52, 'regmatch_slab.states[13].locinput' => 4, 'regmatch_slab.states[13].resume_state' => 4, 'regmatch_slab.states[13].u' => 44, 'regmatch_slab.states[13].u.branch' => 12, 'regmatch_slab.states[13].u.branch.cp' => 4, 'regmatch_slab.states[13].u.branch.lastparen' => 4, 'regmatch_slab.states[13].u.branch.next_branch' => 4, 'regmatch_slab.states[13].u.curly' => 44, 'regmatch_slab.states[13].u.curly.A' => 4, 'regmatch_slab.states[13].u.curly.B' => 4, 'regmatch_slab.states[13].u.curly.c1' => 4, 'regmatch_slab.states[13].u.curly.c2' => 4, 'regmatch_slab.states[13].u.curly.count' => 4, 'regmatch_slab.states[13].u.curly.cp' => 4, 'regmatch_slab.states[13].u.curly.max' => 4, 'regmatch_slab.states[13].u.curly.maxpos' => 4, 'regmatch_slab.states[13].u.curly.min' => 4, 'regmatch_slab.states[13].u.curly.oldloc' => 4, 'regmatch_slab.states[13].u.curly.paren' => 4, 'regmatch_slab.states[13].u.curlym' => 37, 'regmatch_slab.states[13].u.curlym.A' => 4, 'regmatch_slab.states[13].u.curlym.B' => 4, 'regmatch_slab.states[13].u.curlym.alen' => 4, 'regmatch_slab.states[13].u.curlym.c1' => 4, 'regmatch_slab.states[13].u.curlym.c2' => 4, 'regmatch_slab.states[13].u.curlym.count' => 4, 'regmatch_slab.states[13].u.curlym.cp' => 4, 'regmatch_slab.states[13].u.curlym.me' => 4, 'regmatch_slab.states[13].u.curlym.minmod' => 1, 'regmatch_slab.states[13].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[13].u.curlyx' => 41, 'regmatch_slab.states[13].u.curlyx.A' => 4, 'regmatch_slab.states[13].u.curlyx.B' => 4, 'regmatch_slab.states[13].u.curlyx.count' => 4, 'regmatch_slab.states[13].u.curlyx.cp' => 4, 'regmatch_slab.states[13].u.curlyx.lastloc' => 4, 'regmatch_slab.states[13].u.curlyx.max' => 4, 'regmatch_slab.states[13].u.curlyx.min' => 4, 'regmatch_slab.states[13].u.curlyx.minmod' => 1, 'regmatch_slab.states[13].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[13].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[13].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[13].u.eval' => 36, 'regmatch_slab.states[13].u.eval.B' => 4, 'regmatch_slab.states[13].u.eval.close_paren' => 4, 'regmatch_slab.states[13].u.eval.cp' => 4, 'regmatch_slab.states[13].u.eval.lastcp' => 4, 'regmatch_slab.states[13].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[13].u.eval.prev_eval' => 4, 'regmatch_slab.states[13].u.eval.prev_rex' => 4, 'regmatch_slab.states[13].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[13].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[13].u.ifmatch' => 16, 'regmatch_slab.states[13].u.ifmatch.logical' => 4, 'regmatch_slab.states[13].u.ifmatch.me' => 4, 'regmatch_slab.states[13].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[13].u.ifmatch.wanted' => 4, 'regmatch_slab.states[13].u.trie' => 20, 'regmatch_slab.states[13].u.trie.B' => 4, 'regmatch_slab.states[13].u.trie.accept_buff' => 4, 'regmatch_slab.states[13].u.trie.accepted' => 4, 'regmatch_slab.states[13].u.trie.jump' => 4, 'regmatch_slab.states[13].u.trie.me' => 4, 'regmatch_slab.states[13].u.whilem' => 28, 'regmatch_slab.states[13].u.whilem.cache_mask' => 4, 'regmatch_slab.states[13].u.whilem.cache_offset' => 4, 'regmatch_slab.states[13].u.whilem.cp' => 4, 'regmatch_slab.states[13].u.whilem.lastcp' => 4, 'regmatch_slab.states[13].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[13].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[13].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[13].u.yes' => 4, 'regmatch_slab.states[13].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[14]' => 52, 'regmatch_slab.states[14].locinput' => 4, 'regmatch_slab.states[14].resume_state' => 4, 'regmatch_slab.states[14].u' => 44, 'regmatch_slab.states[14].u.branch' => 12, 'regmatch_slab.states[14].u.branch.cp' => 4, 'regmatch_slab.states[14].u.branch.lastparen' => 4, 'regmatch_slab.states[14].u.branch.next_branch' => 4, 'regmatch_slab.states[14].u.curly' => 44, 'regmatch_slab.states[14].u.curly.A' => 4, 'regmatch_slab.states[14].u.curly.B' => 4, 'regmatch_slab.states[14].u.curly.c1' => 4, 'regmatch_slab.states[14].u.curly.c2' => 4, 'regmatch_slab.states[14].u.curly.count' => 4, 'regmatch_slab.states[14].u.curly.cp' => 4, 'regmatch_slab.states[14].u.curly.max' => 4, 'regmatch_slab.states[14].u.curly.maxpos' => 4, 'regmatch_slab.states[14].u.curly.min' => 4, 'regmatch_slab.states[14].u.curly.oldloc' => 4, 'regmatch_slab.states[14].u.curly.paren' => 4, 'regmatch_slab.states[14].u.curlym' => 37, 'regmatch_slab.states[14].u.curlym.A' => 4, 'regmatch_slab.states[14].u.curlym.B' => 4, 'regmatch_slab.states[14].u.curlym.alen' => 4, 'regmatch_slab.states[14].u.curlym.c1' => 4, 'regmatch_slab.states[14].u.curlym.c2' => 4, 'regmatch_slab.states[14].u.curlym.count' => 4, 'regmatch_slab.states[14].u.curlym.cp' => 4, 'regmatch_slab.states[14].u.curlym.me' => 4, 'regmatch_slab.states[14].u.curlym.minmod' => 1, 'regmatch_slab.states[14].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[14].u.curlyx' => 41, 'regmatch_slab.states[14].u.curlyx.A' => 4, 'regmatch_slab.states[14].u.curlyx.B' => 4, 'regmatch_slab.states[14].u.curlyx.count' => 4, 'regmatch_slab.states[14].u.curlyx.cp' => 4, 'regmatch_slab.states[14].u.curlyx.lastloc' => 4, 'regmatch_slab.states[14].u.curlyx.max' => 4, 'regmatch_slab.states[14].u.curlyx.min' => 4, 'regmatch_slab.states[14].u.curlyx.minmod' => 1, 'regmatch_slab.states[14].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[14].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[14].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[14].u.eval' => 36, 'regmatch_slab.states[14].u.eval.B' => 4, 'regmatch_slab.states[14].u.eval.close_paren' => 4, 'regmatch_slab.states[14].u.eval.cp' => 4, 'regmatch_slab.states[14].u.eval.lastcp' => 4, 'regmatch_slab.states[14].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[14].u.eval.prev_eval' => 4, 'regmatch_slab.states[14].u.eval.prev_rex' => 4, 'regmatch_slab.states[14].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[14].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[14].u.ifmatch' => 16, 'regmatch_slab.states[14].u.ifmatch.logical' => 4, 'regmatch_slab.states[14].u.ifmatch.me' => 4, 'regmatch_slab.states[14].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[14].u.ifmatch.wanted' => 4, 'regmatch_slab.states[14].u.trie' => 20, 'regmatch_slab.states[14].u.trie.B' => 4, 'regmatch_slab.states[14].u.trie.accept_buff' => 4, 'regmatch_slab.states[14].u.trie.accepted' => 4, 'regmatch_slab.states[14].u.trie.jump' => 4, 'regmatch_slab.states[14].u.trie.me' => 4, 'regmatch_slab.states[14].u.whilem' => 28, 'regmatch_slab.states[14].u.whilem.cache_mask' => 4, 'regmatch_slab.states[14].u.whilem.cache_offset' => 4, 'regmatch_slab.states[14].u.whilem.cp' => 4, 'regmatch_slab.states[14].u.whilem.lastcp' => 4, 'regmatch_slab.states[14].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[14].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[14].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[14].u.yes' => 4, 'regmatch_slab.states[14].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[15]' => 52, 'regmatch_slab.states[15].locinput' => 4, 'regmatch_slab.states[15].resume_state' => 4, 'regmatch_slab.states[15].u' => 44, 'regmatch_slab.states[15].u.branch' => 12, 'regmatch_slab.states[15].u.branch.cp' => 4, 'regmatch_slab.states[15].u.branch.lastparen' => 4, 'regmatch_slab.states[15].u.branch.next_branch' => 4, 'regmatch_slab.states[15].u.curly' => 44, 'regmatch_slab.states[15].u.curly.A' => 4, 'regmatch_slab.states[15].u.curly.B' => 4, 'regmatch_slab.states[15].u.curly.c1' => 4, 'regmatch_slab.states[15].u.curly.c2' => 4, 'regmatch_slab.states[15].u.curly.count' => 4, 'regmatch_slab.states[15].u.curly.cp' => 4, 'regmatch_slab.states[15].u.curly.max' => 4, 'regmatch_slab.states[15].u.curly.maxpos' => 4, 'regmatch_slab.states[15].u.curly.min' => 4, 'regmatch_slab.states[15].u.curly.oldloc' => 4, 'regmatch_slab.states[15].u.curly.paren' => 4, 'regmatch_slab.states[15].u.curlym' => 37, 'regmatch_slab.states[15].u.curlym.A' => 4, 'regmatch_slab.states[15].u.curlym.B' => 4, 'regmatch_slab.states[15].u.curlym.alen' => 4, 'regmatch_slab.states[15].u.curlym.c1' => 4, 'regmatch_slab.states[15].u.curlym.c2' => 4, 'regmatch_slab.states[15].u.curlym.count' => 4, 'regmatch_slab.states[15].u.curlym.cp' => 4, 'regmatch_slab.states[15].u.curlym.me' => 4, 'regmatch_slab.states[15].u.curlym.minmod' => 1, 'regmatch_slab.states[15].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[15].u.curlyx' => 41, 'regmatch_slab.states[15].u.curlyx.A' => 4, 'regmatch_slab.states[15].u.curlyx.B' => 4, 'regmatch_slab.states[15].u.curlyx.count' => 4, 'regmatch_slab.states[15].u.curlyx.cp' => 4, 'regmatch_slab.states[15].u.curlyx.lastloc' => 4, 'regmatch_slab.states[15].u.curlyx.max' => 4, 'regmatch_slab.states[15].u.curlyx.min' => 4, 'regmatch_slab.states[15].u.curlyx.minmod' => 1, 'regmatch_slab.states[15].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[15].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[15].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[15].u.eval' => 36, 'regmatch_slab.states[15].u.eval.B' => 4, 'regmatch_slab.states[15].u.eval.close_paren' => 4, 'regmatch_slab.states[15].u.eval.cp' => 4, 'regmatch_slab.states[15].u.eval.lastcp' => 4, 'regmatch_slab.states[15].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[15].u.eval.prev_eval' => 4, 'regmatch_slab.states[15].u.eval.prev_rex' => 4, 'regmatch_slab.states[15].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[15].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[15].u.ifmatch' => 16, 'regmatch_slab.states[15].u.ifmatch.logical' => 4, 'regmatch_slab.states[15].u.ifmatch.me' => 4, 'regmatch_slab.states[15].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[15].u.ifmatch.wanted' => 4, 'regmatch_slab.states[15].u.trie' => 20, 'regmatch_slab.states[15].u.trie.B' => 4, 'regmatch_slab.states[15].u.trie.accept_buff' => 4, 'regmatch_slab.states[15].u.trie.accepted' => 4, 'regmatch_slab.states[15].u.trie.jump' => 4, 'regmatch_slab.states[15].u.trie.me' => 4, 'regmatch_slab.states[15].u.whilem' => 28, 'regmatch_slab.states[15].u.whilem.cache_mask' => 4, 'regmatch_slab.states[15].u.whilem.cache_offset' => 4, 'regmatch_slab.states[15].u.whilem.cp' => 4, 'regmatch_slab.states[15].u.whilem.lastcp' => 4, 'regmatch_slab.states[15].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[15].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[15].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[15].u.yes' => 4, 'regmatch_slab.states[15].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[16]' => 52, 'regmatch_slab.states[16].locinput' => 4, 'regmatch_slab.states[16].resume_state' => 4, 'regmatch_slab.states[16].u' => 44, 'regmatch_slab.states[16].u.branch' => 12, 'regmatch_slab.states[16].u.branch.cp' => 4, 'regmatch_slab.states[16].u.branch.lastparen' => 4, 'regmatch_slab.states[16].u.branch.next_branch' => 4, 'regmatch_slab.states[16].u.curly' => 44, 'regmatch_slab.states[16].u.curly.A' => 4, 'regmatch_slab.states[16].u.curly.B' => 4, 'regmatch_slab.states[16].u.curly.c1' => 4, 'regmatch_slab.states[16].u.curly.c2' => 4, 'regmatch_slab.states[16].u.curly.count' => 4, 'regmatch_slab.states[16].u.curly.cp' => 4, 'regmatch_slab.states[16].u.curly.max' => 4, 'regmatch_slab.states[16].u.curly.maxpos' => 4, 'regmatch_slab.states[16].u.curly.min' => 4, 'regmatch_slab.states[16].u.curly.oldloc' => 4, 'regmatch_slab.states[16].u.curly.paren' => 4, 'regmatch_slab.states[16].u.curlym' => 37, 'regmatch_slab.states[16].u.curlym.A' => 4, 'regmatch_slab.states[16].u.curlym.B' => 4, 'regmatch_slab.states[16].u.curlym.alen' => 4, 'regmatch_slab.states[16].u.curlym.c1' => 4, 'regmatch_slab.states[16].u.curlym.c2' => 4, 'regmatch_slab.states[16].u.curlym.count' => 4, 'regmatch_slab.states[16].u.curlym.cp' => 4, 'regmatch_slab.states[16].u.curlym.me' => 4, 'regmatch_slab.states[16].u.curlym.minmod' => 1, 'regmatch_slab.states[16].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[16].u.curlyx' => 41, 'regmatch_slab.states[16].u.curlyx.A' => 4, 'regmatch_slab.states[16].u.curlyx.B' => 4, 'regmatch_slab.states[16].u.curlyx.count' => 4, 'regmatch_slab.states[16].u.curlyx.cp' => 4, 'regmatch_slab.states[16].u.curlyx.lastloc' => 4, 'regmatch_slab.states[16].u.curlyx.max' => 4, 'regmatch_slab.states[16].u.curlyx.min' => 4, 'regmatch_slab.states[16].u.curlyx.minmod' => 1, 'regmatch_slab.states[16].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[16].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[16].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[16].u.eval' => 36, 'regmatch_slab.states[16].u.eval.B' => 4, 'regmatch_slab.states[16].u.eval.close_paren' => 4, 'regmatch_slab.states[16].u.eval.cp' => 4, 'regmatch_slab.states[16].u.eval.lastcp' => 4, 'regmatch_slab.states[16].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[16].u.eval.prev_eval' => 4, 'regmatch_slab.states[16].u.eval.prev_rex' => 4, 'regmatch_slab.states[16].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[16].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[16].u.ifmatch' => 16, 'regmatch_slab.states[16].u.ifmatch.logical' => 4, 'regmatch_slab.states[16].u.ifmatch.me' => 4, 'regmatch_slab.states[16].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[16].u.ifmatch.wanted' => 4, 'regmatch_slab.states[16].u.trie' => 20, 'regmatch_slab.states[16].u.trie.B' => 4, 'regmatch_slab.states[16].u.trie.accept_buff' => 4, 'regmatch_slab.states[16].u.trie.accepted' => 4, 'regmatch_slab.states[16].u.trie.jump' => 4, 'regmatch_slab.states[16].u.trie.me' => 4, 'regmatch_slab.states[16].u.whilem' => 28, 'regmatch_slab.states[16].u.whilem.cache_mask' => 4, 'regmatch_slab.states[16].u.whilem.cache_offset' => 4, 'regmatch_slab.states[16].u.whilem.cp' => 4, 'regmatch_slab.states[16].u.whilem.lastcp' => 4, 'regmatch_slab.states[16].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[16].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[16].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[16].u.yes' => 4, 'regmatch_slab.states[16].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[17]' => 52, 'regmatch_slab.states[17].locinput' => 4, 'regmatch_slab.states[17].resume_state' => 4, 'regmatch_slab.states[17].u' => 44, 'regmatch_slab.states[17].u.branch' => 12, 'regmatch_slab.states[17].u.branch.cp' => 4, 'regmatch_slab.states[17].u.branch.lastparen' => 4, 'regmatch_slab.states[17].u.branch.next_branch' => 4, 'regmatch_slab.states[17].u.curly' => 44, 'regmatch_slab.states[17].u.curly.A' => 4, 'regmatch_slab.states[17].u.curly.B' => 4, 'regmatch_slab.states[17].u.curly.c1' => 4, 'regmatch_slab.states[17].u.curly.c2' => 4, 'regmatch_slab.states[17].u.curly.count' => 4, 'regmatch_slab.states[17].u.curly.cp' => 4, 'regmatch_slab.states[17].u.curly.max' => 4, 'regmatch_slab.states[17].u.curly.maxpos' => 4, 'regmatch_slab.states[17].u.curly.min' => 4, 'regmatch_slab.states[17].u.curly.oldloc' => 4, 'regmatch_slab.states[17].u.curly.paren' => 4, 'regmatch_slab.states[17].u.curlym' => 37, 'regmatch_slab.states[17].u.curlym.A' => 4, 'regmatch_slab.states[17].u.curlym.B' => 4, 'regmatch_slab.states[17].u.curlym.alen' => 4, 'regmatch_slab.states[17].u.curlym.c1' => 4, 'regmatch_slab.states[17].u.curlym.c2' => 4, 'regmatch_slab.states[17].u.curlym.count' => 4, 'regmatch_slab.states[17].u.curlym.cp' => 4, 'regmatch_slab.states[17].u.curlym.me' => 4, 'regmatch_slab.states[17].u.curlym.minmod' => 1, 'regmatch_slab.states[17].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[17].u.curlyx' => 41, 'regmatch_slab.states[17].u.curlyx.A' => 4, 'regmatch_slab.states[17].u.curlyx.B' => 4, 'regmatch_slab.states[17].u.curlyx.count' => 4, 'regmatch_slab.states[17].u.curlyx.cp' => 4, 'regmatch_slab.states[17].u.curlyx.lastloc' => 4, 'regmatch_slab.states[17].u.curlyx.max' => 4, 'regmatch_slab.states[17].u.curlyx.min' => 4, 'regmatch_slab.states[17].u.curlyx.minmod' => 1, 'regmatch_slab.states[17].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[17].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[17].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[17].u.eval' => 36, 'regmatch_slab.states[17].u.eval.B' => 4, 'regmatch_slab.states[17].u.eval.close_paren' => 4, 'regmatch_slab.states[17].u.eval.cp' => 4, 'regmatch_slab.states[17].u.eval.lastcp' => 4, 'regmatch_slab.states[17].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[17].u.eval.prev_eval' => 4, 'regmatch_slab.states[17].u.eval.prev_rex' => 4, 'regmatch_slab.states[17].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[17].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[17].u.ifmatch' => 16, 'regmatch_slab.states[17].u.ifmatch.logical' => 4, 'regmatch_slab.states[17].u.ifmatch.me' => 4, 'regmatch_slab.states[17].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[17].u.ifmatch.wanted' => 4, 'regmatch_slab.states[17].u.trie' => 20, 'regmatch_slab.states[17].u.trie.B' => 4, 'regmatch_slab.states[17].u.trie.accept_buff' => 4, 'regmatch_slab.states[17].u.trie.accepted' => 4, 'regmatch_slab.states[17].u.trie.jump' => 4, 'regmatch_slab.states[17].u.trie.me' => 4, 'regmatch_slab.states[17].u.whilem' => 28, 'regmatch_slab.states[17].u.whilem.cache_mask' => 4, 'regmatch_slab.states[17].u.whilem.cache_offset' => 4, 'regmatch_slab.states[17].u.whilem.cp' => 4, 'regmatch_slab.states[17].u.whilem.lastcp' => 4, 'regmatch_slab.states[17].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[17].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[17].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[17].u.yes' => 4, 'regmatch_slab.states[17].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[18]' => 52, 'regmatch_slab.states[18].locinput' => 4, 'regmatch_slab.states[18].resume_state' => 4, 'regmatch_slab.states[18].u' => 44, 'regmatch_slab.states[18].u.branch' => 12, 'regmatch_slab.states[18].u.branch.cp' => 4, 'regmatch_slab.states[18].u.branch.lastparen' => 4, 'regmatch_slab.states[18].u.branch.next_branch' => 4, 'regmatch_slab.states[18].u.curly' => 44, 'regmatch_slab.states[18].u.curly.A' => 4, 'regmatch_slab.states[18].u.curly.B' => 4, 'regmatch_slab.states[18].u.curly.c1' => 4, 'regmatch_slab.states[18].u.curly.c2' => 4, 'regmatch_slab.states[18].u.curly.count' => 4, 'regmatch_slab.states[18].u.curly.cp' => 4, 'regmatch_slab.states[18].u.curly.max' => 4, 'regmatch_slab.states[18].u.curly.maxpos' => 4, 'regmatch_slab.states[18].u.curly.min' => 4, 'regmatch_slab.states[18].u.curly.oldloc' => 4, 'regmatch_slab.states[18].u.curly.paren' => 4, 'regmatch_slab.states[18].u.curlym' => 37, 'regmatch_slab.states[18].u.curlym.A' => 4, 'regmatch_slab.states[18].u.curlym.B' => 4, 'regmatch_slab.states[18].u.curlym.alen' => 4, 'regmatch_slab.states[18].u.curlym.c1' => 4, 'regmatch_slab.states[18].u.curlym.c2' => 4, 'regmatch_slab.states[18].u.curlym.count' => 4, 'regmatch_slab.states[18].u.curlym.cp' => 4, 'regmatch_slab.states[18].u.curlym.me' => 4, 'regmatch_slab.states[18].u.curlym.minmod' => 1, 'regmatch_slab.states[18].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[18].u.curlyx' => 41, 'regmatch_slab.states[18].u.curlyx.A' => 4, 'regmatch_slab.states[18].u.curlyx.B' => 4, 'regmatch_slab.states[18].u.curlyx.count' => 4, 'regmatch_slab.states[18].u.curlyx.cp' => 4, 'regmatch_slab.states[18].u.curlyx.lastloc' => 4, 'regmatch_slab.states[18].u.curlyx.max' => 4, 'regmatch_slab.states[18].u.curlyx.min' => 4, 'regmatch_slab.states[18].u.curlyx.minmod' => 1, 'regmatch_slab.states[18].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[18].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[18].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[18].u.eval' => 36, 'regmatch_slab.states[18].u.eval.B' => 4, 'regmatch_slab.states[18].u.eval.close_paren' => 4, 'regmatch_slab.states[18].u.eval.cp' => 4, 'regmatch_slab.states[18].u.eval.lastcp' => 4, 'regmatch_slab.states[18].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[18].u.eval.prev_eval' => 4, 'regmatch_slab.states[18].u.eval.prev_rex' => 4, 'regmatch_slab.states[18].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[18].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[18].u.ifmatch' => 16, 'regmatch_slab.states[18].u.ifmatch.logical' => 4, 'regmatch_slab.states[18].u.ifmatch.me' => 4, 'regmatch_slab.states[18].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[18].u.ifmatch.wanted' => 4, 'regmatch_slab.states[18].u.trie' => 20, 'regmatch_slab.states[18].u.trie.B' => 4, 'regmatch_slab.states[18].u.trie.accept_buff' => 4, 'regmatch_slab.states[18].u.trie.accepted' => 4, 'regmatch_slab.states[18].u.trie.jump' => 4, 'regmatch_slab.states[18].u.trie.me' => 4, 'regmatch_slab.states[18].u.whilem' => 28, 'regmatch_slab.states[18].u.whilem.cache_mask' => 4, 'regmatch_slab.states[18].u.whilem.cache_offset' => 4, 'regmatch_slab.states[18].u.whilem.cp' => 4, 'regmatch_slab.states[18].u.whilem.lastcp' => 4, 'regmatch_slab.states[18].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[18].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[18].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[18].u.yes' => 4, 'regmatch_slab.states[18].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[19]' => 52, 'regmatch_slab.states[19].locinput' => 4, 'regmatch_slab.states[19].resume_state' => 4, 'regmatch_slab.states[19].u' => 44, 'regmatch_slab.states[19].u.branch' => 12, 'regmatch_slab.states[19].u.branch.cp' => 4, 'regmatch_slab.states[19].u.branch.lastparen' => 4, 'regmatch_slab.states[19].u.branch.next_branch' => 4, 'regmatch_slab.states[19].u.curly' => 44, 'regmatch_slab.states[19].u.curly.A' => 4, 'regmatch_slab.states[19].u.curly.B' => 4, 'regmatch_slab.states[19].u.curly.c1' => 4, 'regmatch_slab.states[19].u.curly.c2' => 4, 'regmatch_slab.states[19].u.curly.count' => 4, 'regmatch_slab.states[19].u.curly.cp' => 4, 'regmatch_slab.states[19].u.curly.max' => 4, 'regmatch_slab.states[19].u.curly.maxpos' => 4, 'regmatch_slab.states[19].u.curly.min' => 4, 'regmatch_slab.states[19].u.curly.oldloc' => 4, 'regmatch_slab.states[19].u.curly.paren' => 4, 'regmatch_slab.states[19].u.curlym' => 37, 'regmatch_slab.states[19].u.curlym.A' => 4, 'regmatch_slab.states[19].u.curlym.B' => 4, 'regmatch_slab.states[19].u.curlym.alen' => 4, 'regmatch_slab.states[19].u.curlym.c1' => 4, 'regmatch_slab.states[19].u.curlym.c2' => 4, 'regmatch_slab.states[19].u.curlym.count' => 4, 'regmatch_slab.states[19].u.curlym.cp' => 4, 'regmatch_slab.states[19].u.curlym.me' => 4, 'regmatch_slab.states[19].u.curlym.minmod' => 1, 'regmatch_slab.states[19].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[19].u.curlyx' => 41, 'regmatch_slab.states[19].u.curlyx.A' => 4, 'regmatch_slab.states[19].u.curlyx.B' => 4, 'regmatch_slab.states[19].u.curlyx.count' => 4, 'regmatch_slab.states[19].u.curlyx.cp' => 4, 'regmatch_slab.states[19].u.curlyx.lastloc' => 4, 'regmatch_slab.states[19].u.curlyx.max' => 4, 'regmatch_slab.states[19].u.curlyx.min' => 4, 'regmatch_slab.states[19].u.curlyx.minmod' => 1, 'regmatch_slab.states[19].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[19].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[19].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[19].u.eval' => 36, 'regmatch_slab.states[19].u.eval.B' => 4, 'regmatch_slab.states[19].u.eval.close_paren' => 4, 'regmatch_slab.states[19].u.eval.cp' => 4, 'regmatch_slab.states[19].u.eval.lastcp' => 4, 'regmatch_slab.states[19].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[19].u.eval.prev_eval' => 4, 'regmatch_slab.states[19].u.eval.prev_rex' => 4, 'regmatch_slab.states[19].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[19].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[19].u.ifmatch' => 16, 'regmatch_slab.states[19].u.ifmatch.logical' => 4, 'regmatch_slab.states[19].u.ifmatch.me' => 4, 'regmatch_slab.states[19].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[19].u.ifmatch.wanted' => 4, 'regmatch_slab.states[19].u.trie' => 20, 'regmatch_slab.states[19].u.trie.B' => 4, 'regmatch_slab.states[19].u.trie.accept_buff' => 4, 'regmatch_slab.states[19].u.trie.accepted' => 4, 'regmatch_slab.states[19].u.trie.jump' => 4, 'regmatch_slab.states[19].u.trie.me' => 4, 'regmatch_slab.states[19].u.whilem' => 28, 'regmatch_slab.states[19].u.whilem.cache_mask' => 4, 'regmatch_slab.states[19].u.whilem.cache_offset' => 4, 'regmatch_slab.states[19].u.whilem.cp' => 4, 'regmatch_slab.states[19].u.whilem.lastcp' => 4, 'regmatch_slab.states[19].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[19].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[19].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[19].u.yes' => 4, 'regmatch_slab.states[19].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[1]' => 52, 'regmatch_slab.states[1].locinput' => 4, 'regmatch_slab.states[1].resume_state' => 4, 'regmatch_slab.states[1].u' => 44, 'regmatch_slab.states[1].u.branch' => 12, 'regmatch_slab.states[1].u.branch.cp' => 4, 'regmatch_slab.states[1].u.branch.lastparen' => 4, 'regmatch_slab.states[1].u.branch.next_branch' => 4, 'regmatch_slab.states[1].u.curly' => 44, 'regmatch_slab.states[1].u.curly.A' => 4, 'regmatch_slab.states[1].u.curly.B' => 4, 'regmatch_slab.states[1].u.curly.c1' => 4, 'regmatch_slab.states[1].u.curly.c2' => 4, 'regmatch_slab.states[1].u.curly.count' => 4, 'regmatch_slab.states[1].u.curly.cp' => 4, 'regmatch_slab.states[1].u.curly.max' => 4, 'regmatch_slab.states[1].u.curly.maxpos' => 4, 'regmatch_slab.states[1].u.curly.min' => 4, 'regmatch_slab.states[1].u.curly.oldloc' => 4, 'regmatch_slab.states[1].u.curly.paren' => 4, 'regmatch_slab.states[1].u.curlym' => 37, 'regmatch_slab.states[1].u.curlym.A' => 4, 'regmatch_slab.states[1].u.curlym.B' => 4, 'regmatch_slab.states[1].u.curlym.alen' => 4, 'regmatch_slab.states[1].u.curlym.c1' => 4, 'regmatch_slab.states[1].u.curlym.c2' => 4, 'regmatch_slab.states[1].u.curlym.count' => 4, 'regmatch_slab.states[1].u.curlym.cp' => 4, 'regmatch_slab.states[1].u.curlym.me' => 4, 'regmatch_slab.states[1].u.curlym.minmod' => 1, 'regmatch_slab.states[1].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[1].u.curlyx' => 41, 'regmatch_slab.states[1].u.curlyx.A' => 4, 'regmatch_slab.states[1].u.curlyx.B' => 4, 'regmatch_slab.states[1].u.curlyx.count' => 4, 'regmatch_slab.states[1].u.curlyx.cp' => 4, 'regmatch_slab.states[1].u.curlyx.lastloc' => 4, 'regmatch_slab.states[1].u.curlyx.max' => 4, 'regmatch_slab.states[1].u.curlyx.min' => 4, 'regmatch_slab.states[1].u.curlyx.minmod' => 1, 'regmatch_slab.states[1].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[1].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[1].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[1].u.eval' => 36, 'regmatch_slab.states[1].u.eval.B' => 4, 'regmatch_slab.states[1].u.eval.close_paren' => 4, 'regmatch_slab.states[1].u.eval.cp' => 4, 'regmatch_slab.states[1].u.eval.lastcp' => 4, 'regmatch_slab.states[1].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[1].u.eval.prev_eval' => 4, 'regmatch_slab.states[1].u.eval.prev_rex' => 4, 'regmatch_slab.states[1].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[1].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[1].u.ifmatch' => 16, 'regmatch_slab.states[1].u.ifmatch.logical' => 4, 'regmatch_slab.states[1].u.ifmatch.me' => 4, 'regmatch_slab.states[1].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[1].u.ifmatch.wanted' => 4, 'regmatch_slab.states[1].u.trie' => 20, 'regmatch_slab.states[1].u.trie.B' => 4, 'regmatch_slab.states[1].u.trie.accept_buff' => 4, 'regmatch_slab.states[1].u.trie.accepted' => 4, 'regmatch_slab.states[1].u.trie.jump' => 4, 'regmatch_slab.states[1].u.trie.me' => 4, 'regmatch_slab.states[1].u.whilem' => 28, 'regmatch_slab.states[1].u.whilem.cache_mask' => 4, 'regmatch_slab.states[1].u.whilem.cache_offset' => 4, 'regmatch_slab.states[1].u.whilem.cp' => 4, 'regmatch_slab.states[1].u.whilem.lastcp' => 4, 'regmatch_slab.states[1].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[1].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[1].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[1].u.yes' => 4, 'regmatch_slab.states[1].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[20]' => 52, 'regmatch_slab.states[20].locinput' => 4, 'regmatch_slab.states[20].resume_state' => 4, 'regmatch_slab.states[20].u' => 44, 'regmatch_slab.states[20].u.branch' => 12, 'regmatch_slab.states[20].u.branch.cp' => 4, 'regmatch_slab.states[20].u.branch.lastparen' => 4, 'regmatch_slab.states[20].u.branch.next_branch' => 4, 'regmatch_slab.states[20].u.curly' => 44, 'regmatch_slab.states[20].u.curly.A' => 4, 'regmatch_slab.states[20].u.curly.B' => 4, 'regmatch_slab.states[20].u.curly.c1' => 4, 'regmatch_slab.states[20].u.curly.c2' => 4, 'regmatch_slab.states[20].u.curly.count' => 4, 'regmatch_slab.states[20].u.curly.cp' => 4, 'regmatch_slab.states[20].u.curly.max' => 4, 'regmatch_slab.states[20].u.curly.maxpos' => 4, 'regmatch_slab.states[20].u.curly.min' => 4, 'regmatch_slab.states[20].u.curly.oldloc' => 4, 'regmatch_slab.states[20].u.curly.paren' => 4, 'regmatch_slab.states[20].u.curlym' => 37, 'regmatch_slab.states[20].u.curlym.A' => 4, 'regmatch_slab.states[20].u.curlym.B' => 4, 'regmatch_slab.states[20].u.curlym.alen' => 4, 'regmatch_slab.states[20].u.curlym.c1' => 4, 'regmatch_slab.states[20].u.curlym.c2' => 4, 'regmatch_slab.states[20].u.curlym.count' => 4, 'regmatch_slab.states[20].u.curlym.cp' => 4, 'regmatch_slab.states[20].u.curlym.me' => 4, 'regmatch_slab.states[20].u.curlym.minmod' => 1, 'regmatch_slab.states[20].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[20].u.curlyx' => 41, 'regmatch_slab.states[20].u.curlyx.A' => 4, 'regmatch_slab.states[20].u.curlyx.B' => 4, 'regmatch_slab.states[20].u.curlyx.count' => 4, 'regmatch_slab.states[20].u.curlyx.cp' => 4, 'regmatch_slab.states[20].u.curlyx.lastloc' => 4, 'regmatch_slab.states[20].u.curlyx.max' => 4, 'regmatch_slab.states[20].u.curlyx.min' => 4, 'regmatch_slab.states[20].u.curlyx.minmod' => 1, 'regmatch_slab.states[20].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[20].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[20].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[20].u.eval' => 36, 'regmatch_slab.states[20].u.eval.B' => 4, 'regmatch_slab.states[20].u.eval.close_paren' => 4, 'regmatch_slab.states[20].u.eval.cp' => 4, 'regmatch_slab.states[20].u.eval.lastcp' => 4, 'regmatch_slab.states[20].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[20].u.eval.prev_eval' => 4, 'regmatch_slab.states[20].u.eval.prev_rex' => 4, 'regmatch_slab.states[20].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[20].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[20].u.ifmatch' => 16, 'regmatch_slab.states[20].u.ifmatch.logical' => 4, 'regmatch_slab.states[20].u.ifmatch.me' => 4, 'regmatch_slab.states[20].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[20].u.ifmatch.wanted' => 4, 'regmatch_slab.states[20].u.trie' => 20, 'regmatch_slab.states[20].u.trie.B' => 4, 'regmatch_slab.states[20].u.trie.accept_buff' => 4, 'regmatch_slab.states[20].u.trie.accepted' => 4, 'regmatch_slab.states[20].u.trie.jump' => 4, 'regmatch_slab.states[20].u.trie.me' => 4, 'regmatch_slab.states[20].u.whilem' => 28, 'regmatch_slab.states[20].u.whilem.cache_mask' => 4, 'regmatch_slab.states[20].u.whilem.cache_offset' => 4, 'regmatch_slab.states[20].u.whilem.cp' => 4, 'regmatch_slab.states[20].u.whilem.lastcp' => 4, 'regmatch_slab.states[20].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[20].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[20].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[20].u.yes' => 4, 'regmatch_slab.states[20].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[21]' => 52, 'regmatch_slab.states[21].locinput' => 4, 'regmatch_slab.states[21].resume_state' => 4, 'regmatch_slab.states[21].u' => 44, 'regmatch_slab.states[21].u.branch' => 12, 'regmatch_slab.states[21].u.branch.cp' => 4, 'regmatch_slab.states[21].u.branch.lastparen' => 4, 'regmatch_slab.states[21].u.branch.next_branch' => 4, 'regmatch_slab.states[21].u.curly' => 44, 'regmatch_slab.states[21].u.curly.A' => 4, 'regmatch_slab.states[21].u.curly.B' => 4, 'regmatch_slab.states[21].u.curly.c1' => 4, 'regmatch_slab.states[21].u.curly.c2' => 4, 'regmatch_slab.states[21].u.curly.count' => 4, 'regmatch_slab.states[21].u.curly.cp' => 4, 'regmatch_slab.states[21].u.curly.max' => 4, 'regmatch_slab.states[21].u.curly.maxpos' => 4, 'regmatch_slab.states[21].u.curly.min' => 4, 'regmatch_slab.states[21].u.curly.oldloc' => 4, 'regmatch_slab.states[21].u.curly.paren' => 4, 'regmatch_slab.states[21].u.curlym' => 37, 'regmatch_slab.states[21].u.curlym.A' => 4, 'regmatch_slab.states[21].u.curlym.B' => 4, 'regmatch_slab.states[21].u.curlym.alen' => 4, 'regmatch_slab.states[21].u.curlym.c1' => 4, 'regmatch_slab.states[21].u.curlym.c2' => 4, 'regmatch_slab.states[21].u.curlym.count' => 4, 'regmatch_slab.states[21].u.curlym.cp' => 4, 'regmatch_slab.states[21].u.curlym.me' => 4, 'regmatch_slab.states[21].u.curlym.minmod' => 1, 'regmatch_slab.states[21].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[21].u.curlyx' => 41, 'regmatch_slab.states[21].u.curlyx.A' => 4, 'regmatch_slab.states[21].u.curlyx.B' => 4, 'regmatch_slab.states[21].u.curlyx.count' => 4, 'regmatch_slab.states[21].u.curlyx.cp' => 4, 'regmatch_slab.states[21].u.curlyx.lastloc' => 4, 'regmatch_slab.states[21].u.curlyx.max' => 4, 'regmatch_slab.states[21].u.curlyx.min' => 4, 'regmatch_slab.states[21].u.curlyx.minmod' => 1, 'regmatch_slab.states[21].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[21].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[21].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[21].u.eval' => 36, 'regmatch_slab.states[21].u.eval.B' => 4, 'regmatch_slab.states[21].u.eval.close_paren' => 4, 'regmatch_slab.states[21].u.eval.cp' => 4, 'regmatch_slab.states[21].u.eval.lastcp' => 4, 'regmatch_slab.states[21].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[21].u.eval.prev_eval' => 4, 'regmatch_slab.states[21].u.eval.prev_rex' => 4, 'regmatch_slab.states[21].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[21].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[21].u.ifmatch' => 16, 'regmatch_slab.states[21].u.ifmatch.logical' => 4, 'regmatch_slab.states[21].u.ifmatch.me' => 4, 'regmatch_slab.states[21].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[21].u.ifmatch.wanted' => 4, 'regmatch_slab.states[21].u.trie' => 20, 'regmatch_slab.states[21].u.trie.B' => 4, 'regmatch_slab.states[21].u.trie.accept_buff' => 4, 'regmatch_slab.states[21].u.trie.accepted' => 4, 'regmatch_slab.states[21].u.trie.jump' => 4, 'regmatch_slab.states[21].u.trie.me' => 4, 'regmatch_slab.states[21].u.whilem' => 28, 'regmatch_slab.states[21].u.whilem.cache_mask' => 4, 'regmatch_slab.states[21].u.whilem.cache_offset' => 4, 'regmatch_slab.states[21].u.whilem.cp' => 4, 'regmatch_slab.states[21].u.whilem.lastcp' => 4, 'regmatch_slab.states[21].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[21].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[21].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[21].u.yes' => 4, 'regmatch_slab.states[21].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[22]' => 52, 'regmatch_slab.states[22].locinput' => 4, 'regmatch_slab.states[22].resume_state' => 4, 'regmatch_slab.states[22].u' => 44, 'regmatch_slab.states[22].u.branch' => 12, 'regmatch_slab.states[22].u.branch.cp' => 4, 'regmatch_slab.states[22].u.branch.lastparen' => 4, 'regmatch_slab.states[22].u.branch.next_branch' => 4, 'regmatch_slab.states[22].u.curly' => 44, 'regmatch_slab.states[22].u.curly.A' => 4, 'regmatch_slab.states[22].u.curly.B' => 4, 'regmatch_slab.states[22].u.curly.c1' => 4, 'regmatch_slab.states[22].u.curly.c2' => 4, 'regmatch_slab.states[22].u.curly.count' => 4, 'regmatch_slab.states[22].u.curly.cp' => 4, 'regmatch_slab.states[22].u.curly.max' => 4, 'regmatch_slab.states[22].u.curly.maxpos' => 4, 'regmatch_slab.states[22].u.curly.min' => 4, 'regmatch_slab.states[22].u.curly.oldloc' => 4, 'regmatch_slab.states[22].u.curly.paren' => 4, 'regmatch_slab.states[22].u.curlym' => 37, 'regmatch_slab.states[22].u.curlym.A' => 4, 'regmatch_slab.states[22].u.curlym.B' => 4, 'regmatch_slab.states[22].u.curlym.alen' => 4, 'regmatch_slab.states[22].u.curlym.c1' => 4, 'regmatch_slab.states[22].u.curlym.c2' => 4, 'regmatch_slab.states[22].u.curlym.count' => 4, 'regmatch_slab.states[22].u.curlym.cp' => 4, 'regmatch_slab.states[22].u.curlym.me' => 4, 'regmatch_slab.states[22].u.curlym.minmod' => 1, 'regmatch_slab.states[22].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[22].u.curlyx' => 41, 'regmatch_slab.states[22].u.curlyx.A' => 4, 'regmatch_slab.states[22].u.curlyx.B' => 4, 'regmatch_slab.states[22].u.curlyx.count' => 4, 'regmatch_slab.states[22].u.curlyx.cp' => 4, 'regmatch_slab.states[22].u.curlyx.lastloc' => 4, 'regmatch_slab.states[22].u.curlyx.max' => 4, 'regmatch_slab.states[22].u.curlyx.min' => 4, 'regmatch_slab.states[22].u.curlyx.minmod' => 1, 'regmatch_slab.states[22].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[22].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[22].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[22].u.eval' => 36, 'regmatch_slab.states[22].u.eval.B' => 4, 'regmatch_slab.states[22].u.eval.close_paren' => 4, 'regmatch_slab.states[22].u.eval.cp' => 4, 'regmatch_slab.states[22].u.eval.lastcp' => 4, 'regmatch_slab.states[22].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[22].u.eval.prev_eval' => 4, 'regmatch_slab.states[22].u.eval.prev_rex' => 4, 'regmatch_slab.states[22].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[22].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[22].u.ifmatch' => 16, 'regmatch_slab.states[22].u.ifmatch.logical' => 4, 'regmatch_slab.states[22].u.ifmatch.me' => 4, 'regmatch_slab.states[22].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[22].u.ifmatch.wanted' => 4, 'regmatch_slab.states[22].u.trie' => 20, 'regmatch_slab.states[22].u.trie.B' => 4, 'regmatch_slab.states[22].u.trie.accept_buff' => 4, 'regmatch_slab.states[22].u.trie.accepted' => 4, 'regmatch_slab.states[22].u.trie.jump' => 4, 'regmatch_slab.states[22].u.trie.me' => 4, 'regmatch_slab.states[22].u.whilem' => 28, 'regmatch_slab.states[22].u.whilem.cache_mask' => 4, 'regmatch_slab.states[22].u.whilem.cache_offset' => 4, 'regmatch_slab.states[22].u.whilem.cp' => 4, 'regmatch_slab.states[22].u.whilem.lastcp' => 4, 'regmatch_slab.states[22].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[22].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[22].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[22].u.yes' => 4, 'regmatch_slab.states[22].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[23]' => 52, 'regmatch_slab.states[23].locinput' => 4, 'regmatch_slab.states[23].resume_state' => 4, 'regmatch_slab.states[23].u' => 44, 'regmatch_slab.states[23].u.branch' => 12, 'regmatch_slab.states[23].u.branch.cp' => 4, 'regmatch_slab.states[23].u.branch.lastparen' => 4, 'regmatch_slab.states[23].u.branch.next_branch' => 4, 'regmatch_slab.states[23].u.curly' => 44, 'regmatch_slab.states[23].u.curly.A' => 4, 'regmatch_slab.states[23].u.curly.B' => 4, 'regmatch_slab.states[23].u.curly.c1' => 4, 'regmatch_slab.states[23].u.curly.c2' => 4, 'regmatch_slab.states[23].u.curly.count' => 4, 'regmatch_slab.states[23].u.curly.cp' => 4, 'regmatch_slab.states[23].u.curly.max' => 4, 'regmatch_slab.states[23].u.curly.maxpos' => 4, 'regmatch_slab.states[23].u.curly.min' => 4, 'regmatch_slab.states[23].u.curly.oldloc' => 4, 'regmatch_slab.states[23].u.curly.paren' => 4, 'regmatch_slab.states[23].u.curlym' => 37, 'regmatch_slab.states[23].u.curlym.A' => 4, 'regmatch_slab.states[23].u.curlym.B' => 4, 'regmatch_slab.states[23].u.curlym.alen' => 4, 'regmatch_slab.states[23].u.curlym.c1' => 4, 'regmatch_slab.states[23].u.curlym.c2' => 4, 'regmatch_slab.states[23].u.curlym.count' => 4, 'regmatch_slab.states[23].u.curlym.cp' => 4, 'regmatch_slab.states[23].u.curlym.me' => 4, 'regmatch_slab.states[23].u.curlym.minmod' => 1, 'regmatch_slab.states[23].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[23].u.curlyx' => 41, 'regmatch_slab.states[23].u.curlyx.A' => 4, 'regmatch_slab.states[23].u.curlyx.B' => 4, 'regmatch_slab.states[23].u.curlyx.count' => 4, 'regmatch_slab.states[23].u.curlyx.cp' => 4, 'regmatch_slab.states[23].u.curlyx.lastloc' => 4, 'regmatch_slab.states[23].u.curlyx.max' => 4, 'regmatch_slab.states[23].u.curlyx.min' => 4, 'regmatch_slab.states[23].u.curlyx.minmod' => 1, 'regmatch_slab.states[23].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[23].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[23].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[23].u.eval' => 36, 'regmatch_slab.states[23].u.eval.B' => 4, 'regmatch_slab.states[23].u.eval.close_paren' => 4, 'regmatch_slab.states[23].u.eval.cp' => 4, 'regmatch_slab.states[23].u.eval.lastcp' => 4, 'regmatch_slab.states[23].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[23].u.eval.prev_eval' => 4, 'regmatch_slab.states[23].u.eval.prev_rex' => 4, 'regmatch_slab.states[23].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[23].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[23].u.ifmatch' => 16, 'regmatch_slab.states[23].u.ifmatch.logical' => 4, 'regmatch_slab.states[23].u.ifmatch.me' => 4, 'regmatch_slab.states[23].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[23].u.ifmatch.wanted' => 4, 'regmatch_slab.states[23].u.trie' => 20, 'regmatch_slab.states[23].u.trie.B' => 4, 'regmatch_slab.states[23].u.trie.accept_buff' => 4, 'regmatch_slab.states[23].u.trie.accepted' => 4, 'regmatch_slab.states[23].u.trie.jump' => 4, 'regmatch_slab.states[23].u.trie.me' => 4, 'regmatch_slab.states[23].u.whilem' => 28, 'regmatch_slab.states[23].u.whilem.cache_mask' => 4, 'regmatch_slab.states[23].u.whilem.cache_offset' => 4, 'regmatch_slab.states[23].u.whilem.cp' => 4, 'regmatch_slab.states[23].u.whilem.lastcp' => 4, 'regmatch_slab.states[23].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[23].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[23].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[23].u.yes' => 4, 'regmatch_slab.states[23].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[24]' => 52, 'regmatch_slab.states[24].locinput' => 4, 'regmatch_slab.states[24].resume_state' => 4, 'regmatch_slab.states[24].u' => 44, 'regmatch_slab.states[24].u.branch' => 12, 'regmatch_slab.states[24].u.branch.cp' => 4, 'regmatch_slab.states[24].u.branch.lastparen' => 4, 'regmatch_slab.states[24].u.branch.next_branch' => 4, 'regmatch_slab.states[24].u.curly' => 44, 'regmatch_slab.states[24].u.curly.A' => 4, 'regmatch_slab.states[24].u.curly.B' => 4, 'regmatch_slab.states[24].u.curly.c1' => 4, 'regmatch_slab.states[24].u.curly.c2' => 4, 'regmatch_slab.states[24].u.curly.count' => 4, 'regmatch_slab.states[24].u.curly.cp' => 4, 'regmatch_slab.states[24].u.curly.max' => 4, 'regmatch_slab.states[24].u.curly.maxpos' => 4, 'regmatch_slab.states[24].u.curly.min' => 4, 'regmatch_slab.states[24].u.curly.oldloc' => 4, 'regmatch_slab.states[24].u.curly.paren' => 4, 'regmatch_slab.states[24].u.curlym' => 37, 'regmatch_slab.states[24].u.curlym.A' => 4, 'regmatch_slab.states[24].u.curlym.B' => 4, 'regmatch_slab.states[24].u.curlym.alen' => 4, 'regmatch_slab.states[24].u.curlym.c1' => 4, 'regmatch_slab.states[24].u.curlym.c2' => 4, 'regmatch_slab.states[24].u.curlym.count' => 4, 'regmatch_slab.states[24].u.curlym.cp' => 4, 'regmatch_slab.states[24].u.curlym.me' => 4, 'regmatch_slab.states[24].u.curlym.minmod' => 1, 'regmatch_slab.states[24].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[24].u.curlyx' => 41, 'regmatch_slab.states[24].u.curlyx.A' => 4, 'regmatch_slab.states[24].u.curlyx.B' => 4, 'regmatch_slab.states[24].u.curlyx.count' => 4, 'regmatch_slab.states[24].u.curlyx.cp' => 4, 'regmatch_slab.states[24].u.curlyx.lastloc' => 4, 'regmatch_slab.states[24].u.curlyx.max' => 4, 'regmatch_slab.states[24].u.curlyx.min' => 4, 'regmatch_slab.states[24].u.curlyx.minmod' => 1, 'regmatch_slab.states[24].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[24].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[24].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[24].u.eval' => 36, 'regmatch_slab.states[24].u.eval.B' => 4, 'regmatch_slab.states[24].u.eval.close_paren' => 4, 'regmatch_slab.states[24].u.eval.cp' => 4, 'regmatch_slab.states[24].u.eval.lastcp' => 4, 'regmatch_slab.states[24].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[24].u.eval.prev_eval' => 4, 'regmatch_slab.states[24].u.eval.prev_rex' => 4, 'regmatch_slab.states[24].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[24].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[24].u.ifmatch' => 16, 'regmatch_slab.states[24].u.ifmatch.logical' => 4, 'regmatch_slab.states[24].u.ifmatch.me' => 4, 'regmatch_slab.states[24].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[24].u.ifmatch.wanted' => 4, 'regmatch_slab.states[24].u.trie' => 20, 'regmatch_slab.states[24].u.trie.B' => 4, 'regmatch_slab.states[24].u.trie.accept_buff' => 4, 'regmatch_slab.states[24].u.trie.accepted' => 4, 'regmatch_slab.states[24].u.trie.jump' => 4, 'regmatch_slab.states[24].u.trie.me' => 4, 'regmatch_slab.states[24].u.whilem' => 28, 'regmatch_slab.states[24].u.whilem.cache_mask' => 4, 'regmatch_slab.states[24].u.whilem.cache_offset' => 4, 'regmatch_slab.states[24].u.whilem.cp' => 4, 'regmatch_slab.states[24].u.whilem.lastcp' => 4, 'regmatch_slab.states[24].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[24].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[24].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[24].u.yes' => 4, 'regmatch_slab.states[24].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[25]' => 52, 'regmatch_slab.states[25].locinput' => 4, 'regmatch_slab.states[25].resume_state' => 4, 'regmatch_slab.states[25].u' => 44, 'regmatch_slab.states[25].u.branch' => 12, 'regmatch_slab.states[25].u.branch.cp' => 4, 'regmatch_slab.states[25].u.branch.lastparen' => 4, 'regmatch_slab.states[25].u.branch.next_branch' => 4, 'regmatch_slab.states[25].u.curly' => 44, 'regmatch_slab.states[25].u.curly.A' => 4, 'regmatch_slab.states[25].u.curly.B' => 4, 'regmatch_slab.states[25].u.curly.c1' => 4, 'regmatch_slab.states[25].u.curly.c2' => 4, 'regmatch_slab.states[25].u.curly.count' => 4, 'regmatch_slab.states[25].u.curly.cp' => 4, 'regmatch_slab.states[25].u.curly.max' => 4, 'regmatch_slab.states[25].u.curly.maxpos' => 4, 'regmatch_slab.states[25].u.curly.min' => 4, 'regmatch_slab.states[25].u.curly.oldloc' => 4, 'regmatch_slab.states[25].u.curly.paren' => 4, 'regmatch_slab.states[25].u.curlym' => 37, 'regmatch_slab.states[25].u.curlym.A' => 4, 'regmatch_slab.states[25].u.curlym.B' => 4, 'regmatch_slab.states[25].u.curlym.alen' => 4, 'regmatch_slab.states[25].u.curlym.c1' => 4, 'regmatch_slab.states[25].u.curlym.c2' => 4, 'regmatch_slab.states[25].u.curlym.count' => 4, 'regmatch_slab.states[25].u.curlym.cp' => 4, 'regmatch_slab.states[25].u.curlym.me' => 4, 'regmatch_slab.states[25].u.curlym.minmod' => 1, 'regmatch_slab.states[25].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[25].u.curlyx' => 41, 'regmatch_slab.states[25].u.curlyx.A' => 4, 'regmatch_slab.states[25].u.curlyx.B' => 4, 'regmatch_slab.states[25].u.curlyx.count' => 4, 'regmatch_slab.states[25].u.curlyx.cp' => 4, 'regmatch_slab.states[25].u.curlyx.lastloc' => 4, 'regmatch_slab.states[25].u.curlyx.max' => 4, 'regmatch_slab.states[25].u.curlyx.min' => 4, 'regmatch_slab.states[25].u.curlyx.minmod' => 1, 'regmatch_slab.states[25].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[25].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[25].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[25].u.eval' => 36, 'regmatch_slab.states[25].u.eval.B' => 4, 'regmatch_slab.states[25].u.eval.close_paren' => 4, 'regmatch_slab.states[25].u.eval.cp' => 4, 'regmatch_slab.states[25].u.eval.lastcp' => 4, 'regmatch_slab.states[25].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[25].u.eval.prev_eval' => 4, 'regmatch_slab.states[25].u.eval.prev_rex' => 4, 'regmatch_slab.states[25].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[25].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[25].u.ifmatch' => 16, 'regmatch_slab.states[25].u.ifmatch.logical' => 4, 'regmatch_slab.states[25].u.ifmatch.me' => 4, 'regmatch_slab.states[25].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[25].u.ifmatch.wanted' => 4, 'regmatch_slab.states[25].u.trie' => 20, 'regmatch_slab.states[25].u.trie.B' => 4, 'regmatch_slab.states[25].u.trie.accept_buff' => 4, 'regmatch_slab.states[25].u.trie.accepted' => 4, 'regmatch_slab.states[25].u.trie.jump' => 4, 'regmatch_slab.states[25].u.trie.me' => 4, 'regmatch_slab.states[25].u.whilem' => 28, 'regmatch_slab.states[25].u.whilem.cache_mask' => 4, 'regmatch_slab.states[25].u.whilem.cache_offset' => 4, 'regmatch_slab.states[25].u.whilem.cp' => 4, 'regmatch_slab.states[25].u.whilem.lastcp' => 4, 'regmatch_slab.states[25].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[25].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[25].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[25].u.yes' => 4, 'regmatch_slab.states[25].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[26]' => 52, 'regmatch_slab.states[26].locinput' => 4, 'regmatch_slab.states[26].resume_state' => 4, 'regmatch_slab.states[26].u' => 44, 'regmatch_slab.states[26].u.branch' => 12, 'regmatch_slab.states[26].u.branch.cp' => 4, 'regmatch_slab.states[26].u.branch.lastparen' => 4, 'regmatch_slab.states[26].u.branch.next_branch' => 4, 'regmatch_slab.states[26].u.curly' => 44, 'regmatch_slab.states[26].u.curly.A' => 4, 'regmatch_slab.states[26].u.curly.B' => 4, 'regmatch_slab.states[26].u.curly.c1' => 4, 'regmatch_slab.states[26].u.curly.c2' => 4, 'regmatch_slab.states[26].u.curly.count' => 4, 'regmatch_slab.states[26].u.curly.cp' => 4, 'regmatch_slab.states[26].u.curly.max' => 4, 'regmatch_slab.states[26].u.curly.maxpos' => 4, 'regmatch_slab.states[26].u.curly.min' => 4, 'regmatch_slab.states[26].u.curly.oldloc' => 4, 'regmatch_slab.states[26].u.curly.paren' => 4, 'regmatch_slab.states[26].u.curlym' => 37, 'regmatch_slab.states[26].u.curlym.A' => 4, 'regmatch_slab.states[26].u.curlym.B' => 4, 'regmatch_slab.states[26].u.curlym.alen' => 4, 'regmatch_slab.states[26].u.curlym.c1' => 4, 'regmatch_slab.states[26].u.curlym.c2' => 4, 'regmatch_slab.states[26].u.curlym.count' => 4, 'regmatch_slab.states[26].u.curlym.cp' => 4, 'regmatch_slab.states[26].u.curlym.me' => 4, 'regmatch_slab.states[26].u.curlym.minmod' => 1, 'regmatch_slab.states[26].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[26].u.curlyx' => 41, 'regmatch_slab.states[26].u.curlyx.A' => 4, 'regmatch_slab.states[26].u.curlyx.B' => 4, 'regmatch_slab.states[26].u.curlyx.count' => 4, 'regmatch_slab.states[26].u.curlyx.cp' => 4, 'regmatch_slab.states[26].u.curlyx.lastloc' => 4, 'regmatch_slab.states[26].u.curlyx.max' => 4, 'regmatch_slab.states[26].u.curlyx.min' => 4, 'regmatch_slab.states[26].u.curlyx.minmod' => 1, 'regmatch_slab.states[26].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[26].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[26].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[26].u.eval' => 36, 'regmatch_slab.states[26].u.eval.B' => 4, 'regmatch_slab.states[26].u.eval.close_paren' => 4, 'regmatch_slab.states[26].u.eval.cp' => 4, 'regmatch_slab.states[26].u.eval.lastcp' => 4, 'regmatch_slab.states[26].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[26].u.eval.prev_eval' => 4, 'regmatch_slab.states[26].u.eval.prev_rex' => 4, 'regmatch_slab.states[26].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[26].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[26].u.ifmatch' => 16, 'regmatch_slab.states[26].u.ifmatch.logical' => 4, 'regmatch_slab.states[26].u.ifmatch.me' => 4, 'regmatch_slab.states[26].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[26].u.ifmatch.wanted' => 4, 'regmatch_slab.states[26].u.trie' => 20, 'regmatch_slab.states[26].u.trie.B' => 4, 'regmatch_slab.states[26].u.trie.accept_buff' => 4, 'regmatch_slab.states[26].u.trie.accepted' => 4, 'regmatch_slab.states[26].u.trie.jump' => 4, 'regmatch_slab.states[26].u.trie.me' => 4, 'regmatch_slab.states[26].u.whilem' => 28, 'regmatch_slab.states[26].u.whilem.cache_mask' => 4, 'regmatch_slab.states[26].u.whilem.cache_offset' => 4, 'regmatch_slab.states[26].u.whilem.cp' => 4, 'regmatch_slab.states[26].u.whilem.lastcp' => 4, 'regmatch_slab.states[26].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[26].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[26].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[26].u.yes' => 4, 'regmatch_slab.states[26].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[27]' => 52, 'regmatch_slab.states[27].locinput' => 4, 'regmatch_slab.states[27].resume_state' => 4, 'regmatch_slab.states[27].u' => 44, 'regmatch_slab.states[27].u.branch' => 12, 'regmatch_slab.states[27].u.branch.cp' => 4, 'regmatch_slab.states[27].u.branch.lastparen' => 4, 'regmatch_slab.states[27].u.branch.next_branch' => 4, 'regmatch_slab.states[27].u.curly' => 44, 'regmatch_slab.states[27].u.curly.A' => 4, 'regmatch_slab.states[27].u.curly.B' => 4, 'regmatch_slab.states[27].u.curly.c1' => 4, 'regmatch_slab.states[27].u.curly.c2' => 4, 'regmatch_slab.states[27].u.curly.count' => 4, 'regmatch_slab.states[27].u.curly.cp' => 4, 'regmatch_slab.states[27].u.curly.max' => 4, 'regmatch_slab.states[27].u.curly.maxpos' => 4, 'regmatch_slab.states[27].u.curly.min' => 4, 'regmatch_slab.states[27].u.curly.oldloc' => 4, 'regmatch_slab.states[27].u.curly.paren' => 4, 'regmatch_slab.states[27].u.curlym' => 37, 'regmatch_slab.states[27].u.curlym.A' => 4, 'regmatch_slab.states[27].u.curlym.B' => 4, 'regmatch_slab.states[27].u.curlym.alen' => 4, 'regmatch_slab.states[27].u.curlym.c1' => 4, 'regmatch_slab.states[27].u.curlym.c2' => 4, 'regmatch_slab.states[27].u.curlym.count' => 4, 'regmatch_slab.states[27].u.curlym.cp' => 4, 'regmatch_slab.states[27].u.curlym.me' => 4, 'regmatch_slab.states[27].u.curlym.minmod' => 1, 'regmatch_slab.states[27].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[27].u.curlyx' => 41, 'regmatch_slab.states[27].u.curlyx.A' => 4, 'regmatch_slab.states[27].u.curlyx.B' => 4, 'regmatch_slab.states[27].u.curlyx.count' => 4, 'regmatch_slab.states[27].u.curlyx.cp' => 4, 'regmatch_slab.states[27].u.curlyx.lastloc' => 4, 'regmatch_slab.states[27].u.curlyx.max' => 4, 'regmatch_slab.states[27].u.curlyx.min' => 4, 'regmatch_slab.states[27].u.curlyx.minmod' => 1, 'regmatch_slab.states[27].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[27].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[27].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[27].u.eval' => 36, 'regmatch_slab.states[27].u.eval.B' => 4, 'regmatch_slab.states[27].u.eval.close_paren' => 4, 'regmatch_slab.states[27].u.eval.cp' => 4, 'regmatch_slab.states[27].u.eval.lastcp' => 4, 'regmatch_slab.states[27].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[27].u.eval.prev_eval' => 4, 'regmatch_slab.states[27].u.eval.prev_rex' => 4, 'regmatch_slab.states[27].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[27].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[27].u.ifmatch' => 16, 'regmatch_slab.states[27].u.ifmatch.logical' => 4, 'regmatch_slab.states[27].u.ifmatch.me' => 4, 'regmatch_slab.states[27].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[27].u.ifmatch.wanted' => 4, 'regmatch_slab.states[27].u.trie' => 20, 'regmatch_slab.states[27].u.trie.B' => 4, 'regmatch_slab.states[27].u.trie.accept_buff' => 4, 'regmatch_slab.states[27].u.trie.accepted' => 4, 'regmatch_slab.states[27].u.trie.jump' => 4, 'regmatch_slab.states[27].u.trie.me' => 4, 'regmatch_slab.states[27].u.whilem' => 28, 'regmatch_slab.states[27].u.whilem.cache_mask' => 4, 'regmatch_slab.states[27].u.whilem.cache_offset' => 4, 'regmatch_slab.states[27].u.whilem.cp' => 4, 'regmatch_slab.states[27].u.whilem.lastcp' => 4, 'regmatch_slab.states[27].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[27].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[27].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[27].u.yes' => 4, 'regmatch_slab.states[27].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[28]' => 52, 'regmatch_slab.states[28].locinput' => 4, 'regmatch_slab.states[28].resume_state' => 4, 'regmatch_slab.states[28].u' => 44, 'regmatch_slab.states[28].u.branch' => 12, 'regmatch_slab.states[28].u.branch.cp' => 4, 'regmatch_slab.states[28].u.branch.lastparen' => 4, 'regmatch_slab.states[28].u.branch.next_branch' => 4, 'regmatch_slab.states[28].u.curly' => 44, 'regmatch_slab.states[28].u.curly.A' => 4, 'regmatch_slab.states[28].u.curly.B' => 4, 'regmatch_slab.states[28].u.curly.c1' => 4, 'regmatch_slab.states[28].u.curly.c2' => 4, 'regmatch_slab.states[28].u.curly.count' => 4, 'regmatch_slab.states[28].u.curly.cp' => 4, 'regmatch_slab.states[28].u.curly.max' => 4, 'regmatch_slab.states[28].u.curly.maxpos' => 4, 'regmatch_slab.states[28].u.curly.min' => 4, 'regmatch_slab.states[28].u.curly.oldloc' => 4, 'regmatch_slab.states[28].u.curly.paren' => 4, 'regmatch_slab.states[28].u.curlym' => 37, 'regmatch_slab.states[28].u.curlym.A' => 4, 'regmatch_slab.states[28].u.curlym.B' => 4, 'regmatch_slab.states[28].u.curlym.alen' => 4, 'regmatch_slab.states[28].u.curlym.c1' => 4, 'regmatch_slab.states[28].u.curlym.c2' => 4, 'regmatch_slab.states[28].u.curlym.count' => 4, 'regmatch_slab.states[28].u.curlym.cp' => 4, 'regmatch_slab.states[28].u.curlym.me' => 4, 'regmatch_slab.states[28].u.curlym.minmod' => 1, 'regmatch_slab.states[28].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[28].u.curlyx' => 41, 'regmatch_slab.states[28].u.curlyx.A' => 4, 'regmatch_slab.states[28].u.curlyx.B' => 4, 'regmatch_slab.states[28].u.curlyx.count' => 4, 'regmatch_slab.states[28].u.curlyx.cp' => 4, 'regmatch_slab.states[28].u.curlyx.lastloc' => 4, 'regmatch_slab.states[28].u.curlyx.max' => 4, 'regmatch_slab.states[28].u.curlyx.min' => 4, 'regmatch_slab.states[28].u.curlyx.minmod' => 1, 'regmatch_slab.states[28].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[28].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[28].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[28].u.eval' => 36, 'regmatch_slab.states[28].u.eval.B' => 4, 'regmatch_slab.states[28].u.eval.close_paren' => 4, 'regmatch_slab.states[28].u.eval.cp' => 4, 'regmatch_slab.states[28].u.eval.lastcp' => 4, 'regmatch_slab.states[28].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[28].u.eval.prev_eval' => 4, 'regmatch_slab.states[28].u.eval.prev_rex' => 4, 'regmatch_slab.states[28].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[28].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[28].u.ifmatch' => 16, 'regmatch_slab.states[28].u.ifmatch.logical' => 4, 'regmatch_slab.states[28].u.ifmatch.me' => 4, 'regmatch_slab.states[28].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[28].u.ifmatch.wanted' => 4, 'regmatch_slab.states[28].u.trie' => 20, 'regmatch_slab.states[28].u.trie.B' => 4, 'regmatch_slab.states[28].u.trie.accept_buff' => 4, 'regmatch_slab.states[28].u.trie.accepted' => 4, 'regmatch_slab.states[28].u.trie.jump' => 4, 'regmatch_slab.states[28].u.trie.me' => 4, 'regmatch_slab.states[28].u.whilem' => 28, 'regmatch_slab.states[28].u.whilem.cache_mask' => 4, 'regmatch_slab.states[28].u.whilem.cache_offset' => 4, 'regmatch_slab.states[28].u.whilem.cp' => 4, 'regmatch_slab.states[28].u.whilem.lastcp' => 4, 'regmatch_slab.states[28].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[28].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[28].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[28].u.yes' => 4, 'regmatch_slab.states[28].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[29]' => 52, 'regmatch_slab.states[29].locinput' => 4, 'regmatch_slab.states[29].resume_state' => 4, 'regmatch_slab.states[29].u' => 44, 'regmatch_slab.states[29].u.branch' => 12, 'regmatch_slab.states[29].u.branch.cp' => 4, 'regmatch_slab.states[29].u.branch.lastparen' => 4, 'regmatch_slab.states[29].u.branch.next_branch' => 4, 'regmatch_slab.states[29].u.curly' => 44, 'regmatch_slab.states[29].u.curly.A' => 4, 'regmatch_slab.states[29].u.curly.B' => 4, 'regmatch_slab.states[29].u.curly.c1' => 4, 'regmatch_slab.states[29].u.curly.c2' => 4, 'regmatch_slab.states[29].u.curly.count' => 4, 'regmatch_slab.states[29].u.curly.cp' => 4, 'regmatch_slab.states[29].u.curly.max' => 4, 'regmatch_slab.states[29].u.curly.maxpos' => 4, 'regmatch_slab.states[29].u.curly.min' => 4, 'regmatch_slab.states[29].u.curly.oldloc' => 4, 'regmatch_slab.states[29].u.curly.paren' => 4, 'regmatch_slab.states[29].u.curlym' => 37, 'regmatch_slab.states[29].u.curlym.A' => 4, 'regmatch_slab.states[29].u.curlym.B' => 4, 'regmatch_slab.states[29].u.curlym.alen' => 4, 'regmatch_slab.states[29].u.curlym.c1' => 4, 'regmatch_slab.states[29].u.curlym.c2' => 4, 'regmatch_slab.states[29].u.curlym.count' => 4, 'regmatch_slab.states[29].u.curlym.cp' => 4, 'regmatch_slab.states[29].u.curlym.me' => 4, 'regmatch_slab.states[29].u.curlym.minmod' => 1, 'regmatch_slab.states[29].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[29].u.curlyx' => 41, 'regmatch_slab.states[29].u.curlyx.A' => 4, 'regmatch_slab.states[29].u.curlyx.B' => 4, 'regmatch_slab.states[29].u.curlyx.count' => 4, 'regmatch_slab.states[29].u.curlyx.cp' => 4, 'regmatch_slab.states[29].u.curlyx.lastloc' => 4, 'regmatch_slab.states[29].u.curlyx.max' => 4, 'regmatch_slab.states[29].u.curlyx.min' => 4, 'regmatch_slab.states[29].u.curlyx.minmod' => 1, 'regmatch_slab.states[29].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[29].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[29].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[29].u.eval' => 36, 'regmatch_slab.states[29].u.eval.B' => 4, 'regmatch_slab.states[29].u.eval.close_paren' => 4, 'regmatch_slab.states[29].u.eval.cp' => 4, 'regmatch_slab.states[29].u.eval.lastcp' => 4, 'regmatch_slab.states[29].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[29].u.eval.prev_eval' => 4, 'regmatch_slab.states[29].u.eval.prev_rex' => 4, 'regmatch_slab.states[29].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[29].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[29].u.ifmatch' => 16, 'regmatch_slab.states[29].u.ifmatch.logical' => 4, 'regmatch_slab.states[29].u.ifmatch.me' => 4, 'regmatch_slab.states[29].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[29].u.ifmatch.wanted' => 4, 'regmatch_slab.states[29].u.trie' => 20, 'regmatch_slab.states[29].u.trie.B' => 4, 'regmatch_slab.states[29].u.trie.accept_buff' => 4, 'regmatch_slab.states[29].u.trie.accepted' => 4, 'regmatch_slab.states[29].u.trie.jump' => 4, 'regmatch_slab.states[29].u.trie.me' => 4, 'regmatch_slab.states[29].u.whilem' => 28, 'regmatch_slab.states[29].u.whilem.cache_mask' => 4, 'regmatch_slab.states[29].u.whilem.cache_offset' => 4, 'regmatch_slab.states[29].u.whilem.cp' => 4, 'regmatch_slab.states[29].u.whilem.lastcp' => 4, 'regmatch_slab.states[29].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[29].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[29].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[29].u.yes' => 4, 'regmatch_slab.states[29].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[2]' => 52, 'regmatch_slab.states[2].locinput' => 4, 'regmatch_slab.states[2].resume_state' => 4, 'regmatch_slab.states[2].u' => 44, 'regmatch_slab.states[2].u.branch' => 12, 'regmatch_slab.states[2].u.branch.cp' => 4, 'regmatch_slab.states[2].u.branch.lastparen' => 4, 'regmatch_slab.states[2].u.branch.next_branch' => 4, 'regmatch_slab.states[2].u.curly' => 44, 'regmatch_slab.states[2].u.curly.A' => 4, 'regmatch_slab.states[2].u.curly.B' => 4, 'regmatch_slab.states[2].u.curly.c1' => 4, 'regmatch_slab.states[2].u.curly.c2' => 4, 'regmatch_slab.states[2].u.curly.count' => 4, 'regmatch_slab.states[2].u.curly.cp' => 4, 'regmatch_slab.states[2].u.curly.max' => 4, 'regmatch_slab.states[2].u.curly.maxpos' => 4, 'regmatch_slab.states[2].u.curly.min' => 4, 'regmatch_slab.states[2].u.curly.oldloc' => 4, 'regmatch_slab.states[2].u.curly.paren' => 4, 'regmatch_slab.states[2].u.curlym' => 37, 'regmatch_slab.states[2].u.curlym.A' => 4, 'regmatch_slab.states[2].u.curlym.B' => 4, 'regmatch_slab.states[2].u.curlym.alen' => 4, 'regmatch_slab.states[2].u.curlym.c1' => 4, 'regmatch_slab.states[2].u.curlym.c2' => 4, 'regmatch_slab.states[2].u.curlym.count' => 4, 'regmatch_slab.states[2].u.curlym.cp' => 4, 'regmatch_slab.states[2].u.curlym.me' => 4, 'regmatch_slab.states[2].u.curlym.minmod' => 1, 'regmatch_slab.states[2].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[2].u.curlyx' => 41, 'regmatch_slab.states[2].u.curlyx.A' => 4, 'regmatch_slab.states[2].u.curlyx.B' => 4, 'regmatch_slab.states[2].u.curlyx.count' => 4, 'regmatch_slab.states[2].u.curlyx.cp' => 4, 'regmatch_slab.states[2].u.curlyx.lastloc' => 4, 'regmatch_slab.states[2].u.curlyx.max' => 4, 'regmatch_slab.states[2].u.curlyx.min' => 4, 'regmatch_slab.states[2].u.curlyx.minmod' => 1, 'regmatch_slab.states[2].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[2].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[2].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[2].u.eval' => 36, 'regmatch_slab.states[2].u.eval.B' => 4, 'regmatch_slab.states[2].u.eval.close_paren' => 4, 'regmatch_slab.states[2].u.eval.cp' => 4, 'regmatch_slab.states[2].u.eval.lastcp' => 4, 'regmatch_slab.states[2].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[2].u.eval.prev_eval' => 4, 'regmatch_slab.states[2].u.eval.prev_rex' => 4, 'regmatch_slab.states[2].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[2].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[2].u.ifmatch' => 16, 'regmatch_slab.states[2].u.ifmatch.logical' => 4, 'regmatch_slab.states[2].u.ifmatch.me' => 4, 'regmatch_slab.states[2].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[2].u.ifmatch.wanted' => 4, 'regmatch_slab.states[2].u.trie' => 20, 'regmatch_slab.states[2].u.trie.B' => 4, 'regmatch_slab.states[2].u.trie.accept_buff' => 4, 'regmatch_slab.states[2].u.trie.accepted' => 4, 'regmatch_slab.states[2].u.trie.jump' => 4, 'regmatch_slab.states[2].u.trie.me' => 4, 'regmatch_slab.states[2].u.whilem' => 28, 'regmatch_slab.states[2].u.whilem.cache_mask' => 4, 'regmatch_slab.states[2].u.whilem.cache_offset' => 4, 'regmatch_slab.states[2].u.whilem.cp' => 4, 'regmatch_slab.states[2].u.whilem.lastcp' => 4, 'regmatch_slab.states[2].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[2].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[2].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[2].u.yes' => 4, 'regmatch_slab.states[2].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[30]' => 52, 'regmatch_slab.states[30].locinput' => 4, 'regmatch_slab.states[30].resume_state' => 4, 'regmatch_slab.states[30].u' => 44, 'regmatch_slab.states[30].u.branch' => 12, 'regmatch_slab.states[30].u.branch.cp' => 4, 'regmatch_slab.states[30].u.branch.lastparen' => 4, 'regmatch_slab.states[30].u.branch.next_branch' => 4, 'regmatch_slab.states[30].u.curly' => 44, 'regmatch_slab.states[30].u.curly.A' => 4, 'regmatch_slab.states[30].u.curly.B' => 4, 'regmatch_slab.states[30].u.curly.c1' => 4, 'regmatch_slab.states[30].u.curly.c2' => 4, 'regmatch_slab.states[30].u.curly.count' => 4, 'regmatch_slab.states[30].u.curly.cp' => 4, 'regmatch_slab.states[30].u.curly.max' => 4, 'regmatch_slab.states[30].u.curly.maxpos' => 4, 'regmatch_slab.states[30].u.curly.min' => 4, 'regmatch_slab.states[30].u.curly.oldloc' => 4, 'regmatch_slab.states[30].u.curly.paren' => 4, 'regmatch_slab.states[30].u.curlym' => 37, 'regmatch_slab.states[30].u.curlym.A' => 4, 'regmatch_slab.states[30].u.curlym.B' => 4, 'regmatch_slab.states[30].u.curlym.alen' => 4, 'regmatch_slab.states[30].u.curlym.c1' => 4, 'regmatch_slab.states[30].u.curlym.c2' => 4, 'regmatch_slab.states[30].u.curlym.count' => 4, 'regmatch_slab.states[30].u.curlym.cp' => 4, 'regmatch_slab.states[30].u.curlym.me' => 4, 'regmatch_slab.states[30].u.curlym.minmod' => 1, 'regmatch_slab.states[30].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[30].u.curlyx' => 41, 'regmatch_slab.states[30].u.curlyx.A' => 4, 'regmatch_slab.states[30].u.curlyx.B' => 4, 'regmatch_slab.states[30].u.curlyx.count' => 4, 'regmatch_slab.states[30].u.curlyx.cp' => 4, 'regmatch_slab.states[30].u.curlyx.lastloc' => 4, 'regmatch_slab.states[30].u.curlyx.max' => 4, 'regmatch_slab.states[30].u.curlyx.min' => 4, 'regmatch_slab.states[30].u.curlyx.minmod' => 1, 'regmatch_slab.states[30].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[30].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[30].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[30].u.eval' => 36, 'regmatch_slab.states[30].u.eval.B' => 4, 'regmatch_slab.states[30].u.eval.close_paren' => 4, 'regmatch_slab.states[30].u.eval.cp' => 4, 'regmatch_slab.states[30].u.eval.lastcp' => 4, 'regmatch_slab.states[30].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[30].u.eval.prev_eval' => 4, 'regmatch_slab.states[30].u.eval.prev_rex' => 4, 'regmatch_slab.states[30].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[30].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[30].u.ifmatch' => 16, 'regmatch_slab.states[30].u.ifmatch.logical' => 4, 'regmatch_slab.states[30].u.ifmatch.me' => 4, 'regmatch_slab.states[30].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[30].u.ifmatch.wanted' => 4, 'regmatch_slab.states[30].u.trie' => 20, 'regmatch_slab.states[30].u.trie.B' => 4, 'regmatch_slab.states[30].u.trie.accept_buff' => 4, 'regmatch_slab.states[30].u.trie.accepted' => 4, 'regmatch_slab.states[30].u.trie.jump' => 4, 'regmatch_slab.states[30].u.trie.me' => 4, 'regmatch_slab.states[30].u.whilem' => 28, 'regmatch_slab.states[30].u.whilem.cache_mask' => 4, 'regmatch_slab.states[30].u.whilem.cache_offset' => 4, 'regmatch_slab.states[30].u.whilem.cp' => 4, 'regmatch_slab.states[30].u.whilem.lastcp' => 4, 'regmatch_slab.states[30].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[30].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[30].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[30].u.yes' => 4, 'regmatch_slab.states[30].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[31]' => 52, 'regmatch_slab.states[31].locinput' => 4, 'regmatch_slab.states[31].resume_state' => 4, 'regmatch_slab.states[31].u' => 44, 'regmatch_slab.states[31].u.branch' => 12, 'regmatch_slab.states[31].u.branch.cp' => 4, 'regmatch_slab.states[31].u.branch.lastparen' => 4, 'regmatch_slab.states[31].u.branch.next_branch' => 4, 'regmatch_slab.states[31].u.curly' => 44, 'regmatch_slab.states[31].u.curly.A' => 4, 'regmatch_slab.states[31].u.curly.B' => 4, 'regmatch_slab.states[31].u.curly.c1' => 4, 'regmatch_slab.states[31].u.curly.c2' => 4, 'regmatch_slab.states[31].u.curly.count' => 4, 'regmatch_slab.states[31].u.curly.cp' => 4, 'regmatch_slab.states[31].u.curly.max' => 4, 'regmatch_slab.states[31].u.curly.maxpos' => 4, 'regmatch_slab.states[31].u.curly.min' => 4, 'regmatch_slab.states[31].u.curly.oldloc' => 4, 'regmatch_slab.states[31].u.curly.paren' => 4, 'regmatch_slab.states[31].u.curlym' => 37, 'regmatch_slab.states[31].u.curlym.A' => 4, 'regmatch_slab.states[31].u.curlym.B' => 4, 'regmatch_slab.states[31].u.curlym.alen' => 4, 'regmatch_slab.states[31].u.curlym.c1' => 4, 'regmatch_slab.states[31].u.curlym.c2' => 4, 'regmatch_slab.states[31].u.curlym.count' => 4, 'regmatch_slab.states[31].u.curlym.cp' => 4, 'regmatch_slab.states[31].u.curlym.me' => 4, 'regmatch_slab.states[31].u.curlym.minmod' => 1, 'regmatch_slab.states[31].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[31].u.curlyx' => 41, 'regmatch_slab.states[31].u.curlyx.A' => 4, 'regmatch_slab.states[31].u.curlyx.B' => 4, 'regmatch_slab.states[31].u.curlyx.count' => 4, 'regmatch_slab.states[31].u.curlyx.cp' => 4, 'regmatch_slab.states[31].u.curlyx.lastloc' => 4, 'regmatch_slab.states[31].u.curlyx.max' => 4, 'regmatch_slab.states[31].u.curlyx.min' => 4, 'regmatch_slab.states[31].u.curlyx.minmod' => 1, 'regmatch_slab.states[31].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[31].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[31].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[31].u.eval' => 36, 'regmatch_slab.states[31].u.eval.B' => 4, 'regmatch_slab.states[31].u.eval.close_paren' => 4, 'regmatch_slab.states[31].u.eval.cp' => 4, 'regmatch_slab.states[31].u.eval.lastcp' => 4, 'regmatch_slab.states[31].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[31].u.eval.prev_eval' => 4, 'regmatch_slab.states[31].u.eval.prev_rex' => 4, 'regmatch_slab.states[31].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[31].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[31].u.ifmatch' => 16, 'regmatch_slab.states[31].u.ifmatch.logical' => 4, 'regmatch_slab.states[31].u.ifmatch.me' => 4, 'regmatch_slab.states[31].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[31].u.ifmatch.wanted' => 4, 'regmatch_slab.states[31].u.trie' => 20, 'regmatch_slab.states[31].u.trie.B' => 4, 'regmatch_slab.states[31].u.trie.accept_buff' => 4, 'regmatch_slab.states[31].u.trie.accepted' => 4, 'regmatch_slab.states[31].u.trie.jump' => 4, 'regmatch_slab.states[31].u.trie.me' => 4, 'regmatch_slab.states[31].u.whilem' => 28, 'regmatch_slab.states[31].u.whilem.cache_mask' => 4, 'regmatch_slab.states[31].u.whilem.cache_offset' => 4, 'regmatch_slab.states[31].u.whilem.cp' => 4, 'regmatch_slab.states[31].u.whilem.lastcp' => 4, 'regmatch_slab.states[31].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[31].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[31].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[31].u.yes' => 4, 'regmatch_slab.states[31].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[32]' => 52, 'regmatch_slab.states[32].locinput' => 4, 'regmatch_slab.states[32].resume_state' => 4, 'regmatch_slab.states[32].u' => 44, 'regmatch_slab.states[32].u.branch' => 12, 'regmatch_slab.states[32].u.branch.cp' => 4, 'regmatch_slab.states[32].u.branch.lastparen' => 4, 'regmatch_slab.states[32].u.branch.next_branch' => 4, 'regmatch_slab.states[32].u.curly' => 44, 'regmatch_slab.states[32].u.curly.A' => 4, 'regmatch_slab.states[32].u.curly.B' => 4, 'regmatch_slab.states[32].u.curly.c1' => 4, 'regmatch_slab.states[32].u.curly.c2' => 4, 'regmatch_slab.states[32].u.curly.count' => 4, 'regmatch_slab.states[32].u.curly.cp' => 4, 'regmatch_slab.states[32].u.curly.max' => 4, 'regmatch_slab.states[32].u.curly.maxpos' => 4, 'regmatch_slab.states[32].u.curly.min' => 4, 'regmatch_slab.states[32].u.curly.oldloc' => 4, 'regmatch_slab.states[32].u.curly.paren' => 4, 'regmatch_slab.states[32].u.curlym' => 37, 'regmatch_slab.states[32].u.curlym.A' => 4, 'regmatch_slab.states[32].u.curlym.B' => 4, 'regmatch_slab.states[32].u.curlym.alen' => 4, 'regmatch_slab.states[32].u.curlym.c1' => 4, 'regmatch_slab.states[32].u.curlym.c2' => 4, 'regmatch_slab.states[32].u.curlym.count' => 4, 'regmatch_slab.states[32].u.curlym.cp' => 4, 'regmatch_slab.states[32].u.curlym.me' => 4, 'regmatch_slab.states[32].u.curlym.minmod' => 1, 'regmatch_slab.states[32].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[32].u.curlyx' => 41, 'regmatch_slab.states[32].u.curlyx.A' => 4, 'regmatch_slab.states[32].u.curlyx.B' => 4, 'regmatch_slab.states[32].u.curlyx.count' => 4, 'regmatch_slab.states[32].u.curlyx.cp' => 4, 'regmatch_slab.states[32].u.curlyx.lastloc' => 4, 'regmatch_slab.states[32].u.curlyx.max' => 4, 'regmatch_slab.states[32].u.curlyx.min' => 4, 'regmatch_slab.states[32].u.curlyx.minmod' => 1, 'regmatch_slab.states[32].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[32].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[32].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[32].u.eval' => 36, 'regmatch_slab.states[32].u.eval.B' => 4, 'regmatch_slab.states[32].u.eval.close_paren' => 4, 'regmatch_slab.states[32].u.eval.cp' => 4, 'regmatch_slab.states[32].u.eval.lastcp' => 4, 'regmatch_slab.states[32].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[32].u.eval.prev_eval' => 4, 'regmatch_slab.states[32].u.eval.prev_rex' => 4, 'regmatch_slab.states[32].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[32].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[32].u.ifmatch' => 16, 'regmatch_slab.states[32].u.ifmatch.logical' => 4, 'regmatch_slab.states[32].u.ifmatch.me' => 4, 'regmatch_slab.states[32].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[32].u.ifmatch.wanted' => 4, 'regmatch_slab.states[32].u.trie' => 20, 'regmatch_slab.states[32].u.trie.B' => 4, 'regmatch_slab.states[32].u.trie.accept_buff' => 4, 'regmatch_slab.states[32].u.trie.accepted' => 4, 'regmatch_slab.states[32].u.trie.jump' => 4, 'regmatch_slab.states[32].u.trie.me' => 4, 'regmatch_slab.states[32].u.whilem' => 28, 'regmatch_slab.states[32].u.whilem.cache_mask' => 4, 'regmatch_slab.states[32].u.whilem.cache_offset' => 4, 'regmatch_slab.states[32].u.whilem.cp' => 4, 'regmatch_slab.states[32].u.whilem.lastcp' => 4, 'regmatch_slab.states[32].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[32].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[32].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[32].u.yes' => 4, 'regmatch_slab.states[32].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[33]' => 52, 'regmatch_slab.states[33].locinput' => 4, 'regmatch_slab.states[33].resume_state' => 4, 'regmatch_slab.states[33].u' => 44, 'regmatch_slab.states[33].u.branch' => 12, 'regmatch_slab.states[33].u.branch.cp' => 4, 'regmatch_slab.states[33].u.branch.lastparen' => 4, 'regmatch_slab.states[33].u.branch.next_branch' => 4, 'regmatch_slab.states[33].u.curly' => 44, 'regmatch_slab.states[33].u.curly.A' => 4, 'regmatch_slab.states[33].u.curly.B' => 4, 'regmatch_slab.states[33].u.curly.c1' => 4, 'regmatch_slab.states[33].u.curly.c2' => 4, 'regmatch_slab.states[33].u.curly.count' => 4, 'regmatch_slab.states[33].u.curly.cp' => 4, 'regmatch_slab.states[33].u.curly.max' => 4, 'regmatch_slab.states[33].u.curly.maxpos' => 4, 'regmatch_slab.states[33].u.curly.min' => 4, 'regmatch_slab.states[33].u.curly.oldloc' => 4, 'regmatch_slab.states[33].u.curly.paren' => 4, 'regmatch_slab.states[33].u.curlym' => 37, 'regmatch_slab.states[33].u.curlym.A' => 4, 'regmatch_slab.states[33].u.curlym.B' => 4, 'regmatch_slab.states[33].u.curlym.alen' => 4, 'regmatch_slab.states[33].u.curlym.c1' => 4, 'regmatch_slab.states[33].u.curlym.c2' => 4, 'regmatch_slab.states[33].u.curlym.count' => 4, 'regmatch_slab.states[33].u.curlym.cp' => 4, 'regmatch_slab.states[33].u.curlym.me' => 4, 'regmatch_slab.states[33].u.curlym.minmod' => 1, 'regmatch_slab.states[33].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[33].u.curlyx' => 41, 'regmatch_slab.states[33].u.curlyx.A' => 4, 'regmatch_slab.states[33].u.curlyx.B' => 4, 'regmatch_slab.states[33].u.curlyx.count' => 4, 'regmatch_slab.states[33].u.curlyx.cp' => 4, 'regmatch_slab.states[33].u.curlyx.lastloc' => 4, 'regmatch_slab.states[33].u.curlyx.max' => 4, 'regmatch_slab.states[33].u.curlyx.min' => 4, 'regmatch_slab.states[33].u.curlyx.minmod' => 1, 'regmatch_slab.states[33].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[33].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[33].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[33].u.eval' => 36, 'regmatch_slab.states[33].u.eval.B' => 4, 'regmatch_slab.states[33].u.eval.close_paren' => 4, 'regmatch_slab.states[33].u.eval.cp' => 4, 'regmatch_slab.states[33].u.eval.lastcp' => 4, 'regmatch_slab.states[33].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[33].u.eval.prev_eval' => 4, 'regmatch_slab.states[33].u.eval.prev_rex' => 4, 'regmatch_slab.states[33].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[33].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[33].u.ifmatch' => 16, 'regmatch_slab.states[33].u.ifmatch.logical' => 4, 'regmatch_slab.states[33].u.ifmatch.me' => 4, 'regmatch_slab.states[33].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[33].u.ifmatch.wanted' => 4, 'regmatch_slab.states[33].u.trie' => 20, 'regmatch_slab.states[33].u.trie.B' => 4, 'regmatch_slab.states[33].u.trie.accept_buff' => 4, 'regmatch_slab.states[33].u.trie.accepted' => 4, 'regmatch_slab.states[33].u.trie.jump' => 4, 'regmatch_slab.states[33].u.trie.me' => 4, 'regmatch_slab.states[33].u.whilem' => 28, 'regmatch_slab.states[33].u.whilem.cache_mask' => 4, 'regmatch_slab.states[33].u.whilem.cache_offset' => 4, 'regmatch_slab.states[33].u.whilem.cp' => 4, 'regmatch_slab.states[33].u.whilem.lastcp' => 4, 'regmatch_slab.states[33].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[33].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[33].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[33].u.yes' => 4, 'regmatch_slab.states[33].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[34]' => 52, 'regmatch_slab.states[34].locinput' => 4, 'regmatch_slab.states[34].resume_state' => 4, 'regmatch_slab.states[34].u' => 44, 'regmatch_slab.states[34].u.branch' => 12, 'regmatch_slab.states[34].u.branch.cp' => 4, 'regmatch_slab.states[34].u.branch.lastparen' => 4, 'regmatch_slab.states[34].u.branch.next_branch' => 4, 'regmatch_slab.states[34].u.curly' => 44, 'regmatch_slab.states[34].u.curly.A' => 4, 'regmatch_slab.states[34].u.curly.B' => 4, 'regmatch_slab.states[34].u.curly.c1' => 4, 'regmatch_slab.states[34].u.curly.c2' => 4, 'regmatch_slab.states[34].u.curly.count' => 4, 'regmatch_slab.states[34].u.curly.cp' => 4, 'regmatch_slab.states[34].u.curly.max' => 4, 'regmatch_slab.states[34].u.curly.maxpos' => 4, 'regmatch_slab.states[34].u.curly.min' => 4, 'regmatch_slab.states[34].u.curly.oldloc' => 4, 'regmatch_slab.states[34].u.curly.paren' => 4, 'regmatch_slab.states[34].u.curlym' => 37, 'regmatch_slab.states[34].u.curlym.A' => 4, 'regmatch_slab.states[34].u.curlym.B' => 4, 'regmatch_slab.states[34].u.curlym.alen' => 4, 'regmatch_slab.states[34].u.curlym.c1' => 4, 'regmatch_slab.states[34].u.curlym.c2' => 4, 'regmatch_slab.states[34].u.curlym.count' => 4, 'regmatch_slab.states[34].u.curlym.cp' => 4, 'regmatch_slab.states[34].u.curlym.me' => 4, 'regmatch_slab.states[34].u.curlym.minmod' => 1, 'regmatch_slab.states[34].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[34].u.curlyx' => 41, 'regmatch_slab.states[34].u.curlyx.A' => 4, 'regmatch_slab.states[34].u.curlyx.B' => 4, 'regmatch_slab.states[34].u.curlyx.count' => 4, 'regmatch_slab.states[34].u.curlyx.cp' => 4, 'regmatch_slab.states[34].u.curlyx.lastloc' => 4, 'regmatch_slab.states[34].u.curlyx.max' => 4, 'regmatch_slab.states[34].u.curlyx.min' => 4, 'regmatch_slab.states[34].u.curlyx.minmod' => 1, 'regmatch_slab.states[34].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[34].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[34].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[34].u.eval' => 36, 'regmatch_slab.states[34].u.eval.B' => 4, 'regmatch_slab.states[34].u.eval.close_paren' => 4, 'regmatch_slab.states[34].u.eval.cp' => 4, 'regmatch_slab.states[34].u.eval.lastcp' => 4, 'regmatch_slab.states[34].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[34].u.eval.prev_eval' => 4, 'regmatch_slab.states[34].u.eval.prev_rex' => 4, 'regmatch_slab.states[34].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[34].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[34].u.ifmatch' => 16, 'regmatch_slab.states[34].u.ifmatch.logical' => 4, 'regmatch_slab.states[34].u.ifmatch.me' => 4, 'regmatch_slab.states[34].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[34].u.ifmatch.wanted' => 4, 'regmatch_slab.states[34].u.trie' => 20, 'regmatch_slab.states[34].u.trie.B' => 4, 'regmatch_slab.states[34].u.trie.accept_buff' => 4, 'regmatch_slab.states[34].u.trie.accepted' => 4, 'regmatch_slab.states[34].u.trie.jump' => 4, 'regmatch_slab.states[34].u.trie.me' => 4, 'regmatch_slab.states[34].u.whilem' => 28, 'regmatch_slab.states[34].u.whilem.cache_mask' => 4, 'regmatch_slab.states[34].u.whilem.cache_offset' => 4, 'regmatch_slab.states[34].u.whilem.cp' => 4, 'regmatch_slab.states[34].u.whilem.lastcp' => 4, 'regmatch_slab.states[34].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[34].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[34].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[34].u.yes' => 4, 'regmatch_slab.states[34].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[35]' => 52, 'regmatch_slab.states[35].locinput' => 4, 'regmatch_slab.states[35].resume_state' => 4, 'regmatch_slab.states[35].u' => 44, 'regmatch_slab.states[35].u.branch' => 12, 'regmatch_slab.states[35].u.branch.cp' => 4, 'regmatch_slab.states[35].u.branch.lastparen' => 4, 'regmatch_slab.states[35].u.branch.next_branch' => 4, 'regmatch_slab.states[35].u.curly' => 44, 'regmatch_slab.states[35].u.curly.A' => 4, 'regmatch_slab.states[35].u.curly.B' => 4, 'regmatch_slab.states[35].u.curly.c1' => 4, 'regmatch_slab.states[35].u.curly.c2' => 4, 'regmatch_slab.states[35].u.curly.count' => 4, 'regmatch_slab.states[35].u.curly.cp' => 4, 'regmatch_slab.states[35].u.curly.max' => 4, 'regmatch_slab.states[35].u.curly.maxpos' => 4, 'regmatch_slab.states[35].u.curly.min' => 4, 'regmatch_slab.states[35].u.curly.oldloc' => 4, 'regmatch_slab.states[35].u.curly.paren' => 4, 'regmatch_slab.states[35].u.curlym' => 37, 'regmatch_slab.states[35].u.curlym.A' => 4, 'regmatch_slab.states[35].u.curlym.B' => 4, 'regmatch_slab.states[35].u.curlym.alen' => 4, 'regmatch_slab.states[35].u.curlym.c1' => 4, 'regmatch_slab.states[35].u.curlym.c2' => 4, 'regmatch_slab.states[35].u.curlym.count' => 4, 'regmatch_slab.states[35].u.curlym.cp' => 4, 'regmatch_slab.states[35].u.curlym.me' => 4, 'regmatch_slab.states[35].u.curlym.minmod' => 1, 'regmatch_slab.states[35].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[35].u.curlyx' => 41, 'regmatch_slab.states[35].u.curlyx.A' => 4, 'regmatch_slab.states[35].u.curlyx.B' => 4, 'regmatch_slab.states[35].u.curlyx.count' => 4, 'regmatch_slab.states[35].u.curlyx.cp' => 4, 'regmatch_slab.states[35].u.curlyx.lastloc' => 4, 'regmatch_slab.states[35].u.curlyx.max' => 4, 'regmatch_slab.states[35].u.curlyx.min' => 4, 'regmatch_slab.states[35].u.curlyx.minmod' => 1, 'regmatch_slab.states[35].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[35].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[35].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[35].u.eval' => 36, 'regmatch_slab.states[35].u.eval.B' => 4, 'regmatch_slab.states[35].u.eval.close_paren' => 4, 'regmatch_slab.states[35].u.eval.cp' => 4, 'regmatch_slab.states[35].u.eval.lastcp' => 4, 'regmatch_slab.states[35].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[35].u.eval.prev_eval' => 4, 'regmatch_slab.states[35].u.eval.prev_rex' => 4, 'regmatch_slab.states[35].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[35].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[35].u.ifmatch' => 16, 'regmatch_slab.states[35].u.ifmatch.logical' => 4, 'regmatch_slab.states[35].u.ifmatch.me' => 4, 'regmatch_slab.states[35].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[35].u.ifmatch.wanted' => 4, 'regmatch_slab.states[35].u.trie' => 20, 'regmatch_slab.states[35].u.trie.B' => 4, 'regmatch_slab.states[35].u.trie.accept_buff' => 4, 'regmatch_slab.states[35].u.trie.accepted' => 4, 'regmatch_slab.states[35].u.trie.jump' => 4, 'regmatch_slab.states[35].u.trie.me' => 4, 'regmatch_slab.states[35].u.whilem' => 28, 'regmatch_slab.states[35].u.whilem.cache_mask' => 4, 'regmatch_slab.states[35].u.whilem.cache_offset' => 4, 'regmatch_slab.states[35].u.whilem.cp' => 4, 'regmatch_slab.states[35].u.whilem.lastcp' => 4, 'regmatch_slab.states[35].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[35].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[35].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[35].u.yes' => 4, 'regmatch_slab.states[35].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[36]' => 52, 'regmatch_slab.states[36].locinput' => 4, 'regmatch_slab.states[36].resume_state' => 4, 'regmatch_slab.states[36].u' => 44, 'regmatch_slab.states[36].u.branch' => 12, 'regmatch_slab.states[36].u.branch.cp' => 4, 'regmatch_slab.states[36].u.branch.lastparen' => 4, 'regmatch_slab.states[36].u.branch.next_branch' => 4, 'regmatch_slab.states[36].u.curly' => 44, 'regmatch_slab.states[36].u.curly.A' => 4, 'regmatch_slab.states[36].u.curly.B' => 4, 'regmatch_slab.states[36].u.curly.c1' => 4, 'regmatch_slab.states[36].u.curly.c2' => 4, 'regmatch_slab.states[36].u.curly.count' => 4, 'regmatch_slab.states[36].u.curly.cp' => 4, 'regmatch_slab.states[36].u.curly.max' => 4, 'regmatch_slab.states[36].u.curly.maxpos' => 4, 'regmatch_slab.states[36].u.curly.min' => 4, 'regmatch_slab.states[36].u.curly.oldloc' => 4, 'regmatch_slab.states[36].u.curly.paren' => 4, 'regmatch_slab.states[36].u.curlym' => 37, 'regmatch_slab.states[36].u.curlym.A' => 4, 'regmatch_slab.states[36].u.curlym.B' => 4, 'regmatch_slab.states[36].u.curlym.alen' => 4, 'regmatch_slab.states[36].u.curlym.c1' => 4, 'regmatch_slab.states[36].u.curlym.c2' => 4, 'regmatch_slab.states[36].u.curlym.count' => 4, 'regmatch_slab.states[36].u.curlym.cp' => 4, 'regmatch_slab.states[36].u.curlym.me' => 4, 'regmatch_slab.states[36].u.curlym.minmod' => 1, 'regmatch_slab.states[36].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[36].u.curlyx' => 41, 'regmatch_slab.states[36].u.curlyx.A' => 4, 'regmatch_slab.states[36].u.curlyx.B' => 4, 'regmatch_slab.states[36].u.curlyx.count' => 4, 'regmatch_slab.states[36].u.curlyx.cp' => 4, 'regmatch_slab.states[36].u.curlyx.lastloc' => 4, 'regmatch_slab.states[36].u.curlyx.max' => 4, 'regmatch_slab.states[36].u.curlyx.min' => 4, 'regmatch_slab.states[36].u.curlyx.minmod' => 1, 'regmatch_slab.states[36].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[36].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[36].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[36].u.eval' => 36, 'regmatch_slab.states[36].u.eval.B' => 4, 'regmatch_slab.states[36].u.eval.close_paren' => 4, 'regmatch_slab.states[36].u.eval.cp' => 4, 'regmatch_slab.states[36].u.eval.lastcp' => 4, 'regmatch_slab.states[36].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[36].u.eval.prev_eval' => 4, 'regmatch_slab.states[36].u.eval.prev_rex' => 4, 'regmatch_slab.states[36].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[36].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[36].u.ifmatch' => 16, 'regmatch_slab.states[36].u.ifmatch.logical' => 4, 'regmatch_slab.states[36].u.ifmatch.me' => 4, 'regmatch_slab.states[36].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[36].u.ifmatch.wanted' => 4, 'regmatch_slab.states[36].u.trie' => 20, 'regmatch_slab.states[36].u.trie.B' => 4, 'regmatch_slab.states[36].u.trie.accept_buff' => 4, 'regmatch_slab.states[36].u.trie.accepted' => 4, 'regmatch_slab.states[36].u.trie.jump' => 4, 'regmatch_slab.states[36].u.trie.me' => 4, 'regmatch_slab.states[36].u.whilem' => 28, 'regmatch_slab.states[36].u.whilem.cache_mask' => 4, 'regmatch_slab.states[36].u.whilem.cache_offset' => 4, 'regmatch_slab.states[36].u.whilem.cp' => 4, 'regmatch_slab.states[36].u.whilem.lastcp' => 4, 'regmatch_slab.states[36].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[36].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[36].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[36].u.yes' => 4, 'regmatch_slab.states[36].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[37]' => 52, 'regmatch_slab.states[37].locinput' => 4, 'regmatch_slab.states[37].resume_state' => 4, 'regmatch_slab.states[37].u' => 44, 'regmatch_slab.states[37].u.branch' => 12, 'regmatch_slab.states[37].u.branch.cp' => 4, 'regmatch_slab.states[37].u.branch.lastparen' => 4, 'regmatch_slab.states[37].u.branch.next_branch' => 4, 'regmatch_slab.states[37].u.curly' => 44, 'regmatch_slab.states[37].u.curly.A' => 4, 'regmatch_slab.states[37].u.curly.B' => 4, 'regmatch_slab.states[37].u.curly.c1' => 4, 'regmatch_slab.states[37].u.curly.c2' => 4, 'regmatch_slab.states[37].u.curly.count' => 4, 'regmatch_slab.states[37].u.curly.cp' => 4, 'regmatch_slab.states[37].u.curly.max' => 4, 'regmatch_slab.states[37].u.curly.maxpos' => 4, 'regmatch_slab.states[37].u.curly.min' => 4, 'regmatch_slab.states[37].u.curly.oldloc' => 4, 'regmatch_slab.states[37].u.curly.paren' => 4, 'regmatch_slab.states[37].u.curlym' => 37, 'regmatch_slab.states[37].u.curlym.A' => 4, 'regmatch_slab.states[37].u.curlym.B' => 4, 'regmatch_slab.states[37].u.curlym.alen' => 4, 'regmatch_slab.states[37].u.curlym.c1' => 4, 'regmatch_slab.states[37].u.curlym.c2' => 4, 'regmatch_slab.states[37].u.curlym.count' => 4, 'regmatch_slab.states[37].u.curlym.cp' => 4, 'regmatch_slab.states[37].u.curlym.me' => 4, 'regmatch_slab.states[37].u.curlym.minmod' => 1, 'regmatch_slab.states[37].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[37].u.curlyx' => 41, 'regmatch_slab.states[37].u.curlyx.A' => 4, 'regmatch_slab.states[37].u.curlyx.B' => 4, 'regmatch_slab.states[37].u.curlyx.count' => 4, 'regmatch_slab.states[37].u.curlyx.cp' => 4, 'regmatch_slab.states[37].u.curlyx.lastloc' => 4, 'regmatch_slab.states[37].u.curlyx.max' => 4, 'regmatch_slab.states[37].u.curlyx.min' => 4, 'regmatch_slab.states[37].u.curlyx.minmod' => 1, 'regmatch_slab.states[37].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[37].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[37].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[37].u.eval' => 36, 'regmatch_slab.states[37].u.eval.B' => 4, 'regmatch_slab.states[37].u.eval.close_paren' => 4, 'regmatch_slab.states[37].u.eval.cp' => 4, 'regmatch_slab.states[37].u.eval.lastcp' => 4, 'regmatch_slab.states[37].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[37].u.eval.prev_eval' => 4, 'regmatch_slab.states[37].u.eval.prev_rex' => 4, 'regmatch_slab.states[37].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[37].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[37].u.ifmatch' => 16, 'regmatch_slab.states[37].u.ifmatch.logical' => 4, 'regmatch_slab.states[37].u.ifmatch.me' => 4, 'regmatch_slab.states[37].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[37].u.ifmatch.wanted' => 4, 'regmatch_slab.states[37].u.trie' => 20, 'regmatch_slab.states[37].u.trie.B' => 4, 'regmatch_slab.states[37].u.trie.accept_buff' => 4, 'regmatch_slab.states[37].u.trie.accepted' => 4, 'regmatch_slab.states[37].u.trie.jump' => 4, 'regmatch_slab.states[37].u.trie.me' => 4, 'regmatch_slab.states[37].u.whilem' => 28, 'regmatch_slab.states[37].u.whilem.cache_mask' => 4, 'regmatch_slab.states[37].u.whilem.cache_offset' => 4, 'regmatch_slab.states[37].u.whilem.cp' => 4, 'regmatch_slab.states[37].u.whilem.lastcp' => 4, 'regmatch_slab.states[37].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[37].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[37].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[37].u.yes' => 4, 'regmatch_slab.states[37].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[38]' => 52, 'regmatch_slab.states[38].locinput' => 4, 'regmatch_slab.states[38].resume_state' => 4, 'regmatch_slab.states[38].u' => 44, 'regmatch_slab.states[38].u.branch' => 12, 'regmatch_slab.states[38].u.branch.cp' => 4, 'regmatch_slab.states[38].u.branch.lastparen' => 4, 'regmatch_slab.states[38].u.branch.next_branch' => 4, 'regmatch_slab.states[38].u.curly' => 44, 'regmatch_slab.states[38].u.curly.A' => 4, 'regmatch_slab.states[38].u.curly.B' => 4, 'regmatch_slab.states[38].u.curly.c1' => 4, 'regmatch_slab.states[38].u.curly.c2' => 4, 'regmatch_slab.states[38].u.curly.count' => 4, 'regmatch_slab.states[38].u.curly.cp' => 4, 'regmatch_slab.states[38].u.curly.max' => 4, 'regmatch_slab.states[38].u.curly.maxpos' => 4, 'regmatch_slab.states[38].u.curly.min' => 4, 'regmatch_slab.states[38].u.curly.oldloc' => 4, 'regmatch_slab.states[38].u.curly.paren' => 4, 'regmatch_slab.states[38].u.curlym' => 37, 'regmatch_slab.states[38].u.curlym.A' => 4, 'regmatch_slab.states[38].u.curlym.B' => 4, 'regmatch_slab.states[38].u.curlym.alen' => 4, 'regmatch_slab.states[38].u.curlym.c1' => 4, 'regmatch_slab.states[38].u.curlym.c2' => 4, 'regmatch_slab.states[38].u.curlym.count' => 4, 'regmatch_slab.states[38].u.curlym.cp' => 4, 'regmatch_slab.states[38].u.curlym.me' => 4, 'regmatch_slab.states[38].u.curlym.minmod' => 1, 'regmatch_slab.states[38].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[38].u.curlyx' => 41, 'regmatch_slab.states[38].u.curlyx.A' => 4, 'regmatch_slab.states[38].u.curlyx.B' => 4, 'regmatch_slab.states[38].u.curlyx.count' => 4, 'regmatch_slab.states[38].u.curlyx.cp' => 4, 'regmatch_slab.states[38].u.curlyx.lastloc' => 4, 'regmatch_slab.states[38].u.curlyx.max' => 4, 'regmatch_slab.states[38].u.curlyx.min' => 4, 'regmatch_slab.states[38].u.curlyx.minmod' => 1, 'regmatch_slab.states[38].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[38].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[38].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[38].u.eval' => 36, 'regmatch_slab.states[38].u.eval.B' => 4, 'regmatch_slab.states[38].u.eval.close_paren' => 4, 'regmatch_slab.states[38].u.eval.cp' => 4, 'regmatch_slab.states[38].u.eval.lastcp' => 4, 'regmatch_slab.states[38].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[38].u.eval.prev_eval' => 4, 'regmatch_slab.states[38].u.eval.prev_rex' => 4, 'regmatch_slab.states[38].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[38].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[38].u.ifmatch' => 16, 'regmatch_slab.states[38].u.ifmatch.logical' => 4, 'regmatch_slab.states[38].u.ifmatch.me' => 4, 'regmatch_slab.states[38].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[38].u.ifmatch.wanted' => 4, 'regmatch_slab.states[38].u.trie' => 20, 'regmatch_slab.states[38].u.trie.B' => 4, 'regmatch_slab.states[38].u.trie.accept_buff' => 4, 'regmatch_slab.states[38].u.trie.accepted' => 4, 'regmatch_slab.states[38].u.trie.jump' => 4, 'regmatch_slab.states[38].u.trie.me' => 4, 'regmatch_slab.states[38].u.whilem' => 28, 'regmatch_slab.states[38].u.whilem.cache_mask' => 4, 'regmatch_slab.states[38].u.whilem.cache_offset' => 4, 'regmatch_slab.states[38].u.whilem.cp' => 4, 'regmatch_slab.states[38].u.whilem.lastcp' => 4, 'regmatch_slab.states[38].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[38].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[38].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[38].u.yes' => 4, 'regmatch_slab.states[38].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[39]' => 52, 'regmatch_slab.states[39].locinput' => 4, 'regmatch_slab.states[39].resume_state' => 4, 'regmatch_slab.states[39].u' => 44, 'regmatch_slab.states[39].u.branch' => 12, 'regmatch_slab.states[39].u.branch.cp' => 4, 'regmatch_slab.states[39].u.branch.lastparen' => 4, 'regmatch_slab.states[39].u.branch.next_branch' => 4, 'regmatch_slab.states[39].u.curly' => 44, 'regmatch_slab.states[39].u.curly.A' => 4, 'regmatch_slab.states[39].u.curly.B' => 4, 'regmatch_slab.states[39].u.curly.c1' => 4, 'regmatch_slab.states[39].u.curly.c2' => 4, 'regmatch_slab.states[39].u.curly.count' => 4, 'regmatch_slab.states[39].u.curly.cp' => 4, 'regmatch_slab.states[39].u.curly.max' => 4, 'regmatch_slab.states[39].u.curly.maxpos' => 4, 'regmatch_slab.states[39].u.curly.min' => 4, 'regmatch_slab.states[39].u.curly.oldloc' => 4, 'regmatch_slab.states[39].u.curly.paren' => 4, 'regmatch_slab.states[39].u.curlym' => 37, 'regmatch_slab.states[39].u.curlym.A' => 4, 'regmatch_slab.states[39].u.curlym.B' => 4, 'regmatch_slab.states[39].u.curlym.alen' => 4, 'regmatch_slab.states[39].u.curlym.c1' => 4, 'regmatch_slab.states[39].u.curlym.c2' => 4, 'regmatch_slab.states[39].u.curlym.count' => 4, 'regmatch_slab.states[39].u.curlym.cp' => 4, 'regmatch_slab.states[39].u.curlym.me' => 4, 'regmatch_slab.states[39].u.curlym.minmod' => 1, 'regmatch_slab.states[39].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[39].u.curlyx' => 41, 'regmatch_slab.states[39].u.curlyx.A' => 4, 'regmatch_slab.states[39].u.curlyx.B' => 4, 'regmatch_slab.states[39].u.curlyx.count' => 4, 'regmatch_slab.states[39].u.curlyx.cp' => 4, 'regmatch_slab.states[39].u.curlyx.lastloc' => 4, 'regmatch_slab.states[39].u.curlyx.max' => 4, 'regmatch_slab.states[39].u.curlyx.min' => 4, 'regmatch_slab.states[39].u.curlyx.minmod' => 1, 'regmatch_slab.states[39].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[39].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[39].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[39].u.eval' => 36, 'regmatch_slab.states[39].u.eval.B' => 4, 'regmatch_slab.states[39].u.eval.close_paren' => 4, 'regmatch_slab.states[39].u.eval.cp' => 4, 'regmatch_slab.states[39].u.eval.lastcp' => 4, 'regmatch_slab.states[39].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[39].u.eval.prev_eval' => 4, 'regmatch_slab.states[39].u.eval.prev_rex' => 4, 'regmatch_slab.states[39].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[39].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[39].u.ifmatch' => 16, 'regmatch_slab.states[39].u.ifmatch.logical' => 4, 'regmatch_slab.states[39].u.ifmatch.me' => 4, 'regmatch_slab.states[39].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[39].u.ifmatch.wanted' => 4, 'regmatch_slab.states[39].u.trie' => 20, 'regmatch_slab.states[39].u.trie.B' => 4, 'regmatch_slab.states[39].u.trie.accept_buff' => 4, 'regmatch_slab.states[39].u.trie.accepted' => 4, 'regmatch_slab.states[39].u.trie.jump' => 4, 'regmatch_slab.states[39].u.trie.me' => 4, 'regmatch_slab.states[39].u.whilem' => 28, 'regmatch_slab.states[39].u.whilem.cache_mask' => 4, 'regmatch_slab.states[39].u.whilem.cache_offset' => 4, 'regmatch_slab.states[39].u.whilem.cp' => 4, 'regmatch_slab.states[39].u.whilem.lastcp' => 4, 'regmatch_slab.states[39].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[39].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[39].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[39].u.yes' => 4, 'regmatch_slab.states[39].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[3]' => 52, 'regmatch_slab.states[3].locinput' => 4, 'regmatch_slab.states[3].resume_state' => 4, 'regmatch_slab.states[3].u' => 44, 'regmatch_slab.states[3].u.branch' => 12, 'regmatch_slab.states[3].u.branch.cp' => 4, 'regmatch_slab.states[3].u.branch.lastparen' => 4, 'regmatch_slab.states[3].u.branch.next_branch' => 4, 'regmatch_slab.states[3].u.curly' => 44, 'regmatch_slab.states[3].u.curly.A' => 4, 'regmatch_slab.states[3].u.curly.B' => 4, 'regmatch_slab.states[3].u.curly.c1' => 4, 'regmatch_slab.states[3].u.curly.c2' => 4, 'regmatch_slab.states[3].u.curly.count' => 4, 'regmatch_slab.states[3].u.curly.cp' => 4, 'regmatch_slab.states[3].u.curly.max' => 4, 'regmatch_slab.states[3].u.curly.maxpos' => 4, 'regmatch_slab.states[3].u.curly.min' => 4, 'regmatch_slab.states[3].u.curly.oldloc' => 4, 'regmatch_slab.states[3].u.curly.paren' => 4, 'regmatch_slab.states[3].u.curlym' => 37, 'regmatch_slab.states[3].u.curlym.A' => 4, 'regmatch_slab.states[3].u.curlym.B' => 4, 'regmatch_slab.states[3].u.curlym.alen' => 4, 'regmatch_slab.states[3].u.curlym.c1' => 4, 'regmatch_slab.states[3].u.curlym.c2' => 4, 'regmatch_slab.states[3].u.curlym.count' => 4, 'regmatch_slab.states[3].u.curlym.cp' => 4, 'regmatch_slab.states[3].u.curlym.me' => 4, 'regmatch_slab.states[3].u.curlym.minmod' => 1, 'regmatch_slab.states[3].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[3].u.curlyx' => 41, 'regmatch_slab.states[3].u.curlyx.A' => 4, 'regmatch_slab.states[3].u.curlyx.B' => 4, 'regmatch_slab.states[3].u.curlyx.count' => 4, 'regmatch_slab.states[3].u.curlyx.cp' => 4, 'regmatch_slab.states[3].u.curlyx.lastloc' => 4, 'regmatch_slab.states[3].u.curlyx.max' => 4, 'regmatch_slab.states[3].u.curlyx.min' => 4, 'regmatch_slab.states[3].u.curlyx.minmod' => 1, 'regmatch_slab.states[3].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[3].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[3].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[3].u.eval' => 36, 'regmatch_slab.states[3].u.eval.B' => 4, 'regmatch_slab.states[3].u.eval.close_paren' => 4, 'regmatch_slab.states[3].u.eval.cp' => 4, 'regmatch_slab.states[3].u.eval.lastcp' => 4, 'regmatch_slab.states[3].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[3].u.eval.prev_eval' => 4, 'regmatch_slab.states[3].u.eval.prev_rex' => 4, 'regmatch_slab.states[3].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[3].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[3].u.ifmatch' => 16, 'regmatch_slab.states[3].u.ifmatch.logical' => 4, 'regmatch_slab.states[3].u.ifmatch.me' => 4, 'regmatch_slab.states[3].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[3].u.ifmatch.wanted' => 4, 'regmatch_slab.states[3].u.trie' => 20, 'regmatch_slab.states[3].u.trie.B' => 4, 'regmatch_slab.states[3].u.trie.accept_buff' => 4, 'regmatch_slab.states[3].u.trie.accepted' => 4, 'regmatch_slab.states[3].u.trie.jump' => 4, 'regmatch_slab.states[3].u.trie.me' => 4, 'regmatch_slab.states[3].u.whilem' => 28, 'regmatch_slab.states[3].u.whilem.cache_mask' => 4, 'regmatch_slab.states[3].u.whilem.cache_offset' => 4, 'regmatch_slab.states[3].u.whilem.cp' => 4, 'regmatch_slab.states[3].u.whilem.lastcp' => 4, 'regmatch_slab.states[3].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[3].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[3].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[3].u.yes' => 4, 'regmatch_slab.states[3].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[40]' => 52, 'regmatch_slab.states[40].locinput' => 4, 'regmatch_slab.states[40].resume_state' => 4, 'regmatch_slab.states[40].u' => 44, 'regmatch_slab.states[40].u.branch' => 12, 'regmatch_slab.states[40].u.branch.cp' => 4, 'regmatch_slab.states[40].u.branch.lastparen' => 4, 'regmatch_slab.states[40].u.branch.next_branch' => 4, 'regmatch_slab.states[40].u.curly' => 44, 'regmatch_slab.states[40].u.curly.A' => 4, 'regmatch_slab.states[40].u.curly.B' => 4, 'regmatch_slab.states[40].u.curly.c1' => 4, 'regmatch_slab.states[40].u.curly.c2' => 4, 'regmatch_slab.states[40].u.curly.count' => 4, 'regmatch_slab.states[40].u.curly.cp' => 4, 'regmatch_slab.states[40].u.curly.max' => 4, 'regmatch_slab.states[40].u.curly.maxpos' => 4, 'regmatch_slab.states[40].u.curly.min' => 4, 'regmatch_slab.states[40].u.curly.oldloc' => 4, 'regmatch_slab.states[40].u.curly.paren' => 4, 'regmatch_slab.states[40].u.curlym' => 37, 'regmatch_slab.states[40].u.curlym.A' => 4, 'regmatch_slab.states[40].u.curlym.B' => 4, 'regmatch_slab.states[40].u.curlym.alen' => 4, 'regmatch_slab.states[40].u.curlym.c1' => 4, 'regmatch_slab.states[40].u.curlym.c2' => 4, 'regmatch_slab.states[40].u.curlym.count' => 4, 'regmatch_slab.states[40].u.curlym.cp' => 4, 'regmatch_slab.states[40].u.curlym.me' => 4, 'regmatch_slab.states[40].u.curlym.minmod' => 1, 'regmatch_slab.states[40].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[40].u.curlyx' => 41, 'regmatch_slab.states[40].u.curlyx.A' => 4, 'regmatch_slab.states[40].u.curlyx.B' => 4, 'regmatch_slab.states[40].u.curlyx.count' => 4, 'regmatch_slab.states[40].u.curlyx.cp' => 4, 'regmatch_slab.states[40].u.curlyx.lastloc' => 4, 'regmatch_slab.states[40].u.curlyx.max' => 4, 'regmatch_slab.states[40].u.curlyx.min' => 4, 'regmatch_slab.states[40].u.curlyx.minmod' => 1, 'regmatch_slab.states[40].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[40].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[40].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[40].u.eval' => 36, 'regmatch_slab.states[40].u.eval.B' => 4, 'regmatch_slab.states[40].u.eval.close_paren' => 4, 'regmatch_slab.states[40].u.eval.cp' => 4, 'regmatch_slab.states[40].u.eval.lastcp' => 4, 'regmatch_slab.states[40].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[40].u.eval.prev_eval' => 4, 'regmatch_slab.states[40].u.eval.prev_rex' => 4, 'regmatch_slab.states[40].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[40].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[40].u.ifmatch' => 16, 'regmatch_slab.states[40].u.ifmatch.logical' => 4, 'regmatch_slab.states[40].u.ifmatch.me' => 4, 'regmatch_slab.states[40].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[40].u.ifmatch.wanted' => 4, 'regmatch_slab.states[40].u.trie' => 20, 'regmatch_slab.states[40].u.trie.B' => 4, 'regmatch_slab.states[40].u.trie.accept_buff' => 4, 'regmatch_slab.states[40].u.trie.accepted' => 4, 'regmatch_slab.states[40].u.trie.jump' => 4, 'regmatch_slab.states[40].u.trie.me' => 4, 'regmatch_slab.states[40].u.whilem' => 28, 'regmatch_slab.states[40].u.whilem.cache_mask' => 4, 'regmatch_slab.states[40].u.whilem.cache_offset' => 4, 'regmatch_slab.states[40].u.whilem.cp' => 4, 'regmatch_slab.states[40].u.whilem.lastcp' => 4, 'regmatch_slab.states[40].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[40].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[40].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[40].u.yes' => 4, 'regmatch_slab.states[40].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[41]' => 52, 'regmatch_slab.states[41].locinput' => 4, 'regmatch_slab.states[41].resume_state' => 4, 'regmatch_slab.states[41].u' => 44, 'regmatch_slab.states[41].u.branch' => 12, 'regmatch_slab.states[41].u.branch.cp' => 4, 'regmatch_slab.states[41].u.branch.lastparen' => 4, 'regmatch_slab.states[41].u.branch.next_branch' => 4, 'regmatch_slab.states[41].u.curly' => 44, 'regmatch_slab.states[41].u.curly.A' => 4, 'regmatch_slab.states[41].u.curly.B' => 4, 'regmatch_slab.states[41].u.curly.c1' => 4, 'regmatch_slab.states[41].u.curly.c2' => 4, 'regmatch_slab.states[41].u.curly.count' => 4, 'regmatch_slab.states[41].u.curly.cp' => 4, 'regmatch_slab.states[41].u.curly.max' => 4, 'regmatch_slab.states[41].u.curly.maxpos' => 4, 'regmatch_slab.states[41].u.curly.min' => 4, 'regmatch_slab.states[41].u.curly.oldloc' => 4, 'regmatch_slab.states[41].u.curly.paren' => 4, 'regmatch_slab.states[41].u.curlym' => 37, 'regmatch_slab.states[41].u.curlym.A' => 4, 'regmatch_slab.states[41].u.curlym.B' => 4, 'regmatch_slab.states[41].u.curlym.alen' => 4, 'regmatch_slab.states[41].u.curlym.c1' => 4, 'regmatch_slab.states[41].u.curlym.c2' => 4, 'regmatch_slab.states[41].u.curlym.count' => 4, 'regmatch_slab.states[41].u.curlym.cp' => 4, 'regmatch_slab.states[41].u.curlym.me' => 4, 'regmatch_slab.states[41].u.curlym.minmod' => 1, 'regmatch_slab.states[41].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[41].u.curlyx' => 41, 'regmatch_slab.states[41].u.curlyx.A' => 4, 'regmatch_slab.states[41].u.curlyx.B' => 4, 'regmatch_slab.states[41].u.curlyx.count' => 4, 'regmatch_slab.states[41].u.curlyx.cp' => 4, 'regmatch_slab.states[41].u.curlyx.lastloc' => 4, 'regmatch_slab.states[41].u.curlyx.max' => 4, 'regmatch_slab.states[41].u.curlyx.min' => 4, 'regmatch_slab.states[41].u.curlyx.minmod' => 1, 'regmatch_slab.states[41].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[41].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[41].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[41].u.eval' => 36, 'regmatch_slab.states[41].u.eval.B' => 4, 'regmatch_slab.states[41].u.eval.close_paren' => 4, 'regmatch_slab.states[41].u.eval.cp' => 4, 'regmatch_slab.states[41].u.eval.lastcp' => 4, 'regmatch_slab.states[41].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[41].u.eval.prev_eval' => 4, 'regmatch_slab.states[41].u.eval.prev_rex' => 4, 'regmatch_slab.states[41].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[41].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[41].u.ifmatch' => 16, 'regmatch_slab.states[41].u.ifmatch.logical' => 4, 'regmatch_slab.states[41].u.ifmatch.me' => 4, 'regmatch_slab.states[41].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[41].u.ifmatch.wanted' => 4, 'regmatch_slab.states[41].u.trie' => 20, 'regmatch_slab.states[41].u.trie.B' => 4, 'regmatch_slab.states[41].u.trie.accept_buff' => 4, 'regmatch_slab.states[41].u.trie.accepted' => 4, 'regmatch_slab.states[41].u.trie.jump' => 4, 'regmatch_slab.states[41].u.trie.me' => 4, 'regmatch_slab.states[41].u.whilem' => 28, 'regmatch_slab.states[41].u.whilem.cache_mask' => 4, 'regmatch_slab.states[41].u.whilem.cache_offset' => 4, 'regmatch_slab.states[41].u.whilem.cp' => 4, 'regmatch_slab.states[41].u.whilem.lastcp' => 4, 'regmatch_slab.states[41].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[41].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[41].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[41].u.yes' => 4, 'regmatch_slab.states[41].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[42]' => 52, 'regmatch_slab.states[42].locinput' => 4, 'regmatch_slab.states[42].resume_state' => 4, 'regmatch_slab.states[42].u' => 44, 'regmatch_slab.states[42].u.branch' => 12, 'regmatch_slab.states[42].u.branch.cp' => 4, 'regmatch_slab.states[42].u.branch.lastparen' => 4, 'regmatch_slab.states[42].u.branch.next_branch' => 4, 'regmatch_slab.states[42].u.curly' => 44, 'regmatch_slab.states[42].u.curly.A' => 4, 'regmatch_slab.states[42].u.curly.B' => 4, 'regmatch_slab.states[42].u.curly.c1' => 4, 'regmatch_slab.states[42].u.curly.c2' => 4, 'regmatch_slab.states[42].u.curly.count' => 4, 'regmatch_slab.states[42].u.curly.cp' => 4, 'regmatch_slab.states[42].u.curly.max' => 4, 'regmatch_slab.states[42].u.curly.maxpos' => 4, 'regmatch_slab.states[42].u.curly.min' => 4, 'regmatch_slab.states[42].u.curly.oldloc' => 4, 'regmatch_slab.states[42].u.curly.paren' => 4, 'regmatch_slab.states[42].u.curlym' => 37, 'regmatch_slab.states[42].u.curlym.A' => 4, 'regmatch_slab.states[42].u.curlym.B' => 4, 'regmatch_slab.states[42].u.curlym.alen' => 4, 'regmatch_slab.states[42].u.curlym.c1' => 4, 'regmatch_slab.states[42].u.curlym.c2' => 4, 'regmatch_slab.states[42].u.curlym.count' => 4, 'regmatch_slab.states[42].u.curlym.cp' => 4, 'regmatch_slab.states[42].u.curlym.me' => 4, 'regmatch_slab.states[42].u.curlym.minmod' => 1, 'regmatch_slab.states[42].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[42].u.curlyx' => 41, 'regmatch_slab.states[42].u.curlyx.A' => 4, 'regmatch_slab.states[42].u.curlyx.B' => 4, 'regmatch_slab.states[42].u.curlyx.count' => 4, 'regmatch_slab.states[42].u.curlyx.cp' => 4, 'regmatch_slab.states[42].u.curlyx.lastloc' => 4, 'regmatch_slab.states[42].u.curlyx.max' => 4, 'regmatch_slab.states[42].u.curlyx.min' => 4, 'regmatch_slab.states[42].u.curlyx.minmod' => 1, 'regmatch_slab.states[42].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[42].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[42].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[42].u.eval' => 36, 'regmatch_slab.states[42].u.eval.B' => 4, 'regmatch_slab.states[42].u.eval.close_paren' => 4, 'regmatch_slab.states[42].u.eval.cp' => 4, 'regmatch_slab.states[42].u.eval.lastcp' => 4, 'regmatch_slab.states[42].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[42].u.eval.prev_eval' => 4, 'regmatch_slab.states[42].u.eval.prev_rex' => 4, 'regmatch_slab.states[42].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[42].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[42].u.ifmatch' => 16, 'regmatch_slab.states[42].u.ifmatch.logical' => 4, 'regmatch_slab.states[42].u.ifmatch.me' => 4, 'regmatch_slab.states[42].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[42].u.ifmatch.wanted' => 4, 'regmatch_slab.states[42].u.trie' => 20, 'regmatch_slab.states[42].u.trie.B' => 4, 'regmatch_slab.states[42].u.trie.accept_buff' => 4, 'regmatch_slab.states[42].u.trie.accepted' => 4, 'regmatch_slab.states[42].u.trie.jump' => 4, 'regmatch_slab.states[42].u.trie.me' => 4, 'regmatch_slab.states[42].u.whilem' => 28, 'regmatch_slab.states[42].u.whilem.cache_mask' => 4, 'regmatch_slab.states[42].u.whilem.cache_offset' => 4, 'regmatch_slab.states[42].u.whilem.cp' => 4, 'regmatch_slab.states[42].u.whilem.lastcp' => 4, 'regmatch_slab.states[42].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[42].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[42].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[42].u.yes' => 4, 'regmatch_slab.states[42].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[43]' => 52, 'regmatch_slab.states[43].locinput' => 4, 'regmatch_slab.states[43].resume_state' => 4, 'regmatch_slab.states[43].u' => 44, 'regmatch_slab.states[43].u.branch' => 12, 'regmatch_slab.states[43].u.branch.cp' => 4, 'regmatch_slab.states[43].u.branch.lastparen' => 4, 'regmatch_slab.states[43].u.branch.next_branch' => 4, 'regmatch_slab.states[43].u.curly' => 44, 'regmatch_slab.states[43].u.curly.A' => 4, 'regmatch_slab.states[43].u.curly.B' => 4, 'regmatch_slab.states[43].u.curly.c1' => 4, 'regmatch_slab.states[43].u.curly.c2' => 4, 'regmatch_slab.states[43].u.curly.count' => 4, 'regmatch_slab.states[43].u.curly.cp' => 4, 'regmatch_slab.states[43].u.curly.max' => 4, 'regmatch_slab.states[43].u.curly.maxpos' => 4, 'regmatch_slab.states[43].u.curly.min' => 4, 'regmatch_slab.states[43].u.curly.oldloc' => 4, 'regmatch_slab.states[43].u.curly.paren' => 4, 'regmatch_slab.states[43].u.curlym' => 37, 'regmatch_slab.states[43].u.curlym.A' => 4, 'regmatch_slab.states[43].u.curlym.B' => 4, 'regmatch_slab.states[43].u.curlym.alen' => 4, 'regmatch_slab.states[43].u.curlym.c1' => 4, 'regmatch_slab.states[43].u.curlym.c2' => 4, 'regmatch_slab.states[43].u.curlym.count' => 4, 'regmatch_slab.states[43].u.curlym.cp' => 4, 'regmatch_slab.states[43].u.curlym.me' => 4, 'regmatch_slab.states[43].u.curlym.minmod' => 1, 'regmatch_slab.states[43].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[43].u.curlyx' => 41, 'regmatch_slab.states[43].u.curlyx.A' => 4, 'regmatch_slab.states[43].u.curlyx.B' => 4, 'regmatch_slab.states[43].u.curlyx.count' => 4, 'regmatch_slab.states[43].u.curlyx.cp' => 4, 'regmatch_slab.states[43].u.curlyx.lastloc' => 4, 'regmatch_slab.states[43].u.curlyx.max' => 4, 'regmatch_slab.states[43].u.curlyx.min' => 4, 'regmatch_slab.states[43].u.curlyx.minmod' => 1, 'regmatch_slab.states[43].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[43].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[43].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[43].u.eval' => 36, 'regmatch_slab.states[43].u.eval.B' => 4, 'regmatch_slab.states[43].u.eval.close_paren' => 4, 'regmatch_slab.states[43].u.eval.cp' => 4, 'regmatch_slab.states[43].u.eval.lastcp' => 4, 'regmatch_slab.states[43].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[43].u.eval.prev_eval' => 4, 'regmatch_slab.states[43].u.eval.prev_rex' => 4, 'regmatch_slab.states[43].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[43].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[43].u.ifmatch' => 16, 'regmatch_slab.states[43].u.ifmatch.logical' => 4, 'regmatch_slab.states[43].u.ifmatch.me' => 4, 'regmatch_slab.states[43].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[43].u.ifmatch.wanted' => 4, 'regmatch_slab.states[43].u.trie' => 20, 'regmatch_slab.states[43].u.trie.B' => 4, 'regmatch_slab.states[43].u.trie.accept_buff' => 4, 'regmatch_slab.states[43].u.trie.accepted' => 4, 'regmatch_slab.states[43].u.trie.jump' => 4, 'regmatch_slab.states[43].u.trie.me' => 4, 'regmatch_slab.states[43].u.whilem' => 28, 'regmatch_slab.states[43].u.whilem.cache_mask' => 4, 'regmatch_slab.states[43].u.whilem.cache_offset' => 4, 'regmatch_slab.states[43].u.whilem.cp' => 4, 'regmatch_slab.states[43].u.whilem.lastcp' => 4, 'regmatch_slab.states[43].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[43].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[43].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[43].u.yes' => 4, 'regmatch_slab.states[43].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[44]' => 52, 'regmatch_slab.states[44].locinput' => 4, 'regmatch_slab.states[44].resume_state' => 4, 'regmatch_slab.states[44].u' => 44, 'regmatch_slab.states[44].u.branch' => 12, 'regmatch_slab.states[44].u.branch.cp' => 4, 'regmatch_slab.states[44].u.branch.lastparen' => 4, 'regmatch_slab.states[44].u.branch.next_branch' => 4, 'regmatch_slab.states[44].u.curly' => 44, 'regmatch_slab.states[44].u.curly.A' => 4, 'regmatch_slab.states[44].u.curly.B' => 4, 'regmatch_slab.states[44].u.curly.c1' => 4, 'regmatch_slab.states[44].u.curly.c2' => 4, 'regmatch_slab.states[44].u.curly.count' => 4, 'regmatch_slab.states[44].u.curly.cp' => 4, 'regmatch_slab.states[44].u.curly.max' => 4, 'regmatch_slab.states[44].u.curly.maxpos' => 4, 'regmatch_slab.states[44].u.curly.min' => 4, 'regmatch_slab.states[44].u.curly.oldloc' => 4, 'regmatch_slab.states[44].u.curly.paren' => 4, 'regmatch_slab.states[44].u.curlym' => 37, 'regmatch_slab.states[44].u.curlym.A' => 4, 'regmatch_slab.states[44].u.curlym.B' => 4, 'regmatch_slab.states[44].u.curlym.alen' => 4, 'regmatch_slab.states[44].u.curlym.c1' => 4, 'regmatch_slab.states[44].u.curlym.c2' => 4, 'regmatch_slab.states[44].u.curlym.count' => 4, 'regmatch_slab.states[44].u.curlym.cp' => 4, 'regmatch_slab.states[44].u.curlym.me' => 4, 'regmatch_slab.states[44].u.curlym.minmod' => 1, 'regmatch_slab.states[44].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[44].u.curlyx' => 41, 'regmatch_slab.states[44].u.curlyx.A' => 4, 'regmatch_slab.states[44].u.curlyx.B' => 4, 'regmatch_slab.states[44].u.curlyx.count' => 4, 'regmatch_slab.states[44].u.curlyx.cp' => 4, 'regmatch_slab.states[44].u.curlyx.lastloc' => 4, 'regmatch_slab.states[44].u.curlyx.max' => 4, 'regmatch_slab.states[44].u.curlyx.min' => 4, 'regmatch_slab.states[44].u.curlyx.minmod' => 1, 'regmatch_slab.states[44].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[44].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[44].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[44].u.eval' => 36, 'regmatch_slab.states[44].u.eval.B' => 4, 'regmatch_slab.states[44].u.eval.close_paren' => 4, 'regmatch_slab.states[44].u.eval.cp' => 4, 'regmatch_slab.states[44].u.eval.lastcp' => 4, 'regmatch_slab.states[44].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[44].u.eval.prev_eval' => 4, 'regmatch_slab.states[44].u.eval.prev_rex' => 4, 'regmatch_slab.states[44].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[44].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[44].u.ifmatch' => 16, 'regmatch_slab.states[44].u.ifmatch.logical' => 4, 'regmatch_slab.states[44].u.ifmatch.me' => 4, 'regmatch_slab.states[44].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[44].u.ifmatch.wanted' => 4, 'regmatch_slab.states[44].u.trie' => 20, 'regmatch_slab.states[44].u.trie.B' => 4, 'regmatch_slab.states[44].u.trie.accept_buff' => 4, 'regmatch_slab.states[44].u.trie.accepted' => 4, 'regmatch_slab.states[44].u.trie.jump' => 4, 'regmatch_slab.states[44].u.trie.me' => 4, 'regmatch_slab.states[44].u.whilem' => 28, 'regmatch_slab.states[44].u.whilem.cache_mask' => 4, 'regmatch_slab.states[44].u.whilem.cache_offset' => 4, 'regmatch_slab.states[44].u.whilem.cp' => 4, 'regmatch_slab.states[44].u.whilem.lastcp' => 4, 'regmatch_slab.states[44].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[44].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[44].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[44].u.yes' => 4, 'regmatch_slab.states[44].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[45]' => 52, 'regmatch_slab.states[45].locinput' => 4, 'regmatch_slab.states[45].resume_state' => 4, 'regmatch_slab.states[45].u' => 44, 'regmatch_slab.states[45].u.branch' => 12, 'regmatch_slab.states[45].u.branch.cp' => 4, 'regmatch_slab.states[45].u.branch.lastparen' => 4, 'regmatch_slab.states[45].u.branch.next_branch' => 4, 'regmatch_slab.states[45].u.curly' => 44, 'regmatch_slab.states[45].u.curly.A' => 4, 'regmatch_slab.states[45].u.curly.B' => 4, 'regmatch_slab.states[45].u.curly.c1' => 4, 'regmatch_slab.states[45].u.curly.c2' => 4, 'regmatch_slab.states[45].u.curly.count' => 4, 'regmatch_slab.states[45].u.curly.cp' => 4, 'regmatch_slab.states[45].u.curly.max' => 4, 'regmatch_slab.states[45].u.curly.maxpos' => 4, 'regmatch_slab.states[45].u.curly.min' => 4, 'regmatch_slab.states[45].u.curly.oldloc' => 4, 'regmatch_slab.states[45].u.curly.paren' => 4, 'regmatch_slab.states[45].u.curlym' => 37, 'regmatch_slab.states[45].u.curlym.A' => 4, 'regmatch_slab.states[45].u.curlym.B' => 4, 'regmatch_slab.states[45].u.curlym.alen' => 4, 'regmatch_slab.states[45].u.curlym.c1' => 4, 'regmatch_slab.states[45].u.curlym.c2' => 4, 'regmatch_slab.states[45].u.curlym.count' => 4, 'regmatch_slab.states[45].u.curlym.cp' => 4, 'regmatch_slab.states[45].u.curlym.me' => 4, 'regmatch_slab.states[45].u.curlym.minmod' => 1, 'regmatch_slab.states[45].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[45].u.curlyx' => 41, 'regmatch_slab.states[45].u.curlyx.A' => 4, 'regmatch_slab.states[45].u.curlyx.B' => 4, 'regmatch_slab.states[45].u.curlyx.count' => 4, 'regmatch_slab.states[45].u.curlyx.cp' => 4, 'regmatch_slab.states[45].u.curlyx.lastloc' => 4, 'regmatch_slab.states[45].u.curlyx.max' => 4, 'regmatch_slab.states[45].u.curlyx.min' => 4, 'regmatch_slab.states[45].u.curlyx.minmod' => 1, 'regmatch_slab.states[45].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[45].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[45].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[45].u.eval' => 36, 'regmatch_slab.states[45].u.eval.B' => 4, 'regmatch_slab.states[45].u.eval.close_paren' => 4, 'regmatch_slab.states[45].u.eval.cp' => 4, 'regmatch_slab.states[45].u.eval.lastcp' => 4, 'regmatch_slab.states[45].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[45].u.eval.prev_eval' => 4, 'regmatch_slab.states[45].u.eval.prev_rex' => 4, 'regmatch_slab.states[45].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[45].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[45].u.ifmatch' => 16, 'regmatch_slab.states[45].u.ifmatch.logical' => 4, 'regmatch_slab.states[45].u.ifmatch.me' => 4, 'regmatch_slab.states[45].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[45].u.ifmatch.wanted' => 4, 'regmatch_slab.states[45].u.trie' => 20, 'regmatch_slab.states[45].u.trie.B' => 4, 'regmatch_slab.states[45].u.trie.accept_buff' => 4, 'regmatch_slab.states[45].u.trie.accepted' => 4, 'regmatch_slab.states[45].u.trie.jump' => 4, 'regmatch_slab.states[45].u.trie.me' => 4, 'regmatch_slab.states[45].u.whilem' => 28, 'regmatch_slab.states[45].u.whilem.cache_mask' => 4, 'regmatch_slab.states[45].u.whilem.cache_offset' => 4, 'regmatch_slab.states[45].u.whilem.cp' => 4, 'regmatch_slab.states[45].u.whilem.lastcp' => 4, 'regmatch_slab.states[45].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[45].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[45].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[45].u.yes' => 4, 'regmatch_slab.states[45].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[46]' => 52, 'regmatch_slab.states[46].locinput' => 4, 'regmatch_slab.states[46].resume_state' => 4, 'regmatch_slab.states[46].u' => 44, 'regmatch_slab.states[46].u.branch' => 12, 'regmatch_slab.states[46].u.branch.cp' => 4, 'regmatch_slab.states[46].u.branch.lastparen' => 4, 'regmatch_slab.states[46].u.branch.next_branch' => 4, 'regmatch_slab.states[46].u.curly' => 44, 'regmatch_slab.states[46].u.curly.A' => 4, 'regmatch_slab.states[46].u.curly.B' => 4, 'regmatch_slab.states[46].u.curly.c1' => 4, 'regmatch_slab.states[46].u.curly.c2' => 4, 'regmatch_slab.states[46].u.curly.count' => 4, 'regmatch_slab.states[46].u.curly.cp' => 4, 'regmatch_slab.states[46].u.curly.max' => 4, 'regmatch_slab.states[46].u.curly.maxpos' => 4, 'regmatch_slab.states[46].u.curly.min' => 4, 'regmatch_slab.states[46].u.curly.oldloc' => 4, 'regmatch_slab.states[46].u.curly.paren' => 4, 'regmatch_slab.states[46].u.curlym' => 37, 'regmatch_slab.states[46].u.curlym.A' => 4, 'regmatch_slab.states[46].u.curlym.B' => 4, 'regmatch_slab.states[46].u.curlym.alen' => 4, 'regmatch_slab.states[46].u.curlym.c1' => 4, 'regmatch_slab.states[46].u.curlym.c2' => 4, 'regmatch_slab.states[46].u.curlym.count' => 4, 'regmatch_slab.states[46].u.curlym.cp' => 4, 'regmatch_slab.states[46].u.curlym.me' => 4, 'regmatch_slab.states[46].u.curlym.minmod' => 1, 'regmatch_slab.states[46].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[46].u.curlyx' => 41, 'regmatch_slab.states[46].u.curlyx.A' => 4, 'regmatch_slab.states[46].u.curlyx.B' => 4, 'regmatch_slab.states[46].u.curlyx.count' => 4, 'regmatch_slab.states[46].u.curlyx.cp' => 4, 'regmatch_slab.states[46].u.curlyx.lastloc' => 4, 'regmatch_slab.states[46].u.curlyx.max' => 4, 'regmatch_slab.states[46].u.curlyx.min' => 4, 'regmatch_slab.states[46].u.curlyx.minmod' => 1, 'regmatch_slab.states[46].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[46].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[46].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[46].u.eval' => 36, 'regmatch_slab.states[46].u.eval.B' => 4, 'regmatch_slab.states[46].u.eval.close_paren' => 4, 'regmatch_slab.states[46].u.eval.cp' => 4, 'regmatch_slab.states[46].u.eval.lastcp' => 4, 'regmatch_slab.states[46].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[46].u.eval.prev_eval' => 4, 'regmatch_slab.states[46].u.eval.prev_rex' => 4, 'regmatch_slab.states[46].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[46].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[46].u.ifmatch' => 16, 'regmatch_slab.states[46].u.ifmatch.logical' => 4, 'regmatch_slab.states[46].u.ifmatch.me' => 4, 'regmatch_slab.states[46].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[46].u.ifmatch.wanted' => 4, 'regmatch_slab.states[46].u.trie' => 20, 'regmatch_slab.states[46].u.trie.B' => 4, 'regmatch_slab.states[46].u.trie.accept_buff' => 4, 'regmatch_slab.states[46].u.trie.accepted' => 4, 'regmatch_slab.states[46].u.trie.jump' => 4, 'regmatch_slab.states[46].u.trie.me' => 4, 'regmatch_slab.states[46].u.whilem' => 28, 'regmatch_slab.states[46].u.whilem.cache_mask' => 4, 'regmatch_slab.states[46].u.whilem.cache_offset' => 4, 'regmatch_slab.states[46].u.whilem.cp' => 4, 'regmatch_slab.states[46].u.whilem.lastcp' => 4, 'regmatch_slab.states[46].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[46].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[46].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[46].u.yes' => 4, 'regmatch_slab.states[46].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[47]' => 52, 'regmatch_slab.states[47].locinput' => 4, 'regmatch_slab.states[47].resume_state' => 4, 'regmatch_slab.states[47].u' => 44, 'regmatch_slab.states[47].u.branch' => 12, 'regmatch_slab.states[47].u.branch.cp' => 4, 'regmatch_slab.states[47].u.branch.lastparen' => 4, 'regmatch_slab.states[47].u.branch.next_branch' => 4, 'regmatch_slab.states[47].u.curly' => 44, 'regmatch_slab.states[47].u.curly.A' => 4, 'regmatch_slab.states[47].u.curly.B' => 4, 'regmatch_slab.states[47].u.curly.c1' => 4, 'regmatch_slab.states[47].u.curly.c2' => 4, 'regmatch_slab.states[47].u.curly.count' => 4, 'regmatch_slab.states[47].u.curly.cp' => 4, 'regmatch_slab.states[47].u.curly.max' => 4, 'regmatch_slab.states[47].u.curly.maxpos' => 4, 'regmatch_slab.states[47].u.curly.min' => 4, 'regmatch_slab.states[47].u.curly.oldloc' => 4, 'regmatch_slab.states[47].u.curly.paren' => 4, 'regmatch_slab.states[47].u.curlym' => 37, 'regmatch_slab.states[47].u.curlym.A' => 4, 'regmatch_slab.states[47].u.curlym.B' => 4, 'regmatch_slab.states[47].u.curlym.alen' => 4, 'regmatch_slab.states[47].u.curlym.c1' => 4, 'regmatch_slab.states[47].u.curlym.c2' => 4, 'regmatch_slab.states[47].u.curlym.count' => 4, 'regmatch_slab.states[47].u.curlym.cp' => 4, 'regmatch_slab.states[47].u.curlym.me' => 4, 'regmatch_slab.states[47].u.curlym.minmod' => 1, 'regmatch_slab.states[47].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[47].u.curlyx' => 41, 'regmatch_slab.states[47].u.curlyx.A' => 4, 'regmatch_slab.states[47].u.curlyx.B' => 4, 'regmatch_slab.states[47].u.curlyx.count' => 4, 'regmatch_slab.states[47].u.curlyx.cp' => 4, 'regmatch_slab.states[47].u.curlyx.lastloc' => 4, 'regmatch_slab.states[47].u.curlyx.max' => 4, 'regmatch_slab.states[47].u.curlyx.min' => 4, 'regmatch_slab.states[47].u.curlyx.minmod' => 1, 'regmatch_slab.states[47].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[47].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[47].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[47].u.eval' => 36, 'regmatch_slab.states[47].u.eval.B' => 4, 'regmatch_slab.states[47].u.eval.close_paren' => 4, 'regmatch_slab.states[47].u.eval.cp' => 4, 'regmatch_slab.states[47].u.eval.lastcp' => 4, 'regmatch_slab.states[47].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[47].u.eval.prev_eval' => 4, 'regmatch_slab.states[47].u.eval.prev_rex' => 4, 'regmatch_slab.states[47].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[47].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[47].u.ifmatch' => 16, 'regmatch_slab.states[47].u.ifmatch.logical' => 4, 'regmatch_slab.states[47].u.ifmatch.me' => 4, 'regmatch_slab.states[47].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[47].u.ifmatch.wanted' => 4, 'regmatch_slab.states[47].u.trie' => 20, 'regmatch_slab.states[47].u.trie.B' => 4, 'regmatch_slab.states[47].u.trie.accept_buff' => 4, 'regmatch_slab.states[47].u.trie.accepted' => 4, 'regmatch_slab.states[47].u.trie.jump' => 4, 'regmatch_slab.states[47].u.trie.me' => 4, 'regmatch_slab.states[47].u.whilem' => 28, 'regmatch_slab.states[47].u.whilem.cache_mask' => 4, 'regmatch_slab.states[47].u.whilem.cache_offset' => 4, 'regmatch_slab.states[47].u.whilem.cp' => 4, 'regmatch_slab.states[47].u.whilem.lastcp' => 4, 'regmatch_slab.states[47].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[47].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[47].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[47].u.yes' => 4, 'regmatch_slab.states[47].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[48]' => 52, 'regmatch_slab.states[48].locinput' => 4, 'regmatch_slab.states[48].resume_state' => 4, 'regmatch_slab.states[48].u' => 44, 'regmatch_slab.states[48].u.branch' => 12, 'regmatch_slab.states[48].u.branch.cp' => 4, 'regmatch_slab.states[48].u.branch.lastparen' => 4, 'regmatch_slab.states[48].u.branch.next_branch' => 4, 'regmatch_slab.states[48].u.curly' => 44, 'regmatch_slab.states[48].u.curly.A' => 4, 'regmatch_slab.states[48].u.curly.B' => 4, 'regmatch_slab.states[48].u.curly.c1' => 4, 'regmatch_slab.states[48].u.curly.c2' => 4, 'regmatch_slab.states[48].u.curly.count' => 4, 'regmatch_slab.states[48].u.curly.cp' => 4, 'regmatch_slab.states[48].u.curly.max' => 4, 'regmatch_slab.states[48].u.curly.maxpos' => 4, 'regmatch_slab.states[48].u.curly.min' => 4, 'regmatch_slab.states[48].u.curly.oldloc' => 4, 'regmatch_slab.states[48].u.curly.paren' => 4, 'regmatch_slab.states[48].u.curlym' => 37, 'regmatch_slab.states[48].u.curlym.A' => 4, 'regmatch_slab.states[48].u.curlym.B' => 4, 'regmatch_slab.states[48].u.curlym.alen' => 4, 'regmatch_slab.states[48].u.curlym.c1' => 4, 'regmatch_slab.states[48].u.curlym.c2' => 4, 'regmatch_slab.states[48].u.curlym.count' => 4, 'regmatch_slab.states[48].u.curlym.cp' => 4, 'regmatch_slab.states[48].u.curlym.me' => 4, 'regmatch_slab.states[48].u.curlym.minmod' => 1, 'regmatch_slab.states[48].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[48].u.curlyx' => 41, 'regmatch_slab.states[48].u.curlyx.A' => 4, 'regmatch_slab.states[48].u.curlyx.B' => 4, 'regmatch_slab.states[48].u.curlyx.count' => 4, 'regmatch_slab.states[48].u.curlyx.cp' => 4, 'regmatch_slab.states[48].u.curlyx.lastloc' => 4, 'regmatch_slab.states[48].u.curlyx.max' => 4, 'regmatch_slab.states[48].u.curlyx.min' => 4, 'regmatch_slab.states[48].u.curlyx.minmod' => 1, 'regmatch_slab.states[48].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[48].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[48].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[48].u.eval' => 36, 'regmatch_slab.states[48].u.eval.B' => 4, 'regmatch_slab.states[48].u.eval.close_paren' => 4, 'regmatch_slab.states[48].u.eval.cp' => 4, 'regmatch_slab.states[48].u.eval.lastcp' => 4, 'regmatch_slab.states[48].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[48].u.eval.prev_eval' => 4, 'regmatch_slab.states[48].u.eval.prev_rex' => 4, 'regmatch_slab.states[48].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[48].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[48].u.ifmatch' => 16, 'regmatch_slab.states[48].u.ifmatch.logical' => 4, 'regmatch_slab.states[48].u.ifmatch.me' => 4, 'regmatch_slab.states[48].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[48].u.ifmatch.wanted' => 4, 'regmatch_slab.states[48].u.trie' => 20, 'regmatch_slab.states[48].u.trie.B' => 4, 'regmatch_slab.states[48].u.trie.accept_buff' => 4, 'regmatch_slab.states[48].u.trie.accepted' => 4, 'regmatch_slab.states[48].u.trie.jump' => 4, 'regmatch_slab.states[48].u.trie.me' => 4, 'regmatch_slab.states[48].u.whilem' => 28, 'regmatch_slab.states[48].u.whilem.cache_mask' => 4, 'regmatch_slab.states[48].u.whilem.cache_offset' => 4, 'regmatch_slab.states[48].u.whilem.cp' => 4, 'regmatch_slab.states[48].u.whilem.lastcp' => 4, 'regmatch_slab.states[48].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[48].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[48].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[48].u.yes' => 4, 'regmatch_slab.states[48].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[49]' => 52, 'regmatch_slab.states[49].locinput' => 4, 'regmatch_slab.states[49].resume_state' => 4, 'regmatch_slab.states[49].u' => 44, 'regmatch_slab.states[49].u.branch' => 12, 'regmatch_slab.states[49].u.branch.cp' => 4, 'regmatch_slab.states[49].u.branch.lastparen' => 4, 'regmatch_slab.states[49].u.branch.next_branch' => 4, 'regmatch_slab.states[49].u.curly' => 44, 'regmatch_slab.states[49].u.curly.A' => 4, 'regmatch_slab.states[49].u.curly.B' => 4, 'regmatch_slab.states[49].u.curly.c1' => 4, 'regmatch_slab.states[49].u.curly.c2' => 4, 'regmatch_slab.states[49].u.curly.count' => 4, 'regmatch_slab.states[49].u.curly.cp' => 4, 'regmatch_slab.states[49].u.curly.max' => 4, 'regmatch_slab.states[49].u.curly.maxpos' => 4, 'regmatch_slab.states[49].u.curly.min' => 4, 'regmatch_slab.states[49].u.curly.oldloc' => 4, 'regmatch_slab.states[49].u.curly.paren' => 4, 'regmatch_slab.states[49].u.curlym' => 37, 'regmatch_slab.states[49].u.curlym.A' => 4, 'regmatch_slab.states[49].u.curlym.B' => 4, 'regmatch_slab.states[49].u.curlym.alen' => 4, 'regmatch_slab.states[49].u.curlym.c1' => 4, 'regmatch_slab.states[49].u.curlym.c2' => 4, 'regmatch_slab.states[49].u.curlym.count' => 4, 'regmatch_slab.states[49].u.curlym.cp' => 4, 'regmatch_slab.states[49].u.curlym.me' => 4, 'regmatch_slab.states[49].u.curlym.minmod' => 1, 'regmatch_slab.states[49].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[49].u.curlyx' => 41, 'regmatch_slab.states[49].u.curlyx.A' => 4, 'regmatch_slab.states[49].u.curlyx.B' => 4, 'regmatch_slab.states[49].u.curlyx.count' => 4, 'regmatch_slab.states[49].u.curlyx.cp' => 4, 'regmatch_slab.states[49].u.curlyx.lastloc' => 4, 'regmatch_slab.states[49].u.curlyx.max' => 4, 'regmatch_slab.states[49].u.curlyx.min' => 4, 'regmatch_slab.states[49].u.curlyx.minmod' => 1, 'regmatch_slab.states[49].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[49].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[49].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[49].u.eval' => 36, 'regmatch_slab.states[49].u.eval.B' => 4, 'regmatch_slab.states[49].u.eval.close_paren' => 4, 'regmatch_slab.states[49].u.eval.cp' => 4, 'regmatch_slab.states[49].u.eval.lastcp' => 4, 'regmatch_slab.states[49].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[49].u.eval.prev_eval' => 4, 'regmatch_slab.states[49].u.eval.prev_rex' => 4, 'regmatch_slab.states[49].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[49].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[49].u.ifmatch' => 16, 'regmatch_slab.states[49].u.ifmatch.logical' => 4, 'regmatch_slab.states[49].u.ifmatch.me' => 4, 'regmatch_slab.states[49].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[49].u.ifmatch.wanted' => 4, 'regmatch_slab.states[49].u.trie' => 20, 'regmatch_slab.states[49].u.trie.B' => 4, 'regmatch_slab.states[49].u.trie.accept_buff' => 4, 'regmatch_slab.states[49].u.trie.accepted' => 4, 'regmatch_slab.states[49].u.trie.jump' => 4, 'regmatch_slab.states[49].u.trie.me' => 4, 'regmatch_slab.states[49].u.whilem' => 28, 'regmatch_slab.states[49].u.whilem.cache_mask' => 4, 'regmatch_slab.states[49].u.whilem.cache_offset' => 4, 'regmatch_slab.states[49].u.whilem.cp' => 4, 'regmatch_slab.states[49].u.whilem.lastcp' => 4, 'regmatch_slab.states[49].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[49].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[49].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[49].u.yes' => 4, 'regmatch_slab.states[49].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[4]' => 52, 'regmatch_slab.states[4].locinput' => 4, 'regmatch_slab.states[4].resume_state' => 4, 'regmatch_slab.states[4].u' => 44, 'regmatch_slab.states[4].u.branch' => 12, 'regmatch_slab.states[4].u.branch.cp' => 4, 'regmatch_slab.states[4].u.branch.lastparen' => 4, 'regmatch_slab.states[4].u.branch.next_branch' => 4, 'regmatch_slab.states[4].u.curly' => 44, 'regmatch_slab.states[4].u.curly.A' => 4, 'regmatch_slab.states[4].u.curly.B' => 4, 'regmatch_slab.states[4].u.curly.c1' => 4, 'regmatch_slab.states[4].u.curly.c2' => 4, 'regmatch_slab.states[4].u.curly.count' => 4, 'regmatch_slab.states[4].u.curly.cp' => 4, 'regmatch_slab.states[4].u.curly.max' => 4, 'regmatch_slab.states[4].u.curly.maxpos' => 4, 'regmatch_slab.states[4].u.curly.min' => 4, 'regmatch_slab.states[4].u.curly.oldloc' => 4, 'regmatch_slab.states[4].u.curly.paren' => 4, 'regmatch_slab.states[4].u.curlym' => 37, 'regmatch_slab.states[4].u.curlym.A' => 4, 'regmatch_slab.states[4].u.curlym.B' => 4, 'regmatch_slab.states[4].u.curlym.alen' => 4, 'regmatch_slab.states[4].u.curlym.c1' => 4, 'regmatch_slab.states[4].u.curlym.c2' => 4, 'regmatch_slab.states[4].u.curlym.count' => 4, 'regmatch_slab.states[4].u.curlym.cp' => 4, 'regmatch_slab.states[4].u.curlym.me' => 4, 'regmatch_slab.states[4].u.curlym.minmod' => 1, 'regmatch_slab.states[4].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[4].u.curlyx' => 41, 'regmatch_slab.states[4].u.curlyx.A' => 4, 'regmatch_slab.states[4].u.curlyx.B' => 4, 'regmatch_slab.states[4].u.curlyx.count' => 4, 'regmatch_slab.states[4].u.curlyx.cp' => 4, 'regmatch_slab.states[4].u.curlyx.lastloc' => 4, 'regmatch_slab.states[4].u.curlyx.max' => 4, 'regmatch_slab.states[4].u.curlyx.min' => 4, 'regmatch_slab.states[4].u.curlyx.minmod' => 1, 'regmatch_slab.states[4].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[4].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[4].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[4].u.eval' => 36, 'regmatch_slab.states[4].u.eval.B' => 4, 'regmatch_slab.states[4].u.eval.close_paren' => 4, 'regmatch_slab.states[4].u.eval.cp' => 4, 'regmatch_slab.states[4].u.eval.lastcp' => 4, 'regmatch_slab.states[4].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[4].u.eval.prev_eval' => 4, 'regmatch_slab.states[4].u.eval.prev_rex' => 4, 'regmatch_slab.states[4].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[4].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[4].u.ifmatch' => 16, 'regmatch_slab.states[4].u.ifmatch.logical' => 4, 'regmatch_slab.states[4].u.ifmatch.me' => 4, 'regmatch_slab.states[4].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[4].u.ifmatch.wanted' => 4, 'regmatch_slab.states[4].u.trie' => 20, 'regmatch_slab.states[4].u.trie.B' => 4, 'regmatch_slab.states[4].u.trie.accept_buff' => 4, 'regmatch_slab.states[4].u.trie.accepted' => 4, 'regmatch_slab.states[4].u.trie.jump' => 4, 'regmatch_slab.states[4].u.trie.me' => 4, 'regmatch_slab.states[4].u.whilem' => 28, 'regmatch_slab.states[4].u.whilem.cache_mask' => 4, 'regmatch_slab.states[4].u.whilem.cache_offset' => 4, 'regmatch_slab.states[4].u.whilem.cp' => 4, 'regmatch_slab.states[4].u.whilem.lastcp' => 4, 'regmatch_slab.states[4].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[4].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[4].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[4].u.yes' => 4, 'regmatch_slab.states[4].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[50]' => 52, 'regmatch_slab.states[50].locinput' => 4, 'regmatch_slab.states[50].resume_state' => 4, 'regmatch_slab.states[50].u' => 44, 'regmatch_slab.states[50].u.branch' => 12, 'regmatch_slab.states[50].u.branch.cp' => 4, 'regmatch_slab.states[50].u.branch.lastparen' => 4, 'regmatch_slab.states[50].u.branch.next_branch' => 4, 'regmatch_slab.states[50].u.curly' => 44, 'regmatch_slab.states[50].u.curly.A' => 4, 'regmatch_slab.states[50].u.curly.B' => 4, 'regmatch_slab.states[50].u.curly.c1' => 4, 'regmatch_slab.states[50].u.curly.c2' => 4, 'regmatch_slab.states[50].u.curly.count' => 4, 'regmatch_slab.states[50].u.curly.cp' => 4, 'regmatch_slab.states[50].u.curly.max' => 4, 'regmatch_slab.states[50].u.curly.maxpos' => 4, 'regmatch_slab.states[50].u.curly.min' => 4, 'regmatch_slab.states[50].u.curly.oldloc' => 4, 'regmatch_slab.states[50].u.curly.paren' => 4, 'regmatch_slab.states[50].u.curlym' => 37, 'regmatch_slab.states[50].u.curlym.A' => 4, 'regmatch_slab.states[50].u.curlym.B' => 4, 'regmatch_slab.states[50].u.curlym.alen' => 4, 'regmatch_slab.states[50].u.curlym.c1' => 4, 'regmatch_slab.states[50].u.curlym.c2' => 4, 'regmatch_slab.states[50].u.curlym.count' => 4, 'regmatch_slab.states[50].u.curlym.cp' => 4, 'regmatch_slab.states[50].u.curlym.me' => 4, 'regmatch_slab.states[50].u.curlym.minmod' => 1, 'regmatch_slab.states[50].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[50].u.curlyx' => 41, 'regmatch_slab.states[50].u.curlyx.A' => 4, 'regmatch_slab.states[50].u.curlyx.B' => 4, 'regmatch_slab.states[50].u.curlyx.count' => 4, 'regmatch_slab.states[50].u.curlyx.cp' => 4, 'regmatch_slab.states[50].u.curlyx.lastloc' => 4, 'regmatch_slab.states[50].u.curlyx.max' => 4, 'regmatch_slab.states[50].u.curlyx.min' => 4, 'regmatch_slab.states[50].u.curlyx.minmod' => 1, 'regmatch_slab.states[50].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[50].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[50].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[50].u.eval' => 36, 'regmatch_slab.states[50].u.eval.B' => 4, 'regmatch_slab.states[50].u.eval.close_paren' => 4, 'regmatch_slab.states[50].u.eval.cp' => 4, 'regmatch_slab.states[50].u.eval.lastcp' => 4, 'regmatch_slab.states[50].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[50].u.eval.prev_eval' => 4, 'regmatch_slab.states[50].u.eval.prev_rex' => 4, 'regmatch_slab.states[50].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[50].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[50].u.ifmatch' => 16, 'regmatch_slab.states[50].u.ifmatch.logical' => 4, 'regmatch_slab.states[50].u.ifmatch.me' => 4, 'regmatch_slab.states[50].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[50].u.ifmatch.wanted' => 4, 'regmatch_slab.states[50].u.trie' => 20, 'regmatch_slab.states[50].u.trie.B' => 4, 'regmatch_slab.states[50].u.trie.accept_buff' => 4, 'regmatch_slab.states[50].u.trie.accepted' => 4, 'regmatch_slab.states[50].u.trie.jump' => 4, 'regmatch_slab.states[50].u.trie.me' => 4, 'regmatch_slab.states[50].u.whilem' => 28, 'regmatch_slab.states[50].u.whilem.cache_mask' => 4, 'regmatch_slab.states[50].u.whilem.cache_offset' => 4, 'regmatch_slab.states[50].u.whilem.cp' => 4, 'regmatch_slab.states[50].u.whilem.lastcp' => 4, 'regmatch_slab.states[50].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[50].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[50].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[50].u.yes' => 4, 'regmatch_slab.states[50].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[51]' => 52, 'regmatch_slab.states[51].locinput' => 4, 'regmatch_slab.states[51].resume_state' => 4, 'regmatch_slab.states[51].u' => 44, 'regmatch_slab.states[51].u.branch' => 12, 'regmatch_slab.states[51].u.branch.cp' => 4, 'regmatch_slab.states[51].u.branch.lastparen' => 4, 'regmatch_slab.states[51].u.branch.next_branch' => 4, 'regmatch_slab.states[51].u.curly' => 44, 'regmatch_slab.states[51].u.curly.A' => 4, 'regmatch_slab.states[51].u.curly.B' => 4, 'regmatch_slab.states[51].u.curly.c1' => 4, 'regmatch_slab.states[51].u.curly.c2' => 4, 'regmatch_slab.states[51].u.curly.count' => 4, 'regmatch_slab.states[51].u.curly.cp' => 4, 'regmatch_slab.states[51].u.curly.max' => 4, 'regmatch_slab.states[51].u.curly.maxpos' => 4, 'regmatch_slab.states[51].u.curly.min' => 4, 'regmatch_slab.states[51].u.curly.oldloc' => 4, 'regmatch_slab.states[51].u.curly.paren' => 4, 'regmatch_slab.states[51].u.curlym' => 37, 'regmatch_slab.states[51].u.curlym.A' => 4, 'regmatch_slab.states[51].u.curlym.B' => 4, 'regmatch_slab.states[51].u.curlym.alen' => 4, 'regmatch_slab.states[51].u.curlym.c1' => 4, 'regmatch_slab.states[51].u.curlym.c2' => 4, 'regmatch_slab.states[51].u.curlym.count' => 4, 'regmatch_slab.states[51].u.curlym.cp' => 4, 'regmatch_slab.states[51].u.curlym.me' => 4, 'regmatch_slab.states[51].u.curlym.minmod' => 1, 'regmatch_slab.states[51].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[51].u.curlyx' => 41, 'regmatch_slab.states[51].u.curlyx.A' => 4, 'regmatch_slab.states[51].u.curlyx.B' => 4, 'regmatch_slab.states[51].u.curlyx.count' => 4, 'regmatch_slab.states[51].u.curlyx.cp' => 4, 'regmatch_slab.states[51].u.curlyx.lastloc' => 4, 'regmatch_slab.states[51].u.curlyx.max' => 4, 'regmatch_slab.states[51].u.curlyx.min' => 4, 'regmatch_slab.states[51].u.curlyx.minmod' => 1, 'regmatch_slab.states[51].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[51].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[51].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[51].u.eval' => 36, 'regmatch_slab.states[51].u.eval.B' => 4, 'regmatch_slab.states[51].u.eval.close_paren' => 4, 'regmatch_slab.states[51].u.eval.cp' => 4, 'regmatch_slab.states[51].u.eval.lastcp' => 4, 'regmatch_slab.states[51].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[51].u.eval.prev_eval' => 4, 'regmatch_slab.states[51].u.eval.prev_rex' => 4, 'regmatch_slab.states[51].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[51].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[51].u.ifmatch' => 16, 'regmatch_slab.states[51].u.ifmatch.logical' => 4, 'regmatch_slab.states[51].u.ifmatch.me' => 4, 'regmatch_slab.states[51].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[51].u.ifmatch.wanted' => 4, 'regmatch_slab.states[51].u.trie' => 20, 'regmatch_slab.states[51].u.trie.B' => 4, 'regmatch_slab.states[51].u.trie.accept_buff' => 4, 'regmatch_slab.states[51].u.trie.accepted' => 4, 'regmatch_slab.states[51].u.trie.jump' => 4, 'regmatch_slab.states[51].u.trie.me' => 4, 'regmatch_slab.states[51].u.whilem' => 28, 'regmatch_slab.states[51].u.whilem.cache_mask' => 4, 'regmatch_slab.states[51].u.whilem.cache_offset' => 4, 'regmatch_slab.states[51].u.whilem.cp' => 4, 'regmatch_slab.states[51].u.whilem.lastcp' => 4, 'regmatch_slab.states[51].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[51].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[51].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[51].u.yes' => 4, 'regmatch_slab.states[51].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[52]' => 52, 'regmatch_slab.states[52].locinput' => 4, 'regmatch_slab.states[52].resume_state' => 4, 'regmatch_slab.states[52].u' => 44, 'regmatch_slab.states[52].u.branch' => 12, 'regmatch_slab.states[52].u.branch.cp' => 4, 'regmatch_slab.states[52].u.branch.lastparen' => 4, 'regmatch_slab.states[52].u.branch.next_branch' => 4, 'regmatch_slab.states[52].u.curly' => 44, 'regmatch_slab.states[52].u.curly.A' => 4, 'regmatch_slab.states[52].u.curly.B' => 4, 'regmatch_slab.states[52].u.curly.c1' => 4, 'regmatch_slab.states[52].u.curly.c2' => 4, 'regmatch_slab.states[52].u.curly.count' => 4, 'regmatch_slab.states[52].u.curly.cp' => 4, 'regmatch_slab.states[52].u.curly.max' => 4, 'regmatch_slab.states[52].u.curly.maxpos' => 4, 'regmatch_slab.states[52].u.curly.min' => 4, 'regmatch_slab.states[52].u.curly.oldloc' => 4, 'regmatch_slab.states[52].u.curly.paren' => 4, 'regmatch_slab.states[52].u.curlym' => 37, 'regmatch_slab.states[52].u.curlym.A' => 4, 'regmatch_slab.states[52].u.curlym.B' => 4, 'regmatch_slab.states[52].u.curlym.alen' => 4, 'regmatch_slab.states[52].u.curlym.c1' => 4, 'regmatch_slab.states[52].u.curlym.c2' => 4, 'regmatch_slab.states[52].u.curlym.count' => 4, 'regmatch_slab.states[52].u.curlym.cp' => 4, 'regmatch_slab.states[52].u.curlym.me' => 4, 'regmatch_slab.states[52].u.curlym.minmod' => 1, 'regmatch_slab.states[52].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[52].u.curlyx' => 41, 'regmatch_slab.states[52].u.curlyx.A' => 4, 'regmatch_slab.states[52].u.curlyx.B' => 4, 'regmatch_slab.states[52].u.curlyx.count' => 4, 'regmatch_slab.states[52].u.curlyx.cp' => 4, 'regmatch_slab.states[52].u.curlyx.lastloc' => 4, 'regmatch_slab.states[52].u.curlyx.max' => 4, 'regmatch_slab.states[52].u.curlyx.min' => 4, 'regmatch_slab.states[52].u.curlyx.minmod' => 1, 'regmatch_slab.states[52].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[52].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[52].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[52].u.eval' => 36, 'regmatch_slab.states[52].u.eval.B' => 4, 'regmatch_slab.states[52].u.eval.close_paren' => 4, 'regmatch_slab.states[52].u.eval.cp' => 4, 'regmatch_slab.states[52].u.eval.lastcp' => 4, 'regmatch_slab.states[52].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[52].u.eval.prev_eval' => 4, 'regmatch_slab.states[52].u.eval.prev_rex' => 4, 'regmatch_slab.states[52].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[52].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[52].u.ifmatch' => 16, 'regmatch_slab.states[52].u.ifmatch.logical' => 4, 'regmatch_slab.states[52].u.ifmatch.me' => 4, 'regmatch_slab.states[52].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[52].u.ifmatch.wanted' => 4, 'regmatch_slab.states[52].u.trie' => 20, 'regmatch_slab.states[52].u.trie.B' => 4, 'regmatch_slab.states[52].u.trie.accept_buff' => 4, 'regmatch_slab.states[52].u.trie.accepted' => 4, 'regmatch_slab.states[52].u.trie.jump' => 4, 'regmatch_slab.states[52].u.trie.me' => 4, 'regmatch_slab.states[52].u.whilem' => 28, 'regmatch_slab.states[52].u.whilem.cache_mask' => 4, 'regmatch_slab.states[52].u.whilem.cache_offset' => 4, 'regmatch_slab.states[52].u.whilem.cp' => 4, 'regmatch_slab.states[52].u.whilem.lastcp' => 4, 'regmatch_slab.states[52].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[52].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[52].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[52].u.yes' => 4, 'regmatch_slab.states[52].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[53]' => 52, 'regmatch_slab.states[53].locinput' => 4, 'regmatch_slab.states[53].resume_state' => 4, 'regmatch_slab.states[53].u' => 44, 'regmatch_slab.states[53].u.branch' => 12, 'regmatch_slab.states[53].u.branch.cp' => 4, 'regmatch_slab.states[53].u.branch.lastparen' => 4, 'regmatch_slab.states[53].u.branch.next_branch' => 4, 'regmatch_slab.states[53].u.curly' => 44, 'regmatch_slab.states[53].u.curly.A' => 4, 'regmatch_slab.states[53].u.curly.B' => 4, 'regmatch_slab.states[53].u.curly.c1' => 4, 'regmatch_slab.states[53].u.curly.c2' => 4, 'regmatch_slab.states[53].u.curly.count' => 4, 'regmatch_slab.states[53].u.curly.cp' => 4, 'regmatch_slab.states[53].u.curly.max' => 4, 'regmatch_slab.states[53].u.curly.maxpos' => 4, 'regmatch_slab.states[53].u.curly.min' => 4, 'regmatch_slab.states[53].u.curly.oldloc' => 4, 'regmatch_slab.states[53].u.curly.paren' => 4, 'regmatch_slab.states[53].u.curlym' => 37, 'regmatch_slab.states[53].u.curlym.A' => 4, 'regmatch_slab.states[53].u.curlym.B' => 4, 'regmatch_slab.states[53].u.curlym.alen' => 4, 'regmatch_slab.states[53].u.curlym.c1' => 4, 'regmatch_slab.states[53].u.curlym.c2' => 4, 'regmatch_slab.states[53].u.curlym.count' => 4, 'regmatch_slab.states[53].u.curlym.cp' => 4, 'regmatch_slab.states[53].u.curlym.me' => 4, 'regmatch_slab.states[53].u.curlym.minmod' => 1, 'regmatch_slab.states[53].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[53].u.curlyx' => 41, 'regmatch_slab.states[53].u.curlyx.A' => 4, 'regmatch_slab.states[53].u.curlyx.B' => 4, 'regmatch_slab.states[53].u.curlyx.count' => 4, 'regmatch_slab.states[53].u.curlyx.cp' => 4, 'regmatch_slab.states[53].u.curlyx.lastloc' => 4, 'regmatch_slab.states[53].u.curlyx.max' => 4, 'regmatch_slab.states[53].u.curlyx.min' => 4, 'regmatch_slab.states[53].u.curlyx.minmod' => 1, 'regmatch_slab.states[53].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[53].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[53].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[53].u.eval' => 36, 'regmatch_slab.states[53].u.eval.B' => 4, 'regmatch_slab.states[53].u.eval.close_paren' => 4, 'regmatch_slab.states[53].u.eval.cp' => 4, 'regmatch_slab.states[53].u.eval.lastcp' => 4, 'regmatch_slab.states[53].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[53].u.eval.prev_eval' => 4, 'regmatch_slab.states[53].u.eval.prev_rex' => 4, 'regmatch_slab.states[53].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[53].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[53].u.ifmatch' => 16, 'regmatch_slab.states[53].u.ifmatch.logical' => 4, 'regmatch_slab.states[53].u.ifmatch.me' => 4, 'regmatch_slab.states[53].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[53].u.ifmatch.wanted' => 4, 'regmatch_slab.states[53].u.trie' => 20, 'regmatch_slab.states[53].u.trie.B' => 4, 'regmatch_slab.states[53].u.trie.accept_buff' => 4, 'regmatch_slab.states[53].u.trie.accepted' => 4, 'regmatch_slab.states[53].u.trie.jump' => 4, 'regmatch_slab.states[53].u.trie.me' => 4, 'regmatch_slab.states[53].u.whilem' => 28, 'regmatch_slab.states[53].u.whilem.cache_mask' => 4, 'regmatch_slab.states[53].u.whilem.cache_offset' => 4, 'regmatch_slab.states[53].u.whilem.cp' => 4, 'regmatch_slab.states[53].u.whilem.lastcp' => 4, 'regmatch_slab.states[53].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[53].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[53].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[53].u.yes' => 4, 'regmatch_slab.states[53].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[54]' => 52, 'regmatch_slab.states[54].locinput' => 4, 'regmatch_slab.states[54].resume_state' => 4, 'regmatch_slab.states[54].u' => 44, 'regmatch_slab.states[54].u.branch' => 12, 'regmatch_slab.states[54].u.branch.cp' => 4, 'regmatch_slab.states[54].u.branch.lastparen' => 4, 'regmatch_slab.states[54].u.branch.next_branch' => 4, 'regmatch_slab.states[54].u.curly' => 44, 'regmatch_slab.states[54].u.curly.A' => 4, 'regmatch_slab.states[54].u.curly.B' => 4, 'regmatch_slab.states[54].u.curly.c1' => 4, 'regmatch_slab.states[54].u.curly.c2' => 4, 'regmatch_slab.states[54].u.curly.count' => 4, 'regmatch_slab.states[54].u.curly.cp' => 4, 'regmatch_slab.states[54].u.curly.max' => 4, 'regmatch_slab.states[54].u.curly.maxpos' => 4, 'regmatch_slab.states[54].u.curly.min' => 4, 'regmatch_slab.states[54].u.curly.oldloc' => 4, 'regmatch_slab.states[54].u.curly.paren' => 4, 'regmatch_slab.states[54].u.curlym' => 37, 'regmatch_slab.states[54].u.curlym.A' => 4, 'regmatch_slab.states[54].u.curlym.B' => 4, 'regmatch_slab.states[54].u.curlym.alen' => 4, 'regmatch_slab.states[54].u.curlym.c1' => 4, 'regmatch_slab.states[54].u.curlym.c2' => 4, 'regmatch_slab.states[54].u.curlym.count' => 4, 'regmatch_slab.states[54].u.curlym.cp' => 4, 'regmatch_slab.states[54].u.curlym.me' => 4, 'regmatch_slab.states[54].u.curlym.minmod' => 1, 'regmatch_slab.states[54].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[54].u.curlyx' => 41, 'regmatch_slab.states[54].u.curlyx.A' => 4, 'regmatch_slab.states[54].u.curlyx.B' => 4, 'regmatch_slab.states[54].u.curlyx.count' => 4, 'regmatch_slab.states[54].u.curlyx.cp' => 4, 'regmatch_slab.states[54].u.curlyx.lastloc' => 4, 'regmatch_slab.states[54].u.curlyx.max' => 4, 'regmatch_slab.states[54].u.curlyx.min' => 4, 'regmatch_slab.states[54].u.curlyx.minmod' => 1, 'regmatch_slab.states[54].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[54].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[54].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[54].u.eval' => 36, 'regmatch_slab.states[54].u.eval.B' => 4, 'regmatch_slab.states[54].u.eval.close_paren' => 4, 'regmatch_slab.states[54].u.eval.cp' => 4, 'regmatch_slab.states[54].u.eval.lastcp' => 4, 'regmatch_slab.states[54].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[54].u.eval.prev_eval' => 4, 'regmatch_slab.states[54].u.eval.prev_rex' => 4, 'regmatch_slab.states[54].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[54].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[54].u.ifmatch' => 16, 'regmatch_slab.states[54].u.ifmatch.logical' => 4, 'regmatch_slab.states[54].u.ifmatch.me' => 4, 'regmatch_slab.states[54].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[54].u.ifmatch.wanted' => 4, 'regmatch_slab.states[54].u.trie' => 20, 'regmatch_slab.states[54].u.trie.B' => 4, 'regmatch_slab.states[54].u.trie.accept_buff' => 4, 'regmatch_slab.states[54].u.trie.accepted' => 4, 'regmatch_slab.states[54].u.trie.jump' => 4, 'regmatch_slab.states[54].u.trie.me' => 4, 'regmatch_slab.states[54].u.whilem' => 28, 'regmatch_slab.states[54].u.whilem.cache_mask' => 4, 'regmatch_slab.states[54].u.whilem.cache_offset' => 4, 'regmatch_slab.states[54].u.whilem.cp' => 4, 'regmatch_slab.states[54].u.whilem.lastcp' => 4, 'regmatch_slab.states[54].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[54].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[54].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[54].u.yes' => 4, 'regmatch_slab.states[54].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[55]' => 52, 'regmatch_slab.states[55].locinput' => 4, 'regmatch_slab.states[55].resume_state' => 4, 'regmatch_slab.states[55].u' => 44, 'regmatch_slab.states[55].u.branch' => 12, 'regmatch_slab.states[55].u.branch.cp' => 4, 'regmatch_slab.states[55].u.branch.lastparen' => 4, 'regmatch_slab.states[55].u.branch.next_branch' => 4, 'regmatch_slab.states[55].u.curly' => 44, 'regmatch_slab.states[55].u.curly.A' => 4, 'regmatch_slab.states[55].u.curly.B' => 4, 'regmatch_slab.states[55].u.curly.c1' => 4, 'regmatch_slab.states[55].u.curly.c2' => 4, 'regmatch_slab.states[55].u.curly.count' => 4, 'regmatch_slab.states[55].u.curly.cp' => 4, 'regmatch_slab.states[55].u.curly.max' => 4, 'regmatch_slab.states[55].u.curly.maxpos' => 4, 'regmatch_slab.states[55].u.curly.min' => 4, 'regmatch_slab.states[55].u.curly.oldloc' => 4, 'regmatch_slab.states[55].u.curly.paren' => 4, 'regmatch_slab.states[55].u.curlym' => 37, 'regmatch_slab.states[55].u.curlym.A' => 4, 'regmatch_slab.states[55].u.curlym.B' => 4, 'regmatch_slab.states[55].u.curlym.alen' => 4, 'regmatch_slab.states[55].u.curlym.c1' => 4, 'regmatch_slab.states[55].u.curlym.c2' => 4, 'regmatch_slab.states[55].u.curlym.count' => 4, 'regmatch_slab.states[55].u.curlym.cp' => 4, 'regmatch_slab.states[55].u.curlym.me' => 4, 'regmatch_slab.states[55].u.curlym.minmod' => 1, 'regmatch_slab.states[55].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[55].u.curlyx' => 41, 'regmatch_slab.states[55].u.curlyx.A' => 4, 'regmatch_slab.states[55].u.curlyx.B' => 4, 'regmatch_slab.states[55].u.curlyx.count' => 4, 'regmatch_slab.states[55].u.curlyx.cp' => 4, 'regmatch_slab.states[55].u.curlyx.lastloc' => 4, 'regmatch_slab.states[55].u.curlyx.max' => 4, 'regmatch_slab.states[55].u.curlyx.min' => 4, 'regmatch_slab.states[55].u.curlyx.minmod' => 1, 'regmatch_slab.states[55].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[55].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[55].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[55].u.eval' => 36, 'regmatch_slab.states[55].u.eval.B' => 4, 'regmatch_slab.states[55].u.eval.close_paren' => 4, 'regmatch_slab.states[55].u.eval.cp' => 4, 'regmatch_slab.states[55].u.eval.lastcp' => 4, 'regmatch_slab.states[55].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[55].u.eval.prev_eval' => 4, 'regmatch_slab.states[55].u.eval.prev_rex' => 4, 'regmatch_slab.states[55].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[55].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[55].u.ifmatch' => 16, 'regmatch_slab.states[55].u.ifmatch.logical' => 4, 'regmatch_slab.states[55].u.ifmatch.me' => 4, 'regmatch_slab.states[55].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[55].u.ifmatch.wanted' => 4, 'regmatch_slab.states[55].u.trie' => 20, 'regmatch_slab.states[55].u.trie.B' => 4, 'regmatch_slab.states[55].u.trie.accept_buff' => 4, 'regmatch_slab.states[55].u.trie.accepted' => 4, 'regmatch_slab.states[55].u.trie.jump' => 4, 'regmatch_slab.states[55].u.trie.me' => 4, 'regmatch_slab.states[55].u.whilem' => 28, 'regmatch_slab.states[55].u.whilem.cache_mask' => 4, 'regmatch_slab.states[55].u.whilem.cache_offset' => 4, 'regmatch_slab.states[55].u.whilem.cp' => 4, 'regmatch_slab.states[55].u.whilem.lastcp' => 4, 'regmatch_slab.states[55].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[55].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[55].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[55].u.yes' => 4, 'regmatch_slab.states[55].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[56]' => 52, 'regmatch_slab.states[56].locinput' => 4, 'regmatch_slab.states[56].resume_state' => 4, 'regmatch_slab.states[56].u' => 44, 'regmatch_slab.states[56].u.branch' => 12, 'regmatch_slab.states[56].u.branch.cp' => 4, 'regmatch_slab.states[56].u.branch.lastparen' => 4, 'regmatch_slab.states[56].u.branch.next_branch' => 4, 'regmatch_slab.states[56].u.curly' => 44, 'regmatch_slab.states[56].u.curly.A' => 4, 'regmatch_slab.states[56].u.curly.B' => 4, 'regmatch_slab.states[56].u.curly.c1' => 4, 'regmatch_slab.states[56].u.curly.c2' => 4, 'regmatch_slab.states[56].u.curly.count' => 4, 'regmatch_slab.states[56].u.curly.cp' => 4, 'regmatch_slab.states[56].u.curly.max' => 4, 'regmatch_slab.states[56].u.curly.maxpos' => 4, 'regmatch_slab.states[56].u.curly.min' => 4, 'regmatch_slab.states[56].u.curly.oldloc' => 4, 'regmatch_slab.states[56].u.curly.paren' => 4, 'regmatch_slab.states[56].u.curlym' => 37, 'regmatch_slab.states[56].u.curlym.A' => 4, 'regmatch_slab.states[56].u.curlym.B' => 4, 'regmatch_slab.states[56].u.curlym.alen' => 4, 'regmatch_slab.states[56].u.curlym.c1' => 4, 'regmatch_slab.states[56].u.curlym.c2' => 4, 'regmatch_slab.states[56].u.curlym.count' => 4, 'regmatch_slab.states[56].u.curlym.cp' => 4, 'regmatch_slab.states[56].u.curlym.me' => 4, 'regmatch_slab.states[56].u.curlym.minmod' => 1, 'regmatch_slab.states[56].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[56].u.curlyx' => 41, 'regmatch_slab.states[56].u.curlyx.A' => 4, 'regmatch_slab.states[56].u.curlyx.B' => 4, 'regmatch_slab.states[56].u.curlyx.count' => 4, 'regmatch_slab.states[56].u.curlyx.cp' => 4, 'regmatch_slab.states[56].u.curlyx.lastloc' => 4, 'regmatch_slab.states[56].u.curlyx.max' => 4, 'regmatch_slab.states[56].u.curlyx.min' => 4, 'regmatch_slab.states[56].u.curlyx.minmod' => 1, 'regmatch_slab.states[56].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[56].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[56].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[56].u.eval' => 36, 'regmatch_slab.states[56].u.eval.B' => 4, 'regmatch_slab.states[56].u.eval.close_paren' => 4, 'regmatch_slab.states[56].u.eval.cp' => 4, 'regmatch_slab.states[56].u.eval.lastcp' => 4, 'regmatch_slab.states[56].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[56].u.eval.prev_eval' => 4, 'regmatch_slab.states[56].u.eval.prev_rex' => 4, 'regmatch_slab.states[56].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[56].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[56].u.ifmatch' => 16, 'regmatch_slab.states[56].u.ifmatch.logical' => 4, 'regmatch_slab.states[56].u.ifmatch.me' => 4, 'regmatch_slab.states[56].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[56].u.ifmatch.wanted' => 4, 'regmatch_slab.states[56].u.trie' => 20, 'regmatch_slab.states[56].u.trie.B' => 4, 'regmatch_slab.states[56].u.trie.accept_buff' => 4, 'regmatch_slab.states[56].u.trie.accepted' => 4, 'regmatch_slab.states[56].u.trie.jump' => 4, 'regmatch_slab.states[56].u.trie.me' => 4, 'regmatch_slab.states[56].u.whilem' => 28, 'regmatch_slab.states[56].u.whilem.cache_mask' => 4, 'regmatch_slab.states[56].u.whilem.cache_offset' => 4, 'regmatch_slab.states[56].u.whilem.cp' => 4, 'regmatch_slab.states[56].u.whilem.lastcp' => 4, 'regmatch_slab.states[56].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[56].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[56].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[56].u.yes' => 4, 'regmatch_slab.states[56].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[57]' => 52, 'regmatch_slab.states[57].locinput' => 4, 'regmatch_slab.states[57].resume_state' => 4, 'regmatch_slab.states[57].u' => 44, 'regmatch_slab.states[57].u.branch' => 12, 'regmatch_slab.states[57].u.branch.cp' => 4, 'regmatch_slab.states[57].u.branch.lastparen' => 4, 'regmatch_slab.states[57].u.branch.next_branch' => 4, 'regmatch_slab.states[57].u.curly' => 44, 'regmatch_slab.states[57].u.curly.A' => 4, 'regmatch_slab.states[57].u.curly.B' => 4, 'regmatch_slab.states[57].u.curly.c1' => 4, 'regmatch_slab.states[57].u.curly.c2' => 4, 'regmatch_slab.states[57].u.curly.count' => 4, 'regmatch_slab.states[57].u.curly.cp' => 4, 'regmatch_slab.states[57].u.curly.max' => 4, 'regmatch_slab.states[57].u.curly.maxpos' => 4, 'regmatch_slab.states[57].u.curly.min' => 4, 'regmatch_slab.states[57].u.curly.oldloc' => 4, 'regmatch_slab.states[57].u.curly.paren' => 4, 'regmatch_slab.states[57].u.curlym' => 37, 'regmatch_slab.states[57].u.curlym.A' => 4, 'regmatch_slab.states[57].u.curlym.B' => 4, 'regmatch_slab.states[57].u.curlym.alen' => 4, 'regmatch_slab.states[57].u.curlym.c1' => 4, 'regmatch_slab.states[57].u.curlym.c2' => 4, 'regmatch_slab.states[57].u.curlym.count' => 4, 'regmatch_slab.states[57].u.curlym.cp' => 4, 'regmatch_slab.states[57].u.curlym.me' => 4, 'regmatch_slab.states[57].u.curlym.minmod' => 1, 'regmatch_slab.states[57].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[57].u.curlyx' => 41, 'regmatch_slab.states[57].u.curlyx.A' => 4, 'regmatch_slab.states[57].u.curlyx.B' => 4, 'regmatch_slab.states[57].u.curlyx.count' => 4, 'regmatch_slab.states[57].u.curlyx.cp' => 4, 'regmatch_slab.states[57].u.curlyx.lastloc' => 4, 'regmatch_slab.states[57].u.curlyx.max' => 4, 'regmatch_slab.states[57].u.curlyx.min' => 4, 'regmatch_slab.states[57].u.curlyx.minmod' => 1, 'regmatch_slab.states[57].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[57].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[57].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[57].u.eval' => 36, 'regmatch_slab.states[57].u.eval.B' => 4, 'regmatch_slab.states[57].u.eval.close_paren' => 4, 'regmatch_slab.states[57].u.eval.cp' => 4, 'regmatch_slab.states[57].u.eval.lastcp' => 4, 'regmatch_slab.states[57].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[57].u.eval.prev_eval' => 4, 'regmatch_slab.states[57].u.eval.prev_rex' => 4, 'regmatch_slab.states[57].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[57].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[57].u.ifmatch' => 16, 'regmatch_slab.states[57].u.ifmatch.logical' => 4, 'regmatch_slab.states[57].u.ifmatch.me' => 4, 'regmatch_slab.states[57].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[57].u.ifmatch.wanted' => 4, 'regmatch_slab.states[57].u.trie' => 20, 'regmatch_slab.states[57].u.trie.B' => 4, 'regmatch_slab.states[57].u.trie.accept_buff' => 4, 'regmatch_slab.states[57].u.trie.accepted' => 4, 'regmatch_slab.states[57].u.trie.jump' => 4, 'regmatch_slab.states[57].u.trie.me' => 4, 'regmatch_slab.states[57].u.whilem' => 28, 'regmatch_slab.states[57].u.whilem.cache_mask' => 4, 'regmatch_slab.states[57].u.whilem.cache_offset' => 4, 'regmatch_slab.states[57].u.whilem.cp' => 4, 'regmatch_slab.states[57].u.whilem.lastcp' => 4, 'regmatch_slab.states[57].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[57].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[57].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[57].u.yes' => 4, 'regmatch_slab.states[57].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[58]' => 52, 'regmatch_slab.states[58].locinput' => 4, 'regmatch_slab.states[58].resume_state' => 4, 'regmatch_slab.states[58].u' => 44, 'regmatch_slab.states[58].u.branch' => 12, 'regmatch_slab.states[58].u.branch.cp' => 4, 'regmatch_slab.states[58].u.branch.lastparen' => 4, 'regmatch_slab.states[58].u.branch.next_branch' => 4, 'regmatch_slab.states[58].u.curly' => 44, 'regmatch_slab.states[58].u.curly.A' => 4, 'regmatch_slab.states[58].u.curly.B' => 4, 'regmatch_slab.states[58].u.curly.c1' => 4, 'regmatch_slab.states[58].u.curly.c2' => 4, 'regmatch_slab.states[58].u.curly.count' => 4, 'regmatch_slab.states[58].u.curly.cp' => 4, 'regmatch_slab.states[58].u.curly.max' => 4, 'regmatch_slab.states[58].u.curly.maxpos' => 4, 'regmatch_slab.states[58].u.curly.min' => 4, 'regmatch_slab.states[58].u.curly.oldloc' => 4, 'regmatch_slab.states[58].u.curly.paren' => 4, 'regmatch_slab.states[58].u.curlym' => 37, 'regmatch_slab.states[58].u.curlym.A' => 4, 'regmatch_slab.states[58].u.curlym.B' => 4, 'regmatch_slab.states[58].u.curlym.alen' => 4, 'regmatch_slab.states[58].u.curlym.c1' => 4, 'regmatch_slab.states[58].u.curlym.c2' => 4, 'regmatch_slab.states[58].u.curlym.count' => 4, 'regmatch_slab.states[58].u.curlym.cp' => 4, 'regmatch_slab.states[58].u.curlym.me' => 4, 'regmatch_slab.states[58].u.curlym.minmod' => 1, 'regmatch_slab.states[58].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[58].u.curlyx' => 41, 'regmatch_slab.states[58].u.curlyx.A' => 4, 'regmatch_slab.states[58].u.curlyx.B' => 4, 'regmatch_slab.states[58].u.curlyx.count' => 4, 'regmatch_slab.states[58].u.curlyx.cp' => 4, 'regmatch_slab.states[58].u.curlyx.lastloc' => 4, 'regmatch_slab.states[58].u.curlyx.max' => 4, 'regmatch_slab.states[58].u.curlyx.min' => 4, 'regmatch_slab.states[58].u.curlyx.minmod' => 1, 'regmatch_slab.states[58].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[58].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[58].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[58].u.eval' => 36, 'regmatch_slab.states[58].u.eval.B' => 4, 'regmatch_slab.states[58].u.eval.close_paren' => 4, 'regmatch_slab.states[58].u.eval.cp' => 4, 'regmatch_slab.states[58].u.eval.lastcp' => 4, 'regmatch_slab.states[58].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[58].u.eval.prev_eval' => 4, 'regmatch_slab.states[58].u.eval.prev_rex' => 4, 'regmatch_slab.states[58].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[58].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[58].u.ifmatch' => 16, 'regmatch_slab.states[58].u.ifmatch.logical' => 4, 'regmatch_slab.states[58].u.ifmatch.me' => 4, 'regmatch_slab.states[58].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[58].u.ifmatch.wanted' => 4, 'regmatch_slab.states[58].u.trie' => 20, 'regmatch_slab.states[58].u.trie.B' => 4, 'regmatch_slab.states[58].u.trie.accept_buff' => 4, 'regmatch_slab.states[58].u.trie.accepted' => 4, 'regmatch_slab.states[58].u.trie.jump' => 4, 'regmatch_slab.states[58].u.trie.me' => 4, 'regmatch_slab.states[58].u.whilem' => 28, 'regmatch_slab.states[58].u.whilem.cache_mask' => 4, 'regmatch_slab.states[58].u.whilem.cache_offset' => 4, 'regmatch_slab.states[58].u.whilem.cp' => 4, 'regmatch_slab.states[58].u.whilem.lastcp' => 4, 'regmatch_slab.states[58].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[58].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[58].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[58].u.yes' => 4, 'regmatch_slab.states[58].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[59]' => 52, 'regmatch_slab.states[59].locinput' => 4, 'regmatch_slab.states[59].resume_state' => 4, 'regmatch_slab.states[59].u' => 44, 'regmatch_slab.states[59].u.branch' => 12, 'regmatch_slab.states[59].u.branch.cp' => 4, 'regmatch_slab.states[59].u.branch.lastparen' => 4, 'regmatch_slab.states[59].u.branch.next_branch' => 4, 'regmatch_slab.states[59].u.curly' => 44, 'regmatch_slab.states[59].u.curly.A' => 4, 'regmatch_slab.states[59].u.curly.B' => 4, 'regmatch_slab.states[59].u.curly.c1' => 4, 'regmatch_slab.states[59].u.curly.c2' => 4, 'regmatch_slab.states[59].u.curly.count' => 4, 'regmatch_slab.states[59].u.curly.cp' => 4, 'regmatch_slab.states[59].u.curly.max' => 4, 'regmatch_slab.states[59].u.curly.maxpos' => 4, 'regmatch_slab.states[59].u.curly.min' => 4, 'regmatch_slab.states[59].u.curly.oldloc' => 4, 'regmatch_slab.states[59].u.curly.paren' => 4, 'regmatch_slab.states[59].u.curlym' => 37, 'regmatch_slab.states[59].u.curlym.A' => 4, 'regmatch_slab.states[59].u.curlym.B' => 4, 'regmatch_slab.states[59].u.curlym.alen' => 4, 'regmatch_slab.states[59].u.curlym.c1' => 4, 'regmatch_slab.states[59].u.curlym.c2' => 4, 'regmatch_slab.states[59].u.curlym.count' => 4, 'regmatch_slab.states[59].u.curlym.cp' => 4, 'regmatch_slab.states[59].u.curlym.me' => 4, 'regmatch_slab.states[59].u.curlym.minmod' => 1, 'regmatch_slab.states[59].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[59].u.curlyx' => 41, 'regmatch_slab.states[59].u.curlyx.A' => 4, 'regmatch_slab.states[59].u.curlyx.B' => 4, 'regmatch_slab.states[59].u.curlyx.count' => 4, 'regmatch_slab.states[59].u.curlyx.cp' => 4, 'regmatch_slab.states[59].u.curlyx.lastloc' => 4, 'regmatch_slab.states[59].u.curlyx.max' => 4, 'regmatch_slab.states[59].u.curlyx.min' => 4, 'regmatch_slab.states[59].u.curlyx.minmod' => 1, 'regmatch_slab.states[59].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[59].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[59].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[59].u.eval' => 36, 'regmatch_slab.states[59].u.eval.B' => 4, 'regmatch_slab.states[59].u.eval.close_paren' => 4, 'regmatch_slab.states[59].u.eval.cp' => 4, 'regmatch_slab.states[59].u.eval.lastcp' => 4, 'regmatch_slab.states[59].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[59].u.eval.prev_eval' => 4, 'regmatch_slab.states[59].u.eval.prev_rex' => 4, 'regmatch_slab.states[59].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[59].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[59].u.ifmatch' => 16, 'regmatch_slab.states[59].u.ifmatch.logical' => 4, 'regmatch_slab.states[59].u.ifmatch.me' => 4, 'regmatch_slab.states[59].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[59].u.ifmatch.wanted' => 4, 'regmatch_slab.states[59].u.trie' => 20, 'regmatch_slab.states[59].u.trie.B' => 4, 'regmatch_slab.states[59].u.trie.accept_buff' => 4, 'regmatch_slab.states[59].u.trie.accepted' => 4, 'regmatch_slab.states[59].u.trie.jump' => 4, 'regmatch_slab.states[59].u.trie.me' => 4, 'regmatch_slab.states[59].u.whilem' => 28, 'regmatch_slab.states[59].u.whilem.cache_mask' => 4, 'regmatch_slab.states[59].u.whilem.cache_offset' => 4, 'regmatch_slab.states[59].u.whilem.cp' => 4, 'regmatch_slab.states[59].u.whilem.lastcp' => 4, 'regmatch_slab.states[59].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[59].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[59].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[59].u.yes' => 4, 'regmatch_slab.states[59].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[5]' => 52, 'regmatch_slab.states[5].locinput' => 4, 'regmatch_slab.states[5].resume_state' => 4, 'regmatch_slab.states[5].u' => 44, 'regmatch_slab.states[5].u.branch' => 12, 'regmatch_slab.states[5].u.branch.cp' => 4, 'regmatch_slab.states[5].u.branch.lastparen' => 4, 'regmatch_slab.states[5].u.branch.next_branch' => 4, 'regmatch_slab.states[5].u.curly' => 44, 'regmatch_slab.states[5].u.curly.A' => 4, 'regmatch_slab.states[5].u.curly.B' => 4, 'regmatch_slab.states[5].u.curly.c1' => 4, 'regmatch_slab.states[5].u.curly.c2' => 4, 'regmatch_slab.states[5].u.curly.count' => 4, 'regmatch_slab.states[5].u.curly.cp' => 4, 'regmatch_slab.states[5].u.curly.max' => 4, 'regmatch_slab.states[5].u.curly.maxpos' => 4, 'regmatch_slab.states[5].u.curly.min' => 4, 'regmatch_slab.states[5].u.curly.oldloc' => 4, 'regmatch_slab.states[5].u.curly.paren' => 4, 'regmatch_slab.states[5].u.curlym' => 37, 'regmatch_slab.states[5].u.curlym.A' => 4, 'regmatch_slab.states[5].u.curlym.B' => 4, 'regmatch_slab.states[5].u.curlym.alen' => 4, 'regmatch_slab.states[5].u.curlym.c1' => 4, 'regmatch_slab.states[5].u.curlym.c2' => 4, 'regmatch_slab.states[5].u.curlym.count' => 4, 'regmatch_slab.states[5].u.curlym.cp' => 4, 'regmatch_slab.states[5].u.curlym.me' => 4, 'regmatch_slab.states[5].u.curlym.minmod' => 1, 'regmatch_slab.states[5].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[5].u.curlyx' => 41, 'regmatch_slab.states[5].u.curlyx.A' => 4, 'regmatch_slab.states[5].u.curlyx.B' => 4, 'regmatch_slab.states[5].u.curlyx.count' => 4, 'regmatch_slab.states[5].u.curlyx.cp' => 4, 'regmatch_slab.states[5].u.curlyx.lastloc' => 4, 'regmatch_slab.states[5].u.curlyx.max' => 4, 'regmatch_slab.states[5].u.curlyx.min' => 4, 'regmatch_slab.states[5].u.curlyx.minmod' => 1, 'regmatch_slab.states[5].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[5].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[5].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[5].u.eval' => 36, 'regmatch_slab.states[5].u.eval.B' => 4, 'regmatch_slab.states[5].u.eval.close_paren' => 4, 'regmatch_slab.states[5].u.eval.cp' => 4, 'regmatch_slab.states[5].u.eval.lastcp' => 4, 'regmatch_slab.states[5].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[5].u.eval.prev_eval' => 4, 'regmatch_slab.states[5].u.eval.prev_rex' => 4, 'regmatch_slab.states[5].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[5].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[5].u.ifmatch' => 16, 'regmatch_slab.states[5].u.ifmatch.logical' => 4, 'regmatch_slab.states[5].u.ifmatch.me' => 4, 'regmatch_slab.states[5].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[5].u.ifmatch.wanted' => 4, 'regmatch_slab.states[5].u.trie' => 20, 'regmatch_slab.states[5].u.trie.B' => 4, 'regmatch_slab.states[5].u.trie.accept_buff' => 4, 'regmatch_slab.states[5].u.trie.accepted' => 4, 'regmatch_slab.states[5].u.trie.jump' => 4, 'regmatch_slab.states[5].u.trie.me' => 4, 'regmatch_slab.states[5].u.whilem' => 28, 'regmatch_slab.states[5].u.whilem.cache_mask' => 4, 'regmatch_slab.states[5].u.whilem.cache_offset' => 4, 'regmatch_slab.states[5].u.whilem.cp' => 4, 'regmatch_slab.states[5].u.whilem.lastcp' => 4, 'regmatch_slab.states[5].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[5].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[5].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[5].u.yes' => 4, 'regmatch_slab.states[5].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[60]' => 52, 'regmatch_slab.states[60].locinput' => 4, 'regmatch_slab.states[60].resume_state' => 4, 'regmatch_slab.states[60].u' => 44, 'regmatch_slab.states[60].u.branch' => 12, 'regmatch_slab.states[60].u.branch.cp' => 4, 'regmatch_slab.states[60].u.branch.lastparen' => 4, 'regmatch_slab.states[60].u.branch.next_branch' => 4, 'regmatch_slab.states[60].u.curly' => 44, 'regmatch_slab.states[60].u.curly.A' => 4, 'regmatch_slab.states[60].u.curly.B' => 4, 'regmatch_slab.states[60].u.curly.c1' => 4, 'regmatch_slab.states[60].u.curly.c2' => 4, 'regmatch_slab.states[60].u.curly.count' => 4, 'regmatch_slab.states[60].u.curly.cp' => 4, 'regmatch_slab.states[60].u.curly.max' => 4, 'regmatch_slab.states[60].u.curly.maxpos' => 4, 'regmatch_slab.states[60].u.curly.min' => 4, 'regmatch_slab.states[60].u.curly.oldloc' => 4, 'regmatch_slab.states[60].u.curly.paren' => 4, 'regmatch_slab.states[60].u.curlym' => 37, 'regmatch_slab.states[60].u.curlym.A' => 4, 'regmatch_slab.states[60].u.curlym.B' => 4, 'regmatch_slab.states[60].u.curlym.alen' => 4, 'regmatch_slab.states[60].u.curlym.c1' => 4, 'regmatch_slab.states[60].u.curlym.c2' => 4, 'regmatch_slab.states[60].u.curlym.count' => 4, 'regmatch_slab.states[60].u.curlym.cp' => 4, 'regmatch_slab.states[60].u.curlym.me' => 4, 'regmatch_slab.states[60].u.curlym.minmod' => 1, 'regmatch_slab.states[60].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[60].u.curlyx' => 41, 'regmatch_slab.states[60].u.curlyx.A' => 4, 'regmatch_slab.states[60].u.curlyx.B' => 4, 'regmatch_slab.states[60].u.curlyx.count' => 4, 'regmatch_slab.states[60].u.curlyx.cp' => 4, 'regmatch_slab.states[60].u.curlyx.lastloc' => 4, 'regmatch_slab.states[60].u.curlyx.max' => 4, 'regmatch_slab.states[60].u.curlyx.min' => 4, 'regmatch_slab.states[60].u.curlyx.minmod' => 1, 'regmatch_slab.states[60].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[60].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[60].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[60].u.eval' => 36, 'regmatch_slab.states[60].u.eval.B' => 4, 'regmatch_slab.states[60].u.eval.close_paren' => 4, 'regmatch_slab.states[60].u.eval.cp' => 4, 'regmatch_slab.states[60].u.eval.lastcp' => 4, 'regmatch_slab.states[60].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[60].u.eval.prev_eval' => 4, 'regmatch_slab.states[60].u.eval.prev_rex' => 4, 'regmatch_slab.states[60].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[60].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[60].u.ifmatch' => 16, 'regmatch_slab.states[60].u.ifmatch.logical' => 4, 'regmatch_slab.states[60].u.ifmatch.me' => 4, 'regmatch_slab.states[60].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[60].u.ifmatch.wanted' => 4, 'regmatch_slab.states[60].u.trie' => 20, 'regmatch_slab.states[60].u.trie.B' => 4, 'regmatch_slab.states[60].u.trie.accept_buff' => 4, 'regmatch_slab.states[60].u.trie.accepted' => 4, 'regmatch_slab.states[60].u.trie.jump' => 4, 'regmatch_slab.states[60].u.trie.me' => 4, 'regmatch_slab.states[60].u.whilem' => 28, 'regmatch_slab.states[60].u.whilem.cache_mask' => 4, 'regmatch_slab.states[60].u.whilem.cache_offset' => 4, 'regmatch_slab.states[60].u.whilem.cp' => 4, 'regmatch_slab.states[60].u.whilem.lastcp' => 4, 'regmatch_slab.states[60].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[60].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[60].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[60].u.yes' => 4, 'regmatch_slab.states[60].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[61]' => 52, 'regmatch_slab.states[61].locinput' => 4, 'regmatch_slab.states[61].resume_state' => 4, 'regmatch_slab.states[61].u' => 44, 'regmatch_slab.states[61].u.branch' => 12, 'regmatch_slab.states[61].u.branch.cp' => 4, 'regmatch_slab.states[61].u.branch.lastparen' => 4, 'regmatch_slab.states[61].u.branch.next_branch' => 4, 'regmatch_slab.states[61].u.curly' => 44, 'regmatch_slab.states[61].u.curly.A' => 4, 'regmatch_slab.states[61].u.curly.B' => 4, 'regmatch_slab.states[61].u.curly.c1' => 4, 'regmatch_slab.states[61].u.curly.c2' => 4, 'regmatch_slab.states[61].u.curly.count' => 4, 'regmatch_slab.states[61].u.curly.cp' => 4, 'regmatch_slab.states[61].u.curly.max' => 4, 'regmatch_slab.states[61].u.curly.maxpos' => 4, 'regmatch_slab.states[61].u.curly.min' => 4, 'regmatch_slab.states[61].u.curly.oldloc' => 4, 'regmatch_slab.states[61].u.curly.paren' => 4, 'regmatch_slab.states[61].u.curlym' => 37, 'regmatch_slab.states[61].u.curlym.A' => 4, 'regmatch_slab.states[61].u.curlym.B' => 4, 'regmatch_slab.states[61].u.curlym.alen' => 4, 'regmatch_slab.states[61].u.curlym.c1' => 4, 'regmatch_slab.states[61].u.curlym.c2' => 4, 'regmatch_slab.states[61].u.curlym.count' => 4, 'regmatch_slab.states[61].u.curlym.cp' => 4, 'regmatch_slab.states[61].u.curlym.me' => 4, 'regmatch_slab.states[61].u.curlym.minmod' => 1, 'regmatch_slab.states[61].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[61].u.curlyx' => 41, 'regmatch_slab.states[61].u.curlyx.A' => 4, 'regmatch_slab.states[61].u.curlyx.B' => 4, 'regmatch_slab.states[61].u.curlyx.count' => 4, 'regmatch_slab.states[61].u.curlyx.cp' => 4, 'regmatch_slab.states[61].u.curlyx.lastloc' => 4, 'regmatch_slab.states[61].u.curlyx.max' => 4, 'regmatch_slab.states[61].u.curlyx.min' => 4, 'regmatch_slab.states[61].u.curlyx.minmod' => 1, 'regmatch_slab.states[61].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[61].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[61].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[61].u.eval' => 36, 'regmatch_slab.states[61].u.eval.B' => 4, 'regmatch_slab.states[61].u.eval.close_paren' => 4, 'regmatch_slab.states[61].u.eval.cp' => 4, 'regmatch_slab.states[61].u.eval.lastcp' => 4, 'regmatch_slab.states[61].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[61].u.eval.prev_eval' => 4, 'regmatch_slab.states[61].u.eval.prev_rex' => 4, 'regmatch_slab.states[61].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[61].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[61].u.ifmatch' => 16, 'regmatch_slab.states[61].u.ifmatch.logical' => 4, 'regmatch_slab.states[61].u.ifmatch.me' => 4, 'regmatch_slab.states[61].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[61].u.ifmatch.wanted' => 4, 'regmatch_slab.states[61].u.trie' => 20, 'regmatch_slab.states[61].u.trie.B' => 4, 'regmatch_slab.states[61].u.trie.accept_buff' => 4, 'regmatch_slab.states[61].u.trie.accepted' => 4, 'regmatch_slab.states[61].u.trie.jump' => 4, 'regmatch_slab.states[61].u.trie.me' => 4, 'regmatch_slab.states[61].u.whilem' => 28, 'regmatch_slab.states[61].u.whilem.cache_mask' => 4, 'regmatch_slab.states[61].u.whilem.cache_offset' => 4, 'regmatch_slab.states[61].u.whilem.cp' => 4, 'regmatch_slab.states[61].u.whilem.lastcp' => 4, 'regmatch_slab.states[61].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[61].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[61].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[61].u.yes' => 4, 'regmatch_slab.states[61].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[62]' => 52, 'regmatch_slab.states[62].locinput' => 4, 'regmatch_slab.states[62].resume_state' => 4, 'regmatch_slab.states[62].u' => 44, 'regmatch_slab.states[62].u.branch' => 12, 'regmatch_slab.states[62].u.branch.cp' => 4, 'regmatch_slab.states[62].u.branch.lastparen' => 4, 'regmatch_slab.states[62].u.branch.next_branch' => 4, 'regmatch_slab.states[62].u.curly' => 44, 'regmatch_slab.states[62].u.curly.A' => 4, 'regmatch_slab.states[62].u.curly.B' => 4, 'regmatch_slab.states[62].u.curly.c1' => 4, 'regmatch_slab.states[62].u.curly.c2' => 4, 'regmatch_slab.states[62].u.curly.count' => 4, 'regmatch_slab.states[62].u.curly.cp' => 4, 'regmatch_slab.states[62].u.curly.max' => 4, 'regmatch_slab.states[62].u.curly.maxpos' => 4, 'regmatch_slab.states[62].u.curly.min' => 4, 'regmatch_slab.states[62].u.curly.oldloc' => 4, 'regmatch_slab.states[62].u.curly.paren' => 4, 'regmatch_slab.states[62].u.curlym' => 37, 'regmatch_slab.states[62].u.curlym.A' => 4, 'regmatch_slab.states[62].u.curlym.B' => 4, 'regmatch_slab.states[62].u.curlym.alen' => 4, 'regmatch_slab.states[62].u.curlym.c1' => 4, 'regmatch_slab.states[62].u.curlym.c2' => 4, 'regmatch_slab.states[62].u.curlym.count' => 4, 'regmatch_slab.states[62].u.curlym.cp' => 4, 'regmatch_slab.states[62].u.curlym.me' => 4, 'regmatch_slab.states[62].u.curlym.minmod' => 1, 'regmatch_slab.states[62].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[62].u.curlyx' => 41, 'regmatch_slab.states[62].u.curlyx.A' => 4, 'regmatch_slab.states[62].u.curlyx.B' => 4, 'regmatch_slab.states[62].u.curlyx.count' => 4, 'regmatch_slab.states[62].u.curlyx.cp' => 4, 'regmatch_slab.states[62].u.curlyx.lastloc' => 4, 'regmatch_slab.states[62].u.curlyx.max' => 4, 'regmatch_slab.states[62].u.curlyx.min' => 4, 'regmatch_slab.states[62].u.curlyx.minmod' => 1, 'regmatch_slab.states[62].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[62].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[62].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[62].u.eval' => 36, 'regmatch_slab.states[62].u.eval.B' => 4, 'regmatch_slab.states[62].u.eval.close_paren' => 4, 'regmatch_slab.states[62].u.eval.cp' => 4, 'regmatch_slab.states[62].u.eval.lastcp' => 4, 'regmatch_slab.states[62].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[62].u.eval.prev_eval' => 4, 'regmatch_slab.states[62].u.eval.prev_rex' => 4, 'regmatch_slab.states[62].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[62].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[62].u.ifmatch' => 16, 'regmatch_slab.states[62].u.ifmatch.logical' => 4, 'regmatch_slab.states[62].u.ifmatch.me' => 4, 'regmatch_slab.states[62].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[62].u.ifmatch.wanted' => 4, 'regmatch_slab.states[62].u.trie' => 20, 'regmatch_slab.states[62].u.trie.B' => 4, 'regmatch_slab.states[62].u.trie.accept_buff' => 4, 'regmatch_slab.states[62].u.trie.accepted' => 4, 'regmatch_slab.states[62].u.trie.jump' => 4, 'regmatch_slab.states[62].u.trie.me' => 4, 'regmatch_slab.states[62].u.whilem' => 28, 'regmatch_slab.states[62].u.whilem.cache_mask' => 4, 'regmatch_slab.states[62].u.whilem.cache_offset' => 4, 'regmatch_slab.states[62].u.whilem.cp' => 4, 'regmatch_slab.states[62].u.whilem.lastcp' => 4, 'regmatch_slab.states[62].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[62].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[62].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[62].u.yes' => 4, 'regmatch_slab.states[62].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[63]' => 52, 'regmatch_slab.states[63].locinput' => 4, 'regmatch_slab.states[63].resume_state' => 4, 'regmatch_slab.states[63].u' => 44, 'regmatch_slab.states[63].u.branch' => 12, 'regmatch_slab.states[63].u.branch.cp' => 4, 'regmatch_slab.states[63].u.branch.lastparen' => 4, 'regmatch_slab.states[63].u.branch.next_branch' => 4, 'regmatch_slab.states[63].u.curly' => 44, 'regmatch_slab.states[63].u.curly.A' => 4, 'regmatch_slab.states[63].u.curly.B' => 4, 'regmatch_slab.states[63].u.curly.c1' => 4, 'regmatch_slab.states[63].u.curly.c2' => 4, 'regmatch_slab.states[63].u.curly.count' => 4, 'regmatch_slab.states[63].u.curly.cp' => 4, 'regmatch_slab.states[63].u.curly.max' => 4, 'regmatch_slab.states[63].u.curly.maxpos' => 4, 'regmatch_slab.states[63].u.curly.min' => 4, 'regmatch_slab.states[63].u.curly.oldloc' => 4, 'regmatch_slab.states[63].u.curly.paren' => 4, 'regmatch_slab.states[63].u.curlym' => 37, 'regmatch_slab.states[63].u.curlym.A' => 4, 'regmatch_slab.states[63].u.curlym.B' => 4, 'regmatch_slab.states[63].u.curlym.alen' => 4, 'regmatch_slab.states[63].u.curlym.c1' => 4, 'regmatch_slab.states[63].u.curlym.c2' => 4, 'regmatch_slab.states[63].u.curlym.count' => 4, 'regmatch_slab.states[63].u.curlym.cp' => 4, 'regmatch_slab.states[63].u.curlym.me' => 4, 'regmatch_slab.states[63].u.curlym.minmod' => 1, 'regmatch_slab.states[63].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[63].u.curlyx' => 41, 'regmatch_slab.states[63].u.curlyx.A' => 4, 'regmatch_slab.states[63].u.curlyx.B' => 4, 'regmatch_slab.states[63].u.curlyx.count' => 4, 'regmatch_slab.states[63].u.curlyx.cp' => 4, 'regmatch_slab.states[63].u.curlyx.lastloc' => 4, 'regmatch_slab.states[63].u.curlyx.max' => 4, 'regmatch_slab.states[63].u.curlyx.min' => 4, 'regmatch_slab.states[63].u.curlyx.minmod' => 1, 'regmatch_slab.states[63].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[63].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[63].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[63].u.eval' => 36, 'regmatch_slab.states[63].u.eval.B' => 4, 'regmatch_slab.states[63].u.eval.close_paren' => 4, 'regmatch_slab.states[63].u.eval.cp' => 4, 'regmatch_slab.states[63].u.eval.lastcp' => 4, 'regmatch_slab.states[63].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[63].u.eval.prev_eval' => 4, 'regmatch_slab.states[63].u.eval.prev_rex' => 4, 'regmatch_slab.states[63].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[63].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[63].u.ifmatch' => 16, 'regmatch_slab.states[63].u.ifmatch.logical' => 4, 'regmatch_slab.states[63].u.ifmatch.me' => 4, 'regmatch_slab.states[63].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[63].u.ifmatch.wanted' => 4, 'regmatch_slab.states[63].u.trie' => 20, 'regmatch_slab.states[63].u.trie.B' => 4, 'regmatch_slab.states[63].u.trie.accept_buff' => 4, 'regmatch_slab.states[63].u.trie.accepted' => 4, 'regmatch_slab.states[63].u.trie.jump' => 4, 'regmatch_slab.states[63].u.trie.me' => 4, 'regmatch_slab.states[63].u.whilem' => 28, 'regmatch_slab.states[63].u.whilem.cache_mask' => 4, 'regmatch_slab.states[63].u.whilem.cache_offset' => 4, 'regmatch_slab.states[63].u.whilem.cp' => 4, 'regmatch_slab.states[63].u.whilem.lastcp' => 4, 'regmatch_slab.states[63].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[63].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[63].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[63].u.yes' => 4, 'regmatch_slab.states[63].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[64]' => 52, 'regmatch_slab.states[64].locinput' => 4, 'regmatch_slab.states[64].resume_state' => 4, 'regmatch_slab.states[64].u' => 44, 'regmatch_slab.states[64].u.branch' => 12, 'regmatch_slab.states[64].u.branch.cp' => 4, 'regmatch_slab.states[64].u.branch.lastparen' => 4, 'regmatch_slab.states[64].u.branch.next_branch' => 4, 'regmatch_slab.states[64].u.curly' => 44, 'regmatch_slab.states[64].u.curly.A' => 4, 'regmatch_slab.states[64].u.curly.B' => 4, 'regmatch_slab.states[64].u.curly.c1' => 4, 'regmatch_slab.states[64].u.curly.c2' => 4, 'regmatch_slab.states[64].u.curly.count' => 4, 'regmatch_slab.states[64].u.curly.cp' => 4, 'regmatch_slab.states[64].u.curly.max' => 4, 'regmatch_slab.states[64].u.curly.maxpos' => 4, 'regmatch_slab.states[64].u.curly.min' => 4, 'regmatch_slab.states[64].u.curly.oldloc' => 4, 'regmatch_slab.states[64].u.curly.paren' => 4, 'regmatch_slab.states[64].u.curlym' => 37, 'regmatch_slab.states[64].u.curlym.A' => 4, 'regmatch_slab.states[64].u.curlym.B' => 4, 'regmatch_slab.states[64].u.curlym.alen' => 4, 'regmatch_slab.states[64].u.curlym.c1' => 4, 'regmatch_slab.states[64].u.curlym.c2' => 4, 'regmatch_slab.states[64].u.curlym.count' => 4, 'regmatch_slab.states[64].u.curlym.cp' => 4, 'regmatch_slab.states[64].u.curlym.me' => 4, 'regmatch_slab.states[64].u.curlym.minmod' => 1, 'regmatch_slab.states[64].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[64].u.curlyx' => 41, 'regmatch_slab.states[64].u.curlyx.A' => 4, 'regmatch_slab.states[64].u.curlyx.B' => 4, 'regmatch_slab.states[64].u.curlyx.count' => 4, 'regmatch_slab.states[64].u.curlyx.cp' => 4, 'regmatch_slab.states[64].u.curlyx.lastloc' => 4, 'regmatch_slab.states[64].u.curlyx.max' => 4, 'regmatch_slab.states[64].u.curlyx.min' => 4, 'regmatch_slab.states[64].u.curlyx.minmod' => 1, 'regmatch_slab.states[64].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[64].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[64].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[64].u.eval' => 36, 'regmatch_slab.states[64].u.eval.B' => 4, 'regmatch_slab.states[64].u.eval.close_paren' => 4, 'regmatch_slab.states[64].u.eval.cp' => 4, 'regmatch_slab.states[64].u.eval.lastcp' => 4, 'regmatch_slab.states[64].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[64].u.eval.prev_eval' => 4, 'regmatch_slab.states[64].u.eval.prev_rex' => 4, 'regmatch_slab.states[64].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[64].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[64].u.ifmatch' => 16, 'regmatch_slab.states[64].u.ifmatch.logical' => 4, 'regmatch_slab.states[64].u.ifmatch.me' => 4, 'regmatch_slab.states[64].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[64].u.ifmatch.wanted' => 4, 'regmatch_slab.states[64].u.trie' => 20, 'regmatch_slab.states[64].u.trie.B' => 4, 'regmatch_slab.states[64].u.trie.accept_buff' => 4, 'regmatch_slab.states[64].u.trie.accepted' => 4, 'regmatch_slab.states[64].u.trie.jump' => 4, 'regmatch_slab.states[64].u.trie.me' => 4, 'regmatch_slab.states[64].u.whilem' => 28, 'regmatch_slab.states[64].u.whilem.cache_mask' => 4, 'regmatch_slab.states[64].u.whilem.cache_offset' => 4, 'regmatch_slab.states[64].u.whilem.cp' => 4, 'regmatch_slab.states[64].u.whilem.lastcp' => 4, 'regmatch_slab.states[64].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[64].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[64].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[64].u.yes' => 4, 'regmatch_slab.states[64].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[65]' => 52, 'regmatch_slab.states[65].locinput' => 4, 'regmatch_slab.states[65].resume_state' => 4, 'regmatch_slab.states[65].u' => 44, 'regmatch_slab.states[65].u.branch' => 12, 'regmatch_slab.states[65].u.branch.cp' => 4, 'regmatch_slab.states[65].u.branch.lastparen' => 4, 'regmatch_slab.states[65].u.branch.next_branch' => 4, 'regmatch_slab.states[65].u.curly' => 44, 'regmatch_slab.states[65].u.curly.A' => 4, 'regmatch_slab.states[65].u.curly.B' => 4, 'regmatch_slab.states[65].u.curly.c1' => 4, 'regmatch_slab.states[65].u.curly.c2' => 4, 'regmatch_slab.states[65].u.curly.count' => 4, 'regmatch_slab.states[65].u.curly.cp' => 4, 'regmatch_slab.states[65].u.curly.max' => 4, 'regmatch_slab.states[65].u.curly.maxpos' => 4, 'regmatch_slab.states[65].u.curly.min' => 4, 'regmatch_slab.states[65].u.curly.oldloc' => 4, 'regmatch_slab.states[65].u.curly.paren' => 4, 'regmatch_slab.states[65].u.curlym' => 37, 'regmatch_slab.states[65].u.curlym.A' => 4, 'regmatch_slab.states[65].u.curlym.B' => 4, 'regmatch_slab.states[65].u.curlym.alen' => 4, 'regmatch_slab.states[65].u.curlym.c1' => 4, 'regmatch_slab.states[65].u.curlym.c2' => 4, 'regmatch_slab.states[65].u.curlym.count' => 4, 'regmatch_slab.states[65].u.curlym.cp' => 4, 'regmatch_slab.states[65].u.curlym.me' => 4, 'regmatch_slab.states[65].u.curlym.minmod' => 1, 'regmatch_slab.states[65].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[65].u.curlyx' => 41, 'regmatch_slab.states[65].u.curlyx.A' => 4, 'regmatch_slab.states[65].u.curlyx.B' => 4, 'regmatch_slab.states[65].u.curlyx.count' => 4, 'regmatch_slab.states[65].u.curlyx.cp' => 4, 'regmatch_slab.states[65].u.curlyx.lastloc' => 4, 'regmatch_slab.states[65].u.curlyx.max' => 4, 'regmatch_slab.states[65].u.curlyx.min' => 4, 'regmatch_slab.states[65].u.curlyx.minmod' => 1, 'regmatch_slab.states[65].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[65].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[65].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[65].u.eval' => 36, 'regmatch_slab.states[65].u.eval.B' => 4, 'regmatch_slab.states[65].u.eval.close_paren' => 4, 'regmatch_slab.states[65].u.eval.cp' => 4, 'regmatch_slab.states[65].u.eval.lastcp' => 4, 'regmatch_slab.states[65].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[65].u.eval.prev_eval' => 4, 'regmatch_slab.states[65].u.eval.prev_rex' => 4, 'regmatch_slab.states[65].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[65].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[65].u.ifmatch' => 16, 'regmatch_slab.states[65].u.ifmatch.logical' => 4, 'regmatch_slab.states[65].u.ifmatch.me' => 4, 'regmatch_slab.states[65].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[65].u.ifmatch.wanted' => 4, 'regmatch_slab.states[65].u.trie' => 20, 'regmatch_slab.states[65].u.trie.B' => 4, 'regmatch_slab.states[65].u.trie.accept_buff' => 4, 'regmatch_slab.states[65].u.trie.accepted' => 4, 'regmatch_slab.states[65].u.trie.jump' => 4, 'regmatch_slab.states[65].u.trie.me' => 4, 'regmatch_slab.states[65].u.whilem' => 28, 'regmatch_slab.states[65].u.whilem.cache_mask' => 4, 'regmatch_slab.states[65].u.whilem.cache_offset' => 4, 'regmatch_slab.states[65].u.whilem.cp' => 4, 'regmatch_slab.states[65].u.whilem.lastcp' => 4, 'regmatch_slab.states[65].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[65].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[65].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[65].u.yes' => 4, 'regmatch_slab.states[65].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[66]' => 52, 'regmatch_slab.states[66].locinput' => 4, 'regmatch_slab.states[66].resume_state' => 4, 'regmatch_slab.states[66].u' => 44, 'regmatch_slab.states[66].u.branch' => 12, 'regmatch_slab.states[66].u.branch.cp' => 4, 'regmatch_slab.states[66].u.branch.lastparen' => 4, 'regmatch_slab.states[66].u.branch.next_branch' => 4, 'regmatch_slab.states[66].u.curly' => 44, 'regmatch_slab.states[66].u.curly.A' => 4, 'regmatch_slab.states[66].u.curly.B' => 4, 'regmatch_slab.states[66].u.curly.c1' => 4, 'regmatch_slab.states[66].u.curly.c2' => 4, 'regmatch_slab.states[66].u.curly.count' => 4, 'regmatch_slab.states[66].u.curly.cp' => 4, 'regmatch_slab.states[66].u.curly.max' => 4, 'regmatch_slab.states[66].u.curly.maxpos' => 4, 'regmatch_slab.states[66].u.curly.min' => 4, 'regmatch_slab.states[66].u.curly.oldloc' => 4, 'regmatch_slab.states[66].u.curly.paren' => 4, 'regmatch_slab.states[66].u.curlym' => 37, 'regmatch_slab.states[66].u.curlym.A' => 4, 'regmatch_slab.states[66].u.curlym.B' => 4, 'regmatch_slab.states[66].u.curlym.alen' => 4, 'regmatch_slab.states[66].u.curlym.c1' => 4, 'regmatch_slab.states[66].u.curlym.c2' => 4, 'regmatch_slab.states[66].u.curlym.count' => 4, 'regmatch_slab.states[66].u.curlym.cp' => 4, 'regmatch_slab.states[66].u.curlym.me' => 4, 'regmatch_slab.states[66].u.curlym.minmod' => 1, 'regmatch_slab.states[66].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[66].u.curlyx' => 41, 'regmatch_slab.states[66].u.curlyx.A' => 4, 'regmatch_slab.states[66].u.curlyx.B' => 4, 'regmatch_slab.states[66].u.curlyx.count' => 4, 'regmatch_slab.states[66].u.curlyx.cp' => 4, 'regmatch_slab.states[66].u.curlyx.lastloc' => 4, 'regmatch_slab.states[66].u.curlyx.max' => 4, 'regmatch_slab.states[66].u.curlyx.min' => 4, 'regmatch_slab.states[66].u.curlyx.minmod' => 1, 'regmatch_slab.states[66].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[66].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[66].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[66].u.eval' => 36, 'regmatch_slab.states[66].u.eval.B' => 4, 'regmatch_slab.states[66].u.eval.close_paren' => 4, 'regmatch_slab.states[66].u.eval.cp' => 4, 'regmatch_slab.states[66].u.eval.lastcp' => 4, 'regmatch_slab.states[66].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[66].u.eval.prev_eval' => 4, 'regmatch_slab.states[66].u.eval.prev_rex' => 4, 'regmatch_slab.states[66].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[66].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[66].u.ifmatch' => 16, 'regmatch_slab.states[66].u.ifmatch.logical' => 4, 'regmatch_slab.states[66].u.ifmatch.me' => 4, 'regmatch_slab.states[66].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[66].u.ifmatch.wanted' => 4, 'regmatch_slab.states[66].u.trie' => 20, 'regmatch_slab.states[66].u.trie.B' => 4, 'regmatch_slab.states[66].u.trie.accept_buff' => 4, 'regmatch_slab.states[66].u.trie.accepted' => 4, 'regmatch_slab.states[66].u.trie.jump' => 4, 'regmatch_slab.states[66].u.trie.me' => 4, 'regmatch_slab.states[66].u.whilem' => 28, 'regmatch_slab.states[66].u.whilem.cache_mask' => 4, 'regmatch_slab.states[66].u.whilem.cache_offset' => 4, 'regmatch_slab.states[66].u.whilem.cp' => 4, 'regmatch_slab.states[66].u.whilem.lastcp' => 4, 'regmatch_slab.states[66].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[66].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[66].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[66].u.yes' => 4, 'regmatch_slab.states[66].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[67]' => 52, 'regmatch_slab.states[67].locinput' => 4, 'regmatch_slab.states[67].resume_state' => 4, 'regmatch_slab.states[67].u' => 44, 'regmatch_slab.states[67].u.branch' => 12, 'regmatch_slab.states[67].u.branch.cp' => 4, 'regmatch_slab.states[67].u.branch.lastparen' => 4, 'regmatch_slab.states[67].u.branch.next_branch' => 4, 'regmatch_slab.states[67].u.curly' => 44, 'regmatch_slab.states[67].u.curly.A' => 4, 'regmatch_slab.states[67].u.curly.B' => 4, 'regmatch_slab.states[67].u.curly.c1' => 4, 'regmatch_slab.states[67].u.curly.c2' => 4, 'regmatch_slab.states[67].u.curly.count' => 4, 'regmatch_slab.states[67].u.curly.cp' => 4, 'regmatch_slab.states[67].u.curly.max' => 4, 'regmatch_slab.states[67].u.curly.maxpos' => 4, 'regmatch_slab.states[67].u.curly.min' => 4, 'regmatch_slab.states[67].u.curly.oldloc' => 4, 'regmatch_slab.states[67].u.curly.paren' => 4, 'regmatch_slab.states[67].u.curlym' => 37, 'regmatch_slab.states[67].u.curlym.A' => 4, 'regmatch_slab.states[67].u.curlym.B' => 4, 'regmatch_slab.states[67].u.curlym.alen' => 4, 'regmatch_slab.states[67].u.curlym.c1' => 4, 'regmatch_slab.states[67].u.curlym.c2' => 4, 'regmatch_slab.states[67].u.curlym.count' => 4, 'regmatch_slab.states[67].u.curlym.cp' => 4, 'regmatch_slab.states[67].u.curlym.me' => 4, 'regmatch_slab.states[67].u.curlym.minmod' => 1, 'regmatch_slab.states[67].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[67].u.curlyx' => 41, 'regmatch_slab.states[67].u.curlyx.A' => 4, 'regmatch_slab.states[67].u.curlyx.B' => 4, 'regmatch_slab.states[67].u.curlyx.count' => 4, 'regmatch_slab.states[67].u.curlyx.cp' => 4, 'regmatch_slab.states[67].u.curlyx.lastloc' => 4, 'regmatch_slab.states[67].u.curlyx.max' => 4, 'regmatch_slab.states[67].u.curlyx.min' => 4, 'regmatch_slab.states[67].u.curlyx.minmod' => 1, 'regmatch_slab.states[67].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[67].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[67].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[67].u.eval' => 36, 'regmatch_slab.states[67].u.eval.B' => 4, 'regmatch_slab.states[67].u.eval.close_paren' => 4, 'regmatch_slab.states[67].u.eval.cp' => 4, 'regmatch_slab.states[67].u.eval.lastcp' => 4, 'regmatch_slab.states[67].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[67].u.eval.prev_eval' => 4, 'regmatch_slab.states[67].u.eval.prev_rex' => 4, 'regmatch_slab.states[67].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[67].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[67].u.ifmatch' => 16, 'regmatch_slab.states[67].u.ifmatch.logical' => 4, 'regmatch_slab.states[67].u.ifmatch.me' => 4, 'regmatch_slab.states[67].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[67].u.ifmatch.wanted' => 4, 'regmatch_slab.states[67].u.trie' => 20, 'regmatch_slab.states[67].u.trie.B' => 4, 'regmatch_slab.states[67].u.trie.accept_buff' => 4, 'regmatch_slab.states[67].u.trie.accepted' => 4, 'regmatch_slab.states[67].u.trie.jump' => 4, 'regmatch_slab.states[67].u.trie.me' => 4, 'regmatch_slab.states[67].u.whilem' => 28, 'regmatch_slab.states[67].u.whilem.cache_mask' => 4, 'regmatch_slab.states[67].u.whilem.cache_offset' => 4, 'regmatch_slab.states[67].u.whilem.cp' => 4, 'regmatch_slab.states[67].u.whilem.lastcp' => 4, 'regmatch_slab.states[67].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[67].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[67].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[67].u.yes' => 4, 'regmatch_slab.states[67].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[68]' => 52, 'regmatch_slab.states[68].locinput' => 4, 'regmatch_slab.states[68].resume_state' => 4, 'regmatch_slab.states[68].u' => 44, 'regmatch_slab.states[68].u.branch' => 12, 'regmatch_slab.states[68].u.branch.cp' => 4, 'regmatch_slab.states[68].u.branch.lastparen' => 4, 'regmatch_slab.states[68].u.branch.next_branch' => 4, 'regmatch_slab.states[68].u.curly' => 44, 'regmatch_slab.states[68].u.curly.A' => 4, 'regmatch_slab.states[68].u.curly.B' => 4, 'regmatch_slab.states[68].u.curly.c1' => 4, 'regmatch_slab.states[68].u.curly.c2' => 4, 'regmatch_slab.states[68].u.curly.count' => 4, 'regmatch_slab.states[68].u.curly.cp' => 4, 'regmatch_slab.states[68].u.curly.max' => 4, 'regmatch_slab.states[68].u.curly.maxpos' => 4, 'regmatch_slab.states[68].u.curly.min' => 4, 'regmatch_slab.states[68].u.curly.oldloc' => 4, 'regmatch_slab.states[68].u.curly.paren' => 4, 'regmatch_slab.states[68].u.curlym' => 37, 'regmatch_slab.states[68].u.curlym.A' => 4, 'regmatch_slab.states[68].u.curlym.B' => 4, 'regmatch_slab.states[68].u.curlym.alen' => 4, 'regmatch_slab.states[68].u.curlym.c1' => 4, 'regmatch_slab.states[68].u.curlym.c2' => 4, 'regmatch_slab.states[68].u.curlym.count' => 4, 'regmatch_slab.states[68].u.curlym.cp' => 4, 'regmatch_slab.states[68].u.curlym.me' => 4, 'regmatch_slab.states[68].u.curlym.minmod' => 1, 'regmatch_slab.states[68].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[68].u.curlyx' => 41, 'regmatch_slab.states[68].u.curlyx.A' => 4, 'regmatch_slab.states[68].u.curlyx.B' => 4, 'regmatch_slab.states[68].u.curlyx.count' => 4, 'regmatch_slab.states[68].u.curlyx.cp' => 4, 'regmatch_slab.states[68].u.curlyx.lastloc' => 4, 'regmatch_slab.states[68].u.curlyx.max' => 4, 'regmatch_slab.states[68].u.curlyx.min' => 4, 'regmatch_slab.states[68].u.curlyx.minmod' => 1, 'regmatch_slab.states[68].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[68].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[68].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[68].u.eval' => 36, 'regmatch_slab.states[68].u.eval.B' => 4, 'regmatch_slab.states[68].u.eval.close_paren' => 4, 'regmatch_slab.states[68].u.eval.cp' => 4, 'regmatch_slab.states[68].u.eval.lastcp' => 4, 'regmatch_slab.states[68].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[68].u.eval.prev_eval' => 4, 'regmatch_slab.states[68].u.eval.prev_rex' => 4, 'regmatch_slab.states[68].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[68].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[68].u.ifmatch' => 16, 'regmatch_slab.states[68].u.ifmatch.logical' => 4, 'regmatch_slab.states[68].u.ifmatch.me' => 4, 'regmatch_slab.states[68].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[68].u.ifmatch.wanted' => 4, 'regmatch_slab.states[68].u.trie' => 20, 'regmatch_slab.states[68].u.trie.B' => 4, 'regmatch_slab.states[68].u.trie.accept_buff' => 4, 'regmatch_slab.states[68].u.trie.accepted' => 4, 'regmatch_slab.states[68].u.trie.jump' => 4, 'regmatch_slab.states[68].u.trie.me' => 4, 'regmatch_slab.states[68].u.whilem' => 28, 'regmatch_slab.states[68].u.whilem.cache_mask' => 4, 'regmatch_slab.states[68].u.whilem.cache_offset' => 4, 'regmatch_slab.states[68].u.whilem.cp' => 4, 'regmatch_slab.states[68].u.whilem.lastcp' => 4, 'regmatch_slab.states[68].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[68].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[68].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[68].u.yes' => 4, 'regmatch_slab.states[68].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[69]' => 52, 'regmatch_slab.states[69].locinput' => 4, 'regmatch_slab.states[69].resume_state' => 4, 'regmatch_slab.states[69].u' => 44, 'regmatch_slab.states[69].u.branch' => 12, 'regmatch_slab.states[69].u.branch.cp' => 4, 'regmatch_slab.states[69].u.branch.lastparen' => 4, 'regmatch_slab.states[69].u.branch.next_branch' => 4, 'regmatch_slab.states[69].u.curly' => 44, 'regmatch_slab.states[69].u.curly.A' => 4, 'regmatch_slab.states[69].u.curly.B' => 4, 'regmatch_slab.states[69].u.curly.c1' => 4, 'regmatch_slab.states[69].u.curly.c2' => 4, 'regmatch_slab.states[69].u.curly.count' => 4, 'regmatch_slab.states[69].u.curly.cp' => 4, 'regmatch_slab.states[69].u.curly.max' => 4, 'regmatch_slab.states[69].u.curly.maxpos' => 4, 'regmatch_slab.states[69].u.curly.min' => 4, 'regmatch_slab.states[69].u.curly.oldloc' => 4, 'regmatch_slab.states[69].u.curly.paren' => 4, 'regmatch_slab.states[69].u.curlym' => 37, 'regmatch_slab.states[69].u.curlym.A' => 4, 'regmatch_slab.states[69].u.curlym.B' => 4, 'regmatch_slab.states[69].u.curlym.alen' => 4, 'regmatch_slab.states[69].u.curlym.c1' => 4, 'regmatch_slab.states[69].u.curlym.c2' => 4, 'regmatch_slab.states[69].u.curlym.count' => 4, 'regmatch_slab.states[69].u.curlym.cp' => 4, 'regmatch_slab.states[69].u.curlym.me' => 4, 'regmatch_slab.states[69].u.curlym.minmod' => 1, 'regmatch_slab.states[69].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[69].u.curlyx' => 41, 'regmatch_slab.states[69].u.curlyx.A' => 4, 'regmatch_slab.states[69].u.curlyx.B' => 4, 'regmatch_slab.states[69].u.curlyx.count' => 4, 'regmatch_slab.states[69].u.curlyx.cp' => 4, 'regmatch_slab.states[69].u.curlyx.lastloc' => 4, 'regmatch_slab.states[69].u.curlyx.max' => 4, 'regmatch_slab.states[69].u.curlyx.min' => 4, 'regmatch_slab.states[69].u.curlyx.minmod' => 1, 'regmatch_slab.states[69].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[69].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[69].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[69].u.eval' => 36, 'regmatch_slab.states[69].u.eval.B' => 4, 'regmatch_slab.states[69].u.eval.close_paren' => 4, 'regmatch_slab.states[69].u.eval.cp' => 4, 'regmatch_slab.states[69].u.eval.lastcp' => 4, 'regmatch_slab.states[69].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[69].u.eval.prev_eval' => 4, 'regmatch_slab.states[69].u.eval.prev_rex' => 4, 'regmatch_slab.states[69].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[69].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[69].u.ifmatch' => 16, 'regmatch_slab.states[69].u.ifmatch.logical' => 4, 'regmatch_slab.states[69].u.ifmatch.me' => 4, 'regmatch_slab.states[69].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[69].u.ifmatch.wanted' => 4, 'regmatch_slab.states[69].u.trie' => 20, 'regmatch_slab.states[69].u.trie.B' => 4, 'regmatch_slab.states[69].u.trie.accept_buff' => 4, 'regmatch_slab.states[69].u.trie.accepted' => 4, 'regmatch_slab.states[69].u.trie.jump' => 4, 'regmatch_slab.states[69].u.trie.me' => 4, 'regmatch_slab.states[69].u.whilem' => 28, 'regmatch_slab.states[69].u.whilem.cache_mask' => 4, 'regmatch_slab.states[69].u.whilem.cache_offset' => 4, 'regmatch_slab.states[69].u.whilem.cp' => 4, 'regmatch_slab.states[69].u.whilem.lastcp' => 4, 'regmatch_slab.states[69].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[69].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[69].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[69].u.yes' => 4, 'regmatch_slab.states[69].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[6]' => 52, 'regmatch_slab.states[6].locinput' => 4, 'regmatch_slab.states[6].resume_state' => 4, 'regmatch_slab.states[6].u' => 44, 'regmatch_slab.states[6].u.branch' => 12, 'regmatch_slab.states[6].u.branch.cp' => 4, 'regmatch_slab.states[6].u.branch.lastparen' => 4, 'regmatch_slab.states[6].u.branch.next_branch' => 4, 'regmatch_slab.states[6].u.curly' => 44, 'regmatch_slab.states[6].u.curly.A' => 4, 'regmatch_slab.states[6].u.curly.B' => 4, 'regmatch_slab.states[6].u.curly.c1' => 4, 'regmatch_slab.states[6].u.curly.c2' => 4, 'regmatch_slab.states[6].u.curly.count' => 4, 'regmatch_slab.states[6].u.curly.cp' => 4, 'regmatch_slab.states[6].u.curly.max' => 4, 'regmatch_slab.states[6].u.curly.maxpos' => 4, 'regmatch_slab.states[6].u.curly.min' => 4, 'regmatch_slab.states[6].u.curly.oldloc' => 4, 'regmatch_slab.states[6].u.curly.paren' => 4, 'regmatch_slab.states[6].u.curlym' => 37, 'regmatch_slab.states[6].u.curlym.A' => 4, 'regmatch_slab.states[6].u.curlym.B' => 4, 'regmatch_slab.states[6].u.curlym.alen' => 4, 'regmatch_slab.states[6].u.curlym.c1' => 4, 'regmatch_slab.states[6].u.curlym.c2' => 4, 'regmatch_slab.states[6].u.curlym.count' => 4, 'regmatch_slab.states[6].u.curlym.cp' => 4, 'regmatch_slab.states[6].u.curlym.me' => 4, 'regmatch_slab.states[6].u.curlym.minmod' => 1, 'regmatch_slab.states[6].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[6].u.curlyx' => 41, 'regmatch_slab.states[6].u.curlyx.A' => 4, 'regmatch_slab.states[6].u.curlyx.B' => 4, 'regmatch_slab.states[6].u.curlyx.count' => 4, 'regmatch_slab.states[6].u.curlyx.cp' => 4, 'regmatch_slab.states[6].u.curlyx.lastloc' => 4, 'regmatch_slab.states[6].u.curlyx.max' => 4, 'regmatch_slab.states[6].u.curlyx.min' => 4, 'regmatch_slab.states[6].u.curlyx.minmod' => 1, 'regmatch_slab.states[6].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[6].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[6].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[6].u.eval' => 36, 'regmatch_slab.states[6].u.eval.B' => 4, 'regmatch_slab.states[6].u.eval.close_paren' => 4, 'regmatch_slab.states[6].u.eval.cp' => 4, 'regmatch_slab.states[6].u.eval.lastcp' => 4, 'regmatch_slab.states[6].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[6].u.eval.prev_eval' => 4, 'regmatch_slab.states[6].u.eval.prev_rex' => 4, 'regmatch_slab.states[6].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[6].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[6].u.ifmatch' => 16, 'regmatch_slab.states[6].u.ifmatch.logical' => 4, 'regmatch_slab.states[6].u.ifmatch.me' => 4, 'regmatch_slab.states[6].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[6].u.ifmatch.wanted' => 4, 'regmatch_slab.states[6].u.trie' => 20, 'regmatch_slab.states[6].u.trie.B' => 4, 'regmatch_slab.states[6].u.trie.accept_buff' => 4, 'regmatch_slab.states[6].u.trie.accepted' => 4, 'regmatch_slab.states[6].u.trie.jump' => 4, 'regmatch_slab.states[6].u.trie.me' => 4, 'regmatch_slab.states[6].u.whilem' => 28, 'regmatch_slab.states[6].u.whilem.cache_mask' => 4, 'regmatch_slab.states[6].u.whilem.cache_offset' => 4, 'regmatch_slab.states[6].u.whilem.cp' => 4, 'regmatch_slab.states[6].u.whilem.lastcp' => 4, 'regmatch_slab.states[6].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[6].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[6].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[6].u.yes' => 4, 'regmatch_slab.states[6].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[70]' => 52, 'regmatch_slab.states[70].locinput' => 4, 'regmatch_slab.states[70].resume_state' => 4, 'regmatch_slab.states[70].u' => 44, 'regmatch_slab.states[70].u.branch' => 12, 'regmatch_slab.states[70].u.branch.cp' => 4, 'regmatch_slab.states[70].u.branch.lastparen' => 4, 'regmatch_slab.states[70].u.branch.next_branch' => 4, 'regmatch_slab.states[70].u.curly' => 44, 'regmatch_slab.states[70].u.curly.A' => 4, 'regmatch_slab.states[70].u.curly.B' => 4, 'regmatch_slab.states[70].u.curly.c1' => 4, 'regmatch_slab.states[70].u.curly.c2' => 4, 'regmatch_slab.states[70].u.curly.count' => 4, 'regmatch_slab.states[70].u.curly.cp' => 4, 'regmatch_slab.states[70].u.curly.max' => 4, 'regmatch_slab.states[70].u.curly.maxpos' => 4, 'regmatch_slab.states[70].u.curly.min' => 4, 'regmatch_slab.states[70].u.curly.oldloc' => 4, 'regmatch_slab.states[70].u.curly.paren' => 4, 'regmatch_slab.states[70].u.curlym' => 37, 'regmatch_slab.states[70].u.curlym.A' => 4, 'regmatch_slab.states[70].u.curlym.B' => 4, 'regmatch_slab.states[70].u.curlym.alen' => 4, 'regmatch_slab.states[70].u.curlym.c1' => 4, 'regmatch_slab.states[70].u.curlym.c2' => 4, 'regmatch_slab.states[70].u.curlym.count' => 4, 'regmatch_slab.states[70].u.curlym.cp' => 4, 'regmatch_slab.states[70].u.curlym.me' => 4, 'regmatch_slab.states[70].u.curlym.minmod' => 1, 'regmatch_slab.states[70].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[70].u.curlyx' => 41, 'regmatch_slab.states[70].u.curlyx.A' => 4, 'regmatch_slab.states[70].u.curlyx.B' => 4, 'regmatch_slab.states[70].u.curlyx.count' => 4, 'regmatch_slab.states[70].u.curlyx.cp' => 4, 'regmatch_slab.states[70].u.curlyx.lastloc' => 4, 'regmatch_slab.states[70].u.curlyx.max' => 4, 'regmatch_slab.states[70].u.curlyx.min' => 4, 'regmatch_slab.states[70].u.curlyx.minmod' => 1, 'regmatch_slab.states[70].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[70].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[70].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[70].u.eval' => 36, 'regmatch_slab.states[70].u.eval.B' => 4, 'regmatch_slab.states[70].u.eval.close_paren' => 4, 'regmatch_slab.states[70].u.eval.cp' => 4, 'regmatch_slab.states[70].u.eval.lastcp' => 4, 'regmatch_slab.states[70].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[70].u.eval.prev_eval' => 4, 'regmatch_slab.states[70].u.eval.prev_rex' => 4, 'regmatch_slab.states[70].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[70].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[70].u.ifmatch' => 16, 'regmatch_slab.states[70].u.ifmatch.logical' => 4, 'regmatch_slab.states[70].u.ifmatch.me' => 4, 'regmatch_slab.states[70].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[70].u.ifmatch.wanted' => 4, 'regmatch_slab.states[70].u.trie' => 20, 'regmatch_slab.states[70].u.trie.B' => 4, 'regmatch_slab.states[70].u.trie.accept_buff' => 4, 'regmatch_slab.states[70].u.trie.accepted' => 4, 'regmatch_slab.states[70].u.trie.jump' => 4, 'regmatch_slab.states[70].u.trie.me' => 4, 'regmatch_slab.states[70].u.whilem' => 28, 'regmatch_slab.states[70].u.whilem.cache_mask' => 4, 'regmatch_slab.states[70].u.whilem.cache_offset' => 4, 'regmatch_slab.states[70].u.whilem.cp' => 4, 'regmatch_slab.states[70].u.whilem.lastcp' => 4, 'regmatch_slab.states[70].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[70].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[70].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[70].u.yes' => 4, 'regmatch_slab.states[70].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[71]' => 52, 'regmatch_slab.states[71].locinput' => 4, 'regmatch_slab.states[71].resume_state' => 4, 'regmatch_slab.states[71].u' => 44, 'regmatch_slab.states[71].u.branch' => 12, 'regmatch_slab.states[71].u.branch.cp' => 4, 'regmatch_slab.states[71].u.branch.lastparen' => 4, 'regmatch_slab.states[71].u.branch.next_branch' => 4, 'regmatch_slab.states[71].u.curly' => 44, 'regmatch_slab.states[71].u.curly.A' => 4, 'regmatch_slab.states[71].u.curly.B' => 4, 'regmatch_slab.states[71].u.curly.c1' => 4, 'regmatch_slab.states[71].u.curly.c2' => 4, 'regmatch_slab.states[71].u.curly.count' => 4, 'regmatch_slab.states[71].u.curly.cp' => 4, 'regmatch_slab.states[71].u.curly.max' => 4, 'regmatch_slab.states[71].u.curly.maxpos' => 4, 'regmatch_slab.states[71].u.curly.min' => 4, 'regmatch_slab.states[71].u.curly.oldloc' => 4, 'regmatch_slab.states[71].u.curly.paren' => 4, 'regmatch_slab.states[71].u.curlym' => 37, 'regmatch_slab.states[71].u.curlym.A' => 4, 'regmatch_slab.states[71].u.curlym.B' => 4, 'regmatch_slab.states[71].u.curlym.alen' => 4, 'regmatch_slab.states[71].u.curlym.c1' => 4, 'regmatch_slab.states[71].u.curlym.c2' => 4, 'regmatch_slab.states[71].u.curlym.count' => 4, 'regmatch_slab.states[71].u.curlym.cp' => 4, 'regmatch_slab.states[71].u.curlym.me' => 4, 'regmatch_slab.states[71].u.curlym.minmod' => 1, 'regmatch_slab.states[71].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[71].u.curlyx' => 41, 'regmatch_slab.states[71].u.curlyx.A' => 4, 'regmatch_slab.states[71].u.curlyx.B' => 4, 'regmatch_slab.states[71].u.curlyx.count' => 4, 'regmatch_slab.states[71].u.curlyx.cp' => 4, 'regmatch_slab.states[71].u.curlyx.lastloc' => 4, 'regmatch_slab.states[71].u.curlyx.max' => 4, 'regmatch_slab.states[71].u.curlyx.min' => 4, 'regmatch_slab.states[71].u.curlyx.minmod' => 1, 'regmatch_slab.states[71].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[71].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[71].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[71].u.eval' => 36, 'regmatch_slab.states[71].u.eval.B' => 4, 'regmatch_slab.states[71].u.eval.close_paren' => 4, 'regmatch_slab.states[71].u.eval.cp' => 4, 'regmatch_slab.states[71].u.eval.lastcp' => 4, 'regmatch_slab.states[71].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[71].u.eval.prev_eval' => 4, 'regmatch_slab.states[71].u.eval.prev_rex' => 4, 'regmatch_slab.states[71].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[71].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[71].u.ifmatch' => 16, 'regmatch_slab.states[71].u.ifmatch.logical' => 4, 'regmatch_slab.states[71].u.ifmatch.me' => 4, 'regmatch_slab.states[71].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[71].u.ifmatch.wanted' => 4, 'regmatch_slab.states[71].u.trie' => 20, 'regmatch_slab.states[71].u.trie.B' => 4, 'regmatch_slab.states[71].u.trie.accept_buff' => 4, 'regmatch_slab.states[71].u.trie.accepted' => 4, 'regmatch_slab.states[71].u.trie.jump' => 4, 'regmatch_slab.states[71].u.trie.me' => 4, 'regmatch_slab.states[71].u.whilem' => 28, 'regmatch_slab.states[71].u.whilem.cache_mask' => 4, 'regmatch_slab.states[71].u.whilem.cache_offset' => 4, 'regmatch_slab.states[71].u.whilem.cp' => 4, 'regmatch_slab.states[71].u.whilem.lastcp' => 4, 'regmatch_slab.states[71].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[71].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[71].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[71].u.yes' => 4, 'regmatch_slab.states[71].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[72]' => 52, 'regmatch_slab.states[72].locinput' => 4, 'regmatch_slab.states[72].resume_state' => 4, 'regmatch_slab.states[72].u' => 44, 'regmatch_slab.states[72].u.branch' => 12, 'regmatch_slab.states[72].u.branch.cp' => 4, 'regmatch_slab.states[72].u.branch.lastparen' => 4, 'regmatch_slab.states[72].u.branch.next_branch' => 4, 'regmatch_slab.states[72].u.curly' => 44, 'regmatch_slab.states[72].u.curly.A' => 4, 'regmatch_slab.states[72].u.curly.B' => 4, 'regmatch_slab.states[72].u.curly.c1' => 4, 'regmatch_slab.states[72].u.curly.c2' => 4, 'regmatch_slab.states[72].u.curly.count' => 4, 'regmatch_slab.states[72].u.curly.cp' => 4, 'regmatch_slab.states[72].u.curly.max' => 4, 'regmatch_slab.states[72].u.curly.maxpos' => 4, 'regmatch_slab.states[72].u.curly.min' => 4, 'regmatch_slab.states[72].u.curly.oldloc' => 4, 'regmatch_slab.states[72].u.curly.paren' => 4, 'regmatch_slab.states[72].u.curlym' => 37, 'regmatch_slab.states[72].u.curlym.A' => 4, 'regmatch_slab.states[72].u.curlym.B' => 4, 'regmatch_slab.states[72].u.curlym.alen' => 4, 'regmatch_slab.states[72].u.curlym.c1' => 4, 'regmatch_slab.states[72].u.curlym.c2' => 4, 'regmatch_slab.states[72].u.curlym.count' => 4, 'regmatch_slab.states[72].u.curlym.cp' => 4, 'regmatch_slab.states[72].u.curlym.me' => 4, 'regmatch_slab.states[72].u.curlym.minmod' => 1, 'regmatch_slab.states[72].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[72].u.curlyx' => 41, 'regmatch_slab.states[72].u.curlyx.A' => 4, 'regmatch_slab.states[72].u.curlyx.B' => 4, 'regmatch_slab.states[72].u.curlyx.count' => 4, 'regmatch_slab.states[72].u.curlyx.cp' => 4, 'regmatch_slab.states[72].u.curlyx.lastloc' => 4, 'regmatch_slab.states[72].u.curlyx.max' => 4, 'regmatch_slab.states[72].u.curlyx.min' => 4, 'regmatch_slab.states[72].u.curlyx.minmod' => 1, 'regmatch_slab.states[72].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[72].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[72].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[72].u.eval' => 36, 'regmatch_slab.states[72].u.eval.B' => 4, 'regmatch_slab.states[72].u.eval.close_paren' => 4, 'regmatch_slab.states[72].u.eval.cp' => 4, 'regmatch_slab.states[72].u.eval.lastcp' => 4, 'regmatch_slab.states[72].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[72].u.eval.prev_eval' => 4, 'regmatch_slab.states[72].u.eval.prev_rex' => 4, 'regmatch_slab.states[72].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[72].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[72].u.ifmatch' => 16, 'regmatch_slab.states[72].u.ifmatch.logical' => 4, 'regmatch_slab.states[72].u.ifmatch.me' => 4, 'regmatch_slab.states[72].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[72].u.ifmatch.wanted' => 4, 'regmatch_slab.states[72].u.trie' => 20, 'regmatch_slab.states[72].u.trie.B' => 4, 'regmatch_slab.states[72].u.trie.accept_buff' => 4, 'regmatch_slab.states[72].u.trie.accepted' => 4, 'regmatch_slab.states[72].u.trie.jump' => 4, 'regmatch_slab.states[72].u.trie.me' => 4, 'regmatch_slab.states[72].u.whilem' => 28, 'regmatch_slab.states[72].u.whilem.cache_mask' => 4, 'regmatch_slab.states[72].u.whilem.cache_offset' => 4, 'regmatch_slab.states[72].u.whilem.cp' => 4, 'regmatch_slab.states[72].u.whilem.lastcp' => 4, 'regmatch_slab.states[72].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[72].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[72].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[72].u.yes' => 4, 'regmatch_slab.states[72].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[73]' => 52, 'regmatch_slab.states[73].locinput' => 4, 'regmatch_slab.states[73].resume_state' => 4, 'regmatch_slab.states[73].u' => 44, 'regmatch_slab.states[73].u.branch' => 12, 'regmatch_slab.states[73].u.branch.cp' => 4, 'regmatch_slab.states[73].u.branch.lastparen' => 4, 'regmatch_slab.states[73].u.branch.next_branch' => 4, 'regmatch_slab.states[73].u.curly' => 44, 'regmatch_slab.states[73].u.curly.A' => 4, 'regmatch_slab.states[73].u.curly.B' => 4, 'regmatch_slab.states[73].u.curly.c1' => 4, 'regmatch_slab.states[73].u.curly.c2' => 4, 'regmatch_slab.states[73].u.curly.count' => 4, 'regmatch_slab.states[73].u.curly.cp' => 4, 'regmatch_slab.states[73].u.curly.max' => 4, 'regmatch_slab.states[73].u.curly.maxpos' => 4, 'regmatch_slab.states[73].u.curly.min' => 4, 'regmatch_slab.states[73].u.curly.oldloc' => 4, 'regmatch_slab.states[73].u.curly.paren' => 4, 'regmatch_slab.states[73].u.curlym' => 37, 'regmatch_slab.states[73].u.curlym.A' => 4, 'regmatch_slab.states[73].u.curlym.B' => 4, 'regmatch_slab.states[73].u.curlym.alen' => 4, 'regmatch_slab.states[73].u.curlym.c1' => 4, 'regmatch_slab.states[73].u.curlym.c2' => 4, 'regmatch_slab.states[73].u.curlym.count' => 4, 'regmatch_slab.states[73].u.curlym.cp' => 4, 'regmatch_slab.states[73].u.curlym.me' => 4, 'regmatch_slab.states[73].u.curlym.minmod' => 1, 'regmatch_slab.states[73].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[73].u.curlyx' => 41, 'regmatch_slab.states[73].u.curlyx.A' => 4, 'regmatch_slab.states[73].u.curlyx.B' => 4, 'regmatch_slab.states[73].u.curlyx.count' => 4, 'regmatch_slab.states[73].u.curlyx.cp' => 4, 'regmatch_slab.states[73].u.curlyx.lastloc' => 4, 'regmatch_slab.states[73].u.curlyx.max' => 4, 'regmatch_slab.states[73].u.curlyx.min' => 4, 'regmatch_slab.states[73].u.curlyx.minmod' => 1, 'regmatch_slab.states[73].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[73].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[73].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[73].u.eval' => 36, 'regmatch_slab.states[73].u.eval.B' => 4, 'regmatch_slab.states[73].u.eval.close_paren' => 4, 'regmatch_slab.states[73].u.eval.cp' => 4, 'regmatch_slab.states[73].u.eval.lastcp' => 4, 'regmatch_slab.states[73].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[73].u.eval.prev_eval' => 4, 'regmatch_slab.states[73].u.eval.prev_rex' => 4, 'regmatch_slab.states[73].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[73].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[73].u.ifmatch' => 16, 'regmatch_slab.states[73].u.ifmatch.logical' => 4, 'regmatch_slab.states[73].u.ifmatch.me' => 4, 'regmatch_slab.states[73].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[73].u.ifmatch.wanted' => 4, 'regmatch_slab.states[73].u.trie' => 20, 'regmatch_slab.states[73].u.trie.B' => 4, 'regmatch_slab.states[73].u.trie.accept_buff' => 4, 'regmatch_slab.states[73].u.trie.accepted' => 4, 'regmatch_slab.states[73].u.trie.jump' => 4, 'regmatch_slab.states[73].u.trie.me' => 4, 'regmatch_slab.states[73].u.whilem' => 28, 'regmatch_slab.states[73].u.whilem.cache_mask' => 4, 'regmatch_slab.states[73].u.whilem.cache_offset' => 4, 'regmatch_slab.states[73].u.whilem.cp' => 4, 'regmatch_slab.states[73].u.whilem.lastcp' => 4, 'regmatch_slab.states[73].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[73].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[73].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[73].u.yes' => 4, 'regmatch_slab.states[73].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[74]' => 52, 'regmatch_slab.states[74].locinput' => 4, 'regmatch_slab.states[74].resume_state' => 4, 'regmatch_slab.states[74].u' => 44, 'regmatch_slab.states[74].u.branch' => 12, 'regmatch_slab.states[74].u.branch.cp' => 4, 'regmatch_slab.states[74].u.branch.lastparen' => 4, 'regmatch_slab.states[74].u.branch.next_branch' => 4, 'regmatch_slab.states[74].u.curly' => 44, 'regmatch_slab.states[74].u.curly.A' => 4, 'regmatch_slab.states[74].u.curly.B' => 4, 'regmatch_slab.states[74].u.curly.c1' => 4, 'regmatch_slab.states[74].u.curly.c2' => 4, 'regmatch_slab.states[74].u.curly.count' => 4, 'regmatch_slab.states[74].u.curly.cp' => 4, 'regmatch_slab.states[74].u.curly.max' => 4, 'regmatch_slab.states[74].u.curly.maxpos' => 4, 'regmatch_slab.states[74].u.curly.min' => 4, 'regmatch_slab.states[74].u.curly.oldloc' => 4, 'regmatch_slab.states[74].u.curly.paren' => 4, 'regmatch_slab.states[74].u.curlym' => 37, 'regmatch_slab.states[74].u.curlym.A' => 4, 'regmatch_slab.states[74].u.curlym.B' => 4, 'regmatch_slab.states[74].u.curlym.alen' => 4, 'regmatch_slab.states[74].u.curlym.c1' => 4, 'regmatch_slab.states[74].u.curlym.c2' => 4, 'regmatch_slab.states[74].u.curlym.count' => 4, 'regmatch_slab.states[74].u.curlym.cp' => 4, 'regmatch_slab.states[74].u.curlym.me' => 4, 'regmatch_slab.states[74].u.curlym.minmod' => 1, 'regmatch_slab.states[74].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[74].u.curlyx' => 41, 'regmatch_slab.states[74].u.curlyx.A' => 4, 'regmatch_slab.states[74].u.curlyx.B' => 4, 'regmatch_slab.states[74].u.curlyx.count' => 4, 'regmatch_slab.states[74].u.curlyx.cp' => 4, 'regmatch_slab.states[74].u.curlyx.lastloc' => 4, 'regmatch_slab.states[74].u.curlyx.max' => 4, 'regmatch_slab.states[74].u.curlyx.min' => 4, 'regmatch_slab.states[74].u.curlyx.minmod' => 1, 'regmatch_slab.states[74].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[74].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[74].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[74].u.eval' => 36, 'regmatch_slab.states[74].u.eval.B' => 4, 'regmatch_slab.states[74].u.eval.close_paren' => 4, 'regmatch_slab.states[74].u.eval.cp' => 4, 'regmatch_slab.states[74].u.eval.lastcp' => 4, 'regmatch_slab.states[74].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[74].u.eval.prev_eval' => 4, 'regmatch_slab.states[74].u.eval.prev_rex' => 4, 'regmatch_slab.states[74].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[74].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[74].u.ifmatch' => 16, 'regmatch_slab.states[74].u.ifmatch.logical' => 4, 'regmatch_slab.states[74].u.ifmatch.me' => 4, 'regmatch_slab.states[74].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[74].u.ifmatch.wanted' => 4, 'regmatch_slab.states[74].u.trie' => 20, 'regmatch_slab.states[74].u.trie.B' => 4, 'regmatch_slab.states[74].u.trie.accept_buff' => 4, 'regmatch_slab.states[74].u.trie.accepted' => 4, 'regmatch_slab.states[74].u.trie.jump' => 4, 'regmatch_slab.states[74].u.trie.me' => 4, 'regmatch_slab.states[74].u.whilem' => 28, 'regmatch_slab.states[74].u.whilem.cache_mask' => 4, 'regmatch_slab.states[74].u.whilem.cache_offset' => 4, 'regmatch_slab.states[74].u.whilem.cp' => 4, 'regmatch_slab.states[74].u.whilem.lastcp' => 4, 'regmatch_slab.states[74].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[74].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[74].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[74].u.yes' => 4, 'regmatch_slab.states[74].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[75]' => 52, 'regmatch_slab.states[75].locinput' => 4, 'regmatch_slab.states[75].resume_state' => 4, 'regmatch_slab.states[75].u' => 44, 'regmatch_slab.states[75].u.branch' => 12, 'regmatch_slab.states[75].u.branch.cp' => 4, 'regmatch_slab.states[75].u.branch.lastparen' => 4, 'regmatch_slab.states[75].u.branch.next_branch' => 4, 'regmatch_slab.states[75].u.curly' => 44, 'regmatch_slab.states[75].u.curly.A' => 4, 'regmatch_slab.states[75].u.curly.B' => 4, 'regmatch_slab.states[75].u.curly.c1' => 4, 'regmatch_slab.states[75].u.curly.c2' => 4, 'regmatch_slab.states[75].u.curly.count' => 4, 'regmatch_slab.states[75].u.curly.cp' => 4, 'regmatch_slab.states[75].u.curly.max' => 4, 'regmatch_slab.states[75].u.curly.maxpos' => 4, 'regmatch_slab.states[75].u.curly.min' => 4, 'regmatch_slab.states[75].u.curly.oldloc' => 4, 'regmatch_slab.states[75].u.curly.paren' => 4, 'regmatch_slab.states[75].u.curlym' => 37, 'regmatch_slab.states[75].u.curlym.A' => 4, 'regmatch_slab.states[75].u.curlym.B' => 4, 'regmatch_slab.states[75].u.curlym.alen' => 4, 'regmatch_slab.states[75].u.curlym.c1' => 4, 'regmatch_slab.states[75].u.curlym.c2' => 4, 'regmatch_slab.states[75].u.curlym.count' => 4, 'regmatch_slab.states[75].u.curlym.cp' => 4, 'regmatch_slab.states[75].u.curlym.me' => 4, 'regmatch_slab.states[75].u.curlym.minmod' => 1, 'regmatch_slab.states[75].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[75].u.curlyx' => 41, 'regmatch_slab.states[75].u.curlyx.A' => 4, 'regmatch_slab.states[75].u.curlyx.B' => 4, 'regmatch_slab.states[75].u.curlyx.count' => 4, 'regmatch_slab.states[75].u.curlyx.cp' => 4, 'regmatch_slab.states[75].u.curlyx.lastloc' => 4, 'regmatch_slab.states[75].u.curlyx.max' => 4, 'regmatch_slab.states[75].u.curlyx.min' => 4, 'regmatch_slab.states[75].u.curlyx.minmod' => 1, 'regmatch_slab.states[75].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[75].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[75].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[75].u.eval' => 36, 'regmatch_slab.states[75].u.eval.B' => 4, 'regmatch_slab.states[75].u.eval.close_paren' => 4, 'regmatch_slab.states[75].u.eval.cp' => 4, 'regmatch_slab.states[75].u.eval.lastcp' => 4, 'regmatch_slab.states[75].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[75].u.eval.prev_eval' => 4, 'regmatch_slab.states[75].u.eval.prev_rex' => 4, 'regmatch_slab.states[75].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[75].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[75].u.ifmatch' => 16, 'regmatch_slab.states[75].u.ifmatch.logical' => 4, 'regmatch_slab.states[75].u.ifmatch.me' => 4, 'regmatch_slab.states[75].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[75].u.ifmatch.wanted' => 4, 'regmatch_slab.states[75].u.trie' => 20, 'regmatch_slab.states[75].u.trie.B' => 4, 'regmatch_slab.states[75].u.trie.accept_buff' => 4, 'regmatch_slab.states[75].u.trie.accepted' => 4, 'regmatch_slab.states[75].u.trie.jump' => 4, 'regmatch_slab.states[75].u.trie.me' => 4, 'regmatch_slab.states[75].u.whilem' => 28, 'regmatch_slab.states[75].u.whilem.cache_mask' => 4, 'regmatch_slab.states[75].u.whilem.cache_offset' => 4, 'regmatch_slab.states[75].u.whilem.cp' => 4, 'regmatch_slab.states[75].u.whilem.lastcp' => 4, 'regmatch_slab.states[75].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[75].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[75].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[75].u.yes' => 4, 'regmatch_slab.states[75].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[76]' => 52, 'regmatch_slab.states[76].locinput' => 4, 'regmatch_slab.states[76].resume_state' => 4, 'regmatch_slab.states[76].u' => 44, 'regmatch_slab.states[76].u.branch' => 12, 'regmatch_slab.states[76].u.branch.cp' => 4, 'regmatch_slab.states[76].u.branch.lastparen' => 4, 'regmatch_slab.states[76].u.branch.next_branch' => 4, 'regmatch_slab.states[76].u.curly' => 44, 'regmatch_slab.states[76].u.curly.A' => 4, 'regmatch_slab.states[76].u.curly.B' => 4, 'regmatch_slab.states[76].u.curly.c1' => 4, 'regmatch_slab.states[76].u.curly.c2' => 4, 'regmatch_slab.states[76].u.curly.count' => 4, 'regmatch_slab.states[76].u.curly.cp' => 4, 'regmatch_slab.states[76].u.curly.max' => 4, 'regmatch_slab.states[76].u.curly.maxpos' => 4, 'regmatch_slab.states[76].u.curly.min' => 4, 'regmatch_slab.states[76].u.curly.oldloc' => 4, 'regmatch_slab.states[76].u.curly.paren' => 4, 'regmatch_slab.states[76].u.curlym' => 37, 'regmatch_slab.states[76].u.curlym.A' => 4, 'regmatch_slab.states[76].u.curlym.B' => 4, 'regmatch_slab.states[76].u.curlym.alen' => 4, 'regmatch_slab.states[76].u.curlym.c1' => 4, 'regmatch_slab.states[76].u.curlym.c2' => 4, 'regmatch_slab.states[76].u.curlym.count' => 4, 'regmatch_slab.states[76].u.curlym.cp' => 4, 'regmatch_slab.states[76].u.curlym.me' => 4, 'regmatch_slab.states[76].u.curlym.minmod' => 1, 'regmatch_slab.states[76].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[76].u.curlyx' => 41, 'regmatch_slab.states[76].u.curlyx.A' => 4, 'regmatch_slab.states[76].u.curlyx.B' => 4, 'regmatch_slab.states[76].u.curlyx.count' => 4, 'regmatch_slab.states[76].u.curlyx.cp' => 4, 'regmatch_slab.states[76].u.curlyx.lastloc' => 4, 'regmatch_slab.states[76].u.curlyx.max' => 4, 'regmatch_slab.states[76].u.curlyx.min' => 4, 'regmatch_slab.states[76].u.curlyx.minmod' => 1, 'regmatch_slab.states[76].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[76].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[76].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[76].u.eval' => 36, 'regmatch_slab.states[76].u.eval.B' => 4, 'regmatch_slab.states[76].u.eval.close_paren' => 4, 'regmatch_slab.states[76].u.eval.cp' => 4, 'regmatch_slab.states[76].u.eval.lastcp' => 4, 'regmatch_slab.states[76].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[76].u.eval.prev_eval' => 4, 'regmatch_slab.states[76].u.eval.prev_rex' => 4, 'regmatch_slab.states[76].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[76].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[76].u.ifmatch' => 16, 'regmatch_slab.states[76].u.ifmatch.logical' => 4, 'regmatch_slab.states[76].u.ifmatch.me' => 4, 'regmatch_slab.states[76].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[76].u.ifmatch.wanted' => 4, 'regmatch_slab.states[76].u.trie' => 20, 'regmatch_slab.states[76].u.trie.B' => 4, 'regmatch_slab.states[76].u.trie.accept_buff' => 4, 'regmatch_slab.states[76].u.trie.accepted' => 4, 'regmatch_slab.states[76].u.trie.jump' => 4, 'regmatch_slab.states[76].u.trie.me' => 4, 'regmatch_slab.states[76].u.whilem' => 28, 'regmatch_slab.states[76].u.whilem.cache_mask' => 4, 'regmatch_slab.states[76].u.whilem.cache_offset' => 4, 'regmatch_slab.states[76].u.whilem.cp' => 4, 'regmatch_slab.states[76].u.whilem.lastcp' => 4, 'regmatch_slab.states[76].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[76].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[76].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[76].u.yes' => 4, 'regmatch_slab.states[76].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[77]' => 52, 'regmatch_slab.states[77].locinput' => 4, 'regmatch_slab.states[77].resume_state' => 4, 'regmatch_slab.states[77].u' => 44, 'regmatch_slab.states[77].u.branch' => 12, 'regmatch_slab.states[77].u.branch.cp' => 4, 'regmatch_slab.states[77].u.branch.lastparen' => 4, 'regmatch_slab.states[77].u.branch.next_branch' => 4, 'regmatch_slab.states[77].u.curly' => 44, 'regmatch_slab.states[77].u.curly.A' => 4, 'regmatch_slab.states[77].u.curly.B' => 4, 'regmatch_slab.states[77].u.curly.c1' => 4, 'regmatch_slab.states[77].u.curly.c2' => 4, 'regmatch_slab.states[77].u.curly.count' => 4, 'regmatch_slab.states[77].u.curly.cp' => 4, 'regmatch_slab.states[77].u.curly.max' => 4, 'regmatch_slab.states[77].u.curly.maxpos' => 4, 'regmatch_slab.states[77].u.curly.min' => 4, 'regmatch_slab.states[77].u.curly.oldloc' => 4, 'regmatch_slab.states[77].u.curly.paren' => 4, 'regmatch_slab.states[77].u.curlym' => 37, 'regmatch_slab.states[77].u.curlym.A' => 4, 'regmatch_slab.states[77].u.curlym.B' => 4, 'regmatch_slab.states[77].u.curlym.alen' => 4, 'regmatch_slab.states[77].u.curlym.c1' => 4, 'regmatch_slab.states[77].u.curlym.c2' => 4, 'regmatch_slab.states[77].u.curlym.count' => 4, 'regmatch_slab.states[77].u.curlym.cp' => 4, 'regmatch_slab.states[77].u.curlym.me' => 4, 'regmatch_slab.states[77].u.curlym.minmod' => 1, 'regmatch_slab.states[77].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[77].u.curlyx' => 41, 'regmatch_slab.states[77].u.curlyx.A' => 4, 'regmatch_slab.states[77].u.curlyx.B' => 4, 'regmatch_slab.states[77].u.curlyx.count' => 4, 'regmatch_slab.states[77].u.curlyx.cp' => 4, 'regmatch_slab.states[77].u.curlyx.lastloc' => 4, 'regmatch_slab.states[77].u.curlyx.max' => 4, 'regmatch_slab.states[77].u.curlyx.min' => 4, 'regmatch_slab.states[77].u.curlyx.minmod' => 1, 'regmatch_slab.states[77].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[77].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[77].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[77].u.eval' => 36, 'regmatch_slab.states[77].u.eval.B' => 4, 'regmatch_slab.states[77].u.eval.close_paren' => 4, 'regmatch_slab.states[77].u.eval.cp' => 4, 'regmatch_slab.states[77].u.eval.lastcp' => 4, 'regmatch_slab.states[77].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[77].u.eval.prev_eval' => 4, 'regmatch_slab.states[77].u.eval.prev_rex' => 4, 'regmatch_slab.states[77].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[77].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[77].u.ifmatch' => 16, 'regmatch_slab.states[77].u.ifmatch.logical' => 4, 'regmatch_slab.states[77].u.ifmatch.me' => 4, 'regmatch_slab.states[77].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[77].u.ifmatch.wanted' => 4, 'regmatch_slab.states[77].u.trie' => 20, 'regmatch_slab.states[77].u.trie.B' => 4, 'regmatch_slab.states[77].u.trie.accept_buff' => 4, 'regmatch_slab.states[77].u.trie.accepted' => 4, 'regmatch_slab.states[77].u.trie.jump' => 4, 'regmatch_slab.states[77].u.trie.me' => 4, 'regmatch_slab.states[77].u.whilem' => 28, 'regmatch_slab.states[77].u.whilem.cache_mask' => 4, 'regmatch_slab.states[77].u.whilem.cache_offset' => 4, 'regmatch_slab.states[77].u.whilem.cp' => 4, 'regmatch_slab.states[77].u.whilem.lastcp' => 4, 'regmatch_slab.states[77].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[77].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[77].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[77].u.yes' => 4, 'regmatch_slab.states[77].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[7]' => 52, 'regmatch_slab.states[7].locinput' => 4, 'regmatch_slab.states[7].resume_state' => 4, 'regmatch_slab.states[7].u' => 44, 'regmatch_slab.states[7].u.branch' => 12, 'regmatch_slab.states[7].u.branch.cp' => 4, 'regmatch_slab.states[7].u.branch.lastparen' => 4, 'regmatch_slab.states[7].u.branch.next_branch' => 4, 'regmatch_slab.states[7].u.curly' => 44, 'regmatch_slab.states[7].u.curly.A' => 4, 'regmatch_slab.states[7].u.curly.B' => 4, 'regmatch_slab.states[7].u.curly.c1' => 4, 'regmatch_slab.states[7].u.curly.c2' => 4, 'regmatch_slab.states[7].u.curly.count' => 4, 'regmatch_slab.states[7].u.curly.cp' => 4, 'regmatch_slab.states[7].u.curly.max' => 4, 'regmatch_slab.states[7].u.curly.maxpos' => 4, 'regmatch_slab.states[7].u.curly.min' => 4, 'regmatch_slab.states[7].u.curly.oldloc' => 4, 'regmatch_slab.states[7].u.curly.paren' => 4, 'regmatch_slab.states[7].u.curlym' => 37, 'regmatch_slab.states[7].u.curlym.A' => 4, 'regmatch_slab.states[7].u.curlym.B' => 4, 'regmatch_slab.states[7].u.curlym.alen' => 4, 'regmatch_slab.states[7].u.curlym.c1' => 4, 'regmatch_slab.states[7].u.curlym.c2' => 4, 'regmatch_slab.states[7].u.curlym.count' => 4, 'regmatch_slab.states[7].u.curlym.cp' => 4, 'regmatch_slab.states[7].u.curlym.me' => 4, 'regmatch_slab.states[7].u.curlym.minmod' => 1, 'regmatch_slab.states[7].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[7].u.curlyx' => 41, 'regmatch_slab.states[7].u.curlyx.A' => 4, 'regmatch_slab.states[7].u.curlyx.B' => 4, 'regmatch_slab.states[7].u.curlyx.count' => 4, 'regmatch_slab.states[7].u.curlyx.cp' => 4, 'regmatch_slab.states[7].u.curlyx.lastloc' => 4, 'regmatch_slab.states[7].u.curlyx.max' => 4, 'regmatch_slab.states[7].u.curlyx.min' => 4, 'regmatch_slab.states[7].u.curlyx.minmod' => 1, 'regmatch_slab.states[7].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[7].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[7].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[7].u.eval' => 36, 'regmatch_slab.states[7].u.eval.B' => 4, 'regmatch_slab.states[7].u.eval.close_paren' => 4, 'regmatch_slab.states[7].u.eval.cp' => 4, 'regmatch_slab.states[7].u.eval.lastcp' => 4, 'regmatch_slab.states[7].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[7].u.eval.prev_eval' => 4, 'regmatch_slab.states[7].u.eval.prev_rex' => 4, 'regmatch_slab.states[7].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[7].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[7].u.ifmatch' => 16, 'regmatch_slab.states[7].u.ifmatch.logical' => 4, 'regmatch_slab.states[7].u.ifmatch.me' => 4, 'regmatch_slab.states[7].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[7].u.ifmatch.wanted' => 4, 'regmatch_slab.states[7].u.trie' => 20, 'regmatch_slab.states[7].u.trie.B' => 4, 'regmatch_slab.states[7].u.trie.accept_buff' => 4, 'regmatch_slab.states[7].u.trie.accepted' => 4, 'regmatch_slab.states[7].u.trie.jump' => 4, 'regmatch_slab.states[7].u.trie.me' => 4, 'regmatch_slab.states[7].u.whilem' => 28, 'regmatch_slab.states[7].u.whilem.cache_mask' => 4, 'regmatch_slab.states[7].u.whilem.cache_offset' => 4, 'regmatch_slab.states[7].u.whilem.cp' => 4, 'regmatch_slab.states[7].u.whilem.lastcp' => 4, 'regmatch_slab.states[7].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[7].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[7].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[7].u.yes' => 4, 'regmatch_slab.states[7].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[8]' => 52, 'regmatch_slab.states[8].locinput' => 4, 'regmatch_slab.states[8].resume_state' => 4, 'regmatch_slab.states[8].u' => 44, 'regmatch_slab.states[8].u.branch' => 12, 'regmatch_slab.states[8].u.branch.cp' => 4, 'regmatch_slab.states[8].u.branch.lastparen' => 4, 'regmatch_slab.states[8].u.branch.next_branch' => 4, 'regmatch_slab.states[8].u.curly' => 44, 'regmatch_slab.states[8].u.curly.A' => 4, 'regmatch_slab.states[8].u.curly.B' => 4, 'regmatch_slab.states[8].u.curly.c1' => 4, 'regmatch_slab.states[8].u.curly.c2' => 4, 'regmatch_slab.states[8].u.curly.count' => 4, 'regmatch_slab.states[8].u.curly.cp' => 4, 'regmatch_slab.states[8].u.curly.max' => 4, 'regmatch_slab.states[8].u.curly.maxpos' => 4, 'regmatch_slab.states[8].u.curly.min' => 4, 'regmatch_slab.states[8].u.curly.oldloc' => 4, 'regmatch_slab.states[8].u.curly.paren' => 4, 'regmatch_slab.states[8].u.curlym' => 37, 'regmatch_slab.states[8].u.curlym.A' => 4, 'regmatch_slab.states[8].u.curlym.B' => 4, 'regmatch_slab.states[8].u.curlym.alen' => 4, 'regmatch_slab.states[8].u.curlym.c1' => 4, 'regmatch_slab.states[8].u.curlym.c2' => 4, 'regmatch_slab.states[8].u.curlym.count' => 4, 'regmatch_slab.states[8].u.curlym.cp' => 4, 'regmatch_slab.states[8].u.curlym.me' => 4, 'regmatch_slab.states[8].u.curlym.minmod' => 1, 'regmatch_slab.states[8].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[8].u.curlyx' => 41, 'regmatch_slab.states[8].u.curlyx.A' => 4, 'regmatch_slab.states[8].u.curlyx.B' => 4, 'regmatch_slab.states[8].u.curlyx.count' => 4, 'regmatch_slab.states[8].u.curlyx.cp' => 4, 'regmatch_slab.states[8].u.curlyx.lastloc' => 4, 'regmatch_slab.states[8].u.curlyx.max' => 4, 'regmatch_slab.states[8].u.curlyx.min' => 4, 'regmatch_slab.states[8].u.curlyx.minmod' => 1, 'regmatch_slab.states[8].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[8].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[8].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[8].u.eval' => 36, 'regmatch_slab.states[8].u.eval.B' => 4, 'regmatch_slab.states[8].u.eval.close_paren' => 4, 'regmatch_slab.states[8].u.eval.cp' => 4, 'regmatch_slab.states[8].u.eval.lastcp' => 4, 'regmatch_slab.states[8].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[8].u.eval.prev_eval' => 4, 'regmatch_slab.states[8].u.eval.prev_rex' => 4, 'regmatch_slab.states[8].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[8].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[8].u.ifmatch' => 16, 'regmatch_slab.states[8].u.ifmatch.logical' => 4, 'regmatch_slab.states[8].u.ifmatch.me' => 4, 'regmatch_slab.states[8].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[8].u.ifmatch.wanted' => 4, 'regmatch_slab.states[8].u.trie' => 20, 'regmatch_slab.states[8].u.trie.B' => 4, 'regmatch_slab.states[8].u.trie.accept_buff' => 4, 'regmatch_slab.states[8].u.trie.accepted' => 4, 'regmatch_slab.states[8].u.trie.jump' => 4, 'regmatch_slab.states[8].u.trie.me' => 4, 'regmatch_slab.states[8].u.whilem' => 28, 'regmatch_slab.states[8].u.whilem.cache_mask' => 4, 'regmatch_slab.states[8].u.whilem.cache_offset' => 4, 'regmatch_slab.states[8].u.whilem.cp' => 4, 'regmatch_slab.states[8].u.whilem.lastcp' => 4, 'regmatch_slab.states[8].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[8].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[8].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[8].u.yes' => 4, 'regmatch_slab.states[8].u.yes.prev_yes_state' => 4, 'regmatch_slab.states[9]' => 52, 'regmatch_slab.states[9].locinput' => 4, 'regmatch_slab.states[9].resume_state' => 4, 'regmatch_slab.states[9].u' => 44, 'regmatch_slab.states[9].u.branch' => 12, 'regmatch_slab.states[9].u.branch.cp' => 4, 'regmatch_slab.states[9].u.branch.lastparen' => 4, 'regmatch_slab.states[9].u.branch.next_branch' => 4, 'regmatch_slab.states[9].u.curly' => 44, 'regmatch_slab.states[9].u.curly.A' => 4, 'regmatch_slab.states[9].u.curly.B' => 4, 'regmatch_slab.states[9].u.curly.c1' => 4, 'regmatch_slab.states[9].u.curly.c2' => 4, 'regmatch_slab.states[9].u.curly.count' => 4, 'regmatch_slab.states[9].u.curly.cp' => 4, 'regmatch_slab.states[9].u.curly.max' => 4, 'regmatch_slab.states[9].u.curly.maxpos' => 4, 'regmatch_slab.states[9].u.curly.min' => 4, 'regmatch_slab.states[9].u.curly.oldloc' => 4, 'regmatch_slab.states[9].u.curly.paren' => 4, 'regmatch_slab.states[9].u.curlym' => 37, 'regmatch_slab.states[9].u.curlym.A' => 4, 'regmatch_slab.states[9].u.curlym.B' => 4, 'regmatch_slab.states[9].u.curlym.alen' => 4, 'regmatch_slab.states[9].u.curlym.c1' => 4, 'regmatch_slab.states[9].u.curlym.c2' => 4, 'regmatch_slab.states[9].u.curlym.count' => 4, 'regmatch_slab.states[9].u.curlym.cp' => 4, 'regmatch_slab.states[9].u.curlym.me' => 4, 'regmatch_slab.states[9].u.curlym.minmod' => 1, 'regmatch_slab.states[9].u.curlym.prev_yes_state' => 4, 'regmatch_slab.states[9].u.curlyx' => 41, 'regmatch_slab.states[9].u.curlyx.A' => 4, 'regmatch_slab.states[9].u.curlyx.B' => 4, 'regmatch_slab.states[9].u.curlyx.count' => 4, 'regmatch_slab.states[9].u.curlyx.cp' => 4, 'regmatch_slab.states[9].u.curlyx.lastloc' => 4, 'regmatch_slab.states[9].u.curlyx.max' => 4, 'regmatch_slab.states[9].u.curlyx.min' => 4, 'regmatch_slab.states[9].u.curlyx.minmod' => 1, 'regmatch_slab.states[9].u.curlyx.parenfloor' => 4, 'regmatch_slab.states[9].u.curlyx.prev_curlyx' => 4, 'regmatch_slab.states[9].u.curlyx.prev_yes_state' => 4, 'regmatch_slab.states[9].u.eval' => 36, 'regmatch_slab.states[9].u.eval.B' => 4, 'regmatch_slab.states[9].u.eval.close_paren' => 4, 'regmatch_slab.states[9].u.eval.cp' => 4, 'regmatch_slab.states[9].u.eval.lastcp' => 4, 'regmatch_slab.states[9].u.eval.prev_curlyx' => 4, 'regmatch_slab.states[9].u.eval.prev_eval' => 4, 'regmatch_slab.states[9].u.eval.prev_rex' => 4, 'regmatch_slab.states[9].u.eval.prev_yes_state' => 4, 'regmatch_slab.states[9].u.eval.toggle_reg_flags' => 4, 'regmatch_slab.states[9].u.ifmatch' => 16, 'regmatch_slab.states[9].u.ifmatch.logical' => 4, 'regmatch_slab.states[9].u.ifmatch.me' => 4, 'regmatch_slab.states[9].u.ifmatch.prev_yes_state' => 4, 'regmatch_slab.states[9].u.ifmatch.wanted' => 4, 'regmatch_slab.states[9].u.trie' => 20, 'regmatch_slab.states[9].u.trie.B' => 4, 'regmatch_slab.states[9].u.trie.accept_buff' => 4, 'regmatch_slab.states[9].u.trie.accepted' => 4, 'regmatch_slab.states[9].u.trie.jump' => 4, 'regmatch_slab.states[9].u.trie.me' => 4, 'regmatch_slab.states[9].u.whilem' => 28, 'regmatch_slab.states[9].u.whilem.cache_mask' => 4, 'regmatch_slab.states[9].u.whilem.cache_offset' => 4, 'regmatch_slab.states[9].u.whilem.cp' => 4, 'regmatch_slab.states[9].u.whilem.lastcp' => 4, 'regmatch_slab.states[9].u.whilem.prev_yes_state' => 4, 'regmatch_slab.states[9].u.whilem.save_curlyx' => 4, 'regmatch_slab.states[9].u.whilem.save_lastloc' => 4, 'regmatch_slab.states[9].u.yes' => 4, 'regmatch_slab.states[9].u.yes.prev_yes_state' => 4, 'regmatch_state' => 52, 'regmatch_state.locinput' => 4, 'regmatch_state.resume_state' => 4, 'regmatch_state.u' => 44, 'regmatch_state.u.branch' => 12, 'regmatch_state.u.branch.cp' => 4, 'regmatch_state.u.branch.lastparen' => 4, 'regmatch_state.u.branch.next_branch' => 4, 'regmatch_state.u.curly' => 44, 'regmatch_state.u.curly.A' => 4, 'regmatch_state.u.curly.B' => 4, 'regmatch_state.u.curly.c1' => 4, 'regmatch_state.u.curly.c2' => 4, 'regmatch_state.u.curly.count' => 4, 'regmatch_state.u.curly.cp' => 4, 'regmatch_state.u.curly.max' => 4, 'regmatch_state.u.curly.maxpos' => 4, 'regmatch_state.u.curly.min' => 4, 'regmatch_state.u.curly.oldloc' => 4, 'regmatch_state.u.curly.paren' => 4, 'regmatch_state.u.curlym' => 37, 'regmatch_state.u.curlym.A' => 4, 'regmatch_state.u.curlym.B' => 4, 'regmatch_state.u.curlym.alen' => 4, 'regmatch_state.u.curlym.c1' => 4, 'regmatch_state.u.curlym.c2' => 4, 'regmatch_state.u.curlym.count' => 4, 'regmatch_state.u.curlym.cp' => 4, 'regmatch_state.u.curlym.me' => 4, 'regmatch_state.u.curlym.minmod' => 1, 'regmatch_state.u.curlym.prev_yes_state' => 4, 'regmatch_state.u.curlyx' => 41, 'regmatch_state.u.curlyx.A' => 4, 'regmatch_state.u.curlyx.B' => 4, 'regmatch_state.u.curlyx.count' => 4, 'regmatch_state.u.curlyx.cp' => 4, 'regmatch_state.u.curlyx.lastloc' => 4, 'regmatch_state.u.curlyx.max' => 4, 'regmatch_state.u.curlyx.min' => 4, 'regmatch_state.u.curlyx.minmod' => 1, 'regmatch_state.u.curlyx.parenfloor' => 4, 'regmatch_state.u.curlyx.prev_curlyx' => 4, 'regmatch_state.u.curlyx.prev_yes_state' => 4, 'regmatch_state.u.eval' => 36, 'regmatch_state.u.eval.B' => 4, 'regmatch_state.u.eval.close_paren' => 4, 'regmatch_state.u.eval.cp' => 4, 'regmatch_state.u.eval.lastcp' => 4, 'regmatch_state.u.eval.prev_curlyx' => 4, 'regmatch_state.u.eval.prev_eval' => 4, 'regmatch_state.u.eval.prev_rex' => 4, 'regmatch_state.u.eval.prev_yes_state' => 4, 'regmatch_state.u.eval.toggle_reg_flags' => 4, 'regmatch_state.u.ifmatch' => 16, 'regmatch_state.u.ifmatch.logical' => 4, 'regmatch_state.u.ifmatch.me' => 4, 'regmatch_state.u.ifmatch.prev_yes_state' => 4, 'regmatch_state.u.ifmatch.wanted' => 4, 'regmatch_state.u.trie' => 20, 'regmatch_state.u.trie.B' => 4, 'regmatch_state.u.trie.accept_buff' => 4, 'regmatch_state.u.trie.accepted' => 4, 'regmatch_state.u.trie.jump' => 4, 'regmatch_state.u.trie.me' => 4, 'regmatch_state.u.whilem' => 28, 'regmatch_state.u.whilem.cache_mask' => 4, 'regmatch_state.u.whilem.cache_offset' => 4, 'regmatch_state.u.whilem.cp' => 4, 'regmatch_state.u.whilem.lastcp' => 4, 'regmatch_state.u.whilem.prev_yes_state' => 4, 'regmatch_state.u.whilem.save_curlyx' => 4, 'regmatch_state.u.whilem.save_lastloc' => 4, 'regmatch_state.u.yes' => 4, 'regmatch_state.u.yes.prev_yes_state' => 4, 'regnode' => 4, 'regnode.flags' => 1, 'regnode.next_off' => 2, 'regnode.type' => 1, 'rpcent' => 12, 'rpcent.r_aliases' => 4, 'rpcent.r_name' => 4, 'rpcent.r_number' => 4, 'runops_proc_t' => 4, 'sa_family_t' => 2, 'sembuf' => 6, 'sembuf.sem_flg' => 2, 'sembuf.sem_num' => 2, 'sembuf.sem_op' => 2, 'semid_ds' => 64, 'semid_ds.__unused1' => 4, 'semid_ds.__unused2' => 4, 'semid_ds.__unused3' => 4, 'semid_ds.__unused4' => 4, 'semid_ds.sem_ctime' => 4, 'semid_ds.sem_nsems' => 4, 'semid_ds.sem_otime' => 4, 'semid_ds.sem_perm' => 36, 'semid_ds.sem_perm.__key' => 4, 'semid_ds.sem_perm.__pad1' => 2, 'semid_ds.sem_perm.__pad2' => 2, 'semid_ds.sem_perm.__seq' => 2, 'semid_ds.sem_perm.__unused1' => 4, 'semid_ds.sem_perm.__unused2' => 4, 'semid_ds.sem_perm.cgid' => 4, 'semid_ds.sem_perm.cuid' => 4, 'semid_ds.sem_perm.gid' => 4, 'semid_ds.sem_perm.mode' => 2, 'semid_ds.sem_perm.uid' => 4, 'seminfo' => 40, 'seminfo.semaem' => 4, 'seminfo.semmap' => 4, 'seminfo.semmni' => 4, 'seminfo.semmns' => 4, 'seminfo.semmnu' => 4, 'seminfo.semmsl' => 4, 'seminfo.semopm' => 4, 'seminfo.semume' => 4, 'seminfo.semusz' => 4, 'seminfo.semvmx' => 4, 'semun' => 4, 'semun.array' => 4, 'semun.buf' => 4, 'semun.val' => 4, 'servent' => 16, 'servent.s_aliases' => 4, 'servent.s_name' => 4, 'servent.s_port' => 4, 'servent.s_proto' => 4, 'share_proc_t' => 4, 'shared_he' => 21, 'shared_he.shared_he_he' => 12, 'shared_he.shared_he_he.he_valu' => 4, 'shared_he.shared_he_he.he_valu.hent_refcount' => 4, 'shared_he.shared_he_he.he_valu.hent_val' => 4, 'shared_he.shared_he_he.hent_hek' => 4, 'shared_he.shared_he_he.hent_next' => 4, 'shared_he.shared_he_hek' => 9, 'shared_he.shared_he_hek.hek_hash' => 4, 'shared_he.shared_he_hek.hek_key' => 1, 'shared_he.shared_he_hek.hek_key[0]' => 1, 'shared_he.shared_he_hek.hek_len' => 4, 'sig_atomic_t' => 4, 'sig_t' => 4, 'sigaction' => 140, 'sigaction.__sigaction_handler' => 4, 'sigaction.__sigaction_handler.sa_handler' => 4, 'sigaction.__sigaction_handler.sa_sigaction' => 4, 'sigaction.sa_flags' => 4, 'sigaction.sa_mask' => 128, 'sigaction.sa_mask.__val' => 128, 'sigaction.sa_mask.__val[0]' => 4, 'sigaction.sa_mask.__val[10]' => 4, 'sigaction.sa_mask.__val[11]' => 4, 'sigaction.sa_mask.__val[12]' => 4, 'sigaction.sa_mask.__val[13]' => 4, 'sigaction.sa_mask.__val[14]' => 4, 'sigaction.sa_mask.__val[15]' => 4, 'sigaction.sa_mask.__val[16]' => 4, 'sigaction.sa_mask.__val[17]' => 4, 'sigaction.sa_mask.__val[18]' => 4, 'sigaction.sa_mask.__val[19]' => 4, 'sigaction.sa_mask.__val[1]' => 4, 'sigaction.sa_mask.__val[20]' => 4, 'sigaction.sa_mask.__val[21]' => 4, 'sigaction.sa_mask.__val[22]' => 4, 'sigaction.sa_mask.__val[23]' => 4, 'sigaction.sa_mask.__val[24]' => 4, 'sigaction.sa_mask.__val[25]' => 4, 'sigaction.sa_mask.__val[26]' => 4, 'sigaction.sa_mask.__val[27]' => 4, 'sigaction.sa_mask.__val[28]' => 4, 'sigaction.sa_mask.__val[29]' => 4, 'sigaction.sa_mask.__val[2]' => 4, 'sigaction.sa_mask.__val[30]' => 4, 'sigaction.sa_mask.__val[31]' => 4, 'sigaction.sa_mask.__val[3]' => 4, 'sigaction.sa_mask.__val[4]' => 4, 'sigaction.sa_mask.__val[5]' => 4, 'sigaction.sa_mask.__val[6]' => 4, 'sigaction.sa_mask.__val[7]' => 4, 'sigaction.sa_mask.__val[8]' => 4, 'sigaction.sa_mask.__val[9]' => 4, 'sigaction.sa_restorer' => 4, 'sigaltstack' => 12, 'sigaltstack.ss_flags' => 4, 'sigaltstack.ss_size' => 4, 'sigaltstack.ss_sp' => 4, 'sigcontext' => 88, 'sigcontext.__csh' => 2, 'sigcontext.__dsh' => 2, 'sigcontext.__esh' => 2, 'sigcontext.__fsh' => 2, 'sigcontext.__gsh' => 2, 'sigcontext.__ssh' => 2, 'sigcontext.cr2' => 4, 'sigcontext.cs' => 2, 'sigcontext.ds' => 2, 'sigcontext.eax' => 4, 'sigcontext.ebp' => 4, 'sigcontext.ebx' => 4, 'sigcontext.ecx' => 4, 'sigcontext.edi' => 4, 'sigcontext.edx' => 4, 'sigcontext.eflags' => 4, 'sigcontext.eip' => 4, 'sigcontext.err' => 4, 'sigcontext.es' => 2, 'sigcontext.esi' => 4, 'sigcontext.esp' => 4, 'sigcontext.esp_at_signal' => 4, 'sigcontext.fpstate' => 4, 'sigcontext.fs' => 2, 'sigcontext.gs' => 2, 'sigcontext.oldmask' => 4, 'sigcontext.ss' => 2, 'sigcontext.trapno' => 4, 'sigevent' => 64, 'sigevent._sigev_un' => 52, 'sigevent._sigev_un._pad' => 52, 'sigevent._sigev_un._pad[0]' => 4, 'sigevent._sigev_un._pad[10]' => 4, 'sigevent._sigev_un._pad[11]' => 4, 'sigevent._sigev_un._pad[12]' => 4, 'sigevent._sigev_un._pad[1]' => 4, 'sigevent._sigev_un._pad[2]' => 4, 'sigevent._sigev_un._pad[3]' => 4, 'sigevent._sigev_un._pad[4]' => 4, 'sigevent._sigev_un._pad[5]' => 4, 'sigevent._sigev_un._pad[6]' => 4, 'sigevent._sigev_un._pad[7]' => 4, 'sigevent._sigev_un._pad[8]' => 4, 'sigevent._sigev_un._pad[9]' => 4, 'sigevent._sigev_un._sigev_thread' => 8, 'sigevent._sigev_un._sigev_thread._attribute' => 4, 'sigevent._sigev_un._sigev_thread._function' => 4, 'sigevent._sigev_un._tid' => 4, 'sigevent.sigev_notify' => 4, 'sigevent.sigev_signo' => 4, 'sigevent.sigev_value' => 4, 'sigevent.sigev_value.sival_int' => 4, 'sigevent.sigev_value.sival_ptr' => 4, 'sigevent_t' => 64, 'sigevent_t._sigev_un' => 52, 'sigevent_t._sigev_un._pad' => 52, 'sigevent_t._sigev_un._pad[0]' => 4, 'sigevent_t._sigev_un._pad[10]' => 4, 'sigevent_t._sigev_un._pad[11]' => 4, 'sigevent_t._sigev_un._pad[12]' => 4, 'sigevent_t._sigev_un._pad[1]' => 4, 'sigevent_t._sigev_un._pad[2]' => 4, 'sigevent_t._sigev_un._pad[3]' => 4, 'sigevent_t._sigev_un._pad[4]' => 4, 'sigevent_t._sigev_un._pad[5]' => 4, 'sigevent_t._sigev_un._pad[6]' => 4, 'sigevent_t._sigev_un._pad[7]' => 4, 'sigevent_t._sigev_un._pad[8]' => 4, 'sigevent_t._sigev_un._pad[9]' => 4, 'sigevent_t._sigev_un._sigev_thread' => 8, 'sigevent_t._sigev_un._sigev_thread._attribute' => 4, 'sigevent_t._sigev_un._sigev_thread._function' => 4, 'sigevent_t._sigev_un._tid' => 4, 'sigevent_t.sigev_notify' => 4, 'sigevent_t.sigev_signo' => 4, 'sigevent_t.sigev_value' => 4, 'sigevent_t.sigev_value.sival_int' => 4, 'sigevent_t.sigev_value.sival_ptr' => 4, 'sighandler_t' => 4, 'siginfo' => 128, 'siginfo._sifields' => 116, 'siginfo._sifields._kill' => 8, 'siginfo._sifields._kill.si_pid' => 4, 'siginfo._sifields._kill.si_uid' => 4, 'siginfo._sifields._pad' => 116, 'siginfo._sifields._pad[0]' => 4, 'siginfo._sifields._pad[10]' => 4, 'siginfo._sifields._pad[11]' => 4, 'siginfo._sifields._pad[12]' => 4, 'siginfo._sifields._pad[13]' => 4, 'siginfo._sifields._pad[14]' => 4, 'siginfo._sifields._pad[15]' => 4, 'siginfo._sifields._pad[16]' => 4, 'siginfo._sifields._pad[17]' => 4, 'siginfo._sifields._pad[18]' => 4, 'siginfo._sifields._pad[19]' => 4, 'siginfo._sifields._pad[1]' => 4, 'siginfo._sifields._pad[20]' => 4, 'siginfo._sifields._pad[21]' => 4, 'siginfo._sifields._pad[22]' => 4, 'siginfo._sifields._pad[23]' => 4, 'siginfo._sifields._pad[24]' => 4, 'siginfo._sifields._pad[25]' => 4, 'siginfo._sifields._pad[26]' => 4, 'siginfo._sifields._pad[27]' => 4, 'siginfo._sifields._pad[28]' => 4, 'siginfo._sifields._pad[2]' => 4, 'siginfo._sifields._pad[3]' => 4, 'siginfo._sifields._pad[4]' => 4, 'siginfo._sifields._pad[5]' => 4, 'siginfo._sifields._pad[6]' => 4, 'siginfo._sifields._pad[7]' => 4, 'siginfo._sifields._pad[8]' => 4, 'siginfo._sifields._pad[9]' => 4, 'siginfo._sifields._rt' => 12, 'siginfo._sifields._rt.si_pid' => 4, 'siginfo._sifields._rt.si_sigval' => 4, 'siginfo._sifields._rt.si_sigval.sival_int' => 4, 'siginfo._sifields._rt.si_sigval.sival_ptr' => 4, 'siginfo._sifields._rt.si_uid' => 4, 'siginfo._sifields._sigchld' => 20, 'siginfo._sifields._sigchld.si_pid' => 4, 'siginfo._sifields._sigchld.si_status' => 4, 'siginfo._sifields._sigchld.si_stime' => 4, 'siginfo._sifields._sigchld.si_uid' => 4, 'siginfo._sifields._sigchld.si_utime' => 4, 'siginfo._sifields._sigfault' => 4, 'siginfo._sifields._sigfault.si_addr' => 4, 'siginfo._sifields._sigpoll' => 8, 'siginfo._sifields._sigpoll.si_band' => 4, 'siginfo._sifields._sigpoll.si_fd' => 4, 'siginfo._sifields._timer' => 12, 'siginfo._sifields._timer.si_overrun' => 4, 'siginfo._sifields._timer.si_sigval' => 4, 'siginfo._sifields._timer.si_sigval.sival_int' => 4, 'siginfo._sifields._timer.si_sigval.sival_ptr' => 4, 'siginfo._sifields._timer.si_tid' => 4, 'siginfo.si_code' => 4, 'siginfo.si_errno' => 4, 'siginfo.si_signo' => 4, 'siginfo_t' => 128, 'siginfo_t._sifields' => 116, 'siginfo_t._sifields._kill' => 8, 'siginfo_t._sifields._kill.si_pid' => 4, 'siginfo_t._sifields._kill.si_uid' => 4, 'siginfo_t._sifields._pad' => 116, 'siginfo_t._sifields._pad[0]' => 4, 'siginfo_t._sifields._pad[10]' => 4, 'siginfo_t._sifields._pad[11]' => 4, 'siginfo_t._sifields._pad[12]' => 4, 'siginfo_t._sifields._pad[13]' => 4, 'siginfo_t._sifields._pad[14]' => 4, 'siginfo_t._sifields._pad[15]' => 4, 'siginfo_t._sifields._pad[16]' => 4, 'siginfo_t._sifields._pad[17]' => 4, 'siginfo_t._sifields._pad[18]' => 4, 'siginfo_t._sifields._pad[19]' => 4, 'siginfo_t._sifields._pad[1]' => 4, 'siginfo_t._sifields._pad[20]' => 4, 'siginfo_t._sifields._pad[21]' => 4, 'siginfo_t._sifields._pad[22]' => 4, 'siginfo_t._sifields._pad[23]' => 4, 'siginfo_t._sifields._pad[24]' => 4, 'siginfo_t._sifields._pad[25]' => 4, 'siginfo_t._sifields._pad[26]' => 4, 'siginfo_t._sifields._pad[27]' => 4, 'siginfo_t._sifields._pad[28]' => 4, 'siginfo_t._sifields._pad[2]' => 4, 'siginfo_t._sifields._pad[3]' => 4, 'siginfo_t._sifields._pad[4]' => 4, 'siginfo_t._sifields._pad[5]' => 4, 'siginfo_t._sifields._pad[6]' => 4, 'siginfo_t._sifields._pad[7]' => 4, 'siginfo_t._sifields._pad[8]' => 4, 'siginfo_t._sifields._pad[9]' => 4, 'siginfo_t._sifields._rt' => 12, 'siginfo_t._sifields._rt.si_pid' => 4, 'siginfo_t._sifields._rt.si_sigval' => 4, 'siginfo_t._sifields._rt.si_sigval.sival_int' => 4, 'siginfo_t._sifields._rt.si_sigval.sival_ptr' => 4, 'siginfo_t._sifields._rt.si_uid' => 4, 'siginfo_t._sifields._sigchld' => 20, 'siginfo_t._sifields._sigchld.si_pid' => 4, 'siginfo_t._sifields._sigchld.si_status' => 4, 'siginfo_t._sifields._sigchld.si_stime' => 4, 'siginfo_t._sifields._sigchld.si_uid' => 4, 'siginfo_t._sifields._sigchld.si_utime' => 4, 'siginfo_t._sifields._sigfault' => 4, 'siginfo_t._sifields._sigfault.si_addr' => 4, 'siginfo_t._sifields._sigpoll' => 8, 'siginfo_t._sifields._sigpoll.si_band' => 4, 'siginfo_t._sifields._sigpoll.si_fd' => 4, 'siginfo_t._sifields._timer' => 12, 'siginfo_t._sifields._timer.si_overrun' => 4, 'siginfo_t._sifields._timer.si_sigval' => 4, 'siginfo_t._sifields._timer.si_sigval.sival_int' => 4, 'siginfo_t._sifields._timer.si_sigval.sival_ptr' => 4, 'siginfo_t._sifields._timer.si_tid' => 4, 'siginfo_t.si_code' => 4, 'siginfo_t.si_errno' => 4, 'siginfo_t.si_signo' => 4, 'sigjmp_buf' => 156, 'sigjmp_buf[0]' => 156, 'sigjmp_buf[0].__jmpbuf' => 24, 'sigjmp_buf[0].__jmpbuf[0]' => 4, 'sigjmp_buf[0].__jmpbuf[1]' => 4, 'sigjmp_buf[0].__jmpbuf[2]' => 4, 'sigjmp_buf[0].__jmpbuf[3]' => 4, 'sigjmp_buf[0].__jmpbuf[4]' => 4, 'sigjmp_buf[0].__jmpbuf[5]' => 4, 'sigjmp_buf[0].__mask_was_saved' => 4, 'sigjmp_buf[0].__saved_mask' => 128, 'sigjmp_buf[0].__saved_mask.__val' => 128, 'sigjmp_buf[0].__saved_mask.__val[0]' => 4, 'sigjmp_buf[0].__saved_mask.__val[10]' => 4, 'sigjmp_buf[0].__saved_mask.__val[11]' => 4, 'sigjmp_buf[0].__saved_mask.__val[12]' => 4, 'sigjmp_buf[0].__saved_mask.__val[13]' => 4, 'sigjmp_buf[0].__saved_mask.__val[14]' => 4, 'sigjmp_buf[0].__saved_mask.__val[15]' => 4, 'sigjmp_buf[0].__saved_mask.__val[16]' => 4, 'sigjmp_buf[0].__saved_mask.__val[17]' => 4, 'sigjmp_buf[0].__saved_mask.__val[18]' => 4, 'sigjmp_buf[0].__saved_mask.__val[19]' => 4, 'sigjmp_buf[0].__saved_mask.__val[1]' => 4, 'sigjmp_buf[0].__saved_mask.__val[20]' => 4, 'sigjmp_buf[0].__saved_mask.__val[21]' => 4, 'sigjmp_buf[0].__saved_mask.__val[22]' => 4, 'sigjmp_buf[0].__saved_mask.__val[23]' => 4, 'sigjmp_buf[0].__saved_mask.__val[24]' => 4, 'sigjmp_buf[0].__saved_mask.__val[25]' => 4, 'sigjmp_buf[0].__saved_mask.__val[26]' => 4, 'sigjmp_buf[0].__saved_mask.__val[27]' => 4, 'sigjmp_buf[0].__saved_mask.__val[28]' => 4, 'sigjmp_buf[0].__saved_mask.__val[29]' => 4, 'sigjmp_buf[0].__saved_mask.__val[2]' => 4, 'sigjmp_buf[0].__saved_mask.__val[30]' => 4, 'sigjmp_buf[0].__saved_mask.__val[31]' => 4, 'sigjmp_buf[0].__saved_mask.__val[3]' => 4, 'sigjmp_buf[0].__saved_mask.__val[4]' => 4, 'sigjmp_buf[0].__saved_mask.__val[5]' => 4, 'sigjmp_buf[0].__saved_mask.__val[6]' => 4, 'sigjmp_buf[0].__saved_mask.__val[7]' => 4, 'sigjmp_buf[0].__saved_mask.__val[8]' => 4, 'sigjmp_buf[0].__saved_mask.__val[9]' => 4, 'sigset_t' => 128, 'sigset_t.__val' => 128, 'sigset_t.__val[0]' => 4, 'sigset_t.__val[10]' => 4, 'sigset_t.__val[11]' => 4, 'sigset_t.__val[12]' => 4, 'sigset_t.__val[13]' => 4, 'sigset_t.__val[14]' => 4, 'sigset_t.__val[15]' => 4, 'sigset_t.__val[16]' => 4, 'sigset_t.__val[17]' => 4, 'sigset_t.__val[18]' => 4, 'sigset_t.__val[19]' => 4, 'sigset_t.__val[1]' => 4, 'sigset_t.__val[20]' => 4, 'sigset_t.__val[21]' => 4, 'sigset_t.__val[22]' => 4, 'sigset_t.__val[23]' => 4, 'sigset_t.__val[24]' => 4, 'sigset_t.__val[25]' => 4, 'sigset_t.__val[26]' => 4, 'sigset_t.__val[27]' => 4, 'sigset_t.__val[28]' => 4, 'sigset_t.__val[29]' => 4, 'sigset_t.__val[2]' => 4, 'sigset_t.__val[30]' => 4, 'sigset_t.__val[31]' => 4, 'sigset_t.__val[3]' => 4, 'sigset_t.__val[4]' => 4, 'sigset_t.__val[5]' => 4, 'sigset_t.__val[6]' => 4, 'sigset_t.__val[7]' => 4, 'sigset_t.__val[8]' => 4, 'sigset_t.__val[9]' => 4, 'sigstack' => 8, 'sigstack.ss_onstack' => 4, 'sigstack.ss_sp' => 4, 'sigval' => 4, 'sigval.sival_int' => 4, 'sigval.sival_ptr' => 4, 'sigval_t' => 4, 'sigval_t.sival_int' => 4, 'sigval_t.sival_ptr' => 4, 'sigvec' => 12, 'sigvec.sv_flags' => 4, 'sigvec.sv_handler' => 4, 'sigvec.sv_mask' => 4, 'size_t' => 4, 'sockaddr' => 16, 'sockaddr.sa_data' => 14, 'sockaddr.sa_data[0]' => 1, 'sockaddr.sa_data[10]' => 1, 'sockaddr.sa_data[11]' => 1, 'sockaddr.sa_data[12]' => 1, 'sockaddr.sa_data[13]' => 1, 'sockaddr.sa_data[1]' => 1, 'sockaddr.sa_data[2]' => 1, 'sockaddr.sa_data[3]' => 1, 'sockaddr.sa_data[4]' => 1, 'sockaddr.sa_data[5]' => 1, 'sockaddr.sa_data[6]' => 1, 'sockaddr.sa_data[7]' => 1, 'sockaddr.sa_data[8]' => 1, 'sockaddr.sa_data[9]' => 1, 'sockaddr.sa_family' => 2, 'sockaddr_in' => 16, 'sockaddr_in.sin_addr' => 4, 'sockaddr_in.sin_addr.s_addr' => 4, 'sockaddr_in.sin_family' => 2, 'sockaddr_in.sin_port' => 2, 'sockaddr_in.sin_zero' => 8, 'sockaddr_in.sin_zero[0]' => 1, 'sockaddr_in.sin_zero[1]' => 1, 'sockaddr_in.sin_zero[2]' => 1, 'sockaddr_in.sin_zero[3]' => 1, 'sockaddr_in.sin_zero[4]' => 1, 'sockaddr_in.sin_zero[5]' => 1, 'sockaddr_in.sin_zero[6]' => 1, 'sockaddr_in.sin_zero[7]' => 1, 'sockaddr_in6' => 28, 'sockaddr_in6.sin6_addr' => 16, 'sockaddr_in6.sin6_addr.in6_u' => 16, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16' => 16, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16[0]' => 2, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16[1]' => 2, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16[2]' => 2, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16[3]' => 2, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16[4]' => 2, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16[5]' => 2, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16[6]' => 2, 'sockaddr_in6.sin6_addr.in6_u.u6_addr16[7]' => 2, 'sockaddr_in6.sin6_addr.in6_u.u6_addr32' => 16, 'sockaddr_in6.sin6_addr.in6_u.u6_addr32[0]' => 4, 'sockaddr_in6.sin6_addr.in6_u.u6_addr32[1]' => 4, 'sockaddr_in6.sin6_addr.in6_u.u6_addr32[2]' => 4, 'sockaddr_in6.sin6_addr.in6_u.u6_addr32[3]' => 4, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8' => 16, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[0]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[10]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[11]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[12]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[13]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[14]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[15]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[1]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[2]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[3]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[4]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[5]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[6]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[7]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[8]' => 1, 'sockaddr_in6.sin6_addr.in6_u.u6_addr8[9]' => 1, 'sockaddr_in6.sin6_family' => 2, 'sockaddr_in6.sin6_flowinfo' => 4, 'sockaddr_in6.sin6_port' => 2, 'sockaddr_in6.sin6_scope_id' => 4, 'sockaddr_storage' => 126, 'sockaddr_storage.__ss_align' => 4, 'sockaddr_storage.__ss_padding' => 120, 'sockaddr_storage.__ss_padding[0]' => 1, 'sockaddr_storage.__ss_padding[100]' => 1, 'sockaddr_storage.__ss_padding[101]' => 1, 'sockaddr_storage.__ss_padding[102]' => 1, 'sockaddr_storage.__ss_padding[103]' => 1, 'sockaddr_storage.__ss_padding[104]' => 1, 'sockaddr_storage.__ss_padding[105]' => 1, 'sockaddr_storage.__ss_padding[106]' => 1, 'sockaddr_storage.__ss_padding[107]' => 1, 'sockaddr_storage.__ss_padding[108]' => 1, 'sockaddr_storage.__ss_padding[109]' => 1, 'sockaddr_storage.__ss_padding[10]' => 1, 'sockaddr_storage.__ss_padding[110]' => 1, 'sockaddr_storage.__ss_padding[111]' => 1, 'sockaddr_storage.__ss_padding[112]' => 1, 'sockaddr_storage.__ss_padding[113]' => 1, 'sockaddr_storage.__ss_padding[114]' => 1, 'sockaddr_storage.__ss_padding[115]' => 1, 'sockaddr_storage.__ss_padding[116]' => 1, 'sockaddr_storage.__ss_padding[117]' => 1, 'sockaddr_storage.__ss_padding[118]' => 1, 'sockaddr_storage.__ss_padding[119]' => 1, 'sockaddr_storage.__ss_padding[11]' => 1, 'sockaddr_storage.__ss_padding[12]' => 1, 'sockaddr_storage.__ss_padding[13]' => 1, 'sockaddr_storage.__ss_padding[14]' => 1, 'sockaddr_storage.__ss_padding[15]' => 1, 'sockaddr_storage.__ss_padding[16]' => 1, 'sockaddr_storage.__ss_padding[17]' => 1, 'sockaddr_storage.__ss_padding[18]' => 1, 'sockaddr_storage.__ss_padding[19]' => 1, 'sockaddr_storage.__ss_padding[1]' => 1, 'sockaddr_storage.__ss_padding[20]' => 1, 'sockaddr_storage.__ss_padding[21]' => 1, 'sockaddr_storage.__ss_padding[22]' => 1, 'sockaddr_storage.__ss_padding[23]' => 1, 'sockaddr_storage.__ss_padding[24]' => 1, 'sockaddr_storage.__ss_padding[25]' => 1, 'sockaddr_storage.__ss_padding[26]' => 1, 'sockaddr_storage.__ss_padding[27]' => 1, 'sockaddr_storage.__ss_padding[28]' => 1, 'sockaddr_storage.__ss_padding[29]' => 1, 'sockaddr_storage.__ss_padding[2]' => 1, 'sockaddr_storage.__ss_padding[30]' => 1, 'sockaddr_storage.__ss_padding[31]' => 1, 'sockaddr_storage.__ss_padding[32]' => 1, 'sockaddr_storage.__ss_padding[33]' => 1, 'sockaddr_storage.__ss_padding[34]' => 1, 'sockaddr_storage.__ss_padding[35]' => 1, 'sockaddr_storage.__ss_padding[36]' => 1, 'sockaddr_storage.__ss_padding[37]' => 1, 'sockaddr_storage.__ss_padding[38]' => 1, 'sockaddr_storage.__ss_padding[39]' => 1, 'sockaddr_storage.__ss_padding[3]' => 1, 'sockaddr_storage.__ss_padding[40]' => 1, 'sockaddr_storage.__ss_padding[41]' => 1, 'sockaddr_storage.__ss_padding[42]' => 1, 'sockaddr_storage.__ss_padding[43]' => 1, 'sockaddr_storage.__ss_padding[44]' => 1, 'sockaddr_storage.__ss_padding[45]' => 1, 'sockaddr_storage.__ss_padding[46]' => 1, 'sockaddr_storage.__ss_padding[47]' => 1, 'sockaddr_storage.__ss_padding[48]' => 1, 'sockaddr_storage.__ss_padding[49]' => 1, 'sockaddr_storage.__ss_padding[4]' => 1, 'sockaddr_storage.__ss_padding[50]' => 1, 'sockaddr_storage.__ss_padding[51]' => 1, 'sockaddr_storage.__ss_padding[52]' => 1, 'sockaddr_storage.__ss_padding[53]' => 1, 'sockaddr_storage.__ss_padding[54]' => 1, 'sockaddr_storage.__ss_padding[55]' => 1, 'sockaddr_storage.__ss_padding[56]' => 1, 'sockaddr_storage.__ss_padding[57]' => 1, 'sockaddr_storage.__ss_padding[58]' => 1, 'sockaddr_storage.__ss_padding[59]' => 1, 'sockaddr_storage.__ss_padding[5]' => 1, 'sockaddr_storage.__ss_padding[60]' => 1, 'sockaddr_storage.__ss_padding[61]' => 1, 'sockaddr_storage.__ss_padding[62]' => 1, 'sockaddr_storage.__ss_padding[63]' => 1, 'sockaddr_storage.__ss_padding[64]' => 1, 'sockaddr_storage.__ss_padding[65]' => 1, 'sockaddr_storage.__ss_padding[66]' => 1, 'sockaddr_storage.__ss_padding[67]' => 1, 'sockaddr_storage.__ss_padding[68]' => 1, 'sockaddr_storage.__ss_padding[69]' => 1, 'sockaddr_storage.__ss_padding[6]' => 1, 'sockaddr_storage.__ss_padding[70]' => 1, 'sockaddr_storage.__ss_padding[71]' => 1, 'sockaddr_storage.__ss_padding[72]' => 1, 'sockaddr_storage.__ss_padding[73]' => 1, 'sockaddr_storage.__ss_padding[74]' => 1, 'sockaddr_storage.__ss_padding[75]' => 1, 'sockaddr_storage.__ss_padding[76]' => 1, 'sockaddr_storage.__ss_padding[77]' => 1, 'sockaddr_storage.__ss_padding[78]' => 1, 'sockaddr_storage.__ss_padding[79]' => 1, 'sockaddr_storage.__ss_padding[7]' => 1, 'sockaddr_storage.__ss_padding[80]' => 1, 'sockaddr_storage.__ss_padding[81]' => 1, 'sockaddr_storage.__ss_padding[82]' => 1, 'sockaddr_storage.__ss_padding[83]' => 1, 'sockaddr_storage.__ss_padding[84]' => 1, 'sockaddr_storage.__ss_padding[85]' => 1, 'sockaddr_storage.__ss_padding[86]' => 1, 'sockaddr_storage.__ss_padding[87]' => 1, 'sockaddr_storage.__ss_padding[88]' => 1, 'sockaddr_storage.__ss_padding[89]' => 1, 'sockaddr_storage.__ss_padding[8]' => 1, 'sockaddr_storage.__ss_padding[90]' => 1, 'sockaddr_storage.__ss_padding[91]' => 1, 'sockaddr_storage.__ss_padding[92]' => 1, 'sockaddr_storage.__ss_padding[93]' => 1, 'sockaddr_storage.__ss_padding[94]' => 1, 'sockaddr_storage.__ss_padding[95]' => 1, 'sockaddr_storage.__ss_padding[96]' => 1, 'sockaddr_storage.__ss_padding[97]' => 1, 'sockaddr_storage.__ss_padding[98]' => 1, 'sockaddr_storage.__ss_padding[99]' => 1, 'sockaddr_storage.__ss_padding[9]' => 1, 'sockaddr_storage.ss_family' => 2, 'socklen_t' => 4, 'ssize_t' => 4, 'stack_t' => 12, 'stack_t.ss_flags' => 4, 'stack_t.ss_size' => 4, 'stack_t.ss_sp' => 4, 'stackinfo' => 32, 'stackinfo.si_cxix' => 4, 'stackinfo.si_cxmax' => 4, 'stackinfo.si_cxstack' => 4, 'stackinfo.si_markoff' => 4, 'stackinfo.si_next' => 4, 'stackinfo.si_prev' => 4, 'stackinfo.si_stack' => 4, 'stackinfo.si_type' => 4, 'stat' => 84, 'stat.__pad1' => 2, 'stat.__pad2' => 2, 'stat.__unused4' => 4, 'stat.__unused5' => 4, 'stat.st_atim' => 8, 'stat.st_atim.tv_nsec' => 4, 'stat.st_atim.tv_sec' => 4, 'stat.st_blksize' => 4, 'stat.st_blocks' => 4, 'stat.st_ctim' => 8, 'stat.st_ctim.tv_nsec' => 4, 'stat.st_ctim.tv_sec' => 4, 'stat.st_dev' => 8, 'stat.st_gid' => 4, 'stat.st_ino' => 4, 'stat.st_mode' => 4, 'stat.st_mtim' => 8, 'stat.st_mtim.tv_nsec' => 4, 'stat.st_mtim.tv_sec' => 4, 'stat.st_nlink' => 4, 'stat.st_rdev' => 8, 'stat.st_size' => 4, 'stat.st_uid' => 4, 'stat64' => 96, 'stat64.__pad1' => 4, 'stat64.__pad2' => 4, 'stat64.__st_ino' => 4, 'stat64.st_atim' => 8, 'stat64.st_atim.tv_nsec' => 4, 'stat64.st_atim.tv_sec' => 4, 'stat64.st_blksize' => 4, 'stat64.st_blocks' => 8, 'stat64.st_ctim' => 8, 'stat64.st_ctim.tv_nsec' => 4, 'stat64.st_ctim.tv_sec' => 4, 'stat64.st_dev' => 8, 'stat64.st_gid' => 4, 'stat64.st_ino' => 8, 'stat64.st_mode' => 4, 'stat64.st_mtim' => 8, 'stat64.st_mtim.tv_nsec' => 4, 'stat64.st_mtim.tv_sec' => 4, 'stat64.st_nlink' => 4, 'stat64.st_rdev' => 8, 'stat64.st_size' => 8, 'stat64.st_uid' => 4, 'subst' => 52, 'subst.sbu_dstr' => 4, 'subst.sbu_iters' => 4, 'subst.sbu_m' => 4, 'subst.sbu_maxiters' => 4, 'subst.sbu_oldsave' => 4, 'subst.sbu_once' => 1, 'subst.sbu_orig' => 4, 'subst.sbu_rflags' => 4, 'subst.sbu_rx' => 4, 'subst.sbu_rxres' => 4, 'subst.sbu_rxtainted' => 1, 'subst.sbu_s' => 4, 'subst.sbu_strend' => 4, 'subst.sbu_targ' => 4, 'subst.sbu_type' => 2, 'suseconds_t' => 4, 'sv' => 16, 'sv.sv_any' => 4, 'sv.sv_flags' => 4, 'sv.sv_refcnt' => 4, 'sv.sv_u' => 4, 'sv.sv_u.svu_array' => 4, 'sv.sv_u.svu_gp' => 4, 'sv.sv_u.svu_hash' => 4, 'sv.sv_u.svu_iv' => 4, 'sv.sv_u.svu_pv' => 4, 'sv.sv_u.svu_rv' => 4, 'sv.sv_u.svu_uv' => 4, 'svop' => 24, 'svop.op_flags' => 1, 'svop.op_next' => 4, 'svop.op_ppaddr' => 4, 'svop.op_private' => 1, 'svop.op_sibling' => 4, 'svop.op_sv' => 4, 'svop.op_targ' => 4, 'svtype' => 1, 'termio' => 17, 'termio.c_cc' => 8, 'termio.c_cc[0]' => 1, 'termio.c_cc[1]' => 1, 'termio.c_cc[2]' => 1, 'termio.c_cc[3]' => 1, 'termio.c_cc[4]' => 1, 'termio.c_cc[5]' => 1, 'termio.c_cc[6]' => 1, 'termio.c_cc[7]' => 1, 'termio.c_cflag' => 2, 'termio.c_iflag' => 2, 'termio.c_lflag' => 2, 'termio.c_line' => 1, 'termio.c_oflag' => 2, 'thrhook_proc_t' => 4, 'time_t' => 4, 'timer_t' => 4, 'timespec' => 8, 'timespec.tv_nsec' => 4, 'timespec.tv_sec' => 4, 'timeval' => 8, 'timeval.tv_sec' => 4, 'timeval.tv_usec' => 4, 'timezone' => 8, 'timezone.tz_dsttime' => 4, 'timezone.tz_minuteswest' => 4, 'tm' => 44, 'tm.tm_gmtoff' => 4, 'tm.tm_hour' => 4, 'tm.tm_isdst' => 4, 'tm.tm_mday' => 4, 'tm.tm_min' => 4, 'tm.tm_mon' => 4, 'tm.tm_sec' => 4, 'tm.tm_wday' => 4, 'tm.tm_yday' => 4, 'tm.tm_year' => 4, 'tm.tm_zone' => 4, 'tms' => 16, 'tms.tms_cstime' => 4, 'tms.tms_cutime' => 4, 'tms.tms_stime' => 4, 'tms.tms_utime' => 4, 'u_char' => 1, 'u_int' => 4, 'u_int16_t' => 2, 'u_int32_t' => 4, 'u_int64_t' => 8, 'u_int8_t' => 1, 'u_long' => 4, 'u_quad_t' => 8, 'u_short' => 2, 'ucontext' => 348, 'ucontext.__fpregs_mem' => 112, 'ucontext.__fpregs_mem._st' => 80, 'ucontext.__fpregs_mem._st[0]' => 10, 'ucontext.__fpregs_mem._st[0].exponent' => 2, 'ucontext.__fpregs_mem._st[0].significand' => 8, 'ucontext.__fpregs_mem._st[0].significand[0]' => 2, 'ucontext.__fpregs_mem._st[0].significand[1]' => 2, 'ucontext.__fpregs_mem._st[0].significand[2]' => 2, 'ucontext.__fpregs_mem._st[0].significand[3]' => 2, 'ucontext.__fpregs_mem._st[1]' => 10, 'ucontext.__fpregs_mem._st[1].exponent' => 2, 'ucontext.__fpregs_mem._st[1].significand' => 8, 'ucontext.__fpregs_mem._st[1].significand[0]' => 2, 'ucontext.__fpregs_mem._st[1].significand[1]' => 2, 'ucontext.__fpregs_mem._st[1].significand[2]' => 2, 'ucontext.__fpregs_mem._st[1].significand[3]' => 2, 'ucontext.__fpregs_mem._st[2]' => 10, 'ucontext.__fpregs_mem._st[2].exponent' => 2, 'ucontext.__fpregs_mem._st[2].significand' => 8, 'ucontext.__fpregs_mem._st[2].significand[0]' => 2, 'ucontext.__fpregs_mem._st[2].significand[1]' => 2, 'ucontext.__fpregs_mem._st[2].significand[2]' => 2, 'ucontext.__fpregs_mem._st[2].significand[3]' => 2, 'ucontext.__fpregs_mem._st[3]' => 10, 'ucontext.__fpregs_mem._st[3].exponent' => 2, 'ucontext.__fpregs_mem._st[3].significand' => 8, 'ucontext.__fpregs_mem._st[3].significand[0]' => 2, 'ucontext.__fpregs_mem._st[3].significand[1]' => 2, 'ucontext.__fpregs_mem._st[3].significand[2]' => 2, 'ucontext.__fpregs_mem._st[3].significand[3]' => 2, 'ucontext.__fpregs_mem._st[4]' => 10, 'ucontext.__fpregs_mem._st[4].exponent' => 2, 'ucontext.__fpregs_mem._st[4].significand' => 8, 'ucontext.__fpregs_mem._st[4].significand[0]' => 2, 'ucontext.__fpregs_mem._st[4].significand[1]' => 2, 'ucontext.__fpregs_mem._st[4].significand[2]' => 2, 'ucontext.__fpregs_mem._st[4].significand[3]' => 2, 'ucontext.__fpregs_mem._st[5]' => 10, 'ucontext.__fpregs_mem._st[5].exponent' => 2, 'ucontext.__fpregs_mem._st[5].significand' => 8, 'ucontext.__fpregs_mem._st[5].significand[0]' => 2, 'ucontext.__fpregs_mem._st[5].significand[1]' => 2, 'ucontext.__fpregs_mem._st[5].significand[2]' => 2, 'ucontext.__fpregs_mem._st[5].significand[3]' => 2, 'ucontext.__fpregs_mem._st[6]' => 10, 'ucontext.__fpregs_mem._st[6].exponent' => 2, 'ucontext.__fpregs_mem._st[6].significand' => 8, 'ucontext.__fpregs_mem._st[6].significand[0]' => 2, 'ucontext.__fpregs_mem._st[6].significand[1]' => 2, 'ucontext.__fpregs_mem._st[6].significand[2]' => 2, 'ucontext.__fpregs_mem._st[6].significand[3]' => 2, 'ucontext.__fpregs_mem._st[7]' => 10, 'ucontext.__fpregs_mem._st[7].exponent' => 2, 'ucontext.__fpregs_mem._st[7].significand' => 8, 'ucontext.__fpregs_mem._st[7].significand[0]' => 2, 'ucontext.__fpregs_mem._st[7].significand[1]' => 2, 'ucontext.__fpregs_mem._st[7].significand[2]' => 2, 'ucontext.__fpregs_mem._st[7].significand[3]' => 2, 'ucontext.__fpregs_mem.cssel' => 4, 'ucontext.__fpregs_mem.cw' => 4, 'ucontext.__fpregs_mem.dataoff' => 4, 'ucontext.__fpregs_mem.datasel' => 4, 'ucontext.__fpregs_mem.ipoff' => 4, 'ucontext.__fpregs_mem.status' => 4, 'ucontext.__fpregs_mem.sw' => 4, 'ucontext.__fpregs_mem.tag' => 4, 'ucontext.uc_flags' => 4, 'ucontext.uc_link' => 4, 'ucontext.uc_mcontext' => 88, 'ucontext.uc_mcontext.cr2' => 4, 'ucontext.uc_mcontext.fpregs' => 4, 'ucontext.uc_mcontext.gregs' => 76, 'ucontext.uc_mcontext.gregs[0]' => 4, 'ucontext.uc_mcontext.gregs[10]' => 4, 'ucontext.uc_mcontext.gregs[11]' => 4, 'ucontext.uc_mcontext.gregs[12]' => 4, 'ucontext.uc_mcontext.gregs[13]' => 4, 'ucontext.uc_mcontext.gregs[14]' => 4, 'ucontext.uc_mcontext.gregs[15]' => 4, 'ucontext.uc_mcontext.gregs[16]' => 4, 'ucontext.uc_mcontext.gregs[17]' => 4, 'ucontext.uc_mcontext.gregs[18]' => 4, 'ucontext.uc_mcontext.gregs[1]' => 4, 'ucontext.uc_mcontext.gregs[2]' => 4, 'ucontext.uc_mcontext.gregs[3]' => 4, 'ucontext.uc_mcontext.gregs[4]' => 4, 'ucontext.uc_mcontext.gregs[5]' => 4, 'ucontext.uc_mcontext.gregs[6]' => 4, 'ucontext.uc_mcontext.gregs[7]' => 4, 'ucontext.uc_mcontext.gregs[8]' => 4, 'ucontext.uc_mcontext.gregs[9]' => 4, 'ucontext.uc_mcontext.oldmask' => 4, 'ucontext.uc_sigmask' => 128, 'ucontext.uc_sigmask.__val' => 128, 'ucontext.uc_sigmask.__val[0]' => 4, 'ucontext.uc_sigmask.__val[10]' => 4, 'ucontext.uc_sigmask.__val[11]' => 4, 'ucontext.uc_sigmask.__val[12]' => 4, 'ucontext.uc_sigmask.__val[13]' => 4, 'ucontext.uc_sigmask.__val[14]' => 4, 'ucontext.uc_sigmask.__val[15]' => 4, 'ucontext.uc_sigmask.__val[16]' => 4, 'ucontext.uc_sigmask.__val[17]' => 4, 'ucontext.uc_sigmask.__val[18]' => 4, 'ucontext.uc_sigmask.__val[19]' => 4, 'ucontext.uc_sigmask.__val[1]' => 4, 'ucontext.uc_sigmask.__val[20]' => 4, 'ucontext.uc_sigmask.__val[21]' => 4, 'ucontext.uc_sigmask.__val[22]' => 4, 'ucontext.uc_sigmask.__val[23]' => 4, 'ucontext.uc_sigmask.__val[24]' => 4, 'ucontext.uc_sigmask.__val[25]' => 4, 'ucontext.uc_sigmask.__val[26]' => 4, 'ucontext.uc_sigmask.__val[27]' => 4, 'ucontext.uc_sigmask.__val[28]' => 4, 'ucontext.uc_sigmask.__val[29]' => 4, 'ucontext.uc_sigmask.__val[2]' => 4, 'ucontext.uc_sigmask.__val[30]' => 4, 'ucontext.uc_sigmask.__val[31]' => 4, 'ucontext.uc_sigmask.__val[3]' => 4, 'ucontext.uc_sigmask.__val[4]' => 4, 'ucontext.uc_sigmask.__val[5]' => 4, 'ucontext.uc_sigmask.__val[6]' => 4, 'ucontext.uc_sigmask.__val[7]' => 4, 'ucontext.uc_sigmask.__val[8]' => 4, 'ucontext.uc_sigmask.__val[9]' => 4, 'ucontext.uc_stack' => 12, 'ucontext.uc_stack.ss_flags' => 4, 'ucontext.uc_stack.ss_size' => 4, 'ucontext.uc_stack.ss_sp' => 4, 'ucontext_t' => 348, 'ucontext_t.__fpregs_mem' => 112, 'ucontext_t.__fpregs_mem._st' => 80, 'ucontext_t.__fpregs_mem._st[0]' => 10, 'ucontext_t.__fpregs_mem._st[0].exponent' => 2, 'ucontext_t.__fpregs_mem._st[0].significand' => 8, 'ucontext_t.__fpregs_mem._st[0].significand[0]' => 2, 'ucontext_t.__fpregs_mem._st[0].significand[1]' => 2, 'ucontext_t.__fpregs_mem._st[0].significand[2]' => 2, 'ucontext_t.__fpregs_mem._st[0].significand[3]' => 2, 'ucontext_t.__fpregs_mem._st[1]' => 10, 'ucontext_t.__fpregs_mem._st[1].exponent' => 2, 'ucontext_t.__fpregs_mem._st[1].significand' => 8, 'ucontext_t.__fpregs_mem._st[1].significand[0]' => 2, 'ucontext_t.__fpregs_mem._st[1].significand[1]' => 2, 'ucontext_t.__fpregs_mem._st[1].significand[2]' => 2, 'ucontext_t.__fpregs_mem._st[1].significand[3]' => 2, 'ucontext_t.__fpregs_mem._st[2]' => 10, 'ucontext_t.__fpregs_mem._st[2].exponent' => 2, 'ucontext_t.__fpregs_mem._st[2].significand' => 8, 'ucontext_t.__fpregs_mem._st[2].significand[0]' => 2, 'ucontext_t.__fpregs_mem._st[2].significand[1]' => 2, 'ucontext_t.__fpregs_mem._st[2].significand[2]' => 2, 'ucontext_t.__fpregs_mem._st[2].significand[3]' => 2, 'ucontext_t.__fpregs_mem._st[3]' => 10, 'ucontext_t.__fpregs_mem._st[3].exponent' => 2, 'ucontext_t.__fpregs_mem._st[3].significand' => 8, 'ucontext_t.__fpregs_mem._st[3].significand[0]' => 2, 'ucontext_t.__fpregs_mem._st[3].significand[1]' => 2, 'ucontext_t.__fpregs_mem._st[3].significand[2]' => 2, 'ucontext_t.__fpregs_mem._st[3].significand[3]' => 2, 'ucontext_t.__fpregs_mem._st[4]' => 10, 'ucontext_t.__fpregs_mem._st[4].exponent' => 2, 'ucontext_t.__fpregs_mem._st[4].significand' => 8, 'ucontext_t.__fpregs_mem._st[4].significand[0]' => 2, 'ucontext_t.__fpregs_mem._st[4].significand[1]' => 2, 'ucontext_t.__fpregs_mem._st[4].significand[2]' => 2, 'ucontext_t.__fpregs_mem._st[4].significand[3]' => 2, 'ucontext_t.__fpregs_mem._st[5]' => 10, 'ucontext_t.__fpregs_mem._st[5].exponent' => 2, 'ucontext_t.__fpregs_mem._st[5].significand' => 8, 'ucontext_t.__fpregs_mem._st[5].significand[0]' => 2, 'ucontext_t.__fpregs_mem._st[5].significand[1]' => 2, 'ucontext_t.__fpregs_mem._st[5].significand[2]' => 2, 'ucontext_t.__fpregs_mem._st[5].significand[3]' => 2, 'ucontext_t.__fpregs_mem._st[6]' => 10, 'ucontext_t.__fpregs_mem._st[6].exponent' => 2, 'ucontext_t.__fpregs_mem._st[6].significand' => 8, 'ucontext_t.__fpregs_mem._st[6].significand[0]' => 2, 'ucontext_t.__fpregs_mem._st[6].significand[1]' => 2, 'ucontext_t.__fpregs_mem._st[6].significand[2]' => 2, 'ucontext_t.__fpregs_mem._st[6].significand[3]' => 2, 'ucontext_t.__fpregs_mem._st[7]' => 10, 'ucontext_t.__fpregs_mem._st[7].exponent' => 2, 'ucontext_t.__fpregs_mem._st[7].significand' => 8, 'ucontext_t.__fpregs_mem._st[7].significand[0]' => 2, 'ucontext_t.__fpregs_mem._st[7].significand[1]' => 2, 'ucontext_t.__fpregs_mem._st[7].significand[2]' => 2, 'ucontext_t.__fpregs_mem._st[7].significand[3]' => 2, 'ucontext_t.__fpregs_mem.cssel' => 4, 'ucontext_t.__fpregs_mem.cw' => 4, 'ucontext_t.__fpregs_mem.dataoff' => 4, 'ucontext_t.__fpregs_mem.datasel' => 4, 'ucontext_t.__fpregs_mem.ipoff' => 4, 'ucontext_t.__fpregs_mem.status' => 4, 'ucontext_t.__fpregs_mem.sw' => 4, 'ucontext_t.__fpregs_mem.tag' => 4, 'ucontext_t.uc_flags' => 4, 'ucontext_t.uc_link' => 4, 'ucontext_t.uc_mcontext' => 88, 'ucontext_t.uc_mcontext.cr2' => 4, 'ucontext_t.uc_mcontext.fpregs' => 4, 'ucontext_t.uc_mcontext.gregs' => 76, 'ucontext_t.uc_mcontext.gregs[0]' => 4, 'ucontext_t.uc_mcontext.gregs[10]' => 4, 'ucontext_t.uc_mcontext.gregs[11]' => 4, 'ucontext_t.uc_mcontext.gregs[12]' => 4, 'ucontext_t.uc_mcontext.gregs[13]' => 4, 'ucontext_t.uc_mcontext.gregs[14]' => 4, 'ucontext_t.uc_mcontext.gregs[15]' => 4, 'ucontext_t.uc_mcontext.gregs[16]' => 4, 'ucontext_t.uc_mcontext.gregs[17]' => 4, 'ucontext_t.uc_mcontext.gregs[18]' => 4, 'ucontext_t.uc_mcontext.gregs[1]' => 4, 'ucontext_t.uc_mcontext.gregs[2]' => 4, 'ucontext_t.uc_mcontext.gregs[3]' => 4, 'ucontext_t.uc_mcontext.gregs[4]' => 4, 'ucontext_t.uc_mcontext.gregs[5]' => 4, 'ucontext_t.uc_mcontext.gregs[6]' => 4, 'ucontext_t.uc_mcontext.gregs[7]' => 4, 'ucontext_t.uc_mcontext.gregs[8]' => 4, 'ucontext_t.uc_mcontext.gregs[9]' => 4, 'ucontext_t.uc_mcontext.oldmask' => 4, 'ucontext_t.uc_sigmask' => 128, 'ucontext_t.uc_sigmask.__val' => 128, 'ucontext_t.uc_sigmask.__val[0]' => 4, 'ucontext_t.uc_sigmask.__val[10]' => 4, 'ucontext_t.uc_sigmask.__val[11]' => 4, 'ucontext_t.uc_sigmask.__val[12]' => 4, 'ucontext_t.uc_sigmask.__val[13]' => 4, 'ucontext_t.uc_sigmask.__val[14]' => 4, 'ucontext_t.uc_sigmask.__val[15]' => 4, 'ucontext_t.uc_sigmask.__val[16]' => 4, 'ucontext_t.uc_sigmask.__val[17]' => 4, 'ucontext_t.uc_sigmask.__val[18]' => 4, 'ucontext_t.uc_sigmask.__val[19]' => 4, 'ucontext_t.uc_sigmask.__val[1]' => 4, 'ucontext_t.uc_sigmask.__val[20]' => 4, 'ucontext_t.uc_sigmask.__val[21]' => 4, 'ucontext_t.uc_sigmask.__val[22]' => 4, 'ucontext_t.uc_sigmask.__val[23]' => 4, 'ucontext_t.uc_sigmask.__val[24]' => 4, 'ucontext_t.uc_sigmask.__val[25]' => 4, 'ucontext_t.uc_sigmask.__val[26]' => 4, 'ucontext_t.uc_sigmask.__val[27]' => 4, 'ucontext_t.uc_sigmask.__val[28]' => 4, 'ucontext_t.uc_sigmask.__val[29]' => 4, 'ucontext_t.uc_sigmask.__val[2]' => 4, 'ucontext_t.uc_sigmask.__val[30]' => 4, 'ucontext_t.uc_sigmask.__val[31]' => 4, 'ucontext_t.uc_sigmask.__val[3]' => 4, 'ucontext_t.uc_sigmask.__val[4]' => 4, 'ucontext_t.uc_sigmask.__val[5]' => 4, 'ucontext_t.uc_sigmask.__val[6]' => 4, 'ucontext_t.uc_sigmask.__val[7]' => 4, 'ucontext_t.uc_sigmask.__val[8]' => 4, 'ucontext_t.uc_sigmask.__val[9]' => 4, 'ucontext_t.uc_stack' => 12, 'ucontext_t.uc_stack.ss_flags' => 4, 'ucontext_t.uc_stack.ss_size' => 4, 'ucontext_t.uc_stack.ss_sp' => 4, 'ucred' => 12, 'ucred.gid' => 4, 'ucred.pid' => 4, 'ucred.uid' => 4, 'ufuncs' => 12, 'ufuncs.uf_index' => 4, 'ufuncs.uf_set' => 4, 'ufuncs.uf_val' => 4, 'uid_t' => 4, 'uint' => 4, 'uint16_t' => 2, 'uint32_t' => 4, 'uint64_t' => 8, 'uint8_t' => 1, 'uint_fast16_t' => 4, 'uint_fast32_t' => 4, 'uint_fast64_t' => 8, 'uint_fast8_t' => 1, 'uint_least16_t' => 2, 'uint_least32_t' => 4, 'uint_least64_t' => 8, 'uint_least8_t' => 1, 'uintmax_t' => 8, 'uintptr_t' => 4, 'ulong' => 4, 'unop' => 24, 'unop.op_first' => 4, 'unop.op_flags' => 1, 'unop.op_next' => 4, 'unop.op_ppaddr' => 4, 'unop.op_private' => 1, 'unop.op_sibling' => 4, 'unop.op_targ' => 4, 'useconds_t' => 4, 'ushort' => 2, 'va_list' => 4, 'wait' => 4, 'wait.__wait_stopped' => 4, 'wait.__wait_terminated' => 4, 'wait.w_status' => 4, 'wchar_t' => 4, 'winsize' => 8, 'winsize.ws_col' => 2, 'winsize.ws_row' => 2, 'winsize.ws_xpixel' => 2, 'winsize.ws_ypixel' => 2, 'wint_t' => 4, 'xpv' => 16, 'xpv.xnv_u' => 8, 'xpv.xnv_u.xgv_stash' => 4, 'xpv.xnv_u.xnv_nv' => 8, 'xpv.xpv_cur' => 4, 'xpv.xpv_len' => 4, 'xpv_allocated' => 8, 'xpv_allocated.xpv_cur' => 4, 'xpv_allocated.xpv_len' => 4, 'xpvav' => 28, 'xpvav.xav_fill' => 4, 'xpvav.xav_max' => 4, 'xpvav.xiv_u' => 4, 'xpvav.xiv_u.xivu_i32' => 4, 'xpvav.xiv_u.xivu_iv' => 4, 'xpvav.xiv_u.xivu_namehek' => 4, 'xpvav.xiv_u.xivu_p1' => 4, 'xpvav.xiv_u.xivu_uv' => 4, 'xpvav.xmg_stash' => 4, 'xpvav.xmg_u' => 4, 'xpvav.xmg_u.xmg_magic' => 4, 'xpvav.xmg_u.xmg_ourstash' => 4, 'xpvav.xnv_u' => 8, 'xpvav.xnv_u.xgv_stash' => 4, 'xpvav.xnv_u.xnv_nv' => 8, 'xpvav_allocated' => 20, 'xpvav_allocated.xav_fill' => 4, 'xpvav_allocated.xav_max' => 4, 'xpvav_allocated.xiv_u' => 4, 'xpvav_allocated.xiv_u.xivu_i32' => 4, 'xpvav_allocated.xiv_u.xivu_iv' => 4, 'xpvav_allocated.xiv_u.xivu_namehek' => 4, 'xpvav_allocated.xiv_u.xivu_p1' => 4, 'xpvav_allocated.xiv_u.xivu_uv' => 4, 'xpvav_allocated.xmg_stash' => 4, 'xpvav_allocated.xmg_u' => 4, 'xpvav_allocated.xmg_u.xmg_magic' => 4, 'xpvav_allocated.xmg_u.xmg_ourstash' => 4, 'xpvbm' => 35, 'xpvbm.xbm_previous' => 2, 'xpvbm.xbm_rare' => 1, 'xpvbm.xbm_useful' => 4, 'xpvbm.xiv_u' => 4, 'xpvbm.xiv_u.xivu_i32' => 4, 'xpvbm.xiv_u.xivu_iv' => 4, 'xpvbm.xiv_u.xivu_namehek' => 4, 'xpvbm.xiv_u.xivu_p1' => 4, 'xpvbm.xiv_u.xivu_uv' => 4, 'xpvbm.xmg_stash' => 4, 'xpvbm.xmg_u' => 4, 'xpvbm.xmg_u.xmg_magic' => 4, 'xpvbm.xmg_u.xmg_ourstash' => 4, 'xpvbm.xnv_u' => 8, 'xpvbm.xnv_u.xgv_stash' => 4, 'xpvbm.xnv_u.xnv_nv' => 8, 'xpvbm.xpv_cur' => 4, 'xpvbm.xpv_len' => 4, 'xpvcv' => 62, 'xpvcv.xcv_file' => 4, 'xpvcv.xcv_flags' => 2, 'xpvcv.xcv_gv' => 4, 'xpvcv.xcv_outside' => 4, 'xpvcv.xcv_outside_seq' => 4, 'xpvcv.xcv_padlist' => 4, 'xpvcv.xcv_root_u' => 4, 'xpvcv.xcv_root_u.xcv_root' => 4, 'xpvcv.xcv_root_u.xcv_xsub' => 4, 'xpvcv.xcv_start_u' => 4, 'xpvcv.xcv_start_u.xcv_start' => 4, 'xpvcv.xcv_start_u.xcv_xsubany' => 4, 'xpvcv.xcv_start_u.xcv_xsubany.any_bool' => 1, 'xpvcv.xcv_start_u.xcv_xsubany.any_dptr' => 4, 'xpvcv.xcv_start_u.xcv_xsubany.any_dxptr' => 4, 'xpvcv.xcv_start_u.xcv_xsubany.any_i32' => 4, 'xpvcv.xcv_start_u.xcv_xsubany.any_iv' => 4, 'xpvcv.xcv_start_u.xcv_xsubany.any_long' => 4, 'xpvcv.xcv_start_u.xcv_xsubany.any_ptr' => 4, 'xpvcv.xcv_stash' => 4, 'xpvcv.xiv_u' => 4, 'xpvcv.xiv_u.xivu_i32' => 4, 'xpvcv.xiv_u.xivu_iv' => 4, 'xpvcv.xiv_u.xivu_namehek' => 4, 'xpvcv.xiv_u.xivu_p1' => 4, 'xpvcv.xiv_u.xivu_uv' => 4, 'xpvcv.xmg_stash' => 4, 'xpvcv.xmg_u' => 4, 'xpvcv.xmg_u.xmg_magic' => 4, 'xpvcv.xmg_u.xmg_ourstash' => 4, 'xpvcv.xnv_u' => 8, 'xpvcv.xnv_u.xgv_stash' => 4, 'xpvcv.xnv_u.xnv_nv' => 8, 'xpvcv.xpv_cur' => 4, 'xpvcv.xpv_len' => 4, 'xpvcv_allocated' => 54, 'xpvcv_allocated.xcv_file' => 4, 'xpvcv_allocated.xcv_flags' => 2, 'xpvcv_allocated.xcv_gv' => 4, 'xpvcv_allocated.xcv_outside' => 4, 'xpvcv_allocated.xcv_outside_seq' => 4, 'xpvcv_allocated.xcv_padlist' => 4, 'xpvcv_allocated.xcv_root_u' => 4, 'xpvcv_allocated.xcv_root_u.xcv_root' => 4, 'xpvcv_allocated.xcv_root_u.xcv_xsub' => 4, 'xpvcv_allocated.xcv_start_u' => 4, 'xpvcv_allocated.xcv_start_u.xcv_start' => 4, 'xpvcv_allocated.xcv_start_u.xcv_xsubany' => 4, 'xpvcv_allocated.xcv_start_u.xcv_xsubany.any_bool' => 1, 'xpvcv_allocated.xcv_start_u.xcv_xsubany.any_dptr' => 4, 'xpvcv_allocated.xcv_start_u.xcv_xsubany.any_dxptr' => 4, 'xpvcv_allocated.xcv_start_u.xcv_xsubany.any_i32' => 4, 'xpvcv_allocated.xcv_start_u.xcv_xsubany.any_iv' => 4, 'xpvcv_allocated.xcv_start_u.xcv_xsubany.any_long' => 4, 'xpvcv_allocated.xcv_start_u.xcv_xsubany.any_ptr' => 4, 'xpvcv_allocated.xcv_stash' => 4, 'xpvcv_allocated.xiv_u' => 4, 'xpvcv_allocated.xiv_u.xivu_i32' => 4, 'xpvcv_allocated.xiv_u.xivu_iv' => 4, 'xpvcv_allocated.xiv_u.xivu_namehek' => 4, 'xpvcv_allocated.xiv_u.xivu_p1' => 4, 'xpvcv_allocated.xiv_u.xivu_uv' => 4, 'xpvcv_allocated.xmg_stash' => 4, 'xpvcv_allocated.xmg_u' => 4, 'xpvcv_allocated.xmg_u.xmg_magic' => 4, 'xpvcv_allocated.xmg_u.xmg_ourstash' => 4, 'xpvcv_allocated.xpv_cur' => 4, 'xpvcv_allocated.xpv_len' => 4, 'xpvfm' => 66, 'xpvfm.xcv_file' => 4, 'xpvfm.xcv_flags' => 2, 'xpvfm.xcv_gv' => 4, 'xpvfm.xcv_outside' => 4, 'xpvfm.xcv_outside_seq' => 4, 'xpvfm.xcv_padlist' => 4, 'xpvfm.xcv_root_u' => 4, 'xpvfm.xcv_root_u.xcv_root' => 4, 'xpvfm.xcv_root_u.xcv_xsub' => 4, 'xpvfm.xcv_start_u' => 4, 'xpvfm.xcv_start_u.xcv_start' => 4, 'xpvfm.xcv_start_u.xcv_xsubany' => 4, 'xpvfm.xcv_start_u.xcv_xsubany.any_bool' => 1, 'xpvfm.xcv_start_u.xcv_xsubany.any_dptr' => 4, 'xpvfm.xcv_start_u.xcv_xsubany.any_dxptr' => 4, 'xpvfm.xcv_start_u.xcv_xsubany.any_i32' => 4, 'xpvfm.xcv_start_u.xcv_xsubany.any_iv' => 4, 'xpvfm.xcv_start_u.xcv_xsubany.any_long' => 4, 'xpvfm.xcv_start_u.xcv_xsubany.any_ptr' => 4, 'xpvfm.xcv_stash' => 4, 'xpvfm.xfm_lines' => 4, 'xpvfm.xiv_u' => 4, 'xpvfm.xiv_u.xivu_i32' => 4, 'xpvfm.xiv_u.xivu_iv' => 4, 'xpvfm.xiv_u.xivu_namehek' => 4, 'xpvfm.xiv_u.xivu_p1' => 4, 'xpvfm.xiv_u.xivu_uv' => 4, 'xpvfm.xmg_stash' => 4, 'xpvfm.xmg_u' => 4, 'xpvfm.xmg_u.xmg_magic' => 4, 'xpvfm.xmg_u.xmg_ourstash' => 4, 'xpvfm.xnv_u' => 8, 'xpvfm.xnv_u.xgv_stash' => 4, 'xpvfm.xnv_u.xnv_nv' => 8, 'xpvfm.xpv_cur' => 4, 'xpvfm.xpv_len' => 4, 'xpvfm_allocated' => 58, 'xpvfm_allocated.xcv_file' => 4, 'xpvfm_allocated.xcv_flags' => 2, 'xpvfm_allocated.xcv_gv' => 4, 'xpvfm_allocated.xcv_outside' => 4, 'xpvfm_allocated.xcv_outside_seq' => 4, 'xpvfm_allocated.xcv_padlist' => 4, 'xpvfm_allocated.xcv_root_u' => 4, 'xpvfm_allocated.xcv_root_u.xcv_root' => 4, 'xpvfm_allocated.xcv_root_u.xcv_xsub' => 4, 'xpvfm_allocated.xcv_start_u' => 4, 'xpvfm_allocated.xcv_start_u.xcv_start' => 4, 'xpvfm_allocated.xcv_start_u.xcv_xsubany' => 4, 'xpvfm_allocated.xcv_start_u.xcv_xsubany.any_bool' => 1, 'xpvfm_allocated.xcv_start_u.xcv_xsubany.any_dptr' => 4, 'xpvfm_allocated.xcv_start_u.xcv_xsubany.any_dxptr' => 4, 'xpvfm_allocated.xcv_start_u.xcv_xsubany.any_i32' => 4, 'xpvfm_allocated.xcv_start_u.xcv_xsubany.any_iv' => 4, 'xpvfm_allocated.xcv_start_u.xcv_xsubany.any_long' => 4, 'xpvfm_allocated.xcv_start_u.xcv_xsubany.any_ptr' => 4, 'xpvfm_allocated.xcv_stash' => 4, 'xpvfm_allocated.xfm_lines' => 4, 'xpvfm_allocated.xiv_u' => 4, 'xpvfm_allocated.xiv_u.xivu_i32' => 4, 'xpvfm_allocated.xiv_u.xivu_iv' => 4, 'xpvfm_allocated.xiv_u.xivu_namehek' => 4, 'xpvfm_allocated.xiv_u.xivu_p1' => 4, 'xpvfm_allocated.xiv_u.xivu_uv' => 4, 'xpvfm_allocated.xmg_stash' => 4, 'xpvfm_allocated.xmg_u' => 4, 'xpvfm_allocated.xmg_u.xmg_magic' => 4, 'xpvfm_allocated.xmg_u.xmg_ourstash' => 4, 'xpvfm_allocated.xpv_cur' => 4, 'xpvfm_allocated.xpv_len' => 4, 'xpvgv' => 28, 'xpvgv.xiv_u' => 4, 'xpvgv.xiv_u.xivu_i32' => 4, 'xpvgv.xiv_u.xivu_iv' => 4, 'xpvgv.xiv_u.xivu_namehek' => 4, 'xpvgv.xiv_u.xivu_p1' => 4, 'xpvgv.xiv_u.xivu_uv' => 4, 'xpvgv.xmg_stash' => 4, 'xpvgv.xmg_u' => 4, 'xpvgv.xmg_u.xmg_magic' => 4, 'xpvgv.xmg_u.xmg_ourstash' => 4, 'xpvgv.xnv_u' => 8, 'xpvgv.xnv_u.xgv_stash' => 4, 'xpvgv.xnv_u.xnv_nv' => 8, 'xpvgv.xpv_cur' => 4, 'xpvgv.xpv_len' => 4, 'xpvhv' => 28, 'xpvhv.xhv_fill' => 4, 'xpvhv.xhv_max' => 4, 'xpvhv.xiv_u' => 4, 'xpvhv.xiv_u.xivu_i32' => 4, 'xpvhv.xiv_u.xivu_iv' => 4, 'xpvhv.xiv_u.xivu_namehek' => 4, 'xpvhv.xiv_u.xivu_p1' => 4, 'xpvhv.xiv_u.xivu_uv' => 4, 'xpvhv.xmg_stash' => 4, 'xpvhv.xmg_u' => 4, 'xpvhv.xmg_u.xmg_magic' => 4, 'xpvhv.xmg_u.xmg_ourstash' => 4, 'xpvhv.xnv_u' => 8, 'xpvhv.xnv_u.xgv_stash' => 4, 'xpvhv.xnv_u.xnv_nv' => 8, 'xpvhv_allocated' => 20, 'xpvhv_allocated.xhv_fill' => 4, 'xpvhv_allocated.xhv_max' => 4, 'xpvhv_allocated.xiv_u' => 4, 'xpvhv_allocated.xiv_u.xivu_i32' => 4, 'xpvhv_allocated.xiv_u.xivu_iv' => 4, 'xpvhv_allocated.xiv_u.xivu_namehek' => 4, 'xpvhv_allocated.xiv_u.xivu_p1' => 4, 'xpvhv_allocated.xiv_u.xivu_uv' => 4, 'xpvhv_allocated.xmg_stash' => 4, 'xpvhv_allocated.xmg_u' => 4, 'xpvhv_allocated.xmg_u.xmg_magic' => 4, 'xpvhv_allocated.xmg_u.xmg_ourstash' => 4, 'xpvhv_aux' => 16, 'xpvhv_aux.xhv_backreferences' => 4, 'xpvhv_aux.xhv_eiter' => 4, 'xpvhv_aux.xhv_name' => 4, 'xpvhv_aux.xhv_riter' => 4, 'xpvio' => 84, 'xpvio.xio_bottom_gv' => 4, 'xpvio.xio_bottom_name' => 4, 'xpvio.xio_dirpu' => 4, 'xpvio.xio_dirpu.xiou_any' => 4, 'xpvio.xio_dirpu.xiou_dirp' => 4, 'xpvio.xio_flags' => 1, 'xpvio.xio_fmt_gv' => 4, 'xpvio.xio_fmt_name' => 4, 'xpvio.xio_ifp' => 4, 'xpvio.xio_lines' => 4, 'xpvio.xio_lines_left' => 4, 'xpvio.xio_ofp' => 4, 'xpvio.xio_page' => 4, 'xpvio.xio_page_len' => 4, 'xpvio.xio_subprocess' => 2, 'xpvio.xio_top_gv' => 4, 'xpvio.xio_top_name' => 4, 'xpvio.xio_type' => 1, 'xpvio.xiv_u' => 4, 'xpvio.xiv_u.xivu_i32' => 4, 'xpvio.xiv_u.xivu_iv' => 4, 'xpvio.xiv_u.xivu_namehek' => 4, 'xpvio.xiv_u.xivu_p1' => 4, 'xpvio.xiv_u.xivu_uv' => 4, 'xpvio.xmg_stash' => 4, 'xpvio.xmg_u' => 4, 'xpvio.xmg_u.xmg_magic' => 4, 'xpvio.xmg_u.xmg_ourstash' => 4, 'xpvio.xnv_u' => 8, 'xpvio.xnv_u.xgv_stash' => 4, 'xpvio.xnv_u.xnv_nv' => 8, 'xpvio.xpv_cur' => 4, 'xpvio.xpv_len' => 4, 'xpviv' => 20, 'xpviv.xiv_u' => 4, 'xpviv.xiv_u.xivu_i32' => 4, 'xpviv.xiv_u.xivu_iv' => 4, 'xpviv.xiv_u.xivu_namehek' => 4, 'xpviv.xiv_u.xivu_p1' => 4, 'xpviv.xiv_u.xivu_uv' => 4, 'xpviv.xnv_u' => 8, 'xpviv.xnv_u.xgv_stash' => 4, 'xpviv.xnv_u.xnv_nv' => 8, 'xpviv.xpv_cur' => 4, 'xpviv.xpv_len' => 4, 'xpviv_allocated' => 12, 'xpviv_allocated.xiv_u' => 4, 'xpviv_allocated.xiv_u.xivu_i32' => 4, 'xpviv_allocated.xiv_u.xivu_iv' => 4, 'xpviv_allocated.xiv_u.xivu_namehek' => 4, 'xpviv_allocated.xiv_u.xivu_p1' => 4, 'xpviv_allocated.xiv_u.xivu_uv' => 4, 'xpviv_allocated.xpv_cur' => 4, 'xpviv_allocated.xpv_len' => 4, 'xpvlv' => 41, 'xpvlv.xiv_u' => 4, 'xpvlv.xiv_u.xivu_i32' => 4, 'xpvlv.xiv_u.xivu_iv' => 4, 'xpvlv.xiv_u.xivu_namehek' => 4, 'xpvlv.xiv_u.xivu_p1' => 4, 'xpvlv.xiv_u.xivu_uv' => 4, 'xpvlv.xlv_targ' => 4, 'xpvlv.xlv_targlen' => 4, 'xpvlv.xlv_targoff' => 4, 'xpvlv.xlv_type' => 1, 'xpvlv.xmg_stash' => 4, 'xpvlv.xmg_u' => 4, 'xpvlv.xmg_u.xmg_magic' => 4, 'xpvlv.xmg_u.xmg_ourstash' => 4, 'xpvlv.xnv_u' => 8, 'xpvlv.xnv_u.xgv_stash' => 4, 'xpvlv.xnv_u.xnv_nv' => 8, 'xpvlv.xpv_cur' => 4, 'xpvlv.xpv_len' => 4, 'xpvmg' => 28, 'xpvmg.xiv_u' => 4, 'xpvmg.xiv_u.xivu_i32' => 4, 'xpvmg.xiv_u.xivu_iv' => 4, 'xpvmg.xiv_u.xivu_namehek' => 4, 'xpvmg.xiv_u.xivu_p1' => 4, 'xpvmg.xiv_u.xivu_uv' => 4, 'xpvmg.xmg_stash' => 4, 'xpvmg.xmg_u' => 4, 'xpvmg.xmg_u.xmg_magic' => 4, 'xpvmg.xmg_u.xmg_ourstash' => 4, 'xpvmg.xnv_u' => 8, 'xpvmg.xnv_u.xgv_stash' => 4, 'xpvmg.xnv_u.xnv_nv' => 8, 'xpvmg.xpv_cur' => 4, 'xpvmg.xpv_len' => 4, 'xpvnv' => 20, 'xpvnv.xiv_u' => 4, 'xpvnv.xiv_u.xivu_i32' => 4, 'xpvnv.xiv_u.xivu_iv' => 4, 'xpvnv.xiv_u.xivu_namehek' => 4, 'xpvnv.xiv_u.xivu_p1' => 4, 'xpvnv.xiv_u.xivu_uv' => 4, 'xpvnv.xnv_u' => 8, 'xpvnv.xnv_u.xgv_stash' => 4, 'xpvnv.xnv_u.xnv_nv' => 8, 'xpvnv.xpv_cur' => 4, 'xpvnv.xpv_len' => 4, 'xpvuv' => 20, 'xpvuv.xnv_u' => 8, 'xpvuv.xnv_u.xgv_stash' => 4, 'xpvuv.xnv_u.xnv_nv' => 8, 'xpvuv.xpv_cur' => 4, 'xpvuv.xpv_len' => 4, 'xpvuv.xuv_u' => 4, 'xpvuv.xuv_u.xivu_namehek' => 4, 'xpvuv.xuv_u.xuvu_iv' => 4, 'xpvuv.xuv_u.xuvu_p1' => 4, 'xpvuv.xuv_u.xuvu_uv' => 4, ); Convert-Binary-C-0.76/tests/include/util.c0000644000175000001440000041236011550664631017126 0ustar mhxusers/* util.c * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* * "Very useful, no doubt, that was to Saruman; yet it seems that he was * not content." --Gandalf */ /* This file contains assorted utility routines. * Which is a polite way of saying any stuff that people couldn't think of * a better place for. Amongst other things, it includes the warning and * dieing stuff, plus wrappers for malloc code. */ #include "EXTERN.h" #define PERL_IN_UTIL_C #include "perl.h" #ifndef PERL_MICRO #include #ifndef SIG_ERR # define SIG_ERR ((Sighandler_t) -1) #endif #endif #ifdef __Lynx__ /* Missing protos on LynxOS */ int putenv(char *); #endif #ifdef I_SYS_WAIT # include #endif #ifdef HAS_SELECT # ifdef I_SYS_SELECT # include # endif #endif #define FLUSH #if defined(HAS_FCNTL) && defined(F_SETFD) && !defined(FD_CLOEXEC) # define FD_CLOEXEC 1 /* NeXT needs this */ #endif /* NOTE: Do not call the next three routines directly. Use the macros * in handy.h, so that we can easily redefine everything to do tracking of * allocated hunks back to the original New to track down any memory leaks. * XXX This advice seems to be widely ignored :-( --AD August 1996. */ static char * S_write_no_mem(pTHX) { dVAR; /* Can't use PerlIO to write as it allocates memory */ PerlLIO_write(PerlIO_fileno(Perl_error_log), PL_no_mem, strlen(PL_no_mem)); my_exit(1); NORETURN_FUNCTION_END; } /* paranoid version of system's malloc() */ Malloc_t Perl_safesysmalloc(MEM_SIZE size) { dTHX; Malloc_t ptr; #ifdef HAS_64K_LIMIT if (size > 0xffff) { PerlIO_printf(Perl_error_log, "Allocation too large: %lx\n", size) FLUSH; my_exit(1); } #endif /* HAS_64K_LIMIT */ #ifdef PERL_TRACK_MEMPOOL size += sTHX; #endif #ifdef DEBUGGING if ((long)size < 0) Perl_croak_nocontext("panic: malloc"); #endif ptr = (Malloc_t)PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */ PERL_ALLOC_CHECK(ptr); DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) malloc %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)size)); if (ptr != NULL) { #ifdef PERL_TRACK_MEMPOOL struct perl_memory_debug_header *const header = (struct perl_memory_debug_header *)ptr; #endif #ifdef PERL_POISON PoisonNew(((char *)ptr), size, char); #endif #ifdef PERL_TRACK_MEMPOOL header->interpreter = aTHX; /* Link us into the list. */ header->prev = &PL_memory_debug_header; header->next = PL_memory_debug_header.next; PL_memory_debug_header.next = header; header->next->prev = header; # ifdef PERL_POISON header->size = size; # endif ptr = (Malloc_t)((char*)ptr+sTHX); #endif return ptr; } else if (PL_nomemok) return NULL; else { return write_no_mem(); } /*NOTREACHED*/ } /* paranoid version of system's realloc() */ Malloc_t Perl_safesysrealloc(Malloc_t where,MEM_SIZE size) { dTHX; Malloc_t ptr; #if !defined(STANDARD_C) && !defined(HAS_REALLOC_PROTOTYPE) && !defined(PERL_MICRO) Malloc_t PerlMem_realloc(); #endif /* !defined(STANDARD_C) && !defined(HAS_REALLOC_PROTOTYPE) */ #ifdef HAS_64K_LIMIT if (size > 0xffff) { PerlIO_printf(Perl_error_log, "Reallocation too large: %lx\n", size) FLUSH; my_exit(1); } #endif /* HAS_64K_LIMIT */ if (!size) { safesysfree(where); return NULL; } if (!where) return safesysmalloc(size); #ifdef PERL_TRACK_MEMPOOL where = (Malloc_t)((char*)where-sTHX); size += sTHX; { struct perl_memory_debug_header *const header = (struct perl_memory_debug_header *)where; if (header->interpreter != aTHX) { Perl_croak_nocontext("panic: realloc from wrong pool"); } assert(header->next->prev == header); assert(header->prev->next == header); # ifdef PERL_POISON if (header->size > size) { const MEM_SIZE freed_up = header->size - size; char *start_of_freed = ((char *)where) + size; PoisonFree(start_of_freed, freed_up, char); } header->size = size; # endif } #endif #ifdef DEBUGGING if ((long)size < 0) Perl_croak_nocontext("panic: realloc"); #endif ptr = (Malloc_t)PerlMem_realloc(where,size); PERL_ALLOC_CHECK(ptr); DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) rfree\n",PTR2UV(where),(long)PL_an++)); DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) realloc %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)size)); if (ptr != NULL) { #ifdef PERL_TRACK_MEMPOOL struct perl_memory_debug_header *const header = (struct perl_memory_debug_header *)ptr; # ifdef PERL_POISON if (header->size < size) { const MEM_SIZE fresh = size - header->size; char *start_of_fresh = ((char *)ptr) + size; PoisonNew(start_of_fresh, fresh, char); } # endif header->next->prev = header; header->prev->next = header; ptr = (Malloc_t)((char*)ptr+sTHX); #endif return ptr; } else if (PL_nomemok) return NULL; else { return write_no_mem(); } /*NOTREACHED*/ } /* safe version of system's free() */ Free_t Perl_safesysfree(Malloc_t where) { #if defined(PERL_IMPLICIT_SYS) || defined(PERL_TRACK_MEMPOOL) dTHX; #else dVAR; #endif DEBUG_m( PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) free\n",PTR2UV(where),(long)PL_an++)); if (where) { #ifdef PERL_TRACK_MEMPOOL where = (Malloc_t)((char*)where-sTHX); { struct perl_memory_debug_header *const header = (struct perl_memory_debug_header *)where; if (header->interpreter != aTHX) { Perl_croak_nocontext("panic: free from wrong pool"); } if (!header->prev) { Perl_croak_nocontext("panic: duplicate free"); } if (!(header->next) || header->next->prev != header || header->prev->next != header) { Perl_croak_nocontext("panic: bad free"); } /* Unlink us from the chain. */ header->next->prev = header->prev; header->prev->next = header->next; # ifdef PERL_POISON PoisonNew(where, header->size, char); # endif /* Trigger the duplicate free warning. */ header->next = NULL; } #endif PerlMem_free(where); } } /* safe version of system's calloc() */ Malloc_t Perl_safesyscalloc(MEM_SIZE count, MEM_SIZE size) { dTHX; Malloc_t ptr; #ifdef HAS_64K_LIMIT if (size * count > 0xffff) { PerlIO_printf(Perl_error_log, "Allocation too large: %lx\n", size * count) FLUSH; my_exit(1); } #endif /* HAS_64K_LIMIT */ #ifdef DEBUGGING if ((long)size < 0 || (long)count < 0) Perl_croak_nocontext("panic: calloc"); #endif size *= count; #ifdef PERL_TRACK_MEMPOOL size += sTHX; #endif ptr = (Malloc_t)PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */ PERL_ALLOC_CHECK(ptr); DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) calloc %ld x %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)count,(long)size)); if (ptr != NULL) { memset((void*)ptr, 0, size); #ifdef PERL_TRACK_MEMPOOL { struct perl_memory_debug_header *const header = (struct perl_memory_debug_header *)ptr; header->interpreter = aTHX; /* Link us into the list. */ header->prev = &PL_memory_debug_header; header->next = PL_memory_debug_header.next; PL_memory_debug_header.next = header; header->next->prev = header; # ifdef PERL_POISON header->size = size; # endif ptr = (Malloc_t)((char*)ptr+sTHX); } #endif return ptr; } else if (PL_nomemok) return NULL; return write_no_mem(); } /* These must be defined when not using Perl's malloc for binary * compatibility */ #ifndef MYMALLOC Malloc_t Perl_malloc (MEM_SIZE nbytes) { dTHXs; return (Malloc_t)PerlMem_malloc(nbytes); } Malloc_t Perl_calloc (MEM_SIZE elements, MEM_SIZE size) { dTHXs; return (Malloc_t)PerlMem_calloc(elements, size); } Malloc_t Perl_realloc (Malloc_t where, MEM_SIZE nbytes) { dTHXs; return (Malloc_t)PerlMem_realloc(where, nbytes); } Free_t Perl_mfree (Malloc_t where) { dTHXs; PerlMem_free(where); } #endif /* copy a string up to some (non-backslashed) delimiter, if any */ char * Perl_delimcpy(pTHX_ register char *to, register const char *toend, register const char *from, register const char *fromend, register int delim, I32 *retlen) { register I32 tolen; PERL_UNUSED_CONTEXT; for (tolen = 0; from < fromend; from++, tolen++) { if (*from == '\\') { if (from[1] != delim) { if (to < toend) *to++ = *from; tolen++; } from++; } else if (*from == delim) break; if (to < toend) *to++ = *from; } if (to < toend) *to = '\0'; *retlen = tolen; return (char *)from; } /* return ptr to little string in big string, NULL if not found */ /* This routine was donated by Corey Satten. */ char * Perl_instr(pTHX_ register const char *big, register const char *little) { register I32 first; PERL_UNUSED_CONTEXT; if (!little) return (char*)big; first = *little++; if (!first) return (char*)big; while (*big) { register const char *s, *x; if (*big++ != first) continue; for (x=big,s=little; *s; /**/ ) { if (!*x) return NULL; if (*s != *x) break; else { s++; x++; } } if (!*s) return (char*)(big-1); } return NULL; } /* same as instr but allow embedded nulls */ char * Perl_ninstr(pTHX_ const char *big, const char *bigend, const char *little, const char *lend) { PERL_UNUSED_CONTEXT; if (little >= lend) return (char*)big; { char first = *little++; const char *s, *x; bigend -= lend - little; OUTER: while (big <= bigend) { if (*big++ != first) goto OUTER; for (x=big,s=little; s < lend; x++,s++) { if (*s != *x) goto OUTER; } return (char*)(big-1); } } return NULL; } /* reverse of the above--find last substring */ char * Perl_rninstr(pTHX_ register const char *big, const char *bigend, const char *little, const char *lend) { register const char *bigbeg; register const I32 first = *little; register const char * const littleend = lend; PERL_UNUSED_CONTEXT; if (little >= littleend) return (char*)bigend; bigbeg = big; big = bigend - (littleend - little++); while (big >= bigbeg) { register const char *s, *x; if (*big-- != first) continue; for (x=big+2,s=little; s < littleend; /**/ ) { if (*s != *x) break; else { x++; s++; } } if (s >= littleend) return (char*)(big+1); } return NULL; } #define FBM_TABLE_OFFSET 2 /* Number of bytes between EOS and table*/ /* As a space optimization, we do not compile tables for strings of length 0 and 1, and for strings of length 2 unless FBMcf_TAIL. These are special-cased in fbm_instr(). If FBMcf_TAIL, the table is created as if the string has a trailing \n. */ /* =head1 Miscellaneous Functions =for apidoc fbm_compile Analyses the string in order to make fast searches on it using fbm_instr() -- the Boyer-Moore algorithm. =cut */ void Perl_fbm_compile(pTHX_ SV *sv, U32 flags) { dVAR; register const U8 *s; register U32 i; STRLEN len; I32 rarest = 0; U32 frequency = 256; if (flags & FBMcf_TAIL) { MAGIC * const mg = SvUTF8(sv) && SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_utf8) : NULL; sv_catpvs(sv, "\n"); /* Taken into account in fbm_instr() */ if (mg && mg->mg_len >= 0) mg->mg_len++; } s = (U8*)SvPV_force_mutable(sv, len); SvUPGRADE(sv, SVt_PVBM); if (len == 0) /* TAIL might be on a zero-length string. */ return; if (len > 2) { const unsigned char *sb; const U8 mlen = (len>255) ? 255 : (U8)len; register U8 *table; Sv_Grow(sv, len + 256 + FBM_TABLE_OFFSET); table = (unsigned char*)(SvPVX_mutable(sv) + len + FBM_TABLE_OFFSET); s = table - 1 - FBM_TABLE_OFFSET; /* last char */ memset((void*)table, mlen, 256); table[-1] = (U8)flags; i = 0; sb = s - mlen + 1; /* first char (maybe) */ while (s >= sb) { if (table[*s] == mlen) table[*s] = (U8)i; s--, i++; } } sv_magic(sv, NULL, PERL_MAGIC_bm, NULL, 0); /* deep magic */ SvVALID_on(sv); s = (const unsigned char*)(SvPVX_const(sv)); /* deeper magic */ for (i = 0; i < len; i++) { if (PL_freq[s[i]] < frequency) { rarest = i; frequency = PL_freq[s[i]]; } } BmRARE(sv) = s[rarest]; BmPREVIOUS(sv) = (U16)rarest; BmUSEFUL(sv) = 100; /* Initial value */ if (flags & FBMcf_TAIL) SvTAIL_on(sv); DEBUG_r(PerlIO_printf(Perl_debug_log, "rarest char %c at %d\n", BmRARE(sv),BmPREVIOUS(sv))); } /* If SvTAIL(littlestr), it has a fake '\n' at end. */ /* If SvTAIL is actually due to \Z or \z, this gives false positives if multiline */ /* =for apidoc fbm_instr Returns the location of the SV in the string delimited by C and C. It returns C if the string can't be found. The C does not have to be fbm_compiled, but the search will not be as fast then. =cut */ char * Perl_fbm_instr(pTHX_ unsigned char *big, register unsigned char *bigend, SV *littlestr, U32 flags) { register unsigned char *s; STRLEN l; register const unsigned char *little = (const unsigned char *)SvPV_const(littlestr,l); register STRLEN littlelen = l; register const I32 multiline = flags & FBMrf_MULTILINE; if ((STRLEN)(bigend - big) < littlelen) { if ( SvTAIL(littlestr) && ((STRLEN)(bigend - big) == littlelen - 1) && (littlelen == 1 || (*big == *little && memEQ((char *)big, (char *)little, littlelen - 1)))) return (char*)big; return NULL; } if (littlelen <= 2) { /* Special-cased */ if (littlelen == 1) { if (SvTAIL(littlestr) && !multiline) { /* Anchor only! */ /* Know that bigend != big. */ if (bigend[-1] == '\n') return (char *)(bigend - 1); return (char *) bigend; } s = big; while (s < bigend) { if (*s == *little) return (char *)s; s++; } if (SvTAIL(littlestr)) return (char *) bigend; return NULL; } if (!littlelen) return (char*)big; /* Cannot be SvTAIL! */ /* littlelen is 2 */ if (SvTAIL(littlestr) && !multiline) { if (bigend[-1] == '\n' && bigend[-2] == *little) return (char*)bigend - 2; if (bigend[-1] == *little) return (char*)bigend - 1; return NULL; } { /* This should be better than FBM if c1 == c2, and almost as good otherwise: maybe better since we do less indirection. And we save a lot of memory by caching no table. */ const unsigned char c1 = little[0]; const unsigned char c2 = little[1]; s = big + 1; bigend--; if (c1 != c2) { while (s <= bigend) { if (s[0] == c2) { if (s[-1] == c1) return (char*)s - 1; s += 2; continue; } next_chars: if (s[0] == c1) { if (s == bigend) goto check_1char_anchor; if (s[1] == c2) return (char*)s; else { s++; goto next_chars; } } else s += 2; } goto check_1char_anchor; } /* Now c1 == c2 */ while (s <= bigend) { if (s[0] == c1) { if (s[-1] == c1) return (char*)s - 1; if (s == bigend) goto check_1char_anchor; if (s[1] == c1) return (char*)s; s += 3; } else s += 2; } } check_1char_anchor: /* One char and anchor! */ if (SvTAIL(littlestr) && (*bigend == *little)) return (char *)bigend; /* bigend is already decremented. */ return NULL; } if (SvTAIL(littlestr) && !multiline) { /* tail anchored? */ s = bigend - littlelen; if (s >= big && bigend[-1] == '\n' && *s == *little /* Automatically of length > 2 */ && memEQ((char*)s + 1, (char*)little + 1, littlelen - 2)) { return (char*)s; /* how sweet it is */ } if (s[1] == *little && memEQ((char*)s + 2, (char*)little + 1, littlelen - 2)) { return (char*)s + 1; /* how sweet it is */ } return NULL; } if (SvTYPE(littlestr) != SVt_PVBM || !SvVALID(littlestr)) { char * const b = ninstr((char*)big,(char*)bigend, (char*)little, (char*)little + littlelen); if (!b && SvTAIL(littlestr)) { /* Automatically multiline! */ /* Chop \n from littlestr: */ s = bigend - littlelen + 1; if (*s == *little && memEQ((char*)s + 1, (char*)little + 1, littlelen - 2)) { return (char*)s; } return NULL; } return b; } { /* Do actual FBM. */ register const unsigned char * const table = little + littlelen + FBM_TABLE_OFFSET; register const unsigned char *oldlittle; if (littlelen > (STRLEN)(bigend - big)) return NULL; --littlelen; /* Last char found by table lookup */ s = big + littlelen; little += littlelen; /* last char */ oldlittle = little; if (s < bigend) { register I32 tmp; top2: if ((tmp = table[*s])) { if ((s += tmp) < bigend) goto top2; goto check_end; } else { /* less expensive than calling strncmp() */ register unsigned char * const olds = s; tmp = littlelen; while (tmp--) { if (*--s == *--little) continue; s = olds + 1; /* here we pay the price for failure */ little = oldlittle; if (s < bigend) /* fake up continue to outer loop */ goto top2; goto check_end; } return (char *)s; } } check_end: if ( s == bigend && (table[-1] & FBMcf_TAIL) && memEQ((char *)(bigend - littlelen), (char *)(oldlittle - littlelen), littlelen) ) return (char*)bigend - littlelen; return NULL; } } /* start_shift, end_shift are positive quantities which give offsets of ends of some substring of bigstr. If "last" we want the last occurrence. old_posp is the way of communication between consequent calls if the next call needs to find the . The initial *old_posp should be -1. Note that we take into account SvTAIL, so one can get extra optimizations if _ALL flag is set. */ /* If SvTAIL is actually due to \Z or \z, this gives false positives if PL_multiline. In fact if !PL_multiline the authoritative answer is not supported yet. */ char * Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_posp, I32 last) { dVAR; register const unsigned char *big; register I32 pos; register I32 previous; register I32 first; register const unsigned char *little; register I32 stop_pos; register const unsigned char *littleend; I32 found = 0; if (*old_posp == -1 ? (pos = PL_screamfirst[BmRARE(littlestr)]) < 0 : (((pos = *old_posp), pos += PL_screamnext[pos]) == 0)) { cant_find: if ( BmRARE(littlestr) == '\n' && BmPREVIOUS(littlestr) == SvCUR(littlestr) - 1) { little = (const unsigned char *)(SvPVX_const(littlestr)); littleend = little + SvCUR(littlestr); first = *little++; goto check_tail; } return NULL; } little = (const unsigned char *)(SvPVX_const(littlestr)); littleend = little + SvCUR(littlestr); first = *little++; /* The value of pos we can start at: */ previous = BmPREVIOUS(littlestr); big = (const unsigned char *)(SvPVX_const(bigstr)); /* The value of pos we can stop at: */ stop_pos = SvCUR(bigstr) - end_shift - (SvCUR(littlestr) - 1 - previous); if (previous + start_shift > stop_pos) { /* stop_pos does not include SvTAIL in the count, so this check is incorrect (I think) - see [ID 20010618.006] and t/op/study.t. HVDS 2001/06/19 */ #if 0 if (previous + start_shift == stop_pos + 1) /* A fake '\n'? */ goto check_tail; #endif return NULL; } while (pos < previous + start_shift) { if (!(pos += PL_screamnext[pos])) goto cant_find; } big -= previous; do { register const unsigned char *s, *x; if (pos >= stop_pos) break; if (big[pos] != first) continue; for (x=big+pos+1,s=little; s < littleend; /**/ ) { if (*s++ != *x++) { s--; break; } } if (s == littleend) { *old_posp = pos; if (!last) return (char *)(big+pos); found = 1; } } while ( pos += PL_screamnext[pos] ); if (last && found) return (char *)(big+(*old_posp)); check_tail: if (!SvTAIL(littlestr) || (end_shift > 0)) return NULL; /* Ignore the trailing "\n". This code is not microoptimized */ big = (const unsigned char *)(SvPVX_const(bigstr) + SvCUR(bigstr)); stop_pos = littleend - little; /* Actual littlestr len */ if (stop_pos == 0) return (char*)big; big -= stop_pos; if (*big == first && ((stop_pos == 1) || memEQ((char *)(big + 1), (char *)little, stop_pos - 1))) return (char*)big; return NULL; } I32 Perl_ibcmp(pTHX_ const char *s1, const char *s2, register I32 len) { register const U8 *a = (const U8 *)s1; register const U8 *b = (const U8 *)s2; PERL_UNUSED_CONTEXT; while (len--) { if (*a != *b && *a != PL_fold[*b]) return 1; a++,b++; } return 0; } I32 Perl_ibcmp_locale(pTHX_ const char *s1, const char *s2, register I32 len) { dVAR; register const U8 *a = (const U8 *)s1; register const U8 *b = (const U8 *)s2; PERL_UNUSED_CONTEXT; while (len--) { if (*a != *b && *a != PL_fold_locale[*b]) return 1; a++,b++; } return 0; } /* copy a string to a safe spot */ /* =head1 Memory Management =for apidoc savepv Perl's version of C. Returns a pointer to a newly allocated string which is a duplicate of C. The size of the string is determined by C. The memory allocated for the new string can be freed with the C function. =cut */ char * Perl_savepv(pTHX_ const char *pv) { PERL_UNUSED_CONTEXT; if (!pv) return NULL; else { char *newaddr; const STRLEN pvlen = strlen(pv)+1; Newx(newaddr, pvlen, char); return (char*)memcpy(newaddr, pv, pvlen); } } /* same thing but with a known length */ /* =for apidoc savepvn Perl's version of what C would be if it existed. Returns a pointer to a newly allocated string which is a duplicate of the first C bytes from C, plus a trailing NUL byte. The memory allocated for the new string can be freed with the C function. =cut */ char * Perl_savepvn(pTHX_ const char *pv, register I32 len) { register char *newaddr; PERL_UNUSED_CONTEXT; Newx(newaddr,len+1,char); /* Give a meaning to NULL pointer mainly for the use in sv_magic() */ if (pv) { /* might not be null terminated */ newaddr[len] = '\0'; return (char *) CopyD(pv,newaddr,len,char); } else { return (char *) ZeroD(newaddr,len+1,char); } } /* =for apidoc savesharedpv A version of C which allocates the duplicate string in memory which is shared between threads. =cut */ char * Perl_savesharedpv(pTHX_ const char *pv) { register char *newaddr; STRLEN pvlen; if (!pv) return NULL; pvlen = strlen(pv)+1; newaddr = (char*)PerlMemShared_malloc(pvlen); if (!newaddr) { return write_no_mem(); } return (char*)memcpy(newaddr, pv, pvlen); } /* =for apidoc savesvpv A version of C/C which gets the string to duplicate from the passed in SV using C =cut */ char * Perl_savesvpv(pTHX_ SV *sv) { STRLEN len; const char * const pv = SvPV_const(sv, len); register char *newaddr; ++len; Newx(newaddr,len,char); return (char *) CopyD(pv,newaddr,len,char); } /* the SV for Perl_form() and mess() is not kept in an arena */ STATIC SV * S_mess_alloc(pTHX) { dVAR; SV *sv; XPVMG *any; if (!PL_dirty) return sv_2mortal(newSVpvs("")); if (PL_mess_sv) return PL_mess_sv; /* Create as PVMG now, to avoid any upgrading later */ Newx(sv, 1, SV); Newxz(any, 1, XPVMG); SvFLAGS(sv) = SVt_PVMG; SvANY(sv) = (void*)any; SvPV_set(sv, NULL); SvREFCNT(sv) = 1 << 30; /* practically infinite */ PL_mess_sv = sv; return sv; } #if defined(PERL_IMPLICIT_CONTEXT) char * Perl_form_nocontext(const char* pat, ...) { dTHX; char *retval; va_list args; va_start(args, pat); retval = vform(pat, &args); va_end(args); return retval; } #endif /* PERL_IMPLICIT_CONTEXT */ /* =head1 Miscellaneous Functions =for apidoc form Takes a sprintf-style format pattern and conventional (non-SV) arguments and returns the formatted string. (char *) Perl_form(pTHX_ const char* pat, ...) can be used any place a string (char *) is required: char * s = Perl_form("%d.%d",major,minor); Uses a single private buffer so if you want to format several strings you must explicitly copy the earlier strings away (and free the copies when you are done). =cut */ char * Perl_form(pTHX_ const char* pat, ...) { char *retval; va_list args; va_start(args, pat); retval = vform(pat, &args); va_end(args); return retval; } char * Perl_vform(pTHX_ const char *pat, va_list *args) { SV * const sv = mess_alloc(); sv_vsetpvfn(sv, pat, strlen(pat), args, NULL, 0, NULL); return SvPVX(sv); } #if defined(PERL_IMPLICIT_CONTEXT) SV * Perl_mess_nocontext(const char *pat, ...) { dTHX; SV *retval; va_list args; va_start(args, pat); retval = vmess(pat, &args); va_end(args); return retval; } #endif /* PERL_IMPLICIT_CONTEXT */ SV * Perl_mess(pTHX_ const char *pat, ...) { SV *retval; va_list args; va_start(args, pat); retval = vmess(pat, &args); va_end(args); return retval; } STATIC const COP* S_closest_cop(pTHX_ const COP *cop, const OP *o) { dVAR; /* Look for PL_op starting from o. cop is the last COP we've seen. */ if (!o || o == PL_op) return cop; if (o->op_flags & OPf_KIDS) { const OP *kid; for (kid = cUNOPo->op_first; kid; kid = kid->op_sibling) { const COP *new_cop; /* If the OP_NEXTSTATE has been optimised away we can still use it * the get the file and line number. */ if (kid->op_type == OP_NULL && kid->op_targ == OP_NEXTSTATE) cop = (const COP *)kid; /* Keep searching, and return when we've found something. */ new_cop = closest_cop(cop, kid); if (new_cop) return new_cop; } } /* Nothing found. */ return NULL; } SV * Perl_vmess(pTHX_ const char *pat, va_list *args) { dVAR; SV * const sv = mess_alloc(); sv_vsetpvfn(sv, pat, strlen(pat), args, NULL, 0, NULL); if (!SvCUR(sv) || *(SvEND(sv) - 1) != '\n') { /* * Try and find the file and line for PL_op. This will usually be * PL_curcop, but it might be a cop that has been optimised away. We * can try to find such a cop by searching through the optree starting * from the sibling of PL_curcop. */ const COP *cop = closest_cop(PL_curcop, PL_curcop->op_sibling); if (!cop) cop = PL_curcop; if (CopLINE(cop)) Perl_sv_catpvf(aTHX_ sv, " at %s line %"IVdf, OutCopFILE(cop), (IV)CopLINE(cop)); if (GvIO(PL_last_in_gv) && IoLINES(GvIOp(PL_last_in_gv))) { const bool line_mode = (RsSIMPLE(PL_rs) && SvCUR(PL_rs) == 1 && *SvPVX_const(PL_rs) == '\n'); Perl_sv_catpvf(aTHX_ sv, ", <%s> %s %"IVdf, PL_last_in_gv == PL_argvgv ? "" : GvNAME(PL_last_in_gv), line_mode ? "line" : "chunk", (IV)IoLINES(GvIOp(PL_last_in_gv))); } if (PL_dirty) sv_catpvs(sv, " during global destruction"); sv_catpvs(sv, ".\n"); } return sv; } void Perl_write_to_stderr(pTHX_ const char* message, int msglen) { dVAR; IO *io; MAGIC *mg; if (PL_stderrgv && SvREFCNT(PL_stderrgv) && (io = GvIO(PL_stderrgv)) && (mg = SvTIED_mg((SV*)io, PERL_MAGIC_tiedscalar))) { dSP; ENTER; SAVETMPS; save_re_context(); SAVESPTR(PL_stderrgv); PL_stderrgv = NULL; PUSHSTACKi(PERLSI_MAGIC); PUSHMARK(SP); EXTEND(SP,2); PUSHs(SvTIED_obj((SV*)io, mg)); PUSHs(sv_2mortal(newSVpvn(message, msglen))); PUTBACK; call_method("PRINT", G_SCALAR); POPSTACK; FREETMPS; LEAVE; } else { #ifdef USE_SFIO /* SFIO can really mess with your errno */ const int e = errno; #endif PerlIO * const serr = Perl_error_log; PERL_WRITE_MSG_TO_CONSOLE(serr, message, msglen); (void)PerlIO_flush(serr); #ifdef USE_SFIO errno = e; #endif } } /* Common code used by vcroak, vdie, vwarn and vwarner */ STATIC bool S_vdie_common(pTHX_ const char *message, STRLEN msglen, I32 utf8, bool warn) { dVAR; HV *stash; GV *gv; CV *cv; SV **const hook = warn ? &PL_warnhook : &PL_diehook; /* sv_2cv might call Perl_croak() or Perl_warner() */ SV * const oldhook = *hook; assert(oldhook); ENTER; SAVESPTR(*hook); *hook = NULL; cv = sv_2cv(oldhook, &stash, &gv, 0); LEAVE; if (cv && !CvDEPTH(cv) && (CvROOT(cv) || CvXSUB(cv))) { dSP; SV *msg; ENTER; save_re_context(); if (warn) { SAVESPTR(*hook); *hook = NULL; } if (warn || message) { msg = newSVpvn(message, msglen); SvFLAGS(msg) |= utf8; SvREADONLY_on(msg); SAVEFREESV(msg); } else { msg = ERRSV; } PUSHSTACKi(warn ? PERLSI_WARNHOOK : PERLSI_DIEHOOK); PUSHMARK(SP); XPUSHs(msg); PUTBACK; call_sv((SV*)cv, G_DISCARD); POPSTACK; LEAVE; return TRUE; } return FALSE; } STATIC const char * S_vdie_croak_common(pTHX_ const char* pat, va_list* args, STRLEN* msglen, I32* utf8) { dVAR; const char *message; if (pat) { SV * const msv = vmess(pat, args); if (PL_errors && SvCUR(PL_errors)) { sv_catsv(PL_errors, msv); message = SvPV_const(PL_errors, *msglen); SvCUR_set(PL_errors, 0); } else message = SvPV_const(msv,*msglen); *utf8 = SvUTF8(msv); } else { message = NULL; } DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: die/croak: message = %s\ndiehook = %p\n", thr, message, PL_diehook)); if (PL_diehook) { S_vdie_common(aTHX_ message, *msglen, *utf8, FALSE); } return message; } OP * Perl_vdie(pTHX_ const char* pat, va_list *args) { dVAR; const char *message; const int was_in_eval = PL_in_eval; STRLEN msglen; I32 utf8 = 0; DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: die: curstack = %p, mainstack = %p\n", thr, PL_curstack, PL_mainstack)); message = vdie_croak_common(pat, args, &msglen, &utf8); PL_restartop = die_where(message, msglen); SvFLAGS(ERRSV) |= utf8; DEBUG_S(PerlIO_printf(Perl_debug_log, "%p: die: restartop = %p, was_in_eval = %d, top_env = %p\n", thr, PL_restartop, was_in_eval, PL_top_env)); if ((!PL_restartop && was_in_eval) || PL_top_env->je_prev) JMPENV_JUMP(3); return PL_restartop; } #if defined(PERL_IMPLICIT_CONTEXT) OP * Perl_die_nocontext(const char* pat, ...) { dTHX; OP *o; va_list args; va_start(args, pat); o = vdie(pat, &args); va_end(args); return o; } #endif /* PERL_IMPLICIT_CONTEXT */ OP * Perl_die(pTHX_ const char* pat, ...) { OP *o; va_list args; va_start(args, pat); o = vdie(pat, &args); va_end(args); return o; } void Perl_vcroak(pTHX_ const char* pat, va_list *args) { dVAR; const char *message; STRLEN msglen; I32 utf8 = 0; message = S_vdie_croak_common(aTHX_ pat, args, &msglen, &utf8); if (PL_in_eval) { PL_restartop = die_where(message, msglen); SvFLAGS(ERRSV) |= utf8; JMPENV_JUMP(3); } else if (!message) message = SvPVx_const(ERRSV, msglen); write_to_stderr(message, msglen); my_failure_exit(); } #if defined(PERL_IMPLICIT_CONTEXT) void Perl_croak_nocontext(const char *pat, ...) { dTHX; va_list args; va_start(args, pat); vcroak(pat, &args); /* NOTREACHED */ va_end(args); } #endif /* PERL_IMPLICIT_CONTEXT */ /* =head1 Warning and Dieing =for apidoc croak This is the XSUB-writer's interface to Perl's C function. Normally call this function the same way you call the C C function. Calling C returns control directly to Perl, sidestepping the normal C order of execution. See C. If you want to throw an exception object, assign the object to C<$@> and then pass C to croak(): errsv = get_sv("@", TRUE); sv_setsv(errsv, exception_object); croak(NULL); =cut */ void Perl_croak(pTHX_ const char *pat, ...) { va_list args; va_start(args, pat); vcroak(pat, &args); /* NOTREACHED */ va_end(args); } void Perl_vwarn(pTHX_ const char* pat, va_list *args) { dVAR; STRLEN msglen; SV * const msv = vmess(pat, args); const I32 utf8 = SvUTF8(msv); const char * const message = SvPV_const(msv, msglen); if (PL_warnhook) { if (vdie_common(message, msglen, utf8, TRUE)) return; } write_to_stderr(message, msglen); } #if defined(PERL_IMPLICIT_CONTEXT) void Perl_warn_nocontext(const char *pat, ...) { dTHX; va_list args; va_start(args, pat); vwarn(pat, &args); va_end(args); } #endif /* PERL_IMPLICIT_CONTEXT */ /* =for apidoc warn This is the XSUB-writer's interface to Perl's C function. Call this function the same way you call the C C function. See C. =cut */ void Perl_warn(pTHX_ const char *pat, ...) { va_list args; va_start(args, pat); vwarn(pat, &args); va_end(args); } #if defined(PERL_IMPLICIT_CONTEXT) void Perl_warner_nocontext(U32 err, const char *pat, ...) { dTHX; va_list args; va_start(args, pat); vwarner(err, pat, &args); va_end(args); } #endif /* PERL_IMPLICIT_CONTEXT */ void Perl_warner(pTHX_ U32 err, const char* pat,...) { va_list args; va_start(args, pat); vwarner(err, pat, &args); va_end(args); } void Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args) { dVAR; if (PL_warnhook == PERL_WARNHOOK_FATAL || ckDEAD(err)) { SV * const msv = vmess(pat, args); STRLEN msglen; const char * const message = SvPV_const(msv, msglen); const I32 utf8 = SvUTF8(msv); if (PL_diehook) { assert(message); S_vdie_common(aTHX_ message, msglen, utf8, FALSE); } if (PL_in_eval) { PL_restartop = die_where(message, msglen); SvFLAGS(ERRSV) |= utf8; JMPENV_JUMP(3); } write_to_stderr(message, msglen); my_failure_exit(); } else { Perl_vwarn(aTHX_ pat, args); } } /* implements the ckWARN? macros */ bool Perl_ckwarn(pTHX_ U32 w) { dVAR; return ( isLEXWARN_on && PL_curcop->cop_warnings != pWARN_NONE && ( PL_curcop->cop_warnings == pWARN_ALL || isWARN_on(PL_curcop->cop_warnings, unpackWARN1(w)) || (unpackWARN2(w) && isWARN_on(PL_curcop->cop_warnings, unpackWARN2(w))) || (unpackWARN3(w) && isWARN_on(PL_curcop->cop_warnings, unpackWARN3(w))) || (unpackWARN4(w) && isWARN_on(PL_curcop->cop_warnings, unpackWARN4(w))) ) ) || ( isLEXWARN_off && PL_dowarn & G_WARN_ON ) ; } /* implements the ckWARN?_d macro */ bool Perl_ckwarn_d(pTHX_ U32 w) { dVAR; return isLEXWARN_off || PL_curcop->cop_warnings == pWARN_ALL || ( PL_curcop->cop_warnings != pWARN_NONE && ( isWARN_on(PL_curcop->cop_warnings, unpackWARN1(w)) || (unpackWARN2(w) && isWARN_on(PL_curcop->cop_warnings, unpackWARN2(w))) || (unpackWARN3(w) && isWARN_on(PL_curcop->cop_warnings, unpackWARN3(w))) || (unpackWARN4(w) && isWARN_on(PL_curcop->cop_warnings, unpackWARN4(w))) ) ) ; } /* Set buffer=NULL to get a new one. */ STRLEN * Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, STRLEN size) { const MEM_SIZE len_wanted = sizeof(STRLEN) + size; PERL_UNUSED_CONTEXT; buffer = (STRLEN*) (specialWARN(buffer) ? PerlMemShared_malloc(len_wanted) : PerlMemShared_realloc(buffer, len_wanted)); buffer[0] = size; Copy(bits, (buffer + 1), size, char); return buffer; } /* since we've already done strlen() for both nam and val * we can use that info to make things faster than * sprintf(s, "%s=%s", nam, val) */ #define my_setenv_format(s, nam, nlen, val, vlen) \ Copy(nam, s, nlen, char); \ *(s+nlen) = '='; \ Copy(val, s+(nlen+1), vlen, char); \ *(s+(nlen+1+vlen)) = '\0' #ifdef USE_ENVIRON_ARRAY /* VMS' my_setenv() is in vms.c */ #if !defined(WIN32) && !defined(NETWARE) void Perl_my_setenv(pTHX_ const char *nam, const char *val) { dVAR; #ifdef USE_ITHREADS /* only parent thread can modify process environment */ if (PL_curinterp == aTHX) #endif { #ifndef PERL_USE_SAFE_PUTENV if (!PL_use_safe_putenv) { /* most putenv()s leak, so we manipulate environ directly */ register I32 i=setenv_getix(nam); /* where does it go? */ int nlen, vlen; if (environ == PL_origenviron) { /* need we copy environment? */ I32 j; I32 max; char **tmpenv; max = i; while (environ[max]) max++; tmpenv = (char**)safesysmalloc((max+2) * sizeof(char*)); for (j=0; j= 0) retries++; return retries ? 0 : -1; } #endif /* this is a drop-in replacement for bcopy() */ #if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) char * Perl_my_bcopy(register const char *from,register char *to,register I32 len) { char * const retval = to; if (from - to >= 0) { while (len--) *to++ = *from++; } else { to += len; from += len; while (len--) *(--to) = *(--from); } return retval; } #endif /* this is a drop-in replacement for memset() */ #ifndef HAS_MEMSET void * Perl_my_memset(register char *loc, register I32 ch, register I32 len) { char * const retval = loc; while (len--) *loc++ = ch; return retval; } #endif /* this is a drop-in replacement for bzero() */ #if !defined(HAS_BZERO) && !defined(HAS_MEMSET) char * Perl_my_bzero(register char *loc, register I32 len) { char * const retval = loc; while (len--) *loc++ = 0; return retval; } #endif /* this is a drop-in replacement for memcmp() */ #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) I32 Perl_my_memcmp(const char *s1, const char *s2, register I32 len) { register const U8 *a = (const U8 *)s1; register const U8 *b = (const U8 *)s2; register I32 tmp; while (len--) { if ((tmp = *a++ - *b++)) return tmp; } return 0; } #endif /* !HAS_MEMCMP || !HAS_SANE_MEMCMP */ #ifndef HAS_VPRINTF #ifdef USE_CHAR_VSPRINTF char * #else int #endif vsprintf(char *dest, const char *pat, char *args) { FILE fakebuf; fakebuf._ptr = dest; fakebuf._cnt = 32767; #ifndef _IOSTRG #define _IOSTRG 0 #endif fakebuf._flag = _IOWRT|_IOSTRG; _doprnt(pat, args, &fakebuf); /* what a kludge */ (void)putc('\0', &fakebuf); #ifdef USE_CHAR_VSPRINTF return(dest); #else return 0; /* perl doesn't use return value */ #endif } #endif /* HAS_VPRINTF */ #ifdef MYSWAP #if BYTEORDER != 0x4321 short Perl_my_swap(pTHX_ short s) { #if (BYTEORDER & 1) == 0 short result; result = ((s & 255) << 8) + ((s >> 8) & 255); return result; #else return s; #endif } long Perl_my_htonl(pTHX_ long l) { union { long result; char c[sizeof(long)]; } u; #if BYTEORDER == 0x1234 u.c[0] = (l >> 24) & 255; u.c[1] = (l >> 16) & 255; u.c[2] = (l >> 8) & 255; u.c[3] = l & 255; return u.result; #else #if ((BYTEORDER - 0x1111) & 0x444) || !(BYTEORDER & 0xf) Perl_croak(aTHX_ "Unknown BYTEORDER\n"); #else register I32 o; register I32 s; for (o = BYTEORDER - 0x1111, s = 0; s < (sizeof(long)*8); o >>= 4, s += 8) { u.c[o & 0xf] = (l >> s) & 255; } return u.result; #endif #endif } long Perl_my_ntohl(pTHX_ long l) { union { long l; char c[sizeof(long)]; } u; #if BYTEORDER == 0x1234 u.c[0] = (l >> 24) & 255; u.c[1] = (l >> 16) & 255; u.c[2] = (l >> 8) & 255; u.c[3] = l & 255; return u.l; #else #if ((BYTEORDER - 0x1111) & 0x444) || !(BYTEORDER & 0xf) Perl_croak(aTHX_ "Unknown BYTEORDER\n"); #else register I32 o; register I32 s; u.l = l; l = 0; for (o = BYTEORDER - 0x1111, s = 0; s < (sizeof(long)*8); o >>= 4, s += 8) { l |= (u.c[o & 0xf] & 255) << s; } return l; #endif #endif } #endif /* BYTEORDER != 0x4321 */ #endif /* MYSWAP */ /* * Little-endian byte order functions - 'v' for 'VAX', or 'reVerse'. * If these functions are defined, * the BYTEORDER is neither 0x1234 nor 0x4321. * However, this is not assumed. * -DWS */ #define HTOLE(name,type) \ type \ name (register type n) \ { \ union { \ type value; \ char c[sizeof(type)]; \ } u; \ register U32 i; \ register U32 s = 0; \ for (i = 0; i < sizeof(u.c); i++, s += 8) { \ u.c[i] = (n >> s) & 0xFF; \ } \ return u.value; \ } #define LETOH(name,type) \ type \ name (register type n) \ { \ union { \ type value; \ char c[sizeof(type)]; \ } u; \ register U32 i; \ register U32 s = 0; \ u.value = n; \ n = 0; \ for (i = 0; i < sizeof(u.c); i++, s += 8) { \ n |= ((type)(u.c[i] & 0xFF)) << s; \ } \ return n; \ } /* * Big-endian byte order functions. */ #define HTOBE(name,type) \ type \ name (register type n) \ { \ union { \ type value; \ char c[sizeof(type)]; \ } u; \ register U32 i; \ register U32 s = 8*(sizeof(u.c)-1); \ for (i = 0; i < sizeof(u.c); i++, s -= 8) { \ u.c[i] = (n >> s) & 0xFF; \ } \ return u.value; \ } #define BETOH(name,type) \ type \ name (register type n) \ { \ union { \ type value; \ char c[sizeof(type)]; \ } u; \ register U32 i; \ register U32 s = 8*(sizeof(u.c)-1); \ u.value = n; \ n = 0; \ for (i = 0; i < sizeof(u.c); i++, s -= 8) { \ n |= ((type)(u.c[i] & 0xFF)) << s; \ } \ return n; \ } /* * If we just can't do it... */ #define NOT_AVAIL(name,type) \ type \ name (register type n) \ { \ Perl_croak_nocontext(#name "() not available"); \ return n; /* not reached */ \ } #if defined(HAS_HTOVS) && !defined(htovs) HTOLE(htovs,short) #endif #if defined(HAS_HTOVL) && !defined(htovl) HTOLE(htovl,long) #endif #if defined(HAS_VTOHS) && !defined(vtohs) LETOH(vtohs,short) #endif #if defined(HAS_VTOHL) && !defined(vtohl) LETOH(vtohl,long) #endif #ifdef PERL_NEED_MY_HTOLE16 # if U16SIZE == 2 HTOLE(Perl_my_htole16,U16) # else NOT_AVAIL(Perl_my_htole16,U16) # endif #endif #ifdef PERL_NEED_MY_LETOH16 # if U16SIZE == 2 LETOH(Perl_my_letoh16,U16) # else NOT_AVAIL(Perl_my_letoh16,U16) # endif #endif #ifdef PERL_NEED_MY_HTOBE16 # if U16SIZE == 2 HTOBE(Perl_my_htobe16,U16) # else NOT_AVAIL(Perl_my_htobe16,U16) # endif #endif #ifdef PERL_NEED_MY_BETOH16 # if U16SIZE == 2 BETOH(Perl_my_betoh16,U16) # else NOT_AVAIL(Perl_my_betoh16,U16) # endif #endif #ifdef PERL_NEED_MY_HTOLE32 # if U32SIZE == 4 HTOLE(Perl_my_htole32,U32) # else NOT_AVAIL(Perl_my_htole32,U32) # endif #endif #ifdef PERL_NEED_MY_LETOH32 # if U32SIZE == 4 LETOH(Perl_my_letoh32,U32) # else NOT_AVAIL(Perl_my_letoh32,U32) # endif #endif #ifdef PERL_NEED_MY_HTOBE32 # if U32SIZE == 4 HTOBE(Perl_my_htobe32,U32) # else NOT_AVAIL(Perl_my_htobe32,U32) # endif #endif #ifdef PERL_NEED_MY_BETOH32 # if U32SIZE == 4 BETOH(Perl_my_betoh32,U32) # else NOT_AVAIL(Perl_my_betoh32,U32) # endif #endif #ifdef PERL_NEED_MY_HTOLE64 # if U64SIZE == 8 HTOLE(Perl_my_htole64,U64) # else NOT_AVAIL(Perl_my_htole64,U64) # endif #endif #ifdef PERL_NEED_MY_LETOH64 # if U64SIZE == 8 LETOH(Perl_my_letoh64,U64) # else NOT_AVAIL(Perl_my_letoh64,U64) # endif #endif #ifdef PERL_NEED_MY_HTOBE64 # if U64SIZE == 8 HTOBE(Perl_my_htobe64,U64) # else NOT_AVAIL(Perl_my_htobe64,U64) # endif #endif #ifdef PERL_NEED_MY_BETOH64 # if U64SIZE == 8 BETOH(Perl_my_betoh64,U64) # else NOT_AVAIL(Perl_my_betoh64,U64) # endif #endif #ifdef PERL_NEED_MY_HTOLES HTOLE(Perl_my_htoles,short) #endif #ifdef PERL_NEED_MY_LETOHS LETOH(Perl_my_letohs,short) #endif #ifdef PERL_NEED_MY_HTOBES HTOBE(Perl_my_htobes,short) #endif #ifdef PERL_NEED_MY_BETOHS BETOH(Perl_my_betohs,short) #endif #ifdef PERL_NEED_MY_HTOLEI HTOLE(Perl_my_htolei,int) #endif #ifdef PERL_NEED_MY_LETOHI LETOH(Perl_my_letohi,int) #endif #ifdef PERL_NEED_MY_HTOBEI HTOBE(Perl_my_htobei,int) #endif #ifdef PERL_NEED_MY_BETOHI BETOH(Perl_my_betohi,int) #endif #ifdef PERL_NEED_MY_HTOLEL HTOLE(Perl_my_htolel,long) #endif #ifdef PERL_NEED_MY_LETOHL LETOH(Perl_my_letohl,long) #endif #ifdef PERL_NEED_MY_HTOBEL HTOBE(Perl_my_htobel,long) #endif #ifdef PERL_NEED_MY_BETOHL BETOH(Perl_my_betohl,long) #endif void Perl_my_swabn(void *ptr, int n) { register char *s = (char *)ptr; register char *e = s + (n-1); register char tc; for (n /= 2; n > 0; s++, e--, n--) { tc = *s; *s = *e; *e = tc; } } PerlIO * Perl_my_popen_list(pTHX_ char *mode, int n, SV **args) { #if (!defined(DOSISH) || defined(HAS_FORK) || defined(AMIGAOS)) && !defined(OS2) && !defined(VMS) && !defined(__OPEN_VM) && !defined(EPOC) && !defined(MACOS_TRADITIONAL) && !defined(NETWARE) dVAR; int p[2]; register I32 This, that; register Pid_t pid; SV *sv; I32 did_pipes = 0; int pp[2]; PERL_FLUSHALL_FOR_CHILD; This = (*mode == 'w'); that = !This; if (PL_tainting) { taint_env(); taint_proper("Insecure %s%s", "EXEC"); } if (PerlProc_pipe(p) < 0) return NULL; /* Try for another pipe pair for error return */ if (PerlProc_pipe(pp) >= 0) did_pipes = 1; while ((pid = PerlProc_fork()) < 0) { if (errno != EAGAIN) { PerlLIO_close(p[This]); PerlLIO_close(p[that]); if (did_pipes) { PerlLIO_close(pp[0]); PerlLIO_close(pp[1]); } return NULL; } sleep(5); } if (pid == 0) { /* Child */ #undef THIS #undef THAT #define THIS that #define THAT This /* Close parent's end of error status pipe (if any) */ if (did_pipes) { PerlLIO_close(pp[0]); #if defined(HAS_FCNTL) && defined(F_SETFD) /* Close error pipe automatically if exec works */ fcntl(pp[1], F_SETFD, FD_CLOEXEC); #endif } /* Now dup our end of _the_ pipe to right position */ if (p[THIS] != (*mode == 'r')) { PerlLIO_dup2(p[THIS], *mode == 'r'); PerlLIO_close(p[THIS]); if (p[THAT] != (*mode == 'r')) /* if dup2() didn't close it */ PerlLIO_close(p[THAT]); /* close parent's end of _the_ pipe */ } else PerlLIO_close(p[THAT]); /* close parent's end of _the_ pipe */ #if !defined(HAS_FCNTL) || !defined(F_SETFD) /* No automatic close - do it by hand */ # ifndef NOFILE # define NOFILE 20 # endif { int fd; for (fd = PL_maxsysfd + 1; fd < NOFILE; fd++) { if (fd != pp[1]) PerlLIO_close(fd); } } #endif do_aexec5(NULL, args-1, args-1+n, pp[1], did_pipes); PerlProc__exit(1); #undef THIS #undef THAT } /* Parent */ do_execfree(); /* free any memory malloced by child on fork */ if (did_pipes) PerlLIO_close(pp[1]); /* Keep the lower of the two fd numbers */ if (p[that] < p[This]) { PerlLIO_dup2(p[This], p[that]); PerlLIO_close(p[This]); p[This] = p[that]; } else PerlLIO_close(p[that]); /* close child's end of pipe */ LOCK_FDPID_MUTEX; sv = *av_fetch(PL_fdpid,p[This],TRUE); UNLOCK_FDPID_MUTEX; SvUPGRADE(sv,SVt_IV); SvIV_set(sv, pid); PL_forkprocess = pid; /* If we managed to get status pipe check for exec fail */ if (did_pipes && pid > 0) { int errkid; unsigned n = 0; SSize_t n1; while (n < sizeof(int)) { n1 = PerlLIO_read(pp[0], (void*)(((char*)&errkid)+n), (sizeof(int)) - n); if (n1 <= 0) break; n += n1; } PerlLIO_close(pp[0]); did_pipes = 0; if (n) { /* Error */ int pid2, status; PerlLIO_close(p[This]); if (n != sizeof(int)) Perl_croak(aTHX_ "panic: kid popen errno read"); do { pid2 = wait4pid(pid, &status, 0); } while (pid2 == -1 && errno == EINTR); errno = errkid; /* Propagate errno from kid */ return NULL; } } if (did_pipes) PerlLIO_close(pp[0]); return PerlIO_fdopen(p[This], mode); #else Perl_croak(aTHX_ "List form of piped open not implemented"); return (PerlIO *) NULL; #endif } /* VMS' my_popen() is in VMS.c, same with OS/2. */ #if (!defined(DOSISH) || defined(HAS_FORK) || defined(AMIGAOS)) && !defined(VMS) && !defined(__OPEN_VM) && !defined(EPOC) && !defined(MACOS_TRADITIONAL) PerlIO * Perl_my_popen(pTHX_ const char *cmd, const char *mode) { dVAR; int p[2]; register I32 This, that; register Pid_t pid; SV *sv; const I32 doexec = !(*cmd == '-' && cmd[1] == '\0'); I32 did_pipes = 0; int pp[2]; PERL_FLUSHALL_FOR_CHILD; #ifdef OS2 if (doexec) { return my_syspopen(aTHX_ cmd,mode); } #endif This = (*mode == 'w'); that = !This; if (doexec && PL_tainting) { taint_env(); taint_proper("Insecure %s%s", "EXEC"); } if (PerlProc_pipe(p) < 0) return NULL; if (doexec && PerlProc_pipe(pp) >= 0) did_pipes = 1; while ((pid = PerlProc_fork()) < 0) { if (errno != EAGAIN) { PerlLIO_close(p[This]); PerlLIO_close(p[that]); if (did_pipes) { PerlLIO_close(pp[0]); PerlLIO_close(pp[1]); } if (!doexec) Perl_croak(aTHX_ "Can't fork"); return NULL; } sleep(5); } if (pid == 0) { GV* tmpgv; #undef THIS #undef THAT #define THIS that #define THAT This if (did_pipes) { PerlLIO_close(pp[0]); #if defined(HAS_FCNTL) && defined(F_SETFD) fcntl(pp[1], F_SETFD, FD_CLOEXEC); #endif } if (p[THIS] != (*mode == 'r')) { PerlLIO_dup2(p[THIS], *mode == 'r'); PerlLIO_close(p[THIS]); if (p[THAT] != (*mode == 'r')) /* if dup2() didn't close it */ PerlLIO_close(p[THAT]); } else PerlLIO_close(p[THAT]); #ifndef OS2 if (doexec) { #if !defined(HAS_FCNTL) || !defined(F_SETFD) #ifndef NOFILE #define NOFILE 20 #endif { int fd; for (fd = PL_maxsysfd + 1; fd < NOFILE; fd++) if (fd != pp[1]) PerlLIO_close(fd); } #endif /* may or may not use the shell */ do_exec3(cmd, pp[1], did_pipes); PerlProc__exit(1); } #endif /* defined OS2 */ if ((tmpgv = gv_fetchpvs("$", GV_ADD|GV_NOTQUAL, SVt_PV))) { SvREADONLY_off(GvSV(tmpgv)); sv_setiv(GvSV(tmpgv), PerlProc_getpid()); SvREADONLY_on(GvSV(tmpgv)); } #ifdef THREADS_HAVE_PIDS PL_ppid = (IV)getppid(); #endif PL_forkprocess = 0; #ifdef PERL_USES_PL_PIDSTATUS hv_clear(PL_pidstatus); /* we have no children */ #endif return NULL; #undef THIS #undef THAT } do_execfree(); /* free any memory malloced by child on vfork */ if (did_pipes) PerlLIO_close(pp[1]); if (p[that] < p[This]) { PerlLIO_dup2(p[This], p[that]); PerlLIO_close(p[This]); p[This] = p[that]; } else PerlLIO_close(p[that]); LOCK_FDPID_MUTEX; sv = *av_fetch(PL_fdpid,p[This],TRUE); UNLOCK_FDPID_MUTEX; SvUPGRADE(sv,SVt_IV); SvIV_set(sv, pid); PL_forkprocess = pid; if (did_pipes && pid > 0) { int errkid; unsigned n = 0; SSize_t n1; while (n < sizeof(int)) { n1 = PerlLIO_read(pp[0], (void*)(((char*)&errkid)+n), (sizeof(int)) - n); if (n1 <= 0) break; n += n1; } PerlLIO_close(pp[0]); did_pipes = 0; if (n) { /* Error */ int pid2, status; PerlLIO_close(p[This]); if (n != sizeof(int)) Perl_croak(aTHX_ "panic: kid popen errno read"); do { pid2 = wait4pid(pid, &status, 0); } while (pid2 == -1 && errno == EINTR); errno = errkid; /* Propagate errno from kid */ return NULL; } } if (did_pipes) PerlLIO_close(pp[0]); return PerlIO_fdopen(p[This], mode); } #else #if defined(atarist) || defined(EPOC) FILE *popen(); PerlIO * Perl_my_popen(pTHX_ char *cmd, char *mode) { PERL_FLUSHALL_FOR_CHILD; /* Call system's popen() to get a FILE *, then import it. used 0 for 2nd parameter to PerlIO_importFILE; apparently not used */ return PerlIO_importFILE(popen(cmd, mode), 0); } #else #if defined(DJGPP) FILE *djgpp_popen(); PerlIO * Perl_my_popen(pTHX_ char *cmd, char *mode) { PERL_FLUSHALL_FOR_CHILD; /* Call system's popen() to get a FILE *, then import it. used 0 for 2nd parameter to PerlIO_importFILE; apparently not used */ return PerlIO_importFILE(djgpp_popen(cmd, mode), 0); } #endif #endif #endif /* !DOSISH */ /* this is called in parent before the fork() */ void Perl_atfork_lock(void) { dVAR; #if defined(USE_ITHREADS) /* locks must be held in locking order (if any) */ # ifdef MYMALLOC MUTEX_LOCK(&PL_malloc_mutex); # endif OP_REFCNT_LOCK; #endif } /* this is called in both parent and child after the fork() */ void Perl_atfork_unlock(void) { dVAR; #if defined(USE_ITHREADS) /* locks must be released in same order as in atfork_lock() */ # ifdef MYMALLOC MUTEX_UNLOCK(&PL_malloc_mutex); # endif OP_REFCNT_UNLOCK; #endif } Pid_t Perl_my_fork(void) { #if defined(HAS_FORK) Pid_t pid; #if defined(USE_ITHREADS) && !defined(HAS_PTHREAD_ATFORK) atfork_lock(); pid = fork(); atfork_unlock(); #else /* atfork_lock() and atfork_unlock() are installed as pthread_atfork() * handlers elsewhere in the code */ pid = fork(); #endif return pid; #else /* this "canna happen" since nothing should be calling here if !HAS_FORK */ Perl_croak_nocontext("fork() not available"); return 0; #endif /* HAS_FORK */ } #ifdef DUMP_FDS void Perl_dump_fds(pTHX_ char *s) { int fd; Stat_t tmpstatbuf; PerlIO_printf(Perl_debug_log,"%s", s); for (fd = 0; fd < 32; fd++) { if (PerlLIO_fstat(fd,&tmpstatbuf) >= 0) PerlIO_printf(Perl_debug_log," %d",fd); } PerlIO_printf(Perl_debug_log,"\n"); return; } #endif /* DUMP_FDS */ #ifndef HAS_DUP2 int dup2(int oldfd, int newfd) { #if defined(HAS_FCNTL) && defined(F_DUPFD) if (oldfd == newfd) return oldfd; PerlLIO_close(newfd); return fcntl(oldfd, F_DUPFD, newfd); #else #define DUP2_MAX_FDS 256 int fdtmp[DUP2_MAX_FDS]; I32 fdx = 0; int fd; if (oldfd == newfd) return oldfd; PerlLIO_close(newfd); /* good enough for low fd's... */ while ((fd = PerlLIO_dup(oldfd)) != newfd && fd >= 0) { if (fdx >= DUP2_MAX_FDS) { PerlLIO_close(fd); fd = -1; break; } fdtmp[fdx++] = fd; } while (fdx > 0) PerlLIO_close(fdtmp[--fdx]); return fd; #endif } #endif #ifndef PERL_MICRO #ifdef HAS_SIGACTION #ifdef MACOS_TRADITIONAL /* We don't want restart behavior on MacOS */ #undef SA_RESTART #endif Sighandler_t Perl_rsignal(pTHX_ int signo, Sighandler_t handler) { dVAR; struct sigaction act, oact; #ifdef USE_ITHREADS /* only "parent" interpreter can diddle signals */ if (PL_curinterp != aTHX) return (Sighandler_t) SIG_ERR; #endif act.sa_handler = (void(*)(int))handler; sigemptyset(&act.sa_mask); act.sa_flags = 0; #ifdef SA_RESTART if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */ #endif #if defined(SA_NOCLDWAIT) && !defined(BSDish) /* See [perl #18849] */ if (signo == SIGCHLD && handler == (Sighandler_t) SIG_IGN) act.sa_flags |= SA_NOCLDWAIT; #endif if (sigaction(signo, &act, &oact) == -1) return (Sighandler_t) SIG_ERR; else return (Sighandler_t) oact.sa_handler; } Sighandler_t Perl_rsignal_state(pTHX_ int signo) { struct sigaction oact; PERL_UNUSED_CONTEXT; if (sigaction(signo, (struct sigaction *)NULL, &oact) == -1) return (Sighandler_t) SIG_ERR; else return (Sighandler_t) oact.sa_handler; } int Perl_rsignal_save(pTHX_ int signo, Sighandler_t handler, Sigsave_t *save) { dVAR; struct sigaction act; #ifdef USE_ITHREADS /* only "parent" interpreter can diddle signals */ if (PL_curinterp != aTHX) return -1; #endif act.sa_handler = (void(*)(int))handler; sigemptyset(&act.sa_mask); act.sa_flags = 0; #ifdef SA_RESTART if (PL_signals & PERL_SIGNALS_UNSAFE_FLAG) act.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */ #endif #if defined(SA_NOCLDWAIT) && !defined(BSDish) /* See [perl #18849] */ if (signo == SIGCHLD && handler == (Sighandler_t) SIG_IGN) act.sa_flags |= SA_NOCLDWAIT; #endif return sigaction(signo, &act, save); } int Perl_rsignal_restore(pTHX_ int signo, Sigsave_t *save) { dVAR; #ifdef USE_ITHREADS /* only "parent" interpreter can diddle signals */ if (PL_curinterp != aTHX) return -1; #endif return sigaction(signo, save, (struct sigaction *)NULL); } #else /* !HAS_SIGACTION */ Sighandler_t Perl_rsignal(pTHX_ int signo, Sighandler_t handler) { #if defined(USE_ITHREADS) && !defined(WIN32) /* only "parent" interpreter can diddle signals */ if (PL_curinterp != aTHX) return (Sighandler_t) SIG_ERR; #endif return PerlProc_signal(signo, handler); } static Signal_t sig_trap(int signo) { dVAR; PL_sig_trapped++; } Sighandler_t Perl_rsignal_state(pTHX_ int signo) { dVAR; Sighandler_t oldsig; #if defined(USE_ITHREADS) && !defined(WIN32) /* only "parent" interpreter can diddle signals */ if (PL_curinterp != aTHX) return (Sighandler_t) SIG_ERR; #endif PL_sig_trapped = 0; oldsig = PerlProc_signal(signo, sig_trap); PerlProc_signal(signo, oldsig); if (PL_sig_trapped) PerlProc_kill(PerlProc_getpid(), signo); return oldsig; } int Perl_rsignal_save(pTHX_ int signo, Sighandler_t handler, Sigsave_t *save) { #if defined(USE_ITHREADS) && !defined(WIN32) /* only "parent" interpreter can diddle signals */ if (PL_curinterp != aTHX) return -1; #endif *save = PerlProc_signal(signo, handler); return (*save == (Sighandler_t) SIG_ERR) ? -1 : 0; } int Perl_rsignal_restore(pTHX_ int signo, Sigsave_t *save) { #if defined(USE_ITHREADS) && !defined(WIN32) /* only "parent" interpreter can diddle signals */ if (PL_curinterp != aTHX) return -1; #endif return (PerlProc_signal(signo, *save) == (Sighandler_t) SIG_ERR) ? -1 : 0; } #endif /* !HAS_SIGACTION */ #endif /* !PERL_MICRO */ /* VMS' my_pclose() is in VMS.c; same with OS/2 */ #if (!defined(DOSISH) || defined(HAS_FORK) || defined(AMIGAOS)) && !defined(VMS) && !defined(__OPEN_VM) && !defined(EPOC) && !defined(MACOS_TRADITIONAL) I32 Perl_my_pclose(pTHX_ PerlIO *ptr) { dVAR; Sigsave_t hstat, istat, qstat; int status; SV **svp; Pid_t pid; Pid_t pid2; bool close_failed; int saved_errno = 0; #ifdef WIN32 int saved_win32_errno; #endif LOCK_FDPID_MUTEX; svp = av_fetch(PL_fdpid,PerlIO_fileno(ptr),TRUE); UNLOCK_FDPID_MUTEX; pid = (SvTYPE(*svp) == SVt_IV) ? SvIVX(*svp) : -1; SvREFCNT_dec(*svp); *svp = &PL_sv_undef; #ifdef OS2 if (pid == -1) { /* Opened by popen. */ return my_syspclose(ptr); } #endif if ((close_failed = (PerlIO_close(ptr) == EOF))) { saved_errno = errno; #ifdef WIN32 saved_win32_errno = GetLastError(); #endif } #ifdef UTS if(PerlProc_kill(pid, 0) < 0) { return(pid); } /* HOM 12/23/91 */ #endif #ifndef PERL_MICRO rsignal_save(SIGHUP, (Sighandler_t) SIG_IGN, &hstat); rsignal_save(SIGINT, (Sighandler_t) SIG_IGN, &istat); rsignal_save(SIGQUIT, (Sighandler_t) SIG_IGN, &qstat); #endif do { pid2 = wait4pid(pid, &status, 0); } while (pid2 == -1 && errno == EINTR); #ifndef PERL_MICRO rsignal_restore(SIGHUP, &hstat); rsignal_restore(SIGINT, &istat); rsignal_restore(SIGQUIT, &qstat); #endif if (close_failed) { SETERRNO(saved_errno, 0); return -1; } return(pid2 < 0 ? pid2 : status == 0 ? 0 : (errno = 0, status)); } #endif /* !DOSISH */ #if (!defined(DOSISH) || defined(OS2) || defined(WIN32) || defined(NETWARE)) && !defined(MACOS_TRADITIONAL) I32 Perl_wait4pid(pTHX_ Pid_t pid, int *statusp, int flags) { dVAR; I32 result = 0; if (!pid) return -1; #ifdef PERL_USES_PL_PIDSTATUS { if (pid > 0) { /* The keys in PL_pidstatus are now the raw 4 (or 8) bytes of the pid, rather than a string form. */ SV * const * const svp = hv_fetch(PL_pidstatus,(const char*) &pid,sizeof(Pid_t),FALSE); if (svp && *svp != &PL_sv_undef) { *statusp = SvIVX(*svp); (void)hv_delete(PL_pidstatus,(const char*) &pid,sizeof(Pid_t), G_DISCARD); return pid; } } else { HE *entry; hv_iterinit(PL_pidstatus); if ((entry = hv_iternext(PL_pidstatus))) { SV * const sv = hv_iterval(PL_pidstatus,entry); I32 len; const char * const spid = hv_iterkey(entry,&len); assert (len == sizeof(Pid_t)); memcpy((char *)&pid, spid, len); *statusp = SvIVX(sv); /* The hash iterator is currently on this entry, so simply calling hv_delete would trigger the lazy delete, which on aggregate does more work, beacuse next call to hv_iterinit() would spot the flag, and have to call the delete routine, while in the meantime any new entries can't re-use that memory. */ hv_iterinit(PL_pidstatus); (void)hv_delete(PL_pidstatus,spid,len,G_DISCARD); return pid; } } } #endif #ifdef HAS_WAITPID # ifdef HAS_WAITPID_RUNTIME if (!HAS_WAITPID_RUNTIME) goto hard_way; # endif result = PerlProc_waitpid(pid,statusp,flags); goto finish; #endif #if !defined(HAS_WAITPID) && defined(HAS_WAIT4) result = wait4((pid==-1)?0:pid,statusp,flags,NULL); goto finish; #endif #ifdef PERL_USES_PL_PIDSTATUS #if defined(HAS_WAITPID) && defined(HAS_WAITPID_RUNTIME) hard_way: #endif { if (flags) Perl_croak(aTHX_ "Can't do waitpid with flags"); else { while ((result = PerlProc_wait(statusp)) != pid && pid > 0 && result >= 0) pidgone(result,*statusp); if (result < 0) *statusp = -1; } } #endif #if defined(HAS_WAITPID) || defined(HAS_WAIT4) finish: #endif if (result < 0 && errno == EINTR) { PERL_ASYNC_CHECK(); } return result; } #endif /* !DOSISH || OS2 || WIN32 || NETWARE */ #ifdef PERL_USES_PL_PIDSTATUS void Perl_pidgone(pTHX_ Pid_t pid, int status) { register SV *sv; sv = *hv_fetch(PL_pidstatus,(const char*)&pid,sizeof(Pid_t),TRUE); SvUPGRADE(sv,SVt_IV); SvIV_set(sv, status); return; } #endif #if defined(atarist) || defined(OS2) || defined(EPOC) int pclose(); #ifdef HAS_FORK int /* Cannot prototype with I32 in os2ish.h. */ my_syspclose(PerlIO *ptr) #else I32 Perl_my_pclose(pTHX_ PerlIO *ptr) #endif { /* Needs work for PerlIO ! */ FILE * const f = PerlIO_findFILE(ptr); const I32 result = pclose(f); PerlIO_releaseFILE(ptr,f); return result; } #endif #if defined(DJGPP) int djgpp_pclose(); I32 Perl_my_pclose(pTHX_ PerlIO *ptr) { /* Needs work for PerlIO ! */ FILE * const f = PerlIO_findFILE(ptr); I32 result = djgpp_pclose(f); result = (result << 8) & 0xff00; PerlIO_releaseFILE(ptr,f); return result; } #endif void Perl_repeatcpy(pTHX_ register char *to, register const char *from, I32 len, register I32 count) { register I32 todo; register const char * const frombase = from; PERL_UNUSED_CONTEXT; if (len == 1) { register const char c = *from; while (count-- > 0) *to++ = c; return; } while (count-- > 0) { for (todo = len; todo > 0; todo--) { *to++ = *from++; } from = frombase; } } #ifndef HAS_RENAME I32 Perl_same_dirent(pTHX_ const char *a, const char *b) { char *fa = strrchr(a,'/'); char *fb = strrchr(b,'/'); Stat_t tmpstatbuf1; Stat_t tmpstatbuf2; SV * const tmpsv = sv_newmortal(); if (fa) fa++; else fa = a; if (fb) fb++; else fb = b; if (strNE(a,b)) return FALSE; if (fa == a) sv_setpvn(tmpsv, ".", 1); else sv_setpvn(tmpsv, a, fa - a); if (PerlLIO_stat(SvPVX_const(tmpsv), &tmpstatbuf1) < 0) return FALSE; if (fb == b) sv_setpvn(tmpsv, ".", 1); else sv_setpvn(tmpsv, b, fb - b); if (PerlLIO_stat(SvPVX_const(tmpsv), &tmpstatbuf2) < 0) return FALSE; return tmpstatbuf1.st_dev == tmpstatbuf2.st_dev && tmpstatbuf1.st_ino == tmpstatbuf2.st_ino; } #endif /* !HAS_RENAME */ char* Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char *const *const search_ext, I32 flags) { dVAR; const char *xfound = NULL; char *xfailed = NULL; char tmpbuf[MAXPATHLEN]; register char *s; I32 len = 0; int retval; #if defined(DOSISH) && !defined(OS2) && !defined(atarist) # define SEARCH_EXTS ".bat", ".cmd", NULL # define MAX_EXT_LEN 4 #endif #ifdef OS2 # define SEARCH_EXTS ".cmd", ".btm", ".bat", ".pl", NULL # define MAX_EXT_LEN 4 #endif #ifdef VMS # define SEARCH_EXTS ".pl", ".com", NULL # define MAX_EXT_LEN 4 #endif /* additional extensions to try in each dir if scriptname not found */ #ifdef SEARCH_EXTS static const char *const exts[] = { SEARCH_EXTS }; const char *const *const ext = search_ext ? search_ext : exts; int extidx = 0, i = 0; const char *curext = NULL; #else PERL_UNUSED_ARG(search_ext); # define MAX_EXT_LEN 0 #endif /* * If dosearch is true and if scriptname does not contain path * delimiters, search the PATH for scriptname. * * If SEARCH_EXTS is also defined, will look for each * scriptname{SEARCH_EXTS} whenever scriptname is not found * while searching the PATH. * * Assuming SEARCH_EXTS is C<".foo",".bar",NULL>, PATH search * proceeds as follows: * If DOSISH or VMSISH: * + look for ./scriptname{,.foo,.bar} * + search the PATH for scriptname{,.foo,.bar} * * If !DOSISH: * + look *only* in the PATH for scriptname{,.foo,.bar} (note * this will not look in '.' if it's not in the PATH) */ tmpbuf[0] = '\0'; #ifdef VMS # ifdef ALWAYS_DEFTYPES len = strlen(scriptname); if (!(len == 1 && *scriptname == '-') && scriptname[len-1] != ':') { int idx = 0, deftypes = 1; bool seen_dot = 1; const int hasdir = !dosearch || (strpbrk(scriptname,":[= sizeof tmpbuf) continue; /* don't search dir with too-long name */ my_strlcat(tmpbuf, scriptname, sizeof(tmpbuf)); #else /* !VMS */ #ifdef DOSISH if (strEQ(scriptname, "-")) dosearch = 0; if (dosearch) { /* Look in '.' first. */ const char *cur = scriptname; #ifdef SEARCH_EXTS if ((curext = strrchr(scriptname,'.'))) /* possible current ext */ while (ext[i]) if (strEQ(ext[i++],curext)) { extidx = -1; /* already has an ext */ break; } do { #endif DEBUG_p(PerlIO_printf(Perl_debug_log, "Looking for %s\n",cur)); if (PerlLIO_stat(cur,&PL_statbuf) >= 0 && !S_ISDIR(PL_statbuf.st_mode)) { dosearch = 0; scriptname = cur; #ifdef SEARCH_EXTS break; #endif } #ifdef SEARCH_EXTS if (cur == scriptname) { len = strlen(scriptname); if (len+MAX_EXT_LEN+1 >= sizeof(tmpbuf)) break; my_strlcpy(tmpbuf, scriptname, sizeof(tmpbuf)); cur = tmpbuf; } } while (extidx >= 0 && ext[extidx] /* try an extension? */ && my_strlcpy(tmpbuf+len, ext[extidx++], sizeof(tmpbuf) - len)); #endif } #endif #ifdef MACOS_TRADITIONAL if (dosearch && !strchr(scriptname, ':') && (s = PerlEnv_getenv("Commands"))) #else if (dosearch && !strchr(scriptname, '/') #ifdef DOSISH && !strchr(scriptname, '\\') #endif && (s = PerlEnv_getenv("PATH"))) #endif { bool seen_dot = 0; PL_bufend = s + strlen(s); while (s < PL_bufend) { #ifdef MACOS_TRADITIONAL s = delimcpy(tmpbuf, tmpbuf + sizeof tmpbuf, s, PL_bufend, ',', &len); #else #if defined(atarist) || defined(DOSISH) for (len = 0; *s # ifdef atarist && *s != ',' # endif && *s != ';'; len++, s++) { if (len < sizeof tmpbuf) tmpbuf[len] = *s; } if (len < sizeof tmpbuf) tmpbuf[len] = '\0'; #else /* ! (atarist || DOSISH) */ s = delimcpy(tmpbuf, tmpbuf + sizeof tmpbuf, s, PL_bufend, ':', &len); #endif /* ! (atarist || DOSISH) */ #endif /* MACOS_TRADITIONAL */ if (s < PL_bufend) s++; if (len + 1 + strlen(scriptname) + MAX_EXT_LEN >= sizeof tmpbuf) continue; /* don't search dir with too-long name */ #ifdef MACOS_TRADITIONAL if (len && tmpbuf[len - 1] != ':') tmpbuf[len++] = ':'; #else if (len # if defined(atarist) || defined(__MINT__) || defined(DOSISH) && tmpbuf[len - 1] != '/' && tmpbuf[len - 1] != '\\' # endif ) tmpbuf[len++] = '/'; if (len == 2 && tmpbuf[0] == '.') seen_dot = 1; #endif (void)my_strlcpy(tmpbuf + len, scriptname, sizeof(tmpbuf) - len); #endif /* !VMS */ #ifdef SEARCH_EXTS len = strlen(tmpbuf); if (extidx > 0) /* reset after previous loop */ extidx = 0; do { #endif DEBUG_p(PerlIO_printf(Perl_debug_log, "Looking for %s\n",tmpbuf)); retval = PerlLIO_stat(tmpbuf,&PL_statbuf); if (S_ISDIR(PL_statbuf.st_mode)) { retval = -1; } #ifdef SEARCH_EXTS } while ( retval < 0 /* not there */ && extidx>=0 && ext[extidx] /* try an extension? */ && my_strlcpy(tmpbuf+len, ext[extidx++], sizeof(tmpbuf) - len) ); #endif if (retval < 0) continue; if (S_ISREG(PL_statbuf.st_mode) && cando(S_IRUSR,TRUE,&PL_statbuf) #if !defined(DOSISH) && !defined(MACOS_TRADITIONAL) && cando(S_IXUSR,TRUE,&PL_statbuf) #endif ) { xfound = tmpbuf; /* bingo! */ break; } if (!xfailed) xfailed = savepv(tmpbuf); } #ifndef DOSISH if (!xfound && !seen_dot && !xfailed && (PerlLIO_stat(scriptname,&PL_statbuf) < 0 || S_ISDIR(PL_statbuf.st_mode))) #endif seen_dot = 1; /* Disable message. */ if (!xfound) { if (flags & 1) { /* do or die? */ Perl_croak(aTHX_ "Can't %s %s%s%s", (xfailed ? "execute" : "find"), (xfailed ? xfailed : scriptname), (xfailed ? "" : " on PATH"), (xfailed || seen_dot) ? "" : ", '.' not in PATH"); } scriptname = NULL; } Safefree(xfailed); scriptname = xfound; } return (scriptname ? savepv(scriptname) : NULL); } #ifndef PERL_GET_CONTEXT_DEFINED void * Perl_get_context(void) { dVAR; #if defined(USE_ITHREADS) # ifdef OLD_PTHREADS_API pthread_addr_t t; if (pthread_getspecific(PL_thr_key, &t)) Perl_croak_nocontext("panic: pthread_getspecific"); return (void*)t; # else # ifdef I_MACH_CTHREADS return (void*)cthread_data(cthread_self()); # else return (void*)PTHREAD_GETSPECIFIC(PL_thr_key); # endif # endif #else return (void*)NULL; #endif } void Perl_set_context(void *t) { dVAR; #if defined(USE_ITHREADS) # ifdef I_MACH_CTHREADS cthread_set_data(cthread_self(), t); # else if (pthread_setspecific(PL_thr_key, t)) Perl_croak_nocontext("panic: pthread_setspecific"); # endif #else PERL_UNUSED_ARG(t); #endif } #endif /* !PERL_GET_CONTEXT_DEFINED */ #if defined(PERL_GLOBAL_STRUCT) && !defined(PERL_GLOBAL_STRUCT_PRIVATE) struct perl_vars * Perl_GetVars(pTHX) { return &PL_Vars; } #endif char ** Perl_get_op_names(pTHX) { PERL_UNUSED_CONTEXT; return (char **)PL_op_name; } char ** Perl_get_op_descs(pTHX) { PERL_UNUSED_CONTEXT; return (char **)PL_op_desc; } const char * Perl_get_no_modify(pTHX) { PERL_UNUSED_CONTEXT; return PL_no_modify; } U32 * Perl_get_opargs(pTHX) { PERL_UNUSED_CONTEXT; return (U32 *)PL_opargs; } PPADDR_t* Perl_get_ppaddr(pTHX) { dVAR; PERL_UNUSED_CONTEXT; return (PPADDR_t*)PL_ppaddr; } #ifndef HAS_GETENV_LEN char * Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len) { char * const env_trans = PerlEnv_getenv(env_elem); PERL_UNUSED_CONTEXT; if (env_trans) *len = strlen(env_trans); return env_trans; } #endif MGVTBL* Perl_get_vtbl(pTHX_ int vtbl_id) { const MGVTBL* result; PERL_UNUSED_CONTEXT; switch(vtbl_id) { case want_vtbl_sv: result = &PL_vtbl_sv; break; case want_vtbl_env: result = &PL_vtbl_env; break; case want_vtbl_envelem: result = &PL_vtbl_envelem; break; case want_vtbl_sig: result = &PL_vtbl_sig; break; case want_vtbl_sigelem: result = &PL_vtbl_sigelem; break; case want_vtbl_pack: result = &PL_vtbl_pack; break; case want_vtbl_packelem: result = &PL_vtbl_packelem; break; case want_vtbl_dbline: result = &PL_vtbl_dbline; break; case want_vtbl_isa: result = &PL_vtbl_isa; break; case want_vtbl_isaelem: result = &PL_vtbl_isaelem; break; case want_vtbl_arylen: result = &PL_vtbl_arylen; break; case want_vtbl_mglob: result = &PL_vtbl_mglob; break; case want_vtbl_nkeys: result = &PL_vtbl_nkeys; break; case want_vtbl_taint: result = &PL_vtbl_taint; break; case want_vtbl_substr: result = &PL_vtbl_substr; break; case want_vtbl_vec: result = &PL_vtbl_vec; break; case want_vtbl_pos: result = &PL_vtbl_pos; break; case want_vtbl_bm: result = &PL_vtbl_bm; break; case want_vtbl_fm: result = &PL_vtbl_fm; break; case want_vtbl_uvar: result = &PL_vtbl_uvar; break; case want_vtbl_defelem: result = &PL_vtbl_defelem; break; case want_vtbl_regexp: result = &PL_vtbl_regexp; break; case want_vtbl_regdata: result = &PL_vtbl_regdata; break; case want_vtbl_regdatum: result = &PL_vtbl_regdatum; break; #ifdef USE_LOCALE_COLLATE case want_vtbl_collxfrm: result = &PL_vtbl_collxfrm; break; #endif case want_vtbl_amagic: result = &PL_vtbl_amagic; break; case want_vtbl_amagicelem: result = &PL_vtbl_amagicelem; break; case want_vtbl_backref: result = &PL_vtbl_backref; break; case want_vtbl_utf8: result = &PL_vtbl_utf8; break; default: result = NULL; break; } return (MGVTBL*)result; } I32 Perl_my_fflush_all(pTHX) { #if defined(USE_PERLIO) || defined(FFLUSH_NULL) || defined(USE_SFIO) return PerlIO_flush(NULL); #else # if defined(HAS__FWALK) extern int fflush(FILE *); /* undocumented, unprototyped, but very useful BSDism */ extern void _fwalk(int (*)(FILE *)); _fwalk(&fflush); return 0; # else # if defined(FFLUSH_ALL) && defined(HAS_STDIO_STREAM_ARRAY) long open_max = -1; # ifdef PERL_FFLUSH_ALL_FOPEN_MAX open_max = PERL_FFLUSH_ALL_FOPEN_MAX; # else # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX) open_max = sysconf(_SC_OPEN_MAX); # else # ifdef FOPEN_MAX open_max = FOPEN_MAX; # else # ifdef OPEN_MAX open_max = OPEN_MAX; # else # ifdef _NFILE open_max = _NFILE; # endif # endif # endif # endif # endif if (open_max > 0) { long i; for (i = 0; i < open_max; i++) if (STDIO_STREAM_ARRAY[i]._file >= 0 && STDIO_STREAM_ARRAY[i]._file < open_max && STDIO_STREAM_ARRAY[i]._flag) PerlIO_flush(&STDIO_STREAM_ARRAY[i]); return 0; } # endif SETERRNO(EBADF,RMS_IFI); return EOF; # endif #endif } void Perl_report_evil_fh(pTHX_ const GV *gv, const IO *io, I32 op) { const char * const name = gv && isGV(gv) ? GvENAME(gv) : NULL; if (op == OP_phoney_OUTPUT_ONLY || op == OP_phoney_INPUT_ONLY) { if (ckWARN(WARN_IO)) { const char * const direction = (const char *)((op == OP_phoney_INPUT_ONLY) ? "in" : "out"); if (name && *name) Perl_warner(aTHX_ packWARN(WARN_IO), "Filehandle %s opened only for %sput", name, direction); else Perl_warner(aTHX_ packWARN(WARN_IO), "Filehandle opened only for %sput", direction); } } else { const char *vile; I32 warn_type; if (gv && io && IoTYPE(io) == IoTYPE_CLOSED) { vile = "closed"; warn_type = WARN_CLOSED; } else { vile = "unopened"; warn_type = WARN_UNOPENED; } if (ckWARN(warn_type)) { const char * const pars = (const char *)(OP_IS_FILETEST(op) ? "" : "()"); const char * const func = (const char *) (op == OP_READLINE ? "readline" : /* "" not nice */ op == OP_LEAVEWRITE ? "write" : /* "write exit" not nice */ op < 0 ? "" : /* handle phoney cases */ PL_op_desc[op]); const char * const type = (const char *) (OP_IS_SOCKET(op) || (gv && io && IoTYPE(io) == IoTYPE_SOCKET) ? "socket" : "filehandle"); if (name && *name) { Perl_warner(aTHX_ packWARN(warn_type), "%s%s on %s %s %s", func, pars, vile, type, name); if (io && IoDIRP(io) && !(IoFLAGS(io) & IOf_FAKE_DIRP)) Perl_warner( aTHX_ packWARN(warn_type), "\t(Are you trying to call %s%s on dirhandle %s?)\n", func, pars, name ); } else { Perl_warner(aTHX_ packWARN(warn_type), "%s%s on %s %s", func, pars, vile, type); if (gv && io && IoDIRP(io) && !(IoFLAGS(io) & IOf_FAKE_DIRP)) Perl_warner( aTHX_ packWARN(warn_type), "\t(Are you trying to call %s%s on dirhandle?)\n", func, pars ); } } } } #ifdef EBCDIC /* in ASCII order, not that it matters */ static const char controllablechars[] = "?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"; int Perl_ebcdic_control(pTHX_ int ch) { if (ch > 'a') { const char *ctlp; if (islower(ch)) ch = toupper(ch); if ((ctlp = strchr(controllablechars, ch)) == 0) { Perl_die(aTHX_ "unrecognised control character '%c'\n", ch); } if (ctlp == controllablechars) return('\177'); /* DEL */ else return((unsigned char)(ctlp - controllablechars - 1)); } else { /* Want uncontrol */ if (ch == '\177' || ch == -1) return('?'); else if (ch == '\157') return('\177'); else if (ch == '\174') return('\000'); else if (ch == '^') /* '\137' in 1047, '\260' in 819 */ return('\036'); else if (ch == '\155') return('\037'); else if (0 < ch && ch < (sizeof(controllablechars) - 1)) return(controllablechars[ch+1]); else Perl_die(aTHX_ "invalid control request: '\\%03o'\n", ch & 0xFF); } } #endif /* To workaround core dumps from the uninitialised tm_zone we get the * system to give us a reasonable struct to copy. This fix means that * strftime uses the tm_zone and tm_gmtoff values returned by * localtime(time()). That should give the desired result most of the * time. But probably not always! * * This does not address tzname aspects of NETaa14816. * */ #ifdef HAS_GNULIBC # ifndef STRUCT_TM_HASZONE # define STRUCT_TM_HASZONE # endif #endif #ifdef STRUCT_TM_HASZONE /* Backward compat */ # ifndef HAS_TM_TM_ZONE # define HAS_TM_TM_ZONE # endif #endif void Perl_init_tm(pTHX_ struct tm *ptm) /* see mktime, strftime and asctime */ { #ifdef HAS_TM_TM_ZONE Time_t now; const struct tm* my_tm; (void)time(&now); my_tm = localtime(&now); if (my_tm) Copy(my_tm, ptm, 1, struct tm); #else PERL_UNUSED_ARG(ptm); #endif } /* * mini_mktime - normalise struct tm values without the localtime() * semantics (and overhead) of mktime(). */ void Perl_mini_mktime(pTHX_ struct tm *ptm) { int yearday; int secs; int month, mday, year, jday; int odd_cent, odd_year; PERL_UNUSED_CONTEXT; #define DAYS_PER_YEAR 365 #define DAYS_PER_QYEAR (4*DAYS_PER_YEAR+1) #define DAYS_PER_CENT (25*DAYS_PER_QYEAR-1) #define DAYS_PER_QCENT (4*DAYS_PER_CENT+1) #define SECS_PER_HOUR (60*60) #define SECS_PER_DAY (24*SECS_PER_HOUR) /* parentheses deliberately absent on these two, otherwise they don't work */ #define MONTH_TO_DAYS 153/5 #define DAYS_TO_MONTH 5/153 /* offset to bias by March (month 4) 1st between month/mday & year finding */ #define YEAR_ADJUST (4*MONTH_TO_DAYS+1) /* as used here, the algorithm leaves Sunday as day 1 unless we adjust it */ #define WEEKDAY_BIAS 6 /* (1+6)%7 makes Sunday 0 again */ /* * Year/day algorithm notes: * * With a suitable offset for numeric value of the month, one can find * an offset into the year by considering months to have 30.6 (153/5) days, * using integer arithmetic (i.e., with truncation). To avoid too much * messing about with leap days, we consider January and February to be * the 13th and 14th month of the previous year. After that transformation, * we need the month index we use to be high by 1 from 'normal human' usage, * so the month index values we use run from 4 through 15. * * Given that, and the rules for the Gregorian calendar (leap years are those * divisible by 4 unless also divisible by 100, when they must be divisible * by 400 instead), we can simply calculate the number of days since some * arbitrary 'beginning of time' by futzing with the (adjusted) year number, * the days we derive from our month index, and adding in the day of the * month. The value used here is not adjusted for the actual origin which * it normally would use (1 January A.D. 1), since we're not exposing it. * We're only building the value so we can turn around and get the * normalised values for the year, month, day-of-month, and day-of-year. * * For going backward, we need to bias the value we're using so that we find * the right year value. (Basically, we don't want the contribution of * March 1st to the number to apply while deriving the year). Having done * that, we 'count up' the contribution to the year number by accounting for * full quadracenturies (400-year periods) with their extra leap days, plus * the contribution from full centuries (to avoid counting in the lost leap * days), plus the contribution from full quad-years (to count in the normal * leap days), plus the leftover contribution from any non-leap years. * At this point, if we were working with an actual leap day, we'll have 0 * days left over. This is also true for March 1st, however. So, we have * to special-case that result, and (earlier) keep track of the 'odd' * century and year contributions. If we got 4 extra centuries in a qcent, * or 4 extra years in a qyear, then it's a leap day and we call it 29 Feb. * Otherwise, we add back in the earlier bias we removed (the 123 from * figuring in March 1st), find the month index (integer division by 30.6), * and the remainder is the day-of-month. We then have to convert back to * 'real' months (including fixing January and February from being 14/15 in * the previous year to being in the proper year). After that, to get * tm_yday, we work with the normalised year and get a new yearday value for * January 1st, which we subtract from the yearday value we had earlier, * representing the date we've re-built. This is done from January 1 * because tm_yday is 0-origin. * * Since POSIX time routines are only guaranteed to work for times since the * UNIX epoch (00:00:00 1 Jan 1970 UTC), the fact that this algorithm * applies Gregorian calendar rules even to dates before the 16th century * doesn't bother me. Besides, you'd need cultural context for a given * date to know whether it was Julian or Gregorian calendar, and that's * outside the scope for this routine. Since we convert back based on the * same rules we used to build the yearday, you'll only get strange results * for input which needed normalising, or for the 'odd' century years which * were leap years in the Julian calander but not in the Gregorian one. * I can live with that. * * This algorithm also fails to handle years before A.D. 1 gracefully, but * that's still outside the scope for POSIX time manipulation, so I don't * care. */ year = 1900 + ptm->tm_year; month = ptm->tm_mon; mday = ptm->tm_mday; /* allow given yday with no month & mday to dominate the result */ if (ptm->tm_yday >= 0 && mday <= 0 && month <= 0) { month = 0; mday = 0; jday = 1 + ptm->tm_yday; } else { jday = 0; } if (month >= 2) month+=2; else month+=14, year--; yearday = DAYS_PER_YEAR * year + year/4 - year/100 + year/400; yearday += month*MONTH_TO_DAYS + mday + jday; /* * Note that we don't know when leap-seconds were or will be, * so we have to trust the user if we get something which looks * like a sensible leap-second. Wild values for seconds will * be rationalised, however. */ if ((unsigned) ptm->tm_sec <= 60) { secs = 0; } else { secs = ptm->tm_sec; ptm->tm_sec = 0; } secs += 60 * ptm->tm_min; secs += SECS_PER_HOUR * ptm->tm_hour; if (secs < 0) { if (secs-(secs/SECS_PER_DAY*SECS_PER_DAY) < 0) { /* got negative remainder, but need positive time */ /* back off an extra day to compensate */ yearday += (secs/SECS_PER_DAY)-1; secs -= SECS_PER_DAY * (secs/SECS_PER_DAY - 1); } else { yearday += (secs/SECS_PER_DAY); secs -= SECS_PER_DAY * (secs/SECS_PER_DAY); } } else if (secs >= SECS_PER_DAY) { yearday += (secs/SECS_PER_DAY); secs %= SECS_PER_DAY; } ptm->tm_hour = secs/SECS_PER_HOUR; secs %= SECS_PER_HOUR; ptm->tm_min = secs/60; secs %= 60; ptm->tm_sec += secs; /* done with time of day effects */ /* * The algorithm for yearday has (so far) left it high by 428. * To avoid mistaking a legitimate Feb 29 as Mar 1, we need to * bias it by 123 while trying to figure out what year it * really represents. Even with this tweak, the reverse * translation fails for years before A.D. 0001. * It would still fail for Feb 29, but we catch that one below. */ jday = yearday; /* save for later fixup vis-a-vis Jan 1 */ yearday -= YEAR_ADJUST; year = (yearday / DAYS_PER_QCENT) * 400; yearday %= DAYS_PER_QCENT; odd_cent = yearday / DAYS_PER_CENT; year += odd_cent * 100; yearday %= DAYS_PER_CENT; year += (yearday / DAYS_PER_QYEAR) * 4; yearday %= DAYS_PER_QYEAR; odd_year = yearday / DAYS_PER_YEAR; year += odd_year; yearday %= DAYS_PER_YEAR; if (!yearday && (odd_cent==4 || odd_year==4)) { /* catch Feb 29 */ month = 1; yearday = 29; } else { yearday += YEAR_ADJUST; /* recover March 1st crock */ month = yearday*DAYS_TO_MONTH; yearday -= month*MONTH_TO_DAYS; /* recover other leap-year adjustment */ if (month > 13) { month-=14; year++; } else { month-=2; } } ptm->tm_year = year - 1900; if (yearday) { ptm->tm_mday = yearday; ptm->tm_mon = month; } else { ptm->tm_mday = 31; ptm->tm_mon = month - 1; } /* re-build yearday based on Jan 1 to get tm_yday */ year--; yearday = year*DAYS_PER_YEAR + year/4 - year/100 + year/400; yearday += 14*MONTH_TO_DAYS + 1; ptm->tm_yday = jday - yearday; /* fix tm_wday if not overridden by caller */ if ((unsigned)ptm->tm_wday > 6) ptm->tm_wday = (jday + WEEKDAY_BIAS) % 7; } char * Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst) { #ifdef HAS_STRFTIME char *buf; int buflen; struct tm mytm; int len; init_tm(&mytm); /* XXX workaround - see init_tm() above */ mytm.tm_sec = sec; mytm.tm_min = min; mytm.tm_hour = hour; mytm.tm_mday = mday; mytm.tm_mon = mon; mytm.tm_year = year; mytm.tm_wday = wday; mytm.tm_yday = yday; mytm.tm_isdst = isdst; mini_mktime(&mytm); /* use libc to get the values for tm_gmtoff and tm_zone [perl #18238] */ #if defined(HAS_MKTIME) && (defined(HAS_TM_TM_GMTOFF) || defined(HAS_TM_TM_ZONE)) STMT_START { struct tm mytm2; mytm2 = mytm; mktime(&mytm2); #ifdef HAS_TM_TM_GMTOFF mytm.tm_gmtoff = mytm2.tm_gmtoff; #endif #ifdef HAS_TM_TM_ZONE mytm.tm_zone = mytm2.tm_zone; #endif } STMT_END; #endif buflen = 64; Newx(buf, buflen, char); len = strftime(buf, buflen, fmt, &mytm); /* ** The following is needed to handle to the situation where ** tmpbuf overflows. Basically we want to allocate a buffer ** and try repeatedly. The reason why it is so complicated ** is that getting a return value of 0 from strftime can indicate ** one of the following: ** 1. buffer overflowed, ** 2. illegal conversion specifier, or ** 3. the format string specifies nothing to be returned(not ** an error). This could be because format is an empty string ** or it specifies %p that yields an empty string in some locale. ** If there is a better way to make it portable, go ahead by ** all means. */ if ((len > 0 && len < buflen) || (len == 0 && *fmt == '\0')) return buf; else { /* Possibly buf overflowed - try again with a bigger buf */ const int fmtlen = strlen(fmt); const int bufsize = fmtlen + buflen; Newx(buf, bufsize, char); while (buf) { buflen = strftime(buf, bufsize, fmt, &mytm); if (buflen > 0 && buflen < bufsize) break; /* heuristic to prevent out-of-memory errors */ if (bufsize > 100*fmtlen) { Safefree(buf); buf = NULL; break; } Renew(buf, bufsize*2, char); } return buf; } #else Perl_croak(aTHX_ "panic: no strftime"); return NULL; #endif } #define SV_CWD_RETURN_UNDEF \ sv_setsv(sv, &PL_sv_undef); \ return FALSE #define SV_CWD_ISDOT(dp) \ (dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || \ (dp->d_name[1] == '.' && dp->d_name[2] == '\0'))) /* =head1 Miscellaneous Functions =for apidoc getcwd_sv Fill the sv with current working directory =cut */ /* Originally written in Perl by John Bazik; rewritten in C by Ben Sugars. * rewritten again by dougm, optimized for use with xs TARG, and to prefer * getcwd(3) if available * Comments from the orignal: * This is a faster version of getcwd. It's also more dangerous * because you might chdir out of a directory that you can't chdir * back into. */ int Perl_getcwd_sv(pTHX_ register SV *sv) { #ifndef PERL_MICRO dVAR; #ifndef INCOMPLETE_TAINTS SvTAINTED_on(sv); #endif #ifdef HAS_GETCWD { char buf[MAXPATHLEN]; /* Some getcwd()s automatically allocate a buffer of the given * size from the heap if they are given a NULL buffer pointer. * The problem is that this behaviour is not portable. */ if (getcwd(buf, sizeof(buf) - 1)) { sv_setpv(sv, buf); return TRUE; } else { sv_setsv(sv, &PL_sv_undef); return FALSE; } } #else Stat_t statbuf; int orig_cdev, orig_cino, cdev, cino, odev, oino, tdev, tino; int pathlen=0; Direntry_t *dp; SvUPGRADE(sv, SVt_PV); if (PerlLIO_lstat(".", &statbuf) < 0) { SV_CWD_RETURN_UNDEF; } orig_cdev = statbuf.st_dev; orig_cino = statbuf.st_ino; cdev = orig_cdev; cino = orig_cino; for (;;) { DIR *dir; odev = cdev; oino = cino; if (PerlDir_chdir("..") < 0) { SV_CWD_RETURN_UNDEF; } if (PerlLIO_stat(".", &statbuf) < 0) { SV_CWD_RETURN_UNDEF; } cdev = statbuf.st_dev; cino = statbuf.st_ino; if (odev == cdev && oino == cino) { break; } if (!(dir = PerlDir_open("."))) { SV_CWD_RETURN_UNDEF; } while ((dp = PerlDir_read(dir)) != NULL) { #ifdef DIRNAMLEN const int namelen = dp->d_namlen; #else const int namelen = strlen(dp->d_name); #endif /* skip . and .. */ if (SV_CWD_ISDOT(dp)) { continue; } if (PerlLIO_lstat(dp->d_name, &statbuf) < 0) { SV_CWD_RETURN_UNDEF; } tdev = statbuf.st_dev; tino = statbuf.st_ino; if (tino == oino && tdev == odev) { break; } } if (!dp) { SV_CWD_RETURN_UNDEF; } if (pathlen + namelen + 1 >= MAXPATHLEN) { SV_CWD_RETURN_UNDEF; } SvGROW(sv, pathlen + namelen + 1); if (pathlen) { /* shift down */ Move(SvPVX_const(sv), SvPVX(sv) + namelen + 1, pathlen, char); } /* prepend current directory to the front */ *SvPVX(sv) = '/'; Move(dp->d_name, SvPVX(sv)+1, namelen, char); pathlen += (namelen + 1); #ifdef VOID_CLOSEDIR PerlDir_close(dir); #else if (PerlDir_close(dir) < 0) { SV_CWD_RETURN_UNDEF; } #endif } if (pathlen) { SvCUR_set(sv, pathlen); *SvEND(sv) = '\0'; SvPOK_only(sv); if (PerlDir_chdir(SvPVX_const(sv)) < 0) { SV_CWD_RETURN_UNDEF; } } if (PerlLIO_stat(".", &statbuf) < 0) { SV_CWD_RETURN_UNDEF; } cdev = statbuf.st_dev; cino = statbuf.st_ino; if (cdev != orig_cdev || cino != orig_cino) { Perl_croak(aTHX_ "Unstable directory path, " "current directory changed unexpectedly"); } return TRUE; #endif #else return FALSE; #endif } /* =for apidoc scan_version Returns a pointer to the next character after the parsed version string, as well as upgrading the passed in SV to an RV. Function must be called with an already existing SV like sv = newSV(0); s = scan_version(s,SV *sv, bool qv); Performs some preprocessing to the string to ensure that it has the correct characteristics of a version. Flags the object if it contains an underscore (which denotes this is a alpha version). The boolean qv denotes that the version should be interpreted as if it had multiple decimals, even if it doesn't. =cut */ const char * Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv) { const char *start; const char *pos; const char *last; int saw_period = 0; int alpha = 0; int width = 3; AV * const av = newAV(); SV * const hv = newSVrv(rv, "version"); /* create an SV and upgrade the RV */ (void)sv_upgrade(hv, SVt_PVHV); /* needs to be an HV type */ #ifndef NODEFAULT_SHAREKEYS HvSHAREKEYS_on(hv); /* key-sharing on by default */ #endif while (isSPACE(*s)) /* leading whitespace is OK */ s++; if (*s == 'v') { s++; /* get past 'v' */ qv = 1; /* force quoted version processing */ } start = last = pos = s; /* pre-scan the input string to check for decimals/underbars */ while ( *pos == '.' || *pos == '_' || isDIGIT(*pos) ) { if ( *pos == '.' ) { if ( alpha ) Perl_croak(aTHX_ "Invalid version format (underscores before decimal)"); saw_period++ ; last = pos; } else if ( *pos == '_' ) { if ( alpha ) Perl_croak(aTHX_ "Invalid version format (multiple underscores)"); alpha = 1; width = pos - last - 1; /* natural width of sub-version */ } pos++; } if ( alpha && !saw_period ) Perl_croak(aTHX_ "Invalid version format (alpha without decimal)"); if ( saw_period > 1 ) qv = 1; /* force quoted version processing */ pos = s; if ( qv ) hv_store((HV *)hv, "qv", 2, newSViv(qv), 0); if ( alpha ) hv_store((HV *)hv, "alpha", 5, newSViv(alpha), 0); if ( !qv && width < 3 ) hv_store((HV *)hv, "width", 5, newSViv(width), 0); while (isDIGIT(*pos)) pos++; if (!isALPHA(*pos)) { I32 rev; for (;;) { rev = 0; { /* this is atoi() that delimits on underscores */ const char *end = pos; I32 mult = 1; I32 orev; /* the following if() will only be true after the decimal * point of a version originally created with a bare * floating point number, i.e. not quoted in any way */ if ( !qv && s > start && saw_period == 1 ) { mult *= 100; while ( s < end ) { orev = rev; rev += (*s - '0') * mult; mult /= 10; if ( PERL_ABS(orev) > PERL_ABS(rev) ) Perl_croak(aTHX_ "Integer overflow in version"); s++; if ( *s == '_' ) s++; } } else { while (--end >= s) { orev = rev; rev += (*end - '0') * mult; mult *= 10; if ( PERL_ABS(orev) > PERL_ABS(rev) ) Perl_croak(aTHX_ "Integer overflow in version"); } } } /* Append revision */ av_push(av, newSViv(rev)); if ( *pos == '.' ) s = ++pos; else if ( *pos == '_' && isDIGIT(pos[1]) ) s = ++pos; else if ( isDIGIT(*pos) ) s = pos; else { s = pos; break; } if ( qv ) { while ( isDIGIT(*pos) ) pos++; } else { int digits = 0; while ( ( isDIGIT(*pos) || *pos == '_' ) && digits < 3 ) { if ( *pos != '_' ) digits++; pos++; } } } } if ( qv ) { /* quoted versions always get at least three terms*/ I32 len = av_len(av); /* This for loop appears to trigger a compiler bug on OS X, as it loops infinitely. Yes, len is negative. No, it makes no sense. Compiler in question is: gcc version 3.3 20030304 (Apple Computer, Inc. build 1640) for ( len = 2 - len; len > 0; len-- ) av_push((AV *)sv, newSViv(0)); */ len = 2 - len; while (len-- > 0) av_push(av, newSViv(0)); } if ( av_len(av) == -1 ) /* oops, someone forgot to pass a value */ av_push(av, newSViv(0)); /* fix RT#19517 - special case 'undef' as string */ if ( *s == 'u' && strEQ(s,"undef") ) { s += 5; } /* And finally, store the AV in the hash */ hv_store((HV *)hv, "version", 7, newRV_noinc((SV *)av), 0); return s; } /* =for apidoc new_version Returns a new version object based on the passed in SV: SV *sv = new_version(SV *ver); Does not alter the passed in ver SV. See "upg_version" if you want to upgrade the SV. =cut */ SV * Perl_new_version(pTHX_ SV *ver) { dVAR; SV * const rv = newSV(0); if ( sv_derived_from(ver,"version") ) /* can just copy directly */ { I32 key; AV * const av = newAV(); AV *sav; /* This will get reblessed later if a derived class*/ SV * const hv = newSVrv(rv, "version"); (void)sv_upgrade(hv, SVt_PVHV); /* needs to be an HV type */ #ifndef NODEFAULT_SHAREKEYS HvSHAREKEYS_on(hv); /* key-sharing on by default */ #endif if ( SvROK(ver) ) ver = SvRV(ver); /* Begin copying all of the elements */ if ( hv_exists((HV *)ver, "qv", 2) ) hv_store((HV *)hv, "qv", 2, &PL_sv_yes, 0); if ( hv_exists((HV *)ver, "alpha", 5) ) hv_store((HV *)hv, "alpha", 5, &PL_sv_yes, 0); if ( hv_exists((HV*)ver, "width", 5 ) ) { const I32 width = SvIV(*hv_fetchs((HV*)ver, "width", FALSE)); hv_store((HV *)hv, "width", 5, newSViv(width), 0); } sav = (AV *)SvRV(*hv_fetchs((HV*)ver, "version", FALSE)); /* This will get reblessed later if a derived class*/ for ( key = 0; key <= av_len(sav); key++ ) { const I32 rev = SvIV(*av_fetch(sav, key, FALSE)); av_push(av, newSViv(rev)); } hv_store((HV *)hv, "version", 7, newRV_noinc((SV *)av), 0); return rv; } #ifdef SvVOK { const MAGIC* const mg = SvVSTRING_mg(ver); if ( mg ) { /* already a v-string */ const STRLEN len = mg->mg_len; char * const version = savepvn( (const char*)mg->mg_ptr, len); sv_setpvn(rv,version,len); Safefree(version); } else { #endif sv_setsv(rv,ver); /* make a duplicate */ #ifdef SvVOK } } #endif return upg_version(rv); } /* =for apidoc upg_version In-place upgrade of the supplied SV to a version object. SV *sv = upg_version(SV *sv); Returns a pointer to the upgraded SV. =cut */ SV * Perl_upg_version(pTHX_ SV *ver) { const char *version, *s; bool qv = 0; #ifdef SvVOK const MAGIC *mg; #endif if ( SvNOK(ver) ) /* may get too much accuracy */ { char tbuf[64]; #ifdef USE_LOCALE_NUMERIC char *loc = setlocale(LC_NUMERIC, "C"); #endif STRLEN len = my_snprintf(tbuf, sizeof(tbuf), "%.9"NVff, SvNVX(ver)); #ifdef USE_LOCALE_NUMERIC setlocale(LC_NUMERIC, loc); #endif while (tbuf[len-1] == '0' && len > 0) len--; version = savepvn(tbuf, len); } #ifdef SvVOK else if ( (mg = SvVSTRING_mg(ver)) ) { /* already a v-string */ version = savepvn( (const char*)mg->mg_ptr,mg->mg_len ); qv = 1; } #endif else /* must be a string or something like a string */ { version = savepv(SvPV_nolen(ver)); } s = scan_version(version, ver, qv); if ( *s != '\0' ) if(ckWARN(WARN_MISC)) Perl_warner(aTHX_ packWARN(WARN_MISC), "Version string '%s' contains invalid data; " "ignoring: '%s'", version, s); Safefree(version); return ver; } /* =for apidoc vverify Validates that the SV contains a valid version object. bool vverify(SV *vobj); Note that it only confirms the bare minimum structure (so as not to get confused by derived classes which may contain additional hash entries): =over 4 =item * The SV contains a [reference to a] hash =item * The hash contains a "version" key =item * The "version" key has [a reference to] an AV as its value =back =cut */ bool Perl_vverify(pTHX_ SV *vs) { SV *sv; if ( SvROK(vs) ) vs = SvRV(vs); /* see if the appropriate elements exist */ if ( SvTYPE(vs) == SVt_PVHV && hv_exists((HV*)vs, "version", 7) && (sv = SvRV(*hv_fetchs((HV*)vs, "version", FALSE))) && SvTYPE(sv) == SVt_PVAV ) return TRUE; else return FALSE; } /* =for apidoc vnumify Accepts a version object and returns the normalized floating point representation. Call like: sv = vnumify(rv); NOTE: you can pass either the object directly or the SV contained within the RV. =cut */ SV * Perl_vnumify(pTHX_ SV *vs) { I32 i, len, digit; int width; bool alpha = FALSE; SV * const sv = newSV(0); AV *av; if ( SvROK(vs) ) vs = SvRV(vs); if ( !vverify(vs) ) Perl_croak(aTHX_ "Invalid version object"); /* see if various flags exist */ if ( hv_exists((HV*)vs, "alpha", 5 ) ) alpha = TRUE; if ( hv_exists((HV*)vs, "width", 5 ) ) width = SvIV(*hv_fetchs((HV*)vs, "width", FALSE)); else width = 3; /* attempt to retrieve the version array */ if ( !(av = (AV *)SvRV(*hv_fetchs((HV*)vs, "version", FALSE)) ) ) { sv_catpvs(sv,"0"); return sv; } len = av_len(av); if ( len == -1 ) { sv_catpvs(sv,"0"); return sv; } digit = SvIV(*av_fetch(av, 0, 0)); Perl_sv_setpvf(aTHX_ sv, "%d.", (int)PERL_ABS(digit)); for ( i = 1 ; i < len ; i++ ) { digit = SvIV(*av_fetch(av, i, 0)); if ( width < 3 ) { const int denom = (width == 2 ? 10 : 100); const div_t term = div((int)PERL_ABS(digit),denom); Perl_sv_catpvf(aTHX_ sv, "%0*d_%d", width, term.quot, term.rem); } else { Perl_sv_catpvf(aTHX_ sv, "%0*d", width, (int)digit); } } if ( len > 0 ) { digit = SvIV(*av_fetch(av, len, 0)); if ( alpha && width == 3 ) /* alpha version */ sv_catpvs(sv,"_"); Perl_sv_catpvf(aTHX_ sv, "%0*d", width, (int)digit); } else /* len == 0 */ { sv_catpvs(sv, "000"); } return sv; } /* =for apidoc vnormal Accepts a version object and returns the normalized string representation. Call like: sv = vnormal(rv); NOTE: you can pass either the object directly or the SV contained within the RV. =cut */ SV * Perl_vnormal(pTHX_ SV *vs) { I32 i, len, digit; bool alpha = FALSE; SV * const sv = newSV(0); AV *av; if ( SvROK(vs) ) vs = SvRV(vs); if ( !vverify(vs) ) Perl_croak(aTHX_ "Invalid version object"); if ( hv_exists((HV*)vs, "alpha", 5 ) ) alpha = TRUE; av = (AV *)SvRV(*hv_fetchs((HV*)vs, "version", FALSE)); len = av_len(av); if ( len == -1 ) { sv_catpvs(sv,""); return sv; } digit = SvIV(*av_fetch(av, 0, 0)); Perl_sv_setpvf(aTHX_ sv, "v%"IVdf, (IV)digit); for ( i = 1 ; i < len ; i++ ) { digit = SvIV(*av_fetch(av, i, 0)); Perl_sv_catpvf(aTHX_ sv, ".%"IVdf, (IV)digit); } if ( len > 0 ) { /* handle last digit specially */ digit = SvIV(*av_fetch(av, len, 0)); if ( alpha ) Perl_sv_catpvf(aTHX_ sv, "_%"IVdf, (IV)digit); else Perl_sv_catpvf(aTHX_ sv, ".%"IVdf, (IV)digit); } if ( len <= 2 ) { /* short version, must be at least three */ for ( len = 2 - len; len != 0; len-- ) sv_catpvs(sv,".0"); } return sv; } /* =for apidoc vstringify In order to maintain maximum compatibility with earlier versions of Perl, this function will return either the floating point notation or the multiple dotted notation, depending on whether the original version contained 1 or more dots, respectively =cut */ SV * Perl_vstringify(pTHX_ SV *vs) { if ( SvROK(vs) ) vs = SvRV(vs); if ( !vverify(vs) ) Perl_croak(aTHX_ "Invalid version object"); if ( hv_exists((HV *)vs, "qv", 2) ) return vnormal(vs); else return vnumify(vs); } /* =for apidoc vcmp Version object aware cmp. Both operands must already have been converted into version objects. =cut */ int Perl_vcmp(pTHX_ SV *lhv, SV *rhv) { I32 i,l,m,r,retval; bool lalpha = FALSE; bool ralpha = FALSE; I32 left = 0; I32 right = 0; AV *lav, *rav; if ( SvROK(lhv) ) lhv = SvRV(lhv); if ( SvROK(rhv) ) rhv = SvRV(rhv); if ( !vverify(lhv) ) Perl_croak(aTHX_ "Invalid version object"); if ( !vverify(rhv) ) Perl_croak(aTHX_ "Invalid version object"); /* get the left hand term */ lav = (AV *)SvRV(*hv_fetchs((HV*)lhv, "version", FALSE)); if ( hv_exists((HV*)lhv, "alpha", 5 ) ) lalpha = TRUE; /* and the right hand term */ rav = (AV *)SvRV(*hv_fetchs((HV*)rhv, "version", FALSE)); if ( hv_exists((HV*)rhv, "alpha", 5 ) ) ralpha = TRUE; l = av_len(lav); r = av_len(rav); m = l < r ? l : r; retval = 0; i = 0; while ( i <= m && retval == 0 ) { left = SvIV(*av_fetch(lav,i,0)); right = SvIV(*av_fetch(rav,i,0)); if ( left < right ) retval = -1; if ( left > right ) retval = +1; i++; } /* tiebreaker for alpha with identical terms */ if ( retval == 0 && l == r && left == right && ( lalpha || ralpha ) ) { if ( lalpha && !ralpha ) { retval = -1; } else if ( ralpha && !lalpha) { retval = +1; } } if ( l != r && retval == 0 ) /* possible match except for trailing 0's */ { if ( l < r ) { while ( i <= r && retval == 0 ) { if ( SvIV(*av_fetch(rav,i,0)) != 0 ) retval = -1; /* not a match after all */ i++; } } else { while ( i <= l && retval == 0 ) { if ( SvIV(*av_fetch(lav,i,0)) != 0 ) retval = +1; /* not a match after all */ i++; } } } return retval; } #if !defined(HAS_SOCKETPAIR) && defined(HAS_SOCKET) && defined(AF_INET) && defined(PF_INET) && defined(SOCK_DGRAM) && defined(HAS_SELECT) # define EMULATE_SOCKETPAIR_UDP #endif #ifdef EMULATE_SOCKETPAIR_UDP static int S_socketpair_udp (int fd[2]) { dTHX; /* Fake a datagram socketpair using UDP to localhost. */ int sockets[2] = {-1, -1}; struct sockaddr_in addresses[2]; int i; Sock_size_t size = sizeof(struct sockaddr_in); unsigned short port; int got; memset(&addresses, 0, sizeof(addresses)); i = 1; do { sockets[i] = PerlSock_socket(AF_INET, SOCK_DGRAM, PF_INET); if (sockets[i] == -1) goto tidy_up_and_fail; addresses[i].sin_family = AF_INET; addresses[i].sin_addr.s_addr = htonl(INADDR_LOOPBACK); addresses[i].sin_port = 0; /* kernel choses port. */ if (PerlSock_bind(sockets[i], (struct sockaddr *) &addresses[i], sizeof(struct sockaddr_in)) == -1) goto tidy_up_and_fail; } while (i--); /* Now have 2 UDP sockets. Find out which port each is connected to, and for each connect the other socket to it. */ i = 1; do { if (PerlSock_getsockname(sockets[i], (struct sockaddr *) &addresses[i], &size) == -1) goto tidy_up_and_fail; if (size != sizeof(struct sockaddr_in)) goto abort_tidy_up_and_fail; /* !1 is 0, !0 is 1 */ if (PerlSock_connect(sockets[!i], (struct sockaddr *) &addresses[i], sizeof(struct sockaddr_in)) == -1) goto tidy_up_and_fail; } while (i--); /* Now we have 2 sockets connected to each other. I don't trust some other process not to have already sent a packet to us (by random) so send a packet from each to the other. */ i = 1; do { /* I'm going to send my own port number. As a short. (Who knows if someone somewhere has sin_port as a bitfield and needs this routine. (I'm assuming crays have socketpair)) */ port = addresses[i].sin_port; got = PerlLIO_write(sockets[i], &port, sizeof(port)); if (got != sizeof(port)) { if (got == -1) goto tidy_up_and_fail; goto abort_tidy_up_and_fail; } } while (i--); /* Packets sent. I don't trust them to have arrived though. (As I understand it Solaris TCP stack is multithreaded. Non-blocking connect to localhost will use a second kernel thread. In 2.6 the first thread running the connect() returns before the second completes, so EINPROGRESS> In 2.7 the improved stack is faster and connect() returns 0. Poor programs have tripped up. One poor program's authors' had a 50-1 reverse stock split. Not sure how connected these were.) So I don't trust someone not to have an unpredictable UDP stack. */ { struct timeval waitfor = {0, 100000}; /* You have 0.1 seconds */ int max = sockets[1] > sockets[0] ? sockets[1] : sockets[0]; fd_set rset; FD_ZERO(&rset); FD_SET((unsigned int)sockets[0], &rset); FD_SET((unsigned int)sockets[1], &rset); got = PerlSock_select(max + 1, &rset, NULL, NULL, &waitfor); if (got != 2 || !FD_ISSET(sockets[0], &rset) || !FD_ISSET(sockets[1], &rset)) { /* I hope this is portable and appropriate. */ if (got == -1) goto tidy_up_and_fail; goto abort_tidy_up_and_fail; } } /* And the paranoia department even now doesn't trust it to have arrive (hence MSG_DONTWAIT). Or that what arrives was sent by us. */ { struct sockaddr_in readfrom; unsigned short buffer[2]; i = 1; do { #ifdef MSG_DONTWAIT got = PerlSock_recvfrom(sockets[i], (char *) &buffer, sizeof(buffer), MSG_DONTWAIT, (struct sockaddr *) &readfrom, &size); #else got = PerlSock_recvfrom(sockets[i], (char *) &buffer, sizeof(buffer), 0, (struct sockaddr *) &readfrom, &size); #endif if (got == -1) goto tidy_up_and_fail; if (got != sizeof(port) || size != sizeof(struct sockaddr_in) /* Check other socket sent us its port. */ || buffer[0] != (unsigned short) addresses[!i].sin_port /* Check kernel says we got the datagram from that socket */ || readfrom.sin_family != addresses[!i].sin_family || readfrom.sin_addr.s_addr != addresses[!i].sin_addr.s_addr || readfrom.sin_port != addresses[!i].sin_port) goto abort_tidy_up_and_fail; } while (i--); } /* My caller (my_socketpair) has validated that this is non-NULL */ fd[0] = sockets[0]; fd[1] = sockets[1]; /* I hereby declare this connection open. May God bless all who cross her. */ return 0; abort_tidy_up_and_fail: errno = ECONNABORTED; tidy_up_and_fail: { const int save_errno = errno; if (sockets[0] != -1) PerlLIO_close(sockets[0]); if (sockets[1] != -1) PerlLIO_close(sockets[1]); errno = save_errno; return -1; } } #endif /* EMULATE_SOCKETPAIR_UDP */ #if !defined(HAS_SOCKETPAIR) && defined(HAS_SOCKET) && defined(AF_INET) && defined(PF_INET) int Perl_my_socketpair (int family, int type, int protocol, int fd[2]) { /* Stevens says that family must be AF_LOCAL, protocol 0. I'm going to enforce that, then ignore it, and use TCP (or UDP). */ dTHX; int listener = -1; int connector = -1; int acceptor = -1; struct sockaddr_in listen_addr; struct sockaddr_in connect_addr; Sock_size_t size; if (protocol #ifdef AF_UNIX || family != AF_UNIX #endif ) { errno = EAFNOSUPPORT; return -1; } if (!fd) { errno = EINVAL; return -1; } #ifdef EMULATE_SOCKETPAIR_UDP if (type == SOCK_DGRAM) return S_socketpair_udp(fd); #endif listener = PerlSock_socket(AF_INET, type, 0); if (listener == -1) return -1; memset(&listen_addr, 0, sizeof(listen_addr)); listen_addr.sin_family = AF_INET; listen_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); listen_addr.sin_port = 0; /* kernel choses port. */ if (PerlSock_bind(listener, (struct sockaddr *) &listen_addr, sizeof(listen_addr)) == -1) goto tidy_up_and_fail; if (PerlSock_listen(listener, 1) == -1) goto tidy_up_and_fail; connector = PerlSock_socket(AF_INET, type, 0); if (connector == -1) goto tidy_up_and_fail; /* We want to find out the port number to connect to. */ size = sizeof(connect_addr); if (PerlSock_getsockname(listener, (struct sockaddr *) &connect_addr, &size) == -1) goto tidy_up_and_fail; if (size != sizeof(connect_addr)) goto abort_tidy_up_and_fail; if (PerlSock_connect(connector, (struct sockaddr *) &connect_addr, sizeof(connect_addr)) == -1) goto tidy_up_and_fail; size = sizeof(listen_addr); acceptor = PerlSock_accept(listener, (struct sockaddr *) &listen_addr, &size); if (acceptor == -1) goto tidy_up_and_fail; if (size != sizeof(listen_addr)) goto abort_tidy_up_and_fail; PerlLIO_close(listener); /* Now check we are talking to ourself by matching port and host on the two sockets. */ if (PerlSock_getsockname(connector, (struct sockaddr *) &connect_addr, &size) == -1) goto tidy_up_and_fail; if (size != sizeof(connect_addr) || listen_addr.sin_family != connect_addr.sin_family || listen_addr.sin_addr.s_addr != connect_addr.sin_addr.s_addr || listen_addr.sin_port != connect_addr.sin_port) { goto abort_tidy_up_and_fail; } fd[0] = connector; fd[1] = acceptor; return 0; abort_tidy_up_and_fail: #ifdef ECONNABORTED errno = ECONNABORTED; /* This would be the standard thing to do. */ #else # ifdef ECONNREFUSED errno = ECONNREFUSED; /* E.g. Symbian does not have ECONNABORTED. */ # else errno = ETIMEDOUT; /* Desperation time. */ # endif #endif tidy_up_and_fail: { const int save_errno = errno; if (listener != -1) PerlLIO_close(listener); if (connector != -1) PerlLIO_close(connector); if (acceptor != -1) PerlLIO_close(acceptor); errno = save_errno; return -1; } } #else /* In any case have a stub so that there's code corresponding * to the my_socketpair in global.sym. */ int Perl_my_socketpair (int family, int type, int protocol, int fd[2]) { #ifdef HAS_SOCKETPAIR return socketpair(family, type, protocol, fd); #else return -1; #endif } #endif /* =for apidoc sv_nosharing Dummy routine which "shares" an SV when there is no sharing module present. Or "locks" it. Or "unlocks" it. In other words, ignores its single SV argument. Exists to avoid test for a NULL function pointer and because it could potentially warn under some level of strict-ness. =cut */ void Perl_sv_nosharing(pTHX_ SV *sv) { PERL_UNUSED_CONTEXT; PERL_UNUSED_ARG(sv); } U32 Perl_parse_unicode_opts(pTHX_ const char **popt) { const char *p = *popt; U32 opt = 0; if (*p) { if (isDIGIT(*p)) { opt = (U32) atoi(p); while (isDIGIT(*p)) p++; if (*p && *p != '\n' && *p != '\r') Perl_croak(aTHX_ "Unknown Unicode option letter '%c'", *p); } else { for (; *p; p++) { switch (*p) { case PERL_UNICODE_STDIN: opt |= PERL_UNICODE_STDIN_FLAG; break; case PERL_UNICODE_STDOUT: opt |= PERL_UNICODE_STDOUT_FLAG; break; case PERL_UNICODE_STDERR: opt |= PERL_UNICODE_STDERR_FLAG; break; case PERL_UNICODE_STD: opt |= PERL_UNICODE_STD_FLAG; break; case PERL_UNICODE_IN: opt |= PERL_UNICODE_IN_FLAG; break; case PERL_UNICODE_OUT: opt |= PERL_UNICODE_OUT_FLAG; break; case PERL_UNICODE_INOUT: opt |= PERL_UNICODE_INOUT_FLAG; break; case PERL_UNICODE_LOCALE: opt |= PERL_UNICODE_LOCALE_FLAG; break; case PERL_UNICODE_ARGV: opt |= PERL_UNICODE_ARGV_FLAG; break; case PERL_UNICODE_UTF8CACHEASSERT: opt |= PERL_UNICODE_UTF8CACHEASSERT_FLAG; break; default: if (*p != '\n' && *p != '\r') Perl_croak(aTHX_ "Unknown Unicode option letter '%c'", *p); } } } } else opt = PERL_UNICODE_DEFAULT_FLAGS; if (opt & ~PERL_UNICODE_ALL_FLAGS) Perl_croak(aTHX_ "Unknown Unicode option value %"UVuf, (UV) (opt & ~PERL_UNICODE_ALL_FLAGS)); *popt = p; return opt; } U32 Perl_seed(pTHX) { dVAR; /* * This is really just a quick hack which grabs various garbage * values. It really should be a real hash algorithm which * spreads the effect of every input bit onto every output bit, * if someone who knows about such things would bother to write it. * Might be a good idea to add that function to CORE as well. * No numbers below come from careful analysis or anything here, * except they are primes and SEED_C1 > 1E6 to get a full-width * value from (tv_sec * SEED_C1 + tv_usec). The multipliers should * probably be bigger too. */ #if RANDBITS > 16 # define SEED_C1 1000003 #define SEED_C4 73819 #else # define SEED_C1 25747 #define SEED_C4 20639 #endif #define SEED_C2 3 #define SEED_C3 269 #define SEED_C5 26107 #ifndef PERL_NO_DEV_RANDOM int fd; #endif U32 u; #ifdef VMS # include /* when[] = (low 32 bits, high 32 bits) of time since epoch * in 100-ns units, typically incremented ever 10 ms. */ unsigned int when[2]; #else # ifdef HAS_GETTIMEOFDAY struct timeval when; # else Time_t when; # endif #endif /* This test is an escape hatch, this symbol isn't set by Configure. */ #ifndef PERL_NO_DEV_RANDOM #ifndef PERL_RANDOM_DEVICE /* /dev/random isn't used by default because reads from it will block * if there isn't enough entropy available. You can compile with * PERL_RANDOM_DEVICE to it if you'd prefer Perl to block until there * is enough real entropy to fill the seed. */ # define PERL_RANDOM_DEVICE "/dev/urandom" #endif fd = PerlLIO_open(PERL_RANDOM_DEVICE, 0); if (fd != -1) { if (PerlLIO_read(fd, (void*)&u, sizeof u) != sizeof u) u = 0; PerlLIO_close(fd); if (u) return u; } #endif #ifdef VMS _ckvmssts(sys$gettim(when)); u = (U32)SEED_C1 * when[0] + (U32)SEED_C2 * when[1]; #else # ifdef HAS_GETTIMEOFDAY PerlProc_gettimeofday(&when,NULL); u = (U32)SEED_C1 * when.tv_sec + (U32)SEED_C2 * when.tv_usec; # else (void)time(&when); u = (U32)SEED_C1 * when; # endif #endif u += SEED_C3 * (U32)PerlProc_getpid(); u += SEED_C4 * (U32)PTR2UV(PL_stack_sp); #ifndef PLAN9 /* XXX Plan9 assembler chokes on this; fix needed */ u += SEED_C5 * (U32)PTR2UV(&when); #endif return u; } UV Perl_get_hash_seed(pTHX) { dVAR; const char *s = PerlEnv_getenv("PERL_HASH_SEED"); UV myseed = 0; if (s) while (isSPACE(*s)) s++; if (s && isDIGIT(*s)) myseed = (UV)Atoul(s); else #ifdef USE_HASH_SEED_EXPLICIT if (s) #endif { /* Compute a random seed */ (void)seedDrand01((Rand_seed_t)seed()); myseed = (UV)(Drand01() * (NV)UV_MAX); #if RANDBITS < (UVSIZE * 8) /* Since there are not enough randbits to to reach all * the bits of a UV, the low bits might need extra * help. Sum in another random number that will * fill in the low bits. */ myseed += (UV)(Drand01() * (NV)((1 << ((UVSIZE * 8 - RANDBITS))) - 1)); #endif /* RANDBITS < (UVSIZE * 8) */ if (myseed == 0) { /* Superparanoia. */ myseed = (UV)(Drand01() * (NV)UV_MAX); /* One more chance. */ if (myseed == 0) Perl_croak(aTHX_ "Your random numbers are not that random"); } } PL_rehash_seed_set = TRUE; return myseed; } #ifdef USE_ITHREADS bool Perl_stashpv_hvname_match(pTHX_ const COP *c, const HV *hv) { const char * const stashpv = CopSTASHPV(c); const char * const name = HvNAME_get(hv); PERL_UNUSED_CONTEXT; if (stashpv == name) return TRUE; if (stashpv && name) if (strEQ(stashpv, name)) return TRUE; return FALSE; } #endif #ifdef PERL_GLOBAL_STRUCT struct perl_vars * Perl_init_global_struct(pTHX) { struct perl_vars *plvarsp = NULL; #ifdef PERL_GLOBAL_STRUCT # define PERL_GLOBAL_STRUCT_INIT # include "opcode.h" /* the ppaddr and check */ const IV nppaddr = sizeof(Gppaddr)/sizeof(Perl_ppaddr_t); const IV ncheck = sizeof(Gcheck) /sizeof(Perl_check_t); # ifdef PERL_GLOBAL_STRUCT_PRIVATE /* PerlMem_malloc() because can't use even safesysmalloc() this early. */ plvarsp = (struct perl_vars*)PerlMem_malloc(sizeof(struct perl_vars)); if (!plvarsp) exit(1); # else plvarsp = PL_VarsPtr; # endif /* PERL_GLOBAL_STRUCT_PRIVATE */ # undef PERLVAR # undef PERLVARA # undef PERLVARI # undef PERLVARIC # undef PERLVARISC # define PERLVAR(var,type) /**/ # define PERLVARA(var,n,type) /**/ # define PERLVARI(var,type,init) plvarsp->var = init; # define PERLVARIC(var,type,init) plvarsp->var = init; # define PERLVARISC(var,init) Copy(init, plvarsp->var, sizeof(init), char); # include "perlvars.h" # undef PERLVAR # undef PERLVARA # undef PERLVARI # undef PERLVARIC # undef PERLVARISC # ifdef PERL_GLOBAL_STRUCT plvarsp->Gppaddr = PerlMem_malloc(nppaddr * sizeof(Perl_ppaddr_t)); if (!plvarsp->Gppaddr) exit(1); plvarsp->Gcheck = PerlMem_malloc(ncheck * sizeof(Perl_check_t)); if (!plvarsp->Gcheck) exit(1); Copy(Gppaddr, plvarsp->Gppaddr, nppaddr, Perl_ppaddr_t); Copy(Gcheck, plvarsp->Gcheck, ncheck, Perl_check_t); # endif # ifdef PERL_SET_VARS PERL_SET_VARS(plvarsp); # endif # undef PERL_GLOBAL_STRUCT_INIT #endif return plvarsp; } #endif /* PERL_GLOBAL_STRUCT */ #ifdef PERL_GLOBAL_STRUCT void Perl_free_global_struct(pTHX_ struct perl_vars *plvarsp) { #ifdef PERL_GLOBAL_STRUCT # ifdef PERL_UNSET_VARS PERL_UNSET_VARS(plvarsp); # endif free(plvarsp->Gppaddr); free(plvarsp->Gcheck); # ifdef PERL_GLOBAL_STRUCT_PRIVATE free(plvarsp); # endif #endif } #endif /* PERL_GLOBAL_STRUCT */ #ifdef PERL_MEM_LOG /* * PERL_MEM_LOG: the Perl_mem_log_..() will be compiled. * * PERL_MEM_LOG_ENV: if defined, during run time the environment * variable PERL_MEM_LOG will be consulted, and if the integer value * of that is true, the logging will happen. (The default is to * always log if the PERL_MEM_LOG define was in effect.) */ /* * PERL_MEM_LOG_SPRINTF_BUF_SIZE: size of a (stack-allocated) buffer * the Perl_mem_log_...() will use (either via sprintf or snprintf). */ #define PERL_MEM_LOG_SPRINTF_BUF_SIZE 128 /* * PERL_MEM_LOG_FD: the file descriptor the Perl_mem_log_...() will * log to. You can also define in compile time PERL_MEM_LOG_ENV_FD, * in which case the environment variable PERL_MEM_LOG_FD will be * consulted for the file descriptor number to use. */ #ifndef PERL_MEM_LOG_FD # define PERL_MEM_LOG_FD 2 /* If STDERR is too boring for you. */ #endif Malloc_t Perl_mem_log_alloc(const UV n, const UV typesize, const char *typename, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname) { #ifdef PERL_MEM_LOG_STDERR # if defined(PERL_MEM_LOG_ENV) || defined(PERL_MEM_LOG_ENV_FD) char *s; # endif # ifdef PERL_MEM_LOG_ENV s = getenv("PERL_MEM_LOG"); if (s ? atoi(s) : 0) # endif { /* We can't use SVs or PerlIO for obvious reasons, * so we'll use stdio and low-level IO instead. */ char buf[PERL_MEM_LOG_SPRINTF_BUF_SIZE]; # ifdef PERL_MEM_LOG_TIMESTAMP struct timeval tv; # ifdef HAS_GETTIMEOFDAY gettimeofday(&tv, 0); # endif /* If there are other OS specific ways of hires time than * gettimeofday() (see ext/Time/HiRes), the easiest way is * probably that they would be used to fill in the struct * timeval. */ # endif { const STRLEN len = my_snprintf(buf, sizeof(buf), # ifdef PERL_MEM_LOG_TIMESTAMP "%10d.%06d: " # endif "alloc: %s:%d:%s: %"IVdf" %"UVuf " %s = %"IVdf": %"UVxf"\n", # ifdef PERL_MEM_LOG_TIMESTAMP (int)tv.tv_sec, (int)tv.tv_usec, # endif filename, linenumber, funcname, n, typesize, typename, n * typesize, PTR2UV(newalloc)); # ifdef PERL_MEM_LOG_ENV_FD s = PerlEnv_getenv("PERL_MEM_LOG_FD"); PerlLIO_write(s ? atoi(s) : PERL_MEM_LOG_FD, buf, len); # else PerlLIO_write(PERL_MEM_LOG_FD, buf, len); #endif } } #endif return newalloc; } Malloc_t Perl_mem_log_realloc(const UV n, const UV typesize, const char *typename, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname) { #ifdef PERL_MEM_LOG_STDERR # if defined(PERL_MEM_LOG_ENV) || defined(PERL_MEM_LOG_ENV_FD) char *s; # endif # ifdef PERL_MEM_LOG_ENV s = PerlEnv_getenv("PERL_MEM_LOG"); if (s ? atoi(s) : 0) # endif { /* We can't use SVs or PerlIO for obvious reasons, * so we'll use stdio and low-level IO instead. */ char buf[PERL_MEM_LOG_SPRINTF_BUF_SIZE]; # ifdef PERL_MEM_LOG_TIMESTAMP struct timeval tv; gettimeofday(&tv, 0); # endif { const STRLEN len = my_snprintf(buf, sizeof(buf), # ifdef PERL_MEM_LOG_TIMESTAMP "%10d.%06d: " # endif "realloc: %s:%d:%s: %"IVdf" %"UVuf " %s = %"IVdf": %"UVxf" -> %"UVxf"\n", # ifdef PERL_MEM_LOG_TIMESTAMP (int)tv.tv_sec, (int)tv.tv_usec, # endif filename, linenumber, funcname, n, typesize, typename, n * typesize, PTR2UV(oldalloc), PTR2UV(newalloc)); # ifdef PERL_MEM_LOG_ENV_FD s = PerlEnv_getenv("PERL_MEM_LOG_FD"); PerlLIO_write(s ? atoi(s) : PERL_MEM_LOG_FD, buf, len); # else PerlLIO_write(PERL_MEM_LOG_FD, buf, len); # endif } } #endif return newalloc; } Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname) { #ifdef PERL_MEM_LOG_STDERR # if defined(PERL_MEM_LOG_ENV) || defined(PERL_MEM_LOG_ENV_FD) char *s; # endif # ifdef PERL_MEM_LOG_ENV s = PerlEnv_getenv("PERL_MEM_LOG"); if (s ? atoi(s) : 0) # endif { /* We can't use SVs or PerlIO for obvious reasons, * so we'll use stdio and low-level IO instead. */ char buf[PERL_MEM_LOG_SPRINTF_BUF_SIZE]; # ifdef PERL_MEM_LOG_TIMESTAMP struct timeval tv; gettimeofday(&tv, 0); # endif { const STRLEN len = my_snprintf(buf, sizeof(buf), # ifdef PERL_MEM_LOG_TIMESTAMP "%10d.%06d: " # endif "free: %s:%d:%s: %"UVxf"\n", # ifdef PERL_MEM_LOG_TIMESTAMP (int)tv.tv_sec, (int)tv.tv_usec, # endif filename, linenumber, funcname, PTR2UV(oldalloc)); # ifdef PERL_MEM_LOG_ENV_FD s = PerlEnv_getenv("PERL_MEM_LOG_FD"); PerlLIO_write(s ? atoi(s) : PERL_MEM_LOG_FD, buf, len); # else PerlLIO_write(PERL_MEM_LOG_FD, buf, len); # endif } } #endif return oldalloc; } #endif /* PERL_MEM_LOG */ /* =for apidoc my_sprintf The C library C, wrapped if necessary, to ensure that it will return the length of the string written to the buffer. Only rare pre-ANSI systems need the wrapper function - usually this is a direct call to C. =cut */ #ifndef SPRINTF_RETURNS_STRLEN int Perl_my_sprintf(char *buffer, const char* pat, ...) { va_list args; va_start(args, pat); vsprintf(buffer, pat, args); va_end(args); return strlen(buffer); } #endif /* =for apidoc my_snprintf The C library C functionality, if available and standards-compliant (uses C, actually). However, if the C is not available, will unfortunately use the unsafe C which can overrun the buffer (there is an overrun check, but that may be too late). Consider using C instead, or getting C. =cut */ int Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...) { dTHX; int retval; va_list ap; va_start(ap, format); #ifdef HAS_VSNPRINTF retval = vsnprintf(buffer, len, format, ap); #else retval = vsprintf(buffer, format, ap); #endif va_end(ap); /* vsnprintf() shows failure with >= len, vsprintf() with < 0 */ if (retval < 0 || (len > 0 && (Size_t)retval >= len)) Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); return retval; } /* =for apidoc my_vsnprintf The C library C if available and standards-compliant. However, if if the C is not available, will unfortunately use the unsafe C which can overrun the buffer (there is an overrun check, but that may be too late). Consider using C instead, or getting C. =cut */ int Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap) { dTHX; int retval; #ifdef NEED_VA_COPY va_list apc; Perl_va_copy(ap, apc); # ifdef HAS_VSNPRINTF retval = vsnprintf(buffer, len, format, apc); # else retval = vsprintf(buffer, format, apc); # endif #else # ifdef HAS_VSNPRINTF retval = vsnprintf(buffer, len, format, ap); # else retval = vsprintf(buffer, format, ap); # endif #endif /* #ifdef NEED_VA_COPY */ /* vsnprintf() shows failure with >= len, vsprintf() with < 0 */ if (retval < 0 || (len > 0 && (Size_t)retval >= len)) Perl_croak(aTHX_ "panic: my_vsnprintf buffer overflow"); return retval; } void Perl_my_clearenv(pTHX) { dVAR; #if ! defined(PERL_MICRO) # if defined(PERL_IMPLICIT_SYS) || defined(WIN32) PerlEnv_clearenv(); # else /* ! (PERL_IMPLICIT_SYS || WIN32) */ # if defined(USE_ENVIRON_ARRAY) # if defined(USE_ITHREADS) /* only the parent thread can clobber the process environment */ if (PL_curinterp == aTHX) # endif /* USE_ITHREADS */ { # if ! defined(PERL_USE_SAFE_PUTENV) if ( !PL_use_safe_putenv) { I32 i; if (environ == PL_origenviron) environ = (char**)safesysmalloc(sizeof(char*)); else for (i = 0; environ[i]; i++) (void)safesysfree(environ[i]); } environ[0] = NULL; # else /* PERL_USE_SAFE_PUTENV */ # if defined(HAS_CLEARENV) (void)clearenv(); # elif defined(HAS_UNSETENV) int bsiz = 80; /* Most envvar names will be shorter than this. */ int bufsiz = bsiz * sizeof(char); /* sizeof(char) paranoid? */ char *buf = (char*)safesysmalloc(bufsiz); while (*environ != NULL) { char *e = strchr(*environ, '='); int l = e ? e - *environ : (int)strlen(*environ); if (bsiz < l + 1) { (void)safesysfree(buf); bsiz = l + 1; /* + 1 for the \0. */ buf = (char*)safesysmalloc(bufsiz); } my_strlcpy(buf, *environ, l + 1); (void)unsetenv(buf); } (void)safesysfree(buf); # else /* ! HAS_CLEARENV && ! HAS_UNSETENV */ /* Just null environ and accept the leakage. */ *environ = NULL; # endif /* HAS_CLEARENV || HAS_UNSETENV */ # endif /* ! PERL_USE_SAFE_PUTENV */ } # endif /* USE_ENVIRON_ARRAY */ # endif /* PERL_IMPLICIT_SYS || WIN32 */ #endif /* PERL_MICRO */ } #ifdef PERL_IMPLICIT_CONTEXT /* implements the MY_CXT_INIT macro. The first time a module is loaded, the global PL_my_cxt_index is incremented, and that value is assigned to that module's static my_cxt_index (who's address is passed as an arg). Then, for each interpreter this function is called for, it makes sure a void* slot is available to hang the static data off, by allocating or extending the interpreter's PL_my_cxt_list array */ void * Perl_my_cxt_init(pTHX_ int *index, size_t size) { dVAR; void *p; if (*index == -1) { /* this module hasn't been allocated an index yet */ MUTEX_LOCK(&PL_my_ctx_mutex); *index = PL_my_cxt_index++; MUTEX_UNLOCK(&PL_my_ctx_mutex); } /* make sure the array is big enough */ if (PL_my_cxt_size <= *index) { if (PL_my_cxt_size) { while (PL_my_cxt_size <= *index) PL_my_cxt_size *= 2; Renew(PL_my_cxt_list, PL_my_cxt_size, void *); } else { PL_my_cxt_size = 16; Newx(PL_my_cxt_list, PL_my_cxt_size, void *); } } /* newSV() allocates one more than needed */ p = (void*)SvPVX(newSV(size-1)); PL_my_cxt_list[*index] = p; Zero(p, size, char); return p; } #endif #ifndef HAS_STRLCAT Size_t Perl_my_strlcat(char *dst, const char *src, Size_t size) { Size_t used, length, copy; used = strlen(dst); length = strlen(src); if (size > 0 && used < size - 1) { copy = (length >= size - used) ? size - used - 1 : length; memcpy(dst + used, src, copy); dst[used + copy] = '\0'; } return used + length; } #endif #ifndef HAS_STRLCPY Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size) { Size_t length, copy; length = strlen(src); if (size > 0) { copy = (length >= size) ? size - 1 : length; memcpy(dst, src, copy); dst[copy] = '\0'; } return length; } #endif /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/perlinc/0000755000175000001440000000000011550665107017432 5ustar mhxusersConvert-Binary-C-0.76/tests/include/perlinc/av.h0000644000175000001440000000704011550664630020212 0ustar mhxusers/* av.h * * Copyright (C) 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2005, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ struct xpvav { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; SSize_t xav_fill; /* Index of last element present */ SSize_t xav_max; /* max index for which array has space */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ }; #if 0 typedef struct xpvav xpvav_allocated; #else typedef struct { SSize_t xav_fill; /* Index of last element present */ SSize_t xav_max; /* max index for which array has space */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ } xpvav_allocated; #endif /* SV** xav_alloc; */ #define xav_alloc xiv_u.xivu_p1 /* SV* xav_arylen; */ /* SVpav_REAL is set for all AVs whose xav_array contents are refcounted. * Some things like "@_" and the scratchpad list do not set this, to * indicate that they are cheating (for efficiency) by not refcounting * the AV's contents. * * SVpav_REIFY is only meaningful on such "fake" AVs (i.e. where SVpav_REAL * is not set). It indicates that the fake AV is capable of becoming * real if the array needs to be modified in some way. Functions that * modify fake AVs check both flags to call av_reify() as appropriate. * * Note that the Perl stack and @DB::args have neither flag set. (Thus, * items that go on the stack are never refcounted.) * * These internal details are subject to change any time. AV * manipulations external to perl should not care about any of this. * GSAR 1999-09-10 */ /* =head1 Handy Values =for apidoc AmU||Nullav Null AV pointer. =head1 Array Manipulation Functions =for apidoc Am|int|AvFILL|AV* av Same as C. Deprecated, use C instead. =cut */ #define Nullav Null(AV*) #define AvARRAY(av) ((av)->sv_u.svu_array) #define AvALLOC(av) (*((SV***)&((XPVAV*) SvANY(av))->xav_alloc)) #define AvMAX(av) ((XPVAV*) SvANY(av))->xav_max #define AvFILLp(av) ((XPVAV*) SvANY(av))->xav_fill #define AvARYLEN(av) (*Perl_av_arylen_p(aTHX_ (AV*)av)) #define AvREAL(av) (SvFLAGS(av) & SVpav_REAL) #define AvREAL_on(av) (SvFLAGS(av) |= SVpav_REAL) #define AvREAL_off(av) (SvFLAGS(av) &= ~SVpav_REAL) #define AvREAL_only(av) (AvREIFY_off(av), SvFLAGS(av) |= SVpav_REAL) #define AvREIFY(av) (SvFLAGS(av) & SVpav_REIFY) #define AvREIFY_on(av) (SvFLAGS(av) |= SVpav_REIFY) #define AvREIFY_off(av) (SvFLAGS(av) &= ~SVpav_REIFY) #define AvREIFY_only(av) (AvREAL_off(av), SvFLAGS(av) |= SVpav_REIFY) #define AvREALISH(av) (SvFLAGS(av) & (SVpav_REAL|SVpav_REIFY)) #define AvFILL(av) ((SvRMAGICAL((SV *) (av))) \ ? mg_size((SV *) av) : AvFILLp(av)) #define NEGATIVE_INDICES_VAR "NEGATIVE_INDICES" /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/perlinc/cv.h0000644000175000001440000002226311550664630020220 0ustar mhxusers/* cv.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* This structure must the beginning of XPVFM in sv.h */ struct xpvcv { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of xp_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; UV xivu_uv; void * xivu_p1; I32 xivu_i32; /* depth, >= 2 indicates recursive call */ HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ HV * xcv_stash; union { OP * xcv_start; ANY xcv_xsubany; } xcv_start_u; union { OP * xcv_root; void (*xcv_xsub) (pTHX_ CV*); } xcv_root_u; GV * xcv_gv; char * xcv_file; PADLIST * xcv_padlist; CV * xcv_outside; U32 xcv_outside_seq; /* the COP sequence (at the point of our * compilation) in the lexically enclosing * sub */ cv_flags_t xcv_flags; }; typedef struct { STRLEN xpv_cur; /* length of xp_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; UV xivu_uv; void * xivu_p1; I32 xivu_i32; /* depth, >= 2 indicates recursive call */ HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ HV * xcv_stash; union { OP * xcv_start; ANY xcv_xsubany; } xcv_start_u; union { OP * xcv_root; void (*xcv_xsub) (pTHX_ CV*); } xcv_root_u; GV * xcv_gv; char * xcv_file; PADLIST * xcv_padlist; CV * xcv_outside; U32 xcv_outside_seq; /* the COP sequence (at the point of our * compilation) in the lexically enclosing * sub */ cv_flags_t xcv_flags; } xpvcv_allocated; /* =head1 Handy Values =for apidoc AmU||Nullcv Null CV pointer. =head1 CV Manipulation Functions =for apidoc Am|HV*|CvSTASH|CV* cv Returns the stash of the CV. =cut */ #define Nullcv Null(CV*) #define CvSTASH(sv) ((XPVCV*)SvANY(sv))->xcv_stash #define CvSTART(sv) ((XPVCV*)SvANY(sv))->xcv_start_u.xcv_start #define CvROOT(sv) ((XPVCV*)SvANY(sv))->xcv_root_u.xcv_root #define CvXSUB(sv) ((XPVCV*)SvANY(sv))->xcv_root_u.xcv_xsub #define CvXSUBANY(sv) ((XPVCV*)SvANY(sv))->xcv_start_u.xcv_xsubany #define CvGV(sv) ((XPVCV*)SvANY(sv))->xcv_gv #define CvFILE(sv) ((XPVCV*)SvANY(sv))->xcv_file #ifdef USE_ITHREADS # define CvFILE_set_from_cop(sv, cop) (CvFILE(sv) = savepv(CopFILE(cop))) #else # define CvFILE_set_from_cop(sv, cop) (CvFILE(sv) = CopFILE(cop)) #endif #define CvFILEGV(sv) (gv_fetchfile(CvFILE(sv))) #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) # define CvDEPTH(sv) (*({const CV *_cv = (CV *)sv; \ assert(SvTYPE(_cv) == SVt_PVCV); \ &((XPVCV*)SvANY(_cv))->xiv_u.xivu_i32; \ })) #else # define CvDEPTH(sv) ((XPVCV*)SvANY(sv))->xiv_u.xivu_i32 #endif #define CvPADLIST(sv) ((XPVCV*)SvANY(sv))->xcv_padlist #define CvOUTSIDE(sv) ((XPVCV*)SvANY(sv))->xcv_outside #define CvFLAGS(sv) ((XPVCV*)SvANY(sv))->xcv_flags #define CvOUTSIDE_SEQ(sv) ((XPVCV*)SvANY(sv))->xcv_outside_seq #define CVf_METHOD 0x0001 /* CV is explicitly marked as a method */ #define CVf_LOCKED 0x0002 /* CV locks itself or first arg on entry */ #define CVf_LVALUE 0x0004 /* CV return value can be used as lvalue */ #define CVf_ASSERTION 0x0008 /* CV called only when asserting */ #define CVf_WEAKOUTSIDE 0x0010 /* CvOUTSIDE isn't ref counted */ #define CVf_CLONE 0x0020 /* anon CV uses external lexicals */ #define CVf_CLONED 0x0040 /* a clone of one of those */ #define CVf_ANON 0x0080 /* CvGV() can't be trusted */ #define CVf_UNIQUE 0x0100 /* sub is only called once (eg PL_main_cv, * require, eval). */ #define CVf_NODEBUG 0x0200 /* no DB::sub indirection for this CV (esp. useful for special XSUBs) */ #define CVf_CONST 0x0400 /* inlinable sub */ #define CVf_ISXSUB 0x0800 /* CV is an XSUB, not pure perl. */ /* This symbol for optimised communication between toke.c and op.c: */ #define CVf_BUILTIN_ATTRS (CVf_METHOD|CVf_LOCKED|CVf_LVALUE|CVf_ASSERTION) #define CvCLONE(cv) (CvFLAGS(cv) & CVf_CLONE) #define CvCLONE_on(cv) (CvFLAGS(cv) |= CVf_CLONE) #define CvCLONE_off(cv) (CvFLAGS(cv) &= ~CVf_CLONE) #define CvCLONED(cv) (CvFLAGS(cv) & CVf_CLONED) #define CvCLONED_on(cv) (CvFLAGS(cv) |= CVf_CLONED) #define CvCLONED_off(cv) (CvFLAGS(cv) &= ~CVf_CLONED) #define CvANON(cv) (CvFLAGS(cv) & CVf_ANON) #define CvANON_on(cv) (CvFLAGS(cv) |= CVf_ANON) #define CvANON_off(cv) (CvFLAGS(cv) &= ~CVf_ANON) #define CvUNIQUE(cv) (CvFLAGS(cv) & CVf_UNIQUE) #define CvUNIQUE_on(cv) (CvFLAGS(cv) |= CVf_UNIQUE) #define CvUNIQUE_off(cv) (CvFLAGS(cv) &= ~CVf_UNIQUE) #define CvNODEBUG(cv) (CvFLAGS(cv) & CVf_NODEBUG) #define CvNODEBUG_on(cv) (CvFLAGS(cv) |= CVf_NODEBUG) #define CvNODEBUG_off(cv) (CvFLAGS(cv) &= ~CVf_NODEBUG) #define CvMETHOD(cv) (CvFLAGS(cv) & CVf_METHOD) #define CvMETHOD_on(cv) (CvFLAGS(cv) |= CVf_METHOD) #define CvMETHOD_off(cv) (CvFLAGS(cv) &= ~CVf_METHOD) #define CvLOCKED(cv) (CvFLAGS(cv) & CVf_LOCKED) #define CvLOCKED_on(cv) (CvFLAGS(cv) |= CVf_LOCKED) #define CvLOCKED_off(cv) (CvFLAGS(cv) &= ~CVf_LOCKED) #define CvLVALUE(cv) (CvFLAGS(cv) & CVf_LVALUE) #define CvLVALUE_on(cv) (CvFLAGS(cv) |= CVf_LVALUE) #define CvLVALUE_off(cv) (CvFLAGS(cv) &= ~CVf_LVALUE) #define CvASSERTION(cv) (CvFLAGS(cv) & CVf_ASSERTION) #define CvASSERTION_on(cv) (CvFLAGS(cv) |= CVf_ASSERTION) #define CvASSERTION_off(cv) (CvFLAGS(cv) &= ~CVf_ASSERTION) #define CvEVAL(cv) (CvUNIQUE(cv) && !SvFAKE(cv)) #define CvEVAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_off(cv)) #define CvEVAL_off(cv) CvUNIQUE_off(cv) /* BEGIN|CHECK|INIT|UNITCHECK|END */ #define CvSPECIAL(cv) (CvUNIQUE(cv) && SvFAKE(cv)) #define CvSPECIAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_on(cv)) #define CvSPECIAL_off(cv) (CvUNIQUE_off(cv),SvFAKE_off(cv)) #define CvCONST(cv) (CvFLAGS(cv) & CVf_CONST) #define CvCONST_on(cv) (CvFLAGS(cv) |= CVf_CONST) #define CvCONST_off(cv) (CvFLAGS(cv) &= ~CVf_CONST) #define CvWEAKOUTSIDE(cv) (CvFLAGS(cv) & CVf_WEAKOUTSIDE) #define CvWEAKOUTSIDE_on(cv) (CvFLAGS(cv) |= CVf_WEAKOUTSIDE) #define CvWEAKOUTSIDE_off(cv) (CvFLAGS(cv) &= ~CVf_WEAKOUTSIDE) #define CvISXSUB(cv) (CvFLAGS(cv) & CVf_ISXSUB) #define CvISXSUB_on(cv) (CvFLAGS(cv) |= CVf_ISXSUB) #define CvISXSUB_off(cv) (CvFLAGS(cv) &= ~CVf_ISXSUB) /* Flags for newXS_flags */ #define XS_DYNAMIC_FILENAME 0x01 /* The filename isn't static */ /* =head1 CV reference counts and CvOUTSIDE =for apidoc m|bool|CvWEAKOUTSIDE|CV *cv Each CV has a pointer, C, to its lexically enclosing CV (if any). Because pointers to anonymous sub prototypes are stored in C<&> pad slots, it is a possible to get a circular reference, with the parent pointing to the child and vice-versa. To avoid the ensuing memory leak, we do not increment the reference count of the CV pointed to by C in the I that the parent has a C<&> pad slot pointing back to us. In this case, we set the C flag in the child. This allows us to determine under what circumstances we should decrement the refcount of the parent when freeing the child. There is a further complication with non-closure anonymous subs (i.e. those that do not refer to any lexicals outside that sub). In this case, the anonymous prototype is shared rather than being cloned. This has the consequence that the parent may be freed while there are still active children, eg BEGIN { $a = sub { eval '$x' } } In this case, the BEGIN is freed immediately after execution since there are no active references to it: the anon sub prototype has C set since it's not a closure, and $a points to the same CV, so it doesn't contribute to BEGIN's refcount either. When $a is executed, the C causes the chain of Cs to be followed, and the freed BEGIN is accessed. To avoid this, whenever a CV and its associated pad is freed, any C<&> entries in the pad are explicitly removed from the pad, and if the refcount of the pointed-to anon sub is still positive, then that child's C is set to point to its grandparent. This will only occur in the single specific case of a non-closure anon prototype having one or more active references (such as C<$a> above). One other thing to consider is that a CV may be merely undefined rather than freed, eg C. In this case, its refcount may not have reached zero, but we still delete its pad and its C etc. Since various children may still have their C pointing at this undefined CV, we keep its own C for the time being, so that the chain of lexical scopes is unbroken. For example, the following should print 123: my $x = 123; sub tmp { sub { eval '$x' } } my $a = tmp(); undef &tmp; print $a->(); =cut */ /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/perlinc/gv.h0000644000175000001440000001705711550664630020231 0ustar mhxusers/* gv.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ struct gp { SV * gp_sv; /* scalar value */ U32 gp_refcnt; /* how many globs point to this? */ struct io * gp_io; /* filehandle value */ CV * gp_form; /* format value */ AV * gp_av; /* array value */ HV * gp_hv; /* hash value */ GV * gp_egv; /* effective gv, if *glob */ CV * gp_cv; /* subroutine value */ U32 gp_cvgen; /* generational validity of cached gv_cv */ line_t gp_line; /* line first declared at (for -w) */ HEK * gp_file_hek; /* file first declared in (for -w) */ }; #define GvXPVGV(gv) ((XPVGV*)SvANY(gv)) #if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__INTEL_COMPILER) # define GvGP(gv) \ (*({GV *const shplep = (GV *) (gv); \ assert(SvTYPE(shplep) == SVt_PVGV || SvTYPE(shplep) == SVt_PVLV); \ assert(isGV_with_GP(shplep)); \ &((shplep)->sv_u.svu_gp);})) # define GvFLAGS(gv) \ (*({GV *const yaah = (GV *) (gv); \ assert(SvTYPE(yaah) == SVt_PVGV || SvTYPE(yaah) == SVt_PVLV); \ assert(isGV_with_GP(yaah)); \ &(GvXPVGV(yaah)->xpv_cur);})) # define GvSTASH(gv) \ (*({ GV * const _gv = (GV *) (gv); \ assert(isGV_with_GP(_gv)); \ assert(SvTYPE(_gv) == SVt_PVGV || SvTYPE(_gv) >= SVt_PVLV); \ &(GvXPVGV(_gv)->xnv_u.xgv_stash); \ })) # define GvNAME_HEK(gv) \ (*({ GV * const zzzz = (GV *) (gv); \ assert(isGV_with_GP(zzzz)); \ assert(SvTYPE(zzzz) == SVt_PVGV || SvTYPE(zzzz) >= SVt_PVLV); \ &(GvXPVGV(zzzz)->xiv_u.xivu_namehek); \ })) # define GvNAME_get(gv) ({ assert(GvNAME_HEK(gv)); HEK_KEY(GvNAME_HEK(gv)); }) # define GvNAMELEN_get(gv) ({ assert(GvNAME_HEK(gv)); HEK_LEN(GvNAME_HEK(gv)); }) #else # define GvGP(gv) ((gv)->sv_u.svu_gp) # define GvFLAGS(gv) (GvXPVGV(gv)->xpv_cur) # define GvSTASH(gv) (GvXPVGV(gv)->xnv_u.xgv_stash) # define GvNAME_HEK(gv) (GvXPVGV(gv)->xiv_u.xivu_namehek) # define GvNAME_get(gv) HEK_KEY(GvNAME_HEK(gv)) # define GvNAMELEN_get(gv) HEK_LEN(GvNAME_HEK(gv)) #endif #define GvNAME(gv) GvNAME_get(gv) #define GvNAMELEN(gv) GvNAMELEN_get(gv) #define GvASSIGN_GENERATION(gv) (0 + ((XPV*) SvANY(gv))->xpv_len) #define GvASSIGN_GENERATION_set(gv,val) \ STMT_START { assert(SvTYPE(gv) == SVt_PVGV); \ (((XPV*) SvANY(gv))->xpv_len = (val)); } STMT_END /* =head1 GV Functions =for apidoc Am|SV*|GvSV|GV* gv Return the SV from the GV. =cut */ #define GvSV(gv) (GvGP(gv)->gp_sv) #ifdef PERL_DONT_CREATE_GVSV #define GvSVn(gv) (*(GvGP(gv)->gp_sv ? \ &(GvGP(gv)->gp_sv) : \ &(GvGP(gv_SVadd(gv))->gp_sv))) #else #define GvSVn(gv) GvSV(gv) #endif #define GvREFCNT(gv) (GvGP(gv)->gp_refcnt) #define GvIO(gv) ((gv) && SvTYPE((SV*)gv) == SVt_PVGV && GvGP(gv) ? GvIOp(gv) : 0) #define GvIOp(gv) (GvGP(gv)->gp_io) #define GvIOn(gv) (GvIO(gv) ? GvIOp(gv) : GvIOp(gv_IOadd(gv))) #define GvFORM(gv) (GvGP(gv)->gp_form) #define GvAV(gv) (GvGP(gv)->gp_av) /* This macro is deprecated. Do not use! */ #define GvREFCNT_inc(gv) ((GV*)SvREFCNT_inc(gv)) /* DO NOT USE */ #define GvAVn(gv) (GvGP(gv)->gp_av ? \ GvGP(gv)->gp_av : \ GvGP(gv_AVadd(gv))->gp_av) #define GvHV(gv) ((GvGP(gv))->gp_hv) #define GvHVn(gv) (GvGP(gv)->gp_hv ? \ GvGP(gv)->gp_hv : \ GvGP(gv_HVadd(gv))->gp_hv) #define GvCV(gv) (GvGP(gv)->gp_cv) #define GvCVGEN(gv) (GvGP(gv)->gp_cvgen) #define GvCVu(gv) (GvGP(gv)->gp_cvgen ? NULL : GvGP(gv)->gp_cv) #define GvLINE(gv) (GvGP(gv)->gp_line) #define GvFILE_HEK(gv) (GvGP(gv)->gp_file_hek) #define GvFILE(gv) HEK_KEY(GvFILE_HEK(gv)) #define GvFILEGV(gv) (gv_fetchfile(GvFILE(gv))) #define GvEGV(gv) (GvGP(gv)->gp_egv) #define GvENAME(gv) GvNAME(GvEGV(gv) ? GvEGV(gv) : gv) #define GvESTASH(gv) GvSTASH(GvEGV(gv) ? GvEGV(gv) : gv) #define GVf_INTRO 0x01 #define GVf_MULTI 0x02 #define GVf_ASSUMECV 0x04 #define GVf_IN_PAD 0x08 #define GVf_IMPORTED 0xF0 #define GVf_IMPORTED_SV 0x10 #define GVf_IMPORTED_AV 0x20 #define GVf_IMPORTED_HV 0x40 #define GVf_IMPORTED_CV 0x80 #define GvINTRO(gv) (GvFLAGS(gv) & GVf_INTRO) #define GvINTRO_on(gv) (GvFLAGS(gv) |= GVf_INTRO) #define GvINTRO_off(gv) (GvFLAGS(gv) &= ~GVf_INTRO) #define GvMULTI(gv) (GvFLAGS(gv) & GVf_MULTI) #define GvMULTI_on(gv) (GvFLAGS(gv) |= GVf_MULTI) #define GvMULTI_off(gv) (GvFLAGS(gv) &= ~GVf_MULTI) #define GvASSUMECV(gv) (GvFLAGS(gv) & GVf_ASSUMECV) #define GvASSUMECV_on(gv) (GvFLAGS(gv) |= GVf_ASSUMECV) #define GvASSUMECV_off(gv) (GvFLAGS(gv) &= ~GVf_ASSUMECV) #define GvIMPORTED(gv) (GvFLAGS(gv) & GVf_IMPORTED) #define GvIMPORTED_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED) #define GvIMPORTED_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED) #define GvIMPORTED_SV(gv) (GvFLAGS(gv) & GVf_IMPORTED_SV) #define GvIMPORTED_SV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_SV) #define GvIMPORTED_SV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_SV) #define GvIMPORTED_AV(gv) (GvFLAGS(gv) & GVf_IMPORTED_AV) #define GvIMPORTED_AV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_AV) #define GvIMPORTED_AV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_AV) #define GvIMPORTED_HV(gv) (GvFLAGS(gv) & GVf_IMPORTED_HV) #define GvIMPORTED_HV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_HV) #define GvIMPORTED_HV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_HV) #define GvIMPORTED_CV(gv) (GvFLAGS(gv) & GVf_IMPORTED_CV) #define GvIMPORTED_CV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_CV) #define GvIMPORTED_CV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_CV) #define GvIN_PAD(gv) (GvFLAGS(gv) & GVf_IN_PAD) #define GvIN_PAD_on(gv) (GvFLAGS(gv) |= GVf_IN_PAD) #define GvIN_PAD_off(gv) (GvFLAGS(gv) &= ~GVf_IN_PAD) #define GvUNIQUE(gv) 0 #define GvUNIQUE_on(gv) NOOP #define GvUNIQUE_off(gv) NOOP #ifdef USE_ITHREADS #define GV_UNIQUE_CHECK #else #undef GV_UNIQUE_CHECK #endif #define Nullgv Null(GV*) #define DM_UID 0x003 #define DM_RUID 0x001 #define DM_EUID 0x002 #define DM_GID 0x030 #define DM_RGID 0x010 #define DM_EGID 0x020 #define DM_DELAY 0x100 /* * symbol creation flags, for use in gv_fetchpv() and get_*v() */ #define GV_ADD 0x01 /* add, if symbol not already there For gv_name_set, adding a HEK for the first time, so don't try to free what's there. */ #define GV_ADDMULTI 0x02 /* add, pretending it has been added already */ #define GV_ADDWARN 0x04 /* add, but warn if symbol wasn't already there */ #define GV_ADDINEVAL 0x08 /* add, as though we're doing so within an eval */ #define GV_NOINIT 0x10 /* add, but don't init symbol, if type != PVGV */ /* This is used by toke.c to avoid turing placeholder constants in the symbol table into full PVGVs with attached constant subroutines. */ #define GV_NOADD_NOINIT 0x20 /* Don't add the symbol if it's not there. Don't init it if it is there but ! PVGV */ #define GV_NOEXPAND 0x40 /* Don't expand SvOK() entries to PVGV */ #define GV_NOTQUAL 0x80 /* A plain symbol name, not qualified with a package (so skip checks for :: and ') */ /* SVf_UTF8 (more accurately the return value from SvUTF8) is also valid as a flag to gv_fetch_pvn_flags, so ensure it lies outside this range. */ #define gv_fullname3(sv,gv,prefix) gv_fullname4(sv,gv,prefix,TRUE) #define gv_efullname3(sv,gv,prefix) gv_efullname4(sv,gv,prefix,TRUE) #define gv_fetchmethod(stash, name) gv_fetchmethod_autoload(stash, name, TRUE) /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/perlinc/hv.h0000644000175000001440000004041011550664630020217 0ustar mhxusers/* hv.h * * Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2005, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* entry in hash value chain */ struct he { /* Keep hent_next first in this structure, because sv_free_arenas take advantage of this to share code between the he arenas and the SV body arenas */ HE *hent_next; /* next entry in chain */ HEK *hent_hek; /* hash key */ union { SV *hent_val; /* scalar value that was hashed */ Size_t hent_refcount; /* references for this shared hash key */ } he_valu; }; /* hash key -- defined separately for use as shared pointer */ struct hek { U32 hek_hash; /* hash of key */ I32 hek_len; /* length of hash key */ char hek_key[1]; /* variable-length hash key */ /* the hash-key is \0-terminated */ /* after the \0 there is a byte for flags, such as whether the key is UTF-8 */ }; struct shared_he { struct he shared_he_he; struct hek shared_he_hek; }; /* Subject to change. Don't access this directly. */ struct xpvhv_aux { HEK *xhv_name; /* name, if a symbol table */ AV *xhv_backreferences; /* back references for weak references */ HE *xhv_eiter; /* current entry of iterator */ I32 xhv_riter; /* current root of iterator */ }; /* hash structure: */ /* This structure must match the beginning of struct xpvmg in sv.h. */ struct xpvhv { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xhv_fill; /* how full xhv_array currently is */ STRLEN xhv_max; /* subscript of last element of xhv_array */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ }; #define xhv_keys xiv_u.xivu_iv #if 0 typedef struct xpvhv xpvhv_allocated; #else typedef struct { STRLEN xhv_fill; /* how full xhv_array currently is */ STRLEN xhv_max; /* subscript of last element of xhv_array */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ } xpvhv_allocated; #endif /* hash a key */ /* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins * from requirements by Colin Plumb. * (http://burtleburtle.net/bob/hash/doobs.html) */ /* The use of a temporary pointer and the casting games * is needed to serve the dual purposes of * (a) the hashed data being interpreted as "unsigned char" (new since 5.8, * a "char" can be either signed or unsigned, depending on the compiler) * (b) catering for old code that uses a "char" * * The "hash seed" feature was added in Perl 5.8.1 to perturb the results * to avoid "algorithmic complexity attacks". * * If USE_HASH_SEED is defined, hash randomisation is done by default * If USE_HASH_SEED_EXPLICIT is defined, hash randomisation is done * only if the environment variable PERL_HASH_SEED is set. * For maximal control, one can define PERL_HASH_SEED. * (see also perl.c:perl_parse()). */ #ifndef PERL_HASH_SEED # if defined(USE_HASH_SEED) || defined(USE_HASH_SEED_EXPLICIT) # define PERL_HASH_SEED PL_hash_seed # else # define PERL_HASH_SEED 0 # endif #endif #define PERL_HASH(hash,str,len) \ STMT_START { \ register const char * const s_PeRlHaSh_tmp = str; \ register const unsigned char *s_PeRlHaSh = (const unsigned char *)s_PeRlHaSh_tmp; \ register I32 i_PeRlHaSh = len; \ register U32 hash_PeRlHaSh = PERL_HASH_SEED; \ while (i_PeRlHaSh--) { \ hash_PeRlHaSh += *s_PeRlHaSh++; \ hash_PeRlHaSh += (hash_PeRlHaSh << 10); \ hash_PeRlHaSh ^= (hash_PeRlHaSh >> 6); \ } \ hash_PeRlHaSh += (hash_PeRlHaSh << 3); \ hash_PeRlHaSh ^= (hash_PeRlHaSh >> 11); \ (hash) = (hash_PeRlHaSh + (hash_PeRlHaSh << 15)); \ } STMT_END /* Only hv.c and mod_perl should be doing this. */ #ifdef PERL_HASH_INTERNAL_ACCESS #define PERL_HASH_INTERNAL(hash,str,len) \ STMT_START { \ register const char * const s_PeRlHaSh_tmp = str; \ register const unsigned char *s_PeRlHaSh = (const unsigned char *)s_PeRlHaSh_tmp; \ register I32 i_PeRlHaSh = len; \ register U32 hash_PeRlHaSh = PL_rehash_seed; \ while (i_PeRlHaSh--) { \ hash_PeRlHaSh += *s_PeRlHaSh++; \ hash_PeRlHaSh += (hash_PeRlHaSh << 10); \ hash_PeRlHaSh ^= (hash_PeRlHaSh >> 6); \ } \ hash_PeRlHaSh += (hash_PeRlHaSh << 3); \ hash_PeRlHaSh ^= (hash_PeRlHaSh >> 11); \ (hash) = (hash_PeRlHaSh + (hash_PeRlHaSh << 15)); \ } STMT_END #endif /* =head1 Hash Manipulation Functions =for apidoc AmU||HEf_SVKEY This flag, used in the length slot of hash entries and magic structures, specifies the structure contains an C pointer where a C pointer is to be expected. (For information only--not to be used). =head1 Handy Values =for apidoc AmU||Nullhv Null HV pointer. =head1 Hash Manipulation Functions =for apidoc Am|char*|HvNAME|HV* stash Returns the package name of a stash, or NULL if C isn't a stash. See C, C. =for apidoc Am|void*|HeKEY|HE* he Returns the actual pointer stored in the key slot of the hash entry. The pointer may be either C or C, depending on the value of C. Can be assigned to. The C or C macros are usually preferable for finding the value of a key. =for apidoc Am|STRLEN|HeKLEN|HE* he If this is negative, and amounts to C, it indicates the entry holds an C key. Otherwise, holds the actual length of the key. Can be assigned to. The C macro is usually preferable for finding key lengths. =for apidoc Am|SV*|HeVAL|HE* he Returns the value slot (type C) stored in the hash entry. =for apidoc Am|U32|HeHASH|HE* he Returns the computed hash stored in the hash entry. =for apidoc Am|char*|HePV|HE* he|STRLEN len Returns the key slot of the hash entry as a C value, doing any necessary dereferencing of possibly C keys. The length of the string is placed in C (this is a macro, so do I use C<&len>). If you do not care about what the length of the key is, you may use the global variable C, though this is rather less efficient than using a local variable. Remember though, that hash keys in perl are free to contain embedded nulls, so using C or similar is not a good way to find the length of hash keys. This is very similar to the C macro described elsewhere in this document. =for apidoc Am|SV*|HeSVKEY|HE* he Returns the key as an C, or C if the hash entry does not contain an C key. =for apidoc Am|SV*|HeSVKEY_force|HE* he Returns the key as an C. Will create and return a temporary mortal C if the hash entry contains only a C key. =for apidoc Am|SV*|HeSVKEY_set|HE* he|SV* sv Sets the key to a given C, taking care to set the appropriate flags to indicate the presence of an C key, and returns the same C. =cut */ /* these hash entry flags ride on hent_klen (for use only in magic/tied HVs) */ #define HEf_SVKEY -2 /* hent_key is an SV* */ #define Nullhv Null(HV*) #define HvARRAY(hv) ((hv)->sv_u.svu_hash) #define HvFILL(hv) ((XPVHV*) SvANY(hv))->xhv_fill #define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max /* This quite intentionally does no flag checking first. That's your responsibility. */ #define HvAUX(hv) ((struct xpvhv_aux*)&(HvARRAY(hv)[HvMAX(hv)+1])) #define HvRITER(hv) (*Perl_hv_riter_p(aTHX_ (HV*)(hv))) #define HvEITER(hv) (*Perl_hv_eiter_p(aTHX_ (HV*)(hv))) #define HvRITER_set(hv,r) Perl_hv_riter_set(aTHX_ (HV*)(hv), r) #define HvEITER_set(hv,e) Perl_hv_eiter_set(aTHX_ (HV*)(hv), e) #define HvRITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_riter : -1) #define HvEITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_eiter : 0) #define HvNAME(hv) HvNAME_get(hv) /* FIXME - all of these should use a UTF8 aware API, which should also involve getting the length. */ /* This macro may go away without notice. */ #define HvNAME_HEK(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_name : 0) #define HvNAME_get(hv) ((SvOOK(hv) && (HvAUX(hv)->xhv_name)) \ ? HEK_KEY(HvAUX(hv)->xhv_name) : 0) #define HvNAMELEN_get(hv) ((SvOOK(hv) && (HvAUX(hv)->xhv_name)) \ ? HEK_LEN(HvAUX(hv)->xhv_name) : 0) /* the number of keys (including any placeholers) */ #define XHvTOTALKEYS(xhv) ((xhv)->xhv_keys) /* * HvKEYS gets the number of keys that actually exist(), and is provided * for backwards compatibility with old XS code. The core uses HvUSEDKEYS * (keys, excluding placeholdes) and HvTOTALKEYS (including placeholders) */ #define HvKEYS(hv) HvUSEDKEYS(hv) #define HvUSEDKEYS(hv) (HvTOTALKEYS(hv) - HvPLACEHOLDERS_get(hv)) #define HvTOTALKEYS(hv) XHvTOTALKEYS((XPVHV*) SvANY(hv)) #define HvPLACEHOLDERS(hv) (*Perl_hv_placeholders_p(aTHX_ (HV*)hv)) #define HvPLACEHOLDERS_get(hv) (SvMAGIC(hv) ? Perl_hv_placeholders_get(aTHX_ (HV*)hv) : 0) #define HvPLACEHOLDERS_set(hv,p) Perl_hv_placeholders_set(aTHX_ (HV*)hv, p) #define HvSHAREKEYS(hv) (SvFLAGS(hv) & SVphv_SHAREKEYS) #define HvSHAREKEYS_on(hv) (SvFLAGS(hv) |= SVphv_SHAREKEYS) #define HvSHAREKEYS_off(hv) (SvFLAGS(hv) &= ~SVphv_SHAREKEYS) /* This is an optimisation flag. It won't be set if all hash keys have a 0 * flag. Currently the only flags relate to utf8. * Hence it won't be set if all keys are 8 bit only. It will be set if any key * is utf8 (including 8 bit keys that were entered as utf8, and need upgrading * when retrieved during iteration. It may still be set when there are no longer * any utf8 keys. * See HVhek_ENABLEHVKFLAGS for the trigger. */ #define HvHASKFLAGS(hv) (SvFLAGS(hv) & SVphv_HASKFLAGS) #define HvHASKFLAGS_on(hv) (SvFLAGS(hv) |= SVphv_HASKFLAGS) #define HvHASKFLAGS_off(hv) (SvFLAGS(hv) &= ~SVphv_HASKFLAGS) #define HvLAZYDEL(hv) (SvFLAGS(hv) & SVphv_LAZYDEL) #define HvLAZYDEL_on(hv) (SvFLAGS(hv) |= SVphv_LAZYDEL) #define HvLAZYDEL_off(hv) (SvFLAGS(hv) &= ~SVphv_LAZYDEL) #define HvREHASH(hv) (SvFLAGS(hv) & SVphv_REHASH) #define HvREHASH_on(hv) (SvFLAGS(hv) |= SVphv_REHASH) #define HvREHASH_off(hv) (SvFLAGS(hv) &= ~SVphv_REHASH) #define Nullhe Null(HE*) #define HeNEXT(he) (he)->hent_next #define HeKEY_hek(he) (he)->hent_hek #define HeKEY(he) HEK_KEY(HeKEY_hek(he)) #define HeKEY_sv(he) (*(SV**)HeKEY(he)) #define HeKLEN(he) HEK_LEN(HeKEY_hek(he)) #define HeKUTF8(he) HEK_UTF8(HeKEY_hek(he)) #define HeKWASUTF8(he) HEK_WASUTF8(HeKEY_hek(he)) #define HeKREHASH(he) HEK_REHASH(HeKEY_hek(he)) #define HeKLEN_UTF8(he) (HeKUTF8(he) ? -HeKLEN(he) : HeKLEN(he)) #define HeKFLAGS(he) HEK_FLAGS(HeKEY_hek(he)) #define HeVAL(he) (he)->he_valu.hent_val #define HeHASH(he) HEK_HASH(HeKEY_hek(he)) #define HePV(he,lp) ((HeKLEN(he) == HEf_SVKEY) ? \ SvPV(HeKEY_sv(he),lp) : \ (((lp = HeKLEN(he)) >= 0) ? \ HeKEY(he) : NULL)) #define HeSVKEY(he) ((HeKEY(he) && \ HeKLEN(he) == HEf_SVKEY) ? \ HeKEY_sv(he) : NULL) #define HeSVKEY_force(he) (HeKEY(he) ? \ ((HeKLEN(he) == HEf_SVKEY) ? \ HeKEY_sv(he) : \ sv_2mortal(newSVpvn(HeKEY(he), \ HeKLEN(he)))) : \ &PL_sv_undef) #define HeSVKEY_set(he,sv) ((HeKLEN(he) = HEf_SVKEY), (HeKEY_sv(he) = sv)) #define Nullhek Null(HEK*) #define HEK_BASESIZE STRUCT_OFFSET(HEK, hek_key[0]) #define HEK_HASH(hek) (hek)->hek_hash #define HEK_LEN(hek) (hek)->hek_len #define HEK_KEY(hek) (hek)->hek_key #define HEK_FLAGS(hek) (*((unsigned char *)(HEK_KEY(hek))+HEK_LEN(hek)+1)) #define HVhek_UTF8 0x01 /* Key is utf8 encoded. */ #define HVhek_WASUTF8 0x02 /* Key is bytes here, but was supplied as utf8. */ #define HVhek_REHASH 0x04 /* This key is in an hv using a custom HASH . */ #define HVhek_UNSHARED 0x08 /* This key isn't a shared hash key. */ #define HVhek_FREEKEY 0x100 /* Internal flag to say key is malloc()ed. */ #define HVhek_PLACEHOLD 0x200 /* Internal flag to create placeholder. * (may change, but Storable is a core module) */ #define HVhek_MASK 0xFF /* Which flags enable HvHASKFLAGS? Somewhat a hack on a hack, as HVhek_REHASH is only needed because the rehash flag has to be duplicated into all keys as hv_iternext has no access to the hash flags. At this point Storable's tests get upset, because sometimes hashes are "keyed" and sometimes not, depending on the order of data insertion, and whether it triggered rehashing. So currently HVhek_REHASH is exempt. Similarly UNSHARED */ #define HVhek_ENABLEHVKFLAGS (HVhek_MASK & ~(HVhek_REHASH|HVhek_UNSHARED)) #define HEK_UTF8(hek) (HEK_FLAGS(hek) & HVhek_UTF8) #define HEK_UTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_UTF8) #define HEK_UTF8_off(hek) (HEK_FLAGS(hek) &= ~HVhek_UTF8) #define HEK_WASUTF8(hek) (HEK_FLAGS(hek) & HVhek_WASUTF8) #define HEK_WASUTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_WASUTF8) #define HEK_WASUTF8_off(hek) (HEK_FLAGS(hek) &= ~HVhek_WASUTF8) #define HEK_REHASH(hek) (HEK_FLAGS(hek) & HVhek_REHASH) #define HEK_REHASH_on(hek) (HEK_FLAGS(hek) |= HVhek_REHASH) /* calculate HV array allocation */ #ifndef PERL_USE_LARGE_HV_ALLOC /* Default to allocating the correct size - default to assuming that malloc() is not broken and is efficient at allocating blocks sized at powers-of-two. */ # define PERL_HV_ARRAY_ALLOC_BYTES(size) ((size) * sizeof(HE*)) #else # define MALLOC_OVERHEAD 16 # define PERL_HV_ARRAY_ALLOC_BYTES(size) \ (((size) < 64) \ ? (size) * sizeof(HE*) \ : (size) * sizeof(HE*) * 2 - MALLOC_OVERHEAD) #endif /* Flags for hv_iternext_flags. */ #define HV_ITERNEXT_WANTPLACEHOLDERS 0x01 /* Don't skip placeholders. */ #define hv_iternext(hv) hv_iternext_flags(hv, 0) #define hv_magic(hv, gv, how) sv_magic((SV*)(hv), (SV*)(gv), how, NULL, 0) /* available as a function in hv.c */ #define Perl_sharepvn(sv, len, hash) HEK_KEY(share_hek(sv, len, hash)) #define sharepvn(sv, len, hash) Perl_sharepvn(sv, len, hash) #define share_hek_hek(hek) \ (++(((struct shared_he *)(((char *)hek) \ - STRUCT_OFFSET(struct shared_he, \ shared_he_hek))) \ ->shared_he_he.he_valu.hent_refcount), \ hek) /* This refcounted he structure is used for storing the hints used for lexical pragmas. Without threads, it's basically struct he + refcount. With threads, life gets more complex as the structure needs to be shared between threads (because it hangs from OPs, which are shared), hence the alternate definition and mutex. */ #ifdef PERL_CORE /* Gosh. This really isn't a good name any longer. */ struct refcounted_he { struct refcounted_he *refcounted_he_next; /* next entry in chain */ #ifdef USE_ITHREADS U32 refcounted_he_hash; U32 refcounted_he_keylen; #else HEK *refcounted_he_hek; /* hint key */ #endif U32 refcounted_he_refcnt; /* reference count */ union { IV refcounted_he_u_iv; UV refcounted_he_u_uv; STRLEN refcounted_he_u_len; } refcounted_he_val; /* First byte is flags. Then NUL-terminated value. Then for ithreads, non-NUL terminated key. */ char refcounted_he_data[1]; }; /* Flag bits are HVhek_UTF8, HVhek_WASUTF8, then */ #define HVrhek_undef 0x00 /* Value is undef. */ #define HVrhek_PV 0x10 /* Value is a string. */ #define HVrhek_IV 0x20 /* Value is IV/UV. */ #define HVrhek_delete 0x30 /* Value is placeholder - signifies delete. */ #define HVrhek_typemask 0x30 #define HVrhek_UTF8 0x40 /* string value is utf8. */ #define HVrhek_UV 0x40 /* integer value is UV. */ # ifdef USE_ITHREADS # define HINTS_REFCNT_LOCK MUTEX_LOCK(&PL_hints_mutex) # define HINTS_REFCNT_UNLOCK MUTEX_UNLOCK(&PL_hints_mutex) # else # define HINTS_REFCNT_LOCK NOOP # define HINTS_REFCNT_UNLOCK NOOP # endif #endif #ifdef USE_ITHREADS # define HINTS_REFCNT_INIT MUTEX_INIT(&PL_hints_mutex) # define HINTS_REFCNT_TERM MUTEX_DESTROY(&PL_hints_mutex) #else # define HINTS_REFCNT_INIT NOOP # define HINTS_REFCNT_TERM NOOP #endif /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/perlinc/mg.h0000644000175000001440000000434311550664630020212 0ustar mhxusers/* mg.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, * 2000, 2002, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #ifdef STRUCT_MGVTBL_DEFINITION STRUCT_MGVTBL_DEFINITION; #else struct mgvtbl { int (CPERLscope(*svt_get)) (pTHX_ SV *sv, MAGIC* mg); int (CPERLscope(*svt_set)) (pTHX_ SV *sv, MAGIC* mg); U32 (CPERLscope(*svt_len)) (pTHX_ SV *sv, MAGIC* mg); int (CPERLscope(*svt_clear))(pTHX_ SV *sv, MAGIC* mg); int (CPERLscope(*svt_free)) (pTHX_ SV *sv, MAGIC* mg); int (CPERLscope(*svt_copy)) (pTHX_ SV *sv, MAGIC* mg, SV *nsv, const char *name, int namlen); int (CPERLscope(*svt_dup)) (pTHX_ MAGIC *mg, CLONE_PARAMS *param); int (CPERLscope(*svt_local))(pTHX_ SV *nsv, MAGIC *mg); }; #endif struct magic { MAGIC* mg_moremagic; MGVTBL* mg_virtual; /* pointer to magic functions */ U16 mg_private; char mg_type; U8 mg_flags; SV* mg_obj; char* mg_ptr; I32 mg_len; }; #define MGf_TAINTEDDIR 1 /* PERL_MAGIC_envelem only */ #define MGf_MINMATCH 1 /* PERL_MAGIC_regex_global only */ #define MGf_REFCOUNTED 2 #define MGf_GSKIP 4 #define MGf_COPY 8 /* has an svt_copy MGVTBL entry */ #define MGf_DUP 0x10 /* has an svt_dup MGVTBL entry */ #define MGf_LOCAL 0x20 /* has an svt_local MGVTBL entry */ #define MgTAINTEDDIR(mg) (mg->mg_flags & MGf_TAINTEDDIR) #define MgTAINTEDDIR_on(mg) (mg->mg_flags |= MGf_TAINTEDDIR) #define MgTAINTEDDIR_off(mg) (mg->mg_flags &= ~MGf_TAINTEDDIR) #define MgPV(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ SvPV((SV*)((mg)->mg_ptr),lp) : \ (mg)->mg_ptr) #define MgPV_const(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \ SvPV_const((SV*)((mg)->mg_ptr),lp) : \ (const char*)(mg)->mg_ptr) #define MgPV_nolen_const(mg) (((((int)(mg)->mg_len)) == HEf_SVKEY) ? \ SvPV_nolen_const((SV*)((mg)->mg_ptr)) : \ (const char*)(mg)->mg_ptr) #define SvTIED_mg(sv,how) (SvRMAGICAL(sv) ? mg_find((sv),(how)) : NULL) #define SvTIED_obj(sv,mg) \ ((mg)->mg_obj ? (mg)->mg_obj : sv_2mortal(newRV(sv))) Convert-Binary-C-0.76/tests/include/perlinc/op.h0000644000175000001440000005113511550664630020226 0ustar mhxusers/* op.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* * The fields of BASEOP are: * op_next Pointer to next ppcode to execute after this one. * (Top level pre-grafted op points to first op, * but this is replaced when op is grafted in, when * this op will point to the real next op, and the new * parent takes over role of remembering starting op.) * op_ppaddr Pointer to current ppcode's function. * op_type The type of the operation. * op_opt Whether or not the op has been optimised by the * peephole optimiser. * op_static Whether or not the op is statically defined. * This flag is used by the B::C compiler backend * and indicates that the op should not be freed. * op_spare Five spare bits! * op_flags Flags common to all operations. See OPf_* below. * op_private Flags peculiar to a particular operation (BUT, * by default, set to the number of children until * the operation is privatized by a check routine, * which may or may not check number of children). */ #ifdef DEBUGGING_OPS #define OPCODE opcode #else #define OPCODE U16 #endif #ifdef PERL_MAD # define MADPROP_IN_BASEOP MADPROP* op_madprop; #else # define MADPROP_IN_BASEOP #endif #ifdef BASEOP_DEFINITION #define BASEOP BASEOP_DEFINITION #else #define BASEOP \ OP* op_next; \ OP* op_sibling; \ OP* (CPERLscope(*op_ppaddr))(pTHX); \ MADPROP_IN_BASEOP \ PADOFFSET op_targ; \ unsigned op_type:9; \ unsigned op_opt:1; \ unsigned op_static:1; \ unsigned op_spare:5; \ U8 op_flags; \ U8 op_private; #endif #define OP_GIMME(op,dfl) \ (((op)->op_flags & OPf_WANT) == OPf_WANT_VOID ? G_VOID : \ ((op)->op_flags & OPf_WANT) == OPf_WANT_SCALAR ? G_SCALAR : \ ((op)->op_flags & OPf_WANT) == OPf_WANT_LIST ? G_ARRAY : \ dfl) /* =head1 "Gimme" Values =for apidoc Amn|U32|GIMME_V The XSUB-writer's equivalent to Perl's C. Returns C, C or C for void, scalar or list context, respectively. =for apidoc Amn|U32|GIMME A backward-compatible version of C which can only return C or C; in a void context, it returns C. Deprecated. Use C instead. =cut */ #define GIMME_V OP_GIMME(PL_op, block_gimme()) /* Public flags */ #define OPf_WANT 3 /* Mask for "want" bits: */ #define OPf_WANT_VOID 1 /* Want nothing */ #define OPf_WANT_SCALAR 2 /* Want single value */ #define OPf_WANT_LIST 3 /* Want list of any length */ #define OPf_KIDS 4 /* There is a firstborn child. */ #define OPf_PARENS 8 /* This operator was parenthesized. */ /* (Or block needs explicit scope entry.) */ #define OPf_REF 16 /* Certified reference. */ /* (Return container, not containee). */ #define OPf_MOD 32 /* Will modify (lvalue). */ #define OPf_STACKED 64 /* Some arg is arriving on the stack. */ #define OPf_SPECIAL 128 /* Do something weird for this op: */ /* On local LVAL, don't init local value. */ /* On OP_SORT, subroutine is inlined. */ /* On OP_NOT, inversion was implicit. */ /* On OP_LEAVE, don't restore curpm. */ /* On truncate, we truncate filehandle */ /* On control verbs, we saw no label */ /* On flipflop, we saw ... instead of .. */ /* On UNOPs, saw bare parens, e.g. eof(). */ /* On OP_ENTERSUB || OP_NULL, saw a "do". */ /* On OP_EXISTS, treat av as av, not avhv. */ /* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */ /* On OP_ENTERITER, loop var is per-thread */ /* On pushre, re is /\s+/ imp. by split " " */ /* On regcomp, "use re 'eval'" was in scope */ /* On OP_READLINE, was <$filehandle> */ /* On RV2[ACGHS]V, don't create GV--in defined()*/ /* On OP_DBSTATE, indicates breakpoint * (runtime property) */ /* On OP_AELEMFAST, indiciates pad var */ /* On OP_REQUIRE, was seen as CORE::require */ /* On OP_ENTERWHEN, there's no condition */ /* On OP_BREAK, an implicit break */ /* On OP_SMARTMATCH, an implicit smartmatch */ /* On OP_ANONHASH and OP_ANONLIST, create a reference to the new anon hash or array */ /* old names; don't use in new code, but don't break them, either */ #define OPf_LIST OPf_WANT_LIST #define OPf_KNOW OPf_WANT #define GIMME \ (PL_op->op_flags & OPf_WANT \ ? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \ ? G_ARRAY \ : G_SCALAR) \ : dowantarray()) /* NOTE: OP_NEXTSTATE, OP_DBSTATE, and OP_SETSTATE (i.e. COPs) carry lower * bits of PL_hints in op_private */ /* Private for lvalues */ #define OPpLVAL_INTRO 128 /* Lvalue must be localized or lvalue sub */ /* Private for OP_LEAVE, OP_LEAVESUB, OP_LEAVESUBLV and OP_LEAVEWRITE */ #define OPpREFCOUNTED 64 /* op_targ carries a refcount */ /* Private for OP_AASSIGN */ #define OPpASSIGN_COMMON 64 /* Left & right have syms in common. */ /* Private for OP_SASSIGN */ #define OPpASSIGN_BACKWARDS 64 /* Left & right switched. */ #define OPpASSIGN_CV_TO_GV 128 /* Possible optimisation for constants. */ /* Private for OP_[AS]ASSIGN */ #define OPpASSIGN_STATE 32 /* Assign to a "state" variable */ /* Private for OP_MATCH and OP_SUBST{,CONST} */ #define OPpRUNTIME 64 /* Pattern coming in on the stack */ /* Private for OP_TRANS */ #define OPpTRANS_FROM_UTF 1 #define OPpTRANS_TO_UTF 2 #define OPpTRANS_IDENTICAL 4 /* right side is same as left */ #define OPpTRANS_SQUASH 8 /* 16 is used for OPpTARGET_MY */ #define OPpTRANS_COMPLEMENT 32 #define OPpTRANS_GROWS 64 #define OPpTRANS_DELETE 128 #define OPpTRANS_ALL (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE) /* Private for OP_REPEAT */ #define OPpREPEAT_DOLIST 64 /* List replication. */ /* Private for OP_RV2GV, OP_RV2SV, OP_AELEM, OP_HELEM, OP_PADSV */ #define OPpDEREF (32|64) /* autovivify: Want ref to something: */ #define OPpDEREF_AV 32 /* Want ref to AV. */ #define OPpDEREF_HV 64 /* Want ref to HV. */ #define OPpDEREF_SV (32|64) /* Want ref to SV. */ /* OP_ENTERSUB only */ #define OPpENTERSUB_DB 16 /* Debug subroutine. */ #define OPpENTERSUB_HASTARG 32 /* Called from OP tree. */ #define OPpENTERSUB_NOMOD 64 /* Immune to mod() for :attrlist. */ /* OP_RV2CV only */ #define OPpENTERSUB_AMPER 8 /* Used & form to call. */ #define OPpENTERSUB_NOPAREN 128 /* bare sub call (without parens) */ #define OPpENTERSUB_INARGS 4 /* Lval used as arg to a sub. */ /* OP_GV only */ #define OPpEARLY_CV 32 /* foo() called before sub foo was parsed */ /* OP_?ELEM only */ #define OPpLVAL_DEFER 16 /* Defer creation of array/hash elem */ /* OP_RV2?V, OP_GVSV, OP_ENTERITER only */ #define OPpOUR_INTRO 16 /* Variable was in an our() */ /* OP_RV2[AH]V, OP_PAD[AH]V, OP_[AH]ELEM */ #define OPpMAYBE_LVSUB 8 /* We might be an lvalue to return */ /* OP_PADSV only */ #define OPpPAD_STATE 16 /* is a "state" pad */ /* for OP_RV2?V, lower bits carry hints (currently only HINT_STRICT_REFS) */ /* OP_RV2GV only */ #define OPpDONT_INIT_GV 8 /* Call gv_fetchpv with GV_NOINIT */ /* (Therefore will return whatever is currently in the symbol table, not guaranteed to be a PVGV) */ /* OP_RV2CV only */ #define OPpMAY_RETURN_CONSTANT 1 /* If a constant sub, return the constant */ /* Private for OPs with TARGLEX */ /* (lower bits may carry MAXARG) */ #define OPpTARGET_MY 16 /* Target is PADMY. */ /* Private for OP_ENTERITER and OP_ITER */ #define OPpITER_REVERSED 4 /* for (reverse ...) */ #define OPpITER_DEF 8 /* for $_ or for my $_ */ /* Private for OP_CONST */ #define OPpCONST_NOVER 2 /* no 6; */ #define OPpCONST_SHORTCIRCUIT 4 /* eg the constant 5 in (5 || foo) */ #define OPpCONST_STRICT 8 /* bearword subject to strict 'subs' */ #define OPpCONST_ENTERED 16 /* Has been entered as symbol. */ #define OPpCONST_ARYBASE 32 /* Was a $[ translated to constant. */ #define OPpCONST_BARE 64 /* Was a bare word (filehandle?). */ #define OPpCONST_WARNING 128 /* Was a $^W translated to constant. */ /* Private for OP_FLIP/FLOP */ #define OPpFLIP_LINENUM 64 /* Range arg potentially a line num. */ /* Private for OP_LIST */ #define OPpLIST_GUESSED 64 /* Guessed that pushmark was needed. */ /* Private for OP_DELETE */ #define OPpSLICE 64 /* Operating on a list of keys */ /* Private for OP_EXISTS */ #define OPpEXISTS_SUB 64 /* Checking for &sub, not {} or []. */ /* Private for OP_SORT */ #define OPpSORT_NUMERIC 1 /* Optimized away { $a <=> $b } */ #define OPpSORT_INTEGER 2 /* Ditto while under "use integer" */ #define OPpSORT_REVERSE 4 /* Reversed sort */ #define OPpSORT_INPLACE 8 /* sort in-place; eg @a = sort @a */ #define OPpSORT_DESCEND 16 /* Descending sort */ #define OPpSORT_QSORT 32 /* Use quicksort (not mergesort) */ #define OPpSORT_STABLE 64 /* Use a stable algorithm */ /* Private for OP_THREADSV */ #define OPpDONE_SVREF 64 /* Been through newSVREF once */ /* Private for OP_OPEN and OP_BACKTICK */ #define OPpOPEN_IN_RAW 16 /* binmode(F,":raw") on input fh */ #define OPpOPEN_IN_CRLF 32 /* binmode(F,":crlf") on input fh */ #define OPpOPEN_OUT_RAW 64 /* binmode(F,":raw") on output fh */ #define OPpOPEN_OUT_CRLF 128 /* binmode(F,":crlf") on output fh */ /* Private for OP_EXIT, HUSH also for OP_DIE */ #define OPpHUSH_VMSISH 64 /* hush DCL exit msg vmsish mode*/ #define OPpEXIT_VMSISH 128 /* exit(0) vs. exit(1) vmsish mode*/ /* Private for OP_FTXXX */ #define OPpFT_ACCESS 2 /* use filetest 'access' */ #define OPpFT_STACKED 4 /* stacked filetest, as in "-f -x $f" */ #define OP_IS_FILETEST_ACCESS(op) \ (((op)->op_type) == OP_FTRREAD || \ ((op)->op_type) == OP_FTRWRITE || \ ((op)->op_type) == OP_FTREXEC || \ ((op)->op_type) == OP_FTEREAD || \ ((op)->op_type) == OP_FTEWRITE || \ ((op)->op_type) == OP_FTEEXEC) /* Private for OP_(MAP|GREP)(WHILE|START) */ #define OPpGREP_LEX 2 /* iterate over lexical $_ */ /* Private for OP_ENTEREVAL */ #define OPpEVAL_HAS_HH 2 /* Does it have a copy of %^H */ struct op { BASEOP }; struct unop { BASEOP OP * op_first; }; struct binop { BASEOP OP * op_first; OP * op_last; }; struct logop { BASEOP OP * op_first; OP * op_other; }; struct listop { BASEOP OP * op_first; OP * op_last; }; struct pmop { BASEOP OP * op_first; OP * op_last; OP * op_pmreplroot; /* (type is really union {OP*,GV*,PADOFFSET}) */ OP * op_pmreplstart; PMOP * op_pmnext; /* list of all scanpats */ #ifdef USE_ITHREADS IV op_pmoffset; #else REGEXP * op_pmregexp; /* compiled expression */ #endif U32 op_pmflags; U32 op_pmpermflags; U8 op_pmdynflags; #ifdef USE_ITHREADS char * op_pmstashpv; #else HV * op_pmstash; #endif }; #ifdef USE_ITHREADS #define PM_GETRE(o) (INT2PTR(REGEXP*,SvIVX(PL_regex_pad[(o)->op_pmoffset]))) #define PM_SETRE(o,r) STMT_START { \ SV* const sv = PL_regex_pad[(o)->op_pmoffset]; \ sv_setiv(sv, PTR2IV(r)); \ } STMT_END #define PM_GETRE_SAFE(o) (PL_regex_pad ? PM_GETRE(o) : (REGEXP*)0) #define PM_SETRE_SAFE(o,r) if (PL_regex_pad) PM_SETRE(o,r) #else #define PM_GETRE(o) ((o)->op_pmregexp) #define PM_SETRE(o,r) ((o)->op_pmregexp = (r)) #define PM_GETRE_SAFE PM_GETRE #define PM_SETRE_SAFE PM_SETRE #endif #define PMdf_USED 0x01 /* pm has been used once already */ #define PMdf_TAINTED 0x02 /* pm compiled from tainted pattern */ #define PMdf_UTF8 0x04 /* pm compiled from utf8 data */ #define PMdf_DYN_UTF8 0x08 #define PMdf_CMP_UTF8 (PMdf_UTF8|PMdf_DYN_UTF8) #define PMf_RETAINT 0x0001 /* taint $1 etc. if target tainted */ #define PMf_ONCE 0x0002 /* use pattern only once per reset */ #define PMf_UNUSED 0x0004 /* free for use */ #define PMf_MAYBE_CONST 0x0008 /* replacement contains variables */ #define PMf_SKIPWHITE 0x0010 /* skip leading whitespace for split */ #define PMf_WHITE 0x0020 /* pattern is \s+ */ #define PMf_CONST 0x0040 /* subst replacement is constant */ #define PMf_KEEP 0x0080 /* keep 1st runtime pattern forever */ #define PMf_GLOBAL 0x0100 /* pattern had a g modifier */ #define PMf_CONTINUE 0x0200 /* don't reset pos() if //g fails */ #define PMf_EVAL 0x0400 /* evaluating replacement as expr */ #define PMf_LOCALE 0x0800 /* use locale for character types */ #define PMf_MULTILINE 0x1000 /* assume multiple lines */ #define PMf_SINGLELINE 0x2000 /* assume single line */ #define PMf_FOLD 0x4000 /* case insensitivity */ #define PMf_EXTENDED 0x8000 /* chuck embedded whitespace */ /* mask of bits stored in regexp->reganch */ #define PMf_COMPILETIME (PMf_MULTILINE|PMf_SINGLELINE|PMf_LOCALE|PMf_FOLD|PMf_EXTENDED) #ifdef USE_ITHREADS # define PmopSTASHPV(o) ((o)->op_pmstashpv) # define PmopSTASHPV_set(o,pv) (PmopSTASHPV(o) = savesharedpv(pv)) # define PmopSTASH(o) (PmopSTASHPV(o) \ ? gv_stashpv(PmopSTASHPV(o),GV_ADD) : NULL) # define PmopSTASH_set(o,hv) PmopSTASHPV_set(o, ((hv) ? HvNAME_get(hv) : NULL)) # define PmopSTASH_free(o) PerlMemShared_free(PmopSTASHPV(o)) #else # define PmopSTASH(o) ((o)->op_pmstash) # define PmopSTASH_set(o,hv) ((o)->op_pmstash = (hv)) # define PmopSTASHPV(o) (PmopSTASH(o) ? HvNAME_get(PmopSTASH(o)) : NULL) /* op_pmstash is not refcounted */ # define PmopSTASHPV_set(o,pv) PmopSTASH_set((o), gv_stashpv(pv,GV_ADD)) # define PmopSTASH_free(o) #endif struct svop { BASEOP SV * op_sv; }; struct padop { BASEOP PADOFFSET op_padix; }; struct pvop { BASEOP char * op_pv; }; struct loop { BASEOP OP * op_first; OP * op_last; OP * op_redoop; OP * op_nextop; OP * op_lastop; }; #define cUNOPx(o) ((UNOP*)o) #define cBINOPx(o) ((BINOP*)o) #define cLISTOPx(o) ((LISTOP*)o) #define cLOGOPx(o) ((LOGOP*)o) #define cPMOPx(o) ((PMOP*)o) #define cSVOPx(o) ((SVOP*)o) #define cPADOPx(o) ((PADOP*)o) #define cPVOPx(o) ((PVOP*)o) #define cCOPx(o) ((COP*)o) #define cLOOPx(o) ((LOOP*)o) #define cUNOP cUNOPx(PL_op) #define cBINOP cBINOPx(PL_op) #define cLISTOP cLISTOPx(PL_op) #define cLOGOP cLOGOPx(PL_op) #define cPMOP cPMOPx(PL_op) #define cSVOP cSVOPx(PL_op) #define cPADOP cPADOPx(PL_op) #define cPVOP cPVOPx(PL_op) #define cCOP cCOPx(PL_op) #define cLOOP cLOOPx(PL_op) #define cUNOPo cUNOPx(o) #define cBINOPo cBINOPx(o) #define cLISTOPo cLISTOPx(o) #define cLOGOPo cLOGOPx(o) #define cPMOPo cPMOPx(o) #define cSVOPo cSVOPx(o) #define cPADOPo cPADOPx(o) #define cPVOPo cPVOPx(o) #define cCOPo cCOPx(o) #define cLOOPo cLOOPx(o) #define kUNOP cUNOPx(kid) #define kBINOP cBINOPx(kid) #define kLISTOP cLISTOPx(kid) #define kLOGOP cLOGOPx(kid) #define kPMOP cPMOPx(kid) #define kSVOP cSVOPx(kid) #define kPADOP cPADOPx(kid) #define kPVOP cPVOPx(kid) #define kCOP cCOPx(kid) #define kLOOP cLOOPx(kid) #ifdef USE_ITHREADS # define cGVOPx_gv(o) ((GV*)PAD_SVl(cPADOPx(o)->op_padix)) # define IS_PADGV(v) (v && SvTYPE(v) == SVt_PVGV && GvIN_PAD(v)) # define IS_PADCONST(v) (v && SvREADONLY(v)) # define cSVOPx_sv(v) (cSVOPx(v)->op_sv \ ? cSVOPx(v)->op_sv : PAD_SVl((v)->op_targ)) # define cSVOPx_svp(v) (cSVOPx(v)->op_sv \ ? &cSVOPx(v)->op_sv : &PAD_SVl((v)->op_targ)) #else # define cGVOPx_gv(o) ((GV*)cSVOPx(o)->op_sv) # define IS_PADGV(v) FALSE # define IS_PADCONST(v) FALSE # define cSVOPx_sv(v) (cSVOPx(v)->op_sv) # define cSVOPx_svp(v) (&cSVOPx(v)->op_sv) #endif #define cGVOP_gv cGVOPx_gv(PL_op) #define cGVOPo_gv cGVOPx_gv(o) #define kGVOP_gv cGVOPx_gv(kid) #define cSVOP_sv cSVOPx_sv(PL_op) #define cSVOPo_sv cSVOPx_sv(o) #define kSVOP_sv cSVOPx_sv(kid) #define Nullop Null(OP*) /* Lowest byte-and-a-bit of PL_opargs */ #define OA_MARK 1 #define OA_FOLDCONST 2 #define OA_RETSCALAR 4 #define OA_TARGET 8 #define OA_RETINTEGER 16 #define OA_OTHERINT 32 #define OA_DANGEROUS 64 #define OA_DEFGV 128 #define OA_TARGLEX 256 /* The next 4 bits encode op class information */ #define OCSHIFT 9 #define OA_CLASS_MASK (15 << OCSHIFT) #define OA_BASEOP (0 << OCSHIFT) #define OA_UNOP (1 << OCSHIFT) #define OA_BINOP (2 << OCSHIFT) #define OA_LOGOP (3 << OCSHIFT) #define OA_LISTOP (4 << OCSHIFT) #define OA_PMOP (5 << OCSHIFT) #define OA_SVOP (6 << OCSHIFT) #define OA_PADOP (7 << OCSHIFT) #define OA_PVOP_OR_SVOP (8 << OCSHIFT) #define OA_LOOP (9 << OCSHIFT) #define OA_COP (10 << OCSHIFT) #define OA_BASEOP_OR_UNOP (11 << OCSHIFT) #define OA_FILESTATOP (12 << OCSHIFT) #define OA_LOOPEXOP (13 << OCSHIFT) #define OASHIFT 13 /* Remaining nybbles of PL_opargs */ #define OA_SCALAR 1 #define OA_LIST 2 #define OA_AVREF 3 #define OA_HVREF 4 #define OA_CVREF 5 #define OA_FILEREF 6 #define OA_SCALARREF 7 #define OA_OPTIONAL 8 #ifdef USE_ITHREADS # define OP_REFCNT_INIT MUTEX_INIT(&PL_op_mutex) # ifdef PERL_CORE # define OP_REFCNT_LOCK MUTEX_LOCK(&PL_op_mutex) # define OP_REFCNT_UNLOCK MUTEX_UNLOCK(&PL_op_mutex) # else # define OP_REFCNT_LOCK op_refcnt_lock() # define OP_REFCNT_UNLOCK op_refcnt_unlock() # endif # define OP_REFCNT_TERM MUTEX_DESTROY(&PL_op_mutex) #else # define OP_REFCNT_INIT NOOP # define OP_REFCNT_LOCK NOOP # define OP_REFCNT_UNLOCK NOOP # define OP_REFCNT_TERM NOOP #endif #define OpREFCNT_set(o,n) ((o)->op_targ = (n)) #define OpREFCNT_inc(o) ((o) ? (++(o)->op_targ, (o)) : NULL) #define OpREFCNT_dec(o) (--(o)->op_targ) /* flags used by Perl_load_module() */ #define PERL_LOADMOD_DENY 0x1 #define PERL_LOADMOD_NOIMPORT 0x2 #define PERL_LOADMOD_IMPORT_OPS 0x4 #if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) #define ref(o, type) doref(o, type, TRUE) #endif /* no longer used anywhere in core */ #ifndef PERL_CORE #define cv_ckproto(cv, gv, p) cv_ckproto_len(cv, gv, p, p ? strlen(p) : 0) #endif #ifdef USE_REENTRANT_API #include "reentr.h" #endif #if defined(PL_OP_SLAB_ALLOC) #define NewOp(m,var,c,type) \ (var = (type *) Perl_Slab_Alloc(aTHX_ m,c*sizeof(type))) #define NewOpSz(m,var,size) \ (var = (OP *) Perl_Slab_Alloc(aTHX_ m,size)) #define FreeOp(p) Perl_Slab_Free(aTHX_ p) #else #define NewOp(m, var, c, type) \ (var = (MEM_WRAP_CHECK_(c,type) \ (type*)PerlMemShared_calloc(c, sizeof(type)))) #define NewOpSz(m, var, size) \ (var = (OP*)PerlMemShared_calloc(1, size)) #define FreeOp(p) PerlMemShared_free(p) #endif #ifdef PERL_MAD # define MAD_NULL 1 # define MAD_PV 2 # define MAD_OP 3 # define MAD_SV 4 struct madprop { MADPROP* mad_next; void *mad_val; U32 mad_vlen; /* short mad_count; */ char mad_key; char mad_type; }; struct token { I32 tk_type; YYSTYPE tk_lval; MADPROP* tk_mad; }; #endif /* * Values that can be hold by mad_key : * ^ unfilled head spot * , literal , * ; literal ; (blank if implicit ; at end of block) * : literal : from ?: or attr list * + unary + * ? literal ? from ?: * ( literal ( * ) literal ) * [ literal [ * ] literal ] * { literal { * } literal } * @ literal @ sigil * $ literal $ sigil * * literal * sigil * ! use is source filtered * & & or sub * # whitespace/comment following ; or } * # $# sigil * 1 1st ; from for(;;) * 1 retired protasis * 2 2nd ; from for(;;) * 2 retired apodosis * 3 C-style for list * a sub or var attributes * a non-method arrow operator * A method arrow operator * A use import args * b format block * B retired stub block * C constant conditional op * d declarator * D do block * e unreached "else" (see C) * e expression producing E * E tr/E/R/, /E/ * f folded constant op * F peg op for format * i if/unless modifier * I if/elsif/unless statement * K retired kid op * l last index of array ($#foo) * L label * m modifier on regex * M my assignment slurped into some other operator's target * n sub or format name * o current operator/declarator name * o else/continue * O generic optimized op * p peg to hold extra whitespace at statement level * P peg op for package declaration * q opening quote * = quoted material * Q closing quote * Q optimized qw// * r expression producing R * R tr/E/R/ s/E/R/ * R assign slurped by split * s sub signature * S use import stub (no import) * S retired sort block * t unreached "then" (see C) * U use import op * v private sv of for loop * V use version * w while/until modifier * W while/for statement * x optimized qw * X random thing * _ whitespace/comments preceding anything else * ~ =~ operator */ Convert-Binary-C-0.76/tests/include/perlinc/pp.h0000644000175000001440000004307511550664630020233 0ustar mhxusers/* pp.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #define PP(s) OP * Perl_##s(pTHX) /* =head1 Stack Manipulation Macros =for apidoc AmU||SP Stack pointer. This is usually handled by C. See C and C. =for apidoc AmU||MARK Stack marker variable for the XSUB. See C. =for apidoc Am|void|PUSHMARK|SP Opening bracket for arguments on a callback. See C and L. =for apidoc Ams||dSP Declares a local copy of perl's stack pointer for the XSUB, available via the C macro. See C. =for apidoc ms||djSP Declare Just C. This is actually identical to C, and declares a local copy of perl's stack pointer, available via the C macro. See C. (Available for backward source code compatibility with the old (Perl 5.005) thread model.) =for apidoc Ams||dMARK Declare a stack marker variable, C, for the XSUB. See C and C. =for apidoc Ams||dORIGMARK Saves the original stack mark for the XSUB. See C. =for apidoc AmU||ORIGMARK The original stack mark for the XSUB. See C. =for apidoc Ams||SPAGAIN Refetch the stack pointer. Used after a callback. See L. =cut */ #undef SP /* Solaris 2.7 i386 has this in /usr/include/sys/reg.h */ #define SP sp #define MARK mark #define TARG targ #define PUSHMARK(p) \ STMT_START { \ if (++PL_markstack_ptr == PL_markstack_max) \ markstack_grow(); \ *PL_markstack_ptr = (p) - PL_stack_base; \ } STMT_END #define TOPMARK (*PL_markstack_ptr) #define POPMARK (*PL_markstack_ptr--) #define dSP register SV **sp = PL_stack_sp #define djSP dSP #define dMARK register SV **mark = PL_stack_base + POPMARK #define dORIGMARK const I32 origmark = mark - PL_stack_base #define ORIGMARK (PL_stack_base + origmark) #define SPAGAIN sp = PL_stack_sp #define MSPAGAIN STMT_START { sp = PL_stack_sp; mark = ORIGMARK; } STMT_END #define GETTARGETSTACKED targ = (PL_op->op_flags & OPf_STACKED ? POPs : PAD_SV(PL_op->op_targ)) #define dTARGETSTACKED SV * GETTARGETSTACKED #define GETTARGET targ = PAD_SV(PL_op->op_targ) #define dTARGET SV * GETTARGET #define GETATARGET targ = (PL_op->op_flags & OPf_STACKED ? sp[-1] : PAD_SV(PL_op->op_targ)) #define dATARGET SV * GETATARGET #define dTARG SV *targ #define NORMAL PL_op->op_next #define DIE return Perl_die /* =for apidoc Ams||PUTBACK Closing bracket for XSUB arguments. This is usually handled by C. See C and L for other uses. =for apidoc Amn|SV*|POPs Pops an SV off the stack. =for apidoc Amn|char*|POPp Pops a string off the stack. Deprecated. New code should use POPpx. =for apidoc Amn|char*|POPpx Pops a string off the stack. =for apidoc Amn|char*|POPpbytex Pops a string off the stack which must consist of bytes i.e. characters < 256. =for apidoc Amn|NV|POPn Pops a double off the stack. =for apidoc Amn|IV|POPi Pops an integer off the stack. =for apidoc Amn|long|POPl Pops a long off the stack. =cut */ #define PUTBACK PL_stack_sp = sp #define RETURN return (PUTBACK, NORMAL) #define RETURNOP(o) return (PUTBACK, o) #define RETURNX(x) return (x, PUTBACK, NORMAL) #define POPs (*sp--) #define POPp (SvPVx(POPs, PL_na)) /* deprecated */ #define POPpx (SvPVx_nolen(POPs)) #define POPpconstx (SvPVx_nolen_const(POPs)) #define POPpbytex (SvPVbytex_nolen(POPs)) #define POPn (SvNVx(POPs)) #define POPi ((IV)SvIVx(POPs)) #define POPu ((UV)SvUVx(POPs)) #define POPl ((long)SvIVx(POPs)) #define POPul ((unsigned long)SvIVx(POPs)) #ifdef HAS_QUAD #define POPq ((Quad_t)SvIVx(POPs)) #define POPuq ((Uquad_t)SvUVx(POPs)) #endif #define TOPs (*sp) #define TOPm1s (*(sp-1)) #define TOPp1s (*(sp+1)) #define TOPp (SvPV(TOPs, PL_na)) /* deprecated */ #define TOPpx (SvPV_nolen(TOPs)) #define TOPn (SvNV(TOPs)) #define TOPi ((IV)SvIV(TOPs)) #define TOPu ((UV)SvUV(TOPs)) #define TOPl ((long)SvIV(TOPs)) #define TOPul ((unsigned long)SvUV(TOPs)) #ifdef HAS_QUAD #define TOPq ((Quad_t)SvIV(TOPs)) #define TOPuq ((Uquad_t)SvUV(TOPs)) #endif /* Go to some pains in the rare event that we must extend the stack. */ /* =for apidoc Am|void|EXTEND|SP|int nitems Used to extend the argument stack for an XSUB's return values. Once used, guarantees that there is room for at least C to be pushed onto the stack. =for apidoc Am|void|PUSHs|SV* sv Push an SV onto the stack. The stack must have room for this element. Does not handle 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|PUSHp|char* str|STRLEN len Push a string onto the stack. The stack must have room for this element. The C indicates the length of the string. Handles 'set' magic. Uses C, so C or C should be called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C instead. See also C and C. =for apidoc Am|void|PUSHn|NV nv Push a double onto the stack. The stack must have room for this element. Handles 'set' magic. Uses C, so C or C should be called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C instead. See also C and C. =for apidoc Am|void|PUSHi|IV iv Push an integer onto the stack. The stack must have room for this element. Handles 'set' magic. Uses C, so C or C should be called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C instead. See also C and C. =for apidoc Am|void|PUSHu|UV uv Push an unsigned integer onto the stack. The stack must have room for this element. Handles 'set' magic. Uses C, so C or C should be called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C instead. See also C and C. =for apidoc Am|void|XPUSHs|SV* sv Push an SV onto the stack, extending the stack if necessary. Does not handle 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|XPUSHp|char* str|STRLEN len Push a string onto the stack, extending the stack if necessary. The C indicates the length of the string. Handles 'set' magic. Uses C, so C or C should be called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C instead. See also C and C. =for apidoc Am|void|XPUSHn|NV nv Push a double onto the stack, extending the stack if necessary. Handles 'set' magic. Uses C, so C or C should be called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C instead. See also C and C. =for apidoc Am|void|XPUSHi|IV iv Push an integer onto the stack, extending the stack if necessary. Handles 'set' magic. Uses C, so C or C should be called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C instead. See also C and C. =for apidoc Am|void|XPUSHu|UV uv Push an unsigned integer onto the stack, extending the stack if necessary. Handles 'set' magic. Uses C, so C or C should be called to declare it. Do not call multiple C-oriented macros to return lists from XSUB's - see C instead. See also C and C. =for apidoc Am|void|PUSHmortal Push a new mortal SV onto the stack. The stack must have room for this element. Does not handle 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|mPUSHp|char* str|STRLEN len Push a string onto the stack. The stack must have room for this element. The C indicates the length of the string. Handles 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|mPUSHn|NV nv Push a double onto the stack. The stack must have room for this element. Handles 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|mPUSHi|IV iv Push an integer onto the stack. The stack must have room for this element. Handles 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|mPUSHu|UV uv Push an unsigned integer onto the stack. The stack must have room for this element. Handles 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|XPUSHmortal Push a new mortal SV onto the stack, extending the stack if necessary. Does not handle 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|mXPUSHp|char* str|STRLEN len Push a string onto the stack, extending the stack if necessary. The C indicates the length of the string. Handles 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|mXPUSHn|NV nv Push a double onto the stack, extending the stack if necessary. Handles 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|mXPUSHi|IV iv Push an integer onto the stack, extending the stack if necessary. Handles 'set' magic. Does not use C. See also C, C and C. =for apidoc Am|void|mXPUSHu|UV uv Push an unsigned integer onto the stack, extending the stack if necessary. Handles 'set' magic. Does not use C. See also C, C and C. =cut */ #define EXTEND(p,n) STMT_START { if (PL_stack_max - p < (int)(n)) { \ sp = stack_grow(sp,p, (int) (n)); \ } } STMT_END /* Same thing, but update mark register too. */ #define MEXTEND(p,n) STMT_START {if (PL_stack_max - p < (int)(n)) { \ const int markoff = mark - PL_stack_base; \ sp = stack_grow(sp,p,(int) (n)); \ mark = PL_stack_base + markoff; \ } } STMT_END #define PUSHs(s) (*++sp = (s)) #define PUSHTARG STMT_START { SvSETMAGIC(TARG); PUSHs(TARG); } STMT_END #define PUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); PUSHTARG; } STMT_END #define PUSHn(n) STMT_START { sv_setnv(TARG, (NV)(n)); PUSHTARG; } STMT_END #define PUSHi(i) STMT_START { sv_setiv(TARG, (IV)(i)); PUSHTARG; } STMT_END #define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END #define XPUSHs(s) STMT_START { EXTEND(sp,1); (*++sp = (s)); } STMT_END #define XPUSHTARG STMT_START { SvSETMAGIC(TARG); XPUSHs(TARG); } STMT_END #define XPUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); XPUSHTARG; } STMT_END #define XPUSHn(n) STMT_START { sv_setnv(TARG, (NV)(n)); XPUSHTARG; } STMT_END #define XPUSHi(i) STMT_START { sv_setiv(TARG, (IV)(i)); XPUSHTARG; } STMT_END #define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END #define XPUSHundef STMT_START { SvOK_off(TARG); XPUSHs(TARG); } STMT_END #define PUSHmortal PUSHs(sv_newmortal()) #define mPUSHp(p,l) sv_setpvn_mg(PUSHmortal, (p), (l)) #define mPUSHn(n) sv_setnv_mg(PUSHmortal, (NV)(n)) #define mPUSHi(i) sv_setiv_mg(PUSHmortal, (IV)(i)) #define mPUSHu(u) sv_setuv_mg(PUSHmortal, (UV)(u)) #define XPUSHmortal XPUSHs(sv_newmortal()) #define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn_mg(PUSHmortal, (p), (l)); } STMT_END #define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv_mg(PUSHmortal, (NV)(n)); } STMT_END #define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv_mg(PUSHmortal, (IV)(i)); } STMT_END #define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv_mg(PUSHmortal, (UV)(u)); } STMT_END #define SETs(s) (*sp = s) #define SETTARG STMT_START { SvSETMAGIC(TARG); SETs(TARG); } STMT_END #define SETp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); SETTARG; } STMT_END #define SETn(n) STMT_START { sv_setnv(TARG, (NV)(n)); SETTARG; } STMT_END #define SETi(i) STMT_START { sv_setiv(TARG, (IV)(i)); SETTARG; } STMT_END #define SETu(u) STMT_START { sv_setuv(TARG, (UV)(u)); SETTARG; } STMT_END #define dTOPss SV *sv = TOPs #define dPOPss SV *sv = POPs #define dTOPnv NV value = TOPn #define dPOPnv NV value = POPn #define dTOPiv IV value = TOPi #define dPOPiv IV value = POPi #define dTOPuv UV value = TOPu #define dPOPuv UV value = POPu #ifdef HAS_QUAD #define dTOPqv Quad_t value = TOPu #define dPOPqv Quad_t value = POPu #define dTOPuqv Uquad_t value = TOPuq #define dPOPuqv Uquad_t value = POPuq #endif #define dPOPXssrl(X) SV *right = POPs; SV *left = CAT2(X,s) #define dPOPXnnrl(X) NV right = POPn; NV left = CAT2(X,n) #define dPOPXiirl(X) IV right = POPi; IV left = CAT2(X,i) #define USE_LEFT(sv) \ (SvOK(sv) || SvGMAGICAL(sv) || !(PL_op->op_flags & OPf_STACKED)) #define dPOPXnnrl_ul(X) \ NV right = POPn; \ SV *leftsv = CAT2(X,s); \ NV left = USE_LEFT(leftsv) ? SvNV(leftsv) : 0.0 #define dPOPXiirl_ul(X) \ IV right = POPi; \ SV *leftsv = CAT2(X,s); \ IV left = USE_LEFT(leftsv) ? SvIV(leftsv) : 0 #define dPOPPOPssrl dPOPXssrl(POP) #define dPOPPOPnnrl dPOPXnnrl(POP) #define dPOPPOPnnrl_ul dPOPXnnrl_ul(POP) #define dPOPPOPiirl dPOPXiirl(POP) #define dPOPPOPiirl_ul dPOPXiirl_ul(POP) #define dPOPTOPssrl dPOPXssrl(TOP) #define dPOPTOPnnrl dPOPXnnrl(TOP) #define dPOPTOPnnrl_ul dPOPXnnrl_ul(TOP) #define dPOPTOPiirl dPOPXiirl(TOP) #define dPOPTOPiirl_ul dPOPXiirl_ul(TOP) #define RETPUSHYES RETURNX(PUSHs(&PL_sv_yes)) #define RETPUSHNO RETURNX(PUSHs(&PL_sv_no)) #define RETPUSHUNDEF RETURNX(PUSHs(&PL_sv_undef)) #define RETSETYES RETURNX(SETs(&PL_sv_yes)) #define RETSETNO RETURNX(SETs(&PL_sv_no)) #define RETSETUNDEF RETURNX(SETs(&PL_sv_undef)) #define ARGTARG PL_op->op_targ /* See OPpTARGET_MY: */ #define MAXARG (PL_op->op_private & 15) #define SWITCHSTACK(f,t) \ STMT_START { \ AvFILLp(f) = sp - PL_stack_base; \ PL_stack_base = AvARRAY(t); \ PL_stack_max = PL_stack_base + AvMAX(t); \ sp = PL_stack_sp = PL_stack_base + AvFILLp(t); \ PL_curstack = t; \ } STMT_END #define EXTEND_MORTAL(n) \ STMT_START { \ if (PL_tmps_ix + (n) >= PL_tmps_max) \ tmps_grow(n); \ } STMT_END #define AMGf_noright 1 #define AMGf_noleft 2 #define AMGf_assign 4 #define AMGf_unary 8 #define tryAMAGICbinW_var(meth_enum,assign,set) STMT_START { \ SV* const left = *(sp-1); \ SV* const right = *(sp); \ if ((SvAMAGIC(left)||SvAMAGIC(right))) {\ SV * const tmpsv = amagic_call(left, \ right, \ meth_enum, \ (assign)? AMGf_assign: 0); \ if (tmpsv) { \ SPAGAIN; \ (void)POPs; set(tmpsv); RETURN; } \ } \ } STMT_END #define tryAMAGICbinW(meth,assign,set) \ tryAMAGICbinW_var(CAT2(meth,_amg),assign,set) #define tryAMAGICbin_var(meth_enum,assign) \ tryAMAGICbinW_var(meth_enum,assign,SETsv) #define tryAMAGICbin(meth,assign) \ tryAMAGICbin_var(CAT2(meth,_amg),assign) #define tryAMAGICbinSET(meth,assign) tryAMAGICbinW(meth,assign,SETs) #define tryAMAGICbinSET_var(meth_enum,assign) \ tryAMAGICbinW_var(meth_enum,assign,SETs) #define AMG_CALLun_var(sv,meth_enum) amagic_call(sv,&PL_sv_undef, \ meth_enum,AMGf_noright | AMGf_unary) #define AMG_CALLun(sv,meth) AMG_CALLun_var(sv,CAT2(meth,_amg)) #define AMG_CALLbinL(left,right,meth) \ amagic_call(left,right,CAT2(meth,_amg),AMGf_noright) #define tryAMAGICunW_var(meth_enum,set,shift,ret) STMT_START { \ SV* tmpsv; \ SV* arg= sp[shift]; \ if(0) goto am_again; /* shut up unused warning */ \ am_again: \ if ((SvAMAGIC(arg))&&\ (tmpsv=AMG_CALLun_var(arg,meth_enum))) {\ SPAGAIN; if (shift) sp += shift; \ set(tmpsv); ret; } \ } STMT_END #define tryAMAGICunW(meth,set,shift,ret) \ tryAMAGICunW_var(CAT2(meth,_amg),set,shift,ret) #define FORCE_SETs(sv) STMT_START { sv_setsv(TARG, (sv)); SETTARG; } STMT_END #define tryAMAGICun_var(meth_enum) tryAMAGICunW_var(meth_enum,SETsvUN,0,RETURN) #define tryAMAGICun(meth) tryAMAGICun_var(CAT2(meth,_amg)) #define tryAMAGICunSET(meth) tryAMAGICunW(meth,SETs,0,RETURN) #define tryAMAGICunTARGET(meth, shift) \ STMT_START { dSP; sp--; /* get TARGET from below PL_stack_sp */ \ { dTARGETSTACKED; \ { dSP; tryAMAGICunW(meth,FORCE_SETs,shift,RETURN);}}} STMT_END #define setAGAIN(ref) \ STMT_START { \ sv = ref; \ if (!SvROK(ref)) \ Perl_croak(aTHX_ "Overloaded dereference did not return a reference"); \ if (ref != arg && SvRV(ref) != SvRV(arg)) { \ arg = ref; \ goto am_again; \ } \ } STMT_END #define tryAMAGICunDEREF(meth) tryAMAGICunW(meth,setAGAIN,0,(void)0) #define opASSIGN (PL_op->op_flags & OPf_STACKED) #define SETsv(sv) STMT_START { \ if (opASSIGN || (SvFLAGS(TARG) & SVs_PADMY)) \ { sv_setsv(TARG, (sv)); SETTARG; } \ else SETs(sv); } STMT_END #define SETsvUN(sv) STMT_START { \ if (SvFLAGS(TARG) & SVs_PADMY) \ { sv_setsv(TARG, (sv)); SETTARG; } \ else SETs(sv); } STMT_END /* newSVsv does not behave as advertised, so we copy missing * information by hand */ /* SV* ref causes confusion with the member variable changed SV* ref to SV* tmpRef */ #define RvDEEPCP(rv) STMT_START { SV* tmpRef=SvRV(rv); \ if (SvREFCNT(tmpRef)>1) { \ SvRV_set(rv, AMG_CALLun(rv,copy)); \ SvREFCNT_dec(tmpRef); \ } } STMT_END /* =for apidoc mU||LVRET True if this op will be the return value of an lvalue subroutine =cut */ #define LVRET ((PL_op->op_private & OPpMAYBE_LVSUB) && is_lvalue_sub()) /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/perlinc/sv.h0000644000175000001440000017357711550664630020257 0ustar mhxusers/* sv.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #ifdef sv_flags #undef sv_flags /* Convex has this in for sigvec() */ #endif /* =head1 SV Flags =for apidoc AmU||svtype An enum of flags for Perl types. These are found in the file B in the C enum. Test these flags with the C macro. =for apidoc AmU||SVt_PV Pointer type flag for scalars. See C. =for apidoc AmU||SVt_IV Integer type flag for scalars. See C. =for apidoc AmU||SVt_NV Double type flag for scalars. See C. =for apidoc AmU||SVt_PVMG Type flag for blessed scalars. See C. =for apidoc AmU||SVt_PVAV Type flag for arrays. See C. =for apidoc AmU||SVt_PVHV Type flag for hashes. See C. =for apidoc AmU||SVt_PVCV Type flag for code refs. See C. =cut */ typedef enum { SVt_NULL, /* 0 */ SVt_IV, /* 1 */ SVt_NV, /* 2 */ SVt_RV, /* 3 */ SVt_PV, /* 4 */ SVt_PVIV, /* 5 */ SVt_PVNV, /* 6 */ SVt_PVMG, /* 7 */ SVt_PVBM, /* 8 */ SVt_PVGV, /* 9 */ SVt_PVLV, /* 10 */ SVt_PVAV, /* 11 */ SVt_PVHV, /* 12 */ SVt_PVCV, /* 13 */ SVt_PVFM, /* 14 */ SVt_PVIO, /* 15 */ SVt_LAST /* keep last in enum. used to size arrays */ } svtype; /* There is collusion here with sv_clear - sv_clear exits early for SVt_NULL and SVt_IV, so never reaches the clause at the end that uses sv_type_details->body_size to determine whether to call safefree(). Hence body_size can be set no-zero to record the size of PTEs and HEs, without fear of bogus frees. */ #ifdef PERL_IN_SV_C #define PTE_SVSLOT SVt_IV #endif #if defined(PERL_IN_HV_C) || defined(PERL_IN_XS_APITEST) #define HE_SVSLOT SVt_NULL #endif #define PERL_ARENA_ROOTS_SIZE (SVt_LAST) /* typedefs to eliminate some typing */ typedef struct he HE; typedef struct hek HEK; /* Using C's structural equivalence to help emulate C++ inheritance here... */ /* start with 2 sv-head building blocks */ #define _SV_HEAD(ptrtype) \ ptrtype sv_any; /* pointer to body */ \ U32 sv_refcnt; /* how many references to us */ \ U32 sv_flags /* what we are */ #define _SV_HEAD_UNION \ union { \ IV svu_iv; \ UV svu_uv; \ SV* svu_rv; /* pointer to another SV */ \ char* svu_pv; /* pointer to malloced string */ \ SV** svu_array; \ HE** svu_hash; \ GP* svu_gp; \ } sv_u struct STRUCT_SV { /* struct sv { */ _SV_HEAD(void*); _SV_HEAD_UNION; #ifdef DEBUG_LEAKING_SCALARS unsigned sv_debug_optype:9; /* the type of OP that allocated us */ unsigned sv_debug_inpad:1; /* was allocated in a pad for an OP */ unsigned sv_debug_cloned:1; /* was cloned for an ithread */ unsigned sv_debug_line:16; /* the line where we were allocated */ char * sv_debug_file; /* the file where we were allocated */ #endif }; struct gv { _SV_HEAD(XPVGV*); /* pointer to xpvgv body */ _SV_HEAD_UNION; }; struct cv { _SV_HEAD(XPVCV*); /* pointer to xpvcv body */ _SV_HEAD_UNION; }; struct av { _SV_HEAD(XPVAV*); /* pointer to xpvav body */ _SV_HEAD_UNION; }; struct hv { _SV_HEAD(XPVHV*); /* pointer to xpvhv body */ _SV_HEAD_UNION; }; struct io { _SV_HEAD(XPVIO*); /* pointer to xpvio body */ _SV_HEAD_UNION; }; #undef _SV_HEAD #undef _SV_HEAD_UNION /* ensure no pollution */ /* =head1 SV Manipulation Functions =for apidoc Am|U32|SvREFCNT|SV* sv Returns the value of the object's reference count. =for apidoc Am|SV*|SvREFCNT_inc|SV* sv Increments the reference count of the given SV. All of the following SvREFCNT_inc* macros are optimized versions of SvREFCNT_inc, and can be replaced with SvREFCNT_inc. =for apidoc Am|SV*|SvREFCNT_inc_NN|SV* sv Same as SvREFCNT_inc, but can only be used if you know I is not NULL. Since we don't have to check the NULLness, it's faster and smaller. =for apidoc Am|void|SvREFCNT_inc_void|SV* sv Same as SvREFCNT_inc, but can only be used if you don't need the return value. The macro doesn't need to return a meaningful value. =for apidoc Am|void|SvREFCNT_inc_void_NN|SV* sv Same as SvREFCNT_inc, but can only be used if you don't need the return value, and you know that I is not NULL. The macro doesn't need to return a meaningful value, or check for NULLness, so it's smaller and faster. =for apidoc Am|SV*|SvREFCNT_inc_simple|SV* sv Same as SvREFCNT_inc, but can only be used with simple variables, not expressions or pointer dereferences. Since we don't have to store a temporary value, it's faster. =for apidoc Am|SV*|SvREFCNT_inc_simple_NN|SV* sv Same as SvREFCNT_inc_simple, but can only be used if you know I is not NULL. Since we don't have to check the NULLness, it's faster and smaller. =for apidoc Am|void|SvREFCNT_inc_simple_void|SV* sv Same as SvREFCNT_inc_simple, but can only be used if you don't need the return value. The macro doesn't need to return a meaningful value. =for apidoc Am|void|SvREFCNT_inc_simple_void_NN|SV* sv Same as SvREFCNT_inc, but can only be used if you don't need the return value, and you know that I is not NULL. The macro doesn't need to return a meaningful value, or check for NULLness, so it's smaller and faster. =for apidoc Am|void|SvREFCNT_dec|SV* sv Decrements the reference count of the given SV. =for apidoc Am|svtype|SvTYPE|SV* sv Returns the type of the SV. See C. =for apidoc Am|void|SvUPGRADE|SV* sv|svtype type Used to upgrade an SV to a more complex form. Uses C to perform the upgrade if necessary. See C. =cut */ #define SvANY(sv) (sv)->sv_any #define SvFLAGS(sv) (sv)->sv_flags #define SvREFCNT(sv) (sv)->sv_refcnt #if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC) # define SvREFCNT_inc(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (SvREFCNT(_sv))++; \ _sv; \ }) # define SvREFCNT_inc_simple(sv) \ ({ \ if (sv) \ (SvREFCNT(sv))++; \ (SV *)(sv); \ }) # define SvREFCNT_inc_NN(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ SvREFCNT(_sv)++; \ _sv; \ }) # define SvREFCNT_inc_void(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (void)(SvREFCNT(_sv)++); \ }) #else # define SvREFCNT_inc(sv) \ ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) # define SvREFCNT_inc_simple(sv) \ ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) # define SvREFCNT_inc_NN(sv) \ (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) # define SvREFCNT_inc_void(sv) \ (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) #endif /* These guys don't need the curly blocks */ #define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END #define SvREFCNT_inc_simple_NN(sv) (++(SvREFCNT(sv)),(SV*)(sv)) #define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) #define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) #if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC) # define SvREFCNT_dec(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) { \ if (SvREFCNT(_sv)) { \ if (--(SvREFCNT(_sv)) == 0) \ Perl_sv_free2(aTHX_ _sv); \ } else { \ sv_free(_sv); \ } \ } \ }) #else #define SvREFCNT_dec(sv) sv_free((SV*)(sv)) #endif #define SVTYPEMASK 0xff #define SvTYPE(sv) (svtype)((sv)->sv_flags & SVTYPEMASK) /* Sadly there are some parts of the core that have pointers to already-freed SV heads, and rely on being able to tell that they are now free. So mark them all by using a consistent macro. */ #define SvIS_FREED(sv) ((sv)->sv_flags == SVTYPEMASK) #define SvUPGRADE(sv, mt) (SvTYPE(sv) >= (mt) || (sv_upgrade(sv, mt), 1)) #define SVf_IOK 0x00000100 /* has valid public integer value */ #define SVf_NOK 0x00000200 /* has valid public numeric value */ #define SVf_POK 0x00000400 /* has valid public pointer value */ #define SVf_ROK 0x00000800 /* has a valid reference pointer */ #define SVp_IOK 0x00001000 /* has valid non-public integer value */ #define SVp_NOK 0x00002000 /* has valid non-public numeric value */ #define SVp_POK 0x00004000 /* has valid non-public pointer value */ #define SVp_SCREAM 0x00008000 /* has been studied? */ #define SVphv_CLONEABLE 0x00008000 /* PVHV (stashes) clone its objects */ #define SVs_PADSTALE 0x00010000 /* lexical has gone out of scope */ #define SVpad_STATE 0x00010000 /* pad name is a "state" var */ #define SVs_PADTMP 0x00020000 /* in use as tmp */ #define SVpad_TYPED 0x00020000 /* pad name is a Typed Lexical */ #define SVs_PADMY 0x00040000 /* in use a "my" variable */ #define SVpad_OUR 0x00040000 /* pad name is "our" instead of "my" */ #define SVs_TEMP 0x00080000 /* string is stealable? */ #define SVs_OBJECT 0x00100000 /* is "blessed" */ #define SVs_GMG 0x00200000 /* has magical get method */ #define SVs_SMG 0x00400000 /* has magical set method */ #define SVs_RMG 0x00800000 /* has random magical methods */ #define SVf_FAKE 0x01000000 /* 0: glob or lexical is just a copy 1: SV head arena wasn't malloc()ed 2: in conjunction with SVf_READONLY marks a shared hash key scalar (SvLEN == 0) or a copy on write string (SvLEN != 0) [SvIsCOW(sv)] 3: For PVCV, whether CvUNIQUE(cv) refers to an eval or once only [CvEVAL(cv), CvSPECIAL(cv)] 4: Whether the regexp pointer is in fact an offset [SvREPADTMP(sv)] 5: On a pad name SV, that slot in the frame AV is a REFCNT'ed reference to a lexical from "outside". */ #define SVphv_REHASH SVf_FAKE /* 6: On a PVHV, hash values are being recalculated */ #define SVf_OOK 0x02000000 /* has valid offset value For a PVHV this means that a hv_aux struct is present after the main array */ #define SVf_BREAK 0x04000000 /* refcnt is artificially low - used * by SV's in final arena cleanup */ #define SVf_READONLY 0x08000000 /* may not be modified */ #define SVf_THINKFIRST (SVf_READONLY|SVf_ROK|SVf_FAKE) #define SVf_OK (SVf_IOK|SVf_NOK|SVf_POK|SVf_ROK| \ SVp_IOK|SVp_NOK|SVp_POK|SVp_SCREAM) #define PRIVSHIFT 4 /* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */ #define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */ #define SVf_UTF8 0x20000000 /* SvPV is UTF-8 encoded */ /* Ensure this value does not clash with the GV_ADD* flags in gv.h */ /* Some private flags. */ /* PVHV */ #define SVphv_SHAREKEYS 0x20000000 /* PVHV keys live on shared string table */ /* PVNV, PVMG, PVGV, presumably only inside pads */ #define SVpad_NAME 0x40000000 /* This SV is a name in the PAD, so SVpad_TYPED, SVpad_OUR and SVpad_STATE apply */ /* PVAV */ #define SVpav_REAL 0x40000000 /* free old entries */ /* PVHV */ #define SVphv_LAZYDEL 0x40000000 /* entry in xhv_eiter must be deleted */ /* PVBM */ #define SVpbm_TAIL 0x40000000 /* ??? */ #define SVrepl_EVAL 0x40000000 /* Replacement part of s///e */ /* IV, PVIV, PVNV, PVMG, PVGV and (I assume) PVLV */ /* Presumably IVs aren't stored in pads */ #define SVf_IVisUV 0x80000000 /* use XPVUV instead of XPVIV */ /* PVAV */ #define SVpav_REIFY 0x80000000 /* can become real */ /* PVHV */ #define SVphv_HASKFLAGS 0x80000000 /* keys have flag byte after hash */ /* PVFM */ #define SVpfm_COMPILED 0x80000000 /* FORMLINE is compiled */ /* PVBM */ #define SVpbm_VALID 0x80000000 /* RV upwards. However, SVf_ROK and SVp_IOK are exclusive */ #define SVprv_WEAKREF 0x80000000 /* Weak reference */ struct xpv { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ }; #if 0 typedef struct xpv xpv_allocated; #else typedef struct { STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ } xpv_allocated; #endif struct xpviv { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; }; #if 0 typedef struct xpviv xpviv_allocated; #else typedef struct { STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; } xpviv_allocated; #endif #define xiv_iv xiv_u.xivu_iv struct xpvuv { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xuvu_iv; UV xuvu_uv; /* unsigned value or pv offset */ void * xuvu_p1; HEK * xivu_namehek; } xuv_u; }; #define xuv_uv xuv_u.xuvu_uv struct xpvnv { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; }; /* These structure must match the beginning of struct xpvhv in hv.h. */ struct xpvmg { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ }; struct xpvlv { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; /* GvNAME */ } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ STRLEN xlv_targoff; STRLEN xlv_targlen; SV* xlv_targ; char xlv_type; /* k=keys .=pos x=substr v=vec /=join/re * y=alem/helem/iter t=tie T=tied HE */ }; struct xpvgv { union { NV xnv_nv; HV * xgv_stash; /* The stash of this GV */ } xnv_u; STRLEN xpv_cur; /* xgv_flags */ STRLEN xpv_len; /* 0 */ union { IV xivu_iv; UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; /* GvNAME */ } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ }; struct xpvbm { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ I32 xbm_useful; /* is this constant pattern being useful? */ U16 xbm_previous; /* how many characters in string before rare? */ U8 xbm_rare; /* rarest character in string */ }; /* This structure must match XPVCV in cv.h */ typedef U16 cv_flags_t; struct xpvfm { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* PVFMs use the pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ HV * xcv_stash; union { OP * xcv_start; ANY xcv_xsubany; } xcv_start_u; union { OP * xcv_root; void (*xcv_xsub) (pTHX_ CV*); } xcv_root_u; GV * xcv_gv; char * xcv_file; AV * xcv_padlist; CV * xcv_outside; U32 xcv_outside_seq; /* the COP sequence (at the point of our * compilation) in the lexically enclosing * sub */ cv_flags_t xcv_flags; IV xfm_lines; }; typedef struct { STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* PVFMs use the pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ HV * xcv_stash; union { OP * xcv_start; ANY xcv_xsubany; } xcv_start_u; union { OP * xcv_root; void (*xcv_xsub) (pTHX_ CV*); } xcv_root_u; GV * xcv_gv; char * xcv_file; AV * xcv_padlist; CV * xcv_outside; U32 xcv_outside_seq; /* the COP sequence (at the point of our * compilation) in the lexically enclosing * sub */ cv_flags_t xcv_flags; IV xfm_lines; } xpvfm_allocated; struct xpvio { union { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; } xnv_u; STRLEN xpv_cur; /* length of svu_pv as a C string */ STRLEN xpv_len; /* allocated size */ union { IV xivu_iv; /* integer value or pv offset */ UV xivu_uv; void * xivu_p1; I32 xivu_i32; HEK * xivu_namehek; } xiv_u; union { MAGIC* xmg_magic; /* linked list of magicalness */ HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */ } xmg_u; HV* xmg_stash; /* class package */ PerlIO * xio_ifp; /* ifp and ofp are normally the same */ PerlIO * xio_ofp; /* but sockets need separate streams */ /* Cray addresses everything by word boundaries (64 bits) and * code and data pointers cannot be mixed (which is exactly what * Perl_filter_add() tries to do with the dirp), hence the following * union trick (as suggested by Gurusamy Sarathy). * For further information see Geir Johansen's problem report titled [ID 20000612.002] Perl problem on Cray system * The any pointer (known as IoANY()) will also be a good place * to hang any IO disciplines to. */ union { DIR * xiou_dirp; /* for opendir, readdir, etc */ void * xiou_any; /* for alignment */ } xio_dirpu; IV xio_lines; /* $. */ IV xio_page; /* $% */ IV xio_page_len; /* $= */ IV xio_lines_left; /* $- */ char * xio_top_name; /* $^ */ GV * xio_top_gv; /* $^ */ char * xio_fmt_name; /* $~ */ GV * xio_fmt_gv; /* $~ */ char * xio_bottom_name;/* $^B */ GV * xio_bottom_gv; /* $^B */ short xio_subprocess; /* -| or |- */ char xio_type; char xio_flags; }; #define xio_dirp xio_dirpu.xiou_dirp #define xio_any xio_dirpu.xiou_any #define IOf_ARGV 1 /* this fp iterates over ARGV */ #define IOf_START 2 /* check for null ARGV and substitute '-' */ #define IOf_FLUSH 4 /* this fp wants a flush after write op */ #define IOf_DIDTOP 8 /* just did top of form */ #define IOf_UNTAINT 16 /* consider this fp (and its data) "safe" */ #define IOf_NOLINE 32 /* slurped a pseudo-line from empty file */ #define IOf_FAKE_DIRP 64 /* xio_dirp is fake (source filters kludge) */ /* The following macros define implementation-independent predicates on SVs. */ /* =for apidoc Am|bool|SvNIOK|SV* sv Returns a boolean indicating whether the SV contains a number, integer or double. =for apidoc Am|bool|SvNIOKp|SV* sv Returns a boolean indicating whether the SV contains a number, integer or double. Checks the B setting. Use C. =for apidoc Am|void|SvNIOK_off|SV* sv Unsets the NV/IV status of an SV. =for apidoc Am|bool|SvOK|SV* sv Returns a boolean indicating whether the value is an SV. It also tells whether the value is defined or not. =for apidoc Am|bool|SvIOKp|SV* sv Returns a boolean indicating whether the SV contains an integer. Checks the B setting. Use C. =for apidoc Am|bool|SvNOKp|SV* sv Returns a boolean indicating whether the SV contains a double. Checks the B setting. Use C. =for apidoc Am|bool|SvPOKp|SV* sv Returns a boolean indicating whether the SV contains a character string. Checks the B setting. Use C. =for apidoc Am|bool|SvIOK|SV* sv Returns a boolean indicating whether the SV contains an integer. =for apidoc Am|void|SvIOK_on|SV* sv Tells an SV that it is an integer. =for apidoc Am|void|SvIOK_off|SV* sv Unsets the IV status of an SV. =for apidoc Am|void|SvIOK_only|SV* sv Tells an SV that it is an integer and disables all other OK bits. =for apidoc Am|void|SvIOK_only_UV|SV* sv Tells and SV that it is an unsigned integer and disables all other OK bits. =for apidoc Am|bool|SvIOK_UV|SV* sv Returns a boolean indicating whether the SV contains an unsigned integer. =for apidoc Am|void|SvUOK|SV* sv Returns a boolean indicating whether the SV contains an unsigned integer. =for apidoc Am|bool|SvIOK_notUV|SV* sv Returns a boolean indicating whether the SV contains a signed integer. =for apidoc Am|bool|SvNOK|SV* sv Returns a boolean indicating whether the SV contains a double. =for apidoc Am|void|SvNOK_on|SV* sv Tells an SV that it is a double. =for apidoc Am|void|SvNOK_off|SV* sv Unsets the NV status of an SV. =for apidoc Am|void|SvNOK_only|SV* sv Tells an SV that it is a double and disables all other OK bits. =for apidoc Am|bool|SvPOK|SV* sv Returns a boolean indicating whether the SV contains a character string. =for apidoc Am|void|SvPOK_on|SV* sv Tells an SV that it is a string. =for apidoc Am|void|SvPOK_off|SV* sv Unsets the PV status of an SV. =for apidoc Am|void|SvPOK_only|SV* sv Tells an SV that it is a string and disables all other OK bits. Will also turn off the UTF-8 status. =for apidoc Am|bool|SvVOK|SV* sv Returns a boolean indicating whether the SV contains a v-string. =for apidoc Am|bool|SvOOK|SV* sv Returns a boolean indicating whether the SvIVX is a valid offset value for the SvPVX. This hack is used internally to speed up removal of characters from the beginning of a SvPV. When SvOOK is true, then the start of the allocated string buffer is really (SvPVX - SvIVX). =for apidoc Am|bool|SvROK|SV* sv Tests if the SV is an RV. =for apidoc Am|void|SvROK_on|SV* sv Tells an SV that it is an RV. =for apidoc Am|void|SvROK_off|SV* sv Unsets the RV status of an SV. =for apidoc Am|SV*|SvRV|SV* sv Dereferences an RV to return the SV. =for apidoc Am|IV|SvIVX|SV* sv Returns the raw value in the SV's IV slot, without checks or conversions. Only use when you are sure SvIOK is true. See also C. =for apidoc Am|UV|SvUVX|SV* sv Returns the raw value in the SV's UV slot, without checks or conversions. Only use when you are sure SvIOK is true. See also C. =for apidoc Am|NV|SvNVX|SV* sv Returns the raw value in the SV's NV slot, without checks or conversions. Only use when you are sure SvNOK is true. See also C. =for apidoc Am|char*|SvPVX|SV* sv Returns a pointer to the physical string in the SV. The SV must contain a string. =for apidoc Am|STRLEN|SvCUR|SV* sv Returns the length of the string which is in the SV. See C. =for apidoc Am|STRLEN|SvLEN|SV* sv Returns the size of the string buffer in the SV, not including any part attributable to C. See C. =for apidoc Am|char*|SvEND|SV* sv Returns a pointer to the last character in the string which is in the SV. See C. Access the character as *(SvEND(sv)). =for apidoc Am|HV*|SvSTASH|SV* sv Returns the stash of the SV. =for apidoc Am|void|SvIV_set|SV* sv|IV val Set the value of the IV pointer in sv to val. It is possible to perform the same function of this macro with an lvalue assignment to C. With future Perls, however, it will be more efficient to use C instead of the lvalue assignment to C. =for apidoc Am|void|SvNV_set|SV* sv|NV val Set the value of the NV pointer in sv to val. See C. =for apidoc Am|void|SvPV_set|SV* sv|char* val Set the value of the PV pointer in sv to val. See C. =for apidoc Am|void|SvUV_set|SV* sv|UV val Set the value of the UV pointer in sv to val. See C. =for apidoc Am|void|SvRV_set|SV* sv|SV* val Set the value of the RV pointer in sv to val. See C. =for apidoc Am|void|SvMAGIC_set|SV* sv|MAGIC* val Set the value of the MAGIC pointer in sv to val. See C. =for apidoc Am|void|SvSTASH_set|SV* sv|HV* val Set the value of the STASH pointer in sv to val. See C. =for apidoc Am|void|SvCUR_set|SV* sv|STRLEN len Set the current length of the string which is in the SV. See C and C. =for apidoc Am|void|SvLEN_set|SV* sv|STRLEN len Set the actual length of the string which is in the SV. See C. =cut */ #define SvNIOK(sv) (SvFLAGS(sv) & (SVf_IOK|SVf_NOK)) #define SvNIOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK)) #define SvNIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK| \ SVp_IOK|SVp_NOK|SVf_IVisUV)) #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) #define assert_not_ROK(sv) ({assert(!SvROK(sv) || !SvRV(sv));}), #define assert_not_glob(sv) ({assert(!isGV_with_GP(sv));}), #else #define assert_not_ROK(sv) #define assert_not_glob(sv) #endif #define SvOK(sv) (SvFLAGS(sv) & SVf_OK) #define SvOK_off(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ SvFLAGS(sv) &= ~(SVf_OK| \ SVf_IVisUV|SVf_UTF8), \ SvOOK_off(sv)) #define SvOK_off_exc_UV(sv) (assert_not_ROK(sv) \ SvFLAGS(sv) &= ~(SVf_OK| \ SVf_UTF8), \ SvOOK_off(sv)) #define SvOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) #define SvIOKp(sv) (SvFLAGS(sv) & SVp_IOK) #define SvIOKp_on(sv) (assert_not_glob(sv) SvRELEASE_IVX(sv), \ SvFLAGS(sv) |= SVp_IOK) #define SvNOKp(sv) (SvFLAGS(sv) & SVp_NOK) #define SvNOKp_on(sv) (assert_not_glob(sv) SvFLAGS(sv) |= SVp_NOK) #define SvPOKp(sv) (SvFLAGS(sv) & SVp_POK) #define SvPOKp_on(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ SvFLAGS(sv) |= SVp_POK) #define SvIOK(sv) (SvFLAGS(sv) & SVf_IOK) #define SvIOK_on(sv) (assert_not_glob(sv) SvRELEASE_IVX(sv), \ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK)) #define SvIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVp_IOK|SVf_IVisUV)) #define SvIOK_only(sv) (SvOK_off(sv), \ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK)) #define SvIOK_only_UV(sv) (assert_not_glob(sv) SvOK_off_exc_UV(sv), \ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK)) #define SvIOK_UV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \ == (SVf_IOK|SVf_IVisUV)) #define SvUOK(sv) SvIOK_UV(sv) #define SvIOK_notUV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \ == SVf_IOK) #define SvIsUV(sv) (SvFLAGS(sv) & SVf_IVisUV) #define SvIsUV_on(sv) (SvFLAGS(sv) |= SVf_IVisUV) #define SvIsUV_off(sv) (SvFLAGS(sv) &= ~SVf_IVisUV) #define SvNOK(sv) (SvFLAGS(sv) & SVf_NOK) #define SvNOK_on(sv) (assert_not_glob(sv) \ SvFLAGS(sv) |= (SVf_NOK|SVp_NOK)) #define SvNOK_off(sv) (SvFLAGS(sv) &= ~(SVf_NOK|SVp_NOK)) #define SvNOK_only(sv) (SvOK_off(sv), \ SvFLAGS(sv) |= (SVf_NOK|SVp_NOK)) /* =for apidoc Am|bool|SvUTF8|SV* sv Returns a boolean indicating whether the SV contains UTF-8 encoded data. =for apidoc Am|void|SvUTF8_on|SV *sv Turn on the UTF-8 status of an SV (the data is not changed, just the flag). Do not use frivolously. =for apidoc Am|void|SvUTF8_off|SV *sv Unsets the UTF-8 status of an SV. =for apidoc Am|void|SvPOK_only_UTF8|SV* sv Tells an SV that it is a string and disables all other OK bits, and leaves the UTF-8 status as it was. =cut */ /* Ensure the return value of this macro does not clash with the GV_ADD* flags in gv.h: */ #define SvUTF8(sv) (SvFLAGS(sv) & SVf_UTF8) #define SvUTF8_on(sv) (SvFLAGS(sv) |= (SVf_UTF8)) #define SvUTF8_off(sv) (SvFLAGS(sv) &= ~(SVf_UTF8)) #define SvPOK(sv) (SvFLAGS(sv) & SVf_POK) #define SvPOK_on(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ SvFLAGS(sv) |= (SVf_POK|SVp_POK)) #define SvPOK_off(sv) (SvFLAGS(sv) &= ~(SVf_POK|SVp_POK)) #define SvPOK_only(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ SvFLAGS(sv) &= ~(SVf_OK| \ SVf_IVisUV|SVf_UTF8), \ SvFLAGS(sv) |= (SVf_POK|SVp_POK)) #define SvPOK_only_UTF8(sv) (assert_not_ROK(sv) assert_not_glob(sv) \ SvFLAGS(sv) &= ~(SVf_OK| \ SVf_IVisUV), \ SvFLAGS(sv) |= (SVf_POK|SVp_POK)) #define SvVOK(sv) (SvMAGICAL(sv) \ && mg_find(sv,PERL_MAGIC_vstring)) /* returns the vstring magic, if any */ #define SvVSTRING_mg(sv) (SvMAGICAL(sv) \ ? mg_find(sv,PERL_MAGIC_vstring) : NULL) #define SvOOK(sv) (SvFLAGS(sv) & SVf_OOK) #define SvOOK_on(sv) ((void)SvIOK_off(sv), SvFLAGS(sv) |= SVf_OOK) #define SvOOK_off(sv) ((void)(SvOOK(sv) && sv_backoff(sv))) #define SvFAKE(sv) (SvFLAGS(sv) & SVf_FAKE) #define SvFAKE_on(sv) (SvFLAGS(sv) |= SVf_FAKE) #define SvFAKE_off(sv) (SvFLAGS(sv) &= ~SVf_FAKE) #define SvROK(sv) (SvFLAGS(sv) & SVf_ROK) #define SvROK_on(sv) (SvFLAGS(sv) |= SVf_ROK) #define SvROK_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK)) #define SvMAGICAL(sv) (SvFLAGS(sv) & (SVs_GMG|SVs_SMG|SVs_RMG)) #define SvMAGICAL_on(sv) (SvFLAGS(sv) |= (SVs_GMG|SVs_SMG|SVs_RMG)) #define SvMAGICAL_off(sv) (SvFLAGS(sv) &= ~(SVs_GMG|SVs_SMG|SVs_RMG)) #define SvGMAGICAL(sv) (SvFLAGS(sv) & SVs_GMG) #define SvGMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_GMG) #define SvGMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_GMG) #define SvSMAGICAL(sv) (SvFLAGS(sv) & SVs_SMG) #define SvSMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_SMG) #define SvSMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_SMG) #define SvRMAGICAL(sv) (SvFLAGS(sv) & SVs_RMG) #define SvRMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_RMG) #define SvRMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_RMG) #define SvAMAGIC(sv) (SvROK(sv) && (SvFLAGS(SvRV(sv)) & SVf_AMAGIC)) #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) # define SvAMAGIC_on(sv) ({ SV * const kloink = sv; \ assert(SvROK(kloink)); \ SvFLAGS(SvRV(kloink)) |= SVf_AMAGIC; \ }) # define SvAMAGIC_off(sv) ({ SV * const kloink = sv; \ if(SvROK(kloink)) \ SvFLAGS(SvRV(kloink)) &= ~SVf_AMAGIC;\ }) #else # define SvAMAGIC_on(sv) (SvFLAGS(SvRV(sv)) |= SVf_AMAGIC) # define SvAMAGIC_off(sv) \ (SvROK(sv) && (SvFLAGS(SvRV(sv)) &= ~SVf_AMAGIC)) #endif /* =for apidoc Am|char*|SvGAMAGIC|SV* sv Returns true if the SV has get magic or overloading. If either is true then the scalar is active data, and has the potential to return a new value every time it is accessed. Hence you must be careful to only read it once per user logical operation and work with that returned value. If neither is true then the scalar's value cannot change unless written to. =cut */ #define SvGAMAGIC(sv) (SvGMAGICAL(sv) || SvAMAGIC(sv)) #define Gv_AMG(stash) (PL_amagic_generation && Gv_AMupdate(stash)) #define SvWEAKREF(sv) ((SvFLAGS(sv) & (SVf_ROK|SVprv_WEAKREF)) \ == (SVf_ROK|SVprv_WEAKREF)) #define SvWEAKREF_on(sv) (SvFLAGS(sv) |= (SVf_ROK|SVprv_WEAKREF)) #define SvWEAKREF_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK|SVprv_WEAKREF)) #define SvTHINKFIRST(sv) (SvFLAGS(sv) & SVf_THINKFIRST) #define SvPADSTALE(sv) (SvFLAGS(sv) & SVs_PADSTALE) #define SvPADSTALE_on(sv) (SvFLAGS(sv) |= SVs_PADSTALE) #define SvPADSTALE_off(sv) (SvFLAGS(sv) &= ~SVs_PADSTALE) #define SvPADTMP(sv) (SvFLAGS(sv) & SVs_PADTMP) #define SvPADTMP_on(sv) (SvFLAGS(sv) |= SVs_PADTMP) #define SvPADTMP_off(sv) (SvFLAGS(sv) &= ~SVs_PADTMP) #define SvPADMY(sv) (SvFLAGS(sv) & SVs_PADMY) #define SvPADMY_on(sv) (SvFLAGS(sv) |= SVs_PADMY) #define SvTEMP(sv) (SvFLAGS(sv) & SVs_TEMP) #define SvTEMP_on(sv) (SvFLAGS(sv) |= SVs_TEMP) #define SvTEMP_off(sv) (SvFLAGS(sv) &= ~SVs_TEMP) #define SvOBJECT(sv) (SvFLAGS(sv) & SVs_OBJECT) #define SvOBJECT_on(sv) (SvFLAGS(sv) |= SVs_OBJECT) #define SvOBJECT_off(sv) (SvFLAGS(sv) &= ~SVs_OBJECT) #define SvREADONLY(sv) (SvFLAGS(sv) & SVf_READONLY) #define SvREADONLY_on(sv) (SvFLAGS(sv) |= SVf_READONLY) #define SvREADONLY_off(sv) (SvFLAGS(sv) &= ~SVf_READONLY) #define SvSCREAM(sv) ((SvFLAGS(sv) & (SVp_SCREAM|SVp_POK)) == (SVp_SCREAM|SVp_POK)) #define SvSCREAM_on(sv) (SvFLAGS(sv) |= SVp_SCREAM) #define SvSCREAM_off(sv) (SvFLAGS(sv) &= ~SVp_SCREAM) #define SvCOMPILED(sv) (SvFLAGS(sv) & SVpfm_COMPILED) #define SvCOMPILED_on(sv) (SvFLAGS(sv) |= SVpfm_COMPILED) #define SvCOMPILED_off(sv) (SvFLAGS(sv) &= ~SVpfm_COMPILED) #define SvEVALED(sv) (SvFLAGS(sv) & SVrepl_EVAL) #define SvEVALED_on(sv) (SvFLAGS(sv) |= SVrepl_EVAL) #define SvEVALED_off(sv) (SvFLAGS(sv) &= ~SVrepl_EVAL) #define SvTAIL(sv) (SvFLAGS(sv) & SVpbm_TAIL) #define SvTAIL_on(sv) (SvFLAGS(sv) |= SVpbm_TAIL) #define SvTAIL_off(sv) (SvFLAGS(sv) &= ~SVpbm_TAIL) #define SvVALID(sv) (SvFLAGS(sv) & SVpbm_VALID) #define SvVALID_on(sv) (SvFLAGS(sv) |= SVpbm_VALID) #define SvVALID_off(sv) (SvFLAGS(sv) &= ~SVpbm_VALID) #ifdef USE_ITHREADS /* The following uses the FAKE flag to show that a regex pointer is infact its own offset in the regexpad for ithreads */ #define SvREPADTMP(sv) (SvFLAGS(sv) & SVf_FAKE) #define SvREPADTMP_on(sv) (SvFLAGS(sv) |= SVf_FAKE) #define SvREPADTMP_off(sv) (SvFLAGS(sv) &= ~SVf_FAKE) #endif #define SvPAD_TYPED(sv) \ ((SvFLAGS(sv) & (SVpad_NAME|SVpad_TYPED)) == (SVpad_NAME|SVpad_TYPED)) #define SvPAD_TYPED_on(sv) (SvFLAGS(sv) |= SVpad_NAME|SVpad_TYPED) #define SvPAD_OUR(sv) \ ((SvFLAGS(sv) & (SVpad_NAME|SVpad_OUR)) == (SVpad_NAME|SVpad_OUR)) #define SvPAD_OUR_on(sv) (SvFLAGS(sv) |= SVpad_NAME|SVpad_OUR) #define SvPAD_STATE(sv) \ ((SvFLAGS(sv) & (SVpad_NAME|SVpad_STATE)) == (SVpad_NAME|SVpad_STATE)) #define SvPAD_STATE_on(sv) (SvFLAGS(sv) |= SVpad_NAME|SVpad_STATE) #define OURSTASH(sv) \ (SvPAD_OUR(sv) ? ((XPVMG*) SvANY(sv))->xmg_u.xmg_ourstash : NULL) #define OURSTASH_set(sv, st) \ STMT_START { \ assert(SvTYPE(sv) == SVt_PVMG); \ ((XPVMG*) SvANY(sv))->xmg_u.xmg_ourstash = st; \ } STMT_END #ifdef PERL_DEBUG_COW #define SvRV(sv) (0 + (sv)->sv_u.svu_rv) #else #define SvRV(sv) ((sv)->sv_u.svu_rv) #endif #define SvRVx(sv) SvRV(sv) #ifdef PERL_DEBUG_COW /* Need -0.0 for SvNVX to preserve IEEE FP "negative zero" because +0.0 + -0.0 => +0.0 but -0.0 + -0.0 => -0.0 */ # define SvIVX(sv) (0 + ((XPVIV*) SvANY(sv))->xiv_iv) # define SvUVX(sv) (0 + ((XPVUV*) SvANY(sv))->xuv_uv) # define SvNVX(sv) (-0.0 + ((XPVNV*) SvANY(sv))->xnv_u.xnv_nv) /* Don't test the core XS code yet. */ # if defined (PERL_CORE) && PERL_DEBUG_COW > 1 # define SvPVX(sv) (0 + (assert(!SvREADONLY(sv)), (sv)->sv_u.svu_pv)) # else # define SvPVX(sv) SvPVX_mutable(sv) # endif # define SvCUR(sv) (0 + ((XPV*) SvANY(sv))->xpv_cur) # define SvLEN(sv) (0 + ((XPV*) SvANY(sv))->xpv_len) # define SvEND(sv) ((sv)->sv_u.svu_pv + ((XPV*)SvANY(sv))->xpv_cur) # ifdef DEBUGGING # define SvMAGIC(sv) (0 + *(assert(SvTYPE(sv) >= SVt_PVMG), &((XPVMG*) SvANY(sv))->xmg_u.xmg_magic)) # define SvSTASH(sv) (0 + *(assert(SvTYPE(sv) >= SVt_PVMG), &((XPVMG*) SvANY(sv))->xmg_stash)) # else # define SvMAGIC(sv) (0 + ((XPVMG*) SvANY(sv))->xmg_u.xmg_magic) # define SvSTASH(sv) (0 + ((XPVMG*) SvANY(sv))->xmg_stash) # endif #else # define SvLEN(sv) ((XPV*) SvANY(sv))->xpv_len # define SvEND(sv) ((sv)->sv_u.svu_pv + ((XPV*)SvANY(sv))->xpv_cur) # if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) /* These get expanded inside other macros that already use a variable _sv */ # define SvPVX(sv) \ (*({ SV *const _svi = (SV *) sv; \ assert(SvTYPE(_svi) >= SVt_PV); \ assert(SvTYPE(_svi) != SVt_PVAV); \ assert(SvTYPE(_svi) != SVt_PVHV); \ assert(!isGV_with_GP(_svi)); \ &((_svi)->sv_u.svu_pv); \ })) # define SvCUR(sv) \ (*({ SV *const _svi = (SV *) sv; \ assert(SvTYPE(_svi) >= SVt_PV); \ assert(SvTYPE(_svi) != SVt_PVAV); \ assert(SvTYPE(_svi) != SVt_PVHV); \ assert(!isGV_with_GP(_svi)); \ &(((XPV*) SvANY(_svi))->xpv_cur); \ })) # define SvIVX(sv) \ (*({ SV *const _svi = (SV *) sv; \ assert(SvTYPE(_svi) == SVt_IV || SvTYPE(_svi) >= SVt_PVIV); \ assert(SvTYPE(_svi) != SVt_PVAV); \ assert(SvTYPE(_svi) != SVt_PVHV); \ assert(SvTYPE(_svi) != SVt_PVCV); \ assert(!isGV_with_GP(_svi)); \ &(((XPVIV*) SvANY(_svi))->xiv_iv); \ })) # define SvUVX(sv) \ (*({ SV *const _svi = (SV *) sv; \ assert(SvTYPE(_svi) == SVt_IV || SvTYPE(_svi) >= SVt_PVIV); \ assert(SvTYPE(_svi) != SVt_PVAV); \ assert(SvTYPE(_svi) != SVt_PVHV); \ assert(SvTYPE(_svi) != SVt_PVCV); \ assert(!isGV_with_GP(_svi)); \ &(((XPVUV*) SvANY(_svi))->xuv_uv); \ })) # define SvNVX(sv) \ (*({ SV *const _svi = (SV *) sv; \ assert(SvTYPE(_svi) == SVt_NV || SvTYPE(_svi) >= SVt_PVNV); \ assert(SvTYPE(_svi) != SVt_PVAV); \ assert(SvTYPE(_svi) != SVt_PVHV); \ assert(SvTYPE(_svi) != SVt_PVFM); \ assert(!isGV_with_GP(_svi)); \ &(((XPVNV*) SvANY(_svi))->xnv_u.xnv_nv); \ })) # define SvMAGIC(sv) \ (*({ SV *const _svi = (SV *) sv; \ assert(SvTYPE(_svi) >= SVt_PVMG); \ if(SvTYPE(_svi) == SVt_PVMG) \ assert(!SvPAD_OUR(_svi)); \ &(((XPVMG*) SvANY(_svi))->xmg_u.xmg_magic); \ })) # define SvSTASH(sv) \ (*({ SV *const _svi = (SV *) sv; \ assert(SvTYPE(_svi) >= SVt_PVMG); \ &(((XPVMG*) SvANY(_svi))->xmg_stash); \ })) # else # define SvPVX(sv) ((sv)->sv_u.svu_pv) # define SvCUR(sv) ((XPV*) SvANY(sv))->xpv_cur # define SvIVX(sv) ((XPVIV*) SvANY(sv))->xiv_iv # define SvUVX(sv) ((XPVUV*) SvANY(sv))->xuv_uv # define SvNVX(sv) ((XPVNV*) SvANY(sv))->xnv_u.xnv_nv # define SvMAGIC(sv) ((XPVMG*) SvANY(sv))->xmg_u.xmg_magic # define SvSTASH(sv) ((XPVMG*) SvANY(sv))->xmg_stash # endif #endif #ifndef PERL_POISON /* Given that these two are new, there can't be any existing code using them * as LVALUEs */ # define SvPVX_mutable(sv) (0 + (sv)->sv_u.svu_pv) # define SvPVX_const(sv) ((const char*)(0 + (sv)->sv_u.svu_pv)) #else /* Except for the poison code, which uses & to scribble over the pointer after free() is called. */ # define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) # define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) #endif #define SvIVXx(sv) SvIVX(sv) #define SvUVXx(sv) SvUVX(sv) #define SvNVXx(sv) SvNVX(sv) #define SvPVXx(sv) SvPVX(sv) #define SvLENx(sv) SvLEN(sv) #define SvENDx(sv) ((PL_Sv = (sv)), SvEND(PL_Sv)) /* Ask a scalar nicely to try to become an IV, if possible. Not guaranteed to stay returning void */ /* Macro won't actually call sv_2iv if already IOK */ #define SvIV_please(sv) \ STMT_START {if (!SvIOKp(sv) && (SvNOK(sv) || SvPOK(sv))) \ (void) SvIV(sv); } STMT_END #define SvIV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ assert(!isGV_with_GP(sv)); \ (((XPVIV*) SvANY(sv))->xiv_iv = (val)); } STMT_END #define SvNV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_NV || SvTYPE(sv) >= SVt_PVNV); \ assert(SvTYPE(sv) != SVt_PVAV); assert(SvTYPE(sv) != SVt_PVHV); \ assert(!isGV_with_GP(sv)); \ (((XPVNV*)SvANY(sv))->xnv_u.xnv_nv = (val)); } STMT_END #define SvPV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PV); \ assert(!isGV_with_GP(sv)); \ ((sv)->sv_u.svu_pv = (val)); } STMT_END #define SvUV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ assert(!isGV_with_GP(sv)); \ (((XPVUV*)SvANY(sv))->xuv_uv = (val)); } STMT_END #define SvRV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ assert(!isGV_with_GP(sv)); \ ((sv)->sv_u.svu_rv = (val)); } STMT_END #define SvMAGIC_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*)SvANY(sv))->xmg_u.xmg_magic = (val)); } STMT_END #define SvSTASH_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END #define SvCUR_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PV); \ assert(!isGV_with_GP(sv)); \ (((XPV*) SvANY(sv))->xpv_cur = (val)); } STMT_END #define SvLEN_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PV); \ assert(!isGV_with_GP(sv)); \ (((XPV*) SvANY(sv))->xpv_len = (val)); } STMT_END #define SvEND_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PV); \ (SvCUR(sv) = (val) - SvPVX(sv)); } STMT_END #define SvPV_renew(sv,n) \ STMT_START { SvLEN_set(sv, n); \ SvPV_set((sv), (MEM_WRAP_CHECK_(n,char) \ (char*)saferealloc((Malloc_t)SvPVX(sv), \ (MEM_SIZE)((n))))); \ } STMT_END #define SvPV_shrink_to_cur(sv) STMT_START { \ const STRLEN _lEnGtH = SvCUR(sv) + 1; \ SvPV_renew(sv, _lEnGtH); \ } STMT_END #define SvPV_free(sv) \ STMT_START { \ assert(SvTYPE(sv) >= SVt_PV); \ if (SvLEN(sv)) { \ if(SvOOK(sv)) { \ SvPV_set(sv, SvPVX_mutable(sv) - SvIVX(sv)); \ SvFLAGS(sv) &= ~SVf_OOK; \ } \ Safefree(SvPVX(sv)); \ } \ } STMT_END #define BmRARE(sv) ((XPVBM*) SvANY(sv))->xbm_rare #define BmUSEFUL(sv) ((XPVBM*) SvANY(sv))->xbm_useful #define BmPREVIOUS(sv) ((XPVBM*) SvANY(sv))->xbm_previous #define FmLINES(sv) ((XPVFM*) SvANY(sv))->xfm_lines #define LvTYPE(sv) ((XPVLV*) SvANY(sv))->xlv_type #define LvTARG(sv) ((XPVLV*) SvANY(sv))->xlv_targ #define LvTARGOFF(sv) ((XPVLV*) SvANY(sv))->xlv_targoff #define LvTARGLEN(sv) ((XPVLV*) SvANY(sv))->xlv_targlen #define IoIFP(sv) ((XPVIO*) SvANY(sv))->xio_ifp #define IoOFP(sv) ((XPVIO*) SvANY(sv))->xio_ofp #define IoDIRP(sv) ((XPVIO*) SvANY(sv))->xio_dirp #define IoANY(sv) ((XPVIO*) SvANY(sv))->xio_any #define IoLINES(sv) ((XPVIO*) SvANY(sv))->xio_lines #define IoPAGE(sv) ((XPVIO*) SvANY(sv))->xio_page #define IoPAGE_LEN(sv) ((XPVIO*) SvANY(sv))->xio_page_len #define IoLINES_LEFT(sv)((XPVIO*) SvANY(sv))->xio_lines_left #define IoTOP_NAME(sv) ((XPVIO*) SvANY(sv))->xio_top_name #define IoTOP_GV(sv) ((XPVIO*) SvANY(sv))->xio_top_gv #define IoFMT_NAME(sv) ((XPVIO*) SvANY(sv))->xio_fmt_name #define IoFMT_GV(sv) ((XPVIO*) SvANY(sv))->xio_fmt_gv #define IoBOTTOM_NAME(sv)((XPVIO*) SvANY(sv))->xio_bottom_name #define IoBOTTOM_GV(sv) ((XPVIO*) SvANY(sv))->xio_bottom_gv #define IoSUBPROCESS(sv)((XPVIO*) SvANY(sv))->xio_subprocess #define IoTYPE(sv) ((XPVIO*) SvANY(sv))->xio_type #define IoFLAGS(sv) ((XPVIO*) SvANY(sv))->xio_flags /* IoTYPE(sv) is a single character telling the type of I/O connection. */ #define IoTYPE_RDONLY '<' #define IoTYPE_WRONLY '>' #define IoTYPE_RDWR '+' #define IoTYPE_APPEND 'a' #define IoTYPE_PIPE '|' #define IoTYPE_STD '-' /* stdin or stdout */ #define IoTYPE_SOCKET 's' #define IoTYPE_CLOSED ' ' #define IoTYPE_IMPLICIT 'I' /* stdin or stdout or stderr */ #define IoTYPE_NUMERIC '#' /* fdopen */ /* =for apidoc Am|bool|SvTAINTED|SV* sv Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if not. =for apidoc Am|void|SvTAINTED_on|SV* sv Marks an SV as tainted if tainting is enabled. =for apidoc Am|void|SvTAINTED_off|SV* sv Untaints an SV. Be I careful with this routine, as it short-circuits some of Perl's fundamental security features. XS module authors should not use this function unless they fully understand all the implications of unconditionally untainting the value. Untainting should be done in the standard perl fashion, via a carefully crafted regexp, rather than directly untainting variables. =for apidoc Am|void|SvTAINT|SV* sv Taints an SV if tainting is enabled. =cut */ #define sv_taint(sv) sv_magic((sv), NULL, PERL_MAGIC_taint, NULL, 0) #define SvTAINTED(sv) (SvMAGICAL(sv) && sv_tainted(sv)) #define SvTAINTED_on(sv) STMT_START{ if(PL_tainting){sv_taint(sv);} }STMT_END #define SvTAINTED_off(sv) STMT_START{ if(PL_tainting){sv_untaint(sv);} }STMT_END #define SvTAINT(sv) \ STMT_START { \ if (PL_tainting) { \ if (PL_tainted) \ SvTAINTED_on(sv); \ } \ } STMT_END /* =for apidoc Am|char*|SvPV_force|SV* sv|STRLEN len Like C but will force the SV into containing just a string (C). You want force if you are going to update the C directly. =for apidoc Am|char*|SvPV_force_nomg|SV* sv|STRLEN len Like C but will force the SV into containing just a string (C). You want force if you are going to update the C directly. Doesn't process magic. =for apidoc Am|char*|SvPV|SV* sv|STRLEN len Returns a pointer to the string in the SV, or a stringified form of the SV if the SV does not contain a string. The SV may cache the stringified version becoming C. Handles 'get' magic. See also C for a version which guarantees to evaluate sv only once. =for apidoc Am|char*|SvPVx|SV* sv|STRLEN len A version of C which guarantees to evaluate sv only once. =for apidoc Am|char*|SvPV_nomg|SV* sv|STRLEN len Like C but doesn't process magic. =for apidoc Am|char*|SvPV_nolen|SV* sv Returns a pointer to the string in the SV, or a stringified form of the SV if the SV does not contain a string. The SV may cache the stringified form becoming C. Handles 'get' magic. =for apidoc Am|IV|SvIV|SV* sv Coerces the given SV to an integer and returns it. See C for a version which guarantees to evaluate sv only once. =for apidoc Am|IV|SvIV_nomg|SV* sv Like C but doesn't process magic. =for apidoc Am|IV|SvIVx|SV* sv Coerces the given SV to an integer and returns it. Guarantees to evaluate sv only once. Use the more efficient C otherwise. =for apidoc Am|NV|SvNV|SV* sv Coerce the given SV to a double and return it. See C for a version which guarantees to evaluate sv only once. =for apidoc Am|NV|SvNVx|SV* sv Coerces the given SV to a double and returns it. Guarantees to evaluate sv only once. Use the more efficient C otherwise. =for apidoc Am|UV|SvUV|SV* sv Coerces the given SV to an unsigned integer and returns it. See C for a version which guarantees to evaluate sv only once. =for apidoc Am|UV|SvUV_nomg|SV* sv Like C but doesn't process magic. =for apidoc Am|UV|SvUVx|SV* sv Coerces the given SV to an unsigned integer and returns it. Guarantees to evaluate sv only once. Use the more efficient C otherwise. =for apidoc Am|bool|SvTRUE|SV* sv Returns a boolean indicating whether Perl would evaluate the SV as true or false, defined or undefined. Does not handle 'get' magic. =for apidoc Am|char*|SvPVutf8_force|SV* sv|STRLEN len Like C, but converts sv to utf8 first if necessary. =for apidoc Am|char*|SvPVutf8|SV* sv|STRLEN len Like C, but converts sv to utf8 first if necessary. =for apidoc Am|char*|SvPVutf8_nolen|SV* sv Like C, but converts sv to utf8 first if necessary. =for apidoc Am|char*|SvPVbyte_force|SV* sv|STRLEN len Like C, but converts sv to byte representation first if necessary. =for apidoc Am|char*|SvPVbyte|SV* sv|STRLEN len Like C, but converts sv to byte representation first if necessary. =for apidoc Am|char*|SvPVbyte_nolen|SV* sv Like C, but converts sv to byte representation first if necessary. =for apidoc Am|char*|SvPVutf8x_force|SV* sv|STRLEN len Like C, but converts sv to utf8 first if necessary. Guarantees to evaluate sv only once; use the more efficient C otherwise. =for apidoc Am|char*|SvPVutf8x|SV* sv|STRLEN len Like C, but converts sv to utf8 first if necessary. Guarantees to evaluate sv only once; use the more efficient C otherwise. =for apidoc Am|char*|SvPVbytex_force|SV* sv|STRLEN len Like C, but converts sv to byte representation first if necessary. Guarantees to evaluate sv only once; use the more efficient C otherwise. =for apidoc Am|char*|SvPVbytex|SV* sv|STRLEN len Like C, but converts sv to byte representation first if necessary. Guarantees to evaluate sv only once; use the more efficient C otherwise. =for apidoc Am|bool|SvIsCOW|SV* sv Returns a boolean indicating whether the SV is Copy-On-Write. (either shared hash key scalars, or full Copy On Write scalars if 5.9.0 is configured for COW) =for apidoc Am|bool|SvIsCOW_shared_hash|SV* sv Returns a boolean indicating whether the SV is Copy-On-Write shared hash key scalar. =for apidoc Am|void|sv_catpvn_nomg|SV* sv|const char* ptr|STRLEN len Like C but doesn't process magic. =for apidoc Am|void|sv_setsv_nomg|SV* dsv|SV* ssv Like C but doesn't process magic. =for apidoc Am|void|sv_catsv_nomg|SV* dsv|SV* ssv Like C but doesn't process magic. =cut */ /* Let us hope that bitmaps for UV and IV are the same */ #define SvIV(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) #define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) #define SvNV(sv) (SvNOK(sv) ? SvNVX(sv) : sv_2nv(sv)) #define SvIV_nomg(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv_flags(sv, 0)) #define SvUV_nomg(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv_flags(sv, 0)) /* ----*/ #define SvPV(sv, lp) SvPV_flags(sv, lp, SV_GMAGIC) #define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC) #define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC) #define SvPV_flags(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags)) #define SvPV_flags_const(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \ (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN)) #define SvPV_flags_const_nolen(sv, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : \ (const char*) sv_2pv_flags(sv, 0, flags|SV_CONST_RETURN)) #define SvPV_flags_mutable(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \ sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) #define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC) #define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC) #define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC) #define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0) #define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0) #define SvPV_force_flags(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags)) #define SvPV_force_flags_nolen(sv, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? SvPVX(sv) : sv_pvn_force_flags(sv, 0, flags)) #define SvPV_force_flags_mutable(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \ : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) #define SvPV_nolen(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC)) #define SvPV_nolen_const(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC|SV_CONST_RETURN)) #define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0) #define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0) #define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0) /* ----*/ #define SvPVutf8(sv, lp) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK|SVf_UTF8) \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvutf8(sv, &lp)) #define SvPVutf8_force(sv, lp) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == (SVf_POK|SVf_UTF8) \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvutf8n_force(sv, &lp)) #define SvPVutf8_nolen(sv) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK|SVf_UTF8)\ ? SvPVX(sv) : sv_2pvutf8(sv, 0)) /* ----*/ #define SvPVbyte(sv, lp) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp)) #define SvPVbyte_force(sv, lp) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_THINKFIRST)) == (SVf_POK) \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvbyten_force(sv, &lp)) #define SvPVbyte_nolen(sv) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK)\ ? SvPVX(sv) : sv_2pvbyte(sv, 0)) /* define FOOx(): idempotent versions of FOO(). If possible, use a local * var to evaluate the arg once; failing that, use a global if possible; * failing that, call a function to do the work */ #define SvPVx_force(sv, lp) sv_pvn_force(sv, &lp) #define SvPVutf8x_force(sv, lp) sv_pvutf8n_force(sv, &lp) #define SvPVbytex_force(sv, lp) sv_pvbyten_force(sv, &lp) #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) # define SvIVx(sv) ({SV *_sv = (SV*)(sv); SvIV(_sv); }) # define SvUVx(sv) ({SV *_sv = (SV*)(sv); SvUV(_sv); }) # define SvNVx(sv) ({SV *_sv = (SV*)(sv); SvNV(_sv); }) # define SvPVx(sv, lp) ({SV *_sv = (sv); SvPV(_sv, lp); }) # define SvPVx_const(sv, lp) ({SV *_sv = (sv); SvPV_const(_sv, lp); }) # define SvPVx_nolen(sv) ({SV *_sv = (sv); SvPV_nolen(_sv); }) # define SvPVx_nolen_const(sv) ({SV *_sv = (sv); SvPV_nolen_const(_sv); }) # define SvPVutf8x(sv, lp) ({SV *_sv = (sv); SvPVutf8(_sv, lp); }) # define SvPVbytex(sv, lp) ({SV *_sv = (sv); SvPVbyte(_sv, lp); }) # define SvPVbytex_nolen(sv) ({SV *_sv = (sv); SvPVbyte_nolen(_sv); }) # define SvTRUE(sv) ( \ !sv \ ? 0 \ : SvPOK(sv) \ ? (({XPV *nxpv = (XPV*)SvANY(sv); \ nxpv && \ (nxpv->xpv_cur > 1 || \ (nxpv->xpv_cur && *(sv)->sv_u.svu_pv != '0')); }) \ ? 1 \ : 0) \ : \ SvIOK(sv) \ ? SvIVX(sv) != 0 \ : SvNOK(sv) \ ? SvNVX(sv) != 0.0 \ : sv_2bool(sv) ) # define SvTRUEx(sv) ({SV *_sv = (sv); SvTRUE(_sv); }) #else /* __GNUC__ */ /* These inlined macros use globals, which will require a thread * declaration in user code, so we avoid them under threads */ # define SvIVx(sv) ((PL_Sv = (sv)), SvIV(PL_Sv)) # define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) # define SvNVx(sv) ((PL_Sv = (sv)), SvNV(PL_Sv)) # define SvPVx(sv, lp) ((PL_Sv = (sv)), SvPV(PL_Sv, lp)) # define SvPVx_const(sv, lp) ((PL_Sv = (sv)), SvPV_const(PL_Sv, lp)) # define SvPVx_nolen(sv) ((PL_Sv = (sv)), SvPV_nolen(PL_Sv)) # define SvPVx_nolen_const(sv) ((PL_Sv = (sv)), SvPV_nolen_const(PL_Sv)) # define SvPVutf8x(sv, lp) ((PL_Sv = (sv)), SvPVutf8(PL_Sv, lp)) # define SvPVbytex(sv, lp) ((PL_Sv = (sv)), SvPVbyte(PL_Sv, lp)) # define SvPVbytex_nolen(sv) ((PL_Sv = (sv)), SvPVbyte_nolen(PL_Sv)) # define SvTRUE(sv) ( \ !sv \ ? 0 \ : SvPOK(sv) \ ? ((PL_Xpv = (XPV*)SvANY(PL_Sv = (sv))) && \ (PL_Xpv->xpv_cur > 1 || \ (PL_Xpv->xpv_cur && *PL_Sv->sv_u.svu_pv != '0')) \ ? 1 \ : 0) \ : \ SvIOK(sv) \ ? SvIVX(sv) != 0 \ : SvNOK(sv) \ ? SvNVX(sv) != 0.0 \ : sv_2bool(sv) ) # define SvTRUEx(sv) ((PL_Sv = (sv)), SvTRUE(PL_Sv)) #endif /* __GNU__ */ #define SvIsCOW(sv) ((SvFLAGS(sv) & (SVf_FAKE | SVf_READONLY)) == \ (SVf_FAKE | SVf_READONLY)) #define SvIsCOW_shared_hash(sv) (SvIsCOW(sv) && SvLEN(sv) == 0) #define SvSHARED_HEK_FROM_PV(pvx) \ ((struct hek*)(pvx - STRUCT_OFFSET(struct hek, hek_key))) #define SvSHARED_HASH(sv) (0 + SvSHARED_HEK_FROM_PV(SvPVX_const(sv))->hek_hash) /* flag values for sv_*_flags functions */ #define SV_IMMEDIATE_UNREF 1 #define SV_GMAGIC 2 #define SV_COW_DROP_PV 4 #define SV_UTF8_NO_ENCODING 8 #define SV_NOSTEAL 16 #define SV_CONST_RETURN 32 #define SV_MUTABLE_RETURN 64 #define SV_SMAGIC 128 #define SV_HAS_TRAILING_NUL 256 #define sv_unref(sv) sv_unref_flags(sv, 0) #define sv_force_normal(sv) sv_force_normal_flags(sv, 0) #define sv_usepvn(sv, p, l) sv_usepvn_flags(sv, p, l, 0) #define sv_usepvn_mg(sv, p, l) sv_usepvn_flags(sv, p, l, SV_SMAGIC) /* We are about to replace the SV's current value. So if it's copy on write we need to normalise it. Use the SV_COW_DROP_PV flag hint to say that the value is about to get thrown away, so drop the PV rather than go to the effort of making a read-write copy only for it to get immediately discarded. */ #define SV_CHECK_THINKFIRST_COW_DROP(sv) if (SvTHINKFIRST(sv)) \ sv_force_normal_flags(sv, SV_COW_DROP_PV) #ifdef PERL_OLD_COPY_ON_WRITE # define SvRELEASE_IVX(sv) ((void)((SvFLAGS(sv) & (SVf_OOK|SVf_READONLY|SVf_FAKE)) \ && Perl_sv_release_IVX(aTHX_ sv))) # define SvIsCOW_normal(sv) (SvIsCOW(sv) && SvLEN(sv)) #else # define SvRELEASE_IVX(sv) SvOOK_off(sv) #endif /* PERL_OLD_COPY_ON_WRITE */ #define CAN_COW_MASK (SVs_OBJECT|SVs_GMG|SVs_SMG|SVs_RMG|SVf_IOK|SVf_NOK| \ SVf_POK|SVf_ROK|SVp_IOK|SVp_NOK|SVp_POK|SVf_FAKE| \ SVf_OOK|SVf_BREAK|SVf_READONLY) #define CAN_COW_FLAGS (SVp_POK|SVf_POK) #define SV_CHECK_THINKFIRST(sv) if (SvTHINKFIRST(sv)) \ sv_force_normal_flags(sv, 0) /* all these 'functions' are now just macros */ #define sv_pv(sv) SvPV_nolen(sv) #define sv_pvutf8(sv) SvPVutf8_nolen(sv) #define sv_pvbyte(sv) SvPVbyte_nolen(sv) #define sv_pvn_force_nomg(sv, lp) sv_pvn_force_flags(sv, lp, 0) #define sv_utf8_upgrade_nomg(sv) sv_utf8_upgrade_flags(sv, 0) #define sv_catpvn_nomg(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, 0) #define sv_setsv(dsv, ssv) sv_setsv_flags(dsv, ssv, SV_GMAGIC) #define sv_setsv_nomg(dsv, ssv) sv_setsv_flags(dsv, ssv, 0) #define sv_catsv(dsv, ssv) sv_catsv_flags(dsv, ssv, SV_GMAGIC) #define sv_catsv_nomg(dsv, ssv) sv_catsv_flags(dsv, ssv, 0) #define sv_catsv_mg(dsv, ssv) sv_catsv_flags(dsv, ssv, SV_GMAGIC|SV_SMAGIC) #define sv_catpvn(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, SV_GMAGIC) #define sv_catpvn_mg(sv, sstr, slen) \ sv_catpvn_flags(sv, sstr, slen, SV_GMAGIC|SV_SMAGIC); #define sv_2pv(sv, lp) sv_2pv_flags(sv, lp, SV_GMAGIC) #define sv_2pv_nolen(sv) sv_2pv(sv, 0) #define sv_2pvbyte_nolen(sv) sv_2pvbyte(sv, 0) #define sv_2pvutf8_nolen(sv) sv_2pvutf8(sv, 0) #define sv_2pv_nomg(sv, lp) sv_2pv_flags(sv, lp, 0) #define sv_pvn_force(sv, lp) sv_pvn_force_flags(sv, lp, SV_GMAGIC) #define sv_utf8_upgrade(sv) sv_utf8_upgrade_flags(sv, SV_GMAGIC) #define sv_2iv(sv) sv_2iv_flags(sv, SV_GMAGIC) #define sv_2uv(sv) sv_2uv_flags(sv, SV_GMAGIC) /* Should be named SvCatPVN_utf8_upgrade? */ #define sv_catpvn_utf8_upgrade(dsv, sstr, slen, nsv) \ STMT_START { \ if (!(nsv)) \ nsv = sv_2mortal(newSVpvn(sstr, slen)); \ else \ sv_setpvn(nsv, sstr, slen); \ SvUTF8_off(nsv); \ sv_utf8_upgrade(nsv); \ sv_catsv(dsv, nsv); \ } STMT_END /* =for apidoc Am|SV*|newRV_inc|SV* sv Creates an RV wrapper for an SV. The reference count for the original SV is incremented. =cut */ #define newRV_inc(sv) newRV(sv) /* the following macros update any magic values this sv is associated with */ /* =head1 Magical Functions =for apidoc Am|void|SvGETMAGIC|SV* sv Invokes C on an SV if it has 'get' magic. This macro evaluates its argument more than once. =for apidoc Am|void|SvSETMAGIC|SV* sv Invokes C on an SV if it has 'set' magic. This macro evaluates its argument more than once. =for apidoc Am|void|SvSetSV|SV* dsb|SV* ssv Calls C if dsv is not the same as ssv. May evaluate arguments more than once. =for apidoc Am|void|SvSetSV_nosteal|SV* dsv|SV* ssv Calls a non-destructive version of C if dsv is not the same as ssv. May evaluate arguments more than once. =for apidoc Am|void|SvSetMagicSV|SV* dsb|SV* ssv Like C, but does any set magic required afterwards. =for apidoc Am|void|SvSetMagicSV_nosteal|SV* dsv|SV* ssv Like C, but does any set magic required afterwards. =for apidoc Am|void|SvSHARE|SV* sv Arranges for sv to be shared between threads if a suitable module has been loaded. =for apidoc Am|void|SvLOCK|SV* sv Arranges for a mutual exclusion lock to be obtained on sv if a suitable module has been loaded. =for apidoc Am|void|SvUNLOCK|SV* sv Releases a mutual exclusion lock on sv if a suitable module has been loaded. =head1 SV Manipulation Functions =for apidoc Am|char *|SvGROW|SV* sv|STRLEN len Expands the character buffer in the SV so that it has room for the indicated number of bytes (remember to reserve space for an extra trailing NUL character). Calls C to perform the expansion if necessary. Returns a pointer to the character buffer. =cut */ #define SvSHARE(sv) CALL_FPTR(PL_sharehook)(aTHX_ sv) #define SvLOCK(sv) CALL_FPTR(PL_lockhook)(aTHX_ sv) #define SvUNLOCK(sv) CALL_FPTR(PL_unlockhook)(aTHX_ sv) #define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END #define SvSETMAGIC(x) STMT_START { if (SvSMAGICAL(x)) mg_set(x); } STMT_END #define SvSetSV_and(dst,src,finally) \ STMT_START { \ if ((dst) != (src)) { \ sv_setsv(dst, src); \ finally; \ } \ } STMT_END #define SvSetSV_nosteal_and(dst,src,finally) \ STMT_START { \ if ((dst) != (src)) { \ sv_setsv_flags(dst, src, SV_GMAGIC | SV_NOSTEAL); \ finally; \ } \ } STMT_END #define SvSetSV(dst,src) \ SvSetSV_and(dst,src,/*nothing*/;) #define SvSetSV_nosteal(dst,src) \ SvSetSV_nosteal_and(dst,src,/*nothing*/;) #define SvSetMagicSV(dst,src) \ SvSetSV_and(dst,src,SvSETMAGIC(dst)) #define SvSetMagicSV_nosteal(dst,src) \ SvSetSV_nosteal_and(dst,src,SvSETMAGIC(dst)) #if !defined(SKIP_DEBUGGING) #define SvPEEK(sv) sv_peek(sv) #else #define SvPEEK(sv) "" #endif #define SvIMMORTAL(sv) ((sv)==&PL_sv_undef || (sv)==&PL_sv_yes || (sv)==&PL_sv_no || (sv)==&PL_sv_placeholder) #define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) #define isGV(sv) (SvTYPE(sv) == SVt_PVGV) /* If I give every macro argument a different name, then there won't be bugs where nested macros get confused. Been there, done that. */ #define isGV_with_GP(pwadak) \ (((SvFLAGS(pwadak) & (SVp_POK|SVp_SCREAM)) == SVp_SCREAM) \ && (SvTYPE(pwadak) == SVt_PVGV || SvTYPE(pwadak) == SVt_PVLV)) #define SvGROW(sv,len) (SvLEN(sv) < (len) ? sv_grow(sv,len) : SvPVX(sv)) #define SvGROW_mutable(sv,len) \ (SvLEN(sv) < (len) ? sv_grow(sv,len) : SvPVX_mutable(sv)) #define Sv_Grow sv_grow #define CLONEf_COPY_STACKS 1 #define CLONEf_KEEP_PTR_TABLE 2 #define CLONEf_CLONE_HOST 4 #define CLONEf_JOIN_IN 8 struct clone_params { AV* stashes; UV flags; PerlInterpreter *proto_perl; }; /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/perlinc/iperlsys.h0000644000175000001440000013651511550664630021470 0ustar mhxusers/* * iperlsys.h - Perl's interface to the system * * This file defines the system level functionality that perl needs. * * When using C, this definition is in the form of a set of macros * that can be #defined to the system-level function (or a wrapper * provided elsewhere). * * GSAR 21-JUN-98 */ #ifndef __Inc__IPerl___ #define __Inc__IPerl___ /* * PerlXXX_YYY explained - DickH and DougL @ ActiveState.com * * XXX := functional group * YYY := stdlib/OS function name * * Continuing with the theme of PerlIO, all OS functionality was * encapsulated into one of several interfaces. * * PerlIO - stdio * PerlLIO - low level I/O * PerlMem - malloc, realloc, free * PerlDir - directory related * PerlEnv - process environment handling * PerlProc - process control * PerlSock - socket functions * * * The features of this are: * 1. All OS dependant code is in the Perl Host and not the Perl Core. * (At least this is the holy grail goal of this work) * 2. The Perl Host (see perl.h for description) can provide a new and * improved interface to OS functionality if required. * 3. Developers can easily hook into the OS calls for instrumentation * or diagnostic purposes. * * What was changed to do this: * 1. All calls to OS functions were replaced with PerlXXX_YYY * */ /* Interface for perl stdio functions, or whatever we are Configure-d to use. */ #include "perlio.h" #ifndef Sighandler_t # if defined(HAS_SIGACTION) && defined(SA_SIGINFO) typedef Signal_t (*Sighandler_t) (int, ...); # else typedef Signal_t (*Sighandler_t) (int); # endif #endif #if defined(PERL_IMPLICIT_SYS) /* IPerlStdIO */ struct IPerlStdIO; struct IPerlStdIOInfo; typedef FILE* (*LPStdin)(struct IPerlStdIO*); typedef FILE* (*LPStdout)(struct IPerlStdIO*); typedef FILE* (*LPStderr)(struct IPerlStdIO*); typedef FILE* (*LPOpen)(struct IPerlStdIO*, const char*, const char*); typedef int (*LPClose)(struct IPerlStdIO*, FILE*); typedef int (*LPEof)(struct IPerlStdIO*, FILE*); typedef int (*LPError)(struct IPerlStdIO*, FILE*); typedef void (*LPClearerr)(struct IPerlStdIO*, FILE*); typedef int (*LPGetc)(struct IPerlStdIO*, FILE*); typedef char* (*LPGetBase)(struct IPerlStdIO*, FILE*); typedef int (*LPGetBufsiz)(struct IPerlStdIO*, FILE*); typedef int (*LPGetCnt)(struct IPerlStdIO*, FILE*); typedef char* (*LPGetPtr)(struct IPerlStdIO*, FILE*); typedef char* (*LPGets)(struct IPerlStdIO*, FILE*, char*, int); typedef int (*LPPutc)(struct IPerlStdIO*, FILE*, int); typedef int (*LPPuts)(struct IPerlStdIO*, FILE*, const char*); typedef int (*LPFlush)(struct IPerlStdIO*, FILE*); typedef int (*LPUngetc)(struct IPerlStdIO*, int,FILE*); typedef int (*LPFileno)(struct IPerlStdIO*, FILE*); typedef FILE* (*LPFdopen)(struct IPerlStdIO*, int, const char*); typedef FILE* (*LPReopen)(struct IPerlStdIO*, const char*, const char*, FILE*); typedef SSize_t (*LPRead)(struct IPerlStdIO*, void*, Size_t, Size_t, FILE *); typedef SSize_t (*LPWrite)(struct IPerlStdIO*, const void*, Size_t, Size_t, FILE *); typedef void (*LPSetBuf)(struct IPerlStdIO*, FILE*, char*); typedef int (*LPSetVBuf)(struct IPerlStdIO*, FILE*, char*, int, Size_t); typedef void (*LPSetCnt)(struct IPerlStdIO*, FILE*, int); #ifndef NETWARE typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, char*); #elif defined(NETWARE) typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, char*, int); #endif typedef void (*LPSetlinebuf)(struct IPerlStdIO*, FILE*); typedef int (*LPPrintf)(struct IPerlStdIO*, FILE*, const char*, ...); typedef int (*LPVprintf)(struct IPerlStdIO*, FILE*, const char*, va_list); typedef Off_t (*LPTell)(struct IPerlStdIO*, FILE*); typedef int (*LPSeek)(struct IPerlStdIO*, FILE*, Off_t, int); typedef void (*LPRewind)(struct IPerlStdIO*, FILE*); typedef FILE* (*LPTmpfile)(struct IPerlStdIO*); typedef int (*LPGetpos)(struct IPerlStdIO*, FILE*, Fpos_t*); typedef int (*LPSetpos)(struct IPerlStdIO*, FILE*, const Fpos_t*); typedef void (*LPInit)(struct IPerlStdIO*); typedef void (*LPInitOSExtras)(struct IPerlStdIO*); typedef FILE* (*LPFdupopen)(struct IPerlStdIO*, FILE*); struct IPerlStdIO { LPStdin pStdin; LPStdout pStdout; LPStderr pStderr; LPOpen pOpen; LPClose pClose; LPEof pEof; LPError pError; LPClearerr pClearerr; LPGetc pGetc; LPGetBase pGetBase; LPGetBufsiz pGetBufsiz; LPGetCnt pGetCnt; LPGetPtr pGetPtr; LPGets pGets; LPPutc pPutc; LPPuts pPuts; LPFlush pFlush; LPUngetc pUngetc; LPFileno pFileno; LPFdopen pFdopen; LPReopen pReopen; LPRead pRead; LPWrite pWrite; LPSetBuf pSetBuf; LPSetVBuf pSetVBuf; LPSetCnt pSetCnt; LPSetPtr pSetPtr; LPSetlinebuf pSetlinebuf; LPPrintf pPrintf; LPVprintf pVprintf; LPTell pTell; LPSeek pSeek; LPRewind pRewind; LPTmpfile pTmpfile; LPGetpos pGetpos; LPSetpos pSetpos; LPInit pInit; LPInitOSExtras pInitOSExtras; LPFdupopen pFdupopen; }; struct IPerlStdIOInfo { unsigned long nCount; /* number of entries expected */ struct IPerlStdIO perlStdIOList; }; /* These do not belong here ... NI-S, 14 Nov 2000 */ #ifdef USE_STDIO_PTR # define PerlSIO_has_cntptr(f) 1 # ifdef STDIO_PTR_LVALUE # ifdef STDIO_CNT_LVALUE # define PerlSIO_canset_cnt(f) 1 # ifdef STDIO_PTR_LVAL_NOCHANGE_CNT # define PerlSIO_fast_gets(f) 1 # endif # else /* STDIO_CNT_LVALUE */ # define PerlSIO_canset_cnt(f) 0 # endif # else /* STDIO_PTR_LVALUE */ # ifdef STDIO_PTR_LVAL_SETS_CNT # define PerlSIO_fast_gets(f) 1 # endif # endif #else /* USE_STDIO_PTR */ # define PerlSIO_has_cntptr(f) 0 # define PerlSIO_canset_cnt(f) 0 #endif /* USE_STDIO_PTR */ #ifndef PerlSIO_fast_gets #define PerlSIO_fast_gets(f) 0 #endif #ifdef FILE_base #define PerlSIO_has_base(f) 1 #else #define PerlSIO_has_base(f) 0 #endif /* Now take FILE * via function table */ #define PerlSIO_stdin \ (*PL_StdIO->pStdin)(PL_StdIO) #define PerlSIO_stdout \ (*PL_StdIO->pStdout)(PL_StdIO) #define PerlSIO_stderr \ (*PL_StdIO->pStderr)(PL_StdIO) #define PerlSIO_fopen(x,y) \ (*PL_StdIO->pOpen)(PL_StdIO, (x),(y)) #define PerlSIO_fclose(f) \ (*PL_StdIO->pClose)(PL_StdIO, (f)) #define PerlSIO_feof(f) \ (*PL_StdIO->pEof)(PL_StdIO, (f)) #define PerlSIO_ferror(f) \ (*PL_StdIO->pError)(PL_StdIO, (f)) #define PerlSIO_clearerr(f) \ (*PL_StdIO->pClearerr)(PL_StdIO, (f)) #define PerlSIO_fgetc(f) \ (*PL_StdIO->pGetc)(PL_StdIO, (f)) #define PerlSIO_get_base(f) \ (*PL_StdIO->pGetBase)(PL_StdIO, (f)) #define PerlSIO_get_bufsiz(f) \ (*PL_StdIO->pGetBufsiz)(PL_StdIO, (f)) #define PerlSIO_get_cnt(f) \ (*PL_StdIO->pGetCnt)(PL_StdIO, (f)) #define PerlSIO_get_ptr(f) \ (*PL_StdIO->pGetPtr)(PL_StdIO, (f)) #define PerlSIO_fputc(f,c) \ (*PL_StdIO->pPutc)(PL_StdIO, (f),(c)) #define PerlSIO_fputs(f,s) \ (*PL_StdIO->pPuts)(PL_StdIO, (f),(s)) #define PerlSIO_fflush(f) \ (*PL_StdIO->pFlush)(PL_StdIO, (f)) #define PerlSIO_fgets(s, n, fp) \ (*PL_StdIO->pGets)(PL_StdIO, (fp), s, n) #define PerlSIO_ungetc(c,f) \ (*PL_StdIO->pUngetc)(PL_StdIO, (c),(f)) #define PerlSIO_fileno(f) \ (*PL_StdIO->pFileno)(PL_StdIO, (f)) #define PerlSIO_fdopen(f, s) \ (*PL_StdIO->pFdopen)(PL_StdIO, (f),(s)) #define PerlSIO_freopen(p, m, f) \ (*PL_StdIO->pReopen)(PL_StdIO, (p), (m), (f)) #define PerlSIO_fread(buf,sz,count,f) \ (*PL_StdIO->pRead)(PL_StdIO, (buf), (sz), (count), (f)) #define PerlSIO_fwrite(buf,sz,count,f) \ (*PL_StdIO->pWrite)(PL_StdIO, (buf), (sz), (count), (f)) #define PerlSIO_setbuf(f,b) \ (*PL_StdIO->pSetBuf)(PL_StdIO, (f), (b)) #define PerlSIO_setvbuf(f,b,t,s) \ (*PL_StdIO->pSetVBuf)(PL_StdIO, (f),(b),(t),(s)) #define PerlSIO_set_cnt(f,c) \ (*PL_StdIO->pSetCnt)(PL_StdIO, (f), (c)) #define PerlSIO_set_ptr(f,p) \ (*PL_StdIO->pSetPtr)(PL_StdIO, (f), (p)) #define PerlSIO_setlinebuf(f) \ (*PL_StdIO->pSetlinebuf)(PL_StdIO, (f)) #define PerlSIO_printf Perl_fprintf_nocontext #define PerlSIO_stdoutf Perl_printf_nocontext #define PerlSIO_vprintf(f,fmt,a) \ (*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a) #define PerlSIO_ftell(f) \ (*PL_StdIO->pTell)(PL_StdIO, (f)) #define PerlSIO_fseek(f,o,w) \ (*PL_StdIO->pSeek)(PL_StdIO, (f),(o),(w)) #define PerlSIO_fgetpos(f,p) \ (*PL_StdIO->pGetpos)(PL_StdIO, (f),(p)) #define PerlSIO_fsetpos(f,p) \ (*PL_StdIO->pSetpos)(PL_StdIO, (f),(p)) #define PerlSIO_rewind(f) \ (*PL_StdIO->pRewind)(PL_StdIO, (f)) #define PerlSIO_tmpfile() \ (*PL_StdIO->pTmpfile)(PL_StdIO) #define PerlSIO_init() \ (*PL_StdIO->pInit)(PL_StdIO) #undef init_os_extras #define init_os_extras() \ (*PL_StdIO->pInitOSExtras)(PL_StdIO) #define PerlSIO_fdupopen(f) \ (*PL_StdIO->pFdupopen)(PL_StdIO, (f)) #else /* PERL_IMPLICIT_SYS */ #define PerlSIO_stdin stdin #define PerlSIO_stdout stdout #define PerlSIO_stderr stderr #define PerlSIO_fopen(x,y) fopen(x,y) #ifdef __VOS__ /* Work around VOS bug posix-979, wrongly setting errno when at end of file. */ #define PerlSIO_fclose(f) (((errno==1025)?errno=0:0),fclose(f)) #define PerlSIO_feof(f) (((errno==1025)?errno=0:0),feof(f)) #define PerlSIO_ferror(f) (((errno==1025)?errno=0:0),ferror(f)) #else #define PerlSIO_fclose(f) fclose(f) #define PerlSIO_feof(f) feof(f) #define PerlSIO_ferror(f) ferror(f) #endif #define PerlSIO_clearerr(f) clearerr(f) #define PerlSIO_fgetc(f) fgetc(f) #ifdef FILE_base #define PerlSIO_get_base(f) FILE_base(f) #define PerlSIO_get_bufsiz(f) FILE_bufsiz(f) #else #define PerlSIO_get_base(f) NULL #define PerlSIO_get_bufsiz(f) 0 #endif #ifdef USE_STDIO_PTR #define PerlSIO_get_cnt(f) FILE_cnt(f) #define PerlSIO_get_ptr(f) FILE_ptr(f) #else #define PerlSIO_get_cnt(f) 0 #define PerlSIO_get_ptr(f) NULL #endif #define PerlSIO_fputc(f,c) fputc(c,f) #define PerlSIO_fputs(f,s) fputs(s,f) #define PerlSIO_fflush(f) Fflush(f) #define PerlSIO_fgets(s, n, fp) fgets(s,n,fp) #if defined(VMS) && defined(__DECC) /* Unusual definition of ungetc() here to accomodate fast_sv_gets()' * belief that it can mix getc/ungetc with reads from stdio buffer */ int decc$ungetc(int __c, FILE *__stream); # define PerlSIO_ungetc(c,f) ((c) == EOF ? EOF : \ ((*(f) && !((*(f))->_flag & _IONBF) && \ ((*(f))->_ptr > (*(f))->_base)) ? \ ((*(f))->_cnt++, *(--(*(f))->_ptr) = (c)) : decc$ungetc(c,f))) #else # define PerlSIO_ungetc(c,f) ungetc(c,f) #endif #define PerlSIO_fileno(f) fileno(f) #define PerlSIO_fdopen(f, s) fdopen(f,s) #define PerlSIO_freopen(p, m, f) freopen(p,m,f) #define PerlSIO_fread(buf,sz,count,f) fread(buf,sz,count,f) #define PerlSIO_fwrite(buf,sz,count,f) fwrite(buf,sz,count,f) #define PerlSIO_setbuf(f,b) setbuf(f,b) #define PerlSIO_setvbuf(f,b,t,s) setvbuf(f,b,t,s) #if defined(USE_STDIO_PTR) && defined(STDIO_CNT_LVALUE) #define PerlSIO_set_cnt(f,c) FILE_cnt(f) = (c) #else #define PerlSIO_set_cnt(f,c) PerlIOProc_abort() #endif #if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE) #define PerlSIO_set_ptr(f,p) FILE_ptr(f) = (p) #else #define PerlSIO_set_ptr(f,p) PerlIOProc_abort() #endif #define PerlSIO_setlinebuf(f) setlinebuf(f) #define PerlSIO_printf fprintf #define PerlSIO_stdoutf printf #define PerlSIO_vprintf(f,fmt,a) vfprintf(f,fmt,a) #define PerlSIO_ftell(f) ftell(f) #define PerlSIO_fseek(f,o,w) fseek(f,o,w) #define PerlSIO_fgetpos(f,p) fgetpos(f,p) #define PerlSIO_fsetpos(f,p) fsetpos(f,p) #define PerlSIO_rewind(f) rewind(f) #define PerlSIO_tmpfile() tmpfile() #define PerlSIO_fdupopen(f) (f) #endif /* PERL_IMPLICIT_SYS */ /* * Interface for directory functions */ #if defined(PERL_IMPLICIT_SYS) /* IPerlDir */ struct IPerlDir; struct IPerlDirInfo; typedef int (*LPMakedir)(struct IPerlDir*, const char*, int); typedef int (*LPChdir)(struct IPerlDir*, const char*); typedef int (*LPRmdir)(struct IPerlDir*, const char*); typedef int (*LPDirClose)(struct IPerlDir*, DIR*); typedef DIR* (*LPDirOpen)(struct IPerlDir*, const char*); typedef struct direct* (*LPDirRead)(struct IPerlDir*, DIR*); typedef void (*LPDirRewind)(struct IPerlDir*, DIR*); typedef void (*LPDirSeek)(struct IPerlDir*, DIR*, long); typedef long (*LPDirTell)(struct IPerlDir*, DIR*); #ifdef WIN32 typedef char* (*LPDirMapPathA)(struct IPerlDir*, const char*); typedef WCHAR* (*LPDirMapPathW)(struct IPerlDir*, const WCHAR*); #endif struct IPerlDir { LPMakedir pMakedir; LPChdir pChdir; LPRmdir pRmdir; LPDirClose pClose; LPDirOpen pOpen; LPDirRead pRead; LPDirRewind pRewind; LPDirSeek pSeek; LPDirTell pTell; #ifdef WIN32 LPDirMapPathA pMapPathA; LPDirMapPathW pMapPathW; #endif }; struct IPerlDirInfo { unsigned long nCount; /* number of entries expected */ struct IPerlDir perlDirList; }; #define PerlDir_mkdir(name, mode) \ (*PL_Dir->pMakedir)(PL_Dir, (name), (mode)) #define PerlDir_chdir(name) \ (*PL_Dir->pChdir)(PL_Dir, (name)) #define PerlDir_rmdir(name) \ (*PL_Dir->pRmdir)(PL_Dir, (name)) #define PerlDir_close(dir) \ (*PL_Dir->pClose)(PL_Dir, (dir)) #define PerlDir_open(name) \ (*PL_Dir->pOpen)(PL_Dir, (name)) #define PerlDir_read(dir) \ (*PL_Dir->pRead)(PL_Dir, (dir)) #define PerlDir_rewind(dir) \ (*PL_Dir->pRewind)(PL_Dir, (dir)) #define PerlDir_seek(dir, loc) \ (*PL_Dir->pSeek)(PL_Dir, (dir), (loc)) #define PerlDir_tell(dir) \ (*PL_Dir->pTell)(PL_Dir, (dir)) #ifdef WIN32 #define PerlDir_mapA(dir) \ (*PL_Dir->pMapPathA)(PL_Dir, (dir)) #define PerlDir_mapW(dir) \ (*PL_Dir->pMapPathW)(PL_Dir, (dir)) #endif #else /* PERL_IMPLICIT_SYS */ #define PerlDir_mkdir(name, mode) Mkdir((name), (mode)) #ifdef VMS # define PerlDir_chdir(n) Chdir((n)) #else # define PerlDir_chdir(name) chdir((name)) #endif #define PerlDir_rmdir(name) rmdir((name)) #define PerlDir_close(dir) closedir((dir)) #define PerlDir_open(name) opendir((name)) #define PerlDir_read(dir) readdir((dir)) #define PerlDir_rewind(dir) rewinddir((dir)) #define PerlDir_seek(dir, loc) seekdir((dir), (loc)) #define PerlDir_tell(dir) telldir((dir)) #ifdef WIN32 #define PerlDir_mapA(dir) dir #define PerlDir_mapW(dir) dir #endif #endif /* PERL_IMPLICIT_SYS */ /* Interface for perl environment functions */ #if defined(PERL_IMPLICIT_SYS) /* IPerlEnv */ struct IPerlEnv; struct IPerlEnvInfo; typedef char* (*LPEnvGetenv)(struct IPerlEnv*, const char*); typedef int (*LPEnvPutenv)(struct IPerlEnv*, const char*); typedef char* (*LPEnvGetenv_len)(struct IPerlEnv*, const char *varname, unsigned long *len); typedef int (*LPEnvUname)(struct IPerlEnv*, struct utsname *name); typedef void (*LPEnvClearenv)(struct IPerlEnv*); typedef void* (*LPEnvGetChildenv)(struct IPerlEnv*); typedef void (*LPEnvFreeChildenv)(struct IPerlEnv*, void* env); typedef char* (*LPEnvGetChilddir)(struct IPerlEnv*); typedef void (*LPEnvFreeChilddir)(struct IPerlEnv*, char* dir); #ifdef HAS_ENVGETENV typedef char* (*LPENVGetenv)(struct IPerlEnv*, const char *varname); typedef char* (*LPENVGetenv_len)(struct IPerlEnv*, const char *varname, unsigned long *len); #endif #ifdef WIN32 typedef unsigned long (*LPEnvOsID)(struct IPerlEnv*); typedef char* (*LPEnvLibPath)(struct IPerlEnv*, const char*); typedef char* (*LPEnvSiteLibPath)(struct IPerlEnv*, const char*); typedef char* (*LPEnvVendorLibPath)(struct IPerlEnv*, const char*); typedef void (*LPEnvGetChildIO)(struct IPerlEnv*, child_IO_table*); #endif struct IPerlEnv { LPEnvGetenv pGetenv; LPEnvPutenv pPutenv; LPEnvGetenv_len pGetenv_len; LPEnvUname pEnvUname; LPEnvClearenv pClearenv; LPEnvGetChildenv pGetChildenv; LPEnvFreeChildenv pFreeChildenv; LPEnvGetChilddir pGetChilddir; LPEnvFreeChilddir pFreeChilddir; #ifdef HAS_ENVGETENV LPENVGetenv pENVGetenv; LPENVGetenv_len pENVGetenv_len; #endif #ifdef WIN32 LPEnvOsID pEnvOsID; LPEnvLibPath pLibPath; LPEnvSiteLibPath pSiteLibPath; LPEnvVendorLibPath pVendorLibPath; LPEnvGetChildIO pGetChildIO; #endif }; struct IPerlEnvInfo { unsigned long nCount; /* number of entries expected */ struct IPerlEnv perlEnvList; }; #define PerlEnv_putenv(str) \ (*PL_Env->pPutenv)(PL_Env,(str)) #define PerlEnv_getenv(str) \ (*PL_Env->pGetenv)(PL_Env,(str)) #define PerlEnv_getenv_len(str,l) \ (*PL_Env->pGetenv_len)(PL_Env,(str), (l)) #define PerlEnv_clearenv() \ (*PL_Env->pClearenv)(PL_Env) #define PerlEnv_get_childenv() \ (*PL_Env->pGetChildenv)(PL_Env) #define PerlEnv_free_childenv(e) \ (*PL_Env->pFreeChildenv)(PL_Env, (e)) #define PerlEnv_get_childdir() \ (*PL_Env->pGetChilddir)(PL_Env) #define PerlEnv_free_childdir(d) \ (*PL_Env->pFreeChilddir)(PL_Env, (d)) #ifdef HAS_ENVGETENV # define PerlEnv_ENVgetenv(str) \ (*PL_Env->pENVGetenv)(PL_Env,(str)) # define PerlEnv_ENVgetenv_len(str,l) \ (*PL_Env->pENVGetenv_len)(PL_Env,(str), (l)) #else # define PerlEnv_ENVgetenv(str) \ PerlEnv_getenv((str)) # define PerlEnv_ENVgetenv_len(str,l) \ PerlEnv_getenv_len((str),(l)) #endif #define PerlEnv_uname(name) \ (*PL_Env->pEnvUname)(PL_Env,(name)) #ifdef WIN32 #define PerlEnv_os_id() \ (*PL_Env->pEnvOsID)(PL_Env) #define PerlEnv_lib_path(str) \ (*PL_Env->pLibPath)(PL_Env,(str)) #define PerlEnv_sitelib_path(str) \ (*PL_Env->pSiteLibPath)(PL_Env,(str)) #define PerlEnv_vendorlib_path(str) \ (*PL_Env->pVendorLibPath)(PL_Env,(str)) #define PerlEnv_get_child_IO(ptr) \ (*PL_Env->pGetChildIO)(PL_Env, ptr) #endif #else /* PERL_IMPLICIT_SYS */ #define PerlEnv_putenv(str) putenv((str)) #define PerlEnv_getenv(str) getenv((str)) #define PerlEnv_getenv_len(str,l) getenv_len((str), (l)) #ifdef HAS_ENVGETENV # define PerlEnv_ENVgetenv(str) ENVgetenv((str)) # define PerlEnv_ENVgetenv_len(str,l) ENVgetenv_len((str), (l)) #else # define PerlEnv_ENVgetenv(str) PerlEnv_getenv((str)) # define PerlEnv_ENVgetenv_len(str,l) PerlEnv_getenv_len((str), (l)) #endif #define PerlEnv_uname(name) uname((name)) #ifdef WIN32 #define PerlEnv_os_id() win32_os_id() #define PerlEnv_lib_path(str) win32_get_privlib(str) #define PerlEnv_sitelib_path(str) win32_get_sitelib(str) #define PerlEnv_vendorlib_path(str) win32_get_vendorlib(str) #define PerlEnv_get_child_IO(ptr) win32_get_child_IO(ptr) #define PerlEnv_clearenv() win32_clearenv() #define PerlEnv_get_childenv() win32_get_childenv() #define PerlEnv_free_childenv(e) win32_free_childenv((e)) #define PerlEnv_get_childdir() win32_get_childdir() #define PerlEnv_free_childdir(d) win32_free_childdir((d)) #else #define PerlEnv_clearenv() clearenv() #define PerlEnv_get_childenv() get_childenv() #define PerlEnv_free_childenv(e) free_childenv((e)) #define PerlEnv_get_childdir() get_childdir() #define PerlEnv_free_childdir(d) free_childdir((d)) #endif #endif /* PERL_IMPLICIT_SYS */ /* Interface for perl low-level IO functions */ #if defined(PERL_IMPLICIT_SYS) /* IPerlLIO */ struct IPerlLIO; struct IPerlLIOInfo; typedef int (*LPLIOAccess)(struct IPerlLIO*, const char*, int); typedef int (*LPLIOChmod)(struct IPerlLIO*, const char*, int); typedef int (*LPLIOChown)(struct IPerlLIO*, const char*, uid_t, gid_t); typedef int (*LPLIOChsize)(struct IPerlLIO*, int, Off_t); typedef int (*LPLIOClose)(struct IPerlLIO*, int); typedef int (*LPLIODup)(struct IPerlLIO*, int); typedef int (*LPLIODup2)(struct IPerlLIO*, int, int); typedef int (*LPLIOFlock)(struct IPerlLIO*, int, int); typedef int (*LPLIOFileStat)(struct IPerlLIO*, int, Stat_t*); typedef int (*LPLIOIOCtl)(struct IPerlLIO*, int, unsigned int, char*); typedef int (*LPLIOIsatty)(struct IPerlLIO*, int); typedef int (*LPLIOLink)(struct IPerlLIO*, const char*, const char *); typedef Off_t (*LPLIOLseek)(struct IPerlLIO*, int, Off_t, int); typedef int (*LPLIOLstat)(struct IPerlLIO*, const char*, Stat_t*); typedef char* (*LPLIOMktemp)(struct IPerlLIO*, char*); typedef int (*LPLIOOpen)(struct IPerlLIO*, const char*, int); typedef int (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int); typedef int (*LPLIORead)(struct IPerlLIO*, int, void*, unsigned int); typedef int (*LPLIORename)(struct IPerlLIO*, const char*, const char*); #ifdef NETWARE typedef int (*LPLIOSetmode)(struct IPerlLIO*, FILE*, int); #else typedef int (*LPLIOSetmode)(struct IPerlLIO*, int, int); #endif /* NETWARE */ typedef int (*LPLIONameStat)(struct IPerlLIO*, const char*, Stat_t*); typedef char* (*LPLIOTmpnam)(struct IPerlLIO*, char*); typedef int (*LPLIOUmask)(struct IPerlLIO*, int); typedef int (*LPLIOUnlink)(struct IPerlLIO*, const char*); typedef int (*LPLIOUtime)(struct IPerlLIO*, const char*, struct utimbuf*); typedef int (*LPLIOWrite)(struct IPerlLIO*, int, const void*, unsigned int); struct IPerlLIO { LPLIOAccess pAccess; LPLIOChmod pChmod; LPLIOChown pChown; LPLIOChsize pChsize; LPLIOClose pClose; LPLIODup pDup; LPLIODup2 pDup2; LPLIOFlock pFlock; LPLIOFileStat pFileStat; LPLIOIOCtl pIOCtl; LPLIOIsatty pIsatty; LPLIOLink pLink; LPLIOLseek pLseek; LPLIOLstat pLstat; LPLIOMktemp pMktemp; LPLIOOpen pOpen; LPLIOOpen3 pOpen3; LPLIORead pRead; LPLIORename pRename; LPLIOSetmode pSetmode; LPLIONameStat pNameStat; LPLIOTmpnam pTmpnam; LPLIOUmask pUmask; LPLIOUnlink pUnlink; LPLIOUtime pUtime; LPLIOWrite pWrite; }; struct IPerlLIOInfo { unsigned long nCount; /* number of entries expected */ struct IPerlLIO perlLIOList; }; #define PerlLIO_access(file, mode) \ (*PL_LIO->pAccess)(PL_LIO, (file), (mode)) #define PerlLIO_chmod(file, mode) \ (*PL_LIO->pChmod)(PL_LIO, (file), (mode)) #define PerlLIO_chown(file, owner, group) \ (*PL_LIO->pChown)(PL_LIO, (file), (owner), (group)) #define PerlLIO_chsize(fd, size) \ (*PL_LIO->pChsize)(PL_LIO, (fd), (size)) #define PerlLIO_close(fd) \ (*PL_LIO->pClose)(PL_LIO, (fd)) #define PerlLIO_dup(fd) \ (*PL_LIO->pDup)(PL_LIO, (fd)) #define PerlLIO_dup2(fd1, fd2) \ (*PL_LIO->pDup2)(PL_LIO, (fd1), (fd2)) #define PerlLIO_flock(fd, op) \ (*PL_LIO->pFlock)(PL_LIO, (fd), (op)) #define PerlLIO_fstat(fd, buf) \ (*PL_LIO->pFileStat)(PL_LIO, (fd), (buf)) #define PerlLIO_ioctl(fd, u, buf) \ (*PL_LIO->pIOCtl)(PL_LIO, (fd), (u), (buf)) #define PerlLIO_isatty(fd) \ (*PL_LIO->pIsatty)(PL_LIO, (fd)) #define PerlLIO_link(oldname, newname) \ (*PL_LIO->pLink)(PL_LIO, (oldname), (newname)) #define PerlLIO_lseek(fd, offset, mode) \ (*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode)) #define PerlLIO_lstat(name, buf) \ (*PL_LIO->pLstat)(PL_LIO, (name), (buf)) #define PerlLIO_mktemp(file) \ (*PL_LIO->pMktemp)(PL_LIO, (file)) #define PerlLIO_open(file, flag) \ (*PL_LIO->pOpen)(PL_LIO, (file), (flag)) #define PerlLIO_open3(file, flag, perm) \ (*PL_LIO->pOpen3)(PL_LIO, (file), (flag), (perm)) #define PerlLIO_read(fd, buf, count) \ (*PL_LIO->pRead)(PL_LIO, (fd), (buf), (count)) #define PerlLIO_rename(oname, newname) \ (*PL_LIO->pRename)(PL_LIO, (oname), (newname)) #define PerlLIO_setmode(fd, mode) \ (*PL_LIO->pSetmode)(PL_LIO, (fd), (mode)) #define PerlLIO_stat(name, buf) \ (*PL_LIO->pNameStat)(PL_LIO, (name), (buf)) #define PerlLIO_tmpnam(str) \ (*PL_LIO->pTmpnam)(PL_LIO, (str)) #define PerlLIO_umask(mode) \ (*PL_LIO->pUmask)(PL_LIO, (mode)) #define PerlLIO_unlink(file) \ (*PL_LIO->pUnlink)(PL_LIO, (file)) #define PerlLIO_utime(file, time) \ (*PL_LIO->pUtime)(PL_LIO, (file), (time)) #define PerlLIO_write(fd, buf, count) \ (*PL_LIO->pWrite)(PL_LIO, (fd), (buf), (count)) #else /* PERL_IMPLICIT_SYS */ #define PerlLIO_access(file, mode) access((file), (mode)) #define PerlLIO_chmod(file, mode) chmod((file), (mode)) #define PerlLIO_chown(file, owner, grp) chown((file), (owner), (grp)) #if defined(HAS_TRUNCATE) # define PerlLIO_chsize(fd, size) ftruncate((fd), (size)) #elif defined(HAS_CHSIZE) # define PerlLIO_chsize(fd, size) chsize((fd), (size)) #else # define PerlLIO_chsize(fd, size) my_chsize((fd), (size)) #endif #define PerlLIO_close(fd) close((fd)) #define PerlLIO_dup(fd) dup((fd)) #define PerlLIO_dup2(fd1, fd2) dup2((fd1), (fd2)) #define PerlLIO_flock(fd, op) FLOCK((fd), (op)) #define PerlLIO_fstat(fd, buf) Fstat((fd), (buf)) #define PerlLIO_ioctl(fd, u, buf) ioctl((fd), (u), (buf)) #define PerlLIO_isatty(fd) isatty((fd)) #define PerlLIO_link(oldname, newname) link((oldname), (newname)) #define PerlLIO_lseek(fd, offset, mode) lseek((fd), (offset), (mode)) #define PerlLIO_stat(name, buf) Stat((name), (buf)) #ifdef HAS_LSTAT # define PerlLIO_lstat(name, buf) lstat((name), (buf)) #else # define PerlLIO_lstat(name, buf) PerlLIO_stat((name), (buf)) #endif #define PerlLIO_mktemp(file) mktemp((file)) #define PerlLIO_mkstemp(file) mkstemp((file)) #define PerlLIO_open(file, flag) open((file), (flag)) #define PerlLIO_open3(file, flag, perm) open((file), (flag), (perm)) #define PerlLIO_read(fd, buf, count) read((fd), (buf), (count)) #define PerlLIO_rename(old, new) rename((old), (new)) #define PerlLIO_setmode(fd, mode) setmode((fd), (mode)) #define PerlLIO_tmpnam(str) tmpnam((str)) #define PerlLIO_umask(mode) umask((mode)) #define PerlLIO_unlink(file) unlink((file)) #define PerlLIO_utime(file, time) utime((file), (time)) #define PerlLIO_write(fd, buf, count) write((fd), (buf), (count)) #endif /* PERL_IMPLICIT_SYS */ /* Interface for perl memory allocation */ #if defined(PERL_IMPLICIT_SYS) /* IPerlMem */ struct IPerlMem; struct IPerlMemInfo; typedef void* (*LPMemMalloc)(struct IPerlMem*, size_t); typedef void* (*LPMemRealloc)(struct IPerlMem*, void*, size_t); typedef void (*LPMemFree)(struct IPerlMem*, void*); typedef void* (*LPMemCalloc)(struct IPerlMem*, size_t, size_t); typedef void (*LPMemGetLock)(struct IPerlMem*); typedef void (*LPMemFreeLock)(struct IPerlMem*); typedef int (*LPMemIsLocked)(struct IPerlMem*); struct IPerlMem { LPMemMalloc pMalloc; LPMemRealloc pRealloc; LPMemFree pFree; LPMemCalloc pCalloc; LPMemGetLock pGetLock; LPMemFreeLock pFreeLock; LPMemIsLocked pIsLocked; }; struct IPerlMemInfo { unsigned long nCount; /* number of entries expected */ struct IPerlMem perlMemList; }; /* Interpreter specific memory macros */ #define PerlMem_malloc(size) \ (*PL_Mem->pMalloc)(PL_Mem, (size)) #define PerlMem_realloc(buf, size) \ (*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) #define PerlMem_free(buf) \ (*PL_Mem->pFree)(PL_Mem, (buf)) #define PerlMem_calloc(num, size) \ (*PL_Mem->pCalloc)(PL_Mem, (num), (size)) #define PerlMem_get_lock() \ (*PL_Mem->pGetLock)(PL_Mem) #define PerlMem_free_lock() \ (*PL_Mem->pFreeLock)(PL_Mem) #define PerlMem_is_locked() \ (*PL_Mem->pIsLocked)(PL_Mem) /* Shared memory macros */ #ifdef NETWARE #define PerlMemShared_malloc(size) \ (*PL_Mem->pMalloc)(PL_Mem, (size)) #define PerlMemShared_realloc(buf, size) \ (*PL_Mem->pRealloc)(PL_Mem, (buf), (size)) #define PerlMemShared_free(buf) \ (*PL_Mem->pFree)(PL_Mem, (buf)) #define PerlMemShared_calloc(num, size) \ (*PL_Mem->pCalloc)(PL_Mem, (num), (size)) #define PerlMemShared_get_lock() \ (*PL_Mem->pGetLock)(PL_Mem) #define PerlMemShared_free_lock() \ (*PL_Mem->pFreeLock)(PL_Mem) #define PerlMemShared_is_locked() \ (*PL_Mem->pIsLocked)(PL_Mem) #else #define PerlMemShared_malloc(size) \ (*PL_MemShared->pMalloc)(PL_MemShared, (size)) #define PerlMemShared_realloc(buf, size) \ (*PL_MemShared->pRealloc)(PL_MemShared, (buf), (size)) #define PerlMemShared_free(buf) \ (*PL_MemShared->pFree)(PL_MemShared, (buf)) #define PerlMemShared_calloc(num, size) \ (*PL_MemShared->pCalloc)(PL_MemShared, (num), (size)) #define PerlMemShared_get_lock() \ (*PL_MemShared->pGetLock)(PL_MemShared) #define PerlMemShared_free_lock() \ (*PL_MemShared->pFreeLock)(PL_MemShared) #define PerlMemShared_is_locked() \ (*PL_MemShared->pIsLocked)(PL_MemShared) #endif /* Parse tree memory macros */ #define PerlMemParse_malloc(size) \ (*PL_MemParse->pMalloc)(PL_MemParse, (size)) #define PerlMemParse_realloc(buf, size) \ (*PL_MemParse->pRealloc)(PL_MemParse, (buf), (size)) #define PerlMemParse_free(buf) \ (*PL_MemParse->pFree)(PL_MemParse, (buf)) #define PerlMemParse_calloc(num, size) \ (*PL_MemParse->pCalloc)(PL_MemParse, (num), (size)) #define PerlMemParse_get_lock() \ (*PL_MemParse->pGetLock)(PL_MemParse) #define PerlMemParse_free_lock() \ (*PL_MemParse->pFreeLock)(PL_MemParse) #define PerlMemParse_is_locked() \ (*PL_MemParse->pIsLocked)(PL_MemParse) #else /* PERL_IMPLICIT_SYS */ /* Interpreter specific memory macros */ #define PerlMem_malloc(size) malloc((size)) #define PerlMem_realloc(buf, size) realloc((buf), (size)) #define PerlMem_free(buf) free((buf)) #define PerlMem_calloc(num, size) calloc((num), (size)) #define PerlMem_get_lock() #define PerlMem_free_lock() #define PerlMem_is_locked() 0 /* Shared memory macros */ #define PerlMemShared_malloc(size) malloc((size)) #define PerlMemShared_realloc(buf, size) realloc((buf), (size)) #define PerlMemShared_free(buf) free((buf)) #define PerlMemShared_calloc(num, size) calloc((num), (size)) #define PerlMemShared_get_lock() #define PerlMemShared_free_lock() #define PerlMemShared_is_locked() 0 /* Parse tree memory macros */ #define PerlMemParse_malloc(size) malloc((size)) #define PerlMemParse_realloc(buf, size) realloc((buf), (size)) #define PerlMemParse_free(buf) free((buf)) #define PerlMemParse_calloc(num, size) calloc((num), (size)) #define PerlMemParse_get_lock() #define PerlMemParse_free_lock() #define PerlMemParse_is_locked() 0 #endif /* PERL_IMPLICIT_SYS */ /* Interface for perl process functions */ #if defined(PERL_IMPLICIT_SYS) #ifndef jmp_buf #include #endif /* IPerlProc */ struct IPerlProc; struct IPerlProcInfo; typedef void (*LPProcAbort)(struct IPerlProc*); typedef char* (*LPProcCrypt)(struct IPerlProc*, const char*, const char*); typedef void (*LPProcExit)(struct IPerlProc*, int) __attribute__noreturn__; typedef void (*LPProc_Exit)(struct IPerlProc*, int) __attribute__noreturn__; typedef int (*LPProcExecl)(struct IPerlProc*, const char*, const char*, const char*, const char*, const char*); typedef int (*LPProcExecv)(struct IPerlProc*, const char*, const char*const*); typedef int (*LPProcExecvp)(struct IPerlProc*, const char*, const char*const*); typedef uid_t (*LPProcGetuid)(struct IPerlProc*); typedef uid_t (*LPProcGeteuid)(struct IPerlProc*); typedef gid_t (*LPProcGetgid)(struct IPerlProc*); typedef gid_t (*LPProcGetegid)(struct IPerlProc*); typedef char* (*LPProcGetlogin)(struct IPerlProc*); typedef int (*LPProcKill)(struct IPerlProc*, int, int); typedef int (*LPProcKillpg)(struct IPerlProc*, int, int); typedef int (*LPProcPauseProc)(struct IPerlProc*); typedef PerlIO* (*LPProcPopen)(struct IPerlProc*, const char*, const char*); typedef PerlIO* (*LPProcPopenList)(struct IPerlProc*, const char*, IV narg, SV **args); typedef int (*LPProcPclose)(struct IPerlProc*, PerlIO*); typedef int (*LPProcPipe)(struct IPerlProc*, int*); typedef int (*LPProcSetuid)(struct IPerlProc*, uid_t); typedef int (*LPProcSetgid)(struct IPerlProc*, gid_t); typedef int (*LPProcSleep)(struct IPerlProc*, unsigned int); typedef int (*LPProcTimes)(struct IPerlProc*, struct tms*); typedef int (*LPProcWait)(struct IPerlProc*, int*); typedef int (*LPProcWaitpid)(struct IPerlProc*, int, int*, int); typedef Sighandler_t (*LPProcSignal)(struct IPerlProc*, int, Sighandler_t); typedef int (*LPProcFork)(struct IPerlProc*); typedef int (*LPProcGetpid)(struct IPerlProc*); #ifdef WIN32 typedef void* (*LPProcDynaLoader)(struct IPerlProc*, const char*); typedef void (*LPProcGetOSError)(struct IPerlProc*, SV* sv, DWORD dwErr); typedef int (*LPProcSpawnvp)(struct IPerlProc*, int, const char*, const char*const*); #endif typedef int (*LPProcLastHost)(struct IPerlProc*); typedef int (*LPProcGetTimeOfDay)(struct IPerlProc*, struct timeval*, void*); struct IPerlProc { LPProcAbort pAbort; LPProcCrypt pCrypt; LPProcExit pExit; LPProc_Exit p_Exit; LPProcExecl pExecl; LPProcExecv pExecv; LPProcExecvp pExecvp; LPProcGetuid pGetuid; LPProcGeteuid pGeteuid; LPProcGetgid pGetgid; LPProcGetegid pGetegid; LPProcGetlogin pGetlogin; LPProcKill pKill; LPProcKillpg pKillpg; LPProcPauseProc pPauseProc; LPProcPopen pPopen; LPProcPclose pPclose; LPProcPipe pPipe; LPProcSetuid pSetuid; LPProcSetgid pSetgid; LPProcSleep pSleep; LPProcTimes pTimes; LPProcWait pWait; LPProcWaitpid pWaitpid; LPProcSignal pSignal; LPProcFork pFork; LPProcGetpid pGetpid; #ifdef WIN32 LPProcDynaLoader pDynaLoader; LPProcGetOSError pGetOSError; LPProcSpawnvp pSpawnvp; #endif LPProcLastHost pLastHost; LPProcPopenList pPopenList; LPProcGetTimeOfDay pGetTimeOfDay; }; struct IPerlProcInfo { unsigned long nCount; /* number of entries expected */ struct IPerlProc perlProcList; }; #define PerlProc_abort() \ (*PL_Proc->pAbort)(PL_Proc) #define PerlProc_crypt(c,s) \ (*PL_Proc->pCrypt)(PL_Proc, (c), (s)) #define PerlProc_exit(s) \ (*PL_Proc->pExit)(PL_Proc, (s)) #define PerlProc__exit(s) \ (*PL_Proc->p_Exit)(PL_Proc, (s)) #define PerlProc_execl(c, w, x, y, z) \ (*PL_Proc->pExecl)(PL_Proc, (c), (w), (x), (y), (z)) #define PerlProc_execv(c, a) \ (*PL_Proc->pExecv)(PL_Proc, (c), (a)) #define PerlProc_execvp(c, a) \ (*PL_Proc->pExecvp)(PL_Proc, (c), (a)) #define PerlProc_getuid() \ (*PL_Proc->pGetuid)(PL_Proc) #define PerlProc_geteuid() \ (*PL_Proc->pGeteuid)(PL_Proc) #define PerlProc_getgid() \ (*PL_Proc->pGetgid)(PL_Proc) #define PerlProc_getegid() \ (*PL_Proc->pGetegid)(PL_Proc) #define PerlProc_getlogin() \ (*PL_Proc->pGetlogin)(PL_Proc) #define PerlProc_kill(i, a) \ (*PL_Proc->pKill)(PL_Proc, (i), (a)) #define PerlProc_killpg(i, a) \ (*PL_Proc->pKillpg)(PL_Proc, (i), (a)) #define PerlProc_pause() \ (*PL_Proc->pPauseProc)(PL_Proc) #define PerlProc_popen(c, m) \ (*PL_Proc->pPopen)(PL_Proc, (c), (m)) #define PerlProc_popen_list(m, n, a) \ (*PL_Proc->pPopenList)(PL_Proc, (m), (n), (a)) #define PerlProc_pclose(f) \ (*PL_Proc->pPclose)(PL_Proc, (f)) #define PerlProc_pipe(fd) \ (*PL_Proc->pPipe)(PL_Proc, (fd)) #define PerlProc_setuid(u) \ (*PL_Proc->pSetuid)(PL_Proc, (u)) #define PerlProc_setgid(g) \ (*PL_Proc->pSetgid)(PL_Proc, (g)) #define PerlProc_sleep(t) \ (*PL_Proc->pSleep)(PL_Proc, (t)) #define PerlProc_times(t) \ (*PL_Proc->pTimes)(PL_Proc, (t)) #define PerlProc_wait(t) \ (*PL_Proc->pWait)(PL_Proc, (t)) #define PerlProc_waitpid(p,s,f) \ (*PL_Proc->pWaitpid)(PL_Proc, (p), (s), (f)) #define PerlProc_signal(n, h) \ (*PL_Proc->pSignal)(PL_Proc, (n), (h)) #define PerlProc_fork() \ (*PL_Proc->pFork)(PL_Proc) #define PerlProc_getpid() \ (*PL_Proc->pGetpid)(PL_Proc) #define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) #define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) #ifdef WIN32 #define PerlProc_DynaLoad(f) \ (*PL_Proc->pDynaLoader)(PL_Proc, (f)) #define PerlProc_GetOSError(s,e) \ (*PL_Proc->pGetOSError)(PL_Proc, (s), (e)) #define PerlProc_spawnvp(m, c, a) \ (*PL_Proc->pSpawnvp)(PL_Proc, (m), (c), (a)) #endif #define PerlProc_lasthost() \ (*PL_Proc->pLastHost)(PL_Proc) #define PerlProc_gettimeofday(t,z) \ (*PL_Proc->pGetTimeOfDay)(PL_Proc,(t),(z)) #else /* PERL_IMPLICIT_SYS */ #define PerlProc_abort() abort() #define PerlProc_crypt(c,s) crypt((c), (s)) #define PerlProc_exit(s) exit((s)) #define PerlProc__exit(s) _exit((s)) #define PerlProc_execl(c,w,x,y,z) \ execl((c), (w), (x), (y), (z)) #define PerlProc_execv(c, a) execv((c), (a)) #define PerlProc_execvp(c, a) execvp((c), (a)) #define PerlProc_getuid() getuid() #define PerlProc_geteuid() geteuid() #define PerlProc_getgid() getgid() #define PerlProc_getegid() getegid() #define PerlProc_getlogin() getlogin() #define PerlProc_kill(i, a) kill((i), (a)) #define PerlProc_killpg(i, a) killpg((i), (a)) #define PerlProc_pause() Pause() #define PerlProc_popen(c, m) my_popen((c), (m)) #define PerlProc_popen_list(m,n,a) my_popen_list((m),(n),(a)) #define PerlProc_pclose(f) my_pclose((f)) #define PerlProc_pipe(fd) pipe((fd)) #define PerlProc_setuid(u) setuid((u)) #define PerlProc_setgid(g) setgid((g)) #define PerlProc_sleep(t) sleep((t)) #define PerlProc_times(t) times((t)) #define PerlProc_wait(t) wait((t)) #define PerlProc_waitpid(p,s,f) waitpid((p), (s), (f)) #define PerlProc_setjmp(b, n) Sigsetjmp((b), (n)) #define PerlProc_longjmp(b, n) Siglongjmp((b), (n)) #define PerlProc_signal(n, h) signal((n), (h)) #define PerlProc_fork() my_fork() #define PerlProc_getpid() getpid() #define PerlProc_gettimeofday(t,z) gettimeofday((t),(z)) #ifdef WIN32 #define PerlProc_DynaLoad(f) \ win32_dynaload((f)) #define PerlProc_GetOSError(s,e) \ win32_str_os_error((s), (e)) #define PerlProc_spawnvp(m, c, a) \ win32_spawnvp((m), (c), (a)) #undef PerlProc_signal #define PerlProc_signal(n, h) win32_signal((n), (h)) #endif #endif /* PERL_IMPLICIT_SYS */ /* Interface for perl socket functions */ #if defined(PERL_IMPLICIT_SYS) /* PerlSock */ struct IPerlSock; struct IPerlSockInfo; typedef u_long (*LPHtonl)(struct IPerlSock*, u_long); typedef u_short (*LPHtons)(struct IPerlSock*, u_short); typedef u_long (*LPNtohl)(struct IPerlSock*, u_long); typedef u_short (*LPNtohs)(struct IPerlSock*, u_short); typedef SOCKET (*LPAccept)(struct IPerlSock*, SOCKET, struct sockaddr*, int*); typedef int (*LPBind)(struct IPerlSock*, SOCKET, const struct sockaddr*, int); typedef int (*LPConnect)(struct IPerlSock*, SOCKET, const struct sockaddr*, int); typedef void (*LPEndhostent)(struct IPerlSock*); typedef void (*LPEndnetent)(struct IPerlSock*); typedef void (*LPEndprotoent)(struct IPerlSock*); typedef void (*LPEndservent)(struct IPerlSock*); typedef int (*LPGethostname)(struct IPerlSock*, char*, int); typedef int (*LPGetpeername)(struct IPerlSock*, SOCKET, struct sockaddr*, int*); typedef struct hostent* (*LPGethostbyaddr)(struct IPerlSock*, const char*, int, int); typedef struct hostent* (*LPGethostbyname)(struct IPerlSock*, const char*); typedef struct hostent* (*LPGethostent)(struct IPerlSock*); typedef struct netent* (*LPGetnetbyaddr)(struct IPerlSock*, long, int); typedef struct netent* (*LPGetnetbyname)(struct IPerlSock*, const char*); typedef struct netent* (*LPGetnetent)(struct IPerlSock*); typedef struct protoent*(*LPGetprotobyname)(struct IPerlSock*, const char*); typedef struct protoent*(*LPGetprotobynumber)(struct IPerlSock*, int); typedef struct protoent*(*LPGetprotoent)(struct IPerlSock*); typedef struct servent* (*LPGetservbyname)(struct IPerlSock*, const char*, const char*); typedef struct servent* (*LPGetservbyport)(struct IPerlSock*, int, const char*); typedef struct servent* (*LPGetservent)(struct IPerlSock*); typedef int (*LPGetsockname)(struct IPerlSock*, SOCKET, struct sockaddr*, int*); typedef int (*LPGetsockopt)(struct IPerlSock*, SOCKET, int, int, char*, int*); typedef unsigned long (*LPInetAddr)(struct IPerlSock*, const char*); typedef char* (*LPInetNtoa)(struct IPerlSock*, struct in_addr); typedef int (*LPListen)(struct IPerlSock*, SOCKET, int); typedef int (*LPRecv)(struct IPerlSock*, SOCKET, char*, int, int); typedef int (*LPRecvfrom)(struct IPerlSock*, SOCKET, char*, int, int, struct sockaddr*, int*); typedef int (*LPSelect)(struct IPerlSock*, int, char*, char*, char*, const struct timeval*); typedef int (*LPSend)(struct IPerlSock*, SOCKET, const char*, int, int); typedef int (*LPSendto)(struct IPerlSock*, SOCKET, const char*, int, int, const struct sockaddr*, int); typedef void (*LPSethostent)(struct IPerlSock*, int); typedef void (*LPSetnetent)(struct IPerlSock*, int); typedef void (*LPSetprotoent)(struct IPerlSock*, int); typedef void (*LPSetservent)(struct IPerlSock*, int); typedef int (*LPSetsockopt)(struct IPerlSock*, SOCKET, int, int, const char*, int); typedef int (*LPShutdown)(struct IPerlSock*, SOCKET, int); typedef SOCKET (*LPSocket)(struct IPerlSock*, int, int, int); typedef int (*LPSocketpair)(struct IPerlSock*, int, int, int, int*); #ifdef WIN32 typedef int (*LPClosesocket)(struct IPerlSock*, SOCKET s); #endif struct IPerlSock { LPHtonl pHtonl; LPHtons pHtons; LPNtohl pNtohl; LPNtohs pNtohs; LPAccept pAccept; LPBind pBind; LPConnect pConnect; LPEndhostent pEndhostent; LPEndnetent pEndnetent; LPEndprotoent pEndprotoent; LPEndservent pEndservent; LPGethostname pGethostname; LPGetpeername pGetpeername; LPGethostbyaddr pGethostbyaddr; LPGethostbyname pGethostbyname; LPGethostent pGethostent; LPGetnetbyaddr pGetnetbyaddr; LPGetnetbyname pGetnetbyname; LPGetnetent pGetnetent; LPGetprotobyname pGetprotobyname; LPGetprotobynumber pGetprotobynumber; LPGetprotoent pGetprotoent; LPGetservbyname pGetservbyname; LPGetservbyport pGetservbyport; LPGetservent pGetservent; LPGetsockname pGetsockname; LPGetsockopt pGetsockopt; LPInetAddr pInetAddr; LPInetNtoa pInetNtoa; LPListen pListen; LPRecv pRecv; LPRecvfrom pRecvfrom; LPSelect pSelect; LPSend pSend; LPSendto pSendto; LPSethostent pSethostent; LPSetnetent pSetnetent; LPSetprotoent pSetprotoent; LPSetservent pSetservent; LPSetsockopt pSetsockopt; LPShutdown pShutdown; LPSocket pSocket; LPSocketpair pSocketpair; #ifdef WIN32 LPClosesocket pClosesocket; #endif }; struct IPerlSockInfo { unsigned long nCount; /* number of entries expected */ struct IPerlSock perlSockList; }; #define PerlSock_htonl(x) \ (*PL_Sock->pHtonl)(PL_Sock, x) #define PerlSock_htons(x) \ (*PL_Sock->pHtons)(PL_Sock, x) #define PerlSock_ntohl(x) \ (*PL_Sock->pNtohl)(PL_Sock, x) #define PerlSock_ntohs(x) \ (*PL_Sock->pNtohs)(PL_Sock, x) #define PerlSock_accept(s, a, l) \ (*PL_Sock->pAccept)(PL_Sock, s, a, l) #define PerlSock_bind(s, n, l) \ (*PL_Sock->pBind)(PL_Sock, s, n, l) #define PerlSock_connect(s, n, l) \ (*PL_Sock->pConnect)(PL_Sock, s, n, l) #define PerlSock_endhostent() \ (*PL_Sock->pEndhostent)(PL_Sock) #define PerlSock_endnetent() \ (*PL_Sock->pEndnetent)(PL_Sock) #define PerlSock_endprotoent() \ (*PL_Sock->pEndprotoent)(PL_Sock) #define PerlSock_endservent() \ (*PL_Sock->pEndservent)(PL_Sock) #define PerlSock_gethostbyaddr(a, l, t) \ (*PL_Sock->pGethostbyaddr)(PL_Sock, a, l, t) #define PerlSock_gethostbyname(n) \ (*PL_Sock->pGethostbyname)(PL_Sock, n) #define PerlSock_gethostent() \ (*PL_Sock->pGethostent)(PL_Sock) #define PerlSock_gethostname(n, l) \ (*PL_Sock->pGethostname)(PL_Sock, n, l) #define PerlSock_getnetbyaddr(n, t) \ (*PL_Sock->pGetnetbyaddr)(PL_Sock, n, t) #define PerlSock_getnetbyname(c) \ (*PL_Sock->pGetnetbyname)(PL_Sock, c) #define PerlSock_getnetent() \ (*PL_Sock->pGetnetent)(PL_Sock) #define PerlSock_getpeername(s, n, l) \ (*PL_Sock->pGetpeername)(PL_Sock, s, n, l) #define PerlSock_getprotobyname(n) \ (*PL_Sock->pGetprotobyname)(PL_Sock, n) #define PerlSock_getprotobynumber(n) \ (*PL_Sock->pGetprotobynumber)(PL_Sock, n) #define PerlSock_getprotoent() \ (*PL_Sock->pGetprotoent)(PL_Sock) #define PerlSock_getservbyname(n, p) \ (*PL_Sock->pGetservbyname)(PL_Sock, n, p) #define PerlSock_getservbyport(port, p) \ (*PL_Sock->pGetservbyport)(PL_Sock, port, p) #define PerlSock_getservent() \ (*PL_Sock->pGetservent)(PL_Sock) #define PerlSock_getsockname(s, n, l) \ (*PL_Sock->pGetsockname)(PL_Sock, s, n, l) #define PerlSock_getsockopt(s,l,n,v,i) \ (*PL_Sock->pGetsockopt)(PL_Sock, s, l, n, v, i) #define PerlSock_inet_addr(c) \ (*PL_Sock->pInetAddr)(PL_Sock, c) #define PerlSock_inet_ntoa(i) \ (*PL_Sock->pInetNtoa)(PL_Sock, i) #define PerlSock_listen(s, b) \ (*PL_Sock->pListen)(PL_Sock, s, b) #define PerlSock_recv(s, b, l, f) \ (*PL_Sock->pRecv)(PL_Sock, s, b, l, f) #define PerlSock_recvfrom(s,b,l,f,from,fromlen) \ (*PL_Sock->pRecvfrom)(PL_Sock, s, b, l, f, from, fromlen) #define PerlSock_select(n, r, w, e, t) \ (*PL_Sock->pSelect)(PL_Sock, n, (char*)r, (char*)w, (char*)e, t) #define PerlSock_send(s, b, l, f) \ (*PL_Sock->pSend)(PL_Sock, s, b, l, f) #define PerlSock_sendto(s, b, l, f, t, tlen) \ (*PL_Sock->pSendto)(PL_Sock, s, b, l, f, t, tlen) #define PerlSock_sethostent(f) \ (*PL_Sock->pSethostent)(PL_Sock, f) #define PerlSock_setnetent(f) \ (*PL_Sock->pSetnetent)(PL_Sock, f) #define PerlSock_setprotoent(f) \ (*PL_Sock->pSetprotoent)(PL_Sock, f) #define PerlSock_setservent(f) \ (*PL_Sock->pSetservent)(PL_Sock, f) #define PerlSock_setsockopt(s, l, n, v, len) \ (*PL_Sock->pSetsockopt)(PL_Sock, s, l, n, v, len) #define PerlSock_shutdown(s, h) \ (*PL_Sock->pShutdown)(PL_Sock, s, h) #define PerlSock_socket(a, t, p) \ (*PL_Sock->pSocket)(PL_Sock, a, t, p) #define PerlSock_socketpair(a, t, p, f) \ (*PL_Sock->pSocketpair)(PL_Sock, a, t, p, f) #ifdef WIN32 #define PerlSock_closesocket(s) \ (*PL_Sock->pClosesocket)(PL_Sock, s) #endif #else /* PERL_IMPLICIT_SYS */ #define PerlSock_htonl(x) htonl(x) #define PerlSock_htons(x) htons(x) #define PerlSock_ntohl(x) ntohl(x) #define PerlSock_ntohs(x) ntohs(x) #define PerlSock_accept(s, a, l) accept(s, a, l) #define PerlSock_bind(s, n, l) bind(s, n, l) #define PerlSock_connect(s, n, l) connect(s, n, l) #define PerlSock_gethostbyaddr(a, l, t) gethostbyaddr(a, l, t) #define PerlSock_gethostbyname(n) gethostbyname(n) #define PerlSock_gethostent gethostent #define PerlSock_endhostent endhostent #define PerlSock_gethostname(n, l) gethostname(n, l) #define PerlSock_getnetbyaddr(n, t) getnetbyaddr(n, t) #define PerlSock_getnetbyname(n) getnetbyname(n) #define PerlSock_getnetent getnetent #define PerlSock_endnetent endnetent #define PerlSock_getpeername(s, n, l) getpeername(s, n, l) #define PerlSock_getprotobyname(n) getprotobyname(n) #define PerlSock_getprotobynumber(n) getprotobynumber(n) #define PerlSock_getprotoent getprotoent #define PerlSock_endprotoent endprotoent #define PerlSock_getservbyname(n, p) getservbyname(n, p) #define PerlSock_getservbyport(port, p) getservbyport(port, p) #define PerlSock_getservent getservent #define PerlSock_endservent endservent #define PerlSock_getsockname(s, n, l) getsockname(s, n, l) #define PerlSock_getsockopt(s,l,n,v,i) getsockopt(s, l, n, v, i) #define PerlSock_inet_addr(c) inet_addr(c) #define PerlSock_inet_ntoa(i) inet_ntoa(i) #define PerlSock_listen(s, b) listen(s, b) #define PerlSock_recv(s, b, l, f) recv(s, b, l, f) #define PerlSock_recvfrom(s, b, l, f, from, fromlen) \ recvfrom(s, b, l, f, from, fromlen) #define PerlSock_select(n, r, w, e, t) select(n, r, w, e, t) #define PerlSock_send(s, b, l, f) send(s, b, l, f) #define PerlSock_sendto(s, b, l, f, t, tlen) \ sendto(s, b, l, f, t, tlen) #define PerlSock_sethostent(f) sethostent(f) #define PerlSock_setnetent(f) setnetent(f) #define PerlSock_setprotoent(f) setprotoent(f) #define PerlSock_setservent(f) setservent(f) #define PerlSock_setsockopt(s, l, n, v, len) \ setsockopt(s, l, n, v, len) #define PerlSock_shutdown(s, h) shutdown(s, h) #define PerlSock_socket(a, t, p) socket(a, t, p) #define PerlSock_socketpair(a, t, p, f) socketpair(a, t, p, f) #ifdef WIN32 #define PerlSock_closesocket(s) closesocket(s) #endif #endif /* PERL_IMPLICIT_SYS */ #endif /* __Inc__IPerl___ */ Convert-Binary-C-0.76/tests/include/perlinc/cop.h0000644000175000001440000007017711550664630020400 0ustar mhxusers/* cop.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * Control ops (cops) are one of the three ops OP_NEXTSTATE, OP_DBSTATE, * and OP_SETSTATE that (loosely speaking) are separate statements. * They hold information important for lexical state and error reporting. * At run time, PL_curcop is set to point to the most recently executed cop, * and thus can be used to determine our current state. */ /* A jmpenv packages the state required to perform a proper non-local jump. * Note that there is a start_env initialized when perl starts, and top_env * points to this initially, so top_env should always be non-null. * * Existence of a non-null top_env->je_prev implies it is valid to call * longjmp() at that runlevel (we make sure start_env.je_prev is always * null to ensure this). * * je_mustcatch, when set at any runlevel to TRUE, means eval ops must * establish a local jmpenv to handle exception traps. Care must be taken * to restore the previous value of je_mustcatch before exiting the * stack frame iff JMPENV_PUSH was not called in that stack frame. * GSAR 97-03-27 */ struct jmpenv { struct jmpenv * je_prev; Sigjmp_buf je_buf; /* only for use if !je_throw */ int je_ret; /* last exception thrown */ bool je_mustcatch; /* need to call longjmp()? */ }; typedef struct jmpenv JMPENV; #ifdef OP_IN_REGISTER #define OP_REG_TO_MEM PL_opsave = op #define OP_MEM_TO_REG op = PL_opsave #else #define OP_REG_TO_MEM NOOP #define OP_MEM_TO_REG NOOP #endif /* * How to build the first jmpenv. * * top_env needs to be non-zero. It points to an area * in which longjmp() stuff is stored, as C callstack * info there at least is thread specific this has to * be per-thread. Otherwise a 'die' in a thread gives * that thread the C stack of last thread to do an eval {}! */ #define JMPENV_BOOTSTRAP \ STMT_START { \ Zero(&PL_start_env, 1, JMPENV); \ PL_start_env.je_ret = -1; \ PL_start_env.je_mustcatch = TRUE; \ PL_top_env = &PL_start_env; \ } STMT_END /* * PERL_FLEXIBLE_EXCEPTIONS * * All the flexible exceptions code has been removed. * See the following threads for details: * * http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-07/msg00378.html * * Joshua's original patches (which weren't applied) and discussion: * * http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1998-02/msg01396.html * http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1998-02/msg01489.html * http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1998-02/msg01491.html * http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1998-02/msg01608.html * http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1998-02/msg02144.html * http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1998-02/msg02998.html * * Chip's reworked patch and discussion: * * http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1999-03/msg00520.html * * The flaw in these patches (which went unnoticed at the time) was * that they moved some code that could potentially die() out of the * region protected by the setjmp()s. This caused exceptions within * END blocks and such to not be handled by the correct setjmp(). * * The original patches that introduces flexible exceptions were: * * http://public.activestate.com/cgi-bin/perlbrowse?patch=3386 * http://public.activestate.com/cgi-bin/perlbrowse?patch=5162 */ #define dJMPENV JMPENV cur_env #define JMPENV_PUSH(v) \ STMT_START { \ DEBUG_l(Perl_deb(aTHX_ "Setting up jumplevel %p, was %p\n", \ (void*)&cur_env, (void*)PL_top_env)); \ cur_env.je_prev = PL_top_env; \ OP_REG_TO_MEM; \ cur_env.je_ret = PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK); \ OP_MEM_TO_REG; \ PL_top_env = &cur_env; \ cur_env.je_mustcatch = FALSE; \ (v) = cur_env.je_ret; \ } STMT_END #define JMPENV_POP \ STMT_START { \ DEBUG_l(Perl_deb(aTHX_ "popping jumplevel was %p, now %p\n", \ (void*)PL_top_env, (void*)cur_env.je_prev)); \ PL_top_env = cur_env.je_prev; \ } STMT_END #define JMPENV_JUMP(v) \ STMT_START { \ OP_REG_TO_MEM; \ if (PL_top_env->je_prev) \ PerlProc_longjmp(PL_top_env->je_buf, (v)); \ if ((v) == 2) \ PerlProc_exit(STATUS_EXIT); \ PerlIO_printf(PerlIO_stderr(), "panic: top_env\n"); \ PerlProc_exit(1); \ } STMT_END #define CATCH_GET (PL_top_env->je_mustcatch) #define CATCH_SET(v) (PL_top_env->je_mustcatch = (v)) struct cop { BASEOP char * cop_label; /* label for this construct */ #ifdef USE_ITHREADS char * cop_stashpv; /* package line was compiled in */ char * cop_file; /* file name the following line # is from */ #else HV * cop_stash; /* package line was compiled in */ GV * cop_filegv; /* file the following line # is from */ #endif U32 cop_hints; /* hints bits from pragmata */ U32 cop_seq; /* parse sequence number */ line_t cop_line; /* line # of this command */ /* Beware. mg.c and warnings.pl assume the type of this is STRLEN *: */ STRLEN * cop_warnings; /* lexical warnings bitmask */ /* compile time state of %^H. See the comment in op.c for how this is used to recreate a hash to return from caller. */ struct refcounted_he * cop_hints_hash; }; #ifdef USE_ITHREADS # define CopFILE(c) ((c)->cop_file) # define CopFILEGV(c) (CopFILE(c) \ ? gv_fetchfile(CopFILE(c)) : NULL) # ifdef NETWARE # define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv)) # else # define CopFILE_set(c,pv) ((c)->cop_file = savesharedpv(pv)) # endif # define CopFILESV(c) (CopFILE(c) \ ? GvSV(gv_fetchfile(CopFILE(c))) : NULL) # define CopFILEAV(c) (CopFILE(c) \ ? GvAV(gv_fetchfile(CopFILE(c))) : NULL) # ifdef DEBUGGING # define CopFILEAVx(c) (assert(CopFILE(c)), \ GvAV(gv_fetchfile(CopFILE(c)))) # else # define CopFILEAVx(c) (GvAV(gv_fetchfile(CopFILE(c)))) # endif # define CopSTASHPV(c) ((c)->cop_stashpv) # ifdef NETWARE # define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : NULL)) # else # define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = savesharedpv(pv)) # endif # define CopSTASH(c) (CopSTASHPV(c) \ ? gv_stashpv(CopSTASHPV(c),GV_ADD) : NULL) # define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME_get(hv) : NULL) # define CopSTASH_eq(c,hv) ((hv) && stashpv_hvname_match(c,hv)) # ifdef NETWARE # define CopSTASH_free(c) SAVECOPSTASH_FREE(c) # define CopFILE_free(c) SAVECOPFILE_FREE(c) # else # define CopSTASH_free(c) PerlMemShared_free(CopSTASHPV(c)) # define CopFILE_free(c) (PerlMemShared_free(CopFILE(c)),(CopFILE(c) = NULL)) # endif #else # define CopFILEGV(c) ((c)->cop_filegv) # define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) # define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) # define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : NULL) # define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : NULL) # ifdef DEBUGGING # define CopFILEAVx(c) (assert(CopFILEGV(c)), GvAV(CopFILEGV(c))) # else # define CopFILEAVx(c) (GvAV(CopFILEGV(c))) # endif # define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : NULL) # define CopSTASH(c) ((c)->cop_stash) # define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) # define CopSTASHPV(c) (CopSTASH(c) ? HvNAME_get(CopSTASH(c)) : NULL) /* cop_stash is not refcounted */ # define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) # define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) # define CopSTASH_free(c) # define CopFILE_free(c) (SvREFCNT_dec(CopFILEGV(c)),(CopFILEGV(c) = NULL)) #endif /* USE_ITHREADS */ #define CopSTASH_ne(c,hv) (!CopSTASH_eq(c,hv)) #define CopLINE(c) ((c)->cop_line) #define CopLINE_inc(c) (++CopLINE(c)) #define CopLINE_dec(c) (--CopLINE(c)) #define CopLINE_set(c,l) (CopLINE(c) = (l)) /* OutCopFILE() is CopFILE for output (caller, die, warn, etc.) */ #ifdef MACOS_TRADITIONAL # define OutCopFILE(c) MacPerl_MPWFileName(CopFILE(c)) #else # define OutCopFILE(c) CopFILE(c) #endif /* If $[ is non-zero, it's stored in cop_hints under the key "$[", and HINT_ARYBASE is set to indicate this. Setting it is ineficient due to the need to create 2 mortal SVs, but as using $[ is highly discouraged, no sane Perl code will be using it. */ #define CopARYBASE_get(c) \ ((CopHINTS_get(c) & HINT_ARYBASE) \ ? SvIV(Perl_refcounted_he_fetch(aTHX_ (c)->cop_hints_hash, 0, \ "$[", 2, 0, 0)) \ : 0) #define CopARYBASE_set(c, b) STMT_START { \ if (b || ((c)->cop_hints & HINT_ARYBASE)) { \ (c)->cop_hints |= HINT_ARYBASE; \ if ((c) == &PL_compiling) \ PL_hints |= HINT_LOCALIZE_HH | HINT_ARYBASE; \ (c)->cop_hints_hash \ = Perl_refcounted_he_new(aTHX_ (c)->cop_hints_hash, \ sv_2mortal(newSVpvs("$[")), \ sv_2mortal(newSViv(b))); \ } \ } STMT_END /* FIXME NATIVE_HINTS if this is changed from op_private (see perl.h) */ #define CopHINTS_get(c) ((c)->cop_hints + 0) #define CopHINTS_set(c, h) STMT_START { \ (c)->cop_hints = (h); \ } STMT_END /* * Here we have some enormously heavy (or at least ponderous) wizardry. */ /* subroutine context */ struct block_sub { CV * cv; GV * gv; GV * dfoutgv; AV * savearray; AV * argarray; I32 olddepth; U8 hasargs; U8 lval; /* XXX merge lval and hasargs? */ PAD *oldcomppad; OP * retop; /* op to execute on exit from sub */ }; /* base for the next two macros. Don't use directly. * Note that the refcnt of the cv is incremented twice; The CX one is * decremented by LEAVESUB, the other by LEAVE. */ #define PUSHSUB_BASE(cx) \ cx->blk_sub.cv = cv; \ cx->blk_sub.olddepth = CvDEPTH(cv); \ cx->blk_sub.hasargs = hasargs; \ cx->blk_sub.retop = NULL; \ if (!CvDEPTH(cv)) { \ SvREFCNT_inc_simple_void_NN(cv); \ SvREFCNT_inc_simple_void_NN(cv); \ SAVEFREESV(cv); \ } #define PUSHSUB(cx) \ PUSHSUB_BASE(cx) \ cx->blk_sub.lval = PL_op->op_private & \ (OPpLVAL_INTRO|OPpENTERSUB_INARGS); /* variant for use by OP_DBSTATE, where op_private holds hint bits */ #define PUSHSUB_DB(cx) \ PUSHSUB_BASE(cx) \ cx->blk_sub.lval = 0; #define PUSHFORMAT(cx) \ cx->blk_sub.cv = cv; \ cx->blk_sub.gv = gv; \ cx->blk_sub.retop = NULL; \ cx->blk_sub.hasargs = 0; \ cx->blk_sub.dfoutgv = PL_defoutgv; \ SvREFCNT_inc_void(cx->blk_sub.dfoutgv) #define POP_SAVEARRAY() \ STMT_START { \ SvREFCNT_dec(GvAV(PL_defgv)); \ GvAV(PL_defgv) = cx->blk_sub.savearray; \ } STMT_END /* junk in @_ spells trouble when cloning CVs and in pp_caller(), so don't * leave any (a fast av_clear(ary), basically) */ #define CLEAR_ARGARRAY(ary) \ STMT_START { \ AvMAX(ary) += AvARRAY(ary) - AvALLOC(ary); \ SvPV_set(ary, (char*)AvALLOC(ary)); \ AvFILLp(ary) = -1; \ } STMT_END #define POPSUB(cx,sv) \ STMT_START { \ if (cx->blk_sub.hasargs) { \ POP_SAVEARRAY(); \ /* abandon @_ if it got reified */ \ if (AvREAL(cx->blk_sub.argarray)) { \ const SSize_t fill = AvFILLp(cx->blk_sub.argarray); \ SvREFCNT_dec(cx->blk_sub.argarray); \ cx->blk_sub.argarray = newAV(); \ av_extend(cx->blk_sub.argarray, fill); \ AvREIFY_only(cx->blk_sub.argarray); \ CX_CURPAD_SV(cx->blk_sub, 0) = (SV*)cx->blk_sub.argarray; \ } \ else { \ CLEAR_ARGARRAY(cx->blk_sub.argarray); \ } \ } \ sv = (SV*)cx->blk_sub.cv; \ if (sv && (CvDEPTH((CV*)sv) = cx->blk_sub.olddepth)) \ sv = NULL; \ } STMT_END #define LEAVESUB(sv) \ STMT_START { \ if (sv) \ SvREFCNT_dec(sv); \ } STMT_END #define POPFORMAT(cx) \ setdefout(cx->blk_sub.dfoutgv); \ SvREFCNT_dec(cx->blk_sub.dfoutgv); /* eval context */ struct block_eval { U8 old_in_eval; U16 old_op_type; SV * old_namesv; OP * old_eval_root; SV * cur_text; CV * cv; OP * retop; /* op to execute on exit from eval */ JMPENV * cur_top_env; /* value of PL_top_env when eval CX created */ }; #define PUSHEVAL(cx,n,fgv) \ STMT_START { \ cx->blk_eval.old_in_eval = PL_in_eval; \ cx->blk_eval.old_op_type = PL_op->op_type; \ cx->blk_eval.old_namesv = (n ? newSVpv(n,0) : NULL); \ cx->blk_eval.old_eval_root = PL_eval_root; \ cx->blk_eval.cur_text = PL_linestr; \ cx->blk_eval.cv = NULL; /* set by doeval(), as applicable */ \ cx->blk_eval.retop = NULL; \ cx->blk_eval.cur_top_env = PL_top_env; \ } STMT_END #define POPEVAL(cx) \ STMT_START { \ PL_in_eval = cx->blk_eval.old_in_eval; \ optype = cx->blk_eval.old_op_type; \ PL_eval_root = cx->blk_eval.old_eval_root; \ if (cx->blk_eval.old_namesv) \ sv_2mortal(cx->blk_eval.old_namesv); \ } STMT_END /* loop context */ struct block_loop { char * label; I32 resetsp; LOOP * my_op; /* My op, that contains redo, next and last ops. */ /* (except for non_ithreads we need to modify next_op in pp_ctl.c, hence why next_op is conditionally defined below.) */ #ifdef USE_ITHREADS void * iterdata; PAD *oldcomppad; #else OP * next_op; SV ** itervar; #endif SV * itersave; /* (from inspection of source code) for a .. range of strings this is the current string. */ SV * iterlval; /* (from inspection of source code) for a foreach loop this is the array being iterated over. For a .. range of numbers it's the current value. A check is often made on the SvTYPE of iterary to determine whether we are iterating over an array or a range. (numbers or strings) */ AV * iterary; IV iterix; /* (from inspection of source code) for a .. range of numbers this is the maximum value. */ IV itermax; }; /* It might be possible to squeeze this structure further. As best I can tell itermax and iterlval are never used at the same time, so it might be possible to make them into a union. However, I'm not confident that there are enough flag bits/NULLable pointers in this structure alone to encode which is active. There is, however, U8 of space free in struct block, which could be used. Right now it may not be worth squeezing this structure further, as it's the largest part of struct block, and currently struct block is 64 bytes on an ILP32 system, which will give good cache alignment. */ #ifdef USE_ITHREADS # define CxITERVAR(c) \ ((c)->blk_loop.iterdata \ ? (CxPADLOOP(cx) \ ? &CX_CURPAD_SV( (c)->blk_loop, \ INT2PTR(PADOFFSET, (c)->blk_loop.iterdata)) \ : &GvSV((GV*)(c)->blk_loop.iterdata)) \ : (SV**)NULL) # define CX_ITERDATA_SET(cx,idata) \ CX_CURPAD_SAVE(cx->blk_loop); \ if ((cx->blk_loop.iterdata = (idata))) \ cx->blk_loop.itersave = SvREFCNT_inc(*CxITERVAR(cx)); \ else \ cx->blk_loop.itersave = NULL; #else # define CxITERVAR(c) ((c)->blk_loop.itervar) # define CX_ITERDATA_SET(cx,ivar) \ if ((cx->blk_loop.itervar = (SV**)(ivar))) \ cx->blk_loop.itersave = SvREFCNT_inc(*CxITERVAR(cx)); \ else \ cx->blk_loop.itersave = NULL; #endif #ifdef USE_ITHREADS # define PUSHLOOP_OP_NEXT /* No need to do anything. */ # define CX_LOOP_NEXTOP_GET(cx) ((cx)->blk_loop.my_op->op_nextop + 0) #else # define PUSHLOOP_OP_NEXT cx->blk_loop.next_op = cLOOP->op_nextop # define CX_LOOP_NEXTOP_GET(cx) ((cx)->blk_loop.next_op + 0) #endif #define PUSHLOOP(cx, dat, s) \ cx->blk_loop.label = PL_curcop->cop_label; \ cx->blk_loop.resetsp = s - PL_stack_base; \ cx->blk_loop.my_op = cLOOP; \ PUSHLOOP_OP_NEXT; \ cx->blk_loop.iterlval = NULL; \ cx->blk_loop.iterary = NULL; \ cx->blk_loop.iterix = -1; \ CX_ITERDATA_SET(cx,dat); #define POPLOOP(cx) \ SvREFCNT_dec(cx->blk_loop.iterlval); \ if (CxITERVAR(cx)) { \ if (SvPADMY(cx->blk_loop.itersave)) { \ SV ** const s_v_p = CxITERVAR(cx); \ sv_2mortal(*s_v_p); \ *s_v_p = cx->blk_loop.itersave; \ } \ else { \ SvREFCNT_dec(cx->blk_loop.itersave); \ } \ } \ if (cx->blk_loop.iterary && cx->blk_loop.iterary != PL_curstack)\ SvREFCNT_dec(cx->blk_loop.iterary); /* given/when context */ struct block_givwhen { OP *leave_op; }; #define PUSHGIVEN(cx) \ cx->blk_givwhen.leave_op = cLOGOP->op_other; #define PUSHWHEN PUSHGIVEN /* context common to subroutines, evals and loops */ struct block { U16 blku_type; /* what kind of context this is */ U8 blku_gimme; /* is this block running in list context? */ U8 blku_spare; /* Padding to match with struct subst */ I32 blku_oldsp; /* stack pointer to copy stuff down to */ COP * blku_oldcop; /* old curcop pointer */ I32 blku_oldmarksp; /* mark stack index */ I32 blku_oldscopesp; /* scope stack index */ PMOP * blku_oldpm; /* values of pattern match vars */ union { struct block_sub blku_sub; struct block_eval blku_eval; struct block_loop blku_loop; struct block_givwhen blku_givwhen; } blk_u; }; #define blk_oldsp cx_u.cx_blk.blku_oldsp #define blk_oldcop cx_u.cx_blk.blku_oldcop #define blk_oldmarksp cx_u.cx_blk.blku_oldmarksp #define blk_oldscopesp cx_u.cx_blk.blku_oldscopesp #define blk_oldpm cx_u.cx_blk.blku_oldpm #define blk_gimme cx_u.cx_blk.blku_gimme #define blk_sub cx_u.cx_blk.blk_u.blku_sub #define blk_eval cx_u.cx_blk.blk_u.blku_eval #define blk_loop cx_u.cx_blk.blk_u.blku_loop #define blk_givwhen cx_u.cx_blk.blk_u.blku_givwhen /* Enter a block. */ #define PUSHBLOCK(cx,t,sp) CXINC, cx = &cxstack[cxstack_ix], \ cx->cx_type = t, \ cx->blk_oldsp = sp - PL_stack_base, \ cx->blk_oldcop = PL_curcop, \ cx->blk_oldmarksp = PL_markstack_ptr - PL_markstack, \ cx->blk_oldscopesp = PL_scopestack_ix, \ cx->blk_oldpm = PL_curpm, \ cx->blk_gimme = (U8)gimme; \ DEBUG_l( PerlIO_printf(Perl_debug_log, "Entering block %ld, type %s\n", \ (long)cxstack_ix, PL_block_type[CxTYPE(cx)]); ) /* Exit a block (RETURN and LAST). */ #define POPBLOCK(cx,pm) cx = &cxstack[cxstack_ix--], \ newsp = PL_stack_base + cx->blk_oldsp, \ PL_curcop = cx->blk_oldcop, \ PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp, \ PL_scopestack_ix = cx->blk_oldscopesp, \ pm = cx->blk_oldpm, \ gimme = cx->blk_gimme; \ DEBUG_SCOPE("POPBLOCK"); \ DEBUG_l( PerlIO_printf(Perl_debug_log, "Leaving block %ld, type %s\n", \ (long)cxstack_ix+1,PL_block_type[CxTYPE(cx)]); ) /* Continue a block elsewhere (NEXT and REDO). */ #define TOPBLOCK(cx) cx = &cxstack[cxstack_ix], \ PL_stack_sp = PL_stack_base + cx->blk_oldsp, \ PL_markstack_ptr = PL_markstack + cx->blk_oldmarksp, \ PL_scopestack_ix = cx->blk_oldscopesp, \ PL_curpm = cx->blk_oldpm; \ DEBUG_SCOPE("TOPBLOCK"); /* substitution context */ struct subst { U16 sbu_type; /* what kind of context this is */ U8 sbu_once; /* Actually both booleans, but U8 to matches */ U8 sbu_rxtainted; /* struct block */ I32 sbu_iters; I32 sbu_maxiters; I32 sbu_rflags; I32 sbu_oldsave; char * sbu_orig; SV * sbu_dstr; SV * sbu_targ; char * sbu_s; char * sbu_m; char * sbu_strend; void * sbu_rxres; REGEXP * sbu_rx; }; #define sb_iters cx_u.cx_subst.sbu_iters #define sb_maxiters cx_u.cx_subst.sbu_maxiters #define sb_rflags cx_u.cx_subst.sbu_rflags #define sb_oldsave cx_u.cx_subst.sbu_oldsave #define sb_once cx_u.cx_subst.sbu_once #define sb_rxtainted cx_u.cx_subst.sbu_rxtainted #define sb_orig cx_u.cx_subst.sbu_orig #define sb_dstr cx_u.cx_subst.sbu_dstr #define sb_targ cx_u.cx_subst.sbu_targ #define sb_s cx_u.cx_subst.sbu_s #define sb_m cx_u.cx_subst.sbu_m #define sb_strend cx_u.cx_subst.sbu_strend #define sb_rxres cx_u.cx_subst.sbu_rxres #define sb_rx cx_u.cx_subst.sbu_rx #define PUSHSUBST(cx) CXINC, cx = &cxstack[cxstack_ix], \ cx->sb_iters = iters, \ cx->sb_maxiters = maxiters, \ cx->sb_rflags = r_flags, \ cx->sb_oldsave = oldsave, \ cx->sb_once = once, \ cx->sb_rxtainted = rxtainted, \ cx->sb_orig = orig, \ cx->sb_dstr = dstr, \ cx->sb_targ = targ, \ cx->sb_s = s, \ cx->sb_m = m, \ cx->sb_strend = strend, \ cx->sb_rxres = NULL, \ cx->sb_rx = rx, \ cx->cx_type = CXt_SUBST; \ rxres_save(&cx->sb_rxres, rx); \ (void)ReREFCNT_inc(rx) #define POPSUBST(cx) cx = &cxstack[cxstack_ix--]; \ rxres_free(&cx->sb_rxres); \ ReREFCNT_dec(cx->sb_rx) struct context { union { struct block cx_blk; struct subst cx_subst; } cx_u; }; #define cx_type cx_u.cx_subst.sbu_type #define CXTYPEMASK 0xff #define CXt_NULL 0 #define CXt_SUB 1 #define CXt_EVAL 2 #define CXt_LOOP 3 #define CXt_SUBST 4 #define CXt_BLOCK 5 #define CXt_FORMAT 6 #define CXt_GIVEN 7 #define CXt_WHEN 8 /* private flags for CXt_SUB and CXt_NULL */ #define CXp_MULTICALL 0x00000400 /* part of a multicall (so don't tear down context on exit). */ /* private flags for CXt_EVAL */ #define CXp_REAL 0x00000100 /* truly eval'', not a lookalike */ #define CXp_TRYBLOCK 0x00000200 /* eval{}, not eval'' or similar */ /* private flags for CXt_LOOP */ #define CXp_FOREACH 0x00000200 /* a foreach loop */ #define CXp_FOR_DEF 0x00000400 /* foreach using $_ */ #ifdef USE_ITHREADS # define CXp_PADVAR 0x00000100 /* itervar lives on pad, iterdata has pad offset; if not set, iterdata holds GV* */ # define CxPADLOOP(c) (((c)->cx_type & (CXt_LOOP|CXp_PADVAR)) \ == (CXt_LOOP|CXp_PADVAR)) #endif #define CxTYPE(c) ((c)->cx_type & CXTYPEMASK) #define CxMULTICALL(c) (((c)->cx_type & CXp_MULTICALL) \ == CXp_MULTICALL) #define CxREALEVAL(c) (((c)->cx_type & (CXt_EVAL|CXp_REAL)) \ == (CXt_EVAL|CXp_REAL)) #define CxTRYBLOCK(c) (((c)->cx_type & (CXt_EVAL|CXp_TRYBLOCK)) \ == (CXt_EVAL|CXp_TRYBLOCK)) #define CxFOREACH(c) (((c)->cx_type & (CXt_LOOP|CXp_FOREACH)) \ == (CXt_LOOP|CXp_FOREACH)) #define CxFOREACHDEF(c) (((c)->cx_type & (CXt_LOOP|CXp_FOREACH|CXp_FOR_DEF))\ == (CXt_LOOP|CXp_FOREACH|CXp_FOR_DEF)) #define CXINC (cxstack_ix < cxstack_max ? ++cxstack_ix : (cxstack_ix = cxinc())) /* =head1 "Gimme" Values */ /* =for apidoc AmU||G_SCALAR Used to indicate scalar context. See C, C, and L. =for apidoc AmU||G_ARRAY Used to indicate list context. See C, C and L. =for apidoc AmU||G_VOID Used to indicate void context. See C and L. =for apidoc AmU||G_DISCARD Indicates that arguments returned from a callback should be discarded. See L. =for apidoc AmU||G_EVAL Used to force a Perl C wrapper around a callback. See L. =for apidoc AmU||G_NOARGS Indicates that no arguments are being sent to a callback. See L. =cut */ #define G_SCALAR 0 #define G_ARRAY 1 #define G_VOID 128 /* skip this bit when adding flags below */ /* extra flags for Perl_call_* routines */ #define G_DISCARD 2 /* Call FREETMPS. */ #define G_EVAL 4 /* Assume eval {} around subroutine call. */ #define G_NOARGS 8 /* Don't construct a @_ array. */ #define G_KEEPERR 16 /* Append errors to $@, don't overwrite it */ #define G_NODEBUG 32 /* Disable debugging at toplevel. */ #define G_METHOD 64 /* Calling method. */ #define G_FAKINGEVAL 256 /* Faking en eval context for call_sv or fold_constants. */ /* flag bits for PL_in_eval */ #define EVAL_NULL 0 /* not in an eval */ #define EVAL_INEVAL 1 /* some enclosing scope is an eval */ #define EVAL_WARNONLY 2 /* used by yywarn() when calling yyerror() */ #define EVAL_KEEPERR 4 /* set by Perl_call_sv if G_KEEPERR */ #define EVAL_INREQUIRE 8 /* The code is being required. */ /* Support for switching (stack and block) contexts. * This ensures magic doesn't invalidate local stack and cx pointers. */ #define PERLSI_UNKNOWN -1 #define PERLSI_UNDEF 0 #define PERLSI_MAIN 1 #define PERLSI_MAGIC 2 #define PERLSI_SORT 3 #define PERLSI_SIGNAL 4 #define PERLSI_OVERLOAD 5 #define PERLSI_DESTROY 6 #define PERLSI_WARNHOOK 7 #define PERLSI_DIEHOOK 8 #define PERLSI_REQUIRE 9 struct stackinfo { AV * si_stack; /* stack for current runlevel */ PERL_CONTEXT * si_cxstack; /* context stack for runlevel */ I32 si_cxix; /* current context index */ I32 si_cxmax; /* maximum allocated index */ I32 si_type; /* type of runlevel */ struct stackinfo * si_prev; struct stackinfo * si_next; I32 si_markoff; /* offset where markstack begins for us. * currently used only with DEBUGGING, * but not #ifdef-ed for bincompat */ }; typedef struct stackinfo PERL_SI; #define cxstack (PL_curstackinfo->si_cxstack) #define cxstack_ix (PL_curstackinfo->si_cxix) #define cxstack_max (PL_curstackinfo->si_cxmax) #ifdef DEBUGGING # define SET_MARK_OFFSET \ PL_curstackinfo->si_markoff = PL_markstack_ptr - PL_markstack #else # define SET_MARK_OFFSET NOOP #endif #define PUSHSTACKi(type) \ STMT_START { \ PERL_SI *next = PL_curstackinfo->si_next; \ if (!next) { \ next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); \ next->si_prev = PL_curstackinfo; \ PL_curstackinfo->si_next = next; \ } \ next->si_type = type; \ next->si_cxix = -1; \ AvFILLp(next->si_stack) = 0; \ SWITCHSTACK(PL_curstack,next->si_stack); \ PL_curstackinfo = next; \ SET_MARK_OFFSET; \ } STMT_END #define PUSHSTACK PUSHSTACKi(PERLSI_UNKNOWN) /* POPSTACK works with PL_stack_sp, so it may need to be bracketed by * PUTBACK/SPAGAIN to flush/refresh any local SP that may be active */ #define POPSTACK \ STMT_START { \ dSP; \ PERL_SI * const prev = PL_curstackinfo->si_prev; \ if (!prev) { \ PerlIO_printf(Perl_error_log, "panic: POPSTACK\n"); \ my_exit(1); \ } \ SWITCHSTACK(PL_curstack,prev->si_stack); \ /* don't free prev here, free them all at the END{} */ \ PL_curstackinfo = prev; \ } STMT_END #define POPSTACK_TO(s) \ STMT_START { \ while (PL_curstack != s) { \ dounwind(-1); \ POPSTACK; \ } \ } STMT_END #define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling) #define IN_PERL_RUNTIME (PL_curcop != &PL_compiling) /* =head1 Multicall Functions =for apidoc Ams||dMULTICALL Declare local variables for a multicall. See L. =for apidoc Ams||PUSH_MULTICALL Opening bracket for a lightweight callback. See L. =for apidoc Ams||MULTICALL Make a lightweight callback. See L. =for apidoc Ams||POP_MULTICALL Closing bracket for a lightweight callback. See L. =cut */ #define dMULTICALL \ SV **newsp; /* set by POPBLOCK */ \ PERL_CONTEXT *cx; \ CV *multicall_cv; \ OP *multicall_cop; \ bool multicall_oldcatch; \ U8 hasargs = 0 /* used by PUSHSUB */ #define PUSH_MULTICALL(the_cv) \ STMT_START { \ CV * const _nOnclAshIngNamE_ = the_cv; \ CV * const cv = _nOnclAshIngNamE_; \ AV * const padlist = CvPADLIST(cv); \ ENTER; \ multicall_oldcatch = CATCH_GET; \ SAVETMPS; SAVEVPTR(PL_op); \ CATCH_SET(TRUE); \ PUSHBLOCK(cx, CXt_SUB|CXp_MULTICALL, PL_stack_sp); \ PUSHSUB(cx); \ if (++CvDEPTH(cv) >= 2) { \ PERL_STACK_OVERFLOW_CHECK(); \ Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \ } \ SAVECOMPPAD(); \ PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \ multicall_cv = cv; \ multicall_cop = CvSTART(cv); \ } STMT_END #define MULTICALL \ STMT_START { \ PL_op = multicall_cop; \ CALLRUNOPS(aTHX); \ } STMT_END #define POP_MULTICALL \ STMT_START { \ LEAVESUB(multicall_cv); \ CvDEPTH(multicall_cv)--; \ POPBLOCK(cx,PL_curpm); \ CATCH_SET(multicall_oldcatch); \ LEAVE; \ } STMT_END /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/perlinc/pad.h0000644000175000001440000002146111550664630020353 0ustar mhxusers/* pad.h * * Copyright (C) 2002, 2003, 2005, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * This file defines the types and macros associated with the API for * manipulating scratchpads, which are used by perl to store lexical * variables, op targets and constants. */ /* a padlist is currently just an AV; but that might change, * so hide the type. Ditto a pad. */ typedef AV PADLIST; typedef AV PAD; /* offsets within a pad */ #if PTRSIZE == 4 typedef U32TYPE PADOFFSET; #else # if PTRSIZE == 8 typedef U64TYPE PADOFFSET; # endif #endif #define NOT_IN_PAD ((PADOFFSET) -1) /* flags for the pad_new() function */ #define padnew_CLONE 1 /* this pad is for a cloned CV */ #define padnew_SAVE 2 /* save old globals */ #define padnew_SAVESUB 4 /* also save extra stuff for start of sub */ /* values for the pad_tidy() function */ typedef enum { padtidy_SUB, /* tidy up a pad for a sub, */ padtidy_SUBCLONE, /* a cloned sub, */ padtidy_FORMAT /* or a format */ } padtidy_type; /* ASSERT_CURPAD_LEGAL and ASSERT_CURPAD_ACTIVE respectively determine * whether PL_comppad and PL_curpad are consistent and whether they have * active values */ #ifndef PERL_MAD # define pad_peg(label) #endif #ifdef DEBUGGING # define ASSERT_CURPAD_LEGAL(label) \ pad_peg(label); \ if (PL_comppad ? (AvARRAY(PL_comppad) != PL_curpad) : (PL_curpad != 0)) \ Perl_croak(aTHX_ "panic: illegal pad in %s: 0x%"UVxf"[0x%"UVxf"]",\ label, PTR2UV(PL_comppad), PTR2UV(PL_curpad)); # define ASSERT_CURPAD_ACTIVE(label) \ pad_peg(label); \ if (!PL_comppad || (AvARRAY(PL_comppad) != PL_curpad)) \ Perl_croak(aTHX_ "panic: invalid pad in %s: 0x%"UVxf"[0x%"UVxf"]",\ label, PTR2UV(PL_comppad), PTR2UV(PL_curpad)); #else # define ASSERT_CURPAD_LEGAL(label) # define ASSERT_CURPAD_ACTIVE(label) #endif /* Note: the following three macros are actually defined in scope.h, but * they are documented here for completeness, since they directly or * indirectly affect pads. =for apidoc m|void|SAVEPADSV |PADOFFSET po Save a pad slot (used to restore after an iteration) XXX DAPM it would make more sense to make the arg a PADOFFSET =for apidoc m|void|SAVECLEARSV |SV **svp Clear the pointed to pad value on scope exit. (i.e. the runtime action of 'my') =for apidoc m|void|SAVECOMPPAD save PL_comppad and PL_curpad =for apidoc m|SV *|PAD_SETSV |PADOFFSET po|SV* sv Set the slot at offset C in the current pad to C =for apidoc m|void|PAD_SV |PADOFFSET po Get the value at offset C in the current pad =for apidoc m|SV *|PAD_SVl |PADOFFSET po Lightweight and lvalue version of C. Get or set the value at offset C in the current pad. Unlike C, does not print diagnostics with -DX. For internal use only. =for apidoc m|SV *|PAD_BASE_SV |PADLIST padlist|PADOFFSET po Get the value from slot C in the base (DEPTH=1) pad of a padlist =for apidoc m|void|PAD_SET_CUR |PADLIST padlist|I32 n Set the current pad to be pad C in the padlist, saving the previous current pad. NB currently this macro expands to a string too long for some compilers, so it's best to replace it with SAVECOMPPAD(); PAD_SET_CUR_NOSAVE(padlist,n); =for apidoc m|void|PAD_SET_CUR_NOSAVE |PADLIST padlist|I32 n like PAD_SET_CUR, but without the save =for apidoc m|void|PAD_SAVE_SETNULLPAD Save the current pad then set it to null. =for apidoc m|void|PAD_SAVE_LOCAL|PAD *opad|PAD *npad Save the current pad to the local variable opad, then make the current pad equal to npad =for apidoc m|void|PAD_RESTORE_LOCAL|PAD *opad Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL() =cut */ #ifdef DEBUGGING # define PAD_SV(po) pad_sv(po) # define PAD_SETSV(po,sv) pad_setsv(po,sv) #else # define PAD_SV(po) (PL_curpad[po]) # define PAD_SETSV(po,sv) PL_curpad[po] = (sv) #endif #define PAD_SVl(po) (PL_curpad[po]) #define PAD_BASE_SV(padlist, po) \ (AvARRAY(padlist)[1]) \ ? AvARRAY((AV*)(AvARRAY(padlist)[1]))[po] : NULL; #define PAD_SET_CUR_NOSAVE(padlist,nth) \ PL_comppad = (PAD*) (AvARRAY(padlist)[nth]); \ PL_curpad = AvARRAY(PL_comppad); \ DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ "Pad 0x%"UVxf"[0x%"UVxf"] set_cur depth=%d\n", \ PTR2UV(PL_comppad), PTR2UV(PL_curpad), (int)(nth))); #define PAD_SET_CUR(padlist,nth) \ SAVECOMPPAD(); \ PAD_SET_CUR_NOSAVE(padlist,nth); #define PAD_SAVE_SETNULLPAD() SAVECOMPPAD(); \ PL_comppad = NULL; PL_curpad = NULL; \ DEBUG_Xv(PerlIO_printf(Perl_debug_log, "Pad set_null\n")); #define PAD_SAVE_LOCAL(opad,npad) \ opad = PL_comppad; \ PL_comppad = (npad); \ PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ "Pad 0x%"UVxf"[0x%"UVxf"] save_local\n", \ PTR2UV(PL_comppad), PTR2UV(PL_curpad))); #define PAD_RESTORE_LOCAL(opad) \ PL_comppad = opad; \ PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ "Pad 0x%"UVxf"[0x%"UVxf"] restore_local\n", \ PTR2UV(PL_comppad), PTR2UV(PL_curpad))); /* =for apidoc m|void|CX_CURPAD_SAVE|struct context Save the current pad in the given context block structure. =for apidoc m|SV *|CX_CURPAD_SV|struct context|PADOFFSET po Access the SV at offset po in the saved current pad in the given context block structure (can be used as an lvalue). =cut */ #define CX_CURPAD_SAVE(block) (block).oldcomppad = PL_comppad #define CX_CURPAD_SV(block,po) (AvARRAY((AV*)((block).oldcomppad))[po]) /* =for apidoc m|U32|PAD_COMPNAME_FLAGS|PADOFFSET po Return the flags for the current compiling pad name at offset C. Assumes a valid slot entry. =for apidoc m|char *|PAD_COMPNAME_PV|PADOFFSET po Return the name of the current compiling pad name at offset C. Assumes a valid slot entry. =for apidoc m|HV *|PAD_COMPNAME_TYPE|PADOFFSET po Return the type (stash) of the current compiling pad name at offset C. Must be a valid name. Returns null if not typed. =for apidoc m|HV *|PAD_COMPNAME_OURSTASH|PADOFFSET po Return the stash associated with an C variable. Assumes the slot entry is a valid C lexical. =for apidoc m|STRLEN|PAD_COMPNAME_GEN|PADOFFSET po The generation number of the name at offset C in the current compiling pad (lvalue). Note that C is hijacked for this purpose. =for apidoc m|STRLEN|PAD_COMPNAME_GEN_set|PADOFFSET po|int gen Sets the generation number of the name at offset C in the current ling pad (lvalue) to C. Note that C is hijacked for this purpose. =cut */ #define PAD_COMPNAME_FLAGS(po) SvFLAGS(*av_fetch(PL_comppad_name, (po), FALSE)) #define PAD_COMPNAME_FLAGS_isOUR(po) \ ((PAD_COMPNAME_FLAGS(po) & (SVpad_NAME|SVpad_OUR)) == (SVpad_NAME|SVpad_OUR)) #define PAD_COMPNAME_PV(po) SvPV_nolen(*av_fetch(PL_comppad_name, (po), FALSE)) #define PAD_COMPNAME_TYPE(po) pad_compname_type(po) #define PAD_COMPNAME_OURSTASH(po) \ (OURSTASH(*av_fetch(PL_comppad_name, (po), FALSE))) #define PAD_COMPNAME_GEN(po) SvCUR(AvARRAY(PL_comppad_name)[po]) #define PAD_COMPNAME_GEN_set(po, gen) SvCUR_set(AvARRAY(PL_comppad_name)[po], gen) /* =for apidoc m|void|PAD_DUP|PADLIST dstpad|PADLIST srcpad|CLONE_PARAMS* param Clone a padlist. =for apidoc m|void|PAD_CLONE_VARS|PerlInterpreter *proto_perl \ |CLONE_PARAMS* param Clone the state variables associated with running and compiling pads. =cut */ #define PAD_DUP(dstpad, srcpad, param) \ if ((srcpad) && !AvREAL(srcpad)) { \ /* XXX padlists are real, but pretend to be not */ \ AvREAL_on(srcpad); \ (dstpad) = av_dup_inc((srcpad), param); \ AvREAL_off(srcpad); \ AvREAL_off(dstpad); \ } \ else \ (dstpad) = av_dup_inc((srcpad), param); /* NB - we set PL_comppad to null unless it points at a value that * has already been dup'ed, ie it points to part of an active padlist. * Otherwise PL_comppad ends up being a leaked scalar in code like * the following: * threads->create(sub { threads->create(sub {...} ) } ); * where the second thread dups the outer sub's comppad but not the * sub's CV or padlist. */ #define PAD_CLONE_VARS(proto_perl, param) \ PL_comppad = (AV *) ptr_table_fetch(PL_ptr_table, proto_perl->Icomppad); \ PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ PL_comppad_name = av_dup(proto_perl->Icomppad_name, param); \ PL_comppad_name_fill = proto_perl->Icomppad_name_fill; \ PL_comppad_name_floor = proto_perl->Icomppad_name_floor; \ PL_min_intro_pending = proto_perl->Imin_intro_pending; \ PL_max_intro_pending = proto_perl->Imax_intro_pending; \ PL_padix = proto_perl->Ipadix; \ PL_padix_floor = proto_perl->Ipadix_floor; \ PL_pad_reset_pending = proto_perl->Ipad_reset_pending; \ PL_cop_seqmax = proto_perl->Icop_seqmax; Convert-Binary-C-0.76/tests/include/perlinc/warnings.h0000644000175000001440000001007611550664631021440 0ustar mhxusers/* -*- buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! This file is built by warnings.pl Any changes made here will be lost! */ #define Off(x) ((x) / 8) #define Bit(x) (1 << ((x) % 8)) #define IsSet(a, x) ((a)[Off(x)] & Bit(x)) #define G_WARN_OFF 0 /* $^W == 0 */ #define G_WARN_ON 1 /* -w flag and $^W != 0 */ #define G_WARN_ALL_ON 2 /* -W flag */ #define G_WARN_ALL_OFF 4 /* -X flag */ #define G_WARN_ONCE 8 /* set if 'once' ever enabled */ #define G_WARN_ALL_MASK (G_WARN_ALL_ON|G_WARN_ALL_OFF) #define pWARN_STD NULL #define pWARN_ALL (((STRLEN*)0)+1) /* use warnings 'all' */ #define pWARN_NONE (((STRLEN*)0)+2) /* no warnings 'all' */ #define specialWARN(x) ((x) == pWARN_STD || (x) == pWARN_ALL || \ (x) == pWARN_NONE) /* if PL_warnhook is set to this value, then warnings die */ #define PERL_WARNHOOK_FATAL (((SV*)0) + 1) /* Warnings Categories added in Perl 5.008 */ #define WARN_ALL 0 #define WARN_CLOSURE 1 #define WARN_DEPRECATED 2 #define WARN_EXITING 3 #define WARN_GLOB 4 #define WARN_IO 5 #define WARN_CLOSED 6 #define WARN_EXEC 7 #define WARN_LAYER 8 #define WARN_NEWLINE 9 #define WARN_PIPE 10 #define WARN_UNOPENED 11 #define WARN_MISC 12 #define WARN_NUMERIC 13 #define WARN_ONCE 14 #define WARN_OVERFLOW 15 #define WARN_PACK 16 #define WARN_PORTABLE 17 #define WARN_RECURSION 18 #define WARN_REDEFINE 19 #define WARN_REGEXP 20 #define WARN_SEVERE 21 #define WARN_DEBUGGING 22 #define WARN_INPLACE 23 #define WARN_INTERNAL 24 #define WARN_MALLOC 25 #define WARN_SIGNAL 26 #define WARN_SUBSTR 27 #define WARN_SYNTAX 28 #define WARN_AMBIGUOUS 29 #define WARN_BAREWORD 30 #define WARN_DIGIT 31 #define WARN_PARENTHESIS 32 #define WARN_PRECEDENCE 33 #define WARN_PRINTF 34 #define WARN_PROTOTYPE 35 #define WARN_QW 36 #define WARN_RESERVED 37 #define WARN_SEMICOLON 38 #define WARN_TAINT 39 #define WARN_THREADS 40 #define WARN_UNINITIALIZED 41 #define WARN_UNPACK 42 #define WARN_UNTIE 43 #define WARN_UTF8 44 #define WARN_VOID 45 /* Warnings Categories added in Perl 5.009 */ #define WARN_ASSERTIONS 46 #define WARNsize 12 #define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125" #define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0" #define WARN_TAINTstring "\0\0\0\0\0\0\0\0\0\100\0\0" #define isLEXWARN_on (PL_curcop->cop_warnings != pWARN_STD) #define isLEXWARN_off (PL_curcop->cop_warnings == pWARN_STD) #define isWARN_ONCE (PL_dowarn & (G_WARN_ON|G_WARN_ONCE)) #define isWARN_on(c,x) (IsSet((U8 *)(c + 1), 2*(x))) #define isWARNf_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)+1)) #define DUP_WARNINGS(p) \ (STRLEN*)(specialWARN(p) ? (p) \ : CopyD(p, PerlMemShared_malloc(sizeof(*p)+*p), sizeof(*p)+*p, char)) #define ckWARN(w) Perl_ckwarn(aTHX_ packWARN(w)) #define ckWARN2(w1,w2) Perl_ckwarn(aTHX_ packWARN2(w1,w2)) #define ckWARN3(w1,w2,w3) Perl_ckwarn(aTHX_ packWARN3(w1,w2,w3)) #define ckWARN4(w1,w2,w3,w4) Perl_ckwarn(aTHX_ packWARN4(w1,w2,w3,w4)) #define ckWARN_d(w) Perl_ckwarn_d(aTHX_ packWARN(w)) #define ckWARN2_d(w1,w2) Perl_ckwarn_d(aTHX_ packWARN2(w1,w2)) #define ckWARN3_d(w1,w2,w3) Perl_ckwarn_d(aTHX_ packWARN3(w1,w2,w3)) #define ckWARN4_d(w1,w2,w3,w4) Perl_ckwarn_d(aTHX_ packWARN4(w1,w2,w3,w4)) #define packWARN(a) (a ) #define packWARN2(a,b) ((a) | ((b)<<8) ) #define packWARN3(a,b,c) ((a) | ((b)<<8) | ((c)<<16) ) #define packWARN4(a,b,c,d) ((a) | ((b)<<8) | ((c)<<16) | ((d) <<24)) #define unpackWARN1(x) ((x) & 0xFF) #define unpackWARN2(x) (((x) >>8) & 0xFF) #define unpackWARN3(x) (((x) >>16) & 0xFF) #define unpackWARN4(x) (((x) >>24) & 0xFF) #define ckDEAD(x) \ ( ! specialWARN(PL_curcop->cop_warnings) && \ ( isWARNf_on(PL_curcop->cop_warnings, WARN_ALL) || \ isWARNf_on(PL_curcop->cop_warnings, unpackWARN1(x)) || \ isWARNf_on(PL_curcop->cop_warnings, unpackWARN2(x)) || \ isWARNf_on(PL_curcop->cop_warnings, unpackWARN3(x)) || \ isWARNf_on(PL_curcop->cop_warnings, unpackWARN4(x)))) /* end of file warnings.h */ /* ex: set ro: */ Convert-Binary-C-0.76/tests/include/perlinc/scope.h0000644000175000001440000002023111550664630020712 0ustar mhxusers/* scope.h * * Copyright (C) 1993, 1994, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2004, 2005 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #define SAVEt_ITEM 0 #define SAVEt_SV 1 #define SAVEt_AV 2 #define SAVEt_HV 3 #define SAVEt_INT 4 #define SAVEt_LONG 5 #define SAVEt_I32 6 #define SAVEt_IV 7 #define SAVEt_SPTR 8 #define SAVEt_APTR 9 #define SAVEt_HPTR 10 #define SAVEt_PPTR 11 #define SAVEt_NSTAB 12 #define SAVEt_SVREF 13 #define SAVEt_GP 14 #define SAVEt_FREESV 15 #define SAVEt_FREEOP 16 #define SAVEt_FREEPV 17 #define SAVEt_CLEARSV 18 #define SAVEt_DELETE 19 #define SAVEt_DESTRUCTOR 20 #define SAVEt_REGCONTEXT 21 #define SAVEt_STACK_POS 22 #define SAVEt_I16 23 #define SAVEt_AELEM 24 #define SAVEt_HELEM 25 #define SAVEt_OP 26 #define SAVEt_HINTS 27 #define SAVEt_ALLOC 28 #define SAVEt_GENERIC_SVREF 29 #define SAVEt_DESTRUCTOR_X 30 #define SAVEt_VPTR 31 #define SAVEt_I8 32 #define SAVEt_COMPPAD 33 #define SAVEt_GENERIC_PVREF 34 #define SAVEt_PADSV 35 #define SAVEt_MORTALIZESV 36 #define SAVEt_SHARED_PVREF 37 #define SAVEt_BOOL 38 #define SAVEt_SET_SVFLAGS 39 #define SAVEt_SAVESWITCHSTACK 40 #define SAVEt_COP_ARYBASE 41 #define SAVEt_RE_STATE 42 #define SAVEt_COMPILE_WARNINGS 43 #define SAVEt_STACK_CXPOS 44 #ifndef SCOPE_SAVES_SIGNAL_MASK #define SCOPE_SAVES_SIGNAL_MASK 0 #endif #define SSCHECK(need) if (PL_savestack_ix + (I32)(need) > PL_savestack_max) savestack_grow() #define SSGROW(need) if (PL_savestack_ix + (I32)(need) > PL_savestack_max) savestack_grow_cnt(need) #define SSPUSHINT(i) (PL_savestack[PL_savestack_ix++].any_i32 = (I32)(i)) #define SSPUSHLONG(i) (PL_savestack[PL_savestack_ix++].any_long = (long)(i)) #define SSPUSHBOOL(p) (PL_savestack[PL_savestack_ix++].any_bool = (p)) #define SSPUSHIV(i) (PL_savestack[PL_savestack_ix++].any_iv = (IV)(i)) #define SSPUSHPTR(p) (PL_savestack[PL_savestack_ix++].any_ptr = (void*)(p)) #define SSPUSHDPTR(p) (PL_savestack[PL_savestack_ix++].any_dptr = (p)) #define SSPUSHDXPTR(p) (PL_savestack[PL_savestack_ix++].any_dxptr = (p)) #define SSPOPINT (PL_savestack[--PL_savestack_ix].any_i32) #define SSPOPLONG (PL_savestack[--PL_savestack_ix].any_long) #define SSPOPBOOL (PL_savestack[--PL_savestack_ix].any_bool) #define SSPOPIV (PL_savestack[--PL_savestack_ix].any_iv) #define SSPOPPTR (PL_savestack[--PL_savestack_ix].any_ptr) #define SSPOPDPTR (PL_savestack[--PL_savestack_ix].any_dptr) #define SSPOPDXPTR (PL_savestack[--PL_savestack_ix].any_dxptr) /* =head1 Callback Functions =for apidoc Ams||SAVETMPS Opening bracket for temporaries on a callback. See C and L. =for apidoc Ams||FREETMPS Closing bracket for temporaries on a callback. See C and L. =for apidoc Ams||ENTER Opening bracket on a callback. See C and L. =for apidoc Ams||LEAVE Closing bracket on a callback. See C and L. =cut */ #define SAVETMPS save_int((int*)&PL_tmps_floor), PL_tmps_floor = PL_tmps_ix #define FREETMPS if (PL_tmps_ix > PL_tmps_floor) free_tmps() #ifdef DEBUGGING #define ENTER \ STMT_START { \ push_scope(); \ DEBUG_SCOPE("ENTER") \ } STMT_END #define LEAVE \ STMT_START { \ DEBUG_SCOPE("LEAVE") \ pop_scope(); \ } STMT_END #else #define ENTER push_scope() #define LEAVE pop_scope() #endif #define LEAVE_SCOPE(old) if (PL_savestack_ix > old) leave_scope(old) #define SAVEI8(i) save_I8((I8*)&(i)) #define SAVEI16(i) save_I16((I16*)&(i)) #define SAVEI32(i) save_I32((I32*)&(i)) #define SAVEINT(i) save_int((int*)&(i)) #define SAVEIV(i) save_iv((IV*)&(i)) #define SAVELONG(l) save_long((long*)&(l)) #define SAVEBOOL(b) save_bool((bool*)&(b)) #define SAVESPTR(s) save_sptr((SV**)&(s)) #define SAVEPPTR(s) save_pptr((char**)&(s)) #define SAVEVPTR(s) save_vptr((void*)&(s)) #define SAVEPADSV(s) save_padsv(s) #define SAVEFREESV(s) save_freesv((SV*)(s)) #define SAVEMORTALIZESV(s) save_mortalizesv((SV*)(s)) #define SAVEFREEOP(o) save_freeop((OP*)(o)) #define SAVEFREEPV(p) save_freepv((char*)(p)) #define SAVECLEARSV(sv) save_clearsv((SV**)&(sv)) #define SAVEGENERICSV(s) save_generic_svref((SV**)&(s)) #define SAVEGENERICPV(s) save_generic_pvref((char**)&(s)) #define SAVESHAREDPV(s) save_shared_pvref((char**)&(s)) #define SAVESETSVFLAGS(sv,mask,val) save_set_svflags(sv,mask,val) #define SAVEDELETE(h,k,l) \ save_delete((HV*)(h), (char*)(k), (I32)(l)) #define SAVEDESTRUCTOR(f,p) \ save_destructor((DESTRUCTORFUNC_NOCONTEXT_t)(f), (void*)(p)) #define SAVEDESTRUCTOR_X(f,p) \ save_destructor_x((DESTRUCTORFUNC_t)(f), (void*)(p)) #define SAVESTACK_POS() \ STMT_START { \ SSCHECK(2); \ SSPUSHINT(PL_stack_sp - PL_stack_base); \ SSPUSHINT(SAVEt_STACK_POS); \ } STMT_END #define SAVEOP() save_op() #define SAVEHINTS() \ STMT_START { \ SSCHECK(4); \ if (PL_hints & HINT_LOCALIZE_HH) { \ SSPUSHPTR(GvHV(PL_hintgv)); \ GvHV(PL_hintgv) = Perl_hv_copy_hints_hv(aTHX_ GvHV(PL_hintgv)); \ } \ if (PL_compiling.cop_hints_hash) { \ HINTS_REFCNT_LOCK; \ PL_compiling.cop_hints_hash->refcounted_he_refcnt++; \ HINTS_REFCNT_UNLOCK; \ } \ SSPUSHPTR(PL_compiling.cop_hints_hash); \ SSPUSHINT(PL_hints); \ SSPUSHINT(SAVEt_HINTS); \ } STMT_END #define SAVECOMPPAD() \ STMT_START { \ SSCHECK(2); \ SSPUSHPTR((SV*)PL_comppad); \ SSPUSHINT(SAVEt_COMPPAD); \ } STMT_END #define SAVESWITCHSTACK(f,t) \ STMT_START { \ SSCHECK(3); \ SSPUSHPTR((SV*)(f)); \ SSPUSHPTR((SV*)(t)); \ SSPUSHINT(SAVEt_SAVESWITCHSTACK); \ SWITCHSTACK((f),(t)); \ PL_curstackinfo->si_stack = (t); \ } STMT_END #define SAVECOPARYBASE(c) \ STMT_START { \ SSCHECK(3); \ SSPUSHINT(CopARYBASE_get(c)); \ SSPUSHPTR(c); \ SSPUSHINT(SAVEt_COP_ARYBASE); \ } STMT_END /* Need to do the cop warnings like this, rather than a "SAVEFREESHAREDPV", because realloc() means that the value can actually change. Possibly could have done savefreesharedpvREF, but this way actually seems cleaner, as it simplifies the code that does the saves, and reduces the load on the save stack. */ #define SAVECOMPILEWARNINGS() \ STMT_START { \ SSCHECK(2); \ SSPUSHPTR(PL_compiling.cop_warnings); \ SSPUSHINT(SAVEt_COMPILE_WARNINGS); \ } STMT_END #define SAVESTACK_CXPOS() \ STMT_START { \ SSCHECK(3); \ SSPUSHINT(cxstack[cxstack_ix].blk_oldsp); \ SSPUSHINT(cxstack_ix); \ SSPUSHINT(SAVEt_STACK_CXPOS); \ } STMT_END #ifdef USE_ITHREADS # define SAVECOPSTASH(c) SAVEPPTR(CopSTASHPV(c)) # define SAVECOPSTASH_FREE(c) SAVESHAREDPV(CopSTASHPV(c)) # define SAVECOPFILE(c) SAVEPPTR(CopFILE(c)) # define SAVECOPFILE_FREE(c) SAVESHAREDPV(CopFILE(c)) #else # define SAVECOPSTASH(c) SAVESPTR(CopSTASH(c)) # define SAVECOPSTASH_FREE(c) SAVECOPSTASH(c) /* XXX not refcounted */ # define SAVECOPFILE(c) SAVESPTR(CopFILEGV(c)) # define SAVECOPFILE_FREE(c) SAVEGENERICSV(CopFILEGV(c)) #endif #define SAVECOPLINE(c) SAVEI32(CopLINE(c)) /* SSNEW() temporarily allocates a specified number of bytes of data on the * savestack. It returns an integer index into the savestack, because a * pointer would get broken if the savestack is moved on reallocation. * SSNEWa() works like SSNEW(), but also aligns the data to the specified * number of bytes. MEM_ALIGNBYTES is perhaps the most useful. The * alignment will be preserved therough savestack reallocation *only* if * realloc returns data aligned to a size divisible by "align"! * * SSPTR() converts the index returned by SSNEW/SSNEWa() into a pointer. */ #define SSNEW(size) Perl_save_alloc(aTHX_ (size), 0) #define SSNEWt(n,t) SSNEW((n)*sizeof(t)) #define SSNEWa(size,align) Perl_save_alloc(aTHX_ (size), \ (align - ((int)((caddr_t)&PL_savestack[PL_savestack_ix]) % align)) % align) #define SSNEWat(n,t,align) SSNEWa((n)*sizeof(t), align) #define SSPTR(off,type) ((type) ((char*)PL_savestack + off)) #define SSPTRt(off,type) ((type*) ((char*)PL_savestack + off)) Convert-Binary-C-0.76/tests/include/perlinc/embed.h0000644000175000001440000047245411550664630020677 0ustar mhxusers/* -*- buffer-read-only: t -*- * * embed.h * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by embed.pl from data in embed.fnc, embed.pl, * pp.sym, intrpvar.h, perlvars.h and thrdvar.h. * Any changes made here will be lost! * * Edit those files and run 'make regen_headers' to effect changes. */ /* (Doing namespace management portably in C is really gross.) */ /* By defining PERL_NO_SHORT_NAMES (not done by default) the short forms * (like warn instead of Perl_warn) for the API are not defined. * Not defining the short forms is a good thing for cleaner embedding. */ #ifndef PERL_NO_SHORT_NAMES /* Hide global symbols */ #if !defined(PERL_IMPLICIT_CONTEXT) #if defined(PERL_IMPLICIT_SYS) #endif #define doing_taint Perl_doing_taint #if defined(USE_ITHREADS) # if defined(PERL_IMPLICIT_SYS) # endif #endif #if defined(MYMALLOC) #ifdef PERL_CORE #define malloced_size Perl_malloced_size #endif #endif #define get_context Perl_get_context #define set_context Perl_set_context #define amagic_call Perl_amagic_call #define Gv_AMupdate Perl_Gv_AMupdate #define gv_handler Perl_gv_handler #ifdef PERL_CORE #define append_elem Perl_append_elem #define append_list Perl_append_list #define apply Perl_apply #endif #define apply_attrs_string Perl_apply_attrs_string #define av_clear Perl_av_clear #define av_delete Perl_av_delete #define av_exists Perl_av_exists #define av_extend Perl_av_extend #ifdef PERL_CORE #define av_fake Perl_av_fake #endif #define av_fetch Perl_av_fetch #define av_fill Perl_av_fill #define av_len Perl_av_len #define av_make Perl_av_make #define av_pop Perl_av_pop #define av_push Perl_av_push #ifdef PERL_CORE #define av_reify Perl_av_reify #endif #define av_shift Perl_av_shift #define av_store Perl_av_store #define av_undef Perl_av_undef #define av_unshift Perl_av_unshift #ifdef PERL_CORE #define bind_match Perl_bind_match #define block_end Perl_block_end #endif #define block_gimme Perl_block_gimme #ifdef PERL_CORE #define block_start Perl_block_start #define boot_core_UNIVERSAL Perl_boot_core_UNIVERSAL #define boot_core_PerlIO Perl_boot_core_PerlIO #endif #define call_list Perl_call_list #ifdef PERL_CORE #define cando Perl_cando #endif #define cast_ulong Perl_cast_ulong #define cast_i32 Perl_cast_i32 #define cast_iv Perl_cast_iv #define cast_uv Perl_cast_uv #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) #define my_chsize Perl_my_chsize #endif #ifdef PERL_CORE #define convert Perl_convert #define create_eval_scope Perl_create_eval_scope #endif #define croak Perl_croak #define vcroak Perl_vcroak #if defined(PERL_IMPLICIT_CONTEXT) #define croak_nocontext Perl_croak_nocontext #define die_nocontext Perl_die_nocontext #define deb_nocontext Perl_deb_nocontext #define form_nocontext Perl_form_nocontext #define load_module_nocontext Perl_load_module_nocontext #define mess_nocontext Perl_mess_nocontext #define warn_nocontext Perl_warn_nocontext #define warner_nocontext Perl_warner_nocontext #define newSVpvf_nocontext Perl_newSVpvf_nocontext #define sv_catpvf_nocontext Perl_sv_catpvf_nocontext #define sv_setpvf_nocontext Perl_sv_setpvf_nocontext #define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext #define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext #define fprintf_nocontext Perl_fprintf_nocontext #define printf_nocontext Perl_printf_nocontext #endif #ifdef PERL_CORE #define cv_ckproto Perl_cv_ckproto #define cv_ckproto_len Perl_cv_ckproto_len #define cv_clone Perl_cv_clone #endif #define gv_const_sv Perl_gv_const_sv #define cv_const_sv Perl_cv_const_sv #ifdef PERL_CORE #define op_const_sv Perl_op_const_sv #endif #define cv_undef Perl_cv_undef #define cx_dump Perl_cx_dump #define filter_add Perl_filter_add #define filter_del Perl_filter_del #define filter_read Perl_filter_read #define get_op_descs Perl_get_op_descs #define get_op_names Perl_get_op_names #ifdef PERL_CORE #define get_no_modify Perl_get_no_modify #define get_opargs Perl_get_opargs #endif #define get_ppaddr Perl_get_ppaddr #if defined(PERL_CORE) || defined(PERL_EXT) #define cxinc Perl_cxinc #endif #define deb Perl_deb #define vdeb Perl_vdeb #define debprofdump Perl_debprofdump #define debop Perl_debop #define debstack Perl_debstack #define debstackptrs Perl_debstackptrs #define delimcpy Perl_delimcpy #ifdef PERL_CORE #define delete_eval_scope Perl_delete_eval_scope #define deprecate Perl_deprecate #define deprecate_old Perl_deprecate_old #endif #define die Perl_die #ifdef PERL_CORE #define vdie Perl_vdie #define die_where Perl_die_where #endif #define dounwind Perl_dounwind #ifdef PERL_CORE #define do_aexec5 Perl_do_aexec5 #endif #define do_binmode Perl_do_binmode #ifdef PERL_CORE #define do_chop Perl_do_chop #endif #define do_close Perl_do_close #ifdef PERL_CORE #define do_eof Perl_do_eof #endif #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION #else #ifdef PERL_CORE #define do_exec Perl_do_exec #endif #endif #if defined(WIN32) || defined(__SYMBIAN32__) #define do_aspawn Perl_do_aspawn #define do_spawn Perl_do_spawn #define do_spawn_nowait Perl_do_spawn_nowait #endif #if !defined(WIN32) #ifdef PERL_CORE #define do_exec3 Perl_do_exec3 #endif #endif #ifdef PERL_CORE #define do_execfree Perl_do_execfree #endif #ifdef PERL_IN_DOIO_C #ifdef PERL_CORE #define exec_failed S_exec_failed #endif #endif #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) #ifdef PERL_CORE #define do_ipcctl Perl_do_ipcctl #define do_ipcget Perl_do_ipcget #define do_msgrcv Perl_do_msgrcv #define do_msgsnd Perl_do_msgsnd #define do_semop Perl_do_semop #define do_shmio Perl_do_shmio #endif #endif #define do_join Perl_do_join #ifdef PERL_CORE #define do_kv Perl_do_kv #endif #define do_open9 Perl_do_open9 #define do_openn Perl_do_openn #ifdef PERL_CORE #define do_pipe Perl_do_pipe #define do_print Perl_do_print #define do_readline Perl_do_readline #define do_chomp Perl_do_chomp #define do_seek Perl_do_seek #endif #define do_sprintf Perl_do_sprintf #ifdef PERL_CORE #define do_sysseek Perl_do_sysseek #define do_tell Perl_do_tell #define do_trans Perl_do_trans #define do_vecget Perl_do_vecget #define do_vecset Perl_do_vecset #define do_vop Perl_do_vop #define dofile Perl_dofile #endif #define dowantarray Perl_dowantarray #define dump_all Perl_dump_all #define dump_eval Perl_dump_eval #if defined(DUMP_FDS) #define dump_fds Perl_dump_fds #endif #define dump_form Perl_dump_form #define gv_dump Perl_gv_dump #define op_dump Perl_op_dump #define pmop_dump Perl_pmop_dump #define dump_packsubs Perl_dump_packsubs #define dump_sub Perl_dump_sub #define fbm_compile Perl_fbm_compile #define fbm_instr Perl_fbm_instr #ifdef PERL_CORE #define find_script Perl_find_script #define force_list Perl_force_list #define fold_constants Perl_fold_constants #endif #define form Perl_form #define vform Perl_vform #define free_tmps Perl_free_tmps #ifdef PERL_CORE #define gen_constant_list Perl_gen_constant_list #endif #if !defined(HAS_GETENV_LEN) #ifdef PERL_CORE #define getenv_len Perl_getenv_len #endif #endif #define gp_free Perl_gp_free #define gp_ref Perl_gp_ref #define gv_AVadd Perl_gv_AVadd #define gv_HVadd Perl_gv_HVadd #define gv_IOadd Perl_gv_IOadd #define gv_autoload4 Perl_gv_autoload4 #define gv_check Perl_gv_check #define gv_efullname Perl_gv_efullname #define gv_efullname4 Perl_gv_efullname4 #define gv_fetchfile Perl_gv_fetchfile #define gv_fetchmeth Perl_gv_fetchmeth #define gv_fetchmeth_autoload Perl_gv_fetchmeth_autoload #define gv_fetchmethod_autoload Perl_gv_fetchmethod_autoload #define gv_fetchpv Perl_gv_fetchpv #define gv_fullname Perl_gv_fullname #define gv_fullname4 Perl_gv_fullname4 #define gv_init Perl_gv_init #define gv_name_set Perl_gv_name_set #define gv_stashpv Perl_gv_stashpv #define gv_stashpvn Perl_gv_stashpvn #define gv_stashsv Perl_gv_stashsv #define hv_clear Perl_hv_clear #define hv_delayfree_ent Perl_hv_delayfree_ent #define hv_delete Perl_hv_delete #define hv_delete_ent Perl_hv_delete_ent #define hv_exists Perl_hv_exists #define hv_exists_ent Perl_hv_exists_ent #define hv_fetch Perl_hv_fetch #define hv_fetch_ent Perl_hv_fetch_ent #define hv_free_ent Perl_hv_free_ent #define hv_iterinit Perl_hv_iterinit #define hv_iterkey Perl_hv_iterkey #define hv_iterkeysv Perl_hv_iterkeysv #define hv_iternextsv Perl_hv_iternextsv #define hv_iternext_flags Perl_hv_iternext_flags #define hv_iterval Perl_hv_iterval #define hv_ksplit Perl_hv_ksplit #define hv_store Perl_hv_store #define hv_store_ent Perl_hv_store_ent #define hv_store_flags Perl_hv_store_flags #define hv_undef Perl_hv_undef #define ibcmp Perl_ibcmp #define ibcmp_locale Perl_ibcmp_locale #define ibcmp_utf8 Perl_ibcmp_utf8 #ifdef PERL_CORE #define ingroup Perl_ingroup #define init_argv_symbols Perl_init_argv_symbols #define init_debugger Perl_init_debugger #endif #define init_stacks Perl_init_stacks #define init_tm Perl_init_tm #ifdef PERL_CORE #define intro_my Perl_intro_my #endif #define instr Perl_instr #ifdef PERL_CORE #define io_close Perl_io_close #define invert Perl_invert #define is_gv_magical Perl_is_gv_magical #endif #define is_lvalue_sub Perl_is_lvalue_sub #define to_uni_upper_lc Perl_to_uni_upper_lc #define to_uni_title_lc Perl_to_uni_title_lc #define to_uni_lower_lc Perl_to_uni_lower_lc #define is_uni_alnum Perl_is_uni_alnum #define is_uni_alnumc Perl_is_uni_alnumc #define is_uni_idfirst Perl_is_uni_idfirst #define is_uni_alpha Perl_is_uni_alpha #define is_uni_ascii Perl_is_uni_ascii #define is_uni_space Perl_is_uni_space #define is_uni_cntrl Perl_is_uni_cntrl #define is_uni_graph Perl_is_uni_graph #define is_uni_digit Perl_is_uni_digit #define is_uni_upper Perl_is_uni_upper #define is_uni_lower Perl_is_uni_lower #define is_uni_print Perl_is_uni_print #define is_uni_punct Perl_is_uni_punct #define is_uni_xdigit Perl_is_uni_xdigit #define to_uni_upper Perl_to_uni_upper #define to_uni_title Perl_to_uni_title #define to_uni_lower Perl_to_uni_lower #define to_uni_fold Perl_to_uni_fold #define is_uni_alnum_lc Perl_is_uni_alnum_lc #define is_uni_alnumc_lc Perl_is_uni_alnumc_lc #define is_uni_idfirst_lc Perl_is_uni_idfirst_lc #define is_uni_alpha_lc Perl_is_uni_alpha_lc #define is_uni_ascii_lc Perl_is_uni_ascii_lc #define is_uni_space_lc Perl_is_uni_space_lc #define is_uni_cntrl_lc Perl_is_uni_cntrl_lc #define is_uni_graph_lc Perl_is_uni_graph_lc #define is_uni_digit_lc Perl_is_uni_digit_lc #define is_uni_upper_lc Perl_is_uni_upper_lc #define is_uni_lower_lc Perl_is_uni_lower_lc #define is_uni_print_lc Perl_is_uni_print_lc #define is_uni_punct_lc Perl_is_uni_punct_lc #define is_uni_xdigit_lc Perl_is_uni_xdigit_lc #define is_utf8_char Perl_is_utf8_char #define is_utf8_string Perl_is_utf8_string #define is_utf8_string_loclen Perl_is_utf8_string_loclen #define is_utf8_alnum Perl_is_utf8_alnum #define is_utf8_alnumc Perl_is_utf8_alnumc #define is_utf8_idfirst Perl_is_utf8_idfirst #define is_utf8_idcont Perl_is_utf8_idcont #define is_utf8_alpha Perl_is_utf8_alpha #define is_utf8_ascii Perl_is_utf8_ascii #define is_utf8_space Perl_is_utf8_space #define is_utf8_cntrl Perl_is_utf8_cntrl #define is_utf8_digit Perl_is_utf8_digit #define is_utf8_graph Perl_is_utf8_graph #define is_utf8_upper Perl_is_utf8_upper #define is_utf8_lower Perl_is_utf8_lower #define is_utf8_print Perl_is_utf8_print #define is_utf8_punct Perl_is_utf8_punct #define is_utf8_xdigit Perl_is_utf8_xdigit #define is_utf8_mark Perl_is_utf8_mark #ifdef PERL_CORE #define jmaybe Perl_jmaybe #define keyword Perl_keyword #endif #define leave_scope Perl_leave_scope #ifdef PERL_CORE #define lex_end Perl_lex_end #define lex_start Perl_lex_start #endif #define op_null Perl_op_null #ifdef PERL_CORE #define op_clear Perl_op_clear #endif #define op_refcnt_lock Perl_op_refcnt_lock #define op_refcnt_unlock Perl_op_refcnt_unlock #ifdef PERL_CORE #define linklist Perl_linklist #define list Perl_list #define listkids Perl_listkids #endif #define load_module Perl_load_module #define vload_module Perl_vload_module #ifdef PERL_CORE #define localize Perl_localize #endif #define looks_like_number Perl_looks_like_number #define grok_bin Perl_grok_bin #define grok_hex Perl_grok_hex #define grok_number Perl_grok_number #define grok_numeric_radix Perl_grok_numeric_radix #define grok_oct Perl_grok_oct #ifdef PERL_CORE #define magic_clearenv Perl_magic_clearenv #define magic_clear_all_env Perl_magic_clear_all_env #define magic_clearhint Perl_magic_clearhint #define magic_clearpack Perl_magic_clearpack #define magic_clearsig Perl_magic_clearsig #define magic_existspack Perl_magic_existspack #define magic_freeregexp Perl_magic_freeregexp #define magic_freeovrld Perl_magic_freeovrld #define magic_get Perl_magic_get #define magic_getarylen Perl_magic_getarylen #define magic_getdefelem Perl_magic_getdefelem #define magic_getnkeys Perl_magic_getnkeys #define magic_getpack Perl_magic_getpack #define magic_getpos Perl_magic_getpos #define magic_getsig Perl_magic_getsig #define magic_getsubstr Perl_magic_getsubstr #define magic_gettaint Perl_magic_gettaint #define magic_getuvar Perl_magic_getuvar #define magic_getvec Perl_magic_getvec #define magic_len Perl_magic_len #define magic_nextpack Perl_magic_nextpack #define magic_regdata_cnt Perl_magic_regdata_cnt #define magic_regdatum_get Perl_magic_regdatum_get #define magic_regdatum_set Perl_magic_regdatum_set #define magic_set Perl_magic_set #define magic_setamagic Perl_magic_setamagic #define magic_setarylen Perl_magic_setarylen #define magic_freearylen_p Perl_magic_freearylen_p #define magic_setbm Perl_magic_setbm #define magic_setdbline Perl_magic_setdbline #define magic_setdefelem Perl_magic_setdefelem #define magic_setenv Perl_magic_setenv #define magic_setfm Perl_magic_setfm #define magic_sethint Perl_magic_sethint #define magic_setisa Perl_magic_setisa #define magic_setglob Perl_magic_setglob #define magic_setmglob Perl_magic_setmglob #define magic_setnkeys Perl_magic_setnkeys #define magic_setpack Perl_magic_setpack #define magic_setpos Perl_magic_setpos #define magic_setregexp Perl_magic_setregexp #define magic_setsig Perl_magic_setsig #define magic_setsubstr Perl_magic_setsubstr #define magic_settaint Perl_magic_settaint #define magic_setuvar Perl_magic_setuvar #define magic_setvec Perl_magic_setvec #define magic_setutf8 Perl_magic_setutf8 #define magic_set_all_env Perl_magic_set_all_env #define magic_sizepack Perl_magic_sizepack #define magic_wipepack Perl_magic_wipepack #define magicname Perl_magicname #endif #define markstack_grow Perl_markstack_grow #if defined(USE_LOCALE_COLLATE) #ifdef PERL_CORE #define magic_setcollxfrm Perl_magic_setcollxfrm #define mem_collxfrm Perl_mem_collxfrm #endif #endif #define mess Perl_mess #define vmess Perl_vmess #ifdef PERL_CORE #define qerror Perl_qerror #endif #define sortsv Perl_sortsv #define sortsv_flags Perl_sortsv_flags #define mg_clear Perl_mg_clear #define mg_copy Perl_mg_copy #ifdef PERL_CORE #define mg_localize Perl_mg_localize #endif #define mg_find Perl_mg_find #define mg_free Perl_mg_free #define mg_get Perl_mg_get #define mg_length Perl_mg_length #define mg_magical Perl_mg_magical #define mg_set Perl_mg_set #define mg_size Perl_mg_size #define mini_mktime Perl_mini_mktime #ifdef PERL_CORE #define mod Perl_mod #define mode_from_discipline Perl_mode_from_discipline #endif #define moreswitches Perl_moreswitches #ifdef PERL_CORE #define my Perl_my #endif #define my_atof Perl_my_atof #if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) #define my_bcopy Perl_my_bcopy #endif #if !defined(HAS_BZERO) && !defined(HAS_MEMSET) #define my_bzero Perl_my_bzero #endif #define my_exit Perl_my_exit #define my_failure_exit Perl_my_failure_exit #define my_fflush_all Perl_my_fflush_all #define my_fork Perl_my_fork #define atfork_lock Perl_atfork_lock #define atfork_unlock Perl_atfork_unlock #define my_lstat Perl_my_lstat #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) #define my_memcmp Perl_my_memcmp #endif #if !defined(HAS_MEMSET) #define my_memset Perl_my_memset #endif #define my_pclose Perl_my_pclose #define my_popen Perl_my_popen #define my_popen_list Perl_my_popen_list #define my_setenv Perl_my_setenv #define my_stat Perl_my_stat #define my_strftime Perl_my_strftime #if defined(MYSWAP) #define my_swap Perl_my_swap #define my_htonl Perl_my_htonl #define my_ntohl Perl_my_ntohl #endif #ifdef PERL_CORE #define my_unexec Perl_my_unexec #endif #define newANONLIST Perl_newANONLIST #define newANONHASH Perl_newANONHASH #define newANONSUB Perl_newANONSUB #define newASSIGNOP Perl_newASSIGNOP #define newCONDOP Perl_newCONDOP #define newCONSTSUB Perl_newCONSTSUB #ifdef PERL_MAD #define newFORM Perl_newFORM #else #define newFORM Perl_newFORM #endif #define newFOROP Perl_newFOROP #define newGIVENOP Perl_newGIVENOP #define newLOGOP Perl_newLOGOP #define newLOOPEX Perl_newLOOPEX #define newLOOPOP Perl_newLOOPOP #define newNULLLIST Perl_newNULLLIST #define newOP Perl_newOP #define newPROG Perl_newPROG #define newRANGE Perl_newRANGE #define newSLICEOP Perl_newSLICEOP #define newSTATEOP Perl_newSTATEOP #define newSUB Perl_newSUB #define newXS_flags Perl_newXS_flags #define newXS Perl_newXS #define newAV Perl_newAV #define newAVREF Perl_newAVREF #define newBINOP Perl_newBINOP #define newCVREF Perl_newCVREF #define newGVOP Perl_newGVOP #define newGVgen Perl_newGVgen #define newGVREF Perl_newGVREF #define newHVREF Perl_newHVREF #define newHV Perl_newHV #define newHVhv Perl_newHVhv #define newIO Perl_newIO #define newLISTOP Perl_newLISTOP #define newPADOP Perl_newPADOP #define newPMOP Perl_newPMOP #define newPVOP Perl_newPVOP #define newRV Perl_newRV #define newRV_noinc Perl_newRV_noinc #define newSV Perl_newSV #define newSVREF Perl_newSVREF #define newSVOP Perl_newSVOP #define newSViv Perl_newSViv #define newSVuv Perl_newSVuv #define newSVnv Perl_newSVnv #define newSVpv Perl_newSVpv #define newSVpvn Perl_newSVpvn #define newSVhek Perl_newSVhek #define newSVpvn_share Perl_newSVpvn_share #define newSVpvf Perl_newSVpvf #define vnewSVpvf Perl_vnewSVpvf #define newSVrv Perl_newSVrv #define newSVsv Perl_newSVsv #define newUNOP Perl_newUNOP #define newWHENOP Perl_newWHENOP #define newWHILEOP Perl_newWHILEOP #define new_stackinfo Perl_new_stackinfo #define scan_vstring Perl_scan_vstring #define scan_version Perl_scan_version #define new_version Perl_new_version #define upg_version Perl_upg_version #define vverify Perl_vverify #define vnumify Perl_vnumify #define vnormal Perl_vnormal #define vstringify Perl_vstringify #define vcmp Perl_vcmp #ifdef PERL_CORE #define nextargv Perl_nextargv #endif #define ninstr Perl_ninstr #ifdef PERL_CORE #define oopsCV Perl_oopsCV #endif #define op_free Perl_op_free #ifdef PERL_MAD #ifdef PERL_CORE #define package Perl_package #endif #else #ifdef PERL_CORE #define package Perl_package #endif #endif #ifdef PERL_CORE #define pad_alloc Perl_pad_alloc #define allocmy Perl_allocmy #define pad_findmy Perl_pad_findmy #endif #define find_rundefsvoffset Perl_find_rundefsvoffset #ifdef PERL_CORE #define oopsAV Perl_oopsAV #define oopsHV Perl_oopsHV #define pad_leavemy Perl_pad_leavemy #endif #define pad_sv Perl_pad_sv #ifdef PERL_CORE #define pad_free Perl_pad_free #define pad_reset Perl_pad_reset #define pad_swipe Perl_pad_swipe #define peep Perl_peep #endif #if defined(USE_REENTRANT_API) #define reentrant_size Perl_reentrant_size #define reentrant_init Perl_reentrant_init #define reentrant_free Perl_reentrant_free #define reentrant_retry Perl_reentrant_retry #endif #define call_atexit Perl_call_atexit #define call_argv Perl_call_argv #define call_method Perl_call_method #define call_pv Perl_call_pv #define call_sv Perl_call_sv #define despatch_signals Perl_despatch_signals #define doref Perl_doref #define eval_pv Perl_eval_pv #define eval_sv Perl_eval_sv #define get_sv Perl_get_sv #define get_av Perl_get_av #define get_hv Perl_get_hv #define get_cv Perl_get_cv #define init_i18nl10n Perl_init_i18nl10n #define init_i18nl14n Perl_init_i18nl14n #define new_collate Perl_new_collate #define new_ctype Perl_new_ctype #define new_numeric Perl_new_numeric #define set_numeric_local Perl_set_numeric_local #define set_numeric_radix Perl_set_numeric_radix #define set_numeric_standard Perl_set_numeric_standard #define require_pv Perl_require_pv #define pack_cat Perl_pack_cat #define packlist Perl_packlist #ifdef PERL_USES_PL_PIDSTATUS #ifdef PERL_CORE #define pidgone Perl_pidgone #endif #endif #define pmflag Perl_pmflag #ifdef PERL_CORE #define pmruntime Perl_pmruntime #define pmtrans Perl_pmtrans #endif #define pop_scope Perl_pop_scope #ifdef PERL_CORE #define prepend_elem Perl_prepend_elem #endif #define push_scope Perl_push_scope #ifdef PERL_CORE #define refkids Perl_refkids #endif #define regdump Perl_regdump #define regclass_swash Perl_regclass_swash #define pregexec Perl_pregexec #define pregfree Perl_pregfree #if defined(USE_ITHREADS) #define regdupe Perl_regdupe #endif #define pregcomp Perl_pregcomp #define re_intuit_start Perl_re_intuit_start #define re_intuit_string Perl_re_intuit_string #define regexec_flags Perl_regexec_flags #define regnext Perl_regnext #if defined(PERL_CORE) || defined(PERL_EXT) #define reg_named_buff_sv Perl_reg_named_buff_sv #define regprop Perl_regprop #endif #define repeatcpy Perl_repeatcpy #define rninstr Perl_rninstr #define rsignal Perl_rsignal #ifdef PERL_CORE #define rsignal_restore Perl_rsignal_restore #define rsignal_save Perl_rsignal_save #endif #define rsignal_state Perl_rsignal_state #ifdef PERL_CORE #define rxres_free Perl_rxres_free #define rxres_restore Perl_rxres_restore #define rxres_save Perl_rxres_save #endif #if !defined(HAS_RENAME) #ifdef PERL_CORE #define same_dirent Perl_same_dirent #endif #endif #define savepv Perl_savepv #define savepvn Perl_savepvn #define savesharedpv Perl_savesharedpv #define savesvpv Perl_savesvpv #define savestack_grow Perl_savestack_grow #define savestack_grow_cnt Perl_savestack_grow_cnt #define save_aelem Perl_save_aelem #define save_alloc Perl_save_alloc #define save_aptr Perl_save_aptr #define save_ary Perl_save_ary #define save_bool Perl_save_bool #define save_clearsv Perl_save_clearsv #define save_delete Perl_save_delete #define save_destructor Perl_save_destructor #define save_destructor_x Perl_save_destructor_x #define save_freesv Perl_save_freesv #ifdef PERL_CORE #define save_freeop Perl_save_freeop #endif #define save_freepv Perl_save_freepv #define save_generic_svref Perl_save_generic_svref #define save_generic_pvref Perl_save_generic_pvref #define save_shared_pvref Perl_save_shared_pvref #define save_gp Perl_save_gp #define save_hash Perl_save_hash #define save_helem Perl_save_helem #define save_hints Perl_save_hints #define save_hptr Perl_save_hptr #define save_I16 Perl_save_I16 #define save_I32 Perl_save_I32 #define save_I8 Perl_save_I8 #define save_int Perl_save_int #define save_item Perl_save_item #define save_iv Perl_save_iv #define save_list Perl_save_list #define save_long Perl_save_long #define save_mortalizesv Perl_save_mortalizesv #define save_nogv Perl_save_nogv #ifdef PERL_CORE #define save_op Perl_save_op #endif #define save_scalar Perl_save_scalar #define save_pptr Perl_save_pptr #define save_vptr Perl_save_vptr #define save_re_context Perl_save_re_context #define save_padsv Perl_save_padsv #define save_sptr Perl_save_sptr #define save_svref Perl_save_svref #ifdef PERL_CORE #define sawparens Perl_sawparens #define scalar Perl_scalar #define scalarkids Perl_scalarkids #define scalarseq Perl_scalarseq #define scalarvoid Perl_scalarvoid #endif #define scan_bin Perl_scan_bin #define scan_hex Perl_scan_hex #define scan_num Perl_scan_num #define scan_oct Perl_scan_oct #ifdef PERL_CORE #define scope Perl_scope #endif #define screaminstr Perl_screaminstr #if !defined(VMS) #ifdef PERL_CORE #define setenv_getix Perl_setenv_getix #endif #endif #ifdef PERL_CORE #define setdefout Perl_setdefout #endif #define share_hek Perl_share_hek #if defined(HAS_SIGACTION) && defined(SA_SIGINFO) #ifdef PERL_CORE #define sighandler Perl_sighandler #endif #define csighandler Perl_csighandler #else #ifdef PERL_CORE #define sighandler Perl_sighandler #endif #define csighandler Perl_csighandler #endif #define stack_grow Perl_stack_grow #define start_subparse Perl_start_subparse #ifdef PERL_CORE #define sub_crush_depth Perl_sub_crush_depth #endif #define sv_2bool Perl_sv_2bool #define sv_2cv Perl_sv_2cv #define sv_2io Perl_sv_2io #ifdef PERL_IN_SV_C #ifdef PERL_CORE #define glob_2number S_glob_2number #define glob_2pv S_glob_2pv #endif #endif #define sv_2iv_flags Perl_sv_2iv_flags #define sv_2mortal Perl_sv_2mortal #define sv_2nv Perl_sv_2nv #define sv_2pv_flags Perl_sv_2pv_flags #define sv_2pvutf8 Perl_sv_2pvutf8 #define sv_2pvbyte Perl_sv_2pvbyte #define sv_pvn_nomg Perl_sv_pvn_nomg #define sv_2uv_flags Perl_sv_2uv_flags #define sv_iv Perl_sv_iv #define sv_uv Perl_sv_uv #define sv_nv Perl_sv_nv #define sv_pvn Perl_sv_pvn #define sv_pvutf8n Perl_sv_pvutf8n #define sv_pvbyten Perl_sv_pvbyten #define sv_true Perl_sv_true #ifdef PERL_CORE #define sv_add_arena Perl_sv_add_arena #endif #define sv_backoff Perl_sv_backoff #define sv_bless Perl_sv_bless #define sv_catpvf Perl_sv_catpvf #define sv_vcatpvf Perl_sv_vcatpvf #define sv_catpv Perl_sv_catpv #define sv_chop Perl_sv_chop #ifdef PERL_CORE #define sv_clean_all Perl_sv_clean_all #define sv_clean_objs Perl_sv_clean_objs #endif #define sv_clear Perl_sv_clear #define sv_cmp Perl_sv_cmp #define sv_cmp_locale Perl_sv_cmp_locale #if defined(USE_LOCALE_COLLATE) #define sv_collxfrm Perl_sv_collxfrm #endif #define sv_compile_2op Perl_sv_compile_2op #define getcwd_sv Perl_getcwd_sv #define sv_dec Perl_sv_dec #define sv_dump Perl_sv_dump #define sv_derived_from Perl_sv_derived_from #define sv_does Perl_sv_does #define sv_eq Perl_sv_eq #define sv_free Perl_sv_free #ifdef PERL_CORE #define sv_free_arenas Perl_sv_free_arenas #endif #define sv_gets Perl_sv_gets #define sv_grow Perl_sv_grow #define sv_inc Perl_sv_inc #define sv_insert Perl_sv_insert #define sv_isa Perl_sv_isa #define sv_isobject Perl_sv_isobject #define sv_len Perl_sv_len #define sv_len_utf8 Perl_sv_len_utf8 #define sv_magic Perl_sv_magic #define sv_magicext Perl_sv_magicext #define sv_mortalcopy Perl_sv_mortalcopy #define sv_newmortal Perl_sv_newmortal #define sv_newref Perl_sv_newref #define sv_peek Perl_sv_peek #define sv_pos_u2b Perl_sv_pos_u2b #define sv_pos_b2u Perl_sv_pos_b2u #define sv_pvutf8n_force Perl_sv_pvutf8n_force #define sv_pvbyten_force Perl_sv_pvbyten_force #define sv_recode_to_utf8 Perl_sv_recode_to_utf8 #define sv_cat_decode Perl_sv_cat_decode #define sv_reftype Perl_sv_reftype #define sv_replace Perl_sv_replace #define sv_report_used Perl_sv_report_used #define sv_reset Perl_sv_reset #define sv_setpvf Perl_sv_setpvf #define sv_vsetpvf Perl_sv_vsetpvf #define sv_setiv Perl_sv_setiv #define sv_setpviv Perl_sv_setpviv #define sv_setuv Perl_sv_setuv #define sv_setnv Perl_sv_setnv #define sv_setref_iv Perl_sv_setref_iv #define sv_setref_uv Perl_sv_setref_uv #define sv_setref_nv Perl_sv_setref_nv #define sv_setref_pv Perl_sv_setref_pv #define sv_setref_pvn Perl_sv_setref_pvn #define sv_setpv Perl_sv_setpv #define sv_setpvn Perl_sv_setpvn #define sv_tainted Perl_sv_tainted #define sv_unmagic Perl_sv_unmagic #define sv_unref_flags Perl_sv_unref_flags #define sv_untaint Perl_sv_untaint #define sv_upgrade Perl_sv_upgrade #define sv_usepvn_flags Perl_sv_usepvn_flags #define sv_vcatpvfn Perl_sv_vcatpvfn #define sv_vsetpvfn Perl_sv_vsetpvfn #define str_to_version Perl_str_to_version #define swash_init Perl_swash_init #define swash_fetch Perl_swash_fetch #define taint_env Perl_taint_env #define taint_proper Perl_taint_proper #define to_utf8_case Perl_to_utf8_case #define to_utf8_lower Perl_to_utf8_lower #define to_utf8_upper Perl_to_utf8_upper #define to_utf8_title Perl_to_utf8_title #define to_utf8_fold Perl_to_utf8_fold #if defined(UNLINK_ALL_VERSIONS) #define unlnk Perl_unlnk #endif #define unpack_str Perl_unpack_str #define unpackstring Perl_unpackstring #define unsharepvn Perl_unsharepvn #if defined(PERL_CORE) || defined(PERL_EXT) #define unshare_hek Perl_unshare_hek #endif #ifdef PERL_MAD #ifdef PERL_CORE #define utilize Perl_utilize #endif #else #ifdef PERL_CORE #define utilize Perl_utilize #endif #endif #define utf16_to_utf8 Perl_utf16_to_utf8 #define utf16_to_utf8_reversed Perl_utf16_to_utf8_reversed #define utf8_length Perl_utf8_length #define utf8_distance Perl_utf8_distance #define utf8_hop Perl_utf8_hop #define utf8_to_bytes Perl_utf8_to_bytes #define bytes_from_utf8 Perl_bytes_from_utf8 #define bytes_to_utf8 Perl_bytes_to_utf8 #define utf8_to_uvchr Perl_utf8_to_uvchr #define utf8_to_uvuni Perl_utf8_to_uvuni #ifdef EBCDIC #define utf8n_to_uvchr Perl_utf8n_to_uvchr #else #endif #define utf8n_to_uvuni Perl_utf8n_to_uvuni #ifdef EBCDIC #define uvchr_to_utf8 Perl_uvchr_to_utf8 #else #endif #define uvchr_to_utf8_flags Perl_uvchr_to_utf8_flags #define uvuni_to_utf8_flags Perl_uvuni_to_utf8_flags #define pv_uni_display Perl_pv_uni_display #define sv_uni_display Perl_sv_uni_display #ifdef PERL_CORE #define vivify_defelem Perl_vivify_defelem #define vivify_ref Perl_vivify_ref #define wait4pid Perl_wait4pid #define parse_unicode_opts Perl_parse_unicode_opts #endif #define seed Perl_seed #ifdef PERL_CORE #define get_hash_seed Perl_get_hash_seed #define report_evil_fh Perl_report_evil_fh #define report_uninit Perl_report_uninit #endif #define warn Perl_warn #define vwarn Perl_vwarn #define warner Perl_warner #define vwarner Perl_vwarner #ifdef PERL_CORE #define watch Perl_watch #endif #define whichsig Perl_whichsig #ifdef PERL_CORE #define write_to_stderr Perl_write_to_stderr #define yyerror Perl_yyerror #define yylex Perl_yylex #define yyparse Perl_yyparse #define yywarn Perl_yywarn #endif #if defined(MYMALLOC) #define dump_mstats Perl_dump_mstats #define get_mstats Perl_get_mstats #endif #define safesysmalloc Perl_safesysmalloc #define safesyscalloc Perl_safesyscalloc #define safesysrealloc Perl_safesysrealloc #define safesysfree Perl_safesysfree #if defined(PERL_GLOBAL_STRUCT) #define GetVars Perl_GetVars #define init_global_struct Perl_init_global_struct #define free_global_struct Perl_free_global_struct #endif #define runops_standard Perl_runops_standard #define runops_debug Perl_runops_debug #define sv_catpvf_mg Perl_sv_catpvf_mg #define sv_vcatpvf_mg Perl_sv_vcatpvf_mg #define sv_catpv_mg Perl_sv_catpv_mg #define sv_setpvf_mg Perl_sv_setpvf_mg #define sv_vsetpvf_mg Perl_sv_vsetpvf_mg #define sv_setiv_mg Perl_sv_setiv_mg #define sv_setpviv_mg Perl_sv_setpviv_mg #define sv_setuv_mg Perl_sv_setuv_mg #define sv_setnv_mg Perl_sv_setnv_mg #define sv_setpv_mg Perl_sv_setpv_mg #define sv_setpvn_mg Perl_sv_setpvn_mg #define sv_setsv_mg Perl_sv_setsv_mg #define get_vtbl Perl_get_vtbl #define pv_display Perl_pv_display #define pv_escape Perl_pv_escape #define pv_pretty Perl_pv_pretty #define dump_indent Perl_dump_indent #define dump_vindent Perl_dump_vindent #define do_gv_dump Perl_do_gv_dump #define do_gvgv_dump Perl_do_gvgv_dump #define do_hv_dump Perl_do_hv_dump #define do_magic_dump Perl_do_magic_dump #define do_op_dump Perl_do_op_dump #define do_pmop_dump Perl_do_pmop_dump #define do_sv_dump Perl_do_sv_dump #define magic_dump Perl_magic_dump #define reginitcolors Perl_reginitcolors #define sv_utf8_downgrade Perl_sv_utf8_downgrade #define sv_utf8_encode Perl_sv_utf8_encode #define sv_utf8_decode Perl_sv_utf8_decode #define sv_force_normal_flags Perl_sv_force_normal_flags #define tmps_grow Perl_tmps_grow #define sv_rvweaken Perl_sv_rvweaken #ifdef PERL_CORE #define magic_killbackrefs Perl_magic_killbackrefs #endif #define newANONATTRSUB Perl_newANONATTRSUB #define newATTRSUB Perl_newATTRSUB #ifdef PERL_MAD #define newMYSUB Perl_newMYSUB #else #define newMYSUB Perl_newMYSUB #endif #ifdef PERL_CORE #define my_attrs Perl_my_attrs #define boot_core_xsutils Perl_boot_core_xsutils #endif #if defined(USE_ITHREADS) #define cx_dup Perl_cx_dup #define si_dup Perl_si_dup #define ss_dup Perl_ss_dup #define any_dup Perl_any_dup #define he_dup Perl_he_dup #define hek_dup Perl_hek_dup #define re_dup Perl_re_dup #define fp_dup Perl_fp_dup #define dirp_dup Perl_dirp_dup #define gp_dup Perl_gp_dup #define mg_dup Perl_mg_dup #define sv_dup Perl_sv_dup #define rvpv_dup Perl_rvpv_dup #define ptr_table_new Perl_ptr_table_new #define ptr_table_fetch Perl_ptr_table_fetch #define ptr_table_store Perl_ptr_table_store #define ptr_table_split Perl_ptr_table_split #define ptr_table_clear Perl_ptr_table_clear #define ptr_table_free Perl_ptr_table_free # if defined(HAVE_INTERP_INTERN) #define sys_intern_dup Perl_sys_intern_dup # endif #endif #if defined(HAVE_INTERP_INTERN) #define sys_intern_clear Perl_sys_intern_clear #define sys_intern_init Perl_sys_intern_init #endif #define custom_op_name Perl_custom_op_name #define custom_op_desc Perl_custom_op_desc #if defined(PERL_OLD_COPY_ON_WRITE) #ifdef PERL_CORE #define sv_release_IVX Perl_sv_release_IVX #endif #endif #define sv_nosharing Perl_sv_nosharing #ifdef NO_MATHOMS #else #define sv_nounlocking Perl_sv_nounlocking #endif #define nothreadhook Perl_nothreadhook #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define do_trans_simple S_do_trans_simple #define do_trans_count S_do_trans_count #define do_trans_complex S_do_trans_complex #define do_trans_simple_utf8 S_do_trans_simple_utf8 #define do_trans_count_utf8 S_do_trans_count_utf8 #define do_trans_complex_utf8 S_do_trans_complex_utf8 #endif #endif #if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define gv_init_sv S_gv_init_sv #define require_errno S_require_errno #endif #endif #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define hsplit S_hsplit #define hfreeentries S_hfreeentries #define new_he S_new_he #define save_hek_flags S_save_hek_flags #define hv_magic_check S_hv_magic_check #define unshare_hek_or_pvn S_unshare_hek_or_pvn #define share_hek_flags S_share_hek_flags #define hv_magic_uvar_xkey S_hv_magic_uvar_xkey #define hv_notallowed S_hv_notallowed #define hv_auxinit S_hv_auxinit #define hv_delete_common S_hv_delete_common #define hv_fetch_common S_hv_fetch_common #define clear_placeholders S_clear_placeholders #define refcounted_he_value S_refcounted_he_value #endif #endif #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define save_magic S_save_magic #define magic_methpack S_magic_methpack #define magic_methcall S_magic_methcall #define restore_magic S_restore_magic #define unwind_handler_stack S_unwind_handler_stack #endif #endif #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define ck_anoncode Perl_ck_anoncode #define ck_bitop Perl_ck_bitop #define ck_concat Perl_ck_concat #define ck_defined Perl_ck_defined #define ck_delete Perl_ck_delete #define ck_die Perl_ck_die #define ck_eof Perl_ck_eof #define ck_eval Perl_ck_eval #define ck_exec Perl_ck_exec #define ck_exists Perl_ck_exists #define ck_exit Perl_ck_exit #define ck_ftst Perl_ck_ftst #define ck_fun Perl_ck_fun #define ck_glob Perl_ck_glob #define ck_grep Perl_ck_grep #define ck_index Perl_ck_index #define ck_join Perl_ck_join #define ck_lengthconst Perl_ck_lengthconst #define ck_lfun Perl_ck_lfun #define ck_listiob Perl_ck_listiob #define ck_match Perl_ck_match #define ck_method Perl_ck_method #define ck_null Perl_ck_null #define ck_open Perl_ck_open #define ck_repeat Perl_ck_repeat #define ck_require Perl_ck_require #define ck_retarget Perl_ck_retarget #define ck_return Perl_ck_return #define ck_rfun Perl_ck_rfun #define ck_rvconst Perl_ck_rvconst #define ck_sassign Perl_ck_sassign #define ck_say Perl_ck_say #define ck_select Perl_ck_select #define ck_shift Perl_ck_shift #define ck_sort Perl_ck_sort #define ck_spair Perl_ck_spair #define ck_split Perl_ck_split #define ck_subr Perl_ck_subr #define ck_substr Perl_ck_substr #define ck_svconst Perl_ck_svconst #define ck_trunc Perl_ck_trunc #define ck_unpack Perl_ck_unpack #define is_handle_constructor S_is_handle_constructor #define is_list_assignment S_is_list_assignment #define cop_free S_cop_free #define modkids S_modkids #define scalarboolean S_scalarboolean #define newDEFSVOP S_newDEFSVOP #define new_logop S_new_logop #define simplify_sort S_simplify_sort #define gv_ename S_gv_ename #define scalar_mod_type S_scalar_mod_type #define my_kid S_my_kid #define dup_attrlist S_dup_attrlist #define apply_attrs S_apply_attrs #define apply_attrs_my S_apply_attrs_my #define bad_type S_bad_type #define no_bareword_allowed S_no_bareword_allowed #define no_fh_allowed S_no_fh_allowed #define too_few_arguments S_too_few_arguments #define too_many_arguments S_too_many_arguments #define looks_like_bool S_looks_like_bool #define newGIVWHENOP S_newGIVWHENOP #define ref_array_or_hash S_ref_array_or_hash #endif #endif #if defined(PL_OP_SLAB_ALLOC) #define Slab_Alloc Perl_Slab_Alloc #define Slab_Free Perl_Slab_Free #endif #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define find_beginning S_find_beginning #define forbid_setid S_forbid_setid #define incpush S_incpush #define init_interp S_init_interp #define init_ids S_init_ids #define init_lexer S_init_lexer #define init_main_stash S_init_main_stash #define init_perllib S_init_perllib #define init_postdump_symbols S_init_postdump_symbols #define init_predump_symbols S_init_predump_symbols #define my_exit_jump S_my_exit_jump #define nuke_stacks S_nuke_stacks #define open_script S_open_script #define usage S_usage #define validate_suid S_validate_suid #endif # if defined(IAMSUID) #ifdef PERL_CORE #define fd_on_nosuid_fs S_fd_on_nosuid_fs #endif # endif #ifdef PERL_CORE #define parse_body S_parse_body #define run_body S_run_body #define incpush_if_exists S_incpush_if_exists #endif #endif #if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define refto S_refto #endif #endif #if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define unpack_rec S_unpack_rec #define pack_rec S_pack_rec #define mul128 S_mul128 #define measure_struct S_measure_struct #define next_symbol S_next_symbol #define is_an_int S_is_an_int #define div128 S_div128 #define group_end S_group_end #define get_num S_get_num #define need_utf8 S_need_utf8 #define first_symbol S_first_symbol #define sv_exp_grow S_sv_exp_grow #define bytes_to_uni S_bytes_to_uni #endif #endif #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define docatch S_docatch #define docatch_body S_docatch_body #define dofindlabel S_dofindlabel #define doparseform S_doparseform #define num_overflow S_num_overflow #define dopoptoeval S_dopoptoeval #define dopoptogiven S_dopoptogiven #define dopoptolabel S_dopoptolabel #define dopoptoloop S_dopoptoloop #define dopoptosub S_dopoptosub #define dopoptosub_at S_dopoptosub_at #define dopoptowhen S_dopoptowhen #define save_lines S_save_lines #define doeval S_doeval #define check_type_and_open S_check_type_and_open #define doopen_pm S_doopen_pm #define path_is_absolute S_path_is_absolute #define run_user_filter S_run_user_filter #define make_matcher S_make_matcher #define matcher_matches_sv S_matcher_matches_sv #define destroy_matcher S_destroy_matcher #define do_smartmatch S_do_smartmatch #endif #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define do_oddball S_do_oddball #define get_db_sub S_get_db_sub #define method_common S_method_common #endif #endif #if defined(PERL_IN_PP_SORT_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define sv_ncmp S_sv_ncmp #define sv_i_ncmp S_sv_i_ncmp #define amagic_ncmp S_amagic_ncmp #define amagic_i_ncmp S_amagic_i_ncmp #define amagic_cmp S_amagic_cmp #define amagic_cmp_locale S_amagic_cmp_locale #define sortcv S_sortcv #define sortcv_xsub S_sortcv_xsub #define sortcv_stacked S_sortcv_stacked #define qsortsvu S_qsortsvu #endif #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define doform S_doform #define emulate_eaccess S_emulate_eaccess #endif # if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) #ifdef PERL_CORE #define dooneliner S_dooneliner #endif # endif #ifdef PERL_CORE #define space_join_names_mortal S_space_join_names_mortal #endif #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) #if defined(PERL_CORE) || defined(PERL_EXT) #define reg S_reg #define reganode S_reganode #define regatom S_regatom #define regbranch S_regbranch #define reguni S_reguni #define regclass S_regclass #define regcurly S_regcurly #define reg_node S_reg_node #define regpiece S_regpiece #define reg_namedseq S_reg_namedseq #define reginsert S_reginsert #define regtail S_regtail #define reg_scan_name S_reg_scan_name #define join_exact S_join_exact #define regwhite S_regwhite #define nextchar S_nextchar #define scan_commit S_scan_commit #define cl_anything S_cl_anything #define cl_is_anything S_cl_is_anything #define cl_init S_cl_init #define cl_init_zero S_cl_init_zero #define cl_and S_cl_and #define cl_or S_cl_or #define study_chunk S_study_chunk #define add_data S_add_data #endif #ifdef PERL_CORE #define re_croak2 S_re_croak2 #endif #if defined(PERL_CORE) || defined(PERL_EXT) #define regpposixcc S_regpposixcc #define checkposixcc S_checkposixcc #define make_trie S_make_trie #define make_trie_failtable S_make_trie_failtable #endif # ifdef DEBUGGING #if defined(PERL_CORE) || defined(PERL_EXT) #define dumpuntil S_dumpuntil #define put_byte S_put_byte #define dump_trie S_dump_trie #define dump_trie_interim_list S_dump_trie_interim_list #define dump_trie_interim_table S_dump_trie_interim_table #define regtail_study S_regtail_study #endif # endif #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) #if defined(PERL_CORE) || defined(PERL_EXT) #define regmatch S_regmatch #define regrepeat S_regrepeat #define regtry S_regtry #define reginclass S_reginclass #define regcppush S_regcppush #define regcppop S_regcppop #define reghop3 S_reghop3 #endif #ifdef XXX_dmq #if defined(PERL_CORE) || defined(PERL_EXT) #define reghop4 S_reghop4 #endif #endif #if defined(PERL_CORE) || defined(PERL_EXT) #define reghopmaybe3 S_reghopmaybe3 #define find_byclass S_find_byclass #define to_utf8_substr S_to_utf8_substr #define to_byte_substr S_to_byte_substr #define reg_check_named_buff_matched S_reg_check_named_buff_matched #endif # ifdef DEBUGGING #if defined(PERL_CORE) || defined(PERL_EXT) #define dump_exec_pos S_dump_exec_pos #define debug_start_match S_debug_start_match #endif # endif #endif #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define deb_curcv S_deb_curcv #define debprof S_debprof #define sequence S_sequence #define sequence_tail S_sequence_tail #define sequence_num S_sequence_num #define pm_description S_pm_description #endif #endif #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define save_scalar_at S_save_scalar_at #endif #endif #if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) #endif #if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) #endif #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define uiv_2buf S_uiv_2buf #define sv_unglob S_sv_unglob #define not_a_number S_not_a_number #define visit S_visit #define sv_del_backref S_sv_del_backref #define varname S_varname #endif # ifdef DEBUGGING #ifdef PERL_CORE #define del_sv S_del_sv #endif # endif # if !defined(NV_PRESERVES_UV) #ifdef PERL_CORE #define sv_2iuv_non_preserve S_sv_2iuv_non_preserve #endif # endif #ifdef PERL_CORE #define expect_number S_expect_number #endif #ifdef PERL_CORE #define sv_pos_u2b_forwards S_sv_pos_u2b_forwards #define sv_pos_u2b_midway S_sv_pos_u2b_midway #define sv_pos_u2b_cached S_sv_pos_u2b_cached #define utf8_mg_pos_cache_update S_utf8_mg_pos_cache_update #define sv_pos_b2u_forwards S_sv_pos_b2u_forwards #define sv_pos_b2u_midway S_sv_pos_b2u_midway #define stringify_regexp S_stringify_regexp #define F0convert S_F0convert #endif # if defined(PERL_OLD_COPY_ON_WRITE) #ifdef PERL_CORE #define sv_release_COW S_sv_release_COW #endif # endif #ifdef PERL_CORE #define more_sv S_more_sv #define more_bodies S_more_bodies #define sv_2iuv_common S_sv_2iuv_common #define glob_assign_glob S_glob_assign_glob #define glob_assign_ref S_glob_assign_ref #endif # if defined(USE_ITHREADS) #ifdef PERL_CORE #define ptr_table_find S_ptr_table_find #endif # endif #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define check_uni S_check_uni #define force_next S_force_next #define force_version S_force_version #define force_word S_force_word #define tokeq S_tokeq #define pending_ident S_pending_ident #define scan_const S_scan_const #define scan_formline S_scan_formline #define scan_heredoc S_scan_heredoc #define scan_ident S_scan_ident #define scan_inputsymbol S_scan_inputsymbol #define scan_pat S_scan_pat #define scan_str S_scan_str #define scan_subst S_scan_subst #define scan_trans S_scan_trans #define scan_word S_scan_word #define skipspace S_skipspace #define swallow_bom S_swallow_bom #define checkcomma S_checkcomma #define feature_is_enabled S_feature_is_enabled #define force_ident S_force_ident #define incline S_incline #define intuit_method S_intuit_method #define intuit_more S_intuit_more #define lop S_lop #define missingterm S_missingterm #define no_op S_no_op #define set_csh S_set_csh #define sublex_done S_sublex_done #define sublex_push S_sublex_push #define sublex_start S_sublex_start #define filter_gets S_filter_gets #define find_in_my_stash S_find_in_my_stash #define tokenize_use S_tokenize_use #define new_constant S_new_constant #define ao S_ao #define incl_perldb S_incl_perldb #endif # if defined(PERL_CR_FILTER) #ifdef PERL_CORE #define cr_textfilter S_cr_textfilter #define strip_return S_strip_return #endif # endif # if defined(DEBUGGING) #ifdef PERL_CORE #define tokereport S_tokereport #define printbuf S_printbuf #endif # endif #endif #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define isa_lookup S_isa_lookup #endif #endif #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) #if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) #ifdef PERL_CORE #define stdize_locale S_stdize_locale #endif #endif #endif #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define closest_cop S_closest_cop #define mess_alloc S_mess_alloc #define vdie_croak_common S_vdie_croak_common #define vdie_common S_vdie_common #define write_no_mem S_write_no_mem #endif #endif #if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define mulexp10 S_mulexp10 #endif #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define is_utf8_char_slow S_is_utf8_char_slow #define is_utf8_common S_is_utf8_common #define swash_get S_swash_get #endif #endif #define sv_setsv_flags Perl_sv_setsv_flags #define sv_catpvn_flags Perl_sv_catpvn_flags #define sv_catsv_flags Perl_sv_catsv_flags #define sv_utf8_upgrade_flags Perl_sv_utf8_upgrade_flags #define sv_pvn_force_flags Perl_sv_pvn_force_flags #define sv_copypv Perl_sv_copypv #define my_atof2 Perl_my_atof2 #define my_socketpair Perl_my_socketpair #ifdef PERL_OLD_COPY_ON_WRITE #if defined(PERL_CORE) || defined(PERL_EXT) #define sv_setsv_cow Perl_sv_setsv_cow #endif #endif #if defined(USE_PERLIO) && !defined(USE_SFIO) #define PerlIO_close Perl_PerlIO_close #define PerlIO_fill Perl_PerlIO_fill #define PerlIO_fileno Perl_PerlIO_fileno #define PerlIO_eof Perl_PerlIO_eof #define PerlIO_error Perl_PerlIO_error #define PerlIO_flush Perl_PerlIO_flush #define PerlIO_clearerr Perl_PerlIO_clearerr #define PerlIO_set_cnt Perl_PerlIO_set_cnt #define PerlIO_set_ptrcnt Perl_PerlIO_set_ptrcnt #define PerlIO_setlinebuf Perl_PerlIO_setlinebuf #define PerlIO_read Perl_PerlIO_read #define PerlIO_write Perl_PerlIO_write #define PerlIO_unread Perl_PerlIO_unread #define PerlIO_tell Perl_PerlIO_tell #define PerlIO_seek Perl_PerlIO_seek #define PerlIO_get_base Perl_PerlIO_get_base #define PerlIO_get_ptr Perl_PerlIO_get_ptr #define PerlIO_get_bufsiz Perl_PerlIO_get_bufsiz #define PerlIO_get_cnt Perl_PerlIO_get_cnt #define PerlIO_stdin Perl_PerlIO_stdin #define PerlIO_stdout Perl_PerlIO_stdout #define PerlIO_stderr Perl_PerlIO_stderr #endif /* PERLIO_LAYERS */ #ifdef PERL_CORE #define deb_stack_all Perl_deb_stack_all #endif #ifdef PERL_IN_DEB_C #ifdef PERL_CORE #define deb_stack_n S_deb_stack_n #endif #endif #ifdef PERL_CORE #define pad_new Perl_pad_new #define pad_undef Perl_pad_undef #define pad_add_name Perl_pad_add_name #define pad_add_anon Perl_pad_add_anon #define pad_check_dup Perl_pad_check_dup #endif #ifdef DEBUGGING #ifdef PERL_CORE #define pad_setsv Perl_pad_setsv #endif #endif #ifdef PERL_CORE #define pad_block_start Perl_pad_block_start #define pad_tidy Perl_pad_tidy #define do_dump_pad Perl_do_dump_pad #define pad_fixup_inner_anons Perl_pad_fixup_inner_anons #endif #ifdef PERL_CORE #define pad_push Perl_pad_push #define pad_compname_type Perl_pad_compname_type #endif #if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define pad_findlex S_pad_findlex #endif # if defined(DEBUGGING) #ifdef PERL_CORE #define cv_dump S_cv_dump #endif # endif #endif #ifdef PERL_CORE #define find_runcv Perl_find_runcv #define free_tied_hv_pool Perl_free_tied_hv_pool #endif #if defined(DEBUGGING) #ifdef PERL_CORE #define get_debug_opts Perl_get_debug_opts #endif #endif #define save_set_svflags Perl_save_set_svflags #define hv_scalar Perl_hv_scalar #define hv_name_set Perl_hv_name_set #if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) #endif #define hv_clear_placeholders Perl_hv_clear_placeholders #ifdef PERL_CORE #define magic_scalarpack Perl_magic_scalarpack #endif #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define find_hash_subscript S_find_hash_subscript #define find_array_subscript S_find_array_subscript #define find_uninit_var S_find_uninit_var #endif #endif #ifdef PERL_NEED_MY_HTOLE16 #ifdef PERL_CORE #define my_htole16 Perl_my_htole16 #endif #endif #ifdef PERL_NEED_MY_LETOH16 #ifdef PERL_CORE #define my_letoh16 Perl_my_letoh16 #endif #endif #ifdef PERL_NEED_MY_HTOBE16 #ifdef PERL_CORE #define my_htobe16 Perl_my_htobe16 #endif #endif #ifdef PERL_NEED_MY_BETOH16 #ifdef PERL_CORE #define my_betoh16 Perl_my_betoh16 #endif #endif #ifdef PERL_NEED_MY_HTOLE32 #ifdef PERL_CORE #define my_htole32 Perl_my_htole32 #endif #endif #ifdef PERL_NEED_MY_LETOH32 #ifdef PERL_CORE #define my_letoh32 Perl_my_letoh32 #endif #endif #ifdef PERL_NEED_MY_HTOBE32 #ifdef PERL_CORE #define my_htobe32 Perl_my_htobe32 #endif #endif #ifdef PERL_NEED_MY_BETOH32 #ifdef PERL_CORE #define my_betoh32 Perl_my_betoh32 #endif #endif #ifdef PERL_NEED_MY_HTOLE64 #ifdef PERL_CORE #define my_htole64 Perl_my_htole64 #endif #endif #ifdef PERL_NEED_MY_LETOH64 #ifdef PERL_CORE #define my_letoh64 Perl_my_letoh64 #endif #endif #ifdef PERL_NEED_MY_HTOBE64 #ifdef PERL_CORE #define my_htobe64 Perl_my_htobe64 #endif #endif #ifdef PERL_NEED_MY_BETOH64 #ifdef PERL_CORE #define my_betoh64 Perl_my_betoh64 #endif #endif #ifdef PERL_NEED_MY_HTOLES #ifdef PERL_CORE #define my_htoles Perl_my_htoles #endif #endif #ifdef PERL_NEED_MY_LETOHS #ifdef PERL_CORE #define my_letohs Perl_my_letohs #endif #endif #ifdef PERL_NEED_MY_HTOBES #ifdef PERL_CORE #define my_htobes Perl_my_htobes #endif #endif #ifdef PERL_NEED_MY_BETOHS #ifdef PERL_CORE #define my_betohs Perl_my_betohs #endif #endif #ifdef PERL_NEED_MY_HTOLEI #ifdef PERL_CORE #define my_htolei Perl_my_htolei #endif #endif #ifdef PERL_NEED_MY_LETOHI #ifdef PERL_CORE #define my_letohi Perl_my_letohi #endif #endif #ifdef PERL_NEED_MY_HTOBEI #ifdef PERL_CORE #define my_htobei Perl_my_htobei #endif #endif #ifdef PERL_NEED_MY_BETOHI #ifdef PERL_CORE #define my_betohi Perl_my_betohi #endif #endif #ifdef PERL_NEED_MY_HTOLEL #ifdef PERL_CORE #define my_htolel Perl_my_htolel #endif #endif #ifdef PERL_NEED_MY_LETOHL #ifdef PERL_CORE #define my_letohl Perl_my_letohl #endif #endif #ifdef PERL_NEED_MY_HTOBEL #ifdef PERL_CORE #define my_htobel Perl_my_htobel #endif #endif #ifdef PERL_NEED_MY_BETOHL #ifdef PERL_CORE #define my_betohl Perl_my_betohl #endif #endif #ifdef PERL_CORE #define my_swabn Perl_my_swabn #endif #define gv_fetchpvn_flags Perl_gv_fetchpvn_flags #define gv_fetchsv Perl_gv_fetchsv #ifdef PERL_CORE #define is_gv_magical_sv Perl_is_gv_magical_sv #endif #define stashpv_hvname_match Perl_stashpv_hvname_match #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP #ifdef PERL_CORE #define dump_sv_child Perl_dump_sv_child #endif #endif #ifdef PERL_DONT_CREATE_GVSV #define gv_SVadd Perl_gv_SVadd #endif #ifdef PERL_CORE #define offer_nice_chunk Perl_offer_nice_chunk #endif #ifndef SPRINTF_RETURNS_STRLEN #endif #ifdef PERL_CORE #define my_clearenv Perl_my_clearenv #endif #ifdef PERL_IMPLICIT_CONTEXT #endif #ifndef HAS_STRLCAT #endif #ifndef HAS_STRLCPY #endif #ifdef PERL_MAD #ifdef PERL_CORE #define pad_peg Perl_pad_peg #endif #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define xmldump_attr S_xmldump_attr #endif #endif #ifdef PERL_CORE #define xmldump_indent Perl_xmldump_indent #define xmldump_vindent Perl_xmldump_vindent #define xmldump_all Perl_xmldump_all #define xmldump_packsubs Perl_xmldump_packsubs #define xmldump_sub Perl_xmldump_sub #define xmldump_form Perl_xmldump_form #define xmldump_eval Perl_xmldump_eval #define sv_catxmlsv Perl_sv_catxmlsv #define sv_catxmlpvn Perl_sv_catxmlpvn #define sv_xmlpeek Perl_sv_xmlpeek #define do_pmop_xmldump Perl_do_pmop_xmldump #define pmop_xmldump Perl_pmop_xmldump #define do_op_xmldump Perl_do_op_xmldump #define op_xmldump Perl_op_xmldump #endif #ifdef PERL_CORE #define newTOKEN Perl_newTOKEN #define token_free Perl_token_free #define token_getmad Perl_token_getmad #define op_getmad_weak Perl_op_getmad_weak #define op_getmad Perl_op_getmad #define prepend_madprops Perl_prepend_madprops #define append_madprops Perl_append_madprops #define addmad Perl_addmad #define newMADsv Perl_newMADsv #define newMADPROP Perl_newMADPROP #define mad_free Perl_mad_free #endif # if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define skipspace0 S_skipspace0 #define skipspace1 S_skipspace1 #define skipspace2 S_skipspace2 #define start_force S_start_force #define curmad S_curmad #endif # endif #ifdef PERL_CORE #define madlex Perl_madlex #define madparse Perl_madparse #endif #endif #define ck_anoncode Perl_ck_anoncode #define ck_bitop Perl_ck_bitop #define ck_chdir Perl_ck_chdir #define ck_concat Perl_ck_concat #define ck_defined Perl_ck_defined #define ck_delete Perl_ck_delete #define ck_die Perl_ck_die #define ck_eof Perl_ck_eof #define ck_eval Perl_ck_eval #define ck_exec Perl_ck_exec #define ck_exists Perl_ck_exists #define ck_exit Perl_ck_exit #define ck_ftst Perl_ck_ftst #define ck_fun Perl_ck_fun #define ck_glob Perl_ck_glob #define ck_grep Perl_ck_grep #define ck_index Perl_ck_index #define ck_join Perl_ck_join #define ck_lengthconst Perl_ck_lengthconst #define ck_lfun Perl_ck_lfun #define ck_listiob Perl_ck_listiob #define ck_match Perl_ck_match #define ck_method Perl_ck_method #define ck_null Perl_ck_null #define ck_open Perl_ck_open #define ck_repeat Perl_ck_repeat #define ck_require Perl_ck_require #define ck_return Perl_ck_return #define ck_rfun Perl_ck_rfun #define ck_rvconst Perl_ck_rvconst #define ck_sassign Perl_ck_sassign #define ck_say Perl_ck_say #define ck_select Perl_ck_select #define ck_shift Perl_ck_shift #define ck_smartmatch Perl_ck_smartmatch #define ck_sort Perl_ck_sort #define ck_spair Perl_ck_spair #define ck_split Perl_ck_split #define ck_subr Perl_ck_subr #define ck_substr Perl_ck_substr #define ck_svconst Perl_ck_svconst #define ck_trunc Perl_ck_trunc #define ck_unpack Perl_ck_unpack #define pp_aassign Perl_pp_aassign #define pp_abs Perl_pp_abs #define pp_accept Perl_pp_accept #define pp_add Perl_pp_add #define pp_aelem Perl_pp_aelem #define pp_aelemfast Perl_pp_aelemfast #define pp_alarm Perl_pp_alarm #define pp_and Perl_pp_and #define pp_andassign Perl_pp_andassign #define pp_anoncode Perl_pp_anoncode #define pp_anonhash Perl_pp_anonhash #define pp_anonlist Perl_pp_anonlist #define pp_aslice Perl_pp_aslice #define pp_atan2 Perl_pp_atan2 #define pp_av2arylen Perl_pp_av2arylen #define pp_backtick Perl_pp_backtick #define pp_bind Perl_pp_bind #define pp_binmode Perl_pp_binmode #define pp_bit_and Perl_pp_bit_and #define pp_bit_or Perl_pp_bit_or #define pp_bit_xor Perl_pp_bit_xor #define pp_bless Perl_pp_bless #define pp_break Perl_pp_break #define pp_caller Perl_pp_caller #define pp_chdir Perl_pp_chdir #define pp_chmod Perl_pp_chmod #define pp_chomp Perl_pp_chomp #define pp_chop Perl_pp_chop #define pp_chown Perl_pp_chown #define pp_chr Perl_pp_chr #define pp_chroot Perl_pp_chroot #define pp_close Perl_pp_close #define pp_closedir Perl_pp_closedir #define pp_complement Perl_pp_complement #define pp_concat Perl_pp_concat #define pp_cond_expr Perl_pp_cond_expr #define pp_connect Perl_pp_connect #define pp_const Perl_pp_const #define pp_continue Perl_pp_continue #define pp_cos Perl_pp_cos #define pp_crypt Perl_pp_crypt #define pp_dbmclose Perl_pp_dbmclose #define pp_dbmopen Perl_pp_dbmopen #define pp_dbstate Perl_pp_dbstate #define pp_defined Perl_pp_defined #define pp_delete Perl_pp_delete #define pp_die Perl_pp_die #define pp_divide Perl_pp_divide #define pp_dofile Perl_pp_dofile #define pp_dor Perl_pp_dor #define pp_dorassign Perl_pp_dorassign #define pp_dump Perl_pp_dump #define pp_each Perl_pp_each #define pp_egrent Perl_pp_egrent #define pp_ehostent Perl_pp_ehostent #define pp_enetent Perl_pp_enetent #define pp_enter Perl_pp_enter #define pp_entereval Perl_pp_entereval #define pp_entergiven Perl_pp_entergiven #define pp_enteriter Perl_pp_enteriter #define pp_enterloop Perl_pp_enterloop #define pp_entersub Perl_pp_entersub #define pp_entertry Perl_pp_entertry #define pp_enterwhen Perl_pp_enterwhen #define pp_enterwrite Perl_pp_enterwrite #define pp_eof Perl_pp_eof #define pp_eprotoent Perl_pp_eprotoent #define pp_epwent Perl_pp_epwent #define pp_eq Perl_pp_eq #define pp_eservent Perl_pp_eservent #define pp_exec Perl_pp_exec #define pp_exists Perl_pp_exists #define pp_exit Perl_pp_exit #define pp_exp Perl_pp_exp #define pp_fcntl Perl_pp_fcntl #define pp_fileno Perl_pp_fileno #define pp_flip Perl_pp_flip #define pp_flock Perl_pp_flock #define pp_flop Perl_pp_flop #define pp_fork Perl_pp_fork #define pp_formline Perl_pp_formline #define pp_ftatime Perl_pp_ftatime #define pp_ftbinary Perl_pp_ftbinary #define pp_ftblk Perl_pp_ftblk #define pp_ftchr Perl_pp_ftchr #define pp_ftctime Perl_pp_ftctime #define pp_ftdir Perl_pp_ftdir #define pp_fteexec Perl_pp_fteexec #define pp_fteowned Perl_pp_fteowned #define pp_fteread Perl_pp_fteread #define pp_ftewrite Perl_pp_ftewrite #define pp_ftfile Perl_pp_ftfile #define pp_ftis Perl_pp_ftis #define pp_ftlink Perl_pp_ftlink #define pp_ftmtime Perl_pp_ftmtime #define pp_ftpipe Perl_pp_ftpipe #define pp_ftrexec Perl_pp_ftrexec #define pp_ftrowned Perl_pp_ftrowned #define pp_ftrread Perl_pp_ftrread #define pp_ftrwrite Perl_pp_ftrwrite #define pp_ftsgid Perl_pp_ftsgid #define pp_ftsize Perl_pp_ftsize #define pp_ftsock Perl_pp_ftsock #define pp_ftsuid Perl_pp_ftsuid #define pp_ftsvtx Perl_pp_ftsvtx #define pp_fttext Perl_pp_fttext #define pp_fttty Perl_pp_fttty #define pp_ftzero Perl_pp_ftzero #define pp_ge Perl_pp_ge #define pp_gelem Perl_pp_gelem #define pp_getc Perl_pp_getc #define pp_getlogin Perl_pp_getlogin #define pp_getpeername Perl_pp_getpeername #define pp_getpgrp Perl_pp_getpgrp #define pp_getppid Perl_pp_getppid #define pp_getpriority Perl_pp_getpriority #define pp_getsockname Perl_pp_getsockname #define pp_ggrent Perl_pp_ggrent #define pp_ggrgid Perl_pp_ggrgid #define pp_ggrnam Perl_pp_ggrnam #define pp_ghbyaddr Perl_pp_ghbyaddr #define pp_ghbyname Perl_pp_ghbyname #define pp_ghostent Perl_pp_ghostent #define pp_glob Perl_pp_glob #define pp_gmtime Perl_pp_gmtime #define pp_gnbyaddr Perl_pp_gnbyaddr #define pp_gnbyname Perl_pp_gnbyname #define pp_gnetent Perl_pp_gnetent #define pp_goto Perl_pp_goto #define pp_gpbyname Perl_pp_gpbyname #define pp_gpbynumber Perl_pp_gpbynumber #define pp_gprotoent Perl_pp_gprotoent #define pp_gpwent Perl_pp_gpwent #define pp_gpwnam Perl_pp_gpwnam #define pp_gpwuid Perl_pp_gpwuid #define pp_grepstart Perl_pp_grepstart #define pp_grepwhile Perl_pp_grepwhile #define pp_gsbyname Perl_pp_gsbyname #define pp_gsbyport Perl_pp_gsbyport #define pp_gservent Perl_pp_gservent #define pp_gsockopt Perl_pp_gsockopt #define pp_gt Perl_pp_gt #define pp_gv Perl_pp_gv #define pp_gvsv Perl_pp_gvsv #define pp_helem Perl_pp_helem #define pp_hex Perl_pp_hex #define pp_hslice Perl_pp_hslice #define pp_i_add Perl_pp_i_add #define pp_i_divide Perl_pp_i_divide #define pp_i_eq Perl_pp_i_eq #define pp_i_ge Perl_pp_i_ge #define pp_i_gt Perl_pp_i_gt #define pp_i_le Perl_pp_i_le #define pp_i_lt Perl_pp_i_lt #define pp_i_modulo Perl_pp_i_modulo #define pp_i_multiply Perl_pp_i_multiply #define pp_i_ncmp Perl_pp_i_ncmp #define pp_i_ne Perl_pp_i_ne #define pp_i_negate Perl_pp_i_negate #define pp_i_subtract Perl_pp_i_subtract #define pp_index Perl_pp_index #define pp_int Perl_pp_int #define pp_ioctl Perl_pp_ioctl #define pp_iter Perl_pp_iter #define pp_join Perl_pp_join #define pp_keys Perl_pp_keys #define pp_kill Perl_pp_kill #define pp_last Perl_pp_last #define pp_lc Perl_pp_lc #define pp_lcfirst Perl_pp_lcfirst #define pp_le Perl_pp_le #define pp_leave Perl_pp_leave #define pp_leaveeval Perl_pp_leaveeval #define pp_leavegiven Perl_pp_leavegiven #define pp_leaveloop Perl_pp_leaveloop #define pp_leavesub Perl_pp_leavesub #define pp_leavesublv Perl_pp_leavesublv #define pp_leavetry Perl_pp_leavetry #define pp_leavewhen Perl_pp_leavewhen #define pp_leavewrite Perl_pp_leavewrite #define pp_left_shift Perl_pp_left_shift #define pp_length Perl_pp_length #define pp_lineseq Perl_pp_lineseq #define pp_link Perl_pp_link #define pp_list Perl_pp_list #define pp_listen Perl_pp_listen #define pp_localtime Perl_pp_localtime #define pp_lock Perl_pp_lock #define pp_log Perl_pp_log #define pp_lslice Perl_pp_lslice #define pp_lstat Perl_pp_lstat #define pp_lt Perl_pp_lt #define pp_mapstart Perl_pp_mapstart #define pp_mapwhile Perl_pp_mapwhile #define pp_match Perl_pp_match #define pp_method Perl_pp_method #define pp_method_named Perl_pp_method_named #define pp_mkdir Perl_pp_mkdir #define pp_modulo Perl_pp_modulo #define pp_msgctl Perl_pp_msgctl #define pp_msgget Perl_pp_msgget #define pp_msgrcv Perl_pp_msgrcv #define pp_msgsnd Perl_pp_msgsnd #define pp_multiply Perl_pp_multiply #define pp_ncmp Perl_pp_ncmp #define pp_ne Perl_pp_ne #define pp_negate Perl_pp_negate #define pp_next Perl_pp_next #define pp_nextstate Perl_pp_nextstate #define pp_not Perl_pp_not #define pp_null Perl_pp_null #define pp_oct Perl_pp_oct #define pp_open Perl_pp_open #define pp_open_dir Perl_pp_open_dir #define pp_or Perl_pp_or #define pp_orassign Perl_pp_orassign #define pp_ord Perl_pp_ord #define pp_pack Perl_pp_pack #define pp_padany Perl_pp_padany #define pp_padav Perl_pp_padav #define pp_padhv Perl_pp_padhv #define pp_padsv Perl_pp_padsv #define pp_pipe_op Perl_pp_pipe_op #define pp_pop Perl_pp_pop #define pp_pos Perl_pp_pos #define pp_postdec Perl_pp_postdec #define pp_postinc Perl_pp_postinc #define pp_pow Perl_pp_pow #define pp_predec Perl_pp_predec #define pp_preinc Perl_pp_preinc #define pp_print Perl_pp_print #define pp_prototype Perl_pp_prototype #define pp_prtf Perl_pp_prtf #define pp_push Perl_pp_push #define pp_pushmark Perl_pp_pushmark #define pp_pushre Perl_pp_pushre #define pp_qr Perl_pp_qr #define pp_quotemeta Perl_pp_quotemeta #define pp_rand Perl_pp_rand #define pp_range Perl_pp_range #define pp_rcatline Perl_pp_rcatline #define pp_read Perl_pp_read #define pp_readdir Perl_pp_readdir #define pp_readline Perl_pp_readline #define pp_readlink Perl_pp_readlink #define pp_recv Perl_pp_recv #define pp_redo Perl_pp_redo #define pp_ref Perl_pp_ref #define pp_refgen Perl_pp_refgen #define pp_regcmaybe Perl_pp_regcmaybe #define pp_regcomp Perl_pp_regcomp #define pp_regcreset Perl_pp_regcreset #define pp_rename Perl_pp_rename #define pp_repeat Perl_pp_repeat #define pp_require Perl_pp_require #define pp_reset Perl_pp_reset #define pp_return Perl_pp_return #define pp_reverse Perl_pp_reverse #define pp_rewinddir Perl_pp_rewinddir #define pp_right_shift Perl_pp_right_shift #define pp_rindex Perl_pp_rindex #define pp_rmdir Perl_pp_rmdir #define pp_rv2av Perl_pp_rv2av #define pp_rv2cv Perl_pp_rv2cv #define pp_rv2gv Perl_pp_rv2gv #define pp_rv2hv Perl_pp_rv2hv #define pp_rv2sv Perl_pp_rv2sv #define pp_sassign Perl_pp_sassign #define pp_say Perl_pp_say #define pp_scalar Perl_pp_scalar #define pp_schomp Perl_pp_schomp #define pp_schop Perl_pp_schop #define pp_scmp Perl_pp_scmp #define pp_scope Perl_pp_scope #define pp_seek Perl_pp_seek #define pp_seekdir Perl_pp_seekdir #define pp_select Perl_pp_select #define pp_semctl Perl_pp_semctl #define pp_semget Perl_pp_semget #define pp_semop Perl_pp_semop #define pp_send Perl_pp_send #define pp_seq Perl_pp_seq #define pp_setpgrp Perl_pp_setpgrp #define pp_setpriority Perl_pp_setpriority #define pp_setstate Perl_pp_setstate #define pp_sge Perl_pp_sge #define pp_sgrent Perl_pp_sgrent #define pp_sgt Perl_pp_sgt #define pp_shift Perl_pp_shift #define pp_shmctl Perl_pp_shmctl #define pp_shmget Perl_pp_shmget #define pp_shmread Perl_pp_shmread #define pp_shmwrite Perl_pp_shmwrite #define pp_shostent Perl_pp_shostent #define pp_shutdown Perl_pp_shutdown #define pp_sin Perl_pp_sin #define pp_sle Perl_pp_sle #define pp_sleep Perl_pp_sleep #define pp_slt Perl_pp_slt #define pp_smartmatch Perl_pp_smartmatch #define pp_sne Perl_pp_sne #define pp_snetent Perl_pp_snetent #define pp_socket Perl_pp_socket #define pp_sockpair Perl_pp_sockpair #define pp_sort Perl_pp_sort #define pp_splice Perl_pp_splice #define pp_split Perl_pp_split #define pp_sprintf Perl_pp_sprintf #define pp_sprotoent Perl_pp_sprotoent #define pp_spwent Perl_pp_spwent #define pp_sqrt Perl_pp_sqrt #define pp_srand Perl_pp_srand #define pp_srefgen Perl_pp_srefgen #define pp_sselect Perl_pp_sselect #define pp_sservent Perl_pp_sservent #define pp_ssockopt Perl_pp_ssockopt #define pp_stat Perl_pp_stat #define pp_stringify Perl_pp_stringify #define pp_stub Perl_pp_stub #define pp_study Perl_pp_study #define pp_subst Perl_pp_subst #define pp_substcont Perl_pp_substcont #define pp_substr Perl_pp_substr #define pp_subtract Perl_pp_subtract #define pp_symlink Perl_pp_symlink #define pp_syscall Perl_pp_syscall #define pp_sysopen Perl_pp_sysopen #define pp_sysread Perl_pp_sysread #define pp_sysseek Perl_pp_sysseek #define pp_system Perl_pp_system #define pp_syswrite Perl_pp_syswrite #define pp_tell Perl_pp_tell #define pp_telldir Perl_pp_telldir #define pp_threadsv Perl_pp_threadsv #define pp_tie Perl_pp_tie #define pp_tied Perl_pp_tied #define pp_time Perl_pp_time #define pp_tms Perl_pp_tms #define pp_trans Perl_pp_trans #define pp_truncate Perl_pp_truncate #define pp_uc Perl_pp_uc #define pp_ucfirst Perl_pp_ucfirst #define pp_umask Perl_pp_umask #define pp_undef Perl_pp_undef #define pp_unlink Perl_pp_unlink #define pp_unpack Perl_pp_unpack #define pp_unshift Perl_pp_unshift #define pp_unstack Perl_pp_unstack #define pp_untie Perl_pp_untie #define pp_utime Perl_pp_utime #define pp_values Perl_pp_values #define pp_vec Perl_pp_vec #define pp_wait Perl_pp_wait #define pp_waitpid Perl_pp_waitpid #define pp_wantarray Perl_pp_wantarray #define pp_warn Perl_pp_warn #define pp_xor Perl_pp_xor #else /* PERL_IMPLICIT_CONTEXT */ #if defined(PERL_IMPLICIT_SYS) #endif #define doing_taint Perl_doing_taint #if defined(USE_ITHREADS) # if defined(PERL_IMPLICIT_SYS) # endif #endif #if defined(MYMALLOC) #ifdef PERL_CORE #define malloced_size Perl_malloced_size #endif #endif #define get_context Perl_get_context #define set_context Perl_set_context #define amagic_call(a,b,c,d) Perl_amagic_call(aTHX_ a,b,c,d) #define Gv_AMupdate(a) Perl_Gv_AMupdate(aTHX_ a) #define gv_handler(a,b) Perl_gv_handler(aTHX_ a,b) #ifdef PERL_CORE #define append_elem(a,b,c) Perl_append_elem(aTHX_ a,b,c) #define append_list(a,b,c) Perl_append_list(aTHX_ a,b,c) #define apply(a,b,c) Perl_apply(aTHX_ a,b,c) #endif #define apply_attrs_string(a,b,c,d) Perl_apply_attrs_string(aTHX_ a,b,c,d) #define av_clear(a) Perl_av_clear(aTHX_ a) #define av_delete(a,b,c) Perl_av_delete(aTHX_ a,b,c) #define av_exists(a,b) Perl_av_exists(aTHX_ a,b) #define av_extend(a,b) Perl_av_extend(aTHX_ a,b) #ifdef PERL_CORE #define av_fake(a,b) Perl_av_fake(aTHX_ a,b) #endif #define av_fetch(a,b,c) Perl_av_fetch(aTHX_ a,b,c) #define av_fill(a,b) Perl_av_fill(aTHX_ a,b) #define av_len(a) Perl_av_len(aTHX_ a) #define av_make(a,b) Perl_av_make(aTHX_ a,b) #define av_pop(a) Perl_av_pop(aTHX_ a) #define av_push(a,b) Perl_av_push(aTHX_ a,b) #ifdef PERL_CORE #define av_reify(a) Perl_av_reify(aTHX_ a) #endif #define av_shift(a) Perl_av_shift(aTHX_ a) #define av_store(a,b,c) Perl_av_store(aTHX_ a,b,c) #define av_undef(a) Perl_av_undef(aTHX_ a) #define av_unshift(a,b) Perl_av_unshift(aTHX_ a,b) #ifdef PERL_CORE #define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c) #define block_end(a,b) Perl_block_end(aTHX_ a,b) #endif #define block_gimme() Perl_block_gimme(aTHX) #ifdef PERL_CORE #define block_start(a) Perl_block_start(aTHX_ a) #define boot_core_UNIVERSAL() Perl_boot_core_UNIVERSAL(aTHX) #define boot_core_PerlIO() Perl_boot_core_PerlIO(aTHX) #endif #define call_list(a,b) Perl_call_list(aTHX_ a,b) #ifdef PERL_CORE #define cando(a,b,c) Perl_cando(aTHX_ a,b,c) #endif #define cast_ulong(a) Perl_cast_ulong(aTHX_ a) #define cast_i32(a) Perl_cast_i32(aTHX_ a) #define cast_iv(a) Perl_cast_iv(aTHX_ a) #define cast_uv(a) Perl_cast_uv(aTHX_ a) #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) #define my_chsize(a,b) Perl_my_chsize(aTHX_ a,b) #endif #ifdef PERL_CORE #define convert(a,b,c) Perl_convert(aTHX_ a,b,c) #define create_eval_scope(a) Perl_create_eval_scope(aTHX_ a) #endif #define vcroak(a,b) Perl_vcroak(aTHX_ a,b) #if defined(PERL_IMPLICIT_CONTEXT) #endif #ifdef PERL_CORE #define cv_ckproto(a,b,c) Perl_cv_ckproto(aTHX_ a,b,c) #define cv_ckproto_len(a,b,c,d) Perl_cv_ckproto_len(aTHX_ a,b,c,d) #define cv_clone(a) Perl_cv_clone(aTHX_ a) #endif #define gv_const_sv(a) Perl_gv_const_sv(aTHX_ a) #define cv_const_sv(a) Perl_cv_const_sv(aTHX_ a) #ifdef PERL_CORE #define op_const_sv(a,b) Perl_op_const_sv(aTHX_ a,b) #endif #define cv_undef(a) Perl_cv_undef(aTHX_ a) #define cx_dump(a) Perl_cx_dump(aTHX_ a) #define filter_add(a,b) Perl_filter_add(aTHX_ a,b) #define filter_del(a) Perl_filter_del(aTHX_ a) #define filter_read(a,b,c) Perl_filter_read(aTHX_ a,b,c) #define get_op_descs() Perl_get_op_descs(aTHX) #define get_op_names() Perl_get_op_names(aTHX) #ifdef PERL_CORE #define get_no_modify() Perl_get_no_modify(aTHX) #define get_opargs() Perl_get_opargs(aTHX) #endif #define get_ppaddr() Perl_get_ppaddr(aTHX) #if defined(PERL_CORE) || defined(PERL_EXT) #define cxinc() Perl_cxinc(aTHX) #endif #define vdeb(a,b) Perl_vdeb(aTHX_ a,b) #define debprofdump() Perl_debprofdump(aTHX) #define debop(a) Perl_debop(aTHX_ a) #define debstack() Perl_debstack(aTHX) #define debstackptrs() Perl_debstackptrs(aTHX) #define delimcpy(a,b,c,d,e,f) Perl_delimcpy(aTHX_ a,b,c,d,e,f) #ifdef PERL_CORE #define delete_eval_scope() Perl_delete_eval_scope(aTHX) #define deprecate(a) Perl_deprecate(aTHX_ a) #define deprecate_old(a) Perl_deprecate_old(aTHX_ a) #endif #ifdef PERL_CORE #define vdie(a,b) Perl_vdie(aTHX_ a,b) #define die_where(a,b) Perl_die_where(aTHX_ a,b) #endif #define dounwind(a) Perl_dounwind(aTHX_ a) #ifdef PERL_CORE #define do_aexec5(a,b,c,d,e) Perl_do_aexec5(aTHX_ a,b,c,d,e) #endif #define do_binmode(a,b,c) Perl_do_binmode(aTHX_ a,b,c) #ifdef PERL_CORE #define do_chop(a,b) Perl_do_chop(aTHX_ a,b) #endif #define do_close(a,b) Perl_do_close(aTHX_ a,b) #ifdef PERL_CORE #define do_eof(a) Perl_do_eof(aTHX_ a) #endif #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION #ifdef PERL_CORE #endif #else #ifdef PERL_CORE #define do_exec(a) Perl_do_exec(aTHX_ a) #endif #endif #if defined(WIN32) || defined(__SYMBIAN32__) #define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c) #define do_spawn(a) Perl_do_spawn(aTHX_ a) #define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a) #endif #if !defined(WIN32) #ifdef PERL_CORE #define do_exec3(a,b,c) Perl_do_exec3(aTHX_ a,b,c) #endif #endif #ifdef PERL_CORE #define do_execfree() Perl_do_execfree(aTHX) #endif #ifdef PERL_IN_DOIO_C #ifdef PERL_CORE #define exec_failed(a,b,c) S_exec_failed(aTHX_ a,b,c) #endif #endif #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) #ifdef PERL_CORE #define do_ipcctl(a,b,c) Perl_do_ipcctl(aTHX_ a,b,c) #define do_ipcget(a,b,c) Perl_do_ipcget(aTHX_ a,b,c) #define do_msgrcv(a,b) Perl_do_msgrcv(aTHX_ a,b) #define do_msgsnd(a,b) Perl_do_msgsnd(aTHX_ a,b) #define do_semop(a,b) Perl_do_semop(aTHX_ a,b) #define do_shmio(a,b,c) Perl_do_shmio(aTHX_ a,b,c) #endif #endif #define do_join(a,b,c,d) Perl_do_join(aTHX_ a,b,c,d) #ifdef PERL_CORE #define do_kv() Perl_do_kv(aTHX) #endif #define do_open9(a,b,c,d,e,f,g,h,i) Perl_do_open9(aTHX_ a,b,c,d,e,f,g,h,i) #define do_openn(a,b,c,d,e,f,g,h,i) Perl_do_openn(aTHX_ a,b,c,d,e,f,g,h,i) #ifdef PERL_CORE #define do_pipe(a,b,c) Perl_do_pipe(aTHX_ a,b,c) #define do_print(a,b) Perl_do_print(aTHX_ a,b) #define do_readline() Perl_do_readline(aTHX) #define do_chomp(a) Perl_do_chomp(aTHX_ a) #define do_seek(a,b,c) Perl_do_seek(aTHX_ a,b,c) #endif #define do_sprintf(a,b,c) Perl_do_sprintf(aTHX_ a,b,c) #ifdef PERL_CORE #define do_sysseek(a,b,c) Perl_do_sysseek(aTHX_ a,b,c) #define do_tell(a) Perl_do_tell(aTHX_ a) #define do_trans(a) Perl_do_trans(aTHX_ a) #define do_vecget(a,b,c) Perl_do_vecget(aTHX_ a,b,c) #define do_vecset(a) Perl_do_vecset(aTHX_ a) #define do_vop(a,b,c,d) Perl_do_vop(aTHX_ a,b,c,d) #define dofile(a,b) Perl_dofile(aTHX_ a,b) #endif #define dowantarray() Perl_dowantarray(aTHX) #define dump_all() Perl_dump_all(aTHX) #define dump_eval() Perl_dump_eval(aTHX) #if defined(DUMP_FDS) #define dump_fds(a) Perl_dump_fds(aTHX_ a) #endif #define dump_form(a) Perl_dump_form(aTHX_ a) #define gv_dump(a) Perl_gv_dump(aTHX_ a) #define op_dump(a) Perl_op_dump(aTHX_ a) #define pmop_dump(a) Perl_pmop_dump(aTHX_ a) #define dump_packsubs(a) Perl_dump_packsubs(aTHX_ a) #define dump_sub(a) Perl_dump_sub(aTHX_ a) #define fbm_compile(a,b) Perl_fbm_compile(aTHX_ a,b) #define fbm_instr(a,b,c,d) Perl_fbm_instr(aTHX_ a,b,c,d) #ifdef PERL_CORE #define find_script(a,b,c,d) Perl_find_script(aTHX_ a,b,c,d) #define force_list(a) Perl_force_list(aTHX_ a) #define fold_constants(a) Perl_fold_constants(aTHX_ a) #endif #define vform(a,b) Perl_vform(aTHX_ a,b) #define free_tmps() Perl_free_tmps(aTHX) #ifdef PERL_CORE #define gen_constant_list(a) Perl_gen_constant_list(aTHX_ a) #endif #if !defined(HAS_GETENV_LEN) #ifdef PERL_CORE #define getenv_len(a,b) Perl_getenv_len(aTHX_ a,b) #endif #endif #define gp_free(a) Perl_gp_free(aTHX_ a) #define gp_ref(a) Perl_gp_ref(aTHX_ a) #define gv_AVadd(a) Perl_gv_AVadd(aTHX_ a) #define gv_HVadd(a) Perl_gv_HVadd(aTHX_ a) #define gv_IOadd(a) Perl_gv_IOadd(aTHX_ a) #define gv_autoload4(a,b,c,d) Perl_gv_autoload4(aTHX_ a,b,c,d) #define gv_check(a) Perl_gv_check(aTHX_ a) #define gv_efullname(a,b) Perl_gv_efullname(aTHX_ a,b) #define gv_efullname4(a,b,c,d) Perl_gv_efullname4(aTHX_ a,b,c,d) #define gv_fetchfile(a) Perl_gv_fetchfile(aTHX_ a) #define gv_fetchmeth(a,b,c,d) Perl_gv_fetchmeth(aTHX_ a,b,c,d) #define gv_fetchmeth_autoload(a,b,c,d) Perl_gv_fetchmeth_autoload(aTHX_ a,b,c,d) #define gv_fetchmethod_autoload(a,b,c) Perl_gv_fetchmethod_autoload(aTHX_ a,b,c) #define gv_fetchpv(a,b,c) Perl_gv_fetchpv(aTHX_ a,b,c) #define gv_fullname(a,b) Perl_gv_fullname(aTHX_ a,b) #define gv_fullname4(a,b,c,d) Perl_gv_fullname4(aTHX_ a,b,c,d) #ifdef PERL_CORE #endif #define gv_init(a,b,c,d,e) Perl_gv_init(aTHX_ a,b,c,d,e) #define gv_name_set(a,b,c,d) Perl_gv_name_set(aTHX_ a,b,c,d) #define gv_stashpv(a,b) Perl_gv_stashpv(aTHX_ a,b) #define gv_stashpvn(a,b,c) Perl_gv_stashpvn(aTHX_ a,b,c) #define gv_stashsv(a,b) Perl_gv_stashsv(aTHX_ a,b) #define hv_clear(a) Perl_hv_clear(aTHX_ a) #ifdef PERL_CORE #endif #define hv_delayfree_ent(a,b) Perl_hv_delayfree_ent(aTHX_ a,b) #define hv_delete(a,b,c,d) Perl_hv_delete(aTHX_ a,b,c,d) #define hv_delete_ent(a,b,c,d) Perl_hv_delete_ent(aTHX_ a,b,c,d) #define hv_exists(a,b,c) Perl_hv_exists(aTHX_ a,b,c) #define hv_exists_ent(a,b,c) Perl_hv_exists_ent(aTHX_ a,b,c) #define hv_fetch(a,b,c,d) Perl_hv_fetch(aTHX_ a,b,c,d) #define hv_fetch_ent(a,b,c,d) Perl_hv_fetch_ent(aTHX_ a,b,c,d) #define hv_free_ent(a,b) Perl_hv_free_ent(aTHX_ a,b) #define hv_iterinit(a) Perl_hv_iterinit(aTHX_ a) #define hv_iterkey(a,b) Perl_hv_iterkey(aTHX_ a,b) #define hv_iterkeysv(a) Perl_hv_iterkeysv(aTHX_ a) #define hv_iternextsv(a,b,c) Perl_hv_iternextsv(aTHX_ a,b,c) #define hv_iternext_flags(a,b) Perl_hv_iternext_flags(aTHX_ a,b) #define hv_iterval(a,b) Perl_hv_iterval(aTHX_ a,b) #define hv_ksplit(a,b) Perl_hv_ksplit(aTHX_ a,b) #ifdef PERL_CORE #endif #if defined(PERL_CORE) || defined(PERL_EXT) #endif #ifdef PERL_CORE #endif #if defined(PERL_CORE) || defined(PERL_EXT) #endif #define hv_store(a,b,c,d,e) Perl_hv_store(aTHX_ a,b,c,d,e) #define hv_store_ent(a,b,c,d) Perl_hv_store_ent(aTHX_ a,b,c,d) #define hv_store_flags(a,b,c,d,e,f) Perl_hv_store_flags(aTHX_ a,b,c,d,e,f) #define hv_undef(a) Perl_hv_undef(aTHX_ a) #define ibcmp(a,b,c) Perl_ibcmp(aTHX_ a,b,c) #define ibcmp_locale(a,b,c) Perl_ibcmp_locale(aTHX_ a,b,c) #define ibcmp_utf8(a,b,c,d,e,f,g,h) Perl_ibcmp_utf8(aTHX_ a,b,c,d,e,f,g,h) #ifdef PERL_CORE #define ingroup(a,b) Perl_ingroup(aTHX_ a,b) #define init_argv_symbols(a,b) Perl_init_argv_symbols(aTHX_ a,b) #define init_debugger() Perl_init_debugger(aTHX) #endif #define init_stacks() Perl_init_stacks(aTHX) #define init_tm(a) Perl_init_tm(aTHX_ a) #ifdef PERL_CORE #define intro_my() Perl_intro_my(aTHX) #endif #define instr(a,b) Perl_instr(aTHX_ a,b) #ifdef PERL_CORE #define io_close(a,b) Perl_io_close(aTHX_ a,b) #define invert(a) Perl_invert(aTHX_ a) #define is_gv_magical(a,b,c) Perl_is_gv_magical(aTHX_ a,b,c) #endif #define is_lvalue_sub() Perl_is_lvalue_sub(aTHX) #define to_uni_upper_lc(a) Perl_to_uni_upper_lc(aTHX_ a) #define to_uni_title_lc(a) Perl_to_uni_title_lc(aTHX_ a) #define to_uni_lower_lc(a) Perl_to_uni_lower_lc(aTHX_ a) #define is_uni_alnum(a) Perl_is_uni_alnum(aTHX_ a) #define is_uni_alnumc(a) Perl_is_uni_alnumc(aTHX_ a) #define is_uni_idfirst(a) Perl_is_uni_idfirst(aTHX_ a) #define is_uni_alpha(a) Perl_is_uni_alpha(aTHX_ a) #define is_uni_ascii(a) Perl_is_uni_ascii(aTHX_ a) #define is_uni_space(a) Perl_is_uni_space(aTHX_ a) #define is_uni_cntrl(a) Perl_is_uni_cntrl(aTHX_ a) #define is_uni_graph(a) Perl_is_uni_graph(aTHX_ a) #define is_uni_digit(a) Perl_is_uni_digit(aTHX_ a) #define is_uni_upper(a) Perl_is_uni_upper(aTHX_ a) #define is_uni_lower(a) Perl_is_uni_lower(aTHX_ a) #define is_uni_print(a) Perl_is_uni_print(aTHX_ a) #define is_uni_punct(a) Perl_is_uni_punct(aTHX_ a) #define is_uni_xdigit(a) Perl_is_uni_xdigit(aTHX_ a) #define to_uni_upper(a,b,c) Perl_to_uni_upper(aTHX_ a,b,c) #define to_uni_title(a,b,c) Perl_to_uni_title(aTHX_ a,b,c) #define to_uni_lower(a,b,c) Perl_to_uni_lower(aTHX_ a,b,c) #define to_uni_fold(a,b,c) Perl_to_uni_fold(aTHX_ a,b,c) #define is_uni_alnum_lc(a) Perl_is_uni_alnum_lc(aTHX_ a) #define is_uni_alnumc_lc(a) Perl_is_uni_alnumc_lc(aTHX_ a) #define is_uni_idfirst_lc(a) Perl_is_uni_idfirst_lc(aTHX_ a) #define is_uni_alpha_lc(a) Perl_is_uni_alpha_lc(aTHX_ a) #define is_uni_ascii_lc(a) Perl_is_uni_ascii_lc(aTHX_ a) #define is_uni_space_lc(a) Perl_is_uni_space_lc(aTHX_ a) #define is_uni_cntrl_lc(a) Perl_is_uni_cntrl_lc(aTHX_ a) #define is_uni_graph_lc(a) Perl_is_uni_graph_lc(aTHX_ a) #define is_uni_digit_lc(a) Perl_is_uni_digit_lc(aTHX_ a) #define is_uni_upper_lc(a) Perl_is_uni_upper_lc(aTHX_ a) #define is_uni_lower_lc(a) Perl_is_uni_lower_lc(aTHX_ a) #define is_uni_print_lc(a) Perl_is_uni_print_lc(aTHX_ a) #define is_uni_punct_lc(a) Perl_is_uni_punct_lc(aTHX_ a) #define is_uni_xdigit_lc(a) Perl_is_uni_xdigit_lc(aTHX_ a) #define is_utf8_char(a) Perl_is_utf8_char(aTHX_ a) #define is_utf8_string(a,b) Perl_is_utf8_string(aTHX_ a,b) #define is_utf8_string_loclen(a,b,c,d) Perl_is_utf8_string_loclen(aTHX_ a,b,c,d) #define is_utf8_alnum(a) Perl_is_utf8_alnum(aTHX_ a) #define is_utf8_alnumc(a) Perl_is_utf8_alnumc(aTHX_ a) #define is_utf8_idfirst(a) Perl_is_utf8_idfirst(aTHX_ a) #define is_utf8_idcont(a) Perl_is_utf8_idcont(aTHX_ a) #define is_utf8_alpha(a) Perl_is_utf8_alpha(aTHX_ a) #define is_utf8_ascii(a) Perl_is_utf8_ascii(aTHX_ a) #define is_utf8_space(a) Perl_is_utf8_space(aTHX_ a) #define is_utf8_cntrl(a) Perl_is_utf8_cntrl(aTHX_ a) #define is_utf8_digit(a) Perl_is_utf8_digit(aTHX_ a) #define is_utf8_graph(a) Perl_is_utf8_graph(aTHX_ a) #define is_utf8_upper(a) Perl_is_utf8_upper(aTHX_ a) #define is_utf8_lower(a) Perl_is_utf8_lower(aTHX_ a) #define is_utf8_print(a) Perl_is_utf8_print(aTHX_ a) #define is_utf8_punct(a) Perl_is_utf8_punct(aTHX_ a) #define is_utf8_xdigit(a) Perl_is_utf8_xdigit(aTHX_ a) #define is_utf8_mark(a) Perl_is_utf8_mark(aTHX_ a) #ifdef PERL_CORE #define jmaybe(a) Perl_jmaybe(aTHX_ a) #define keyword(a,b,c) Perl_keyword(aTHX_ a,b,c) #endif #define leave_scope(a) Perl_leave_scope(aTHX_ a) #ifdef PERL_CORE #define lex_end() Perl_lex_end(aTHX) #define lex_start(a) Perl_lex_start(aTHX_ a) #endif #define op_null(a) Perl_op_null(aTHX_ a) #ifdef PERL_CORE #define op_clear(a) Perl_op_clear(aTHX_ a) #endif #define op_refcnt_lock() Perl_op_refcnt_lock(aTHX) #define op_refcnt_unlock() Perl_op_refcnt_unlock(aTHX) #ifdef PERL_CORE #define linklist(a) Perl_linklist(aTHX_ a) #define list(a) Perl_list(aTHX_ a) #define listkids(a) Perl_listkids(aTHX_ a) #endif #define vload_module(a,b,c,d) Perl_vload_module(aTHX_ a,b,c,d) #ifdef PERL_CORE #define localize(a,b) Perl_localize(aTHX_ a,b) #endif #define looks_like_number(a) Perl_looks_like_number(aTHX_ a) #define grok_bin(a,b,c,d) Perl_grok_bin(aTHX_ a,b,c,d) #define grok_hex(a,b,c,d) Perl_grok_hex(aTHX_ a,b,c,d) #define grok_number(a,b,c) Perl_grok_number(aTHX_ a,b,c) #define grok_numeric_radix(a,b) Perl_grok_numeric_radix(aTHX_ a,b) #define grok_oct(a,b,c,d) Perl_grok_oct(aTHX_ a,b,c,d) #ifdef PERL_CORE #define magic_clearenv(a,b) Perl_magic_clearenv(aTHX_ a,b) #define magic_clear_all_env(a,b) Perl_magic_clear_all_env(aTHX_ a,b) #define magic_clearhint(a,b) Perl_magic_clearhint(aTHX_ a,b) #define magic_clearpack(a,b) Perl_magic_clearpack(aTHX_ a,b) #define magic_clearsig(a,b) Perl_magic_clearsig(aTHX_ a,b) #define magic_existspack(a,b) Perl_magic_existspack(aTHX_ a,b) #define magic_freeregexp(a,b) Perl_magic_freeregexp(aTHX_ a,b) #define magic_freeovrld(a,b) Perl_magic_freeovrld(aTHX_ a,b) #define magic_get(a,b) Perl_magic_get(aTHX_ a,b) #define magic_getarylen(a,b) Perl_magic_getarylen(aTHX_ a,b) #define magic_getdefelem(a,b) Perl_magic_getdefelem(aTHX_ a,b) #define magic_getnkeys(a,b) Perl_magic_getnkeys(aTHX_ a,b) #define magic_getpack(a,b) Perl_magic_getpack(aTHX_ a,b) #define magic_getpos(a,b) Perl_magic_getpos(aTHX_ a,b) #define magic_getsig(a,b) Perl_magic_getsig(aTHX_ a,b) #define magic_getsubstr(a,b) Perl_magic_getsubstr(aTHX_ a,b) #define magic_gettaint(a,b) Perl_magic_gettaint(aTHX_ a,b) #define magic_getuvar(a,b) Perl_magic_getuvar(aTHX_ a,b) #define magic_getvec(a,b) Perl_magic_getvec(aTHX_ a,b) #define magic_len(a,b) Perl_magic_len(aTHX_ a,b) #define magic_nextpack(a,b,c) Perl_magic_nextpack(aTHX_ a,b,c) #define magic_regdata_cnt(a,b) Perl_magic_regdata_cnt(aTHX_ a,b) #define magic_regdatum_get(a,b) Perl_magic_regdatum_get(aTHX_ a,b) #define magic_regdatum_set(a,b) Perl_magic_regdatum_set(aTHX_ a,b) #define magic_set(a,b) Perl_magic_set(aTHX_ a,b) #define magic_setamagic(a,b) Perl_magic_setamagic(aTHX_ a,b) #define magic_setarylen(a,b) Perl_magic_setarylen(aTHX_ a,b) #define magic_freearylen_p(a,b) Perl_magic_freearylen_p(aTHX_ a,b) #define magic_setbm(a,b) Perl_magic_setbm(aTHX_ a,b) #define magic_setdbline(a,b) Perl_magic_setdbline(aTHX_ a,b) #define magic_setdefelem(a,b) Perl_magic_setdefelem(aTHX_ a,b) #define magic_setenv(a,b) Perl_magic_setenv(aTHX_ a,b) #define magic_setfm(a,b) Perl_magic_setfm(aTHX_ a,b) #define magic_sethint(a,b) Perl_magic_sethint(aTHX_ a,b) #define magic_setisa(a,b) Perl_magic_setisa(aTHX_ a,b) #define magic_setglob(a,b) Perl_magic_setglob(aTHX_ a,b) #define magic_setmglob(a,b) Perl_magic_setmglob(aTHX_ a,b) #define magic_setnkeys(a,b) Perl_magic_setnkeys(aTHX_ a,b) #define magic_setpack(a,b) Perl_magic_setpack(aTHX_ a,b) #define magic_setpos(a,b) Perl_magic_setpos(aTHX_ a,b) #define magic_setregexp(a,b) Perl_magic_setregexp(aTHX_ a,b) #define magic_setsig(a,b) Perl_magic_setsig(aTHX_ a,b) #define magic_setsubstr(a,b) Perl_magic_setsubstr(aTHX_ a,b) #define magic_settaint(a,b) Perl_magic_settaint(aTHX_ a,b) #define magic_setuvar(a,b) Perl_magic_setuvar(aTHX_ a,b) #define magic_setvec(a,b) Perl_magic_setvec(aTHX_ a,b) #define magic_setutf8(a,b) Perl_magic_setutf8(aTHX_ a,b) #define magic_set_all_env(a,b) Perl_magic_set_all_env(aTHX_ a,b) #define magic_sizepack(a,b) Perl_magic_sizepack(aTHX_ a,b) #define magic_wipepack(a,b) Perl_magic_wipepack(aTHX_ a,b) #define magicname(a,b,c) Perl_magicname(aTHX_ a,b,c) #endif #define markstack_grow() Perl_markstack_grow(aTHX) #if defined(USE_LOCALE_COLLATE) #ifdef PERL_CORE #define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b) #define mem_collxfrm(a,b,c) Perl_mem_collxfrm(aTHX_ a,b,c) #endif #endif #define vmess(a,b) Perl_vmess(aTHX_ a,b) #ifdef PERL_CORE #define qerror(a) Perl_qerror(aTHX_ a) #endif #define sortsv(a,b,c) Perl_sortsv(aTHX_ a,b,c) #define sortsv_flags(a,b,c,d) Perl_sortsv_flags(aTHX_ a,b,c,d) #define mg_clear(a) Perl_mg_clear(aTHX_ a) #define mg_copy(a,b,c,d) Perl_mg_copy(aTHX_ a,b,c,d) #ifdef PERL_CORE #define mg_localize(a,b) Perl_mg_localize(aTHX_ a,b) #endif #define mg_find(a,b) Perl_mg_find(aTHX_ a,b) #define mg_free(a) Perl_mg_free(aTHX_ a) #define mg_get(a) Perl_mg_get(aTHX_ a) #define mg_length(a) Perl_mg_length(aTHX_ a) #define mg_magical(a) Perl_mg_magical(aTHX_ a) #define mg_set(a) Perl_mg_set(aTHX_ a) #define mg_size(a) Perl_mg_size(aTHX_ a) #define mini_mktime(a) Perl_mini_mktime(aTHX_ a) #ifdef PERL_CORE #define mod(a,b) Perl_mod(aTHX_ a,b) #define mode_from_discipline(a) Perl_mode_from_discipline(aTHX_ a) #endif #define moreswitches(a) Perl_moreswitches(aTHX_ a) #ifdef PERL_CORE #define my(a) Perl_my(aTHX_ a) #endif #define my_atof(a) Perl_my_atof(aTHX_ a) #if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) #define my_bcopy Perl_my_bcopy #endif #if !defined(HAS_BZERO) && !defined(HAS_MEMSET) #define my_bzero Perl_my_bzero #endif #define my_exit(a) Perl_my_exit(aTHX_ a) #define my_failure_exit() Perl_my_failure_exit(aTHX) #define my_fflush_all() Perl_my_fflush_all(aTHX) #define my_fork Perl_my_fork #define atfork_lock Perl_atfork_lock #define atfork_unlock Perl_atfork_unlock #define my_lstat() Perl_my_lstat(aTHX) #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) #define my_memcmp Perl_my_memcmp #endif #if !defined(HAS_MEMSET) #define my_memset Perl_my_memset #endif #define my_pclose(a) Perl_my_pclose(aTHX_ a) #define my_popen(a,b) Perl_my_popen(aTHX_ a,b) #define my_popen_list(a,b,c) Perl_my_popen_list(aTHX_ a,b,c) #define my_setenv(a,b) Perl_my_setenv(aTHX_ a,b) #define my_stat() Perl_my_stat(aTHX) #define my_strftime(a,b,c,d,e,f,g,h,i,j) Perl_my_strftime(aTHX_ a,b,c,d,e,f,g,h,i,j) #if defined(MYSWAP) #define my_swap(a) Perl_my_swap(aTHX_ a) #define my_htonl(a) Perl_my_htonl(aTHX_ a) #define my_ntohl(a) Perl_my_ntohl(aTHX_ a) #endif #ifdef PERL_CORE #define my_unexec() Perl_my_unexec(aTHX) #endif #define newANONLIST(a) Perl_newANONLIST(aTHX_ a) #define newANONHASH(a) Perl_newANONHASH(aTHX_ a) #define newANONSUB(a,b,c) Perl_newANONSUB(aTHX_ a,b,c) #define newASSIGNOP(a,b,c,d) Perl_newASSIGNOP(aTHX_ a,b,c,d) #define newCONDOP(a,b,c,d) Perl_newCONDOP(aTHX_ a,b,c,d) #define newCONSTSUB(a,b,c) Perl_newCONSTSUB(aTHX_ a,b,c) #ifdef PERL_MAD #define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) #else #define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c) #endif #define newFOROP(a,b,c,d,e,f,g) Perl_newFOROP(aTHX_ a,b,c,d,e,f,g) #define newGIVENOP(a,b,c) Perl_newGIVENOP(aTHX_ a,b,c) #define newLOGOP(a,b,c,d) Perl_newLOGOP(aTHX_ a,b,c,d) #define newLOOPEX(a,b) Perl_newLOOPEX(aTHX_ a,b) #define newLOOPOP(a,b,c,d) Perl_newLOOPOP(aTHX_ a,b,c,d) #define newNULLLIST() Perl_newNULLLIST(aTHX) #define newOP(a,b) Perl_newOP(aTHX_ a,b) #define newPROG(a) Perl_newPROG(aTHX_ a) #define newRANGE(a,b,c) Perl_newRANGE(aTHX_ a,b,c) #define newSLICEOP(a,b,c) Perl_newSLICEOP(aTHX_ a,b,c) #define newSTATEOP(a,b,c) Perl_newSTATEOP(aTHX_ a,b,c) #define newSUB(a,b,c,d) Perl_newSUB(aTHX_ a,b,c,d) #define newXS_flags(a,b,c,d,e) Perl_newXS_flags(aTHX_ a,b,c,d,e) #define newXS(a,b,c) Perl_newXS(aTHX_ a,b,c) #define newAV() Perl_newAV(aTHX) #define newAVREF(a) Perl_newAVREF(aTHX_ a) #define newBINOP(a,b,c,d) Perl_newBINOP(aTHX_ a,b,c,d) #define newCVREF(a,b) Perl_newCVREF(aTHX_ a,b) #define newGVOP(a,b,c) Perl_newGVOP(aTHX_ a,b,c) #define newGVgen(a) Perl_newGVgen(aTHX_ a) #define newGVREF(a,b) Perl_newGVREF(aTHX_ a,b) #define newHVREF(a) Perl_newHVREF(aTHX_ a) #define newHV() Perl_newHV(aTHX) #define newHVhv(a) Perl_newHVhv(aTHX_ a) #define newIO() Perl_newIO(aTHX) #define newLISTOP(a,b,c,d) Perl_newLISTOP(aTHX_ a,b,c,d) #define newPADOP(a,b,c) Perl_newPADOP(aTHX_ a,b,c) #define newPMOP(a,b) Perl_newPMOP(aTHX_ a,b) #define newPVOP(a,b,c) Perl_newPVOP(aTHX_ a,b,c) #define newRV(a) Perl_newRV(aTHX_ a) #define newRV_noinc(a) Perl_newRV_noinc(aTHX_ a) #define newSV(a) Perl_newSV(aTHX_ a) #define newSVREF(a) Perl_newSVREF(aTHX_ a) #define newSVOP(a,b,c) Perl_newSVOP(aTHX_ a,b,c) #define newSViv(a) Perl_newSViv(aTHX_ a) #define newSVuv(a) Perl_newSVuv(aTHX_ a) #define newSVnv(a) Perl_newSVnv(aTHX_ a) #define newSVpv(a,b) Perl_newSVpv(aTHX_ a,b) #define newSVpvn(a,b) Perl_newSVpvn(aTHX_ a,b) #define newSVhek(a) Perl_newSVhek(aTHX_ a) #define newSVpvn_share(a,b,c) Perl_newSVpvn_share(aTHX_ a,b,c) #define vnewSVpvf(a,b) Perl_vnewSVpvf(aTHX_ a,b) #define newSVrv(a,b) Perl_newSVrv(aTHX_ a,b) #define newSVsv(a) Perl_newSVsv(aTHX_ a) #define newUNOP(a,b,c) Perl_newUNOP(aTHX_ a,b,c) #define newWHENOP(a,b) Perl_newWHENOP(aTHX_ a,b) #define newWHILEOP(a,b,c,d,e,f,g,h) Perl_newWHILEOP(aTHX_ a,b,c,d,e,f,g,h) #define new_stackinfo(a,b) Perl_new_stackinfo(aTHX_ a,b) #define scan_vstring(a,b) Perl_scan_vstring(aTHX_ a,b) #define scan_version(a,b,c) Perl_scan_version(aTHX_ a,b,c) #define new_version(a) Perl_new_version(aTHX_ a) #define upg_version(a) Perl_upg_version(aTHX_ a) #define vverify(a) Perl_vverify(aTHX_ a) #define vnumify(a) Perl_vnumify(aTHX_ a) #define vnormal(a) Perl_vnormal(aTHX_ a) #define vstringify(a) Perl_vstringify(aTHX_ a) #define vcmp(a,b) Perl_vcmp(aTHX_ a,b) #ifdef PERL_CORE #define nextargv(a) Perl_nextargv(aTHX_ a) #endif #define ninstr(a,b,c,d) Perl_ninstr(aTHX_ a,b,c,d) #ifdef PERL_CORE #define oopsCV(a) Perl_oopsCV(aTHX_ a) #endif #define op_free(a) Perl_op_free(aTHX_ a) #ifdef PERL_MAD #ifdef PERL_CORE #define package(a) Perl_package(aTHX_ a) #endif #else #ifdef PERL_CORE #define package(a) Perl_package(aTHX_ a) #endif #endif #ifdef PERL_CORE #define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b) #define allocmy(a) Perl_allocmy(aTHX_ a) #define pad_findmy(a) Perl_pad_findmy(aTHX_ a) #endif #define find_rundefsvoffset() Perl_find_rundefsvoffset(aTHX) #ifdef PERL_CORE #define oopsAV(a) Perl_oopsAV(aTHX_ a) #define oopsHV(a) Perl_oopsHV(aTHX_ a) #define pad_leavemy() Perl_pad_leavemy(aTHX) #endif #define pad_sv(a) Perl_pad_sv(aTHX_ a) #ifdef PERL_CORE #define pad_free(a) Perl_pad_free(aTHX_ a) #define pad_reset() Perl_pad_reset(aTHX) #define pad_swipe(a,b) Perl_pad_swipe(aTHX_ a,b) #define peep(a) Perl_peep(aTHX_ a) #endif #if defined(USE_REENTRANT_API) #define reentrant_size() Perl_reentrant_size(aTHX) #define reentrant_init() Perl_reentrant_init(aTHX) #define reentrant_free() Perl_reentrant_free(aTHX) #endif #define call_atexit(a,b) Perl_call_atexit(aTHX_ a,b) #define call_argv(a,b,c) Perl_call_argv(aTHX_ a,b,c) #define call_method(a,b) Perl_call_method(aTHX_ a,b) #define call_pv(a,b) Perl_call_pv(aTHX_ a,b) #define call_sv(a,b) Perl_call_sv(aTHX_ a,b) #define despatch_signals() Perl_despatch_signals(aTHX) #define doref(a,b,c) Perl_doref(aTHX_ a,b,c) #define eval_pv(a,b) Perl_eval_pv(aTHX_ a,b) #define eval_sv(a,b) Perl_eval_sv(aTHX_ a,b) #define get_sv(a,b) Perl_get_sv(aTHX_ a,b) #define get_av(a,b) Perl_get_av(aTHX_ a,b) #define get_hv(a,b) Perl_get_hv(aTHX_ a,b) #define get_cv(a,b) Perl_get_cv(aTHX_ a,b) #define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a) #define init_i18nl14n(a) Perl_init_i18nl14n(aTHX_ a) #define new_collate(a) Perl_new_collate(aTHX_ a) #define new_ctype(a) Perl_new_ctype(aTHX_ a) #define new_numeric(a) Perl_new_numeric(aTHX_ a) #define set_numeric_local() Perl_set_numeric_local(aTHX) #define set_numeric_radix() Perl_set_numeric_radix(aTHX) #define set_numeric_standard() Perl_set_numeric_standard(aTHX) #define require_pv(a) Perl_require_pv(aTHX_ a) #define pack_cat(a,b,c,d,e,f,g) Perl_pack_cat(aTHX_ a,b,c,d,e,f,g) #define packlist(a,b,c,d,e) Perl_packlist(aTHX_ a,b,c,d,e) #ifdef PERL_USES_PL_PIDSTATUS #ifdef PERL_CORE #define pidgone(a,b) Perl_pidgone(aTHX_ a,b) #endif #endif #define pmflag(a,b) Perl_pmflag(aTHX_ a,b) #ifdef PERL_CORE #define pmruntime(a,b,c) Perl_pmruntime(aTHX_ a,b,c) #define pmtrans(a,b,c) Perl_pmtrans(aTHX_ a,b,c) #endif #define pop_scope() Perl_pop_scope(aTHX) #ifdef PERL_CORE #define prepend_elem(a,b,c) Perl_prepend_elem(aTHX_ a,b,c) #endif #define push_scope() Perl_push_scope(aTHX) #ifdef PERL_CORE #define refkids(a,b) Perl_refkids(aTHX_ a,b) #endif #define regdump(a) Perl_regdump(aTHX_ a) #define regclass_swash(a,b,c,d,e) Perl_regclass_swash(aTHX_ a,b,c,d,e) #define pregexec(a,b,c,d,e,f,g) Perl_pregexec(aTHX_ a,b,c,d,e,f,g) #define pregfree(a) Perl_pregfree(aTHX_ a) #if defined(USE_ITHREADS) #define regdupe(a,b) Perl_regdupe(aTHX_ a,b) #endif #define pregcomp(a,b,c) Perl_pregcomp(aTHX_ a,b,c) #define re_intuit_start(a,b,c,d,e,f) Perl_re_intuit_start(aTHX_ a,b,c,d,e,f) #define re_intuit_string(a) Perl_re_intuit_string(aTHX_ a) #define regexec_flags(a,b,c,d,e,f,g,h) Perl_regexec_flags(aTHX_ a,b,c,d,e,f,g,h) #define regnext(a) Perl_regnext(aTHX_ a) #if defined(PERL_CORE) || defined(PERL_EXT) #define reg_named_buff_sv(a) Perl_reg_named_buff_sv(aTHX_ a) #define regprop(a,b,c) Perl_regprop(aTHX_ a,b,c) #endif #define repeatcpy(a,b,c,d) Perl_repeatcpy(aTHX_ a,b,c,d) #define rninstr(a,b,c,d) Perl_rninstr(aTHX_ a,b,c,d) #define rsignal(a,b) Perl_rsignal(aTHX_ a,b) #ifdef PERL_CORE #define rsignal_restore(a,b) Perl_rsignal_restore(aTHX_ a,b) #define rsignal_save(a,b,c) Perl_rsignal_save(aTHX_ a,b,c) #endif #define rsignal_state(a) Perl_rsignal_state(aTHX_ a) #ifdef PERL_CORE #define rxres_free(a) Perl_rxres_free(aTHX_ a) #define rxres_restore(a,b) Perl_rxres_restore(aTHX_ a,b) #define rxres_save(a,b) Perl_rxres_save(aTHX_ a,b) #endif #if !defined(HAS_RENAME) #ifdef PERL_CORE #define same_dirent(a,b) Perl_same_dirent(aTHX_ a,b) #endif #endif #define savepv(a) Perl_savepv(aTHX_ a) #define savepvn(a,b) Perl_savepvn(aTHX_ a,b) #define savesharedpv(a) Perl_savesharedpv(aTHX_ a) #define savesvpv(a) Perl_savesvpv(aTHX_ a) #define savestack_grow() Perl_savestack_grow(aTHX) #define savestack_grow_cnt(a) Perl_savestack_grow_cnt(aTHX_ a) #define save_aelem(a,b,c) Perl_save_aelem(aTHX_ a,b,c) #define save_alloc(a,b) Perl_save_alloc(aTHX_ a,b) #define save_aptr(a) Perl_save_aptr(aTHX_ a) #define save_ary(a) Perl_save_ary(aTHX_ a) #define save_bool(a) Perl_save_bool(aTHX_ a) #define save_clearsv(a) Perl_save_clearsv(aTHX_ a) #define save_delete(a,b,c) Perl_save_delete(aTHX_ a,b,c) #define save_destructor(a,b) Perl_save_destructor(aTHX_ a,b) #define save_destructor_x(a,b) Perl_save_destructor_x(aTHX_ a,b) #define save_freesv(a) Perl_save_freesv(aTHX_ a) #ifdef PERL_CORE #define save_freeop(a) Perl_save_freeop(aTHX_ a) #endif #define save_freepv(a) Perl_save_freepv(aTHX_ a) #define save_generic_svref(a) Perl_save_generic_svref(aTHX_ a) #define save_generic_pvref(a) Perl_save_generic_pvref(aTHX_ a) #define save_shared_pvref(a) Perl_save_shared_pvref(aTHX_ a) #define save_gp(a,b) Perl_save_gp(aTHX_ a,b) #define save_hash(a) Perl_save_hash(aTHX_ a) #define save_helem(a,b,c) Perl_save_helem(aTHX_ a,b,c) #define save_hints() Perl_save_hints(aTHX) #define save_hptr(a) Perl_save_hptr(aTHX_ a) #define save_I16(a) Perl_save_I16(aTHX_ a) #define save_I32(a) Perl_save_I32(aTHX_ a) #define save_I8(a) Perl_save_I8(aTHX_ a) #define save_int(a) Perl_save_int(aTHX_ a) #define save_item(a) Perl_save_item(aTHX_ a) #define save_iv(a) Perl_save_iv(aTHX_ a) #define save_list(a,b) Perl_save_list(aTHX_ a,b) #define save_long(a) Perl_save_long(aTHX_ a) #define save_mortalizesv(a) Perl_save_mortalizesv(aTHX_ a) #define save_nogv(a) Perl_save_nogv(aTHX_ a) #ifdef PERL_CORE #define save_op() Perl_save_op(aTHX) #endif #define save_scalar(a) Perl_save_scalar(aTHX_ a) #define save_pptr(a) Perl_save_pptr(aTHX_ a) #define save_vptr(a) Perl_save_vptr(aTHX_ a) #define save_re_context() Perl_save_re_context(aTHX) #define save_padsv(a) Perl_save_padsv(aTHX_ a) #define save_sptr(a) Perl_save_sptr(aTHX_ a) #define save_svref(a) Perl_save_svref(aTHX_ a) #ifdef PERL_CORE #define sawparens(a) Perl_sawparens(aTHX_ a) #define scalar(a) Perl_scalar(aTHX_ a) #define scalarkids(a) Perl_scalarkids(aTHX_ a) #define scalarseq(a) Perl_scalarseq(aTHX_ a) #define scalarvoid(a) Perl_scalarvoid(aTHX_ a) #endif #define scan_bin(a,b,c) Perl_scan_bin(aTHX_ a,b,c) #define scan_hex(a,b,c) Perl_scan_hex(aTHX_ a,b,c) #define scan_num(a,b) Perl_scan_num(aTHX_ a,b) #define scan_oct(a,b,c) Perl_scan_oct(aTHX_ a,b,c) #ifdef PERL_CORE #define scope(a) Perl_scope(aTHX_ a) #endif #define screaminstr(a,b,c,d,e,f) Perl_screaminstr(aTHX_ a,b,c,d,e,f) #if !defined(VMS) #ifdef PERL_CORE #define setenv_getix(a) Perl_setenv_getix(aTHX_ a) #endif #endif #ifdef PERL_CORE #define setdefout(a) Perl_setdefout(aTHX_ a) #endif #define share_hek(a,b,c) Perl_share_hek(aTHX_ a,b,c) #if defined(HAS_SIGACTION) && defined(SA_SIGINFO) #ifdef PERL_CORE #endif #else #ifdef PERL_CORE #define sighandler Perl_sighandler #endif #define csighandler Perl_csighandler #endif #define stack_grow(a,b,c) Perl_stack_grow(aTHX_ a,b,c) #define start_subparse(a,b) Perl_start_subparse(aTHX_ a,b) #ifdef PERL_CORE #define sub_crush_depth(a) Perl_sub_crush_depth(aTHX_ a) #endif #define sv_2bool(a) Perl_sv_2bool(aTHX_ a) #define sv_2cv(a,b,c,d) Perl_sv_2cv(aTHX_ a,b,c,d) #define sv_2io(a) Perl_sv_2io(aTHX_ a) #ifdef PERL_IN_SV_C #ifdef PERL_CORE #define glob_2number(a) S_glob_2number(aTHX_ a) #define glob_2pv(a,b) S_glob_2pv(aTHX_ a,b) #endif #endif #define sv_2iv_flags(a,b) Perl_sv_2iv_flags(aTHX_ a,b) #define sv_2mortal(a) Perl_sv_2mortal(aTHX_ a) #define sv_2nv(a) Perl_sv_2nv(aTHX_ a) #define sv_2pv_flags(a,b,c) Perl_sv_2pv_flags(aTHX_ a,b,c) #define sv_2pvutf8(a,b) Perl_sv_2pvutf8(aTHX_ a,b) #define sv_2pvbyte(a,b) Perl_sv_2pvbyte(aTHX_ a,b) #define sv_pvn_nomg(a,b) Perl_sv_pvn_nomg(aTHX_ a,b) #define sv_2uv_flags(a,b) Perl_sv_2uv_flags(aTHX_ a,b) #define sv_iv(a) Perl_sv_iv(aTHX_ a) #define sv_uv(a) Perl_sv_uv(aTHX_ a) #define sv_nv(a) Perl_sv_nv(aTHX_ a) #define sv_pvn(a,b) Perl_sv_pvn(aTHX_ a,b) #define sv_pvutf8n(a,b) Perl_sv_pvutf8n(aTHX_ a,b) #define sv_pvbyten(a,b) Perl_sv_pvbyten(aTHX_ a,b) #define sv_true(a) Perl_sv_true(aTHX_ a) #ifdef PERL_CORE #define sv_add_arena(a,b,c) Perl_sv_add_arena(aTHX_ a,b,c) #endif #define sv_backoff(a) Perl_sv_backoff(aTHX_ a) #define sv_bless(a,b) Perl_sv_bless(aTHX_ a,b) #define sv_vcatpvf(a,b,c) Perl_sv_vcatpvf(aTHX_ a,b,c) #define sv_catpv(a,b) Perl_sv_catpv(aTHX_ a,b) #define sv_chop(a,b) Perl_sv_chop(aTHX_ a,b) #ifdef PERL_CORE #define sv_clean_all() Perl_sv_clean_all(aTHX) #define sv_clean_objs() Perl_sv_clean_objs(aTHX) #endif #define sv_clear(a) Perl_sv_clear(aTHX_ a) #define sv_cmp(a,b) Perl_sv_cmp(aTHX_ a,b) #define sv_cmp_locale(a,b) Perl_sv_cmp_locale(aTHX_ a,b) #if defined(USE_LOCALE_COLLATE) #define sv_collxfrm(a,b) Perl_sv_collxfrm(aTHX_ a,b) #endif #define sv_compile_2op(a,b,c,d) Perl_sv_compile_2op(aTHX_ a,b,c,d) #define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a) #define sv_dec(a) Perl_sv_dec(aTHX_ a) #define sv_dump(a) Perl_sv_dump(aTHX_ a) #define sv_derived_from(a,b) Perl_sv_derived_from(aTHX_ a,b) #define sv_does(a,b) Perl_sv_does(aTHX_ a,b) #define sv_eq(a,b) Perl_sv_eq(aTHX_ a,b) #define sv_free(a) Perl_sv_free(aTHX_ a) #ifdef PERL_CORE #define sv_free_arenas() Perl_sv_free_arenas(aTHX) #endif #define sv_gets(a,b,c) Perl_sv_gets(aTHX_ a,b,c) #define sv_grow(a,b) Perl_sv_grow(aTHX_ a,b) #define sv_inc(a) Perl_sv_inc(aTHX_ a) #define sv_insert(a,b,c,d,e) Perl_sv_insert(aTHX_ a,b,c,d,e) #define sv_isa(a,b) Perl_sv_isa(aTHX_ a,b) #define sv_isobject(a) Perl_sv_isobject(aTHX_ a) #define sv_len(a) Perl_sv_len(aTHX_ a) #define sv_len_utf8(a) Perl_sv_len_utf8(aTHX_ a) #define sv_magic(a,b,c,d,e) Perl_sv_magic(aTHX_ a,b,c,d,e) #define sv_magicext(a,b,c,d,e,f) Perl_sv_magicext(aTHX_ a,b,c,d,e,f) #define sv_mortalcopy(a) Perl_sv_mortalcopy(aTHX_ a) #define sv_newmortal() Perl_sv_newmortal(aTHX) #define sv_newref(a) Perl_sv_newref(aTHX_ a) #define sv_peek(a) Perl_sv_peek(aTHX_ a) #define sv_pos_u2b(a,b,c) Perl_sv_pos_u2b(aTHX_ a,b,c) #define sv_pos_b2u(a,b) Perl_sv_pos_b2u(aTHX_ a,b) #define sv_pvutf8n_force(a,b) Perl_sv_pvutf8n_force(aTHX_ a,b) #define sv_pvbyten_force(a,b) Perl_sv_pvbyten_force(aTHX_ a,b) #define sv_recode_to_utf8(a,b) Perl_sv_recode_to_utf8(aTHX_ a,b) #define sv_cat_decode(a,b,c,d,e,f) Perl_sv_cat_decode(aTHX_ a,b,c,d,e,f) #define sv_reftype(a,b) Perl_sv_reftype(aTHX_ a,b) #define sv_replace(a,b) Perl_sv_replace(aTHX_ a,b) #define sv_report_used() Perl_sv_report_used(aTHX) #define sv_reset(a,b) Perl_sv_reset(aTHX_ a,b) #define sv_vsetpvf(a,b,c) Perl_sv_vsetpvf(aTHX_ a,b,c) #define sv_setiv(a,b) Perl_sv_setiv(aTHX_ a,b) #define sv_setpviv(a,b) Perl_sv_setpviv(aTHX_ a,b) #define sv_setuv(a,b) Perl_sv_setuv(aTHX_ a,b) #define sv_setnv(a,b) Perl_sv_setnv(aTHX_ a,b) #define sv_setref_iv(a,b,c) Perl_sv_setref_iv(aTHX_ a,b,c) #define sv_setref_uv(a,b,c) Perl_sv_setref_uv(aTHX_ a,b,c) #define sv_setref_nv(a,b,c) Perl_sv_setref_nv(aTHX_ a,b,c) #define sv_setref_pv(a,b,c) Perl_sv_setref_pv(aTHX_ a,b,c) #define sv_setref_pvn(a,b,c,d) Perl_sv_setref_pvn(aTHX_ a,b,c,d) #define sv_setpv(a,b) Perl_sv_setpv(aTHX_ a,b) #define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c) #define sv_tainted(a) Perl_sv_tainted(aTHX_ a) #define sv_unmagic(a,b) Perl_sv_unmagic(aTHX_ a,b) #define sv_unref_flags(a,b) Perl_sv_unref_flags(aTHX_ a,b) #define sv_untaint(a) Perl_sv_untaint(aTHX_ a) #define sv_upgrade(a,b) Perl_sv_upgrade(aTHX_ a,b) #define sv_usepvn_flags(a,b,c,d) Perl_sv_usepvn_flags(aTHX_ a,b,c,d) #define sv_vcatpvfn(a,b,c,d,e,f,g) Perl_sv_vcatpvfn(aTHX_ a,b,c,d,e,f,g) #define sv_vsetpvfn(a,b,c,d,e,f,g) Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g) #define str_to_version(a) Perl_str_to_version(aTHX_ a) #define swash_init(a,b,c,d,e) Perl_swash_init(aTHX_ a,b,c,d,e) #define swash_fetch(a,b,c) Perl_swash_fetch(aTHX_ a,b,c) #define taint_env() Perl_taint_env(aTHX) #define taint_proper(a,b) Perl_taint_proper(aTHX_ a,b) #define to_utf8_case(a,b,c,d,e,f) Perl_to_utf8_case(aTHX_ a,b,c,d,e,f) #define to_utf8_lower(a,b,c) Perl_to_utf8_lower(aTHX_ a,b,c) #define to_utf8_upper(a,b,c) Perl_to_utf8_upper(aTHX_ a,b,c) #define to_utf8_title(a,b,c) Perl_to_utf8_title(aTHX_ a,b,c) #define to_utf8_fold(a,b,c) Perl_to_utf8_fold(aTHX_ a,b,c) #if defined(UNLINK_ALL_VERSIONS) #define unlnk(a) Perl_unlnk(aTHX_ a) #endif #define unpack_str(a,b,c,d,e,f,g,h) Perl_unpack_str(aTHX_ a,b,c,d,e,f,g,h) #define unpackstring(a,b,c,d,e) Perl_unpackstring(aTHX_ a,b,c,d,e) #define unsharepvn(a,b,c) Perl_unsharepvn(aTHX_ a,b,c) #if defined(PERL_CORE) || defined(PERL_EXT) #define unshare_hek(a) Perl_unshare_hek(aTHX_ a) #endif #ifdef PERL_MAD #ifdef PERL_CORE #define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e) #endif #else #ifdef PERL_CORE #define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e) #endif #endif #define utf16_to_utf8(a,b,c,d) Perl_utf16_to_utf8(aTHX_ a,b,c,d) #define utf16_to_utf8_reversed(a,b,c,d) Perl_utf16_to_utf8_reversed(aTHX_ a,b,c,d) #define utf8_length(a,b) Perl_utf8_length(aTHX_ a,b) #define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b) #define utf8_hop(a,b) Perl_utf8_hop(aTHX_ a,b) #define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b) #define bytes_from_utf8(a,b,c) Perl_bytes_from_utf8(aTHX_ a,b,c) #define bytes_to_utf8(a,b) Perl_bytes_to_utf8(aTHX_ a,b) #define utf8_to_uvchr(a,b) Perl_utf8_to_uvchr(aTHX_ a,b) #define utf8_to_uvuni(a,b) Perl_utf8_to_uvuni(aTHX_ a,b) #ifdef EBCDIC #define utf8n_to_uvchr(a,b,c,d) Perl_utf8n_to_uvchr(aTHX_ a,b,c,d) #else #endif #define utf8n_to_uvuni(a,b,c,d) Perl_utf8n_to_uvuni(aTHX_ a,b,c,d) #ifdef EBCDIC #define uvchr_to_utf8(a,b) Perl_uvchr_to_utf8(aTHX_ a,b) #else #endif #define uvchr_to_utf8_flags(a,b,c) Perl_uvchr_to_utf8_flags(aTHX_ a,b,c) #define uvuni_to_utf8_flags(a,b,c) Perl_uvuni_to_utf8_flags(aTHX_ a,b,c) #define pv_uni_display(a,b,c,d,e) Perl_pv_uni_display(aTHX_ a,b,c,d,e) #define sv_uni_display(a,b,c,d) Perl_sv_uni_display(aTHX_ a,b,c,d) #ifdef PERL_CORE #define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a) #define vivify_ref(a,b) Perl_vivify_ref(aTHX_ a,b) #define wait4pid(a,b,c) Perl_wait4pid(aTHX_ a,b,c) #define parse_unicode_opts(a) Perl_parse_unicode_opts(aTHX_ a) #endif #define seed() Perl_seed(aTHX) #ifdef PERL_CORE #define get_hash_seed() Perl_get_hash_seed(aTHX) #define report_evil_fh(a,b,c) Perl_report_evil_fh(aTHX_ a,b,c) #define report_uninit(a) Perl_report_uninit(aTHX_ a) #endif #define vwarn(a,b) Perl_vwarn(aTHX_ a,b) #define vwarner(a,b,c) Perl_vwarner(aTHX_ a,b,c) #ifdef PERL_CORE #define watch(a) Perl_watch(aTHX_ a) #endif #define whichsig(a) Perl_whichsig(aTHX_ a) #ifdef PERL_CORE #define write_to_stderr(a,b) Perl_write_to_stderr(aTHX_ a,b) #define yyerror(a) Perl_yyerror(aTHX_ a) #define yylex() Perl_yylex(aTHX) #define yyparse() Perl_yyparse(aTHX) #define yywarn(a) Perl_yywarn(aTHX_ a) #endif #if defined(MYMALLOC) #define dump_mstats(a) Perl_dump_mstats(aTHX_ a) #define get_mstats(a,b,c) Perl_get_mstats(aTHX_ a,b,c) #endif #define safesysmalloc Perl_safesysmalloc #define safesyscalloc Perl_safesyscalloc #define safesysrealloc Perl_safesysrealloc #define safesysfree Perl_safesysfree #if defined(PERL_GLOBAL_STRUCT) #define GetVars() Perl_GetVars(aTHX) #define init_global_struct() Perl_init_global_struct(aTHX) #define free_global_struct(a) Perl_free_global_struct(aTHX_ a) #endif #define runops_standard() Perl_runops_standard(aTHX) #define runops_debug() Perl_runops_debug(aTHX) #define sv_vcatpvf_mg(a,b,c) Perl_sv_vcatpvf_mg(aTHX_ a,b,c) #define sv_catpv_mg(a,b) Perl_sv_catpv_mg(aTHX_ a,b) #define sv_vsetpvf_mg(a,b,c) Perl_sv_vsetpvf_mg(aTHX_ a,b,c) #define sv_setiv_mg(a,b) Perl_sv_setiv_mg(aTHX_ a,b) #define sv_setpviv_mg(a,b) Perl_sv_setpviv_mg(aTHX_ a,b) #define sv_setuv_mg(a,b) Perl_sv_setuv_mg(aTHX_ a,b) #define sv_setnv_mg(a,b) Perl_sv_setnv_mg(aTHX_ a,b) #define sv_setpv_mg(a,b) Perl_sv_setpv_mg(aTHX_ a,b) #define sv_setpvn_mg(a,b,c) Perl_sv_setpvn_mg(aTHX_ a,b,c) #define sv_setsv_mg(a,b) Perl_sv_setsv_mg(aTHX_ a,b) #define get_vtbl(a) Perl_get_vtbl(aTHX_ a) #define pv_display(a,b,c,d,e) Perl_pv_display(aTHX_ a,b,c,d,e) #define pv_escape(a,b,c,d,e,f) Perl_pv_escape(aTHX_ a,b,c,d,e,f) #define pv_pretty(a,b,c,d,e,f,g) Perl_pv_pretty(aTHX_ a,b,c,d,e,f,g) #define dump_vindent(a,b,c,d) Perl_dump_vindent(aTHX_ a,b,c,d) #define do_gv_dump(a,b,c,d) Perl_do_gv_dump(aTHX_ a,b,c,d) #define do_gvgv_dump(a,b,c,d) Perl_do_gvgv_dump(aTHX_ a,b,c,d) #define do_hv_dump(a,b,c,d) Perl_do_hv_dump(aTHX_ a,b,c,d) #define do_magic_dump(a,b,c,d,e,f,g) Perl_do_magic_dump(aTHX_ a,b,c,d,e,f,g) #define do_op_dump(a,b,c) Perl_do_op_dump(aTHX_ a,b,c) #define do_pmop_dump(a,b,c) Perl_do_pmop_dump(aTHX_ a,b,c) #define do_sv_dump(a,b,c,d,e,f,g) Perl_do_sv_dump(aTHX_ a,b,c,d,e,f,g) #define magic_dump(a) Perl_magic_dump(aTHX_ a) #define reginitcolors() Perl_reginitcolors(aTHX) #define sv_utf8_downgrade(a,b) Perl_sv_utf8_downgrade(aTHX_ a,b) #define sv_utf8_encode(a) Perl_sv_utf8_encode(aTHX_ a) #define sv_utf8_decode(a) Perl_sv_utf8_decode(aTHX_ a) #define sv_force_normal_flags(a,b) Perl_sv_force_normal_flags(aTHX_ a,b) #define tmps_grow(a) Perl_tmps_grow(aTHX_ a) #define sv_rvweaken(a) Perl_sv_rvweaken(aTHX_ a) #ifdef PERL_CORE #define magic_killbackrefs(a,b) Perl_magic_killbackrefs(aTHX_ a,b) #endif #define newANONATTRSUB(a,b,c,d) Perl_newANONATTRSUB(aTHX_ a,b,c,d) #define newATTRSUB(a,b,c,d,e) Perl_newATTRSUB(aTHX_ a,b,c,d,e) #ifdef PERL_MAD #define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e) #else #define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e) #endif #ifdef PERL_CORE #define my_attrs(a,b) Perl_my_attrs(aTHX_ a,b) #define boot_core_xsutils() Perl_boot_core_xsutils(aTHX) #endif #if defined(USE_ITHREADS) #define cx_dup(a,b,c,d) Perl_cx_dup(aTHX_ a,b,c,d) #define si_dup(a,b) Perl_si_dup(aTHX_ a,b) #define ss_dup(a,b) Perl_ss_dup(aTHX_ a,b) #define any_dup(a,b) Perl_any_dup(aTHX_ a,b) #define he_dup(a,b,c) Perl_he_dup(aTHX_ a,b,c) #define hek_dup(a,b) Perl_hek_dup(aTHX_ a,b) #define re_dup(a,b) Perl_re_dup(aTHX_ a,b) #define fp_dup(a,b,c) Perl_fp_dup(aTHX_ a,b,c) #define dirp_dup(a) Perl_dirp_dup(aTHX_ a) #define gp_dup(a,b) Perl_gp_dup(aTHX_ a,b) #define mg_dup(a,b) Perl_mg_dup(aTHX_ a,b) #define sv_dup(a,b) Perl_sv_dup(aTHX_ a,b) #define rvpv_dup(a,b,c) Perl_rvpv_dup(aTHX_ a,b,c) #define ptr_table_new() Perl_ptr_table_new(aTHX) #define ptr_table_fetch(a,b) Perl_ptr_table_fetch(aTHX_ a,b) #define ptr_table_store(a,b,c) Perl_ptr_table_store(aTHX_ a,b,c) #define ptr_table_split(a) Perl_ptr_table_split(aTHX_ a) #define ptr_table_clear(a) Perl_ptr_table_clear(aTHX_ a) #define ptr_table_free(a) Perl_ptr_table_free(aTHX_ a) # if defined(HAVE_INTERP_INTERN) #define sys_intern_dup(a,b) Perl_sys_intern_dup(aTHX_ a,b) # endif #endif #if defined(HAVE_INTERP_INTERN) #define sys_intern_clear() Perl_sys_intern_clear(aTHX) #define sys_intern_init() Perl_sys_intern_init(aTHX) #endif #define custom_op_name(a) Perl_custom_op_name(aTHX_ a) #define custom_op_desc(a) Perl_custom_op_desc(aTHX_ a) #if defined(PERL_OLD_COPY_ON_WRITE) #ifdef PERL_CORE #define sv_release_IVX(a) Perl_sv_release_IVX(aTHX_ a) #endif #endif #define sv_nosharing(a) Perl_sv_nosharing(aTHX_ a) #ifdef NO_MATHOMS #else #define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a) #endif #define nothreadhook() Perl_nothreadhook(aTHX) #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define do_trans_simple(a) S_do_trans_simple(aTHX_ a) #define do_trans_count(a) S_do_trans_count(aTHX_ a) #define do_trans_complex(a) S_do_trans_complex(aTHX_ a) #define do_trans_simple_utf8(a) S_do_trans_simple_utf8(aTHX_ a) #define do_trans_count_utf8(a) S_do_trans_count_utf8(aTHX_ a) #define do_trans_complex_utf8(a) S_do_trans_complex_utf8(aTHX_ a) #endif #endif #if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define gv_init_sv(a,b) S_gv_init_sv(aTHX_ a,b) #define require_errno(a) S_require_errno(aTHX_ a) #endif #endif #ifdef PERL_CORE #endif #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define hsplit(a) S_hsplit(aTHX_ a) #define hfreeentries(a) S_hfreeentries(aTHX_ a) #define new_he() S_new_he(aTHX) #define save_hek_flags S_save_hek_flags #define hv_magic_check S_hv_magic_check #define unshare_hek_or_pvn(a,b,c,d) S_unshare_hek_or_pvn(aTHX_ a,b,c,d) #define share_hek_flags(a,b,c,d) S_share_hek_flags(aTHX_ a,b,c,d) #define hv_magic_uvar_xkey(a,b,c) S_hv_magic_uvar_xkey(aTHX_ a,b,c) #define hv_notallowed(a,b,c,d) S_hv_notallowed(aTHX_ a,b,c,d) #define hv_auxinit S_hv_auxinit #define hv_delete_common(a,b,c,d,e,f,g) S_hv_delete_common(aTHX_ a,b,c,d,e,f,g) #define hv_fetch_common(a,b,c,d,e,f,g,h) S_hv_fetch_common(aTHX_ a,b,c,d,e,f,g,h) #define clear_placeholders(a,b) S_clear_placeholders(aTHX_ a,b) #define refcounted_he_value(a) S_refcounted_he_value(aTHX_ a) #endif #endif #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define save_magic(a,b) S_save_magic(aTHX_ a,b) #define magic_methpack(a,b,c) S_magic_methpack(aTHX_ a,b,c) #define magic_methcall(a,b,c,d,e,f) S_magic_methcall(aTHX_ a,b,c,d,e,f) #define restore_magic(a) S_restore_magic(aTHX_ a) #define unwind_handler_stack(a) S_unwind_handler_stack(aTHX_ a) #endif #endif #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a) #define ck_bitop(a) Perl_ck_bitop(aTHX_ a) #define ck_concat(a) Perl_ck_concat(aTHX_ a) #define ck_defined(a) Perl_ck_defined(aTHX_ a) #define ck_delete(a) Perl_ck_delete(aTHX_ a) #define ck_die(a) Perl_ck_die(aTHX_ a) #define ck_eof(a) Perl_ck_eof(aTHX_ a) #define ck_eval(a) Perl_ck_eval(aTHX_ a) #define ck_exec(a) Perl_ck_exec(aTHX_ a) #define ck_exists(a) Perl_ck_exists(aTHX_ a) #define ck_exit(a) Perl_ck_exit(aTHX_ a) #define ck_ftst(a) Perl_ck_ftst(aTHX_ a) #define ck_fun(a) Perl_ck_fun(aTHX_ a) #define ck_glob(a) Perl_ck_glob(aTHX_ a) #define ck_grep(a) Perl_ck_grep(aTHX_ a) #define ck_index(a) Perl_ck_index(aTHX_ a) #define ck_join(a) Perl_ck_join(aTHX_ a) #define ck_lengthconst(a) Perl_ck_lengthconst(aTHX_ a) #define ck_lfun(a) Perl_ck_lfun(aTHX_ a) #define ck_listiob(a) Perl_ck_listiob(aTHX_ a) #define ck_match(a) Perl_ck_match(aTHX_ a) #define ck_method(a) Perl_ck_method(aTHX_ a) #define ck_null(a) Perl_ck_null(aTHX_ a) #define ck_open(a) Perl_ck_open(aTHX_ a) #define ck_repeat(a) Perl_ck_repeat(aTHX_ a) #define ck_require(a) Perl_ck_require(aTHX_ a) #define ck_retarget(a) Perl_ck_retarget(aTHX_ a) #define ck_return(a) Perl_ck_return(aTHX_ a) #define ck_rfun(a) Perl_ck_rfun(aTHX_ a) #define ck_rvconst(a) Perl_ck_rvconst(aTHX_ a) #define ck_sassign(a) Perl_ck_sassign(aTHX_ a) #define ck_say(a) Perl_ck_say(aTHX_ a) #define ck_select(a) Perl_ck_select(aTHX_ a) #define ck_shift(a) Perl_ck_shift(aTHX_ a) #define ck_sort(a) Perl_ck_sort(aTHX_ a) #define ck_spair(a) Perl_ck_spair(aTHX_ a) #define ck_split(a) Perl_ck_split(aTHX_ a) #define ck_subr(a) Perl_ck_subr(aTHX_ a) #define ck_substr(a) Perl_ck_substr(aTHX_ a) #define ck_svconst(a) Perl_ck_svconst(aTHX_ a) #define ck_trunc(a) Perl_ck_trunc(aTHX_ a) #define ck_unpack(a) Perl_ck_unpack(aTHX_ a) #define is_handle_constructor S_is_handle_constructor #define is_list_assignment(a) S_is_list_assignment(aTHX_ a) #define cop_free(a) S_cop_free(aTHX_ a) #define modkids(a,b) S_modkids(aTHX_ a,b) #define scalarboolean(a) S_scalarboolean(aTHX_ a) #define newDEFSVOP() S_newDEFSVOP(aTHX) #define new_logop(a,b,c,d) S_new_logop(aTHX_ a,b,c,d) #define simplify_sort(a) S_simplify_sort(aTHX_ a) #define gv_ename(a) S_gv_ename(aTHX_ a) #define scalar_mod_type S_scalar_mod_type #define my_kid(a,b,c) S_my_kid(aTHX_ a,b,c) #define dup_attrlist(a) S_dup_attrlist(aTHX_ a) #define apply_attrs(a,b,c,d) S_apply_attrs(aTHX_ a,b,c,d) #define apply_attrs_my(a,b,c,d) S_apply_attrs_my(aTHX_ a,b,c,d) #define bad_type(a,b,c,d) S_bad_type(aTHX_ a,b,c,d) #define no_bareword_allowed(a) S_no_bareword_allowed(aTHX_ a) #define no_fh_allowed(a) S_no_fh_allowed(aTHX_ a) #define too_few_arguments(a,b) S_too_few_arguments(aTHX_ a,b) #define too_many_arguments(a,b) S_too_many_arguments(aTHX_ a,b) #define looks_like_bool(a) S_looks_like_bool(aTHX_ a) #define newGIVWHENOP(a,b,c,d,e) S_newGIVWHENOP(aTHX_ a,b,c,d,e) #define ref_array_or_hash(a) S_ref_array_or_hash(aTHX_ a) #endif #endif #if defined(PL_OP_SLAB_ALLOC) #define Slab_Alloc(a,b) Perl_Slab_Alloc(aTHX_ a,b) #define Slab_Free(a) Perl_Slab_Free(aTHX_ a) #endif #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define find_beginning() S_find_beginning(aTHX) #define forbid_setid(a,b) S_forbid_setid(aTHX_ a,b) #define incpush(a,b,c,d,e) S_incpush(aTHX_ a,b,c,d,e) #define init_interp() S_init_interp(aTHX) #define init_ids() S_init_ids(aTHX) #define init_lexer() S_init_lexer(aTHX) #define init_main_stash() S_init_main_stash(aTHX) #define init_perllib() S_init_perllib(aTHX) #define init_postdump_symbols(a,b,c) S_init_postdump_symbols(aTHX_ a,b,c) #define init_predump_symbols() S_init_predump_symbols(aTHX) #define my_exit_jump() S_my_exit_jump(aTHX) #define nuke_stacks() S_nuke_stacks(aTHX) #define open_script(a,b,c,d) S_open_script(aTHX_ a,b,c,d) #define usage(a) S_usage(aTHX_ a) #define validate_suid(a,b,c,d) S_validate_suid(aTHX_ a,b,c,d) #endif # if defined(IAMSUID) #ifdef PERL_CORE #define fd_on_nosuid_fs(a) S_fd_on_nosuid_fs(aTHX_ a) #endif # endif #ifdef PERL_CORE #define parse_body(a,b) S_parse_body(aTHX_ a,b) #define run_body(a) S_run_body(aTHX_ a) #define incpush_if_exists(a) S_incpush_if_exists(aTHX_ a) #endif #endif #if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define refto(a) S_refto(aTHX_ a) #endif #endif #if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define unpack_rec(a,b,c,d,e) S_unpack_rec(aTHX_ a,b,c,d,e) #define pack_rec(a,b,c,d) S_pack_rec(aTHX_ a,b,c,d) #define mul128(a,b) S_mul128(aTHX_ a,b) #define measure_struct(a) S_measure_struct(aTHX_ a) #define next_symbol(a) S_next_symbol(aTHX_ a) #define is_an_int(a,b) S_is_an_int(aTHX_ a,b) #define div128(a,b) S_div128(aTHX_ a,b) #define group_end(a,b,c) S_group_end(aTHX_ a,b,c) #define get_num(a,b) S_get_num(aTHX_ a,b) #define need_utf8 S_need_utf8 #define first_symbol S_first_symbol #define sv_exp_grow(a,b) S_sv_exp_grow(aTHX_ a,b) #define bytes_to_uni S_bytes_to_uni #endif #endif #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define docatch(a) S_docatch(aTHX_ a) #define docatch_body() S_docatch_body(aTHX) #define dofindlabel(a,b,c,d) S_dofindlabel(aTHX_ a,b,c,d) #define doparseform(a) S_doparseform(aTHX_ a) #define num_overflow S_num_overflow #define dopoptoeval(a) S_dopoptoeval(aTHX_ a) #define dopoptogiven(a) S_dopoptogiven(aTHX_ a) #define dopoptolabel(a) S_dopoptolabel(aTHX_ a) #define dopoptoloop(a) S_dopoptoloop(aTHX_ a) #define dopoptosub(a) S_dopoptosub(aTHX_ a) #define dopoptosub_at(a,b) S_dopoptosub_at(aTHX_ a,b) #define dopoptowhen(a) S_dopoptowhen(aTHX_ a) #define save_lines(a,b) S_save_lines(aTHX_ a,b) #define doeval(a,b,c,d) S_doeval(aTHX_ a,b,c,d) #define check_type_and_open(a,b) S_check_type_and_open(aTHX_ a,b) #define doopen_pm(a,b) S_doopen_pm(aTHX_ a,b) #define path_is_absolute S_path_is_absolute #define run_user_filter(a,b,c) S_run_user_filter(aTHX_ a,b,c) #define make_matcher(a) S_make_matcher(aTHX_ a) #define matcher_matches_sv(a,b) S_matcher_matches_sv(aTHX_ a,b) #define destroy_matcher(a) S_destroy_matcher(aTHX_ a) #define do_smartmatch(a,b) S_do_smartmatch(aTHX_ a,b) #endif #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define do_oddball(a,b,c) S_do_oddball(aTHX_ a,b,c) #define get_db_sub(a,b) S_get_db_sub(aTHX_ a,b) #define method_common(a,b) S_method_common(aTHX_ a,b) #endif #endif #if defined(PERL_IN_PP_SORT_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define sv_ncmp(a,b) S_sv_ncmp(aTHX_ a,b) #define sv_i_ncmp(a,b) S_sv_i_ncmp(aTHX_ a,b) #define amagic_ncmp(a,b) S_amagic_ncmp(aTHX_ a,b) #define amagic_i_ncmp(a,b) S_amagic_i_ncmp(aTHX_ a,b) #define amagic_cmp(a,b) S_amagic_cmp(aTHX_ a,b) #define amagic_cmp_locale(a,b) S_amagic_cmp_locale(aTHX_ a,b) #define sortcv(a,b) S_sortcv(aTHX_ a,b) #define sortcv_xsub(a,b) S_sortcv_xsub(aTHX_ a,b) #define sortcv_stacked(a,b) S_sortcv_stacked(aTHX_ a,b) #define qsortsvu(a,b,c) S_qsortsvu(aTHX_ a,b,c) #endif #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define doform(a,b,c) S_doform(aTHX_ a,b,c) #define emulate_eaccess(a,b) S_emulate_eaccess(aTHX_ a,b) #endif # if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) #ifdef PERL_CORE #define dooneliner(a,b) S_dooneliner(aTHX_ a,b) #endif # endif #ifdef PERL_CORE #define space_join_names_mortal(a) S_space_join_names_mortal(aTHX_ a) #endif #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) #if defined(PERL_CORE) || defined(PERL_EXT) #define reg(a,b,c,d) S_reg(aTHX_ a,b,c,d) #define reganode(a,b,c) S_reganode(aTHX_ a,b,c) #define regatom(a,b,c) S_regatom(aTHX_ a,b,c) #define regbranch(a,b,c,d) S_regbranch(aTHX_ a,b,c,d) #define reguni(a,b,c) S_reguni(aTHX_ a,b,c) #define regclass(a,b) S_regclass(aTHX_ a,b) #define regcurly S_regcurly #define reg_node(a,b) S_reg_node(aTHX_ a,b) #define regpiece(a,b,c) S_regpiece(aTHX_ a,b,c) #define reg_namedseq(a,b) S_reg_namedseq(aTHX_ a,b) #define reginsert(a,b,c,d) S_reginsert(aTHX_ a,b,c,d) #define regtail(a,b,c,d) S_regtail(aTHX_ a,b,c,d) #define reg_scan_name(a,b) S_reg_scan_name(aTHX_ a,b) #define join_exact(a,b,c,d,e,f) S_join_exact(aTHX_ a,b,c,d,e,f) #define regwhite S_regwhite #define nextchar(a) S_nextchar(aTHX_ a) #define scan_commit(a,b,c) S_scan_commit(aTHX_ a,b,c) #define cl_anything S_cl_anything #define cl_is_anything S_cl_is_anything #define cl_init S_cl_init #define cl_init_zero S_cl_init_zero #define cl_and S_cl_and #define cl_or S_cl_or #define study_chunk(a,b,c,d,e,f,g,h) S_study_chunk(aTHX_ a,b,c,d,e,f,g,h) #define add_data S_add_data #endif #ifdef PERL_CORE #endif #if defined(PERL_CORE) || defined(PERL_EXT) #define regpposixcc(a,b) S_regpposixcc(aTHX_ a,b) #define checkposixcc(a) S_checkposixcc(aTHX_ a) #define make_trie(a,b,c,d,e,f,g,h) S_make_trie(aTHX_ a,b,c,d,e,f,g,h) #define make_trie_failtable(a,b,c,d) S_make_trie_failtable(aTHX_ a,b,c,d) #endif # ifdef DEBUGGING #if defined(PERL_CORE) || defined(PERL_EXT) #define dumpuntil(a,b,c,d,e,f,g,h) S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h) #define put_byte(a,b) S_put_byte(aTHX_ a,b) #define dump_trie(a,b) S_dump_trie(aTHX_ a,b) #define dump_trie_interim_list(a,b,c) S_dump_trie_interim_list(aTHX_ a,b,c) #define dump_trie_interim_table(a,b,c) S_dump_trie_interim_table(aTHX_ a,b,c) #define regtail_study(a,b,c,d) S_regtail_study(aTHX_ a,b,c,d) #endif # endif #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) #if defined(PERL_CORE) || defined(PERL_EXT) #define regmatch(a,b) S_regmatch(aTHX_ a,b) #define regrepeat(a,b,c) S_regrepeat(aTHX_ a,b,c) #define regtry(a,b) S_regtry(aTHX_ a,b) #define reginclass(a,b,c,d,e) S_reginclass(aTHX_ a,b,c,d,e) #define regcppush(a) S_regcppush(aTHX_ a) #define regcppop(a) S_regcppop(aTHX_ a) #define reghop3 S_reghop3 #endif #ifdef XXX_dmq #if defined(PERL_CORE) || defined(PERL_EXT) #define reghop4 S_reghop4 #endif #endif #if defined(PERL_CORE) || defined(PERL_EXT) #define reghopmaybe3 S_reghopmaybe3 #define find_byclass(a,b,c,d,e) S_find_byclass(aTHX_ a,b,c,d,e) #define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a) #define to_byte_substr(a) S_to_byte_substr(aTHX_ a) #define reg_check_named_buff_matched(a,b) S_reg_check_named_buff_matched(aTHX_ a,b) #endif # ifdef DEBUGGING #if defined(PERL_CORE) || defined(PERL_EXT) #define dump_exec_pos(a,b,c,d,e,f) S_dump_exec_pos(aTHX_ a,b,c,d,e,f) #define debug_start_match(a,b,c,d,e) S_debug_start_match(aTHX_ a,b,c,d,e) #endif # endif #endif #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define deb_curcv(a) S_deb_curcv(aTHX_ a) #define debprof(a) S_debprof(aTHX_ a) #define sequence(a) S_sequence(aTHX_ a) #define sequence_tail(a) S_sequence_tail(aTHX_ a) #define sequence_num(a) S_sequence_num(aTHX_ a) #define pm_description(a) S_pm_description(aTHX_ a) #endif #endif #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define save_scalar_at(a) S_save_scalar_at(aTHX_ a) #endif #endif #if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #endif #endif #if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #endif #endif #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define uiv_2buf S_uiv_2buf #define sv_unglob(a) S_sv_unglob(aTHX_ a) #define not_a_number(a) S_not_a_number(aTHX_ a) #define visit(a,b,c) S_visit(aTHX_ a,b,c) #define sv_del_backref(a,b) S_sv_del_backref(aTHX_ a,b) #define varname(a,b,c,d,e,f) S_varname(aTHX_ a,b,c,d,e,f) #endif # ifdef DEBUGGING #ifdef PERL_CORE #define del_sv(a) S_del_sv(aTHX_ a) #endif # endif # if !defined(NV_PRESERVES_UV) #ifdef PERL_CORE #define sv_2iuv_non_preserve(a,b) S_sv_2iuv_non_preserve(aTHX_ a,b) #endif # endif #ifdef PERL_CORE #define expect_number(a) S_expect_number(aTHX_ a) #endif #ifdef PERL_CORE #define sv_pos_u2b_forwards S_sv_pos_u2b_forwards #define sv_pos_u2b_midway S_sv_pos_u2b_midway #define sv_pos_u2b_cached(a,b,c,d,e,f,g) S_sv_pos_u2b_cached(aTHX_ a,b,c,d,e,f,g) #define utf8_mg_pos_cache_update(a,b,c,d,e) S_utf8_mg_pos_cache_update(aTHX_ a,b,c,d,e) #define sv_pos_b2u_forwards(a,b) S_sv_pos_b2u_forwards(aTHX_ a,b) #define sv_pos_b2u_midway(a,b,c,d) S_sv_pos_b2u_midway(aTHX_ a,b,c,d) #define stringify_regexp(a,b,c) S_stringify_regexp(aTHX_ a,b,c) #define F0convert S_F0convert #endif # if defined(PERL_OLD_COPY_ON_WRITE) #ifdef PERL_CORE #define sv_release_COW(a,b,c,d) S_sv_release_COW(aTHX_ a,b,c,d) #endif # endif #ifdef PERL_CORE #define more_sv() S_more_sv(aTHX) #define more_bodies(a) S_more_bodies(aTHX_ a) #define sv_2iuv_common(a) S_sv_2iuv_common(aTHX_ a) #define glob_assign_glob(a,b,c) S_glob_assign_glob(aTHX_ a,b,c) #define glob_assign_ref(a,b) S_glob_assign_ref(aTHX_ a,b) #endif # if defined(USE_ITHREADS) #ifdef PERL_CORE #define ptr_table_find S_ptr_table_find #endif # endif #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define check_uni() S_check_uni(aTHX) #define force_next(a) S_force_next(aTHX_ a) #define force_version(a,b) S_force_version(aTHX_ a,b) #define force_word(a,b,c,d,e) S_force_word(aTHX_ a,b,c,d,e) #define tokeq(a) S_tokeq(aTHX_ a) #define pending_ident() S_pending_ident(aTHX) #define scan_const(a) S_scan_const(aTHX_ a) #define scan_formline(a) S_scan_formline(aTHX_ a) #define scan_heredoc(a) S_scan_heredoc(aTHX_ a) #define scan_ident(a,b,c,d,e) S_scan_ident(aTHX_ a,b,c,d,e) #define scan_inputsymbol(a) S_scan_inputsymbol(aTHX_ a) #define scan_pat(a,b) S_scan_pat(aTHX_ a,b) #define scan_str(a,b,c) S_scan_str(aTHX_ a,b,c) #define scan_subst(a) S_scan_subst(aTHX_ a) #define scan_trans(a) S_scan_trans(aTHX_ a) #define scan_word(a,b,c,d,e) S_scan_word(aTHX_ a,b,c,d,e) #define skipspace(a) S_skipspace(aTHX_ a) #define swallow_bom(a) S_swallow_bom(aTHX_ a) #define checkcomma(a,b,c) S_checkcomma(aTHX_ a,b,c) #define feature_is_enabled(a,b) S_feature_is_enabled(aTHX_ a,b) #define force_ident(a,b) S_force_ident(aTHX_ a,b) #define incline(a) S_incline(aTHX_ a) #define intuit_method(a,b,c) S_intuit_method(aTHX_ a,b,c) #define intuit_more(a) S_intuit_more(aTHX_ a) #define lop(a,b,c) S_lop(aTHX_ a,b,c) #define missingterm(a) S_missingterm(aTHX_ a) #define no_op(a,b) S_no_op(aTHX_ a,b) #define set_csh() S_set_csh(aTHX) #define sublex_done() S_sublex_done(aTHX) #define sublex_push() S_sublex_push(aTHX) #define sublex_start() S_sublex_start(aTHX) #define filter_gets(a,b,c) S_filter_gets(aTHX_ a,b,c) #define find_in_my_stash(a,b) S_find_in_my_stash(aTHX_ a,b) #define tokenize_use(a,b) S_tokenize_use(aTHX_ a,b) #define new_constant(a,b,c,d,e,f) S_new_constant(aTHX_ a,b,c,d,e,f) #define ao(a) S_ao(aTHX_ a) #define incl_perldb() S_incl_perldb(aTHX) #endif # if defined(PERL_CR_FILTER) #ifdef PERL_CORE #define cr_textfilter(a,b,c) S_cr_textfilter(aTHX_ a,b,c) #define strip_return(a) S_strip_return(aTHX_ a) #endif # endif # if defined(DEBUGGING) #ifdef PERL_CORE #define tokereport(a) S_tokereport(aTHX_ a) #define printbuf(a,b) S_printbuf(aTHX_ a,b) #endif # endif #endif #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define isa_lookup(a,b,c,d,e) S_isa_lookup(aTHX_ a,b,c,d,e) #endif #endif #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) #if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) #ifdef PERL_CORE #define stdize_locale(a) S_stdize_locale(aTHX_ a) #endif #endif #endif #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define closest_cop(a,b) S_closest_cop(aTHX_ a,b) #define mess_alloc() S_mess_alloc(aTHX) #define vdie_croak_common(a,b,c,d) S_vdie_croak_common(aTHX_ a,b,c,d) #define vdie_common(a,b,c,d) S_vdie_common(aTHX_ a,b,c,d) #define write_no_mem() S_write_no_mem(aTHX) #endif #endif #if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define mulexp10 S_mulexp10 #endif #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define is_utf8_char_slow S_is_utf8_char_slow #define is_utf8_common(a,b,c) S_is_utf8_common(aTHX_ a,b,c) #define swash_get(a,b,c) S_swash_get(aTHX_ a,b,c) #endif #endif #define sv_setsv_flags(a,b,c) Perl_sv_setsv_flags(aTHX_ a,b,c) #define sv_catpvn_flags(a,b,c,d) Perl_sv_catpvn_flags(aTHX_ a,b,c,d) #define sv_catsv_flags(a,b,c) Perl_sv_catsv_flags(aTHX_ a,b,c) #define sv_utf8_upgrade_flags(a,b) Perl_sv_utf8_upgrade_flags(aTHX_ a,b) #define sv_pvn_force_flags(a,b,c) Perl_sv_pvn_force_flags(aTHX_ a,b,c) #define sv_copypv(a,b) Perl_sv_copypv(aTHX_ a,b) #define my_atof2(a,b) Perl_my_atof2(aTHX_ a,b) #define my_socketpair Perl_my_socketpair #ifdef PERL_OLD_COPY_ON_WRITE #if defined(PERL_CORE) || defined(PERL_EXT) #define sv_setsv_cow(a,b) Perl_sv_setsv_cow(aTHX_ a,b) #endif #endif #if defined(USE_PERLIO) && !defined(USE_SFIO) #define PerlIO_close(a) Perl_PerlIO_close(aTHX_ a) #define PerlIO_fill(a) Perl_PerlIO_fill(aTHX_ a) #define PerlIO_fileno(a) Perl_PerlIO_fileno(aTHX_ a) #define PerlIO_eof(a) Perl_PerlIO_eof(aTHX_ a) #define PerlIO_error(a) Perl_PerlIO_error(aTHX_ a) #define PerlIO_flush(a) Perl_PerlIO_flush(aTHX_ a) #define PerlIO_clearerr(a) Perl_PerlIO_clearerr(aTHX_ a) #define PerlIO_set_cnt(a,b) Perl_PerlIO_set_cnt(aTHX_ a,b) #define PerlIO_set_ptrcnt(a,b,c) Perl_PerlIO_set_ptrcnt(aTHX_ a,b,c) #define PerlIO_setlinebuf(a) Perl_PerlIO_setlinebuf(aTHX_ a) #define PerlIO_read(a,b,c) Perl_PerlIO_read(aTHX_ a,b,c) #define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c) #define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c) #define PerlIO_tell(a) Perl_PerlIO_tell(aTHX_ a) #define PerlIO_seek(a,b,c) Perl_PerlIO_seek(aTHX_ a,b,c) #define PerlIO_get_base(a) Perl_PerlIO_get_base(aTHX_ a) #define PerlIO_get_ptr(a) Perl_PerlIO_get_ptr(aTHX_ a) #define PerlIO_get_bufsiz(a) Perl_PerlIO_get_bufsiz(aTHX_ a) #define PerlIO_get_cnt(a) Perl_PerlIO_get_cnt(aTHX_ a) #define PerlIO_stdin() Perl_PerlIO_stdin(aTHX) #define PerlIO_stdout() Perl_PerlIO_stdout(aTHX) #define PerlIO_stderr() Perl_PerlIO_stderr(aTHX) #endif /* PERLIO_LAYERS */ #ifdef PERL_CORE #define deb_stack_all() Perl_deb_stack_all(aTHX) #endif #ifdef PERL_IN_DEB_C #ifdef PERL_CORE #define deb_stack_n(a,b,c,d,e) S_deb_stack_n(aTHX_ a,b,c,d,e) #endif #endif #ifdef PERL_CORE #define pad_new(a) Perl_pad_new(aTHX_ a) #define pad_undef(a) Perl_pad_undef(aTHX_ a) #define pad_add_name(a,b,c,d,e) Perl_pad_add_name(aTHX_ a,b,c,d,e) #define pad_add_anon(a,b) Perl_pad_add_anon(aTHX_ a,b) #define pad_check_dup(a,b,c) Perl_pad_check_dup(aTHX_ a,b,c) #endif #ifdef DEBUGGING #ifdef PERL_CORE #define pad_setsv(a,b) Perl_pad_setsv(aTHX_ a,b) #endif #endif #ifdef PERL_CORE #define pad_block_start(a) Perl_pad_block_start(aTHX_ a) #define pad_tidy(a) Perl_pad_tidy(aTHX_ a) #define do_dump_pad(a,b,c,d) Perl_do_dump_pad(aTHX_ a,b,c,d) #define pad_fixup_inner_anons(a,b,c) Perl_pad_fixup_inner_anons(aTHX_ a,b,c) #endif #ifdef PERL_CORE #define pad_push(a,b) Perl_pad_push(aTHX_ a,b) #define pad_compname_type(a) Perl_pad_compname_type(aTHX_ a) #endif #if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define pad_findlex(a,b,c,d,e,f,g) S_pad_findlex(aTHX_ a,b,c,d,e,f,g) #endif # if defined(DEBUGGING) #ifdef PERL_CORE #define cv_dump(a,b) S_cv_dump(aTHX_ a,b) #endif # endif #endif #ifdef PERL_CORE #define find_runcv(a) Perl_find_runcv(aTHX_ a) #define free_tied_hv_pool() Perl_free_tied_hv_pool(aTHX) #endif #if defined(DEBUGGING) #ifdef PERL_CORE #define get_debug_opts(a,b) Perl_get_debug_opts(aTHX_ a,b) #endif #endif #define save_set_svflags(a,b,c) Perl_save_set_svflags(aTHX_ a,b,c) #define hv_scalar(a) Perl_hv_scalar(aTHX_ a) #define hv_name_set(a,b,c,d) Perl_hv_name_set(aTHX_ a,b,c,d) #ifdef PERL_CORE #endif #if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #endif #endif #define hv_clear_placeholders(a) Perl_hv_clear_placeholders(aTHX_ a) #ifdef PERL_CORE #define magic_scalarpack(a,b) Perl_magic_scalarpack(aTHX_ a,b) #endif #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define find_hash_subscript(a,b) S_find_hash_subscript(aTHX_ a,b) #define find_array_subscript(a,b) S_find_array_subscript(aTHX_ a,b) #define find_uninit_var(a,b,c) S_find_uninit_var(aTHX_ a,b,c) #endif #endif #ifdef PERL_NEED_MY_HTOLE16 #ifdef PERL_CORE #define my_htole16 Perl_my_htole16 #endif #endif #ifdef PERL_NEED_MY_LETOH16 #ifdef PERL_CORE #define my_letoh16 Perl_my_letoh16 #endif #endif #ifdef PERL_NEED_MY_HTOBE16 #ifdef PERL_CORE #define my_htobe16 Perl_my_htobe16 #endif #endif #ifdef PERL_NEED_MY_BETOH16 #ifdef PERL_CORE #define my_betoh16 Perl_my_betoh16 #endif #endif #ifdef PERL_NEED_MY_HTOLE32 #ifdef PERL_CORE #define my_htole32 Perl_my_htole32 #endif #endif #ifdef PERL_NEED_MY_LETOH32 #ifdef PERL_CORE #define my_letoh32 Perl_my_letoh32 #endif #endif #ifdef PERL_NEED_MY_HTOBE32 #ifdef PERL_CORE #define my_htobe32 Perl_my_htobe32 #endif #endif #ifdef PERL_NEED_MY_BETOH32 #ifdef PERL_CORE #define my_betoh32 Perl_my_betoh32 #endif #endif #ifdef PERL_NEED_MY_HTOLE64 #ifdef PERL_CORE #define my_htole64 Perl_my_htole64 #endif #endif #ifdef PERL_NEED_MY_LETOH64 #ifdef PERL_CORE #define my_letoh64 Perl_my_letoh64 #endif #endif #ifdef PERL_NEED_MY_HTOBE64 #ifdef PERL_CORE #define my_htobe64 Perl_my_htobe64 #endif #endif #ifdef PERL_NEED_MY_BETOH64 #ifdef PERL_CORE #define my_betoh64 Perl_my_betoh64 #endif #endif #ifdef PERL_NEED_MY_HTOLES #ifdef PERL_CORE #define my_htoles Perl_my_htoles #endif #endif #ifdef PERL_NEED_MY_LETOHS #ifdef PERL_CORE #define my_letohs Perl_my_letohs #endif #endif #ifdef PERL_NEED_MY_HTOBES #ifdef PERL_CORE #define my_htobes Perl_my_htobes #endif #endif #ifdef PERL_NEED_MY_BETOHS #ifdef PERL_CORE #define my_betohs Perl_my_betohs #endif #endif #ifdef PERL_NEED_MY_HTOLEI #ifdef PERL_CORE #define my_htolei Perl_my_htolei #endif #endif #ifdef PERL_NEED_MY_LETOHI #ifdef PERL_CORE #define my_letohi Perl_my_letohi #endif #endif #ifdef PERL_NEED_MY_HTOBEI #ifdef PERL_CORE #define my_htobei Perl_my_htobei #endif #endif #ifdef PERL_NEED_MY_BETOHI #ifdef PERL_CORE #define my_betohi Perl_my_betohi #endif #endif #ifdef PERL_NEED_MY_HTOLEL #ifdef PERL_CORE #define my_htolel Perl_my_htolel #endif #endif #ifdef PERL_NEED_MY_LETOHL #ifdef PERL_CORE #define my_letohl Perl_my_letohl #endif #endif #ifdef PERL_NEED_MY_HTOBEL #ifdef PERL_CORE #define my_htobel Perl_my_htobel #endif #endif #ifdef PERL_NEED_MY_BETOHL #ifdef PERL_CORE #define my_betohl Perl_my_betohl #endif #endif #ifdef PERL_CORE #define my_swabn Perl_my_swabn #endif #define gv_fetchpvn_flags(a,b,c,d) Perl_gv_fetchpvn_flags(aTHX_ a,b,c,d) #define gv_fetchsv(a,b,c) Perl_gv_fetchsv(aTHX_ a,b,c) #ifdef PERL_CORE #define is_gv_magical_sv(a,b) Perl_is_gv_magical_sv(aTHX_ a,b) #endif #define stashpv_hvname_match(a,b) Perl_stashpv_hvname_match(aTHX_ a,b) #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP #ifdef PERL_CORE #define dump_sv_child(a) Perl_dump_sv_child(aTHX_ a) #endif #endif #ifdef PERL_DONT_CREATE_GVSV #define gv_SVadd(a) Perl_gv_SVadd(aTHX_ a) #endif #if defined(PERL_CORE) || defined(PERL_EXT) #endif #ifdef PERL_CORE #define offer_nice_chunk(a,b) Perl_offer_nice_chunk(aTHX_ a,b) #endif #ifndef SPRINTF_RETURNS_STRLEN #endif #ifdef PERL_CORE #define my_clearenv() Perl_my_clearenv(aTHX) #endif #ifdef PERL_IMPLICIT_CONTEXT #endif #ifndef HAS_STRLCAT #endif #ifndef HAS_STRLCPY #endif #ifdef PERL_MAD #ifdef PERL_CORE #define pad_peg Perl_pad_peg #endif #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #endif #endif #ifdef PERL_CORE #define xmldump_vindent(a,b,c,d) Perl_xmldump_vindent(aTHX_ a,b,c,d) #define xmldump_all() Perl_xmldump_all(aTHX) #define xmldump_packsubs(a) Perl_xmldump_packsubs(aTHX_ a) #define xmldump_sub(a) Perl_xmldump_sub(aTHX_ a) #define xmldump_form(a) Perl_xmldump_form(aTHX_ a) #define xmldump_eval() Perl_xmldump_eval(aTHX) #define sv_catxmlsv(a,b) Perl_sv_catxmlsv(aTHX_ a,b) #define sv_catxmlpvn(a,b,c,d) Perl_sv_catxmlpvn(aTHX_ a,b,c,d) #define sv_xmlpeek(a) Perl_sv_xmlpeek(aTHX_ a) #define do_pmop_xmldump(a,b,c) Perl_do_pmop_xmldump(aTHX_ a,b,c) #define pmop_xmldump(a) Perl_pmop_xmldump(aTHX_ a) #define do_op_xmldump(a,b,c) Perl_do_op_xmldump(aTHX_ a,b,c) #define op_xmldump(a) Perl_op_xmldump(aTHX_ a) #endif #ifdef PERL_CORE #define newTOKEN(a,b,c) Perl_newTOKEN(aTHX_ a,b,c) #define token_free(a) Perl_token_free(aTHX_ a) #define token_getmad(a,b,c) Perl_token_getmad(aTHX_ a,b,c) #define op_getmad_weak(a,b,c) Perl_op_getmad_weak(aTHX_ a,b,c) #define op_getmad(a,b,c) Perl_op_getmad(aTHX_ a,b,c) #define prepend_madprops(a,b,c) Perl_prepend_madprops(aTHX_ a,b,c) #define append_madprops(a,b,c) Perl_append_madprops(aTHX_ a,b,c) #define addmad(a,b,c) Perl_addmad(aTHX_ a,b,c) #define newMADsv(a,b) Perl_newMADsv(aTHX_ a,b) #define newMADPROP(a,b,c,d) Perl_newMADPROP(aTHX_ a,b,c,d) #define mad_free(a) Perl_mad_free(aTHX_ a) #endif # if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) #ifdef PERL_CORE #define skipspace0(a) S_skipspace0(aTHX_ a) #define skipspace1(a) S_skipspace1(aTHX_ a) #define skipspace2(a,b) S_skipspace2(aTHX_ a,b) #define start_force(a) S_start_force(aTHX_ a) #define curmad(a,b) S_curmad(aTHX_ a,b) #endif # endif #ifdef PERL_CORE #define madlex() Perl_madlex(aTHX) #define madparse() Perl_madparse(aTHX) #endif #endif #define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a) #define ck_bitop(a) Perl_ck_bitop(aTHX_ a) #define ck_chdir(a) Perl_ck_chdir(aTHX_ a) #define ck_concat(a) Perl_ck_concat(aTHX_ a) #define ck_defined(a) Perl_ck_defined(aTHX_ a) #define ck_delete(a) Perl_ck_delete(aTHX_ a) #define ck_die(a) Perl_ck_die(aTHX_ a) #define ck_eof(a) Perl_ck_eof(aTHX_ a) #define ck_eval(a) Perl_ck_eval(aTHX_ a) #define ck_exec(a) Perl_ck_exec(aTHX_ a) #define ck_exists(a) Perl_ck_exists(aTHX_ a) #define ck_exit(a) Perl_ck_exit(aTHX_ a) #define ck_ftst(a) Perl_ck_ftst(aTHX_ a) #define ck_fun(a) Perl_ck_fun(aTHX_ a) #define ck_glob(a) Perl_ck_glob(aTHX_ a) #define ck_grep(a) Perl_ck_grep(aTHX_ a) #define ck_index(a) Perl_ck_index(aTHX_ a) #define ck_join(a) Perl_ck_join(aTHX_ a) #define ck_lengthconst(a) Perl_ck_lengthconst(aTHX_ a) #define ck_lfun(a) Perl_ck_lfun(aTHX_ a) #define ck_listiob(a) Perl_ck_listiob(aTHX_ a) #define ck_match(a) Perl_ck_match(aTHX_ a) #define ck_method(a) Perl_ck_method(aTHX_ a) #define ck_null(a) Perl_ck_null(aTHX_ a) #define ck_open(a) Perl_ck_open(aTHX_ a) #define ck_repeat(a) Perl_ck_repeat(aTHX_ a) #define ck_require(a) Perl_ck_require(aTHX_ a) #define ck_return(a) Perl_ck_return(aTHX_ a) #define ck_rfun(a) Perl_ck_rfun(aTHX_ a) #define ck_rvconst(a) Perl_ck_rvconst(aTHX_ a) #define ck_sassign(a) Perl_ck_sassign(aTHX_ a) #define ck_say(a) Perl_ck_say(aTHX_ a) #define ck_select(a) Perl_ck_select(aTHX_ a) #define ck_shift(a) Perl_ck_shift(aTHX_ a) #define ck_smartmatch(a) Perl_ck_smartmatch(aTHX_ a) #define ck_sort(a) Perl_ck_sort(aTHX_ a) #define ck_spair(a) Perl_ck_spair(aTHX_ a) #define ck_split(a) Perl_ck_split(aTHX_ a) #define ck_subr(a) Perl_ck_subr(aTHX_ a) #define ck_substr(a) Perl_ck_substr(aTHX_ a) #define ck_svconst(a) Perl_ck_svconst(aTHX_ a) #define ck_trunc(a) Perl_ck_trunc(aTHX_ a) #define ck_unpack(a) Perl_ck_unpack(aTHX_ a) #define pp_aassign() Perl_pp_aassign(aTHX) #define pp_abs() Perl_pp_abs(aTHX) #define pp_accept() Perl_pp_accept(aTHX) #define pp_add() Perl_pp_add(aTHX) #define pp_aelem() Perl_pp_aelem(aTHX) #define pp_aelemfast() Perl_pp_aelemfast(aTHX) #define pp_alarm() Perl_pp_alarm(aTHX) #define pp_and() Perl_pp_and(aTHX) #define pp_andassign() Perl_pp_andassign(aTHX) #define pp_anoncode() Perl_pp_anoncode(aTHX) #define pp_anonhash() Perl_pp_anonhash(aTHX) #define pp_anonlist() Perl_pp_anonlist(aTHX) #define pp_aslice() Perl_pp_aslice(aTHX) #define pp_atan2() Perl_pp_atan2(aTHX) #define pp_av2arylen() Perl_pp_av2arylen(aTHX) #define pp_backtick() Perl_pp_backtick(aTHX) #define pp_bind() Perl_pp_bind(aTHX) #define pp_binmode() Perl_pp_binmode(aTHX) #define pp_bit_and() Perl_pp_bit_and(aTHX) #define pp_bit_or() Perl_pp_bit_or(aTHX) #define pp_bit_xor() Perl_pp_bit_xor(aTHX) #define pp_bless() Perl_pp_bless(aTHX) #define pp_break() Perl_pp_break(aTHX) #define pp_caller() Perl_pp_caller(aTHX) #define pp_chdir() Perl_pp_chdir(aTHX) #define pp_chmod() Perl_pp_chmod(aTHX) #define pp_chomp() Perl_pp_chomp(aTHX) #define pp_chop() Perl_pp_chop(aTHX) #define pp_chown() Perl_pp_chown(aTHX) #define pp_chr() Perl_pp_chr(aTHX) #define pp_chroot() Perl_pp_chroot(aTHX) #define pp_close() Perl_pp_close(aTHX) #define pp_closedir() Perl_pp_closedir(aTHX) #define pp_complement() Perl_pp_complement(aTHX) #define pp_concat() Perl_pp_concat(aTHX) #define pp_cond_expr() Perl_pp_cond_expr(aTHX) #define pp_connect() Perl_pp_connect(aTHX) #define pp_const() Perl_pp_const(aTHX) #define pp_continue() Perl_pp_continue(aTHX) #define pp_cos() Perl_pp_cos(aTHX) #define pp_crypt() Perl_pp_crypt(aTHX) #define pp_dbmclose() Perl_pp_dbmclose(aTHX) #define pp_dbmopen() Perl_pp_dbmopen(aTHX) #define pp_dbstate() Perl_pp_dbstate(aTHX) #define pp_defined() Perl_pp_defined(aTHX) #define pp_delete() Perl_pp_delete(aTHX) #define pp_die() Perl_pp_die(aTHX) #define pp_divide() Perl_pp_divide(aTHX) #define pp_dofile() Perl_pp_dofile(aTHX) #define pp_dor() Perl_pp_dor(aTHX) #define pp_dorassign() Perl_pp_dorassign(aTHX) #define pp_dump() Perl_pp_dump(aTHX) #define pp_each() Perl_pp_each(aTHX) #define pp_egrent() Perl_pp_egrent(aTHX) #define pp_ehostent() Perl_pp_ehostent(aTHX) #define pp_enetent() Perl_pp_enetent(aTHX) #define pp_enter() Perl_pp_enter(aTHX) #define pp_entereval() Perl_pp_entereval(aTHX) #define pp_entergiven() Perl_pp_entergiven(aTHX) #define pp_enteriter() Perl_pp_enteriter(aTHX) #define pp_enterloop() Perl_pp_enterloop(aTHX) #define pp_entersub() Perl_pp_entersub(aTHX) #define pp_entertry() Perl_pp_entertry(aTHX) #define pp_enterwhen() Perl_pp_enterwhen(aTHX) #define pp_enterwrite() Perl_pp_enterwrite(aTHX) #define pp_eof() Perl_pp_eof(aTHX) #define pp_eprotoent() Perl_pp_eprotoent(aTHX) #define pp_epwent() Perl_pp_epwent(aTHX) #define pp_eq() Perl_pp_eq(aTHX) #define pp_eservent() Perl_pp_eservent(aTHX) #define pp_exec() Perl_pp_exec(aTHX) #define pp_exists() Perl_pp_exists(aTHX) #define pp_exit() Perl_pp_exit(aTHX) #define pp_exp() Perl_pp_exp(aTHX) #define pp_fcntl() Perl_pp_fcntl(aTHX) #define pp_fileno() Perl_pp_fileno(aTHX) #define pp_flip() Perl_pp_flip(aTHX) #define pp_flock() Perl_pp_flock(aTHX) #define pp_flop() Perl_pp_flop(aTHX) #define pp_fork() Perl_pp_fork(aTHX) #define pp_formline() Perl_pp_formline(aTHX) #define pp_ftatime() Perl_pp_ftatime(aTHX) #define pp_ftbinary() Perl_pp_ftbinary(aTHX) #define pp_ftblk() Perl_pp_ftblk(aTHX) #define pp_ftchr() Perl_pp_ftchr(aTHX) #define pp_ftctime() Perl_pp_ftctime(aTHX) #define pp_ftdir() Perl_pp_ftdir(aTHX) #define pp_fteexec() Perl_pp_fteexec(aTHX) #define pp_fteowned() Perl_pp_fteowned(aTHX) #define pp_fteread() Perl_pp_fteread(aTHX) #define pp_ftewrite() Perl_pp_ftewrite(aTHX) #define pp_ftfile() Perl_pp_ftfile(aTHX) #define pp_ftis() Perl_pp_ftis(aTHX) #define pp_ftlink() Perl_pp_ftlink(aTHX) #define pp_ftmtime() Perl_pp_ftmtime(aTHX) #define pp_ftpipe() Perl_pp_ftpipe(aTHX) #define pp_ftrexec() Perl_pp_ftrexec(aTHX) #define pp_ftrowned() Perl_pp_ftrowned(aTHX) #define pp_ftrread() Perl_pp_ftrread(aTHX) #define pp_ftrwrite() Perl_pp_ftrwrite(aTHX) #define pp_ftsgid() Perl_pp_ftsgid(aTHX) #define pp_ftsize() Perl_pp_ftsize(aTHX) #define pp_ftsock() Perl_pp_ftsock(aTHX) #define pp_ftsuid() Perl_pp_ftsuid(aTHX) #define pp_ftsvtx() Perl_pp_ftsvtx(aTHX) #define pp_fttext() Perl_pp_fttext(aTHX) #define pp_fttty() Perl_pp_fttty(aTHX) #define pp_ftzero() Perl_pp_ftzero(aTHX) #define pp_ge() Perl_pp_ge(aTHX) #define pp_gelem() Perl_pp_gelem(aTHX) #define pp_getc() Perl_pp_getc(aTHX) #define pp_getlogin() Perl_pp_getlogin(aTHX) #define pp_getpeername() Perl_pp_getpeername(aTHX) #define pp_getpgrp() Perl_pp_getpgrp(aTHX) #define pp_getppid() Perl_pp_getppid(aTHX) #define pp_getpriority() Perl_pp_getpriority(aTHX) #define pp_getsockname() Perl_pp_getsockname(aTHX) #define pp_ggrent() Perl_pp_ggrent(aTHX) #define pp_ggrgid() Perl_pp_ggrgid(aTHX) #define pp_ggrnam() Perl_pp_ggrnam(aTHX) #define pp_ghbyaddr() Perl_pp_ghbyaddr(aTHX) #define pp_ghbyname() Perl_pp_ghbyname(aTHX) #define pp_ghostent() Perl_pp_ghostent(aTHX) #define pp_glob() Perl_pp_glob(aTHX) #define pp_gmtime() Perl_pp_gmtime(aTHX) #define pp_gnbyaddr() Perl_pp_gnbyaddr(aTHX) #define pp_gnbyname() Perl_pp_gnbyname(aTHX) #define pp_gnetent() Perl_pp_gnetent(aTHX) #define pp_goto() Perl_pp_goto(aTHX) #define pp_gpbyname() Perl_pp_gpbyname(aTHX) #define pp_gpbynumber() Perl_pp_gpbynumber(aTHX) #define pp_gprotoent() Perl_pp_gprotoent(aTHX) #define pp_gpwent() Perl_pp_gpwent(aTHX) #define pp_gpwnam() Perl_pp_gpwnam(aTHX) #define pp_gpwuid() Perl_pp_gpwuid(aTHX) #define pp_grepstart() Perl_pp_grepstart(aTHX) #define pp_grepwhile() Perl_pp_grepwhile(aTHX) #define pp_gsbyname() Perl_pp_gsbyname(aTHX) #define pp_gsbyport() Perl_pp_gsbyport(aTHX) #define pp_gservent() Perl_pp_gservent(aTHX) #define pp_gsockopt() Perl_pp_gsockopt(aTHX) #define pp_gt() Perl_pp_gt(aTHX) #define pp_gv() Perl_pp_gv(aTHX) #define pp_gvsv() Perl_pp_gvsv(aTHX) #define pp_helem() Perl_pp_helem(aTHX) #define pp_hex() Perl_pp_hex(aTHX) #define pp_hslice() Perl_pp_hslice(aTHX) #define pp_i_add() Perl_pp_i_add(aTHX) #define pp_i_divide() Perl_pp_i_divide(aTHX) #define pp_i_eq() Perl_pp_i_eq(aTHX) #define pp_i_ge() Perl_pp_i_ge(aTHX) #define pp_i_gt() Perl_pp_i_gt(aTHX) #define pp_i_le() Perl_pp_i_le(aTHX) #define pp_i_lt() Perl_pp_i_lt(aTHX) #define pp_i_modulo() Perl_pp_i_modulo(aTHX) #define pp_i_multiply() Perl_pp_i_multiply(aTHX) #define pp_i_ncmp() Perl_pp_i_ncmp(aTHX) #define pp_i_ne() Perl_pp_i_ne(aTHX) #define pp_i_negate() Perl_pp_i_negate(aTHX) #define pp_i_subtract() Perl_pp_i_subtract(aTHX) #define pp_index() Perl_pp_index(aTHX) #define pp_int() Perl_pp_int(aTHX) #define pp_ioctl() Perl_pp_ioctl(aTHX) #define pp_iter() Perl_pp_iter(aTHX) #define pp_join() Perl_pp_join(aTHX) #define pp_keys() Perl_pp_keys(aTHX) #define pp_kill() Perl_pp_kill(aTHX) #define pp_last() Perl_pp_last(aTHX) #define pp_lc() Perl_pp_lc(aTHX) #define pp_lcfirst() Perl_pp_lcfirst(aTHX) #define pp_le() Perl_pp_le(aTHX) #define pp_leave() Perl_pp_leave(aTHX) #define pp_leaveeval() Perl_pp_leaveeval(aTHX) #define pp_leavegiven() Perl_pp_leavegiven(aTHX) #define pp_leaveloop() Perl_pp_leaveloop(aTHX) #define pp_leavesub() Perl_pp_leavesub(aTHX) #define pp_leavesublv() Perl_pp_leavesublv(aTHX) #define pp_leavetry() Perl_pp_leavetry(aTHX) #define pp_leavewhen() Perl_pp_leavewhen(aTHX) #define pp_leavewrite() Perl_pp_leavewrite(aTHX) #define pp_left_shift() Perl_pp_left_shift(aTHX) #define pp_length() Perl_pp_length(aTHX) #define pp_lineseq() Perl_pp_lineseq(aTHX) #define pp_link() Perl_pp_link(aTHX) #define pp_list() Perl_pp_list(aTHX) #define pp_listen() Perl_pp_listen(aTHX) #define pp_localtime() Perl_pp_localtime(aTHX) #define pp_lock() Perl_pp_lock(aTHX) #define pp_log() Perl_pp_log(aTHX) #define pp_lslice() Perl_pp_lslice(aTHX) #define pp_lstat() Perl_pp_lstat(aTHX) #define pp_lt() Perl_pp_lt(aTHX) #define pp_mapstart() Perl_pp_mapstart(aTHX) #define pp_mapwhile() Perl_pp_mapwhile(aTHX) #define pp_match() Perl_pp_match(aTHX) #define pp_method() Perl_pp_method(aTHX) #define pp_method_named() Perl_pp_method_named(aTHX) #define pp_mkdir() Perl_pp_mkdir(aTHX) #define pp_modulo() Perl_pp_modulo(aTHX) #define pp_msgctl() Perl_pp_msgctl(aTHX) #define pp_msgget() Perl_pp_msgget(aTHX) #define pp_msgrcv() Perl_pp_msgrcv(aTHX) #define pp_msgsnd() Perl_pp_msgsnd(aTHX) #define pp_multiply() Perl_pp_multiply(aTHX) #define pp_ncmp() Perl_pp_ncmp(aTHX) #define pp_ne() Perl_pp_ne(aTHX) #define pp_negate() Perl_pp_negate(aTHX) #define pp_next() Perl_pp_next(aTHX) #define pp_nextstate() Perl_pp_nextstate(aTHX) #define pp_not() Perl_pp_not(aTHX) #define pp_null() Perl_pp_null(aTHX) #define pp_oct() Perl_pp_oct(aTHX) #define pp_open() Perl_pp_open(aTHX) #define pp_open_dir() Perl_pp_open_dir(aTHX) #define pp_or() Perl_pp_or(aTHX) #define pp_orassign() Perl_pp_orassign(aTHX) #define pp_ord() Perl_pp_ord(aTHX) #define pp_pack() Perl_pp_pack(aTHX) #define pp_padany() Perl_pp_padany(aTHX) #define pp_padav() Perl_pp_padav(aTHX) #define pp_padhv() Perl_pp_padhv(aTHX) #define pp_padsv() Perl_pp_padsv(aTHX) #define pp_pipe_op() Perl_pp_pipe_op(aTHX) #define pp_pop() Perl_pp_pop(aTHX) #define pp_pos() Perl_pp_pos(aTHX) #define pp_postdec() Perl_pp_postdec(aTHX) #define pp_postinc() Perl_pp_postinc(aTHX) #define pp_pow() Perl_pp_pow(aTHX) #define pp_predec() Perl_pp_predec(aTHX) #define pp_preinc() Perl_pp_preinc(aTHX) #define pp_print() Perl_pp_print(aTHX) #define pp_prototype() Perl_pp_prototype(aTHX) #define pp_prtf() Perl_pp_prtf(aTHX) #define pp_push() Perl_pp_push(aTHX) #define pp_pushmark() Perl_pp_pushmark(aTHX) #define pp_pushre() Perl_pp_pushre(aTHX) #define pp_qr() Perl_pp_qr(aTHX) #define pp_quotemeta() Perl_pp_quotemeta(aTHX) #define pp_rand() Perl_pp_rand(aTHX) #define pp_range() Perl_pp_range(aTHX) #define pp_rcatline() Perl_pp_rcatline(aTHX) #define pp_read() Perl_pp_read(aTHX) #define pp_readdir() Perl_pp_readdir(aTHX) #define pp_readline() Perl_pp_readline(aTHX) #define pp_readlink() Perl_pp_readlink(aTHX) #define pp_recv() Perl_pp_recv(aTHX) #define pp_redo() Perl_pp_redo(aTHX) #define pp_ref() Perl_pp_ref(aTHX) #define pp_refgen() Perl_pp_refgen(aTHX) #define pp_regcmaybe() Perl_pp_regcmaybe(aTHX) #define pp_regcomp() Perl_pp_regcomp(aTHX) #define pp_regcreset() Perl_pp_regcreset(aTHX) #define pp_rename() Perl_pp_rename(aTHX) #define pp_repeat() Perl_pp_repeat(aTHX) #define pp_require() Perl_pp_require(aTHX) #define pp_reset() Perl_pp_reset(aTHX) #define pp_return() Perl_pp_return(aTHX) #define pp_reverse() Perl_pp_reverse(aTHX) #define pp_rewinddir() Perl_pp_rewinddir(aTHX) #define pp_right_shift() Perl_pp_right_shift(aTHX) #define pp_rindex() Perl_pp_rindex(aTHX) #define pp_rmdir() Perl_pp_rmdir(aTHX) #define pp_rv2av() Perl_pp_rv2av(aTHX) #define pp_rv2cv() Perl_pp_rv2cv(aTHX) #define pp_rv2gv() Perl_pp_rv2gv(aTHX) #define pp_rv2hv() Perl_pp_rv2hv(aTHX) #define pp_rv2sv() Perl_pp_rv2sv(aTHX) #define pp_sassign() Perl_pp_sassign(aTHX) #define pp_say() Perl_pp_say(aTHX) #define pp_scalar() Perl_pp_scalar(aTHX) #define pp_schomp() Perl_pp_schomp(aTHX) #define pp_schop() Perl_pp_schop(aTHX) #define pp_scmp() Perl_pp_scmp(aTHX) #define pp_scope() Perl_pp_scope(aTHX) #define pp_seek() Perl_pp_seek(aTHX) #define pp_seekdir() Perl_pp_seekdir(aTHX) #define pp_select() Perl_pp_select(aTHX) #define pp_semctl() Perl_pp_semctl(aTHX) #define pp_semget() Perl_pp_semget(aTHX) #define pp_semop() Perl_pp_semop(aTHX) #define pp_send() Perl_pp_send(aTHX) #define pp_seq() Perl_pp_seq(aTHX) #define pp_setpgrp() Perl_pp_setpgrp(aTHX) #define pp_setpriority() Perl_pp_setpriority(aTHX) #define pp_setstate() Perl_pp_setstate(aTHX) #define pp_sge() Perl_pp_sge(aTHX) #define pp_sgrent() Perl_pp_sgrent(aTHX) #define pp_sgt() Perl_pp_sgt(aTHX) #define pp_shift() Perl_pp_shift(aTHX) #define pp_shmctl() Perl_pp_shmctl(aTHX) #define pp_shmget() Perl_pp_shmget(aTHX) #define pp_shmread() Perl_pp_shmread(aTHX) #define pp_shmwrite() Perl_pp_shmwrite(aTHX) #define pp_shostent() Perl_pp_shostent(aTHX) #define pp_shutdown() Perl_pp_shutdown(aTHX) #define pp_sin() Perl_pp_sin(aTHX) #define pp_sle() Perl_pp_sle(aTHX) #define pp_sleep() Perl_pp_sleep(aTHX) #define pp_slt() Perl_pp_slt(aTHX) #define pp_smartmatch() Perl_pp_smartmatch(aTHX) #define pp_sne() Perl_pp_sne(aTHX) #define pp_snetent() Perl_pp_snetent(aTHX) #define pp_socket() Perl_pp_socket(aTHX) #define pp_sockpair() Perl_pp_sockpair(aTHX) #define pp_sort() Perl_pp_sort(aTHX) #define pp_splice() Perl_pp_splice(aTHX) #define pp_split() Perl_pp_split(aTHX) #define pp_sprintf() Perl_pp_sprintf(aTHX) #define pp_sprotoent() Perl_pp_sprotoent(aTHX) #define pp_spwent() Perl_pp_spwent(aTHX) #define pp_sqrt() Perl_pp_sqrt(aTHX) #define pp_srand() Perl_pp_srand(aTHX) #define pp_srefgen() Perl_pp_srefgen(aTHX) #define pp_sselect() Perl_pp_sselect(aTHX) #define pp_sservent() Perl_pp_sservent(aTHX) #define pp_ssockopt() Perl_pp_ssockopt(aTHX) #define pp_stat() Perl_pp_stat(aTHX) #define pp_stringify() Perl_pp_stringify(aTHX) #define pp_stub() Perl_pp_stub(aTHX) #define pp_study() Perl_pp_study(aTHX) #define pp_subst() Perl_pp_subst(aTHX) #define pp_substcont() Perl_pp_substcont(aTHX) #define pp_substr() Perl_pp_substr(aTHX) #define pp_subtract() Perl_pp_subtract(aTHX) #define pp_symlink() Perl_pp_symlink(aTHX) #define pp_syscall() Perl_pp_syscall(aTHX) #define pp_sysopen() Perl_pp_sysopen(aTHX) #define pp_sysread() Perl_pp_sysread(aTHX) #define pp_sysseek() Perl_pp_sysseek(aTHX) #define pp_system() Perl_pp_system(aTHX) #define pp_syswrite() Perl_pp_syswrite(aTHX) #define pp_tell() Perl_pp_tell(aTHX) #define pp_telldir() Perl_pp_telldir(aTHX) #define pp_threadsv() Perl_pp_threadsv(aTHX) #define pp_tie() Perl_pp_tie(aTHX) #define pp_tied() Perl_pp_tied(aTHX) #define pp_time() Perl_pp_time(aTHX) #define pp_tms() Perl_pp_tms(aTHX) #define pp_trans() Perl_pp_trans(aTHX) #define pp_truncate() Perl_pp_truncate(aTHX) #define pp_uc() Perl_pp_uc(aTHX) #define pp_ucfirst() Perl_pp_ucfirst(aTHX) #define pp_umask() Perl_pp_umask(aTHX) #define pp_undef() Perl_pp_undef(aTHX) #define pp_unlink() Perl_pp_unlink(aTHX) #define pp_unpack() Perl_pp_unpack(aTHX) #define pp_unshift() Perl_pp_unshift(aTHX) #define pp_unstack() Perl_pp_unstack(aTHX) #define pp_untie() Perl_pp_untie(aTHX) #define pp_utime() Perl_pp_utime(aTHX) #define pp_values() Perl_pp_values(aTHX) #define pp_vec() Perl_pp_vec(aTHX) #define pp_wait() Perl_pp_wait(aTHX) #define pp_waitpid() Perl_pp_waitpid(aTHX) #define pp_wantarray() Perl_pp_wantarray(aTHX) #define pp_warn() Perl_pp_warn(aTHX) #define pp_xor() Perl_pp_xor(aTHX) #endif /* PERL_IMPLICIT_CONTEXT */ #endif /* #ifndef PERL_NO_SHORT_NAMES */ /* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to disable them. */ #if !defined(PERL_CORE) # define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,PTR2IV(ptr)) # define sv_setptrref(rv,ptr) sv_setref_iv(rv,NULL,PTR2IV(ptr)) #endif #if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) /* Compatibility for various misnamed functions. All functions in the API that begin with "perl_" (not "Perl_") take an explicit interpreter context pointer. The following are not like that, but since they had a "perl_" prefix in previous versions, we provide compatibility macros. */ # define perl_atexit(a,b) call_atexit(a,b) # define perl_call_argv(a,b,c) call_argv(a,b,c) # define perl_call_pv(a,b) call_pv(a,b) # define perl_call_method(a,b) call_method(a,b) # define perl_call_sv(a,b) call_sv(a,b) # define perl_eval_sv(a,b) eval_sv(a,b) # define perl_eval_pv(a,b) eval_pv(a,b) # define perl_require_pv(a) require_pv(a) # define perl_get_sv(a,b) get_sv(a,b) # define perl_get_av(a,b) get_av(a,b) # define perl_get_hv(a,b) get_hv(a,b) # define perl_get_cv(a,b) get_cv(a,b) # define perl_init_i18nl10n(a) init_i18nl10n(a) # define perl_init_i18nl14n(a) init_i18nl14n(a) # define perl_new_ctype(a) new_ctype(a) # define perl_new_collate(a) new_collate(a) # define perl_new_numeric(a) new_numeric(a) /* varargs functions can't be handled with CPP macros. :-( This provides a set of compatibility functions that don't take an extra argument but grab the context pointer using the macro dTHX. */ #if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_SHORT_NAMES) # define croak Perl_croak_nocontext # define deb Perl_deb_nocontext # define die Perl_die_nocontext # define form Perl_form_nocontext # define load_module Perl_load_module_nocontext # define mess Perl_mess_nocontext # define newSVpvf Perl_newSVpvf_nocontext # define sv_catpvf Perl_sv_catpvf_nocontext # define sv_setpvf Perl_sv_setpvf_nocontext # define warn Perl_warn_nocontext # define warner Perl_warner_nocontext # define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext # define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext #endif #endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */ #if !defined(PERL_IMPLICIT_CONTEXT) /* undefined symbols, point them back at the usual ones */ # define Perl_croak_nocontext Perl_croak # define Perl_die_nocontext Perl_die # define Perl_deb_nocontext Perl_deb # define Perl_form_nocontext Perl_form # define Perl_load_module_nocontext Perl_load_module # define Perl_mess_nocontext Perl_mess # define Perl_newSVpvf_nocontext Perl_newSVpvf # define Perl_sv_catpvf_nocontext Perl_sv_catpvf # define Perl_sv_setpvf_nocontext Perl_sv_setpvf # define Perl_warn_nocontext Perl_warn # define Perl_warner_nocontext Perl_warner # define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg # define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg #endif /* ex: set ro: */ Convert-Binary-C-0.76/tests/include/perlinc/thrdvar.h0000644000175000001440000001324311550664630021260 0ustar mhxusers/* thdrvar.h * * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* =head1 Global Variables */ /***********************************************/ /* Global only to current thread */ /***********************************************/ /* Don't forget to re-run embed.pl to propagate changes! */ /* The 'T' prefix is only needed for vars that need appropriate #defines * generated when built with or without USE_5005THREADS. It is also used * to generate the appropriate export list for win32. * * When building without USE_5005THREADS, these variables will be truly global. * When building without USE_5005THREADS but with MULTIPLICITY, these variables * will be global per-interpreter. */ /* Important ones in the first cache line (if alignment is done right) */ PERLVAR(Tstack_sp, SV **) /* top of the stack */ #ifdef OP_IN_REGISTER PERLVAR(Topsave, OP *) #else PERLVAR(Top, OP *) /* currently executing op */ #endif PERLVAR(Tcurpad, SV **) /* active pad (lexicals+tmps) */ PERLVAR(Tstack_base, SV **) PERLVAR(Tstack_max, SV **) PERLVAR(Tscopestack, I32 *) /* scopes we've ENTERed */ PERLVAR(Tscopestack_ix, I32) PERLVAR(Tscopestack_max,I32) PERLVAR(Tsavestack, ANY *) /* items that need to be restored when LEAVEing scopes we've ENTERed */ PERLVAR(Tsavestack_ix, I32) PERLVAR(Tsavestack_max, I32) PERLVAR(Ttmps_stack, SV **) /* mortals we've made */ PERLVARI(Ttmps_ix, I32, -1) PERLVARI(Ttmps_floor, I32, -1) PERLVAR(Ttmps_max, I32) PERLVAR(Tmarkstack, I32 *) /* stack_sp locations we're remembering */ PERLVAR(Tmarkstack_ptr, I32 *) PERLVAR(Tmarkstack_max, I32 *) PERLVAR(TSv, SV *) /* used to hold temporary values */ PERLVAR(TXpv, XPV *) /* used to hold temporary values */ /* =for apidoc Amn|STRLEN|PL_na A convenience variable which is typically used with C when one doesn't care about the length of the string. It is usually more efficient to either declare a local variable and use that instead or to use the C macro. =cut */ PERLVAR(Tna, STRLEN) /* for use in SvPV when length is Not Applicable */ /* stat stuff */ PERLVAR(Tstatbuf, Stat_t) PERLVAR(Tstatcache, Stat_t) /* _ */ PERLVAR(Tstatgv, GV *) PERLVARI(Tstatname, SV *, NULL) #ifdef HAS_TIMES PERLVAR(Ttimesbuf, struct tms) #endif /* Fields used by magic variables such as $@, $/ and so on */ PERLVAR(Ttainted, bool) /* using variables controlled by $< */ PERLVAR(Tcurpm, PMOP *) /* what to do \ interps in REs from */ /* =for apidoc mn|SV*|PL_rs The input record separator - C<$/> in Perl space. =for apidoc mn|GV*|PL_last_in_gv The GV which was last used for a filehandle input operation. (C<< >>) =for apidoc mn|SV*|PL_ofs_sv The output field separator - C<$,> in Perl space. =cut */ PERLVAR(Trs, SV *) /* input record separator $/ */ PERLVAR(Tlast_in_gv, GV *) /* GV used in last */ PERLVAR(Tofs_sv, SV *) /* output field separator $, */ PERLVAR(Tdefoutgv, GV *) /* default FH for output */ PERLVARI(Tchopset, const char *, " \n-") /* $: */ PERLVAR(Tformtarget, SV *) PERLVAR(Tbodytarget, SV *) PERLVAR(Ttoptarget, SV *) /* Stashes */ PERLVAR(Tdefstash, HV *) /* main symbol table */ PERLVAR(Tcurstash, HV *) /* symbol table for current package */ PERLVAR(Trestartop, OP *) /* propagating an error from croak? */ PERLVARI(Tcurcop, COP * VOL, &PL_compiling) PERLVAR(Tin_eval, VOL U8) /* trap "fatal" errors? */ PERLVAR(Tdelaymagic, U16) /* ($<,$>) = ... */ PERLVARI(Tdirty, bool, FALSE) /* in the middle of tearing things down? */ PERLVAR(Tlocalizing, int) /* are we processing a local() list? */ PERLVAR(Tcurstack, AV *) /* THE STACK */ PERLVAR(Tcurstackinfo, PERL_SI *) /* current stack + context */ PERLVAR(Tmainstack, AV *) /* the stack when nothing funny is happening */ PERLVAR(Ttop_env, JMPENV *) /* ptr. to current sigjmp() environment */ PERLVAR(Tstart_env, JMPENV) /* empty startup sigjmp() environment */ PERLVARI(Terrors, SV *, NULL) /* outstanding queued errors */ /* statics "owned" by various functions */ PERLVAR(Tav_fetch_sv, SV *) /* unused as of change #19268 */ PERLVAR(Thv_fetch_sv, SV *) /* unused as of change #19268 */ PERLVAR(Thv_fetch_ent_mh, HE*) /* owned by hv_fetch_ent() */ PERLVAR(Tmodcount, I32) /* how much mod()ification in assignment? */ PERLVAR(Tlastgotoprobe, OP*) /* from pp_ctl.c */ PERLVARI(Tdumpindent, I32, 4) /* # of blanks per dump indentation level */ /* sort stuff */ PERLVAR(Tsortcop, OP *) /* user defined sort routine */ PERLVAR(Tsortstash, HV *) /* which is in some package or other */ PERLVAR(Tfirstgv, GV *) /* $a */ PERLVAR(Tsecondgv, GV *) /* $b */ /* float buffer */ PERLVAR(Tefloatbuf, char*) PERLVAR(Tefloatsize, STRLEN) /* regex stuff */ PERLVAR(Tscreamfirst, I32 *) PERLVAR(Tscreamnext, I32 *) PERLVARI(Tmaxscream, I32, -1) PERLVAR(Tlastscream, SV *) PERLVAR(Treg_state, struct re_save_state) PERLVAR(Tregdummy, regnode) /* from regcomp.c */ PERLVAR(Tcolorset, int) /* from regcomp.c */ PERLVARA(Tcolors,6, char *) /* from regcomp.c */ PERLVARI(Tpeepp, peep_t, MEMBER_TO_FPTR(Perl_peep)) /* Pointer to peephole optimizer */ PERLVARI(Treginterp_cnt,int, 0) /* Whether "Regexp" was interpolated. */ PERLVARI(Twatchaddr, char **, 0) PERLVAR(Twatchok, char *) /* Note that the variables below are all explicitly referenced in the code * as thr->whatever and therefore don't need the 'T' prefix. */ /* the currently active slab in a chain of slabs of regmatch states, * and the currently active state within that slab */ PERLVARI(Tregmatch_slab, regmatch_slab *, NULL) PERLVAR(Tregmatch_state, regmatch_state *) Convert-Binary-C-0.76/tests/include/perlinc/embedvar.h0000644000175000001440000010565511550664630021404 0ustar mhxusers/* -*- buffer-read-only: t -*- * * embedvar.h * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by embed.pl from data in embed.fnc, embed.pl, * pp.sym, intrpvar.h, perlvars.h and thrdvar.h. * Any changes made here will be lost! * * Edit those files and run 'make regen_headers' to effect changes. */ /* (Doing namespace management portably in C is really gross.) */ /* The following combinations of MULTIPLICITY and PERL_IMPLICIT_CONTEXT are supported: 1) none 2) MULTIPLICITY # supported for compatibility 3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT All other combinations of these flags are errors. only #3 is supported directly, while #2 is a special case of #3 (supported by redefining vTHX appropriately). */ #if defined(MULTIPLICITY) /* cases 2 and 3 above */ # if defined(PERL_IMPLICIT_CONTEXT) # define vTHX aTHX # else # define vTHX PERL_GET_INTERP # endif #define PL_Sv (vTHX->TSv) #define PL_Xpv (vTHX->TXpv) #define PL_av_fetch_sv (vTHX->Tav_fetch_sv) #define PL_bodytarget (vTHX->Tbodytarget) #define PL_chopset (vTHX->Tchopset) #define PL_colors (vTHX->Tcolors) #define PL_colorset (vTHX->Tcolorset) #define PL_curcop (vTHX->Tcurcop) #define PL_curpad (vTHX->Tcurpad) #define PL_curpm (vTHX->Tcurpm) #define PL_curstack (vTHX->Tcurstack) #define PL_curstackinfo (vTHX->Tcurstackinfo) #define PL_curstash (vTHX->Tcurstash) #define PL_defoutgv (vTHX->Tdefoutgv) #define PL_defstash (vTHX->Tdefstash) #define PL_delaymagic (vTHX->Tdelaymagic) #define PL_dirty (vTHX->Tdirty) #define PL_dumpindent (vTHX->Tdumpindent) #define PL_efloatbuf (vTHX->Tefloatbuf) #define PL_efloatsize (vTHX->Tefloatsize) #define PL_errors (vTHX->Terrors) #define PL_firstgv (vTHX->Tfirstgv) #define PL_formtarget (vTHX->Tformtarget) #define PL_hv_fetch_ent_mh (vTHX->Thv_fetch_ent_mh) #define PL_hv_fetch_sv (vTHX->Thv_fetch_sv) #define PL_in_eval (vTHX->Tin_eval) #define PL_last_in_gv (vTHX->Tlast_in_gv) #define PL_lastgotoprobe (vTHX->Tlastgotoprobe) #define PL_lastscream (vTHX->Tlastscream) #define PL_localizing (vTHX->Tlocalizing) #define PL_mainstack (vTHX->Tmainstack) #define PL_markstack (vTHX->Tmarkstack) #define PL_markstack_max (vTHX->Tmarkstack_max) #define PL_markstack_ptr (vTHX->Tmarkstack_ptr) #define PL_maxscream (vTHX->Tmaxscream) #define PL_modcount (vTHX->Tmodcount) #define PL_na (vTHX->Tna) #define PL_ofs_sv (vTHX->Tofs_sv) #define PL_op (vTHX->Top) #define PL_opsave (vTHX->Topsave) #define PL_peepp (vTHX->Tpeepp) #define PL_reg_state (vTHX->Treg_state) #define PL_regdummy (vTHX->Tregdummy) #define PL_reginterp_cnt (vTHX->Treginterp_cnt) #define PL_regmatch_slab (vTHX->Tregmatch_slab) #define PL_regmatch_state (vTHX->Tregmatch_state) #define PL_restartop (vTHX->Trestartop) #define PL_rs (vTHX->Trs) #define PL_savestack (vTHX->Tsavestack) #define PL_savestack_ix (vTHX->Tsavestack_ix) #define PL_savestack_max (vTHX->Tsavestack_max) #define PL_scopestack (vTHX->Tscopestack) #define PL_scopestack_ix (vTHX->Tscopestack_ix) #define PL_scopestack_max (vTHX->Tscopestack_max) #define PL_screamfirst (vTHX->Tscreamfirst) #define PL_screamnext (vTHX->Tscreamnext) #define PL_secondgv (vTHX->Tsecondgv) #define PL_sortcop (vTHX->Tsortcop) #define PL_sortstash (vTHX->Tsortstash) #define PL_stack_base (vTHX->Tstack_base) #define PL_stack_max (vTHX->Tstack_max) #define PL_stack_sp (vTHX->Tstack_sp) #define PL_start_env (vTHX->Tstart_env) #define PL_statbuf (vTHX->Tstatbuf) #define PL_statcache (vTHX->Tstatcache) #define PL_statgv (vTHX->Tstatgv) #define PL_statname (vTHX->Tstatname) #define PL_tainted (vTHX->Ttainted) #define PL_timesbuf (vTHX->Ttimesbuf) #define PL_tmps_floor (vTHX->Ttmps_floor) #define PL_tmps_ix (vTHX->Ttmps_ix) #define PL_tmps_max (vTHX->Ttmps_max) #define PL_tmps_stack (vTHX->Ttmps_stack) #define PL_top_env (vTHX->Ttop_env) #define PL_toptarget (vTHX->Ttoptarget) #define PL_watchaddr (vTHX->Twatchaddr) #define PL_watchok (vTHX->Twatchok) /* cases 2 and 3 above */ #define PL_Argv (vTHX->IArgv) #define PL_Cmd (vTHX->ICmd) #define PL_DBassertion (vTHX->IDBassertion) #define PL_DBcv (vTHX->IDBcv) #define PL_DBgv (vTHX->IDBgv) #define PL_DBline (vTHX->IDBline) #define PL_DBsignal (vTHX->IDBsignal) #define PL_DBsingle (vTHX->IDBsingle) #define PL_DBsub (vTHX->IDBsub) #define PL_DBtrace (vTHX->IDBtrace) #define PL_Dir (vTHX->IDir) #define PL_Env (vTHX->IEnv) #define PL_LIO (vTHX->ILIO) #define PL_Mem (vTHX->IMem) #define PL_MemParse (vTHX->IMemParse) #define PL_MemShared (vTHX->IMemShared) #define PL_OpPtr (vTHX->IOpPtr) #define PL_OpSlab (vTHX->IOpSlab) #define PL_OpSpace (vTHX->IOpSpace) #define PL_Proc (vTHX->IProc) #define PL_Sock (vTHX->ISock) #define PL_StdIO (vTHX->IStdIO) #define PL_amagic_generation (vTHX->Iamagic_generation) #define PL_an (vTHX->Ian) #define PL_argvgv (vTHX->Iargvgv) #define PL_argvout_stack (vTHX->Iargvout_stack) #define PL_argvoutgv (vTHX->Iargvoutgv) #define PL_basetime (vTHX->Ibasetime) #define PL_beginav (vTHX->Ibeginav) #define PL_beginav_save (vTHX->Ibeginav_save) #define PL_bitcount (vTHX->Ibitcount) #define PL_body_arenas (vTHX->Ibody_arenas) #define PL_body_roots (vTHX->Ibody_roots) #define PL_bufend (vTHX->Ibufend) #define PL_bufptr (vTHX->Ibufptr) #define PL_checkav (vTHX->Icheckav) #define PL_checkav_save (vTHX->Icheckav_save) #define PL_clocktick (vTHX->Iclocktick) #define PL_collation_ix (vTHX->Icollation_ix) #define PL_collation_name (vTHX->Icollation_name) #define PL_collation_standard (vTHX->Icollation_standard) #define PL_collxfrm_base (vTHX->Icollxfrm_base) #define PL_collxfrm_mult (vTHX->Icollxfrm_mult) #define PL_compcv (vTHX->Icompcv) #define PL_compiling (vTHX->Icompiling) #define PL_comppad (vTHX->Icomppad) #define PL_comppad_name (vTHX->Icomppad_name) #define PL_comppad_name_fill (vTHX->Icomppad_name_fill) #define PL_comppad_name_floor (vTHX->Icomppad_name_floor) #define PL_cop_seqmax (vTHX->Icop_seqmax) #define PL_copline (vTHX->Icopline) #define PL_cryptseen (vTHX->Icryptseen) #define PL_cshlen (vTHX->Icshlen) #define PL_cshname (vTHX->Icshname) #define PL_curcopdb (vTHX->Icurcopdb) #define PL_curforce (vTHX->Icurforce) #define PL_curstname (vTHX->Icurstname) #define PL_custom_op_descs (vTHX->Icustom_op_descs) #define PL_custom_op_names (vTHX->Icustom_op_names) #define PL_cv_has_eval (vTHX->Icv_has_eval) #define PL_dbargs (vTHX->Idbargs) #define PL_debstash (vTHX->Idebstash) #define PL_debug (vTHX->Idebug) #define PL_debug_pad (vTHX->Idebug_pad) #define PL_def_layerlist (vTHX->Idef_layerlist) #define PL_defgv (vTHX->Idefgv) #define PL_diehook (vTHX->Idiehook) #define PL_doextract (vTHX->Idoextract) #define PL_doswitches (vTHX->Idoswitches) #define PL_dowarn (vTHX->Idowarn) #define PL_dumper_fd (vTHX->Idumper_fd) #define PL_e_script (vTHX->Ie_script) #define PL_egid (vTHX->Iegid) #define PL_encoding (vTHX->Iencoding) #define PL_endav (vTHX->Iendav) #define PL_endwhite (vTHX->Iendwhite) #define PL_envgv (vTHX->Ienvgv) #define PL_errgv (vTHX->Ierrgv) #define PL_error_count (vTHX->Ierror_count) #define PL_euid (vTHX->Ieuid) #define PL_eval_root (vTHX->Ieval_root) #define PL_eval_start (vTHX->Ieval_start) #define PL_evalseq (vTHX->Ievalseq) #define PL_exit_flags (vTHX->Iexit_flags) #define PL_exitlist (vTHX->Iexitlist) #define PL_exitlistlen (vTHX->Iexitlistlen) #define PL_expect (vTHX->Iexpect) #define PL_faketokens (vTHX->Ifaketokens) #define PL_fdpid (vTHX->Ifdpid) #define PL_filemode (vTHX->Ifilemode) #define PL_forkprocess (vTHX->Iforkprocess) #define PL_formfeed (vTHX->Iformfeed) #define PL_generation (vTHX->Igeneration) #define PL_gensym (vTHX->Igensym) #define PL_gid (vTHX->Igid) #define PL_glob_index (vTHX->Iglob_index) #define PL_globalstash (vTHX->Iglobalstash) #define PL_hash_seed (vTHX->Ihash_seed) #define PL_hash_seed_set (vTHX->Ihash_seed_set) #define PL_hintgv (vTHX->Ihintgv) #define PL_hints (vTHX->Ihints) #define PL_in_clean_all (vTHX->Iin_clean_all) #define PL_in_clean_objs (vTHX->Iin_clean_objs) #define PL_in_load_module (vTHX->Iin_load_module) #define PL_in_my (vTHX->Iin_my) #define PL_in_my_stash (vTHX->Iin_my_stash) #define PL_incgv (vTHX->Iincgv) #define PL_initav (vTHX->Iinitav) #define PL_inplace (vTHX->Iinplace) #define PL_known_layers (vTHX->Iknown_layers) #define PL_last_lop (vTHX->Ilast_lop) #define PL_last_lop_op (vTHX->Ilast_lop_op) #define PL_last_swash_hv (vTHX->Ilast_swash_hv) #define PL_last_swash_key (vTHX->Ilast_swash_key) #define PL_last_swash_klen (vTHX->Ilast_swash_klen) #define PL_last_swash_slen (vTHX->Ilast_swash_slen) #define PL_last_swash_tmps (vTHX->Ilast_swash_tmps) #define PL_last_uni (vTHX->Ilast_uni) #define PL_lastfd (vTHX->Ilastfd) #define PL_laststatval (vTHX->Ilaststatval) #define PL_laststype (vTHX->Ilaststype) #define PL_lasttoke (vTHX->Ilasttoke) #define PL_lex_brackets (vTHX->Ilex_brackets) #define PL_lex_brackstack (vTHX->Ilex_brackstack) #define PL_lex_casemods (vTHX->Ilex_casemods) #define PL_lex_casestack (vTHX->Ilex_casestack) #define PL_lex_defer (vTHX->Ilex_defer) #define PL_lex_dojoin (vTHX->Ilex_dojoin) #define PL_lex_expect (vTHX->Ilex_expect) #define PL_lex_formbrack (vTHX->Ilex_formbrack) #define PL_lex_inpat (vTHX->Ilex_inpat) #define PL_lex_inwhat (vTHX->Ilex_inwhat) #define PL_lex_op (vTHX->Ilex_op) #define PL_lex_repl (vTHX->Ilex_repl) #define PL_lex_starts (vTHX->Ilex_starts) #define PL_lex_state (vTHX->Ilex_state) #define PL_lex_stuff (vTHX->Ilex_stuff) #define PL_lineary (vTHX->Ilineary) #define PL_linestart (vTHX->Ilinestart) #define PL_linestr (vTHX->Ilinestr) #define PL_localpatches (vTHX->Ilocalpatches) #define PL_lockhook (vTHX->Ilockhook) #define PL_madskills (vTHX->Imadskills) #define PL_main_cv (vTHX->Imain_cv) #define PL_main_root (vTHX->Imain_root) #define PL_main_start (vTHX->Imain_start) #define PL_max_intro_pending (vTHX->Imax_intro_pending) #define PL_maxo (vTHX->Imaxo) #define PL_maxsysfd (vTHX->Imaxsysfd) #define PL_memory_debug_header (vTHX->Imemory_debug_header) #define PL_mess_sv (vTHX->Imess_sv) #define PL_min_intro_pending (vTHX->Imin_intro_pending) #define PL_minus_E (vTHX->Iminus_E) #define PL_minus_F (vTHX->Iminus_F) #define PL_minus_a (vTHX->Iminus_a) #define PL_minus_c (vTHX->Iminus_c) #define PL_minus_l (vTHX->Iminus_l) #define PL_minus_n (vTHX->Iminus_n) #define PL_minus_p (vTHX->Iminus_p) #define PL_modglobal (vTHX->Imodglobal) #define PL_multi_close (vTHX->Imulti_close) #define PL_multi_end (vTHX->Imulti_end) #define PL_multi_open (vTHX->Imulti_open) #define PL_multi_start (vTHX->Imulti_start) #define PL_my_cxt_list (vTHX->Imy_cxt_list) #define PL_my_cxt_size (vTHX->Imy_cxt_size) #define PL_nexttoke (vTHX->Inexttoke) #define PL_nexttype (vTHX->Inexttype) #define PL_nextval (vTHX->Inextval) #define PL_nextwhite (vTHX->Inextwhite) #define PL_nice_chunk (vTHX->Inice_chunk) #define PL_nice_chunk_size (vTHX->Inice_chunk_size) #define PL_nomemok (vTHX->Inomemok) #define PL_numeric_compat1 (vTHX->Inumeric_compat1) #define PL_numeric_local (vTHX->Inumeric_local) #define PL_numeric_name (vTHX->Inumeric_name) #define PL_numeric_radix_sv (vTHX->Inumeric_radix_sv) #define PL_numeric_standard (vTHX->Inumeric_standard) #define PL_oldbufptr (vTHX->Ioldbufptr) #define PL_oldname (vTHX->Ioldname) #define PL_oldoldbufptr (vTHX->Ioldoldbufptr) #define PL_op_mask (vTHX->Iop_mask) #define PL_origalen (vTHX->Iorigalen) #define PL_origargc (vTHX->Iorigargc) #define PL_origargv (vTHX->Iorigargv) #define PL_origenviron (vTHX->Iorigenviron) #define PL_origfilename (vTHX->Iorigfilename) #define PL_ors_sv (vTHX->Iors_sv) #define PL_osname (vTHX->Iosname) #define PL_pad_reset_pending (vTHX->Ipad_reset_pending) #define PL_padix (vTHX->Ipadix) #define PL_padix_floor (vTHX->Ipadix_floor) #define PL_patchlevel (vTHX->Ipatchlevel) #define PL_pending_ident (vTHX->Ipending_ident) #define PL_perl_destruct_level (vTHX->Iperl_destruct_level) #define PL_perldb (vTHX->Iperldb) #define PL_perlio (vTHX->Iperlio) #define PL_pidstatus (vTHX->Ipidstatus) #define PL_ppid (vTHX->Ippid) #define PL_preambleav (vTHX->Ipreambleav) #define PL_preambled (vTHX->Ipreambled) #define PL_preprocess (vTHX->Ipreprocess) #define PL_profiledata (vTHX->Iprofiledata) #define PL_psig_name (vTHX->Ipsig_name) #define PL_psig_pend (vTHX->Ipsig_pend) #define PL_psig_ptr (vTHX->Ipsig_ptr) #define PL_ptr_table (vTHX->Iptr_table) #define PL_realtokenstart (vTHX->Irealtokenstart) #define PL_reentrant_buffer (vTHX->Ireentrant_buffer) #define PL_reentrant_retint (vTHX->Ireentrant_retint) #define PL_regex_pad (vTHX->Iregex_pad) #define PL_regex_padav (vTHX->Iregex_padav) #define PL_rehash_seed (vTHX->Irehash_seed) #define PL_rehash_seed_set (vTHX->Irehash_seed_set) #define PL_replgv (vTHX->Ireplgv) #define PL_rsfp (vTHX->Irsfp) #define PL_rsfp_filters (vTHX->Irsfp_filters) #define PL_runops (vTHX->Irunops) #define PL_runops_dbg (vTHX->Irunops_dbg) #define PL_runops_std (vTHX->Irunops_std) #define PL_savebegin (vTHX->Isavebegin) #define PL_sawampersand (vTHX->Isawampersand) #define PL_sharehook (vTHX->Isharehook) #define PL_sig_pending (vTHX->Isig_pending) #define PL_sighandlerp (vTHX->Isighandlerp) #define PL_signals (vTHX->Isignals) #define PL_skipwhite (vTHX->Iskipwhite) #define PL_sort_RealCmp (vTHX->Isort_RealCmp) #define PL_splitstr (vTHX->Isplitstr) #define PL_srand_called (vTHX->Isrand_called) #define PL_stashcache (vTHX->Istashcache) #define PL_statusvalue (vTHX->Istatusvalue) #define PL_statusvalue_posix (vTHX->Istatusvalue_posix) #define PL_statusvalue_vms (vTHX->Istatusvalue_vms) #define PL_stderrgv (vTHX->Istderrgv) #define PL_stdingv (vTHX->Istdingv) #define PL_strtab (vTHX->Istrtab) #define PL_sub_generation (vTHX->Isub_generation) #define PL_sublex_info (vTHX->Isublex_info) #define PL_subline (vTHX->Isubline) #define PL_subname (vTHX->Isubname) #define PL_sv_arenaroot (vTHX->Isv_arenaroot) #define PL_sv_count (vTHX->Isv_count) #define PL_sv_no (vTHX->Isv_no) #define PL_sv_objcount (vTHX->Isv_objcount) #define PL_sv_root (vTHX->Isv_root) #define PL_sv_undef (vTHX->Isv_undef) #define PL_sv_yes (vTHX->Isv_yes) #define PL_sys_intern (vTHX->Isys_intern) #define PL_taint_warn (vTHX->Itaint_warn) #define PL_tainting (vTHX->Itainting) #define PL_thisclose (vTHX->Ithisclose) #define PL_thismad (vTHX->Ithismad) #define PL_thisopen (vTHX->Ithisopen) #define PL_thisstuff (vTHX->Ithisstuff) #define PL_thistoken (vTHX->Ithistoken) #define PL_thiswhite (vTHX->Ithiswhite) #define PL_threadhook (vTHX->Ithreadhook) #define PL_tokenbuf (vTHX->Itokenbuf) #define PL_uid (vTHX->Iuid) #define PL_unicode (vTHX->Iunicode) #define PL_unitcheckav (vTHX->Iunitcheckav) #define PL_unitcheckav_save (vTHX->Iunitcheckav_save) #define PL_unlockhook (vTHX->Iunlockhook) #define PL_unsafe (vTHX->Iunsafe) #define PL_utf8_alnum (vTHX->Iutf8_alnum) #define PL_utf8_alnumc (vTHX->Iutf8_alnumc) #define PL_utf8_alpha (vTHX->Iutf8_alpha) #define PL_utf8_ascii (vTHX->Iutf8_ascii) #define PL_utf8_cntrl (vTHX->Iutf8_cntrl) #define PL_utf8_digit (vTHX->Iutf8_digit) #define PL_utf8_graph (vTHX->Iutf8_graph) #define PL_utf8_idcont (vTHX->Iutf8_idcont) #define PL_utf8_idstart (vTHX->Iutf8_idstart) #define PL_utf8_lower (vTHX->Iutf8_lower) #define PL_utf8_mark (vTHX->Iutf8_mark) #define PL_utf8_print (vTHX->Iutf8_print) #define PL_utf8_punct (vTHX->Iutf8_punct) #define PL_utf8_space (vTHX->Iutf8_space) #define PL_utf8_tofold (vTHX->Iutf8_tofold) #define PL_utf8_tolower (vTHX->Iutf8_tolower) #define PL_utf8_totitle (vTHX->Iutf8_totitle) #define PL_utf8_toupper (vTHX->Iutf8_toupper) #define PL_utf8_upper (vTHX->Iutf8_upper) #define PL_utf8_xdigit (vTHX->Iutf8_xdigit) #define PL_utf8cache (vTHX->Iutf8cache) #define PL_utf8locale (vTHX->Iutf8locale) #define PL_uudmap (vTHX->Iuudmap) #define PL_warnhook (vTHX->Iwarnhook) #define PL_widesyscalls (vTHX->Iwidesyscalls) #define PL_xmlfp (vTHX->Ixmlfp) #define PL_yycharp (vTHX->Iyycharp) #define PL_yylvalp (vTHX->Iyylvalp) #else /* !MULTIPLICITY */ /* case 1 above */ #define PL_IArgv PL_Argv #define PL_ICmd PL_Cmd #define PL_IDBassertion PL_DBassertion #define PL_IDBcv PL_DBcv #define PL_IDBgv PL_DBgv #define PL_IDBline PL_DBline #define PL_IDBsignal PL_DBsignal #define PL_IDBsingle PL_DBsingle #define PL_IDBsub PL_DBsub #define PL_IDBtrace PL_DBtrace #define PL_IDir PL_Dir #define PL_IEnv PL_Env #define PL_ILIO PL_LIO #define PL_IMem PL_Mem #define PL_IMemParse PL_MemParse #define PL_IMemShared PL_MemShared #define PL_IOpPtr PL_OpPtr #define PL_IOpSlab PL_OpSlab #define PL_IOpSpace PL_OpSpace #define PL_IProc PL_Proc #define PL_ISock PL_Sock #define PL_IStdIO PL_StdIO #define PL_Iamagic_generation PL_amagic_generation #define PL_Ian PL_an #define PL_Iargvgv PL_argvgv #define PL_Iargvout_stack PL_argvout_stack #define PL_Iargvoutgv PL_argvoutgv #define PL_Ibasetime PL_basetime #define PL_Ibeginav PL_beginav #define PL_Ibeginav_save PL_beginav_save #define PL_Ibitcount PL_bitcount #define PL_Ibody_arenas PL_body_arenas #define PL_Ibody_roots PL_body_roots #define PL_Ibufend PL_bufend #define PL_Ibufptr PL_bufptr #define PL_Icheckav PL_checkav #define PL_Icheckav_save PL_checkav_save #define PL_Iclocktick PL_clocktick #define PL_Icollation_ix PL_collation_ix #define PL_Icollation_name PL_collation_name #define PL_Icollation_standard PL_collation_standard #define PL_Icollxfrm_base PL_collxfrm_base #define PL_Icollxfrm_mult PL_collxfrm_mult #define PL_Icompcv PL_compcv #define PL_Icompiling PL_compiling #define PL_Icomppad PL_comppad #define PL_Icomppad_name PL_comppad_name #define PL_Icomppad_name_fill PL_comppad_name_fill #define PL_Icomppad_name_floor PL_comppad_name_floor #define PL_Icop_seqmax PL_cop_seqmax #define PL_Icopline PL_copline #define PL_Icryptseen PL_cryptseen #define PL_Icshlen PL_cshlen #define PL_Icshname PL_cshname #define PL_Icurcopdb PL_curcopdb #define PL_Icurforce PL_curforce #define PL_Icurstname PL_curstname #define PL_Icustom_op_descs PL_custom_op_descs #define PL_Icustom_op_names PL_custom_op_names #define PL_Icv_has_eval PL_cv_has_eval #define PL_Idbargs PL_dbargs #define PL_Idebstash PL_debstash #define PL_Idebug PL_debug #define PL_Idebug_pad PL_debug_pad #define PL_Idef_layerlist PL_def_layerlist #define PL_Idefgv PL_defgv #define PL_Idiehook PL_diehook #define PL_Idoextract PL_doextract #define PL_Idoswitches PL_doswitches #define PL_Idowarn PL_dowarn #define PL_Idumper_fd PL_dumper_fd #define PL_Ie_script PL_e_script #define PL_Iegid PL_egid #define PL_Iencoding PL_encoding #define PL_Iendav PL_endav #define PL_Iendwhite PL_endwhite #define PL_Ienvgv PL_envgv #define PL_Ierrgv PL_errgv #define PL_Ierror_count PL_error_count #define PL_Ieuid PL_euid #define PL_Ieval_root PL_eval_root #define PL_Ieval_start PL_eval_start #define PL_Ievalseq PL_evalseq #define PL_Iexit_flags PL_exit_flags #define PL_Iexitlist PL_exitlist #define PL_Iexitlistlen PL_exitlistlen #define PL_Iexpect PL_expect #define PL_Ifaketokens PL_faketokens #define PL_Ifdpid PL_fdpid #define PL_Ifilemode PL_filemode #define PL_Iforkprocess PL_forkprocess #define PL_Iformfeed PL_formfeed #define PL_Igeneration PL_generation #define PL_Igensym PL_gensym #define PL_Igid PL_gid #define PL_Iglob_index PL_glob_index #define PL_Iglobalstash PL_globalstash #define PL_Ihash_seed PL_hash_seed #define PL_Ihash_seed_set PL_hash_seed_set #define PL_Ihintgv PL_hintgv #define PL_Ihints PL_hints #define PL_Iin_clean_all PL_in_clean_all #define PL_Iin_clean_objs PL_in_clean_objs #define PL_Iin_load_module PL_in_load_module #define PL_Iin_my PL_in_my #define PL_Iin_my_stash PL_in_my_stash #define PL_Iincgv PL_incgv #define PL_Iinitav PL_initav #define PL_Iinplace PL_inplace #define PL_Iknown_layers PL_known_layers #define PL_Ilast_lop PL_last_lop #define PL_Ilast_lop_op PL_last_lop_op #define PL_Ilast_swash_hv PL_last_swash_hv #define PL_Ilast_swash_key PL_last_swash_key #define PL_Ilast_swash_klen PL_last_swash_klen #define PL_Ilast_swash_slen PL_last_swash_slen #define PL_Ilast_swash_tmps PL_last_swash_tmps #define PL_Ilast_uni PL_last_uni #define PL_Ilastfd PL_lastfd #define PL_Ilaststatval PL_laststatval #define PL_Ilaststype PL_laststype #define PL_Ilasttoke PL_lasttoke #define PL_Ilex_brackets PL_lex_brackets #define PL_Ilex_brackstack PL_lex_brackstack #define PL_Ilex_casemods PL_lex_casemods #define PL_Ilex_casestack PL_lex_casestack #define PL_Ilex_defer PL_lex_defer #define PL_Ilex_dojoin PL_lex_dojoin #define PL_Ilex_expect PL_lex_expect #define PL_Ilex_formbrack PL_lex_formbrack #define PL_Ilex_inpat PL_lex_inpat #define PL_Ilex_inwhat PL_lex_inwhat #define PL_Ilex_op PL_lex_op #define PL_Ilex_repl PL_lex_repl #define PL_Ilex_starts PL_lex_starts #define PL_Ilex_state PL_lex_state #define PL_Ilex_stuff PL_lex_stuff #define PL_Ilineary PL_lineary #define PL_Ilinestart PL_linestart #define PL_Ilinestr PL_linestr #define PL_Ilocalpatches PL_localpatches #define PL_Ilockhook PL_lockhook #define PL_Imadskills PL_madskills #define PL_Imain_cv PL_main_cv #define PL_Imain_root PL_main_root #define PL_Imain_start PL_main_start #define PL_Imax_intro_pending PL_max_intro_pending #define PL_Imaxo PL_maxo #define PL_Imaxsysfd PL_maxsysfd #define PL_Imemory_debug_header PL_memory_debug_header #define PL_Imess_sv PL_mess_sv #define PL_Imin_intro_pending PL_min_intro_pending #define PL_Iminus_E PL_minus_E #define PL_Iminus_F PL_minus_F #define PL_Iminus_a PL_minus_a #define PL_Iminus_c PL_minus_c #define PL_Iminus_l PL_minus_l #define PL_Iminus_n PL_minus_n #define PL_Iminus_p PL_minus_p #define PL_Imodglobal PL_modglobal #define PL_Imulti_close PL_multi_close #define PL_Imulti_end PL_multi_end #define PL_Imulti_open PL_multi_open #define PL_Imulti_start PL_multi_start #define PL_Imy_cxt_list PL_my_cxt_list #define PL_Imy_cxt_size PL_my_cxt_size #define PL_Inexttoke PL_nexttoke #define PL_Inexttype PL_nexttype #define PL_Inextval PL_nextval #define PL_Inextwhite PL_nextwhite #define PL_Inice_chunk PL_nice_chunk #define PL_Inice_chunk_size PL_nice_chunk_size #define PL_Inomemok PL_nomemok #define PL_Inumeric_compat1 PL_numeric_compat1 #define PL_Inumeric_local PL_numeric_local #define PL_Inumeric_name PL_numeric_name #define PL_Inumeric_radix_sv PL_numeric_radix_sv #define PL_Inumeric_standard PL_numeric_standard #define PL_Ioldbufptr PL_oldbufptr #define PL_Ioldname PL_oldname #define PL_Ioldoldbufptr PL_oldoldbufptr #define PL_Iop_mask PL_op_mask #define PL_Iorigalen PL_origalen #define PL_Iorigargc PL_origargc #define PL_Iorigargv PL_origargv #define PL_Iorigenviron PL_origenviron #define PL_Iorigfilename PL_origfilename #define PL_Iors_sv PL_ors_sv #define PL_Iosname PL_osname #define PL_Ipad_reset_pending PL_pad_reset_pending #define PL_Ipadix PL_padix #define PL_Ipadix_floor PL_padix_floor #define PL_Ipatchlevel PL_patchlevel #define PL_Ipending_ident PL_pending_ident #define PL_Iperl_destruct_level PL_perl_destruct_level #define PL_Iperldb PL_perldb #define PL_Iperlio PL_perlio #define PL_Ipidstatus PL_pidstatus #define PL_Ippid PL_ppid #define PL_Ipreambleav PL_preambleav #define PL_Ipreambled PL_preambled #define PL_Ipreprocess PL_preprocess #define PL_Iprofiledata PL_profiledata #define PL_Ipsig_name PL_psig_name #define PL_Ipsig_pend PL_psig_pend #define PL_Ipsig_ptr PL_psig_ptr #define PL_Iptr_table PL_ptr_table #define PL_Irealtokenstart PL_realtokenstart #define PL_Ireentrant_buffer PL_reentrant_buffer #define PL_Ireentrant_retint PL_reentrant_retint #define PL_Iregex_pad PL_regex_pad #define PL_Iregex_padav PL_regex_padav #define PL_Irehash_seed PL_rehash_seed #define PL_Irehash_seed_set PL_rehash_seed_set #define PL_Ireplgv PL_replgv #define PL_Irsfp PL_rsfp #define PL_Irsfp_filters PL_rsfp_filters #define PL_Irunops PL_runops #define PL_Irunops_dbg PL_runops_dbg #define PL_Irunops_std PL_runops_std #define PL_Isavebegin PL_savebegin #define PL_Isawampersand PL_sawampersand #define PL_Isharehook PL_sharehook #define PL_Isig_pending PL_sig_pending #define PL_Isighandlerp PL_sighandlerp #define PL_Isignals PL_signals #define PL_Iskipwhite PL_skipwhite #define PL_Isort_RealCmp PL_sort_RealCmp #define PL_Isplitstr PL_splitstr #define PL_Isrand_called PL_srand_called #define PL_Istashcache PL_stashcache #define PL_Istatusvalue PL_statusvalue #define PL_Istatusvalue_posix PL_statusvalue_posix #define PL_Istatusvalue_vms PL_statusvalue_vms #define PL_Istderrgv PL_stderrgv #define PL_Istdingv PL_stdingv #define PL_Istrtab PL_strtab #define PL_Isub_generation PL_sub_generation #define PL_Isublex_info PL_sublex_info #define PL_Isubline PL_subline #define PL_Isubname PL_subname #define PL_Isv_arenaroot PL_sv_arenaroot #define PL_Isv_count PL_sv_count #define PL_Isv_no PL_sv_no #define PL_Isv_objcount PL_sv_objcount #define PL_Isv_root PL_sv_root #define PL_Isv_undef PL_sv_undef #define PL_Isv_yes PL_sv_yes #define PL_Isys_intern PL_sys_intern #define PL_Itaint_warn PL_taint_warn #define PL_Itainting PL_tainting #define PL_Ithisclose PL_thisclose #define PL_Ithismad PL_thismad #define PL_Ithisopen PL_thisopen #define PL_Ithisstuff PL_thisstuff #define PL_Ithistoken PL_thistoken #define PL_Ithiswhite PL_thiswhite #define PL_Ithreadhook PL_threadhook #define PL_Itokenbuf PL_tokenbuf #define PL_Iuid PL_uid #define PL_Iunicode PL_unicode #define PL_Iunitcheckav PL_unitcheckav #define PL_Iunitcheckav_save PL_unitcheckav_save #define PL_Iunlockhook PL_unlockhook #define PL_Iunsafe PL_unsafe #define PL_Iutf8_alnum PL_utf8_alnum #define PL_Iutf8_alnumc PL_utf8_alnumc #define PL_Iutf8_alpha PL_utf8_alpha #define PL_Iutf8_ascii PL_utf8_ascii #define PL_Iutf8_cntrl PL_utf8_cntrl #define PL_Iutf8_digit PL_utf8_digit #define PL_Iutf8_graph PL_utf8_graph #define PL_Iutf8_idcont PL_utf8_idcont #define PL_Iutf8_idstart PL_utf8_idstart #define PL_Iutf8_lower PL_utf8_lower #define PL_Iutf8_mark PL_utf8_mark #define PL_Iutf8_print PL_utf8_print #define PL_Iutf8_punct PL_utf8_punct #define PL_Iutf8_space PL_utf8_space #define PL_Iutf8_tofold PL_utf8_tofold #define PL_Iutf8_tolower PL_utf8_tolower #define PL_Iutf8_totitle PL_utf8_totitle #define PL_Iutf8_toupper PL_utf8_toupper #define PL_Iutf8_upper PL_utf8_upper #define PL_Iutf8_xdigit PL_utf8_xdigit #define PL_Iutf8cache PL_utf8cache #define PL_Iutf8locale PL_utf8locale #define PL_Iuudmap PL_uudmap #define PL_Iwarnhook PL_warnhook #define PL_Iwidesyscalls PL_widesyscalls #define PL_Ixmlfp PL_xmlfp #define PL_Iyycharp PL_yycharp #define PL_Iyylvalp PL_yylvalp #define PL_TSv PL_Sv #define PL_TXpv PL_Xpv #define PL_Tav_fetch_sv PL_av_fetch_sv #define PL_Tbodytarget PL_bodytarget #define PL_Tchopset PL_chopset #define PL_Tcolors PL_colors #define PL_Tcolorset PL_colorset #define PL_Tcurcop PL_curcop #define PL_Tcurpad PL_curpad #define PL_Tcurpm PL_curpm #define PL_Tcurstack PL_curstack #define PL_Tcurstackinfo PL_curstackinfo #define PL_Tcurstash PL_curstash #define PL_Tdefoutgv PL_defoutgv #define PL_Tdefstash PL_defstash #define PL_Tdelaymagic PL_delaymagic #define PL_Tdirty PL_dirty #define PL_Tdumpindent PL_dumpindent #define PL_Tefloatbuf PL_efloatbuf #define PL_Tefloatsize PL_efloatsize #define PL_Terrors PL_errors #define PL_Tfirstgv PL_firstgv #define PL_Tformtarget PL_formtarget #define PL_Thv_fetch_ent_mh PL_hv_fetch_ent_mh #define PL_Thv_fetch_sv PL_hv_fetch_sv #define PL_Tin_eval PL_in_eval #define PL_Tlast_in_gv PL_last_in_gv #define PL_Tlastgotoprobe PL_lastgotoprobe #define PL_Tlastscream PL_lastscream #define PL_Tlocalizing PL_localizing #define PL_Tmainstack PL_mainstack #define PL_Tmarkstack PL_markstack #define PL_Tmarkstack_max PL_markstack_max #define PL_Tmarkstack_ptr PL_markstack_ptr #define PL_Tmaxscream PL_maxscream #define PL_Tmodcount PL_modcount #define PL_Tna PL_na #define PL_Tofs_sv PL_ofs_sv #define PL_Top PL_op #define PL_Topsave PL_opsave #define PL_Tpeepp PL_peepp #define PL_Treg_state PL_reg_state #define PL_Tregdummy PL_regdummy #define PL_Treginterp_cnt PL_reginterp_cnt #define PL_Tregmatch_slab PL_regmatch_slab #define PL_Tregmatch_state PL_regmatch_state #define PL_Trestartop PL_restartop #define PL_Trs PL_rs #define PL_Tsavestack PL_savestack #define PL_Tsavestack_ix PL_savestack_ix #define PL_Tsavestack_max PL_savestack_max #define PL_Tscopestack PL_scopestack #define PL_Tscopestack_ix PL_scopestack_ix #define PL_Tscopestack_max PL_scopestack_max #define PL_Tscreamfirst PL_screamfirst #define PL_Tscreamnext PL_screamnext #define PL_Tsecondgv PL_secondgv #define PL_Tsortcop PL_sortcop #define PL_Tsortstash PL_sortstash #define PL_Tstack_base PL_stack_base #define PL_Tstack_max PL_stack_max #define PL_Tstack_sp PL_stack_sp #define PL_Tstart_env PL_start_env #define PL_Tstatbuf PL_statbuf #define PL_Tstatcache PL_statcache #define PL_Tstatgv PL_statgv #define PL_Tstatname PL_statname #define PL_Ttainted PL_tainted #define PL_Ttimesbuf PL_timesbuf #define PL_Ttmps_floor PL_tmps_floor #define PL_Ttmps_ix PL_tmps_ix #define PL_Ttmps_max PL_tmps_max #define PL_Ttmps_stack PL_tmps_stack #define PL_Ttop_env PL_top_env #define PL_Ttoptarget PL_toptarget #define PL_Twatchaddr PL_watchaddr #define PL_Twatchok PL_watchok #endif /* MULTIPLICITY */ #if defined(PERL_GLOBAL_STRUCT) #define PL_No (my_vars->GNo) #define PL_GNo (my_vars->GNo) #define PL_Yes (my_vars->GYes) #define PL_GYes (my_vars->GYes) #define PL_appctx (my_vars->Gappctx) #define PL_Gappctx (my_vars->Gappctx) #define PL_check (my_vars->Gcheck) #define PL_Gcheck (my_vars->Gcheck) #define PL_csighandlerp (my_vars->Gcsighandlerp) #define PL_Gcsighandlerp (my_vars->Gcsighandlerp) #define PL_curinterp (my_vars->Gcurinterp) #define PL_Gcurinterp (my_vars->Gcurinterp) #define PL_do_undump (my_vars->Gdo_undump) #define PL_Gdo_undump (my_vars->Gdo_undump) #define PL_dollarzero_mutex (my_vars->Gdollarzero_mutex) #define PL_Gdollarzero_mutex (my_vars->Gdollarzero_mutex) #define PL_fold_locale (my_vars->Gfold_locale) #define PL_Gfold_locale (my_vars->Gfold_locale) #define PL_hexdigit (my_vars->Ghexdigit) #define PL_Ghexdigit (my_vars->Ghexdigit) #define PL_hints_mutex (my_vars->Ghints_mutex) #define PL_Ghints_mutex (my_vars->Ghints_mutex) #define PL_malloc_mutex (my_vars->Gmalloc_mutex) #define PL_Gmalloc_mutex (my_vars->Gmalloc_mutex) #define PL_mmap_page_size (my_vars->Gmmap_page_size) #define PL_Gmmap_page_size (my_vars->Gmmap_page_size) #define PL_my_ctx_mutex (my_vars->Gmy_ctx_mutex) #define PL_Gmy_ctx_mutex (my_vars->Gmy_ctx_mutex) #define PL_my_cxt_index (my_vars->Gmy_cxt_index) #define PL_Gmy_cxt_index (my_vars->Gmy_cxt_index) #define PL_op_mutex (my_vars->Gop_mutex) #define PL_Gop_mutex (my_vars->Gop_mutex) #define PL_op_seq (my_vars->Gop_seq) #define PL_Gop_seq (my_vars->Gop_seq) #define PL_op_sequence (my_vars->Gop_sequence) #define PL_Gop_sequence (my_vars->Gop_sequence) #define PL_patleave (my_vars->Gpatleave) #define PL_Gpatleave (my_vars->Gpatleave) #define PL_perlio_debug_fd (my_vars->Gperlio_debug_fd) #define PL_Gperlio_debug_fd (my_vars->Gperlio_debug_fd) #define PL_perlio_fd_refcnt (my_vars->Gperlio_fd_refcnt) #define PL_Gperlio_fd_refcnt (my_vars->Gperlio_fd_refcnt) #define PL_perlio_fd_refcnt_size (my_vars->Gperlio_fd_refcnt_size) #define PL_Gperlio_fd_refcnt_size (my_vars->Gperlio_fd_refcnt_size) #define PL_perlio_mutex (my_vars->Gperlio_mutex) #define PL_Gperlio_mutex (my_vars->Gperlio_mutex) #define PL_ppaddr (my_vars->Gppaddr) #define PL_Gppaddr (my_vars->Gppaddr) #define PL_sh_path (my_vars->Gsh_path) #define PL_Gsh_path (my_vars->Gsh_path) #define PL_sig_defaulting (my_vars->Gsig_defaulting) #define PL_Gsig_defaulting (my_vars->Gsig_defaulting) #define PL_sig_handlers_initted (my_vars->Gsig_handlers_initted) #define PL_Gsig_handlers_initted (my_vars->Gsig_handlers_initted) #define PL_sig_ignoring (my_vars->Gsig_ignoring) #define PL_Gsig_ignoring (my_vars->Gsig_ignoring) #define PL_sig_sv (my_vars->Gsig_sv) #define PL_Gsig_sv (my_vars->Gsig_sv) #define PL_sig_trapped (my_vars->Gsig_trapped) #define PL_Gsig_trapped (my_vars->Gsig_trapped) #define PL_sigfpe_saved (my_vars->Gsigfpe_saved) #define PL_Gsigfpe_saved (my_vars->Gsigfpe_saved) #define PL_sv_placeholder (my_vars->Gsv_placeholder) #define PL_Gsv_placeholder (my_vars->Gsv_placeholder) #define PL_thr_key (my_vars->Gthr_key) #define PL_Gthr_key (my_vars->Gthr_key) #define PL_timesbase (my_vars->Gtimesbase) #define PL_Gtimesbase (my_vars->Gtimesbase) #define PL_use_safe_putenv (my_vars->Guse_safe_putenv) #define PL_Guse_safe_putenv (my_vars->Guse_safe_putenv) #define PL_watch_pvx (my_vars->Gwatch_pvx) #define PL_Gwatch_pvx (my_vars->Gwatch_pvx) #else /* !PERL_GLOBAL_STRUCT */ #define PL_GNo PL_No #define PL_GYes PL_Yes #define PL_Gappctx PL_appctx #define PL_Gcheck PL_check #define PL_Gcsighandlerp PL_csighandlerp #define PL_Gcurinterp PL_curinterp #define PL_Gdo_undump PL_do_undump #define PL_Gdollarzero_mutex PL_dollarzero_mutex #define PL_Gfold_locale PL_fold_locale #define PL_Ghexdigit PL_hexdigit #define PL_Ghints_mutex PL_hints_mutex #define PL_Gmalloc_mutex PL_malloc_mutex #define PL_Gmmap_page_size PL_mmap_page_size #define PL_Gmy_ctx_mutex PL_my_ctx_mutex #define PL_Gmy_cxt_index PL_my_cxt_index #define PL_Gop_mutex PL_op_mutex #define PL_Gop_seq PL_op_seq #define PL_Gop_sequence PL_op_sequence #define PL_Gpatleave PL_patleave #define PL_Gperlio_debug_fd PL_perlio_debug_fd #define PL_Gperlio_fd_refcnt PL_perlio_fd_refcnt #define PL_Gperlio_fd_refcnt_size PL_perlio_fd_refcnt_size #define PL_Gperlio_mutex PL_perlio_mutex #define PL_Gppaddr PL_ppaddr #define PL_Gsh_path PL_sh_path #define PL_Gsig_defaulting PL_sig_defaulting #define PL_Gsig_handlers_initted PL_sig_handlers_initted #define PL_Gsig_ignoring PL_sig_ignoring #define PL_Gsig_sv PL_sig_sv #define PL_Gsig_trapped PL_sig_trapped #define PL_Gsigfpe_saved PL_sigfpe_saved #define PL_Gsv_placeholder PL_sv_placeholder #define PL_Gthr_key PL_thr_key #define PL_Gtimesbase PL_timesbase #define PL_Guse_safe_putenv PL_use_safe_putenv #define PL_Gwatch_pvx PL_watch_pvx #endif /* PERL_GLOBAL_STRUCT */ #ifdef PERL_POLLUTE /* disabled by default in 5.6.0 */ #define DBassertion PL_DBassertion #define DBsingle PL_DBsingle #define DBsub PL_DBsub #define compiling PL_compiling #define curcop PL_curcop #define curstash PL_curstash #define debstash PL_debstash #define defgv PL_defgv #define diehook PL_diehook #define dirty PL_dirty #define dowarn PL_dowarn #define errgv PL_errgv #define na PL_na #define no_modify PL_no_modify #define perl_destruct_level PL_perl_destruct_level #define perldb PL_perldb #define ppaddr PL_ppaddr #define rsfp PL_rsfp #define rsfp_filters PL_rsfp_filters #define stack_base PL_stack_base #define stack_sp PL_stack_sp #define stdingv PL_stdingv #define sv_arenaroot PL_sv_arenaroot #define sv_no PL_sv_no #define sv_undef PL_sv_undef #define sv_yes PL_sv_yes #define tainted PL_tainted #define tainting PL_tainting #endif /* PERL_POLLUTE */ /* ex: set ro: */ Convert-Binary-C-0.76/tests/include/perlinc/unixish.h0000644000175000001440000001042011550664630021267 0ustar mhxusers/* unixish.h * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, * by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* * The following symbols are defined if your operating system supports * functions by that name. All Unixes I know of support them, thus they * are not checked by the configuration script, but are directly defined * here. */ #ifndef PERL_MICRO /* HAS_IOCTL: * This symbol, if defined, indicates that the ioctl() routine is * available to set I/O characteristics */ #define HAS_IOCTL /**/ /* HAS_UTIME: * This symbol, if defined, indicates that the routine utime() is * available to update the access and modification times of files. */ #define HAS_UTIME /**/ /* HAS_GROUP * This symbol, if defined, indicates that the getgrnam() and * getgrgid() routines are available to get group entries. * The getgrent() has a separate definition, HAS_GETGRENT. */ #define HAS_GROUP /**/ /* HAS_PASSWD * This symbol, if defined, indicates that the getpwnam() and * getpwuid() routines are available to get password entries. * The getpwent() has a separate definition, HAS_GETPWENT. */ #define HAS_PASSWD /**/ #define HAS_KILL #define HAS_WAIT #endif /* !PERL_MICRO */ /* USEMYBINMODE * This symbol, if defined, indicates that the program should * use the routine my_binmode(FILE *fp, char iotype) to insure * that a file is in "binary" mode -- that is, that no translation * of bytes occurs on read or write operations. */ #undef USEMYBINMODE /* Stat_t: * This symbol holds the type used to declare buffers for information * returned by stat(). It's usually just struct stat. It may be necessary * to include and to get any typedef'ed * information. */ #define Stat_t struct stat /* USE_STAT_RDEV: * This symbol is defined if this system has a stat structure declaring * st_rdev */ #define USE_STAT_RDEV /**/ /* ACME_MESS: * This symbol, if defined, indicates that error messages should be * should be generated in a format that allows the use of the Acme * GUI/editor's autofind feature. */ #undef ACME_MESS /**/ /* UNLINK_ALL_VERSIONS: * This symbol, if defined, indicates that the program should arrange * to remove all versions of a file if unlink() is called. This is * probably only relevant for VMS. */ /* #define UNLINK_ALL_VERSIONS / **/ /* VMS: * This symbol, if defined, indicates that the program is running under * VMS. It is currently automatically set by cpps running under VMS, * and is included here for completeness only. */ /* #define VMS / **/ /* ALTERNATE_SHEBANG: * This symbol, if defined, contains a "magic" string which may be used * as the first line of a Perl program designed to be executed directly * by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG * begins with a character other then #, then Perl will only treat * it as a command line if it finds the string "perl" in the first * word; otherwise it's treated as the first line of code in the script. * (IOW, Perl won't hand off to another interpreter via an alternate * shebang sequence that might be legal Perl code.) */ /* #define ALTERNATE_SHEBANG "#!" / **/ # include #ifndef SIGABRT # define SIGABRT SIGILL #endif #ifndef SIGILL # define SIGILL 6 /* blech */ #endif #define ABORT() kill(PerlProc_getpid(),SIGABRT); /* * fwrite1() should be a routine with the same calling sequence as fwrite(), * but which outputs all of the bytes requested as a single stream (unlike * fwrite() itself, which on some systems outputs several distinct records * if the number_of_items parameter is >1). */ #define fwrite1 fwrite #define Stat(fname,bufptr) stat((fname),(bufptr)) #define Fstat(fd,bufptr) fstat((fd),(bufptr)) #define Fflush(fp) fflush(fp) #define Mkdir(path,mode) mkdir((path),(mode)) #ifndef PERL_SYS_INIT # define PERL_SYS_INIT(c,v) \ MALLOC_CHECK_TAINT2(*c,*v) PERL_FPU_INIT; PERLIO_INIT; MALLOC_INIT #endif #ifndef PERL_SYS_TERM # define PERL_SYS_TERM() HINTS_REFCNT_TERM; OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM #endif #define BIT_BUCKET "/dev/null" #define dXSUB_SYS #ifndef NO_ENVIRON_ARRAY #define USE_ENVIRON_ARRAY #endif Convert-Binary-C-0.76/tests/include/perlinc/config.h0000644000175000001440000041514011550664630021055 0ustar mhxusers/* * This file was produced by running the config_h.SH script, which * gets its values from config.sh, which is generally produced by * running Configure. * * Feel free to modify any of this as the need arises. Note, however, * that running config_h.SH again will wipe out any changes you've made. * For a more permanent change edit config.sh and rerun config_h.SH. * * $Id: config.h 4 2006/11/02 12:41:38 +0100 mhx $ */ /* * Package name : perl5 * Source directory : . * Configuration time: Wed Nov 1 21:24:32 MET 2006 * Configured by : mhx * Target system : linux r2d2 2.6.17.13mhx #1 preempt thu oct 12 20:52:04 mest 2006 i686 intel(r) pentium(r) iii mobile cpu 1000mhz gnulinux */ #ifndef _config_h_ #define _config_h_ /* LOC_SED: * This symbol holds the complete pathname to the sed program. */ #define LOC_SED "/usr/bin/sed" /**/ /* HAS_ALARM: * This symbol, if defined, indicates that the alarm routine is * available. */ #define HAS_ALARM /**/ /* HAS_BCMP: * This symbol is defined if the bcmp() routine is available to * compare blocks of memory. */ #define HAS_BCMP /**/ /* HAS_BCOPY: * This symbol is defined if the bcopy() routine is available to * copy blocks of memory. */ #define HAS_BCOPY /**/ /* HAS_BZERO: * This symbol is defined if the bzero() routine is available to * set a memory block to 0. */ #define HAS_BZERO /**/ /* HAS_CHOWN: * This symbol, if defined, indicates that the chown routine is * available. */ #define HAS_CHOWN /**/ /* HAS_CHROOT: * This symbol, if defined, indicates that the chroot routine is * available. */ #define HAS_CHROOT /**/ /* HAS_CHSIZE: * This symbol, if defined, indicates that the chsize routine is available * to truncate files. You might need a -lx to get this routine. */ /*#define HAS_CHSIZE / **/ /* HAS_CTERMID: * This symbol, if defined, indicates that the ctermid routine is * available to generate filename for terminal. */ #define HAS_CTERMID /**/ /* HAS_CUSERID: * This symbol, if defined, indicates that the cuserid routine is * available to get character login names. */ #define HAS_CUSERID /**/ /* HAS_DBL_DIG: * This symbol, if defined, indicates that this system's * or defines the symbol DBL_DIG, which is the number * of significant digits in a double precision number. If this * symbol is not defined, a guess of 15 is usually pretty good. */ #define HAS_DBL_DIG /* */ /* HAS_DIFFTIME: * This symbol, if defined, indicates that the difftime routine is * available. */ #define HAS_DIFFTIME /**/ /* HAS_DLERROR: * This symbol, if defined, indicates that the dlerror routine is * available to return a string describing the last error that * occurred from a call to dlopen(), dlclose() or dlsym(). */ #define HAS_DLERROR /**/ /* HAS_DUP2: * This symbol, if defined, indicates that the dup2 routine is * available to duplicate file descriptors. */ #define HAS_DUP2 /**/ /* HAS_FCHMOD: * This symbol, if defined, indicates that the fchmod routine is available * to change mode of opened files. If unavailable, use chmod(). */ #define HAS_FCHMOD /**/ /* HAS_FCHOWN: * This symbol, if defined, indicates that the fchown routine is available * to change ownership of opened files. If unavailable, use chown(). */ #define HAS_FCHOWN /**/ /* HAS_FCNTL: * This symbol, if defined, indicates to the C program that * the fcntl() function exists. */ #define HAS_FCNTL /**/ /* HAS_FGETPOS: * This symbol, if defined, indicates that the fgetpos routine is * available to get the file position indicator, similar to ftell(). */ #define HAS_FGETPOS /**/ /* HAS_FLOCK: * This symbol, if defined, indicates that the flock routine is * available to do file locking. */ #define HAS_FLOCK /**/ /* HAS_FORK: * This symbol, if defined, indicates that the fork routine is * available. */ #define HAS_FORK /**/ /* HAS_FSETPOS: * This symbol, if defined, indicates that the fsetpos routine is * available to set the file position indicator, similar to fseek(). */ #define HAS_FSETPOS /**/ /* HAS_GETTIMEOFDAY: * This symbol, if defined, indicates that the gettimeofday() system * call is available for a sub-second accuracy clock. Usually, the file * needs to be included (see I_SYS_RESOURCE). * The type "Timeval" should be used to refer to "struct timeval". */ #define HAS_GETTIMEOFDAY /**/ #ifdef HAS_GETTIMEOFDAY #define Timeval struct timeval /* Structure used by gettimeofday() */ #endif /* HAS_GETGROUPS: * This symbol, if defined, indicates that the getgroups() routine is * available to get the list of process groups. If unavailable, multiple * groups are probably not supported. */ #define HAS_GETGROUPS /**/ /* HAS_GETLOGIN: * This symbol, if defined, indicates that the getlogin routine is * available to get the login name. */ #define HAS_GETLOGIN /**/ /* HAS_GETPGID: * This symbol, if defined, indicates to the C program that * the getpgid(pid) function is available to get the * process group id. */ #define HAS_GETPGID /**/ /* HAS_GETPGRP2: * This symbol, if defined, indicates that the getpgrp2() (as in DG/UX) * routine is available to get the current process group. */ /*#define HAS_GETPGRP2 / **/ /* HAS_GETPPID: * This symbol, if defined, indicates that the getppid routine is * available to get the parent process ID. */ #define HAS_GETPPID /**/ /* HAS_GETPRIORITY: * This symbol, if defined, indicates that the getpriority routine is * available to get a process's priority. */ #define HAS_GETPRIORITY /**/ /* HAS_INET_ATON: * This symbol, if defined, indicates to the C program that the * inet_aton() function is available to parse IP address "dotted-quad" * strings. */ #define HAS_INET_ATON /**/ /* HAS_KILLPG: * This symbol, if defined, indicates that the killpg routine is available * to kill process groups. If unavailable, you probably should use kill * with a negative process number. */ #define HAS_KILLPG /**/ /* HAS_LINK: * This symbol, if defined, indicates that the link routine is * available to create hard links. */ #define HAS_LINK /**/ /* HAS_LOCALECONV: * This symbol, if defined, indicates that the localeconv routine is * available for numeric and monetary formatting conventions. */ #define HAS_LOCALECONV /**/ /* HAS_LOCKF: * This symbol, if defined, indicates that the lockf routine is * available to do file locking. */ #define HAS_LOCKF /**/ /* HAS_LSTAT: * This symbol, if defined, indicates that the lstat routine is * available to do file stats on symbolic links. */ #define HAS_LSTAT /**/ /* HAS_MBLEN: * This symbol, if defined, indicates that the mblen routine is available * to find the number of bytes in a multibye character. */ #define HAS_MBLEN /**/ /* HAS_MBSTOWCS: * This symbol, if defined, indicates that the mbstowcs routine is * available to covert a multibyte string into a wide character string. */ #define HAS_MBSTOWCS /**/ /* HAS_MBTOWC: * This symbol, if defined, indicates that the mbtowc routine is available * to covert a multibyte to a wide character. */ #define HAS_MBTOWC /**/ /* HAS_MEMCMP: * This symbol, if defined, indicates that the memcmp routine is available * to compare blocks of memory. */ #define HAS_MEMCMP /**/ /* HAS_MEMCPY: * This symbol, if defined, indicates that the memcpy routine is available * to copy blocks of memory. */ #define HAS_MEMCPY /**/ /* HAS_MEMMOVE: * This symbol, if defined, indicates that the memmove routine is available * to copy potentially overlapping blocks of memory. This should be used * only when HAS_SAFE_BCOPY is not defined. If neither is there, roll your * own version. */ #define HAS_MEMMOVE /**/ /* HAS_MEMSET: * This symbol, if defined, indicates that the memset routine is available * to set blocks of memory. */ #define HAS_MEMSET /**/ /* HAS_MKDIR: * This symbol, if defined, indicates that the mkdir routine is available * to create directories. Otherwise you should fork off a new process to * exec /bin/mkdir. */ #define HAS_MKDIR /**/ /* HAS_MKFIFO: * This symbol, if defined, indicates that the mkfifo routine is * available to create FIFOs. Otherwise, mknod should be able to * do it for you. However, if mkfifo is there, mknod might require * super-user privileges which mkfifo will not. */ #define HAS_MKFIFO /**/ /* HAS_MKTIME: * This symbol, if defined, indicates that the mktime routine is * available. */ #define HAS_MKTIME /**/ /* HAS_MSYNC: * This symbol, if defined, indicates that the msync system call is * available to synchronize a mapped file. */ #define HAS_MSYNC /**/ /* HAS_MUNMAP: * This symbol, if defined, indicates that the munmap system call is * available to unmap a region, usually mapped by mmap(). */ #define HAS_MUNMAP /**/ /* HAS_NICE: * This symbol, if defined, indicates that the nice routine is * available. */ #define HAS_NICE /**/ /* HAS_PATHCONF: * This symbol, if defined, indicates that pathconf() is available * to determine file-system related limits and options associated * with a given filename. */ /* HAS_FPATHCONF: * This symbol, if defined, indicates that pathconf() is available * to determine file-system related limits and options associated * with a given open file descriptor. */ #define HAS_PATHCONF /**/ #define HAS_FPATHCONF /**/ /* HAS_PAUSE: * This symbol, if defined, indicates that the pause routine is * available to suspend a process until a signal is received. */ #define HAS_PAUSE /**/ /* HAS_PIPE: * This symbol, if defined, indicates that the pipe routine is * available to create an inter-process channel. */ #define HAS_PIPE /**/ /* HAS_READDIR: * This symbol, if defined, indicates that the readdir routine is * available to read directory entries. You may have to include * . See I_DIRENT. */ #define HAS_READDIR /**/ /* HAS_SEEKDIR: * This symbol, if defined, indicates that the seekdir routine is * available. You may have to include . See I_DIRENT. */ #define HAS_SEEKDIR /**/ /* HAS_TELLDIR: * This symbol, if defined, indicates that the telldir routine is * available. You may have to include . See I_DIRENT. */ #define HAS_TELLDIR /**/ /* HAS_REWINDDIR: * This symbol, if defined, indicates that the rewinddir routine is * available. You may have to include . See I_DIRENT. */ #define HAS_REWINDDIR /**/ /* HAS_READLINK: * This symbol, if defined, indicates that the readlink routine is * available to read the value of a symbolic link. */ #define HAS_READLINK /**/ /* HAS_RENAME: * This symbol, if defined, indicates that the rename routine is available * to rename files. Otherwise you should do the unlink(), link(), unlink() * trick. */ #define HAS_RENAME /**/ /* HAS_RMDIR: * This symbol, if defined, indicates that the rmdir routine is * available to remove directories. Otherwise you should fork off a * new process to exec /bin/rmdir. */ #define HAS_RMDIR /**/ /* HAS_SELECT: * This symbol, if defined, indicates that the select routine is * available to select active file descriptors. If the timeout field * is used, may need to be included. */ #define HAS_SELECT /**/ /* HAS_SETEGID: * This symbol, if defined, indicates that the setegid routine is available * to change the effective gid of the current program. */ #define HAS_SETEGID /**/ /* HAS_SETEUID: * This symbol, if defined, indicates that the seteuid routine is available * to change the effective uid of the current program. */ #define HAS_SETEUID /**/ /* HAS_SETLINEBUF: * This symbol, if defined, indicates that the setlinebuf routine is * available to change stderr or stdout from block-buffered or unbuffered * to a line-buffered mode. */ #define HAS_SETLINEBUF /**/ /* HAS_SETLOCALE: * This symbol, if defined, indicates that the setlocale routine is * available to handle locale-specific ctype implementations. */ #define HAS_SETLOCALE /**/ /* HAS_SETPGID: * This symbol, if defined, indicates that the setpgid(pid, gpid) * routine is available to set process group ID. */ #define HAS_SETPGID /**/ /* HAS_SETPGRP2: * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX) * routine is available to set the current process group. */ /*#define HAS_SETPGRP2 / **/ /* HAS_SETPRIORITY: * This symbol, if defined, indicates that the setpriority routine is * available to set a process's priority. */ #define HAS_SETPRIORITY /**/ /* HAS_SETREGID: * This symbol, if defined, indicates that the setregid routine is * available to change the real and effective gid of the current * process. */ /* HAS_SETRESGID: * This symbol, if defined, indicates that the setresgid routine is * available to change the real, effective and saved gid of the current * process. */ #define HAS_SETREGID /**/ #define HAS_SETRESGID /**/ /* HAS_SETREUID: * This symbol, if defined, indicates that the setreuid routine is * available to change the real and effective uid of the current * process. */ /* HAS_SETRESUID: * This symbol, if defined, indicates that the setresuid routine is * available to change the real, effective and saved uid of the current * process. */ #define HAS_SETREUID /**/ #define HAS_SETRESUID /**/ /* HAS_SETRGID: * This symbol, if defined, indicates that the setrgid routine is available * to change the real gid of the current program. */ /*#define HAS_SETRGID / **/ /* HAS_SETRUID: * This symbol, if defined, indicates that the setruid routine is available * to change the real uid of the current program. */ /*#define HAS_SETRUID / **/ /* HAS_SETSID: * This symbol, if defined, indicates that the setsid routine is * available to set the process group ID. */ #define HAS_SETSID /**/ /* HAS_STRCHR: * This symbol is defined to indicate that the strchr()/strrchr() * functions are available for string searching. If not, try the * index()/rindex() pair. */ /* HAS_INDEX: * This symbol is defined to indicate that the index()/rindex() * functions are available for string searching. */ #define HAS_STRCHR /**/ /*#define HAS_INDEX / **/ /* HAS_STRCOLL: * This symbol, if defined, indicates that the strcoll routine is * available to compare strings using collating information. */ #define HAS_STRCOLL /**/ /* USE_STRUCT_COPY: * This symbol, if defined, indicates that this C compiler knows how * to copy structures. If undefined, you'll need to use a block copy * routine of some sort instead. */ #define USE_STRUCT_COPY /**/ /* HAS_STRTOD: * This symbol, if defined, indicates that the strtod routine is * available to provide better numeric string conversion than atof(). */ #define HAS_STRTOD /**/ /* HAS_STRTOL: * This symbol, if defined, indicates that the strtol routine is available * to provide better numeric string conversion than atoi() and friends. */ #define HAS_STRTOL /**/ /* HAS_STRXFRM: * This symbol, if defined, indicates that the strxfrm() routine is * available to transform strings. */ #define HAS_STRXFRM /**/ /* HAS_SYMLINK: * This symbol, if defined, indicates that the symlink routine is available * to create symbolic links. */ #define HAS_SYMLINK /**/ /* HAS_SYSCALL: * This symbol, if defined, indicates that the syscall routine is * available to call arbitrary system calls. If undefined, that's tough. */ #define HAS_SYSCALL /**/ /* HAS_SYSCONF: * This symbol, if defined, indicates that sysconf() is available * to determine system related limits and options. */ #define HAS_SYSCONF /**/ /* HAS_SYSTEM: * This symbol, if defined, indicates that the system routine is * available to issue a shell command. */ #define HAS_SYSTEM /**/ /* HAS_TCGETPGRP: * This symbol, if defined, indicates that the tcgetpgrp routine is * available to get foreground process group ID. */ #define HAS_TCGETPGRP /**/ /* HAS_TCSETPGRP: * This symbol, if defined, indicates that the tcsetpgrp routine is * available to set foreground process group ID. */ #define HAS_TCSETPGRP /**/ /* HAS_TRUNCATE: * This symbol, if defined, indicates that the truncate routine is * available to truncate files. */ #define HAS_TRUNCATE /**/ /* HAS_TZNAME: * This symbol, if defined, indicates that the tzname[] array is * available to access timezone names. */ #define HAS_TZNAME /**/ /* HAS_UMASK: * This symbol, if defined, indicates that the umask routine is * available to set and get the value of the file creation mask. */ #define HAS_UMASK /**/ /* HAS_USLEEP: * This symbol, if defined, indicates that the usleep routine is * available to let the process sleep on a sub-second accuracy. */ #define HAS_USLEEP /**/ /* HASVOLATILE: * This symbol, if defined, indicates that this C compiler knows about * the volatile declaration. */ #define HASVOLATILE /**/ #ifndef HASVOLATILE #define volatile #endif /* HAS_WAIT4: * This symbol, if defined, indicates that wait4() exists. */ #define HAS_WAIT4 /**/ /* HAS_WAITPID: * This symbol, if defined, indicates that the waitpid routine is * available to wait for child process. */ #define HAS_WAITPID /**/ /* HAS_WCSTOMBS: * This symbol, if defined, indicates that the wcstombs routine is * available to convert wide character strings to multibyte strings. */ #define HAS_WCSTOMBS /**/ /* HAS_WCTOMB: * This symbol, if defined, indicates that the wctomb routine is available * to covert a wide character to a multibyte. */ #define HAS_WCTOMB /**/ /* I_ARPA_INET: * This symbol, if defined, indicates to the C program that it should * include to get inet_addr and friends declarations. */ #define I_ARPA_INET /**/ /* I_DBM: * This symbol, if defined, indicates that exists and should * be included. */ /* I_RPCSVC_DBM: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_DBM / **/ /*#define I_RPCSVC_DBM / **/ /* I_DIRENT: * This symbol, if defined, indicates to the C program that it should * include . Using this symbol also triggers the definition * of the Direntry_t define which ends up being 'struct dirent' or * 'struct direct' depending on the availability of . */ /* DIRNAMLEN: * This symbol, if defined, indicates to the C program that the length * of directory entry names is provided by a d_namlen field. Otherwise * you need to do strlen() on the d_name field. */ /* Direntry_t: * This symbol is set to 'struct direct' or 'struct dirent' depending on * whether dirent is available or not. You should use this pseudo type to * portably declare your directory entries. */ #define I_DIRENT /**/ /*#define DIRNAMLEN / **/ #define Direntry_t struct dirent /* I_DLFCN: * This symbol, if defined, indicates that exists and should * be included. */ #define I_DLFCN /**/ /* I_FCNTL: * This manifest constant tells the C program to include . */ /*#define I_FCNTL / **/ /* I_FLOAT: * This symbol, if defined, indicates to the C program that it should * include to get definition of symbols like DBL_MAX or * DBL_MIN, i.e. machine dependent floating point values. */ #define I_FLOAT /**/ /* I_GDBM: * This symbol, if defined, indicates that exists and should * be included. */ #define I_GDBM /**/ /* I_LIMITS: * This symbol, if defined, indicates to the C program that it should * include to get definition of symbols like WORD_BIT or * LONG_MAX, i.e. machine dependant limitations. */ #define I_LIMITS /**/ /* I_LOCALE: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_LOCALE /**/ /* I_MATH: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_MATH /**/ /* I_MEMORY: * This symbol, if defined, indicates to the C program that it should * include . */ /*#define I_MEMORY / **/ /* I_NET_ERRNO: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_NET_ERRNO / **/ /* I_NETINET_IN: * This symbol, if defined, indicates to the C program that it should * include . Otherwise, you may try . */ #define I_NETINET_IN /**/ /* I_SFIO: * This symbol, if defined, indicates to the C program that it should * include . */ /*#define I_SFIO / **/ /* I_STDDEF: * This symbol, if defined, indicates that exists and should * be included. */ #define I_STDDEF /**/ /* I_STDLIB: * This symbol, if defined, indicates that exists and should * be included. */ #define I_STDLIB /**/ /* I_STRING: * This symbol, if defined, indicates to the C program that it should * include (USG systems) instead of (BSD systems). */ #define I_STRING /**/ /* I_SYS_DIR: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_SYS_DIR /**/ /* I_SYS_FILE: * This symbol, if defined, indicates to the C program that it should * include to get definition of R_OK and friends. */ #define I_SYS_FILE /**/ /* I_SYS_IOCTL: * This symbol, if defined, indicates that exists and should * be included. Otherwise, include or . */ /* I_SYS_SOCKIO: * This symbol, if defined, indicates the should be included * to get socket ioctl options, like SIOCATMARK. */ #define I_SYS_IOCTL /**/ /*#define I_SYS_SOCKIO / **/ /* I_SYS_NDIR: * This symbol, if defined, indicates to the C program that it should * include . */ /*#define I_SYS_NDIR / **/ /* I_SYS_PARAM: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_SYS_PARAM /**/ /* I_SYS_RESOURCE: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_SYS_RESOURCE /**/ /* I_SYS_SELECT: * This symbol, if defined, indicates to the C program that it should * include in order to get definition of struct timeval. */ #define I_SYS_SELECT /**/ /* I_SYS_STAT: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_SYS_STAT /**/ /* I_SYS_TIMES: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_SYS_TIMES /**/ /* I_SYS_TYPES: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_SYS_TYPES /**/ /* I_SYS_UN: * This symbol, if defined, indicates to the C program that it should * include to get UNIX domain socket definitions. */ #define I_SYS_UN /**/ /* I_SYS_WAIT: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_SYS_WAIT /**/ /* I_TERMIO: * This symbol, if defined, indicates that the program should include * rather than . There are also differences in * the ioctl() calls that depend on the value of this symbol. */ /* I_TERMIOS: * This symbol, if defined, indicates that the program should include * the POSIX termios.h rather than sgtty.h or termio.h. * There are also differences in the ioctl() calls that depend on the * value of this symbol. */ /* I_SGTTY: * This symbol, if defined, indicates that the program should include * rather than . There are also differences in * the ioctl() calls that depend on the value of this symbol. */ /*#define I_TERMIO / **/ #define I_TERMIOS /**/ /*#define I_SGTTY / **/ /* I_UNISTD: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_UNISTD /**/ /* I_UTIME: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_UTIME /**/ /* I_VALUES: * This symbol, if defined, indicates to the C program that it should * include to get definition of symbols like MINFLOAT or * MAXLONG, i.e. machine dependant limitations. Probably, you * should use instead, if it is available. */ #define I_VALUES /**/ /* I_VFORK: * This symbol, if defined, indicates to the C program that it should * include vfork.h. */ /*#define I_VFORK / **/ /* HAS_ACCESSX: * This symbol, if defined, indicates that the accessx routine is * available to do extended access checks. */ /*#define HAS_ACCESSX / **/ /* HAS_EACCESS: * This symbol, if defined, indicates that the eaccess routine is * available to do extended access checks. */ #define HAS_EACCESS /**/ /* I_SYS_ACCESS: * This symbol, if defined, indicates to the C program that it should * include . */ /*#define I_SYS_ACCESS / **/ /* I_SYS_SECURITY: * This symbol, if defined, indicates to the C program that it should * include . */ /*#define I_SYS_SECURITY / **/ /* USE_CROSS_COMPILE: * This symbol, if defined, indicates that Perl is being cross-compiled. */ /* PERL_TARGETARCH: * This symbol, if defined, indicates the target architecture * Perl has been cross-compiled to. Undefined if not a cross-compile. */ #ifndef USE_CROSS_COMPILE /*#define USE_CROSS_COMPILE / **/ #define PERL_TARGETARCH "" /**/ #endif /* OSNAME: * This symbol contains the name of the operating system, as determined * by Configure. You shouldn't rely on it too much; the specific * feature tests from Configure are generally more reliable. */ /* OSVERS: * This symbol contains the version of the operating system, as determined * by Configure. You shouldn't rely on it too much; the specific * feature tests from Configure are generally more reliable. */ #define OSNAME "linux" /**/ #define OSVERS "2.6.17.13mhx" /**/ /* MULTIARCH: * This symbol, if defined, signifies that the build * process will produce some binary files that are going to be * used in a cross-platform environment. This is the case for * example with the NeXT "fat" binaries that contain executables * for several CPUs. */ /*#define MULTIARCH / **/ /* MEM_ALIGNBYTES: * This symbol contains the number of bytes required to align a * double, or a long double when applicable. Usual values are 2, * 4 and 8. The default is eight, for safety. */ #if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) # define MEM_ALIGNBYTES 8 #else #define MEM_ALIGNBYTES 4 #endif /* ARCHLIB: * This variable, if defined, holds the name of the directory in * which the user wants to put architecture-dependent public * library files for perl5. It is most often a local directory * such as /usr/local/lib. Programs using this variable must be * prepared to deal with filename expansion. If ARCHLIB is the * same as PRIVLIB, it is not defined, since presumably the * program already searches PRIVLIB. */ /* ARCHLIB_EXP: * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ #define ARCHLIB "/usr/local/lib/perl5/5.9.5/i686-linux" /**/ #define ARCHLIB_EXP "/usr/local/lib/perl5/5.9.5/i686-linux" /**/ /* ARCHNAME: * This symbol holds a string representing the architecture name. * It may be used to construct an architecture-dependant pathname * where library files may be held under a private library, for * instance. */ #define ARCHNAME "i686-linux" /**/ /* HAS_ATOLF: * This symbol, if defined, indicates that the atolf routine is * available to convert strings into long doubles. */ /*#define HAS_ATOLF / **/ /* HAS_ATOLL: * This symbol, if defined, indicates that the atoll routine is * available to convert strings into long longs. */ #define HAS_ATOLL /**/ /* BIN: * This symbol holds the path of the bin directory where the package will * be installed. Program must be prepared to deal with ~name substitution. */ /* BIN_EXP: * This symbol is the filename expanded version of the BIN symbol, for * programs that do not want to deal with that at run-time. */ /* PERL_RELOCATABLE_INC: * This symbol, if defined, indicates that we'd like to relocate entries * in @INC at run time based on the location of the perl binary. */ #define BIN "/usr/local/bin" /**/ #define BIN_EXP "/usr/local/bin" /**/ #define PERL_RELOCATABLE_INC "undef" /**/ /* INTSIZE: * This symbol contains the value of sizeof(int) so that the C * preprocessor can make decisions based on it. */ /* LONGSIZE: * This symbol contains the value of sizeof(long) so that the C * preprocessor can make decisions based on it. */ /* SHORTSIZE: * This symbol contains the value of sizeof(short) so that the C * preprocessor can make decisions based on it. */ #define INTSIZE 4 /**/ #define LONGSIZE 4 /**/ #define SHORTSIZE 2 /**/ /* BYTEORDER: * This symbol holds the hexadecimal constant defined in byteorder, * in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc... * If the compiler supports cross-compiling or multiple-architecture * binaries (eg. on NeXT systems), use compiler-defined macros to * determine the byte order. * On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture * Binaries (MAB) on either big endian or little endian machines. * The endian-ness is available at compile-time. This only matters * for perl, where the config.h can be generated and installed on * one system, and used by a different architecture to build an * extension. Older versions of NeXT that might not have * defined either *_ENDIAN__ were all on Motorola 680x0 series, * so the default case (for NeXT) is big endian to catch them. * This might matter for NeXT 3.0. */ #if defined(USE_CROSS_COMPILE) || defined(MULTIARCH) # ifdef __LITTLE_ENDIAN__ # if LONGSIZE == 4 # define BYTEORDER 0x1234 # else # if LONGSIZE == 8 # define BYTEORDER 0x12345678 # endif # endif # else # ifdef __BIG_ENDIAN__ # if LONGSIZE == 4 # define BYTEORDER 0x4321 # else # if LONGSIZE == 8 # define BYTEORDER 0x87654321 # endif # endif # endif # endif # if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__)) # define BYTEORDER 0x4321 # endif #else #define BYTEORDER 0x1234 /* large digits for MSB */ #endif /* NeXT */ /* CAT2: * This macro concatenates 2 tokens together. */ /* STRINGIFY: * This macro surrounds its token with double quotes. */ #if 42 == 1 #define CAT2(a,b) a/**/b #define STRINGIFY(a) "a" /* If you can get stringification with catify, tell me how! */ #endif #if 42 == 42 #define PeRl_CaTiFy(a, b) a ## b #define PeRl_StGiFy(a) #a /* the additional level of indirection enables these macros to be * used as arguments to other macros. See K&R 2nd ed., page 231. */ #define CAT2(a,b) PeRl_CaTiFy(a,b) #define StGiFy(a) PeRl_StGiFy(a) #define STRINGIFY(a) PeRl_StGiFy(a) #endif #if 42 != 1 && 42 != 42 # include "Bletch: How does this C preprocessor concatenate tokens?" #endif /* CPPSTDIN: * This symbol contains the first part of the string which will invoke * the C preprocessor on the standard input and produce to standard * output. Typical value of "cc -E" or "/lib/cpp", but it can also * call a wrapper. See CPPRUN. */ /* CPPMINUS: * This symbol contains the second part of the string which will invoke * the C preprocessor on the standard input and produce to standard * output. This symbol will have the value "-" if CPPSTDIN needs a minus * to specify standard input, otherwise the value is "". */ /* CPPRUN: * This symbol contains the string which will invoke a C preprocessor on * the standard input and produce to standard output. It needs to end * with CPPLAST, after all other preprocessor flags have been specified. * The main difference with CPPSTDIN is that this program will never be a * pointer to a shell wrapper, i.e. it will be empty if no preprocessor is * available directly to the user. Note that it may well be different from * the preprocessor used to compile the C program. */ /* CPPLAST: * This symbol is intended to be used along with CPPRUN in the same manner * symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "". */ #define CPPSTDIN "cc -E" #define CPPMINUS "-" #define CPPRUN "cc -E" #define CPPLAST "-" /* HAS__FWALK: * This symbol, if defined, indicates that the _fwalk system call is * available to apply a function to all the file handles. */ /*#define HAS__FWALK / **/ /* HAS_ACCESS: * This manifest constant lets the C program know that the access() * system call is available to check for accessibility using real UID/GID. * (always present on UNIX.) */ #define HAS_ACCESS /**/ /* HAS_AINTL: * This symbol, if defined, indicates that the aintl routine is * available. If copysignl is also present we can emulate modfl. */ /*#define HAS_AINTL / **/ /* HAS_ASCTIME_R: * This symbol, if defined, indicates that the asctime_r routine * is available to asctime re-entrantly. */ /* ASCTIME_R_PROTO: * This symbol encodes the prototype of asctime_r. * It is zero if d_asctime_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_asctime_r * is defined. */ /*#define HAS_ASCTIME_R / **/ #define ASCTIME_R_PROTO 0 /**/ /* HASATTRIBUTE_FORMAT: * Can we handle GCC attribute for checking printf-style formats */ /* HASATTRIBUTE_MALLOC: * Can we handle GCC attribute for malloc-style functions. */ /* HASATTRIBUTE_NONNULL: * Can we handle GCC attribute for nonnull function parms. */ /* HASATTRIBUTE_NORETURN: * Can we handle GCC attribute for functions that do not return */ /* HASATTRIBUTE_PURE: * Can we handle GCC attribute for pure functions */ /* HASATTRIBUTE_UNUSED: * Can we handle GCC attribute for unused variables and arguments */ /* HASATTRIBUTE_WARN_UNUSED_RESULT: * Can we handle GCC attribute for warning on unused results */ #define HASATTRIBUTE_FORMAT /**/ #define HASATTRIBUTE_NORETURN /**/ #define HASATTRIBUTE_MALLOC /**/ #define HASATTRIBUTE_NONNULL /**/ #define HASATTRIBUTE_PURE /**/ #define HASATTRIBUTE_UNUSED /**/ #define HASATTRIBUTE_WARN_UNUSED_RESULT /**/ /* HAS_BUILTIN_CHOOSE_EXPR: * Can we handle GCC builtin for compile-time ternary-like expressions */ /* HAS_BUILTIN_EXPECT: * Can we handle GCC builtin for telling that certain values are more * likely */ /*#define HAS_BUILTIN_EXPECT / **/ #define HAS_BUILTIN_CHOOSE_EXPR /**/ /* HAS_C99_VARIADIC_MACROS: * If defined, the compiler supports C99 variadic macros. */ #define HAS_C99_VARIADIC_MACROS /**/ /* CASTI32: * This symbol is defined if the C compiler can cast negative * or large floating point numbers to 32-bit ints. */ /*#define CASTI32 / **/ /* CASTNEGFLOAT: * This symbol is defined if the C compiler can cast negative * numbers to unsigned longs, ints and shorts. */ /* CASTFLAGS: * This symbol contains flags that say what difficulties the compiler * has casting odd floating values to unsigned long: * 0 = ok * 1 = couldn't cast < 0 * 2 = couldn't cast >= 0x80000000 * 4 = couldn't cast in argument expression list */ #define CASTNEGFLOAT /**/ #define CASTFLAGS 0 /**/ /* HAS_CLASS: * This symbol, if defined, indicates that the class routine is * available to classify doubles. Available for example in AIX. * The returned values are defined in and are: * * FP_PLUS_NORM Positive normalized, nonzero * FP_MINUS_NORM Negative normalized, nonzero * FP_PLUS_DENORM Positive denormalized, nonzero * FP_MINUS_DENORM Negative denormalized, nonzero * FP_PLUS_ZERO +0.0 * FP_MINUS_ZERO -0.0 * FP_PLUS_INF +INF * FP_MINUS_INF -INF * FP_NANS Signaling Not a Number (NaNS) * FP_NANQ Quiet Not a Number (NaNQ) */ /*#define HAS_CLASS / **/ /* HAS_CLEARENV: * This symbol, if defined, indicates that the clearenv () routine is * available for use. */ #define HAS_CLEARENV /**/ /* VOID_CLOSEDIR: * This symbol, if defined, indicates that the closedir() routine * does not return a value. */ /*#define VOID_CLOSEDIR / **/ /* HAS_STRUCT_CMSGHDR: * This symbol, if defined, indicates that the struct cmsghdr * is supported. */ #define HAS_STRUCT_CMSGHDR /**/ /* HASCONST: * This symbol, if defined, indicates that this C compiler knows about * the const type. There is no need to actually test for that symbol * within your programs. The mere use of the "const" keyword will * trigger the necessary tests. */ #define HASCONST /**/ #ifndef HASCONST #define const #endif /* HAS_COPYSIGNL: * This symbol, if defined, indicates that the copysignl routine is * available. If aintl is also present we can emulate modfl. */ #define HAS_COPYSIGNL /**/ /* USE_CPLUSPLUS: * This symbol, if defined, indicates that a C++ compiler was * used to compiled Perl and will be used to compile extensions. */ /*#define USE_CPLUSPLUS / **/ /* HAS_CRYPT: * This symbol, if defined, indicates that the crypt routine is available * to encrypt passwords and the like. */ #define HAS_CRYPT /**/ /* HAS_CRYPT_R: * This symbol, if defined, indicates that the crypt_r routine * is available to crypt re-entrantly. */ /* CRYPT_R_PROTO: * This symbol encodes the prototype of crypt_r. * It is zero if d_crypt_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_crypt_r * is defined. */ /*#define HAS_CRYPT_R / **/ #define CRYPT_R_PROTO 0 /**/ /* HAS_CSH: * This symbol, if defined, indicates that the C-shell exists. */ /* CSH: * This symbol, if defined, contains the full pathname of csh. */ #define HAS_CSH /**/ #ifdef HAS_CSH #define CSH "/bin/csh" /**/ #endif /* HAS_CTERMID_R: * This symbol, if defined, indicates that the ctermid_r routine * is available to ctermid re-entrantly. */ /* CTERMID_R_PROTO: * This symbol encodes the prototype of ctermid_r. * It is zero if d_ctermid_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctermid_r * is defined. */ /*#define HAS_CTERMID_R / **/ #define CTERMID_R_PROTO 0 /**/ /* HAS_CTIME_R: * This symbol, if defined, indicates that the ctime_r routine * is available to ctime re-entrantly. */ /* CTIME_R_PROTO: * This symbol encodes the prototype of ctime_r. * It is zero if d_ctime_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ctime_r * is defined. */ /*#define HAS_CTIME_R / **/ #define CTIME_R_PROTO 0 /**/ /* HAS_DBMINIT_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the dbminit() function. Otherwise, it is up * to the program to supply one. A good guess is * extern int dbminit(char *); */ /*#define HAS_DBMINIT_PROTO / **/ /* HAS_DIRFD: * This manifest constant lets the C program know that dirfd * is available. */ #define HAS_DIRFD /**/ /* DLSYM_NEEDS_UNDERSCORE: * This symbol, if defined, indicates that we need to prepend an * underscore to the symbol name before calling dlsym(). This only * makes sense if you *have* dlsym, which we will presume is the * case if you're using dl_dlopen.xs. */ /*#define DLSYM_NEEDS_UNDERSCORE / **/ /* SETUID_SCRIPTS_ARE_SECURE_NOW: * This symbol, if defined, indicates that the bug that prevents * setuid scripts from being secure is not present in this kernel. */ /* DOSUID: * This symbol, if defined, indicates that the C program should * check the script that it is executing for setuid/setgid bits, and * attempt to emulate setuid/setgid on systems that have disabled * setuid #! scripts because the kernel can't do it securely. * It is up to the package designer to make sure that this emulation * is done securely. Among other things, it should do an fstat on * the script it just opened to make sure it really is a setuid/setgid * script, it should make sure the arguments passed correspond exactly * to the argument on the #! line, and it should not trust any * subprocesses to which it must pass the filename rather than the * file descriptor of the script to be executed. */ /*#define SETUID_SCRIPTS_ARE_SECURE_NOW / **/ /*#define DOSUID / **/ /* HAS_DRAND48_R: * This symbol, if defined, indicates that the drand48_r routine * is available to drand48 re-entrantly. */ /* DRAND48_R_PROTO: * This symbol encodes the prototype of drand48_r. * It is zero if d_drand48_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_drand48_r * is defined. */ /*#define HAS_DRAND48_R / **/ #define DRAND48_R_PROTO 0 /**/ /* HAS_DRAND48_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the drand48() function. Otherwise, it is up * to the program to supply one. A good guess is * extern double drand48(void); */ #define HAS_DRAND48_PROTO /**/ /* HAS_ENDGRENT: * This symbol, if defined, indicates that the getgrent routine is * available for finalizing sequential access of the group database. */ #define HAS_ENDGRENT /**/ /* HAS_ENDGRENT_R: * This symbol, if defined, indicates that the endgrent_r routine * is available to endgrent re-entrantly. */ /* ENDGRENT_R_PROTO: * This symbol encodes the prototype of endgrent_r. * It is zero if d_endgrent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endgrent_r * is defined. */ /*#define HAS_ENDGRENT_R / **/ #define ENDGRENT_R_PROTO 0 /**/ /* HAS_ENDHOSTENT: * This symbol, if defined, indicates that the endhostent() routine is * available to close whatever was being used for host queries. */ #define HAS_ENDHOSTENT /**/ /* HAS_ENDHOSTENT_R: * This symbol, if defined, indicates that the endhostent_r routine * is available to endhostent re-entrantly. */ /* ENDHOSTENT_R_PROTO: * This symbol encodes the prototype of endhostent_r. * It is zero if d_endhostent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endhostent_r * is defined. */ /*#define HAS_ENDHOSTENT_R / **/ #define ENDHOSTENT_R_PROTO 0 /**/ /* HAS_ENDNETENT: * This symbol, if defined, indicates that the endnetent() routine is * available to close whatever was being used for network queries. */ #define HAS_ENDNETENT /**/ /* HAS_ENDNETENT_R: * This symbol, if defined, indicates that the endnetent_r routine * is available to endnetent re-entrantly. */ /* ENDNETENT_R_PROTO: * This symbol encodes the prototype of endnetent_r. * It is zero if d_endnetent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endnetent_r * is defined. */ /*#define HAS_ENDNETENT_R / **/ #define ENDNETENT_R_PROTO 0 /**/ /* HAS_ENDPROTOENT: * This symbol, if defined, indicates that the endprotoent() routine is * available to close whatever was being used for protocol queries. */ #define HAS_ENDPROTOENT /**/ /* HAS_ENDPROTOENT_R: * This symbol, if defined, indicates that the endprotoent_r routine * is available to endprotoent re-entrantly. */ /* ENDPROTOENT_R_PROTO: * This symbol encodes the prototype of endprotoent_r. * It is zero if d_endprotoent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endprotoent_r * is defined. */ /*#define HAS_ENDPROTOENT_R / **/ #define ENDPROTOENT_R_PROTO 0 /**/ /* HAS_ENDPWENT: * This symbol, if defined, indicates that the getgrent routine is * available for finalizing sequential access of the passwd database. */ #define HAS_ENDPWENT /**/ /* HAS_ENDPWENT_R: * This symbol, if defined, indicates that the endpwent_r routine * is available to endpwent re-entrantly. */ /* ENDPWENT_R_PROTO: * This symbol encodes the prototype of endpwent_r. * It is zero if d_endpwent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endpwent_r * is defined. */ /*#define HAS_ENDPWENT_R / **/ #define ENDPWENT_R_PROTO 0 /**/ /* HAS_ENDSERVENT: * This symbol, if defined, indicates that the endservent() routine is * available to close whatever was being used for service queries. */ #define HAS_ENDSERVENT /**/ /* HAS_ENDSERVENT_R: * This symbol, if defined, indicates that the endservent_r routine * is available to endservent re-entrantly. */ /* ENDSERVENT_R_PROTO: * This symbol encodes the prototype of endservent_r. * It is zero if d_endservent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_endservent_r * is defined. */ /*#define HAS_ENDSERVENT_R / **/ #define ENDSERVENT_R_PROTO 0 /**/ /* HAS_FAST_STDIO: * This symbol, if defined, indicates that the "fast stdio" * is available to manipulate the stdio buffers directly. */ /*#define HAS_FAST_STDIO / **/ /* HAS_FCHDIR: * This symbol, if defined, indicates that the fchdir routine is * available to change directory using a file descriptor. */ #define HAS_FCHDIR /**/ /* FCNTL_CAN_LOCK: * This symbol, if defined, indicates that fcntl() can be used * for file locking. Normally on Unix systems this is defined. * It may be undefined on VMS. */ #define FCNTL_CAN_LOCK /**/ /* HAS_FD_SET: * This symbol, when defined, indicates presence of the fd_set typedef * in */ #define HAS_FD_SET /**/ /* HAS_FINITE: * This symbol, if defined, indicates that the finite routine is * available to check whether a double is finite (non-infinity non-NaN). */ #define HAS_FINITE /**/ /* HAS_FINITEL: * This symbol, if defined, indicates that the finitel routine is * available to check whether a long double is finite * (non-infinity non-NaN). */ #define HAS_FINITEL /**/ /* FLEXFILENAMES: * This symbol, if defined, indicates that the system supports filenames * longer than 14 characters. */ #define FLEXFILENAMES /**/ /* HAS_FLOCK_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the flock() function. Otherwise, it is up * to the program to supply one. A good guess is * extern int flock(int, int); */ #define HAS_FLOCK_PROTO /**/ /* HAS_FP_CLASS: * This symbol, if defined, indicates that the fp_class routine is * available to classify doubles. Available for example in Digital UNIX. * The returned values are defined in and are: * * FP_SNAN Signaling NaN (Not-a-Number) * FP_QNAN Quiet NaN (Not-a-Number) * FP_POS_INF +infinity * FP_NEG_INF -infinity * FP_POS_NORM Positive normalized * FP_NEG_NORM Negative normalized * FP_POS_DENORM Positive denormalized * FP_NEG_DENORM Negative denormalized * FP_POS_ZERO +0.0 (positive zero) * FP_NEG_ZERO -0.0 (negative zero) */ /*#define HAS_FP_CLASS / **/ /* HAS_FPCLASS: * This symbol, if defined, indicates that the fpclass routine is * available to classify doubles. Available for example in Solaris/SVR4. * The returned values are defined in and are: * * FP_SNAN signaling NaN * FP_QNAN quiet NaN * FP_NINF negative infinity * FP_PINF positive infinity * FP_NDENORM negative denormalized non-zero * FP_PDENORM positive denormalized non-zero * FP_NZERO negative zero * FP_PZERO positive zero * FP_NNORM negative normalized non-zero * FP_PNORM positive normalized non-zero */ /*#define HAS_FPCLASS / **/ /* HAS_FPCLASSIFY: * This symbol, if defined, indicates that the fpclassify routine is * available to classify doubles. Available for example in HP-UX. * The returned values are defined in and are * * FP_NORMAL Normalized * FP_ZERO Zero * FP_INFINITE Infinity * FP_SUBNORMAL Denormalized * FP_NAN NaN * */ /*#define HAS_FPCLASSIFY / **/ /* HAS_FPCLASSL: * This symbol, if defined, indicates that the fpclassl routine is * available to classify long doubles. Available for example in IRIX. * The returned values are defined in and are: * * FP_SNAN signaling NaN * FP_QNAN quiet NaN * FP_NINF negative infinity * FP_PINF positive infinity * FP_NDENORM negative denormalized non-zero * FP_PDENORM positive denormalized non-zero * FP_NZERO negative zero * FP_PZERO positive zero * FP_NNORM negative normalized non-zero * FP_PNORM positive normalized non-zero */ /*#define HAS_FPCLASSL / **/ /* HAS_FPOS64_T: * This symbol will be defined if the C compiler supports fpos64_t. */ /*#define HAS_FPOS64_T / **/ /* HAS_FREXPL: * This symbol, if defined, indicates that the frexpl routine is * available to break a long double floating-point number into * a normalized fraction and an integral power of 2. */ #define HAS_FREXPL /**/ /* HAS_STRUCT_FS_DATA: * This symbol, if defined, indicates that the struct fs_data * to do statfs() is supported. */ /*#define HAS_STRUCT_FS_DATA / **/ /* HAS_FSEEKO: * This symbol, if defined, indicates that the fseeko routine is * available to fseek beyond 32 bits (useful for ILP32 hosts). */ #define HAS_FSEEKO /**/ /* HAS_FSTATFS: * This symbol, if defined, indicates that the fstatfs routine is * available to stat filesystems by file descriptors. */ #define HAS_FSTATFS /**/ /* HAS_FSYNC: * This symbol, if defined, indicates that the fsync routine is * available to write a file's modified data and attributes to * permanent storage. */ #define HAS_FSYNC /**/ /* HAS_FTELLO: * This symbol, if defined, indicates that the ftello routine is * available to ftell beyond 32 bits (useful for ILP32 hosts). */ #define HAS_FTELLO /**/ /* HAS_FUTIMES: * This symbol, if defined, indicates that the futimes routine is * available to change file descriptor time stamps with struct timevals. */ #define HAS_FUTIMES /**/ /* Gconvert: * This preprocessor macro is defined to convert a floating point * number to a string without a trailing decimal point. This * emulates the behavior of sprintf("%g"), but is sometimes much more * efficient. If gconvert() is not available, but gcvt() drops the * trailing decimal point, then gcvt() is used. If all else fails, * a macro using sprintf("%g") is used. Arguments for the Gconvert * macro are: value, number of digits, whether trailing zeros should * be retained, and the output buffer. * The usual values are: * d_Gconvert='gconvert((x),(n),(t),(b))' * d_Gconvert='gcvt((x),(n),(b))' * d_Gconvert='sprintf((b),"%.*g",(n),(x))' * The last two assume trailing zeros should not be kept. */ #define Gconvert(x,n,t,b) gcvt((x),(n),(b)) /* HAS_GETCWD: * This symbol, if defined, indicates that the getcwd routine is * available to get the current working directory. */ #define HAS_GETCWD /**/ /* HAS_GETESPWNAM: * This symbol, if defined, indicates that the getespwnam system call is * available to retrieve enchanced (shadow) password entries by name. */ /*#define HAS_GETESPWNAM / **/ /* HAS_GETFSSTAT: * This symbol, if defined, indicates that the getfsstat routine is * available to stat filesystems in bulk. */ /*#define HAS_GETFSSTAT / **/ /* HAS_GETGRENT: * This symbol, if defined, indicates that the getgrent routine is * available for sequential access of the group database. */ #define HAS_GETGRENT /**/ /* HAS_GETGRENT_R: * This symbol, if defined, indicates that the getgrent_r routine * is available to getgrent re-entrantly. */ /* GETGRENT_R_PROTO: * This symbol encodes the prototype of getgrent_r. * It is zero if d_getgrent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrent_r * is defined. */ /*#define HAS_GETGRENT_R / **/ #define GETGRENT_R_PROTO 0 /**/ /* HAS_GETGRGID_R: * This symbol, if defined, indicates that the getgrgid_r routine * is available to getgrgid re-entrantly. */ /* GETGRGID_R_PROTO: * This symbol encodes the prototype of getgrgid_r. * It is zero if d_getgrgid_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrgid_r * is defined. */ /*#define HAS_GETGRGID_R / **/ #define GETGRGID_R_PROTO 0 /**/ /* HAS_GETGRNAM_R: * This symbol, if defined, indicates that the getgrnam_r routine * is available to getgrnam re-entrantly. */ /* GETGRNAM_R_PROTO: * This symbol encodes the prototype of getgrnam_r. * It is zero if d_getgrnam_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getgrnam_r * is defined. */ /*#define HAS_GETGRNAM_R / **/ #define GETGRNAM_R_PROTO 0 /**/ /* HAS_GETHOSTBYADDR: * This symbol, if defined, indicates that the gethostbyaddr() routine is * available to look up hosts by their IP addresses. */ #define HAS_GETHOSTBYADDR /**/ /* HAS_GETHOSTBYNAME: * This symbol, if defined, indicates that the gethostbyname() routine is * available to look up host names in some data base or other. */ #define HAS_GETHOSTBYNAME /**/ /* HAS_GETHOSTENT: * This symbol, if defined, indicates that the gethostent() routine is * available to look up host names in some data base or another. */ #define HAS_GETHOSTENT /**/ /* HAS_GETHOSTNAME: * This symbol, if defined, indicates that the C program may use the * gethostname() routine to derive the host name. See also HAS_UNAME * and PHOSTNAME. */ /* HAS_UNAME: * This symbol, if defined, indicates that the C program may use the * uname() routine to derive the host name. See also HAS_GETHOSTNAME * and PHOSTNAME. */ /* PHOSTNAME: * This symbol, if defined, indicates the command to feed to the * popen() routine to derive the host name. See also HAS_GETHOSTNAME * and HAS_UNAME. Note that the command uses a fully qualified path, * so that it is safe even if used by a process with super-user * privileges. */ /* HAS_PHOSTNAME: * This symbol, if defined, indicates that the C program may use the * contents of PHOSTNAME as a command to feed to the popen() routine * to derive the host name. */ #define HAS_GETHOSTNAME /**/ #define HAS_UNAME /**/ /*#define HAS_PHOSTNAME / **/ #ifdef HAS_PHOSTNAME #define PHOSTNAME "/usr/bin/hostname" /* How to get the host name */ #endif /* HAS_GETHOSTBYADDR_R: * This symbol, if defined, indicates that the gethostbyaddr_r routine * is available to gethostbyaddr re-entrantly. */ /* GETHOSTBYADDR_R_PROTO: * This symbol encodes the prototype of gethostbyaddr_r. * It is zero if d_gethostbyaddr_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyaddr_r * is defined. */ /*#define HAS_GETHOSTBYADDR_R / **/ #define GETHOSTBYADDR_R_PROTO 0 /**/ /* HAS_GETHOSTBYNAME_R: * This symbol, if defined, indicates that the gethostbyname_r routine * is available to gethostbyname re-entrantly. */ /* GETHOSTBYNAME_R_PROTO: * This symbol encodes the prototype of gethostbyname_r. * It is zero if d_gethostbyname_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostbyname_r * is defined. */ /*#define HAS_GETHOSTBYNAME_R / **/ #define GETHOSTBYNAME_R_PROTO 0 /**/ /* HAS_GETHOSTENT_R: * This symbol, if defined, indicates that the gethostent_r routine * is available to gethostent re-entrantly. */ /* GETHOSTENT_R_PROTO: * This symbol encodes the prototype of gethostent_r. * It is zero if d_gethostent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gethostent_r * is defined. */ /*#define HAS_GETHOSTENT_R / **/ #define GETHOSTENT_R_PROTO 0 /**/ /* HAS_GETHOST_PROTOS: * This symbol, if defined, indicates that includes * prototypes for gethostent(), gethostbyname(), and * gethostbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ #define HAS_GETHOST_PROTOS /**/ /* HAS_GETITIMER: * This symbol, if defined, indicates that the getitimer routine is * available to return interval timers. */ #define HAS_GETITIMER /**/ /* HAS_GETLOGIN_R: * This symbol, if defined, indicates that the getlogin_r routine * is available to getlogin re-entrantly. */ /* GETLOGIN_R_PROTO: * This symbol encodes the prototype of getlogin_r. * It is zero if d_getlogin_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getlogin_r * is defined. */ /*#define HAS_GETLOGIN_R / **/ #define GETLOGIN_R_PROTO 0 /**/ /* HAS_GETMNT: * This symbol, if defined, indicates that the getmnt routine is * available to get filesystem mount info by filename. */ /*#define HAS_GETMNT / **/ /* HAS_GETMNTENT: * This symbol, if defined, indicates that the getmntent routine is * available to iterate through mounted file systems to get their info. */ #define HAS_GETMNTENT /**/ /* HAS_GETNETBYADDR: * This symbol, if defined, indicates that the getnetbyaddr() routine is * available to look up networks by their IP addresses. */ #define HAS_GETNETBYADDR /**/ /* HAS_GETNETBYNAME: * This symbol, if defined, indicates that the getnetbyname() routine is * available to look up networks by their names. */ #define HAS_GETNETBYNAME /**/ /* HAS_GETNETENT: * This symbol, if defined, indicates that the getnetent() routine is * available to look up network names in some data base or another. */ #define HAS_GETNETENT /**/ /* HAS_GETNETBYADDR_R: * This symbol, if defined, indicates that the getnetbyaddr_r routine * is available to getnetbyaddr re-entrantly. */ /* GETNETBYADDR_R_PROTO: * This symbol encodes the prototype of getnetbyaddr_r. * It is zero if d_getnetbyaddr_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyaddr_r * is defined. */ /*#define HAS_GETNETBYADDR_R / **/ #define GETNETBYADDR_R_PROTO 0 /**/ /* HAS_GETNETBYNAME_R: * This symbol, if defined, indicates that the getnetbyname_r routine * is available to getnetbyname re-entrantly. */ /* GETNETBYNAME_R_PROTO: * This symbol encodes the prototype of getnetbyname_r. * It is zero if d_getnetbyname_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetbyname_r * is defined. */ /*#define HAS_GETNETBYNAME_R / **/ #define GETNETBYNAME_R_PROTO 0 /**/ /* HAS_GETNETENT_R: * This symbol, if defined, indicates that the getnetent_r routine * is available to getnetent re-entrantly. */ /* GETNETENT_R_PROTO: * This symbol encodes the prototype of getnetent_r. * It is zero if d_getnetent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getnetent_r * is defined. */ /*#define HAS_GETNETENT_R / **/ #define GETNETENT_R_PROTO 0 /**/ /* HAS_GETNET_PROTOS: * This symbol, if defined, indicates that includes * prototypes for getnetent(), getnetbyname(), and * getnetbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ #define HAS_GETNET_PROTOS /**/ /* HAS_GETPAGESIZE: * This symbol, if defined, indicates that the getpagesize system call * is available to get system page size, which is the granularity of * many memory management calls. */ #define HAS_GETPAGESIZE /**/ /* HAS_GETPROTOENT: * This symbol, if defined, indicates that the getprotoent() routine is * available to look up protocols in some data base or another. */ #define HAS_GETPROTOENT /**/ /* HAS_GETPGRP: * This symbol, if defined, indicates that the getpgrp routine is * available to get the current process group. */ /* USE_BSD_GETPGRP: * This symbol, if defined, indicates that getpgrp needs one * arguments whereas USG one needs none. */ #define HAS_GETPGRP /**/ /*#define USE_BSD_GETPGRP / **/ /* HAS_GETPROTOBYNAME: * This symbol, if defined, indicates that the getprotobyname() * routine is available to look up protocols by their name. */ /* HAS_GETPROTOBYNUMBER: * This symbol, if defined, indicates that the getprotobynumber() * routine is available to look up protocols by their number. */ #define HAS_GETPROTOBYNAME /**/ #define HAS_GETPROTOBYNUMBER /**/ /* HAS_GETPROTOBYNAME_R: * This symbol, if defined, indicates that the getprotobyname_r routine * is available to getprotobyname re-entrantly. */ /* GETPROTOBYNAME_R_PROTO: * This symbol encodes the prototype of getprotobyname_r. * It is zero if d_getprotobyname_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobyname_r * is defined. */ /*#define HAS_GETPROTOBYNAME_R / **/ #define GETPROTOBYNAME_R_PROTO 0 /**/ /* HAS_GETPROTOBYNUMBER_R: * This symbol, if defined, indicates that the getprotobynumber_r routine * is available to getprotobynumber re-entrantly. */ /* GETPROTOBYNUMBER_R_PROTO: * This symbol encodes the prototype of getprotobynumber_r. * It is zero if d_getprotobynumber_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotobynumber_r * is defined. */ /*#define HAS_GETPROTOBYNUMBER_R / **/ #define GETPROTOBYNUMBER_R_PROTO 0 /**/ /* HAS_GETPROTOENT_R: * This symbol, if defined, indicates that the getprotoent_r routine * is available to getprotoent re-entrantly. */ /* GETPROTOENT_R_PROTO: * This symbol encodes the prototype of getprotoent_r. * It is zero if d_getprotoent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getprotoent_r * is defined. */ /*#define HAS_GETPROTOENT_R / **/ #define GETPROTOENT_R_PROTO 0 /**/ /* HAS_GETPROTO_PROTOS: * This symbol, if defined, indicates that includes * prototypes for getprotoent(), getprotobyname(), and * getprotobyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ #define HAS_GETPROTO_PROTOS /**/ /* HAS_GETPRPWNAM: * This symbol, if defined, indicates that the getprpwnam system call is * available to retrieve protected (shadow) password entries by name. */ /*#define HAS_GETPRPWNAM / **/ /* HAS_GETPWENT: * This symbol, if defined, indicates that the getpwent routine is * available for sequential access of the passwd database. * If this is not available, the older getpw() function may be available. */ #define HAS_GETPWENT /**/ /* HAS_GETPWENT_R: * This symbol, if defined, indicates that the getpwent_r routine * is available to getpwent re-entrantly. */ /* GETPWENT_R_PROTO: * This symbol encodes the prototype of getpwent_r. * It is zero if d_getpwent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwent_r * is defined. */ /*#define HAS_GETPWENT_R / **/ #define GETPWENT_R_PROTO 0 /**/ /* HAS_GETPWNAM_R: * This symbol, if defined, indicates that the getpwnam_r routine * is available to getpwnam re-entrantly. */ /* GETPWNAM_R_PROTO: * This symbol encodes the prototype of getpwnam_r. * It is zero if d_getpwnam_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwnam_r * is defined. */ /*#define HAS_GETPWNAM_R / **/ #define GETPWNAM_R_PROTO 0 /**/ /* HAS_GETPWUID_R: * This symbol, if defined, indicates that the getpwuid_r routine * is available to getpwuid re-entrantly. */ /* GETPWUID_R_PROTO: * This symbol encodes the prototype of getpwuid_r. * It is zero if d_getpwuid_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getpwuid_r * is defined. */ /*#define HAS_GETPWUID_R / **/ #define GETPWUID_R_PROTO 0 /**/ /* HAS_GETSERVENT: * This symbol, if defined, indicates that the getservent() routine is * available to look up network services in some data base or another. */ #define HAS_GETSERVENT /**/ /* HAS_GETSERVBYNAME_R: * This symbol, if defined, indicates that the getservbyname_r routine * is available to getservbyname re-entrantly. */ /* GETSERVBYNAME_R_PROTO: * This symbol encodes the prototype of getservbyname_r. * It is zero if d_getservbyname_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyname_r * is defined. */ /*#define HAS_GETSERVBYNAME_R / **/ #define GETSERVBYNAME_R_PROTO 0 /**/ /* HAS_GETSERVBYPORT_R: * This symbol, if defined, indicates that the getservbyport_r routine * is available to getservbyport re-entrantly. */ /* GETSERVBYPORT_R_PROTO: * This symbol encodes the prototype of getservbyport_r. * It is zero if d_getservbyport_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservbyport_r * is defined. */ /*#define HAS_GETSERVBYPORT_R / **/ #define GETSERVBYPORT_R_PROTO 0 /**/ /* HAS_GETSERVENT_R: * This symbol, if defined, indicates that the getservent_r routine * is available to getservent re-entrantly. */ /* GETSERVENT_R_PROTO: * This symbol encodes the prototype of getservent_r. * It is zero if d_getservent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getservent_r * is defined. */ /*#define HAS_GETSERVENT_R / **/ #define GETSERVENT_R_PROTO 0 /**/ /* HAS_GETSERV_PROTOS: * This symbol, if defined, indicates that includes * prototypes for getservent(), getservbyname(), and * getservbyaddr(). Otherwise, it is up to the program to guess * them. See netdbtype.U for probing for various Netdb_xxx_t types. */ #define HAS_GETSERV_PROTOS /**/ /* HAS_GETSPNAM: * This symbol, if defined, indicates that the getspnam system call is * available to retrieve SysV shadow password entries by name. */ #define HAS_GETSPNAM /**/ /* HAS_GETSPNAM_R: * This symbol, if defined, indicates that the getspnam_r routine * is available to getspnam re-entrantly. */ /* GETSPNAM_R_PROTO: * This symbol encodes the prototype of getspnam_r. * It is zero if d_getspnam_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_getspnam_r * is defined. */ /*#define HAS_GETSPNAM_R / **/ #define GETSPNAM_R_PROTO 0 /**/ /* HAS_GETSERVBYNAME: * This symbol, if defined, indicates that the getservbyname() * routine is available to look up services by their name. */ /* HAS_GETSERVBYPORT: * This symbol, if defined, indicates that the getservbyport() * routine is available to look up services by their port. */ #define HAS_GETSERVBYNAME /**/ #define HAS_GETSERVBYPORT /**/ /* HAS_GMTIME_R: * This symbol, if defined, indicates that the gmtime_r routine * is available to gmtime re-entrantly. */ /* GMTIME_R_PROTO: * This symbol encodes the prototype of gmtime_r. * It is zero if d_gmtime_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_gmtime_r * is defined. */ /*#define HAS_GMTIME_R / **/ #define GMTIME_R_PROTO 0 /**/ /* HAS_GNULIBC: * This symbol, if defined, indicates to the C program that * the GNU C library is being used. A better check is to use * the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc. */ #define HAS_GNULIBC /**/ #if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE) # define _GNU_SOURCE #endif /* HAS_HASMNTOPT: * This symbol, if defined, indicates that the hasmntopt routine is * available to query the mount options of file systems. */ #define HAS_HASMNTOPT /**/ /* HAS_HTONL: * This symbol, if defined, indicates that the htonl() routine (and * friends htons() ntohl() ntohs()) are available to do network * order byte swapping. */ /* HAS_HTONS: * This symbol, if defined, indicates that the htons() routine (and * friends htonl() ntohl() ntohs()) are available to do network * order byte swapping. */ /* HAS_NTOHL: * This symbol, if defined, indicates that the ntohl() routine (and * friends htonl() htons() ntohs()) are available to do network * order byte swapping. */ /* HAS_NTOHS: * This symbol, if defined, indicates that the ntohs() routine (and * friends htonl() htons() ntohl()) are available to do network * order byte swapping. */ #define HAS_HTONL /**/ #define HAS_HTONS /**/ #define HAS_NTOHL /**/ #define HAS_NTOHS /**/ /* HAS_ILOGBL: * This symbol, if defined, indicates that the ilogbl routine is * available. If scalbnl is also present we can emulate frexpl. */ #define HAS_ILOGBL /**/ /* HAS_INT64_T: * This symbol will defined if the C compiler supports int64_t. * Usually the needs to be included, but sometimes * is enough. */ #define HAS_INT64_T /**/ /* HAS_ISASCII: * This manifest constant lets the C program know that isascii * is available. */ #define HAS_ISASCII /**/ /* HAS_ISFINITE: * This symbol, if defined, indicates that the isfinite routine is * available to check whether a double is finite (non-infinity non-NaN). */ /*#define HAS_ISFINITE / **/ /* HAS_ISINF: * This symbol, if defined, indicates that the isinf routine is * available to check whether a double is an infinity. */ #define HAS_ISINF /**/ /* HAS_ISNAN: * This symbol, if defined, indicates that the isnan routine is * available to check whether a double is a NaN. */ #define HAS_ISNAN /**/ /* HAS_ISNANL: * This symbol, if defined, indicates that the isnanl routine is * available to check whether a long double is a NaN. */ #define HAS_ISNANL /**/ /* HAS_LCHOWN: * This symbol, if defined, indicates that the lchown routine is * available to operate on a symbolic link (instead of following the * link). */ #define HAS_LCHOWN /**/ /* HAS_LDBL_DIG: * This symbol, if defined, indicates that this system's * or defines the symbol LDBL_DIG, which is the number * of significant digits in a long double precision number. Unlike * for DBL_DIG, there's no good guess for LDBL_DIG if it is undefined. */ #define HAS_LDBL_DIG /* */ /* LIBM_LIB_VERSION: * This symbol, if defined, indicates that libm exports _LIB_VERSION * and that math.h defines the enum to manipulate it. */ #define LIBM_LIB_VERSION /**/ /* HAS_LOCALTIME_R: * This symbol, if defined, indicates that the localtime_r routine * is available to localtime re-entrantly. */ /* LOCALTIME_R_PROTO: * This symbol encodes the prototype of localtime_r. * It is zero if d_localtime_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_localtime_r * is defined. */ /*#define HAS_LOCALTIME_R / **/ #define LOCALTIME_R_PROTO 0 /**/ /* HAS_LONG_DOUBLE: * This symbol will be defined if the C compiler supports long * doubles. */ /* LONG_DOUBLESIZE: * This symbol contains the size of a long double, so that the * C preprocessor can make decisions based on it. It is only * defined if the system supports long doubles. */ #define HAS_LONG_DOUBLE /**/ #ifdef HAS_LONG_DOUBLE #define LONG_DOUBLESIZE 12 /**/ #endif /* HAS_LONG_LONG: * This symbol will be defined if the C compiler supports long long. */ /* LONGLONGSIZE: * This symbol contains the size of a long long, so that the * C preprocessor can make decisions based on it. It is only * defined if the system supports long long. */ #define HAS_LONG_LONG /**/ #ifdef HAS_LONG_LONG #define LONGLONGSIZE 8 /**/ #endif /* HAS_LSEEK_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the lseek() function. Otherwise, it is up * to the program to supply one. A good guess is * extern off_t lseek(int, off_t, int); */ #define HAS_LSEEK_PROTO /**/ /* HAS_MADVISE: * This symbol, if defined, indicates that the madvise system call is * available to map a file into memory. */ #define HAS_MADVISE /**/ /* HAS_MALLOC_SIZE: * This symbol, if defined, indicates that the malloc_size * routine is available for use. */ /*#define HAS_MALLOC_SIZE / **/ /* HAS_MALLOC_GOOD_SIZE: * This symbol, if defined, indicates that the malloc_good_size * routine is available for use. */ /*#define HAS_MALLOC_GOOD_SIZE / **/ /* HAS_MEMCHR: * This symbol, if defined, indicates that the memchr routine is available * to locate characters within a C string. */ #define HAS_MEMCHR /**/ /* HAS_MKDTEMP: * This symbol, if defined, indicates that the mkdtemp routine is * available to exclusively create a uniquely named temporary directory. */ #define HAS_MKDTEMP /**/ /* HAS_MKSTEMP: * This symbol, if defined, indicates that the mkstemp routine is * available to exclusively create and open a uniquely named * temporary file. */ #define HAS_MKSTEMP /**/ /* HAS_MKSTEMPS: * This symbol, if defined, indicates that the mkstemps routine is * available to excluslvely create and open a uniquely named * (with a suffix) temporary file. */ /*#define HAS_MKSTEMPS / **/ /* HAS_MMAP: * This symbol, if defined, indicates that the mmap system call is * available to map a file into memory. */ /* Mmap_t: * This symbol holds the return type of the mmap() system call * (and simultaneously the type of the first argument). * Usually set to 'void *' or 'caddr_t'. */ #define HAS_MMAP /**/ #define Mmap_t void * /**/ /* HAS_MODFL: * This symbol, if defined, indicates that the modfl routine is * available to split a long double x into a fractional part f and * an integer part i such that |f| < 1.0 and (f + i) = x. */ /* HAS_MODFL_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the modfl() function. Otherwise, it is up * to the program to supply one. */ /* HAS_MODFL_POW32_BUG: * This symbol, if defined, indicates that the modfl routine is * broken for long doubles >= pow(2, 32). * For example from 4294967303.150000 one would get 4294967302.000000 * and 1.150000. The bug has been seen in certain versions of glibc, * release 2.2.2 is known to be okay. */ #define HAS_MODFL /**/ #define HAS_MODFL_PROTO /**/ /*#define HAS_MODFL_POW32_BUG / **/ /* HAS_MPROTECT: * This symbol, if defined, indicates that the mprotect system call is * available to modify the access protection of a memory mapped file. */ #define HAS_MPROTECT /**/ /* HAS_MSG: * This symbol, if defined, indicates that the entire msg*(2) library is * supported (IPC mechanism based on message queues). */ #define HAS_MSG /**/ /* HAS_STRUCT_MSGHDR: * This symbol, if defined, indicates that the struct msghdr * is supported. */ #define HAS_STRUCT_MSGHDR /**/ /* HAS_NL_LANGINFO: * This symbol, if defined, indicates that the nl_langinfo routine is * available to return local data. You will also need * and therefore I_LANGINFO. */ #define HAS_NL_LANGINFO /**/ /* HAS_OFF64_T: * This symbol will be defined if the C compiler supports off64_t. */ /*#define HAS_OFF64_T / **/ /* HAS_OPEN3: * This manifest constant lets the C program know that the three * argument form of open(2) is available. */ #define HAS_OPEN3 /**/ /* HAS_POLL: * This symbol, if defined, indicates that the poll routine is * available to poll active file descriptors. You may safely * include when both this symbol *and* I_POLL are defined. */ #define HAS_POLL /**/ /* HAS_PROCSELFEXE: * This symbol is defined if PROCSELFEXE_PATH is a symlink * to the absolute pathname of the executing program. */ /* PROCSELFEXE_PATH: * If HAS_PROCSELFEXE is defined this symbol is the filename * of the symbolic link pointing to the absolute pathname of * the executing program. */ #define HAS_PROCSELFEXE /**/ #if defined(HAS_PROCSELFEXE) && !defined(PROCSELFEXE_PATH) #define PROCSELFEXE_PATH "/proc/self/exe" /**/ #endif /* OLD_PTHREAD_CREATE_JOINABLE: * This symbol, if defined, indicates how to create pthread * in joinable (aka undetached) state. NOTE: not defined * if pthread.h already has defined PTHREAD_CREATE_JOINABLE * (the new version of the constant). * If defined, known values are PTHREAD_CREATE_UNDETACHED * and __UNDETACHED. */ /*#define OLD_PTHREAD_CREATE_JOINABLE / **/ /* HAS_PTHREAD_ATFORK: * This symbol, if defined, indicates that the pthread_atfork routine * is available to setup fork handlers. */ /*#define HAS_PTHREAD_ATFORK / **/ /* HAS_PTHREAD_ATTR_SETSCOPE: * This symbol, if defined, indicates that the pthread_attr_setscope * system call is available to set the contention scope attribute of * a thread attribute object. */ #define HAS_PTHREAD_ATTR_SETSCOPE /**/ /* HAS_PTHREAD_YIELD: * This symbol, if defined, indicates that the pthread_yield * routine is available to yield the execution of the current * thread. sched_yield is preferable to pthread_yield. */ /* SCHED_YIELD: * This symbol defines the way to yield the execution of * the current thread. Known ways are sched_yield, * pthread_yield, and pthread_yield with NULL. */ /* HAS_SCHED_YIELD: * This symbol, if defined, indicates that the sched_yield * routine is available to yield the execution of the current * thread. sched_yield is preferable to pthread_yield. */ #define HAS_PTHREAD_YIELD /**/ #define SCHED_YIELD sched_yield() /**/ #define HAS_SCHED_YIELD /**/ /* HAS_RANDOM_R: * This symbol, if defined, indicates that the random_r routine * is available to random re-entrantly. */ /* RANDOM_R_PROTO: * This symbol encodes the prototype of random_r. * It is zero if d_random_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_random_r * is defined. */ /*#define HAS_RANDOM_R / **/ #define RANDOM_R_PROTO 0 /**/ /* HAS_READDIR64_R: * This symbol, if defined, indicates that the readdir64_r routine * is available to readdir64 re-entrantly. */ /* READDIR64_R_PROTO: * This symbol encodes the prototype of readdir64_r. * It is zero if d_readdir64_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir64_r * is defined. */ /*#define HAS_READDIR64_R / **/ #define READDIR64_R_PROTO 0 /**/ /* HAS_READDIR_R: * This symbol, if defined, indicates that the readdir_r routine * is available to readdir re-entrantly. */ /* READDIR_R_PROTO: * This symbol encodes the prototype of readdir_r. * It is zero if d_readdir_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_readdir_r * is defined. */ /*#define HAS_READDIR_R / **/ #define READDIR_R_PROTO 0 /**/ /* HAS_READV: * This symbol, if defined, indicates that the readv routine is * available to do gather reads. You will also need * and there I_SYSUIO. */ #define HAS_READV /**/ /* HAS_RECVMSG: * This symbol, if defined, indicates that the recvmsg routine is * available to send structured socket messages. */ #define HAS_RECVMSG /**/ /* HAS_SAFE_BCOPY: * This symbol, if defined, indicates that the bcopy routine is available * to copy potentially overlapping memory blocks. Normally, you should * probably use memmove() or memcpy(). If neither is defined, roll your * own version. */ /*#define HAS_SAFE_BCOPY / **/ /* HAS_SAFE_MEMCPY: * This symbol, if defined, indicates that the memcpy routine is available * to copy potentially overlapping memory blocks. If you need to * copy overlapping memory blocks, you should check HAS_MEMMOVE and * use memmove() instead, if available. */ /*#define HAS_SAFE_MEMCPY / **/ /* HAS_SANE_MEMCMP: * This symbol, if defined, indicates that the memcmp routine is available * and can be used to compare relative magnitudes of chars with their high * bits set. If it is not defined, roll your own version. */ #define HAS_SANE_MEMCMP /**/ /* HAS_SBRK_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the sbrk() function. Otherwise, it is up * to the program to supply one. Good guesses are * extern void* sbrk(int); * extern void* sbrk(size_t); */ #define HAS_SBRK_PROTO /**/ /* HAS_SCALBNL: * This symbol, if defined, indicates that the scalbnl routine is * available. If ilogbl is also present we can emulate frexpl. */ #define HAS_SCALBNL /**/ /* HAS_SEM: * This symbol, if defined, indicates that the entire sem*(2) library is * supported. */ #define HAS_SEM /**/ /* HAS_SENDMSG: * This symbol, if defined, indicates that the sendmsg routine is * available to send structured socket messages. */ #define HAS_SENDMSG /**/ /* HAS_SETGRENT: * This symbol, if defined, indicates that the setgrent routine is * available for initializing sequential access of the group database. */ #define HAS_SETGRENT /**/ /* HAS_SETGRENT_R: * This symbol, if defined, indicates that the setgrent_r routine * is available to setgrent re-entrantly. */ /* SETGRENT_R_PROTO: * This symbol encodes the prototype of setgrent_r. * It is zero if d_setgrent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setgrent_r * is defined. */ /*#define HAS_SETGRENT_R / **/ #define SETGRENT_R_PROTO 0 /**/ /* HAS_SETGROUPS: * This symbol, if defined, indicates that the setgroups() routine is * available to set the list of process groups. If unavailable, multiple * groups are probably not supported. */ #define HAS_SETGROUPS /**/ /* HAS_SETHOSTENT: * This symbol, if defined, indicates that the sethostent() routine is * available. */ #define HAS_SETHOSTENT /**/ /* HAS_SETHOSTENT_R: * This symbol, if defined, indicates that the sethostent_r routine * is available to sethostent re-entrantly. */ /* SETHOSTENT_R_PROTO: * This symbol encodes the prototype of sethostent_r. * It is zero if d_sethostent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_sethostent_r * is defined. */ /*#define HAS_SETHOSTENT_R / **/ #define SETHOSTENT_R_PROTO 0 /**/ /* HAS_SETITIMER: * This symbol, if defined, indicates that the setitimer routine is * available to set interval timers. */ #define HAS_SETITIMER /**/ /* HAS_SETLOCALE_R: * This symbol, if defined, indicates that the setlocale_r routine * is available to setlocale re-entrantly. */ /* SETLOCALE_R_PROTO: * This symbol encodes the prototype of setlocale_r. * It is zero if d_setlocale_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setlocale_r * is defined. */ /*#define HAS_SETLOCALE_R / **/ #define SETLOCALE_R_PROTO 0 /**/ /* HAS_SETNETENT: * This symbol, if defined, indicates that the setnetent() routine is * available. */ #define HAS_SETNETENT /**/ /* HAS_SETNETENT_R: * This symbol, if defined, indicates that the setnetent_r routine * is available to setnetent re-entrantly. */ /* SETNETENT_R_PROTO: * This symbol encodes the prototype of setnetent_r. * It is zero if d_setnetent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setnetent_r * is defined. */ /*#define HAS_SETNETENT_R / **/ #define SETNETENT_R_PROTO 0 /**/ /* HAS_SETPROTOENT: * This symbol, if defined, indicates that the setprotoent() routine is * available. */ #define HAS_SETPROTOENT /**/ /* HAS_SETPGRP: * This symbol, if defined, indicates that the setpgrp routine is * available to set the current process group. */ /* USE_BSD_SETPGRP: * This symbol, if defined, indicates that setpgrp needs two * arguments whereas USG one needs none. See also HAS_SETPGID * for a POSIX interface. */ #define HAS_SETPGRP /**/ /*#define USE_BSD_SETPGRP / **/ /* HAS_SETPROCTITLE: * This symbol, if defined, indicates that the setproctitle routine is * available to set process title. */ /*#define HAS_SETPROCTITLE / **/ /* HAS_SETPROTOENT_R: * This symbol, if defined, indicates that the setprotoent_r routine * is available to setprotoent re-entrantly. */ /* SETPROTOENT_R_PROTO: * This symbol encodes the prototype of setprotoent_r. * It is zero if d_setprotoent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setprotoent_r * is defined. */ /*#define HAS_SETPROTOENT_R / **/ #define SETPROTOENT_R_PROTO 0 /**/ /* HAS_SETPWENT: * This symbol, if defined, indicates that the setpwent routine is * available for initializing sequential access of the passwd database. */ #define HAS_SETPWENT /**/ /* HAS_SETPWENT_R: * This symbol, if defined, indicates that the setpwent_r routine * is available to setpwent re-entrantly. */ /* SETPWENT_R_PROTO: * This symbol encodes the prototype of setpwent_r. * It is zero if d_setpwent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setpwent_r * is defined. */ /*#define HAS_SETPWENT_R / **/ #define SETPWENT_R_PROTO 0 /**/ /* HAS_SETSERVENT: * This symbol, if defined, indicates that the setservent() routine is * available. */ #define HAS_SETSERVENT /**/ /* HAS_SETSERVENT_R: * This symbol, if defined, indicates that the setservent_r routine * is available to setservent re-entrantly. */ /* SETSERVENT_R_PROTO: * This symbol encodes the prototype of setservent_r. * It is zero if d_setservent_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_setservent_r * is defined. */ /*#define HAS_SETSERVENT_R / **/ #define SETSERVENT_R_PROTO 0 /**/ /* HAS_SETVBUF: * This symbol, if defined, indicates that the setvbuf routine is * available to change buffering on an open stdio stream. * to a line-buffered mode. */ #define HAS_SETVBUF /**/ /* USE_SFIO: * This symbol, if defined, indicates that sfio should * be used. */ /*#define USE_SFIO / **/ /* HAS_SHM: * This symbol, if defined, indicates that the entire shm*(2) library is * supported. */ #define HAS_SHM /**/ /* Shmat_t: * This symbol holds the return type of the shmat() system call. * Usually set to 'void *' or 'char *'. */ /* HAS_SHMAT_PROTOTYPE: * This symbol, if defined, indicates that the sys/shm.h includes * a prototype for shmat(). Otherwise, it is up to the program to * guess one. Shmat_t shmat(int, Shmat_t, int) is a good guess, * but not always right so it should be emitted by the program only * when HAS_SHMAT_PROTOTYPE is not defined to avoid conflicting defs. */ #define Shmat_t void * /**/ #define HAS_SHMAT_PROTOTYPE /**/ /* HAS_SIGACTION: * This symbol, if defined, indicates that Vr4's sigaction() routine * is available. */ #define HAS_SIGACTION /**/ /* HAS_SIGPROCMASK: * This symbol, if defined, indicates that the sigprocmask * system call is available to examine or change the signal mask * of the calling process. */ #define HAS_SIGPROCMASK /**/ /* HAS_SIGSETJMP: * This variable indicates to the C program that the sigsetjmp() * routine is available to save the calling process's registers * and stack environment for later use by siglongjmp(), and * to optionally save the process's signal mask. See * Sigjmp_buf, Sigsetjmp, and Siglongjmp. */ /* Sigjmp_buf: * This is the buffer type to be used with Sigsetjmp and Siglongjmp. */ /* Sigsetjmp: * This macro is used in the same way as sigsetjmp(), but will invoke * traditional setjmp() if sigsetjmp isn't available. * See HAS_SIGSETJMP. */ /* Siglongjmp: * This macro is used in the same way as siglongjmp(), but will invoke * traditional longjmp() if siglongjmp isn't available. * See HAS_SIGSETJMP. */ #define HAS_SIGSETJMP /**/ #ifdef HAS_SIGSETJMP #define Sigjmp_buf sigjmp_buf #define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask)) #define Siglongjmp(buf,retval) siglongjmp((buf),(retval)) #else #define Sigjmp_buf jmp_buf #define Sigsetjmp(buf,save_mask) setjmp((buf)) #define Siglongjmp(buf,retval) longjmp((buf),(retval)) #endif /* USE_SITECUSTOMIZE: * This symbol, if defined, indicates that sitecustomize should * be used. */ #ifndef USE_SITECUSTOMIZE /*#define USE_SITECUSTOMIZE / **/ #endif /* HAS_SNPRINTF: * This symbol, if defined, indicates that the snprintf () library * function is available for use. */ /* HAS_VSNPRINTF: * This symbol, if defined, indicates that the vsnprintf () library * function is available for use. */ #define HAS_SNPRINTF /**/ #define HAS_VSNPRINTF /**/ /* HAS_SOCKATMARK: * This symbol, if defined, indicates that the sockatmark routine is * available to test whether a socket is at the out-of-band mark. */ #define HAS_SOCKATMARK /**/ /* HAS_SOCKATMARK_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the sockatmark() function. Otherwise, it is up * to the program to supply one. A good guess is * extern int sockatmark(int); */ #define HAS_SOCKATMARK_PROTO /**/ /* HAS_SOCKET: * This symbol, if defined, indicates that the BSD socket interface is * supported. */ /* HAS_SOCKETPAIR: * This symbol, if defined, indicates that the BSD socketpair() call is * supported. */ /* HAS_MSG_CTRUNC: * This symbol, if defined, indicates that the MSG_CTRUNC is supported. * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ /* HAS_MSG_DONTROUTE: * This symbol, if defined, indicates that the MSG_DONTROUTE is supported. * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ /* HAS_MSG_OOB: * This symbol, if defined, indicates that the MSG_OOB is supported. * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ /* HAS_MSG_PEEK: * This symbol, if defined, indicates that the MSG_PEEK is supported. * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ /* HAS_MSG_PROXY: * This symbol, if defined, indicates that the MSG_PROXY is supported. * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ /* HAS_SCM_RIGHTS: * This symbol, if defined, indicates that the SCM_RIGHTS is supported. * Checking just with #ifdef might not be enough because this symbol * has been known to be an enum. */ #define HAS_SOCKET /**/ #define HAS_SOCKETPAIR /**/ #define HAS_MSG_CTRUNC /**/ #define HAS_MSG_DONTROUTE /**/ #define HAS_MSG_OOB /**/ #define HAS_MSG_PEEK /**/ #define HAS_MSG_PROXY /**/ #define HAS_SCM_RIGHTS /**/ /* HAS_SOCKS5_INIT: * This symbol, if defined, indicates that the socks5_init routine is * available to initialize SOCKS 5. */ /*#define HAS_SOCKS5_INIT / **/ /* SPRINTF_RETURNS_STRLEN: * This variable defines whether sprintf returns the length of the string * (as per the ANSI spec). Some C libraries retain compatibility with * pre-ANSI C and return a pointer to the passed in buffer; for these * this variable will be undef. */ #define SPRINTF_RETURNS_STRLEN /**/ /* HAS_SQRTL: * This symbol, if defined, indicates that the sqrtl routine is * available to do long double square roots. */ #define HAS_SQRTL /**/ /* HAS_SRAND48_R: * This symbol, if defined, indicates that the srand48_r routine * is available to srand48 re-entrantly. */ /* SRAND48_R_PROTO: * This symbol encodes the prototype of srand48_r. * It is zero if d_srand48_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srand48_r * is defined. */ /*#define HAS_SRAND48_R / **/ #define SRAND48_R_PROTO 0 /**/ /* HAS_SRANDOM_R: * This symbol, if defined, indicates that the srandom_r routine * is available to srandom re-entrantly. */ /* SRANDOM_R_PROTO: * This symbol encodes the prototype of srandom_r. * It is zero if d_srandom_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_srandom_r * is defined. */ /*#define HAS_SRANDOM_R / **/ #define SRANDOM_R_PROTO 0 /**/ /* HAS_SETRESGID_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the setresgid() function. Otherwise, it is up * to the program to supply one. Good guesses are * extern int setresgid(uid_t ruid, uid_t euid, uid_t suid); */ /*#define HAS_SETRESGID_PROTO / **/ /* HAS_SETRESUID_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the setresuid() function. Otherwise, it is up * to the program to supply one. Good guesses are * extern int setresuid(uid_t ruid, uid_t euid, uid_t suid); */ /*#define HAS_SETRESUID_PROTO / **/ /* USE_STAT_BLOCKS: * This symbol is defined if this system has a stat structure declaring * st_blksize and st_blocks. */ #ifndef USE_STAT_BLOCKS #define USE_STAT_BLOCKS /**/ #endif /* HAS_STRUCT_STATFS_F_FLAGS: * This symbol, if defined, indicates that the struct statfs * does have the f_flags member containing the mount flags of * the filesystem containing the file. * This kind of struct statfs is coming from (BSD 4.3), * not from (SYSV). Older BSDs (like Ultrix) do not * have statfs() and struct statfs, they have ustat() and getmnt() * with struct ustat and struct fs_data. */ /*#define HAS_STRUCT_STATFS_F_FLAGS / **/ /* HAS_STRUCT_STATFS: * This symbol, if defined, indicates that the struct statfs * to do statfs() is supported. */ #define HAS_STRUCT_STATFS /**/ /* HAS_FSTATVFS: * This symbol, if defined, indicates that the fstatvfs routine is * available to stat filesystems by file descriptors. */ #define HAS_FSTATVFS /**/ /* USE_STDIO_PTR: * This symbol is defined if the _ptr and _cnt fields (or similar) * of the stdio FILE structure can be used to access the stdio buffer * for a file handle. If this is defined, then the FILE_ptr(fp) * and FILE_cnt(fp) macros will also be defined and should be used * to access these fields. */ /* FILE_ptr: * This macro is used to access the _ptr field (or equivalent) of the * FILE structure pointed to by its argument. This macro will always be * defined if USE_STDIO_PTR is defined. */ /* STDIO_PTR_LVALUE: * This symbol is defined if the FILE_ptr macro can be used as an * lvalue. */ /* FILE_cnt: * This macro is used to access the _cnt field (or equivalent) of the * FILE structure pointed to by its argument. This macro will always be * defined if USE_STDIO_PTR is defined. */ /* STDIO_CNT_LVALUE: * This symbol is defined if the FILE_cnt macro can be used as an * lvalue. */ /* STDIO_PTR_LVAL_SETS_CNT: * This symbol is defined if using the FILE_ptr macro as an lvalue * to increase the pointer by n has the side effect of decreasing the * value of File_cnt(fp) by n. */ /* STDIO_PTR_LVAL_NOCHANGE_CNT: * This symbol is defined if using the FILE_ptr macro as an lvalue * to increase the pointer by n leaves File_cnt(fp) unchanged. */ /*#define USE_STDIO_PTR / **/ #ifdef USE_STDIO_PTR #define FILE_ptr(fp) ((fp)->_IO_read_ptr) /*#define STDIO_PTR_LVALUE / **/ #define FILE_cnt(fp) ((fp)->_IO_read_end - (fp)->_IO_read_ptr) /*#define STDIO_CNT_LVALUE / **/ /*#define STDIO_PTR_LVAL_SETS_CNT / **/ /*#define STDIO_PTR_LVAL_NOCHANGE_CNT / **/ #endif /* USE_STDIO_BASE: * This symbol is defined if the _base field (or similar) of the * stdio FILE structure can be used to access the stdio buffer for * a file handle. If this is defined, then the FILE_base(fp) macro * will also be defined and should be used to access this field. * Also, the FILE_bufsiz(fp) macro will be defined and should be used * to determine the number of bytes in the buffer. USE_STDIO_BASE * will never be defined unless USE_STDIO_PTR is. */ /* FILE_base: * This macro is used to access the _base field (or equivalent) of the * FILE structure pointed to by its argument. This macro will always be * defined if USE_STDIO_BASE is defined. */ /* FILE_bufsiz: * This macro is used to determine the number of bytes in the I/O * buffer pointed to by _base field (or equivalent) of the FILE * structure pointed to its argument. This macro will always be defined * if USE_STDIO_BASE is defined. */ /*#define USE_STDIO_BASE / **/ #ifdef USE_STDIO_BASE #define FILE_base(fp) ((fp)->_IO_read_base) #define FILE_bufsiz(fp) ((fp)->_IO_read_end - (fp)->_IO_read_base) #endif /* HAS_STRERROR: * This symbol, if defined, indicates that the strerror routine is * available to translate error numbers to strings. See the writeup * of Strerror() in this file before you try to define your own. */ /* HAS_SYS_ERRLIST: * This symbol, if defined, indicates that the sys_errlist array is * available to translate error numbers to strings. The extern int * sys_nerr gives the size of that table. */ /* Strerror: * This preprocessor symbol is defined as a macro if strerror() is * not available to translate error numbers to strings but sys_errlist[] * array is there. */ #define HAS_STRERROR /**/ #define HAS_SYS_ERRLIST /**/ #define Strerror(e) strerror(e) /* HAS_STRERROR_R: * This symbol, if defined, indicates that the strerror_r routine * is available to strerror re-entrantly. */ /* STRERROR_R_PROTO: * This symbol encodes the prototype of strerror_r. * It is zero if d_strerror_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_strerror_r * is defined. */ /*#define HAS_STRERROR_R / **/ #define STRERROR_R_PROTO 0 /**/ /* HAS_STRFTIME: * This symbol, if defined, indicates that the strftime routine is * available to do time formatting. */ #define HAS_STRFTIME /**/ /* HAS_STRLCAT: * This symbol, if defined, indicates that the strlcat () routine is * available to do string concatenation. */ /*#define HAS_STRLCAT / **/ /* HAS_STRLCPY: * This symbol, if defined, indicates that the strlcpy () routine is * available to do string copying. */ /*#define HAS_STRLCPY / **/ /* HAS_STRTOLD: * This symbol, if defined, indicates that the strtold routine is * available to convert strings to long doubles. */ #define HAS_STRTOLD /**/ /* HAS_STRTOLL: * This symbol, if defined, indicates that the strtoll routine is * available to convert strings to long longs. */ #define HAS_STRTOLL /**/ /* HAS_STRTOQ: * This symbol, if defined, indicates that the strtoq routine is * available to convert strings to long longs (quads). */ #define HAS_STRTOQ /**/ /* HAS_STRTOUL: * This symbol, if defined, indicates that the strtoul routine is * available to provide conversion of strings to unsigned long. */ #define HAS_STRTOUL /**/ /* HAS_STRTOULL: * This symbol, if defined, indicates that the strtoull routine is * available to convert strings to unsigned long longs. */ #define HAS_STRTOULL /**/ /* HAS_STRTOUQ: * This symbol, if defined, indicates that the strtouq routine is * available to convert strings to unsigned long longs (quads). */ #define HAS_STRTOUQ /**/ /* HAS_SYSCALL_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the syscall() function. Otherwise, it is up * to the program to supply one. Good guesses are * extern int syscall(int, ...); * extern int syscall(long, ...); */ #define HAS_SYSCALL_PROTO /**/ /* HAS_TELLDIR_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the telldir() function. Otherwise, it is up * to the program to supply one. A good guess is * extern long telldir(DIR*); */ #define HAS_TELLDIR_PROTO /**/ /* HAS_TIME: * This symbol, if defined, indicates that the time() routine exists. */ /* Time_t: * This symbol holds the type returned by time(). It can be long, * or time_t on BSD sites (in which case should be * included). */ #define HAS_TIME /**/ #define Time_t time_t /* Time type */ /* HAS_TIMES: * This symbol, if defined, indicates that the times() routine exists. * Note that this became obsolete on some systems (SUNOS), which now * use getrusage(). It may be necessary to include . */ #define HAS_TIMES /**/ /* HAS_TMPNAM_R: * This symbol, if defined, indicates that the tmpnam_r routine * is available to tmpnam re-entrantly. */ /* TMPNAM_R_PROTO: * This symbol encodes the prototype of tmpnam_r. * It is zero if d_tmpnam_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_tmpnam_r * is defined. */ /*#define HAS_TMPNAM_R / **/ #define TMPNAM_R_PROTO 0 /**/ /* HAS_TTYNAME_R: * This symbol, if defined, indicates that the ttyname_r routine * is available to ttyname re-entrantly. */ /* TTYNAME_R_PROTO: * This symbol encodes the prototype of ttyname_r. * It is zero if d_ttyname_r is undef, and one of the * REENTRANT_PROTO_T_ABC macros of reentr.h if d_ttyname_r * is defined. */ /*#define HAS_TTYNAME_R / **/ #define TTYNAME_R_PROTO 0 /**/ /* U32_ALIGNMENT_REQUIRED: * This symbol, if defined, indicates that you must access * character data through U32-aligned pointers. */ #ifndef U32_ALIGNMENT_REQUIRED /*#define U32_ALIGNMENT_REQUIRED / **/ #endif /* HAS_UALARM: * This symbol, if defined, indicates that the ualarm routine is * available to do alarms with microsecond granularity. */ #define HAS_UALARM /**/ /* HAS_UNION_SEMUN: * This symbol, if defined, indicates that the union semun is * defined by including . If not, the user code * probably needs to define it as: * union semun { * int val; * struct semid_ds *buf; * unsigned short *array; * } */ /* USE_SEMCTL_SEMUN: * This symbol, if defined, indicates that union semun is * used for semctl IPC_STAT. */ /* USE_SEMCTL_SEMID_DS: * This symbol, if defined, indicates that struct semid_ds * is * used for semctl IPC_STAT. */ /*#define HAS_UNION_SEMUN / **/ #define USE_SEMCTL_SEMUN /**/ #define USE_SEMCTL_SEMID_DS /**/ /* HAS_UNORDERED: * This symbol, if defined, indicates that the unordered routine is * available to check whether two doubles are unordered * (effectively: whether either of them is NaN) */ /*#define HAS_UNORDERED / **/ /* HAS_UNSETENV: * This symbol, if defined, indicates that the unsetenv () routine is * available for use. */ #define HAS_UNSETENV /**/ /* HAS_USLEEP_PROTO: * This symbol, if defined, indicates that the system provides * a prototype for the usleep() function. Otherwise, it is up * to the program to supply one. A good guess is * extern int usleep(useconds_t); */ #define HAS_USLEEP_PROTO /**/ /* HAS_USTAT: * This symbol, if defined, indicates that the ustat system call is * available to query file system statistics by dev_t. */ #define HAS_USTAT /**/ /* HAS_VFORK: * This symbol, if defined, indicates that vfork() exists. */ /*#define HAS_VFORK / **/ /* Signal_t: * This symbol's value is either "void" or "int", corresponding to the * appropriate return type of a signal handler. Thus, you can declare * a signal handler using "Signal_t (*handler)()", and define the * handler using "Signal_t handler(sig)". */ #define Signal_t void /* Signal handler's return type */ /* HAS_VPRINTF: * This symbol, if defined, indicates that the vprintf routine is available * to printf with a pointer to an argument list. If unavailable, you * may need to write your own, probably in terms of _doprnt(). */ /* USE_CHAR_VSPRINTF: * This symbol is defined if this system has vsprintf() returning type * (char*). The trend seems to be to declare it as "int vsprintf()". It * is up to the package author to declare vsprintf correctly based on the * symbol. */ #define HAS_VPRINTF /**/ #define USE_CHAR_VSPRINTF /**/ /* HAS_WRITEV: * This symbol, if defined, indicates that the writev routine is * available to do scatter writes. */ #define HAS_WRITEV /**/ /* USE_DYNAMIC_LOADING: * This symbol, if defined, indicates that dynamic loading of * some sort is available. */ #define USE_DYNAMIC_LOADING /**/ /* DOUBLESIZE: * This symbol contains the size of a double, so that the C preprocessor * can make decisions based on it. */ #define DOUBLESIZE 8 /**/ /* EBCDIC: * This symbol, if defined, indicates that this system uses * EBCDIC encoding. */ /*#define EBCDIC / **/ /* FFLUSH_NULL: * This symbol, if defined, tells that fflush(NULL) does flush * all pending stdio output. */ /* FFLUSH_ALL: * This symbol, if defined, tells that to flush * all pending stdio output one must loop through all * the stdio file handles stored in an array and fflush them. * Note that if fflushNULL is defined, fflushall will not * even be probed for and will be left undefined. */ #define FFLUSH_NULL /**/ /*#define FFLUSH_ALL / **/ /* Fpos_t: * This symbol holds the type used to declare file positions in libc. * It can be fpos_t, long, uint, etc... It may be necessary to include * to get any typedef'ed information. */ #define Fpos_t fpos_t /* File position type */ /* Gid_t_f: * This symbol defines the format string used for printing a Gid_t. */ #define Gid_t_f "lu" /**/ /* Gid_t_sign: * This symbol holds the signedess of a Gid_t. * 1 for unsigned, -1 for signed. */ #define Gid_t_sign 1 /* GID sign */ /* Gid_t_size: * This symbol holds the size of a Gid_t in bytes. */ #define Gid_t_size 4 /* GID size */ /* Gid_t: * This symbol holds the return type of getgid() and the type of * argument to setrgid() and related functions. Typically, * it is the type of group ids in the kernel. It can be int, ushort, * gid_t, etc... It may be necessary to include to get * any typedef'ed information. */ #define Gid_t gid_t /* Type for getgid(), etc... */ /* Groups_t: * This symbol holds the type used for the second argument to * getgroups() and setgroups(). Usually, this is the same as * gidtype (gid_t) , but sometimes it isn't. * It can be int, ushort, gid_t, etc... * It may be necessary to include to get any * typedef'ed information. This is only required if you have * getgroups() or setgroups().. */ #if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS) #define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */ #endif /* I_CRYPT: * This symbol, if defined, indicates that exists and * should be included. */ #define I_CRYPT /**/ /* DB_Prefix_t: * This symbol contains the type of the prefix structure element * in the header file. In older versions of DB, it was * int, while in newer ones it is u_int32_t. */ /* DB_Hash_t: * This symbol contains the type of the prefix structure element * in the header file. In older versions of DB, it was * int, while in newer ones it is size_t. */ /* DB_VERSION_MAJOR_CFG: * This symbol, if defined, defines the major version number of * Berkeley DB found in the header when Perl was configured. */ /* DB_VERSION_MINOR_CFG: * This symbol, if defined, defines the minor version number of * Berkeley DB found in the header when Perl was configured. * For DB version 1 this is always 0. */ /* DB_VERSION_PATCH_CFG: * This symbol, if defined, defines the patch version number of * Berkeley DB found in the header when Perl was configured. * For DB version 1 this is always 0. */ #define DB_Hash_t u_int32_t /**/ #define DB_Prefix_t size_t /**/ #define DB_VERSION_MAJOR_CFG 4 /**/ #define DB_VERSION_MINOR_CFG 2 /**/ #define DB_VERSION_PATCH_CFG 52 /**/ /* I_FP: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_FP / **/ /* I_FP_CLASS: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_FP_CLASS / **/ /* I_GRP: * This symbol, if defined, indicates to the C program that it should * include . */ /* GRPASSWD: * This symbol, if defined, indicates to the C program that struct group * in contains gr_passwd. */ #define I_GRP /**/ #define GRPASSWD /**/ /* I_IEEEFP: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_IEEEFP / **/ /* I_INTTYPES: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_INTTYPES /**/ /* I_LANGINFO: * This symbol, if defined, indicates that exists and * should be included. */ #define I_LANGINFO /**/ /* I_LIBUTIL: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_LIBUTIL / **/ /* I_MACH_CTHREADS: * This symbol, if defined, indicates to the C program that it should * include . */ /*#define I_MACH_CTHREADS / **/ /* I_MNTENT: * This symbol, if defined, indicates that exists and * should be included. */ #define I_MNTENT /**/ /* I_NDBM: * This symbol, if defined, indicates that exists and should * be included. */ #define I_NDBM /**/ /* I_NETDB: * This symbol, if defined, indicates that exists and * should be included. */ #define I_NETDB /**/ /* I_NETINET_TCP: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_NETINET_TCP /**/ /* I_POLL: * This symbol, if defined, indicates that exists and * should be included. (see also HAS_POLL) */ #define I_POLL /**/ /* I_PROT: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_PROT / **/ /* I_PTHREAD: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_PTHREAD /**/ /* I_PWD: * This symbol, if defined, indicates to the C program that it should * include . */ /* PWQUOTA: * This symbol, if defined, indicates to the C program that struct passwd * contains pw_quota. */ /* PWAGE: * This symbol, if defined, indicates to the C program that struct passwd * contains pw_age. */ /* PWCHANGE: * This symbol, if defined, indicates to the C program that struct passwd * contains pw_change. */ /* PWCLASS: * This symbol, if defined, indicates to the C program that struct passwd * contains pw_class. */ /* PWEXPIRE: * This symbol, if defined, indicates to the C program that struct passwd * contains pw_expire. */ /* PWCOMMENT: * This symbol, if defined, indicates to the C program that struct passwd * contains pw_comment. */ /* PWGECOS: * This symbol, if defined, indicates to the C program that struct passwd * contains pw_gecos. */ /* PWPASSWD: * This symbol, if defined, indicates to the C program that struct passwd * contains pw_passwd. */ #define I_PWD /**/ /*#define PWQUOTA / **/ /*#define PWAGE / **/ /*#define PWCHANGE / **/ /*#define PWCLASS / **/ /*#define PWEXPIRE / **/ /*#define PWCOMMENT / **/ #define PWGECOS /**/ #define PWPASSWD /**/ /* I_SHADOW: * This symbol, if defined, indicates that exists and * should be included. */ #define I_SHADOW /**/ /* I_SOCKS: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_SOCKS / **/ /* I_SUNMATH: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_SUNMATH / **/ /* I_SYSLOG: * This symbol, if defined, indicates that exists and * should be included. */ #define I_SYSLOG /**/ /* I_SYSMODE: * This symbol, if defined, indicates that exists and * should be included. */ /*#define I_SYSMODE / **/ /* I_SYS_MOUNT: * This symbol, if defined, indicates that exists and * should be included. */ #define I_SYS_MOUNT /**/ /* I_SYS_STATFS: * This symbol, if defined, indicates that exists. */ #define I_SYS_STATFS /**/ /* I_SYS_STATVFS: * This symbol, if defined, indicates that exists and * should be included. */ #define I_SYS_STATVFS /**/ /* I_SYSUIO: * This symbol, if defined, indicates that exists and * should be included. */ #define I_SYSUIO /**/ /* I_SYSUTSNAME: * This symbol, if defined, indicates that exists and * should be included. */ #define I_SYSUTSNAME /**/ /* I_SYS_VFS: * This symbol, if defined, indicates that exists and * should be included. */ #define I_SYS_VFS /**/ /* I_TIME: * This symbol, if defined, indicates to the C program that it should * include . */ /* I_SYS_TIME: * This symbol, if defined, indicates to the C program that it should * include . */ /* I_SYS_TIME_KERNEL: * This symbol, if defined, indicates to the C program that it should * include with KERNEL defined. */ /* HAS_TM_TM_ZONE: * This symbol, if defined, indicates to the C program that * the struct tm has a tm_zone field. */ /* HAS_TM_TM_GMTOFF: * This symbol, if defined, indicates to the C program that * the struct tm has a tm_gmtoff field. */ #define I_TIME /**/ #define I_SYS_TIME /**/ /*#define I_SYS_TIME_KERNEL / **/ #define HAS_TM_TM_ZONE /**/ #define HAS_TM_TM_GMTOFF /**/ /* I_USTAT: * This symbol, if defined, indicates that exists and * should be included. */ #define I_USTAT /**/ /* I_STDARG: * This symbol, if defined, indicates that exists and should * be included. */ /* I_VARARGS: * This symbol, if defined, indicates to the C program that it should * include . */ #define I_STDARG /**/ /*#define I_VARARGS / **/ /* PERL_INC_VERSION_LIST: * This variable specifies the list of subdirectories in over * which perl.c:incpush() and lib/lib.pm will automatically * search when adding directories to @INC, in a format suitable * for a C initialization string. See the inc_version_list entry * in Porting/Glossary for more details. */ /*#define PERL_INC_VERSION_LIST 0 / **/ /* INSTALL_USR_BIN_PERL: * This symbol, if defined, indicates that Perl is to be installed * also as /usr/bin/perl. */ /*#define INSTALL_USR_BIN_PERL / **/ /* PERL_PRIfldbl: * This symbol, if defined, contains the string used by stdio to * format long doubles (format 'f') for output. */ /* PERL_PRIgldbl: * This symbol, if defined, contains the string used by stdio to * format long doubles (format 'g') for output. */ /* PERL_PRIeldbl: * This symbol, if defined, contains the string used by stdio to * format long doubles (format 'e') for output. */ /* PERL_SCNfldbl: * This symbol, if defined, contains the string used by stdio to * format long doubles (format 'f') for input. */ #define PERL_PRIfldbl "Lf" /**/ #define PERL_PRIgldbl "Lg" /**/ #define PERL_PRIeldbl "Le" /**/ #define PERL_SCNfldbl "Lf" /**/ /* Off_t: * This symbol holds the type used to declare offsets in the kernel. * It can be int, long, off_t, etc... It may be necessary to include * to get any typedef'ed information. */ /* LSEEKSIZE: * This symbol holds the number of bytes used by the Off_t. */ /* Off_t_size: * This symbol holds the number of bytes used by the Off_t. */ #define Off_t off_t /* type */ #define LSEEKSIZE 8 /* size */ #define Off_t_size 8 /* size */ /* PERL_MAD: * This symbol, if defined, indicates that the Misc Attribution * Declaration code should be conditionally compiled. */ /*#define PERL_MAD / **/ /* Free_t: * This variable contains the return type of free(). It is usually * void, but occasionally int. */ /* Malloc_t: * This symbol is the type of pointer returned by malloc and realloc. */ #define Malloc_t void * /**/ #define Free_t void /**/ /* PERL_MALLOC_WRAP: * This symbol, if defined, indicates that we'd like malloc wrap checks. */ #define PERL_MALLOC_WRAP /**/ /* MYMALLOC: * This symbol, if defined, indicates that we're using our own malloc. */ /*#define MYMALLOC / **/ /* Mode_t: * This symbol holds the type used to declare file modes * for systems calls. It is usually mode_t, but may be * int or unsigned short. It may be necessary to include * to get any typedef'ed information. */ #define Mode_t mode_t /* file mode parameter for system calls */ /* VAL_O_NONBLOCK: * This symbol is to be used during open() or fcntl(F_SETFL) to turn on * non-blocking I/O for the file descriptor. Note that there is no way * back, i.e. you cannot turn it blocking again this way. If you wish to * alternatively switch between blocking and non-blocking, use the * ioctl(FIOSNBIO) call instead, but that is not supported by all devices. */ /* VAL_EAGAIN: * This symbol holds the errno error code set by read() when no data was * present on the non-blocking file descriptor. */ /* RD_NODATA: * This symbol holds the return code from read() when no data is present * on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is * not defined, then you can't distinguish between no data and EOF by * issuing a read(). You'll have to find another way to tell for sure! */ /* EOF_NONBLOCK: * This symbol, if defined, indicates to the C program that a read() on * a non-blocking file descriptor will return 0 on EOF, and not the value * held in RD_NODATA (-1 usually, in that case!). */ #define VAL_O_NONBLOCK O_NONBLOCK #define VAL_EAGAIN EAGAIN #define RD_NODATA -1 #define EOF_NONBLOCK /* NEED_VA_COPY: * This symbol, if defined, indicates that the system stores * the variable argument list datatype, va_list, in a format * that cannot be copied by simple assignment, so that some * other means must be used when copying is required. * As such systems vary in their provision (or non-provision) * of copying mechanisms, handy.h defines a platform- * independent macro, Perl_va_copy(src, dst), to do the job. */ /*#define NEED_VA_COPY / **/ /* Netdb_host_t: * This symbol holds the type used for the 1st argument * to gethostbyaddr(). */ /* Netdb_hlen_t: * This symbol holds the type used for the 2nd argument * to gethostbyaddr(). */ /* Netdb_name_t: * This symbol holds the type used for the argument to * gethostbyname(). */ /* Netdb_net_t: * This symbol holds the type used for the 1st argument to * getnetbyaddr(). */ #define Netdb_host_t const void * /**/ #define Netdb_hlen_t size_t /**/ #define Netdb_name_t const char * /**/ #define Netdb_net_t in_addr_t /**/ /* PERL_OTHERLIBDIRS: * This variable contains a colon-separated set of paths for the perl * binary to search for additional library files or modules. * These directories will be tacked to the end of @INC. * Perl will automatically search below each path for version- * and architecture-specific directories. See PERL_INC_VERSION_LIST * for more details. */ /*#define PERL_OTHERLIBDIRS " " / **/ /* HAS_QUAD: * This symbol, if defined, tells that there's a 64-bit integer type, * Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one * of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T. */ #define HAS_QUAD /**/ #ifdef HAS_QUAD # define Quad_t long long /**/ # define Uquad_t unsigned long long /**/ # define QUADKIND 3 /**/ # define QUAD_IS_INT 1 # define QUAD_IS_LONG 2 # define QUAD_IS_LONG_LONG 3 # define QUAD_IS_INT64_T 4 #endif /* IVTYPE: * This symbol defines the C type used for Perl's IV. */ /* UVTYPE: * This symbol defines the C type used for Perl's UV. */ /* I8TYPE: * This symbol defines the C type used for Perl's I8. */ /* U8TYPE: * This symbol defines the C type used for Perl's U8. */ /* I16TYPE: * This symbol defines the C type used for Perl's I16. */ /* U16TYPE: * This symbol defines the C type used for Perl's U16. */ /* I32TYPE: * This symbol defines the C type used for Perl's I32. */ /* U32TYPE: * This symbol defines the C type used for Perl's U32. */ /* I64TYPE: * This symbol defines the C type used for Perl's I64. */ /* U64TYPE: * This symbol defines the C type used for Perl's U64. */ /* NVTYPE: * This symbol defines the C type used for Perl's NV. */ /* IVSIZE: * This symbol contains the sizeof(IV). */ /* UVSIZE: * This symbol contains the sizeof(UV). */ /* I8SIZE: * This symbol contains the sizeof(I8). */ /* U8SIZE: * This symbol contains the sizeof(U8). */ /* I16SIZE: * This symbol contains the sizeof(I16). */ /* U16SIZE: * This symbol contains the sizeof(U16). */ /* I32SIZE: * This symbol contains the sizeof(I32). */ /* U32SIZE: * This symbol contains the sizeof(U32). */ /* I64SIZE: * This symbol contains the sizeof(I64). */ /* U64SIZE: * This symbol contains the sizeof(U64). */ /* NVSIZE: * This symbol contains the sizeof(NV). */ /* NV_PRESERVES_UV: * This symbol, if defined, indicates that a variable of type NVTYPE * can preserve all the bits of a variable of type UVTYPE. */ /* NV_PRESERVES_UV_BITS: * This symbol contains the number of bits a variable of type NVTYPE * can preserve of a variable of type UVTYPE. */ /* NV_ZERO_IS_ALLBITS_ZERO: * This symbol, if defined, indicates that a variable of type NVTYPE * stores 0.0 in memory as all bits zero. */ #define IVTYPE long /**/ #define UVTYPE unsigned long /**/ #define I8TYPE char /**/ #define U8TYPE unsigned char /**/ #define I16TYPE short /**/ #define U16TYPE unsigned short /**/ #define I32TYPE long /**/ #define U32TYPE unsigned long /**/ #ifdef HAS_QUAD #define I64TYPE long long /**/ #define U64TYPE unsigned long long /**/ #endif #define NVTYPE double /**/ #define IVSIZE 4 /**/ #define UVSIZE 4 /**/ #define I8SIZE 1 /**/ #define U8SIZE 1 /**/ #define I16SIZE 2 /**/ #define U16SIZE 2 /**/ #define I32SIZE 4 /**/ #define U32SIZE 4 /**/ #ifdef HAS_QUAD #define I64SIZE 8 /**/ #define U64SIZE 8 /**/ #endif #define NVSIZE 8 /**/ #define NV_PRESERVES_UV #define NV_PRESERVES_UV_BITS 32 #define NV_ZERO_IS_ALLBITS_ZERO #if UVSIZE == 8 # ifdef BYTEORDER # if BYTEORDER == 0x1234 # undef BYTEORDER # define BYTEORDER 0x12345678 # else # if BYTEORDER == 0x4321 # undef BYTEORDER # define BYTEORDER 0x87654321 # endif # endif # endif #endif /* IVdf: * This symbol defines the format string used for printing a Perl IV * as a signed decimal integer. */ /* UVuf: * This symbol defines the format string used for printing a Perl UV * as an unsigned decimal integer. */ /* UVof: * This symbol defines the format string used for printing a Perl UV * as an unsigned octal integer. */ /* UVxf: * This symbol defines the format string used for printing a Perl UV * as an unsigned hexadecimal integer in lowercase abcdef. */ /* UVXf: * This symbol defines the format string used for printing a Perl UV * as an unsigned hexadecimal integer in uppercase ABCDEF. */ /* NVef: * This symbol defines the format string used for printing a Perl NV * using %e-ish floating point format. */ /* NVff: * This symbol defines the format string used for printing a Perl NV * using %f-ish floating point format. */ /* NVgf: * This symbol defines the format string used for printing a Perl NV * using %g-ish floating point format. */ #define IVdf "ld" /**/ #define UVuf "lu" /**/ #define UVof "lo" /**/ #define UVxf "lx" /**/ #define UVXf "lX" /**/ #define NVef "e" /**/ #define NVff "f" /**/ #define NVgf "g" /**/ /* Pid_t: * This symbol holds the type used to declare process ids in the kernel. * It can be int, uint, pid_t, etc... It may be necessary to include * to get any typedef'ed information. */ #define Pid_t pid_t /* PID type */ /* PRIVLIB: * This symbol contains the name of the private library for this package. * The library is private in the sense that it needn't be in anyone's * execution path, but it should be accessible by the world. The program * should be prepared to do ~ expansion. */ /* PRIVLIB_EXP: * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ #define PRIVLIB "/usr/local/lib/perl5/5.9.5" /**/ #define PRIVLIB_EXP "/usr/local/lib/perl5/5.9.5" /**/ /* CAN_PROTOTYPE: * If defined, this macro indicates that the C compiler can handle * function prototypes. */ /* _: * This macro is used to declare function parameters for folks who want * to make declarations with prototypes using a different style than * the above macros. Use double parentheses. For example: * * int main _((int argc, char *argv[])); */ #define CAN_PROTOTYPE /**/ #ifdef CAN_PROTOTYPE #define _(args) args #else #define _(args) () #endif /* PTRSIZE: * This symbol contains the size of a pointer, so that the C preprocessor * can make decisions based on it. It will be sizeof(void *) if * the compiler supports (void *); otherwise it will be * sizeof(char *). */ #define PTRSIZE 4 /**/ /* Drand01: * This macro is to be used to generate uniformly distributed * random numbers over the range [0., 1.[. You may have to supply * an 'extern double drand48();' in your program since SunOS 4.1.3 * doesn't provide you with anything relevant in its headers. * See HAS_DRAND48_PROTO. */ /* Rand_seed_t: * This symbol defines the type of the argument of the * random seed function. */ /* seedDrand01: * This symbol defines the macro to be used in seeding the * random number generator (see Drand01). */ /* RANDBITS: * This symbol indicates how many bits are produced by the * function used to generate normalized random numbers. * Values include 15, 16, 31, and 48. */ #define Drand01() drand48() /**/ #define Rand_seed_t long /**/ #define seedDrand01(x) srand48((Rand_seed_t)x) /**/ #define RANDBITS 48 /**/ /* SELECT_MIN_BITS: * This symbol holds the minimum number of bits operated by select. * That is, if you do select(n, ...), how many bits at least will be * cleared in the masks if some activity is detected. Usually this * is either n or 32*ceil(n/32), especially many little-endians do * the latter. This is only useful if you have select(), naturally. */ #define SELECT_MIN_BITS 32 /**/ /* Select_fd_set_t: * This symbol holds the type used for the 2nd, 3rd, and 4th * arguments to select. Usually, this is 'fd_set *', if HAS_FD_SET * is defined, and 'int *' otherwise. This is only useful if you * have select(), of course. */ #define Select_fd_set_t fd_set * /**/ /* SH_PATH: * This symbol contains the full pathname to the shell used on this * on this system to execute Bourne shell scripts. Usually, this will be * /bin/sh, though it's possible that some systems will have /bin/ksh, * /bin/pdksh, /bin/ash, /bin/bash, or even something such as * D:/bin/sh.exe. */ #define SH_PATH "/bin/sh" /**/ /* SIG_NAME: * This symbol contains a list of signal names in order of * signal number. This is intended * to be used as a static array initialization, like this: * char *sig_name[] = { SIG_NAME }; * The signals in the list are separated with commas, and each signal * is surrounded by double quotes. There is no leading SIG in the signal * name, i.e. SIGQUIT is known as "QUIT". * Gaps in the signal numbers (up to NSIG) are filled in with NUMnn, * etc., where nn is the actual signal number (e.g. NUM37). * The signal number for sig_name[i] is stored in sig_num[i]. * The last element is 0 to terminate the list with a NULL. This * corresponds to the 0 at the end of the sig_name_init list. * Note that this variable is initialized from the sig_name_init, * not from sig_name (which is unused). */ /* SIG_NUM: * This symbol contains a list of signal numbers, in the same order as the * SIG_NAME list. It is suitable for static array initialization, as in: * int sig_num[] = { SIG_NUM }; * The signals in the list are separated with commas, and the indices * within that list and the SIG_NAME list match, so it's easy to compute * the signal name from a number or vice versa at the price of a small * dynamic linear lookup. * Duplicates are allowed, but are moved to the end of the list. * The signal number corresponding to sig_name[i] is sig_number[i]. * if (i < NSIG) then sig_number[i] == i. * The last element is 0, corresponding to the 0 at the end of * the sig_name_init list. * Note that this variable is initialized from the sig_num_init, * not from sig_num (which is unused). */ /* SIG_SIZE: * This variable contains the number of elements of the SIG_NAME * and SIG_NUM arrays, excluding the final NULL entry. */ #define SIG_NAME "ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 0 /**/ #define SIG_NUM 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0 /**/ #define SIG_SIZE 69 /**/ /* SITEARCH: * This symbol contains the name of the private library for this package. * The library is private in the sense that it needn't be in anyone's * execution path, but it should be accessible by the world. The program * should be prepared to do ~ expansion. * The standard distribution will put nothing in this directory. * After perl has been installed, users may install their own local * architecture-dependent modules in this directory with * MakeMaker Makefile.PL * or equivalent. See INSTALL for details. */ /* SITEARCH_EXP: * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ #define SITEARCH "/usr/local/lib/perl5/site_perl/5.9.5/i686-linux" /**/ #define SITEARCH_EXP "/usr/local/lib/perl5/site_perl/5.9.5/i686-linux" /**/ /* SITELIB: * This symbol contains the name of the private library for this package. * The library is private in the sense that it needn't be in anyone's * execution path, but it should be accessible by the world. The program * should be prepared to do ~ expansion. * The standard distribution will put nothing in this directory. * After perl has been installed, users may install their own local * architecture-independent modules in this directory with * MakeMaker Makefile.PL * or equivalent. See INSTALL for details. */ /* SITELIB_EXP: * This symbol contains the ~name expanded version of SITELIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ /* SITELIB_STEM: * This define is SITELIB_EXP with any trailing version-specific component * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ #define SITELIB "/usr/local/lib/perl5/site_perl/5.9.5" /**/ #define SITELIB_EXP "/usr/local/lib/perl5/site_perl/5.9.5" /**/ #define SITELIB_STEM "/usr/local/lib/perl5/site_perl" /**/ /* Size_t_size: * This symbol holds the size of a Size_t in bytes. */ #define Size_t_size 4 /* */ /* Size_t: * This symbol holds the type used to declare length parameters * for string functions. It is usually size_t, but may be * unsigned long, int, etc. It may be necessary to include * to get any typedef'ed information. */ #define Size_t size_t /* length paramater for string functions */ /* Sock_size_t: * This symbol holds the type used for the size argument of * various socket calls (just the base type, not the pointer-to). */ #define Sock_size_t socklen_t /**/ /* SSize_t: * This symbol holds the type used by functions that return * a count of bytes or an error condition. It must be a signed type. * It is usually ssize_t, but may be long or int, etc. * It may be necessary to include or * to get any typedef'ed information. * We will pick a type such that sizeof(SSize_t) == sizeof(Size_t). */ #define SSize_t ssize_t /* signed count of bytes */ /* STARTPERL: * This variable contains the string to put in front of a perl * script to make sure (one hopes) that it runs with perl and not * some shell. */ #define STARTPERL "#!/usr/local/bin/perl5.9.5" /**/ /* STDCHAR: * This symbol is defined to be the type of char used in stdio.h. * It has the values "unsigned char" or "char". */ #define STDCHAR char /**/ /* HAS_STDIO_STREAM_ARRAY: * This symbol, if defined, tells that there is an array * holding the stdio streams. */ /* STDIO_STREAM_ARRAY: * This symbol tells the name of the array holding the stdio streams. * Usual values include _iob, __iob, and __sF. */ /*#define HAS_STDIO_STREAM_ARRAY / **/ #define STDIO_STREAM_ARRAY /* Uid_t_f: * This symbol defines the format string used for printing a Uid_t. */ #define Uid_t_f "lu" /**/ /* Uid_t_sign: * This symbol holds the signedess of a Uid_t. * 1 for unsigned, -1 for signed. */ #define Uid_t_sign 1 /* UID sign */ /* Uid_t_size: * This symbol holds the size of a Uid_t in bytes. */ #define Uid_t_size 4 /* UID size */ /* Uid_t: * This symbol holds the type used to declare user ids in the kernel. * It can be int, ushort, uid_t, etc... It may be necessary to include * to get any typedef'ed information. */ #define Uid_t uid_t /* UID type */ /* USE_64_BIT_INT: * This symbol, if defined, indicates that 64-bit integers should * be used when available. If not defined, the native integers * will be employed (be they 32 or 64 bits). The minimal possible * 64-bitness is used, just enough to get 64-bit integers into Perl. * This may mean using for example "long longs", while your memory * may still be limited to 2 gigabytes. */ /* USE_64_BIT_ALL: * This symbol, if defined, indicates that 64-bit integers should * be used when available. If not defined, the native integers * will be used (be they 32 or 64 bits). The maximal possible * 64-bitness is employed: LP64 or ILP64, meaning that you will * be able to use more than 2 gigabytes of memory. This mode is * even more binary incompatible than USE_64_BIT_INT. You may not * be able to run the resulting executable in a 32-bit CPU at all or * you may need at least to reboot your OS to 64-bit mode. */ #ifndef USE_64_BIT_INT /*#define USE_64_BIT_INT / **/ #endif #ifndef USE_64_BIT_ALL /*#define USE_64_BIT_ALL / **/ #endif /* USE_FAST_STDIO: * This symbol, if defined, indicates that Perl should * be built to use 'fast stdio'. * Defaults to define in Perls 5.8 and earlier, to undef later. */ #ifndef USE_FAST_STDIO /*#define USE_FAST_STDIO / **/ #endif /* USE_LARGE_FILES: * This symbol, if defined, indicates that large file support * should be used when available. */ #ifndef USE_LARGE_FILES #define USE_LARGE_FILES /**/ #endif /* USE_LONG_DOUBLE: * This symbol, if defined, indicates that long doubles should * be used when available. */ #ifndef USE_LONG_DOUBLE /*#define USE_LONG_DOUBLE / **/ #endif /* USE_MORE_BITS: * This symbol, if defined, indicates that 64-bit interfaces and * long doubles should be used when available. */ #ifndef USE_MORE_BITS /*#define USE_MORE_BITS / **/ #endif /* MULTIPLICITY: * This symbol, if defined, indicates that Perl should * be built to use multiplicity. */ #ifndef MULTIPLICITY /*#define MULTIPLICITY / **/ #endif /* USE_PERLIO: * This symbol, if defined, indicates that the PerlIO abstraction should * be used throughout. If not defined, stdio should be * used in a fully backward compatible manner. */ #ifndef USE_PERLIO #define USE_PERLIO /**/ #endif /* USE_SOCKS: * This symbol, if defined, indicates that Perl should * be built to use socks. */ #ifndef USE_SOCKS /*#define USE_SOCKS / **/ #endif /* USE_ITHREADS: * This symbol, if defined, indicates that Perl should be built to * use the interpreter-based threading implementation. */ /* USE_5005THREADS: * This symbol, if defined, indicates that Perl should be built to * use the 5.005-based threading implementation. */ /* OLD_PTHREADS_API: * This symbol, if defined, indicates that Perl should * be built to use the old draft POSIX threads API. */ /* USE_REENTRANT_API: * This symbol, if defined, indicates that Perl should * try to use the various _r versions of library functions. * This is extremely experimental. */ /*#define USE_5005THREADS / **/ /*#define USE_ITHREADS / **/ #if defined(USE_5005THREADS) && !defined(USE_ITHREADS) #define USE_THREADS /* until src is revised*/ #endif /*#define OLD_PTHREADS_API / **/ /*#define USE_REENTRANT_API / **/ /* PERL_VENDORARCH: * If defined, this symbol contains the name of a private library. * The library is private in the sense that it needn't be in anyone's * execution path, but it should be accessible by the world. * It may have a ~ on the front. * The standard distribution will put nothing in this directory. * Vendors who distribute perl may wish to place their own * architecture-dependent modules and extensions in this directory with * MakeMaker Makefile.PL INSTALLDIRS=vendor * or equivalent. See INSTALL for details. */ /* PERL_VENDORARCH_EXP: * This symbol contains the ~name expanded version of PERL_VENDORARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ /*#define PERL_VENDORARCH "" / **/ /*#define PERL_VENDORARCH_EXP "" / **/ /* PERL_VENDORLIB_EXP: * This symbol contains the ~name expanded version of VENDORLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ /* PERL_VENDORLIB_STEM: * This define is PERL_VENDORLIB_EXP with any trailing version-specific component * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ /*#define PERL_VENDORLIB_EXP "" / **/ /*#define PERL_VENDORLIB_STEM "" / **/ /* VOIDFLAGS: * This symbol indicates how much support of the void type is given by this * compiler. What various bits mean: * * 1 = supports declaration of void * 2 = supports arrays of pointers to functions returning void * 4 = supports comparisons between pointers to void functions and * addresses of void functions * 8 = suports declaration of generic void pointers * * The package designer should define VOIDUSED to indicate the requirements * of the package. This can be done either by #defining VOIDUSED before * including config.h, or by defining defvoidused in Myinit.U. If the * latter approach is taken, only those flags will be tested. If the * level of void support necessary is not present, defines void to int. */ #ifndef VOIDUSED #define VOIDUSED 15 #endif #define VOIDFLAGS 15 #if (VOIDFLAGS & VOIDUSED) != VOIDUSED #define void int /* is void to be avoided? */ #define M_VOID /* Xenix strikes again */ #endif #endif Convert-Binary-C-0.76/tests/include/perlinc/form.h0000644000175000001440000000132311550664630020545 0ustar mhxusers/* form.h * * Copyright (C) 1991, 1992, 1993, 2000, 2004 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #define FF_END 0 #define FF_LINEMARK 1 #define FF_LITERAL 2 #define FF_SKIP 3 #define FF_FETCH 4 #define FF_CHECKNL 5 #define FF_CHECKCHOP 6 #define FF_SPACE 7 #define FF_HALFSPACE 8 #define FF_ITEM 9 #define FF_CHOP 10 #define FF_LINEGLOB 11 #define FF_DECIMAL 12 #define FF_NEWLINE 13 #define FF_BLANK 14 #define FF_MORE 15 #define FF_0DECIMAL 16 #define FF_LINESNGL 17 Convert-Binary-C-0.76/tests/include/perlinc/perlvars.h0000644000175000001440000001020211550664630021434 0ustar mhxusers/* perlvars.h * * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, * by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /****************/ /* Truly global */ /****************/ /* Don't forget to re-run embed.pl to propagate changes! */ /* This file describes the "global" variables used by perl * This used to be in perl.h directly but we want to abstract out into * distinct files which are per-thread, per-interpreter or really global, * and how they're initialized. * * The 'G' prefix is only needed for vars that need appropriate #defines * generated in embed*.h. Such symbols are also used to generate * the appropriate export list for win32. */ /* global state */ PERLVAR(Gcurinterp, PerlInterpreter *) /* currently running interpreter * (initial parent interpreter under * useithreads) */ #if defined(USE_ITHREADS) PERLVAR(Gthr_key, perl_key) /* key to retrieve per-thread struct */ #endif /* constants (these are not literals to facilitate pointer comparisons) * (PERLVARISC really does create variables, despite its looks) */ PERLVARISC(GYes, "1") PERLVARISC(GNo, "") PERLVARISC(Ghexdigit, "0123456789abcdef0123456789ABCDEF") PERLVARISC(Gpatleave, "\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}") /* XXX does anyone even use this? */ PERLVARI(Gdo_undump, bool, FALSE) /* -u or dump seen? */ #if defined(MYMALLOC) && defined(USE_ITHREADS) PERLVAR(Gmalloc_mutex, perl_mutex) /* Mutex for malloc */ #endif #if defined(USE_ITHREADS) PERLVAR(Gop_mutex, perl_mutex) /* Mutex for op refcounting */ #endif #ifdef USE_ITHREADS PERLVAR(Gdollarzero_mutex, perl_mutex) /* Modifying $0 */ #endif /* This is constant on most architectures, a global on OS/2 */ PERLVARI(Gsh_path, const char *, SH_PATH)/* full path of shell */ #ifndef PERL_MICRO /* If Perl has to ignore SIGPFE, this is its saved state. * See perl.h macros PERL_FPU_INIT and PERL_FPU_{PRE,POST}_EXEC. */ PERLVAR(Gsigfpe_saved, Sighandler_t) #endif /* Restricted hashes placeholder value. * The contents are never used, only the address. */ PERLVAR(Gsv_placeholder, SV) #ifndef PERL_MICRO PERLVARI(Gcsighandlerp, Sighandler_t, Perl_csighandler) /* Pointer to C-level sighandler */ #endif #ifndef PERL_USE_SAFE_PUTENV PERLVARI(Guse_safe_putenv, int, 1) #endif #ifdef USE_PERLIO PERLVARI(Gperlio_fd_refcnt, int*, 0) /* Pointer to array of fd refcounts. */ PERLVARI(Gperlio_fd_refcnt_size, int, 0) /* Size of the array */ PERLVARI(Gperlio_debug_fd, int, 0) /* the fd to write perlio debug into, 0 means not set yet */ #endif #ifdef HAS_MMAP PERLVARI(Gmmap_page_size, IV, 0) #endif #if defined(FAKE_PERSISTENT_SIGNAL_HANDLERS)||defined(FAKE_DEFAULT_SIGNAL_HANDLERS) PERLVARI(Gsig_handlers_initted, int, 0) #endif #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS PERLVARA(Gsig_ignoring, SIG_SIZE, int) /* which signals we are ignoring */ #endif #ifdef FAKE_DEFAULT_SIGNAL_HANDLERS PERLVARA(Gsig_defaulting, SIG_SIZE, int) #endif #ifndef PERL_IMPLICIT_CONTEXT PERLVAR(Gsig_sv, SV*) #endif /* XXX signals are process-wide anyway, so we * ignore the implications of this for threading */ #ifndef HAS_SIGACTION PERLVARI(Gsig_trapped, int, 0) #endif #ifdef DEBUGGING PERLVAR(Gwatch_pvx, char*) #endif #ifdef PERL_GLOBAL_STRUCT PERLVAR(Gppaddr, Perl_ppaddr_t*) /* or opcode.h */ PERLVAR(Gcheck, Perl_check_t *) /* or opcode.h */ PERLVARA(Gfold_locale, 256, unsigned char) /* or perl.h */ #endif #ifdef PERL_NEED_APPCTX PERLVAR(Gappctx, void*) /* the application context */ #endif PERLVAR(Gop_sequence, HV*) /* dump.c */ PERLVARI(Gop_seq, UV, 0) /* dump.c */ #if defined(HAS_TIMES) && defined(PERL_NEED_TIMESBASE) PERLVAR(Gtimesbase, struct tms) #endif /* allocate a unique index to every module that calls MY_CXT_INIT */ #ifdef PERL_IMPLICIT_CONTEXT # ifdef USE_ITHREADS PERLVAR(Gmy_ctx_mutex, perl_mutex) # endif PERLVARI(Gmy_cxt_index, int, 0) #endif #if defined(USE_ITHREADS) PERLVAR(Ghints_mutex, perl_mutex) /* Mutex for refcounted he refcounting */ #endif #if defined(USE_ITHREADS) PERLVAR(Gperlio_mutex, perl_mutex) /* Mutex for perlio fd refcounts */ #endif Convert-Binary-C-0.76/tests/include/perlinc/handy.h0000644000175000001440000007310611550664630020715 0ustar mhxusers/* handy.h * * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, * 2000, 2001, 2002, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #if !defined(__STDC__) #ifdef NULL #undef NULL #endif #ifndef I286 # define NULL 0 #else # define NULL 0L #endif #endif #define Null(type) ((type)NULL) /* =head1 Handy Values =for apidoc AmU||Nullch Null character pointer. =for apidoc AmU||Nullsv Null SV pointer. =cut */ #define Nullch Null(char*) #define Nullfp Null(PerlIO*) #define Nullsv Null(SV*) #ifdef TRUE #undef TRUE #endif #ifdef FALSE #undef FALSE #endif #define TRUE (1) #define FALSE (0) /* XXX Configure ought to have a test for a boolean type, if I can just figure out all the headers such a test needs. Andy Dougherty August 1996 */ /* bool is built-in for g++-2.6.3 and later, which might be used for extensions. <_G_config.h> defines _G_HAVE_BOOL, but we can't be sure _G_config.h will be included before this file. _G_config.h also defines _G_HAVE_BOOL for both gcc and g++, but only g++ actually has bool. Hence, _G_HAVE_BOOL is pretty useless for us. g++ can be identified by __GNUG__. Andy Dougherty February 2000 */ #ifdef __GNUG__ /* GNU g++ has bool built-in */ # ifndef HAS_BOOL # define HAS_BOOL 1 # endif #endif /* The NeXT dynamic loader headers will not build with the bool macro So declare them now to clear confusion. */ #if defined(NeXT) || defined(__NeXT__) # undef FALSE # undef TRUE typedef enum bool { FALSE = 0, TRUE = 1 } bool; # define ENUM_BOOL 1 # ifndef HAS_BOOL # define HAS_BOOL 1 # endif /* !HAS_BOOL */ #endif /* NeXT || __NeXT__ */ #ifndef HAS_BOOL # if defined(UTS) || defined(VMS) # define bool int # else # define bool char # endif # define HAS_BOOL 1 #endif /* Try to figure out __func__ or __FUNCTION__ equivalent, if any. * XXX Should really be a Configure probe, with HAS__FUNCTION__ * and FUNCTION__ as results. * XXX Similarly, a Configure probe for __FILE__ and __LINE__ is needed. */ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__SUNPRO_C)) /* C99 or close enough. */ # define FUNCTION__ __func__ #else # if (defined(_MSC_VER) && _MSC_VER < 1300) || /* Pre-MSVC 7.0 has neither __func__ nor __FUNCTION and no good workarounds, either. */ \ (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used, but not modern enough cc (in Tur64, -c99 not known, only -std1). */ # define FUNCTION__ "" # else # define FUNCTION__ __FUNCTION__ /* Common extension. */ # endif #endif /* XXX A note on the perl source internal type system. The original intent was that I32 be *exactly* 32 bits. Currently, we only guarantee that I32 is *at least* 32 bits. Specifically, if int is 64 bits, then so is I32. (This is the case for the Cray.) This has the advantage of meshing nicely with standard library calls (where we pass an I32 and the library is expecting an int), but the disadvantage that an I32 is not 32 bits. Andy Dougherty August 1996 There is no guarantee that there is *any* integral type with exactly 32 bits. It is perfectly legal for a system to have sizeof(short) == sizeof(int) == sizeof(long) == 8. Similarly, there is no guarantee that I16 and U16 have exactly 16 bits. For dealing with issues that may arise from various 32/64-bit systems, we will ask Configure to check out SHORTSIZE == sizeof(short) INTSIZE == sizeof(int) LONGSIZE == sizeof(long) LONGLONGSIZE == sizeof(long long) (if HAS_LONG_LONG) PTRSIZE == sizeof(void *) DOUBLESIZE == sizeof(double) LONG_DOUBLESIZE == sizeof(long double) (if HAS_LONG_DOUBLE). */ #ifdef I_INTTYPES /* e.g. Linux has int64_t without */ # include # ifdef INT32_MIN_BROKEN # undef INT32_MIN # define INT32_MIN (-2147483647-1) # endif # ifdef INT64_MIN_BROKEN # undef INT64_MIN # define INT64_MIN (-9223372036854775807LL-1) # endif #endif typedef I8TYPE I8; typedef U8TYPE U8; typedef I16TYPE I16; typedef U16TYPE U16; typedef I32TYPE I32; typedef U32TYPE U32; #ifdef PERL_CORE # ifdef HAS_QUAD typedef I64TYPE I64; typedef U64TYPE U64; # endif #endif /* PERL_CORE */ #if defined(HAS_QUAD) && defined(USE_64_BIT_INT) # ifndef UINT64_C /* usually from */ # if defined(HAS_LONG_LONG) && QUADKIND == QUAD_IS_LONG_LONG # define INT64_C(c) CAT2(c,LL) # define UINT64_C(c) CAT2(c,ULL) # else # if LONGSIZE == 8 && QUADKIND == QUAD_IS_LONG # define INT64_C(c) CAT2(c,L) # define UINT64_C(c) CAT2(c,UL) # else # define INT64_C(c) ((I64TYPE)(c)) # define UINT64_C(c) ((U64TYPE)(c)) # endif # endif # endif #endif /* HMB H.Merijn Brand - a placeholder for preparing Configure patches */ #if defined(HAS_MALLOC_SIZE) && defined(HAS_SNPRINTF) && defined(HAS_C99_VARIADIC_MACROS) /* Not (yet) used at top level, but mention them for metaconfig */ #endif /* Mention I8SIZE, U8SIZE, I16SIZE, U16SIZE, I32SIZE, U32SIZE, I64SIZE, and U64SIZE here so that metaconfig pulls them in. */ #if defined(UINT8_MAX) && defined(INT16_MAX) && defined(INT32_MAX) /* I8_MAX and I8_MIN constants are not defined, as I8 is an ambiguous type. Please search CHAR_MAX in perl.h for further details. */ #define U8_MAX UINT8_MAX #define U8_MIN UINT8_MIN #define I16_MAX INT16_MAX #define I16_MIN INT16_MIN #define U16_MAX UINT16_MAX #define U16_MIN UINT16_MIN #define I32_MAX INT32_MAX #define I32_MIN INT32_MIN #ifndef UINT32_MAX_BROKEN /* e.g. HP-UX with gcc messes this up */ # define U32_MAX UINT32_MAX #else # define U32_MAX 4294967295U #endif #define U32_MIN UINT32_MIN #else /* I8_MAX and I8_MIN constants are not defined, as I8 is an ambiguous type. Please search CHAR_MAX in perl.h for further details. */ #define U8_MAX PERL_UCHAR_MAX #define U8_MIN PERL_UCHAR_MIN #define I16_MAX PERL_SHORT_MAX #define I16_MIN PERL_SHORT_MIN #define U16_MAX PERL_USHORT_MAX #define U16_MIN PERL_USHORT_MIN #if LONGSIZE > 4 # define I32_MAX PERL_INT_MAX # define I32_MIN PERL_INT_MIN # define U32_MAX PERL_UINT_MAX # define U32_MIN PERL_UINT_MIN #else # define I32_MAX PERL_LONG_MAX # define I32_MIN PERL_LONG_MIN # define U32_MAX PERL_ULONG_MAX # define U32_MIN PERL_ULONG_MIN #endif #endif /* log(2) is pretty close to 0.30103, just in case anyone is grepping for it */ #define BIT_DIGITS(N) (((N)*146)/485 + 1) /* log2(10) =~ 146/485 */ #define TYPE_DIGITS(T) BIT_DIGITS(sizeof(T) * 8) #define TYPE_CHARS(T) (TYPE_DIGITS(T) + 2) /* sign, NUL */ #define Ctl(ch) ((ch) & 037) /* =head1 SV-Body Allocation =for apidoc Ama|SV*|newSVpvs|const char* s Like C, but takes a literal string instead of a string/length pair. =for apidoc Ama|SV*|newSVpvs_share|const char* s Like C, but takes a literal string instead of a string/length pair and omits the hash parameter. =for apidoc Am|void|sv_catpvs|SV* sv|const char* s Like C, but takes a literal string instead of a string/length pair. =for apidoc Am|void|sv_setpvs|SV* sv|const char* s Like C, but takes a literal string instead of a string/length pair. =head1 Memory Management =for apidoc Ama|char*|savepvs|const char* s Like C, but takes a literal string instead of a string/length pair. =head1 GV Functions =for apidoc Am|HV*|gv_stashpvs|const char* name|I32 create Like C, but takes a literal string instead of a string/length pair. =head1 Hash Manipulation Functions =for apidoc Am|SV**|hv_fetchs|HV* tb|const char* key|I32 lval Like C, but takes a literal string instead of a string/length pair. =for apidoc Am|SV**|hv_stores|HV* tb|const char* key|NULLOK SV* val Like C, but takes a literal string instead of a string/length pair and omits the hash parameter. =cut */ /* concatenating with "" ensures that only literal strings are accepted as argument */ #define STR_WITH_LEN(s) (s ""), (sizeof(s)-1) /* note that STR_WITH_LEN() can't be used as argument to macros or functions that * under some configurations might be macros, which means that it requires the full * Perl_xxx(aTHX_ ...) form for any API calls where it's used. */ /* STR_WITH_LEN() shortcuts */ #define newSVpvs(str) Perl_newSVpvn(aTHX_ STR_WITH_LEN(str)) #define newSVpvs_share(str) Perl_newSVpvn_share(aTHX_ STR_WITH_LEN(str), 0) #define sv_catpvs(sv, str) Perl_sv_catpvn_flags(aTHX_ sv, STR_WITH_LEN(str), SV_GMAGIC) #define sv_setpvs(sv, str) Perl_sv_setpvn(aTHX_ sv, STR_WITH_LEN(str)) #define savepvs(str) Perl_savepvn(aTHX_ STR_WITH_LEN(str)) #define gv_stashpvs(str, create) Perl_gv_stashpvn(aTHX_ STR_WITH_LEN(str), create) #define gv_fetchpvs(namebeg, add, sv_type) Perl_gv_fetchpvn_flags(aTHX_ STR_WITH_LEN(namebeg), add, sv_type) #define hv_fetchs(hv,key,lval) Perl_hv_fetch(aTHX_ hv, STR_WITH_LEN(key), lval) #define hv_stores(hv,key,val) Perl_hv_store(aTHX_ hv, STR_WITH_LEN(key), val, 0) /* =head1 Miscellaneous Functions =for apidoc Am|bool|strNE|char* s1|char* s2 Test two strings to see if they are different. Returns true or false. =for apidoc Am|bool|strEQ|char* s1|char* s2 Test two strings to see if they are equal. Returns true or false. =for apidoc Am|bool|strLT|char* s1|char* s2 Test two strings to see if the first, C, is less than the second, C. Returns true or false. =for apidoc Am|bool|strLE|char* s1|char* s2 Test two strings to see if the first, C, is less than or equal to the second, C. Returns true or false. =for apidoc Am|bool|strGT|char* s1|char* s2 Test two strings to see if the first, C, is greater than the second, C. Returns true or false. =for apidoc Am|bool|strGE|char* s1|char* s2 Test two strings to see if the first, C, is greater than or equal to the second, C. Returns true or false. =for apidoc Am|bool|strnNE|char* s1|char* s2|STRLEN len Test two strings to see if they are different. The C parameter indicates the number of bytes to compare. Returns true or false. (A wrapper for C). =for apidoc Am|bool|strnEQ|char* s1|char* s2|STRLEN len Test two strings to see if they are equal. The C parameter indicates the number of bytes to compare. Returns true or false. (A wrapper for C). =cut */ #define strNE(s1,s2) (strcmp(s1,s2)) #define strEQ(s1,s2) (!strcmp(s1,s2)) #define strLT(s1,s2) (strcmp(s1,s2) < 0) #define strLE(s1,s2) (strcmp(s1,s2) <= 0) #define strGT(s1,s2) (strcmp(s1,s2) > 0) #define strGE(s1,s2) (strcmp(s1,s2) >= 0) #define strnNE(s1,s2,l) (strncmp(s1,s2,l)) #define strnEQ(s1,s2,l) (!strncmp(s1,s2,l)) #ifdef HAS_MEMCMP # define memNE(s1,s2,l) (memcmp(s1,s2,l)) # define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) #else # define memNE(s1,s2,l) (bcmp(s1,s2,l)) # define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) #endif /* * Character classes. * * Unfortunately, the introduction of locales means that we * can't trust isupper(), etc. to tell the truth. And when * it comes to /\w+/ with tainting enabled, we *must* be able * to trust our character classes. * * Therefore, the default tests in the text of Perl will be * independent of locale. Any code that wants to depend on * the current locale will use the tests that begin with "lc". */ #ifdef HAS_SETLOCALE /* XXX Is there a better test for this? */ # ifndef CTYPE256 # define CTYPE256 # endif #endif /* =head1 Character classes =for apidoc Am|bool|isALNUM|char ch Returns a boolean indicating whether the C C is an ASCII alphanumeric character (including underscore) or digit. =for apidoc Am|bool|isALPHA|char ch Returns a boolean indicating whether the C C is an ASCII alphabetic character. =for apidoc Am|bool|isSPACE|char ch Returns a boolean indicating whether the C C is whitespace. =for apidoc Am|bool|isDIGIT|char ch Returns a boolean indicating whether the C C is an ASCII digit. =for apidoc Am|bool|isUPPER|char ch Returns a boolean indicating whether the C C is an uppercase character. =for apidoc Am|bool|isLOWER|char ch Returns a boolean indicating whether the C C is a lowercase character. =for apidoc Am|char|toUPPER|char ch Converts the specified character to uppercase. =for apidoc Am|char|toLOWER|char ch Converts the specified character to lowercase. =cut */ #define isALNUM(c) (isALPHA(c) || isDIGIT(c) || (c) == '_') #define isIDFIRST(c) (isALPHA(c) || (c) == '_') #define isALPHA(c) (isUPPER(c) || isLOWER(c)) #define isSPACE(c) \ ((c) == ' ' || (c) == '\t' || (c) == '\n' || (c) =='\r' || (c) == '\f') #define isPSXSPC(c) (isSPACE(c) || (c) == '\v') #define isBLANK(c) ((c) == ' ' || (c) == '\t') #define isDIGIT(c) ((c) >= '0' && (c) <= '9') #ifdef EBCDIC /* In EBCDIC we do not do locales: therefore() isupper() is fine. */ # define isUPPER(c) isupper(c) # define isLOWER(c) islower(c) # define isALNUMC(c) isalnum(c) # define isASCII(c) isascii(c) # define isCNTRL(c) iscntrl(c) # define isGRAPH(c) isgraph(c) # define isPRINT(c) isprint(c) # define isPUNCT(c) ispunct(c) # define isXDIGIT(c) isxdigit(c) # define toUPPER(c) toupper(c) # define toLOWER(c) tolower(c) #else # define isUPPER(c) ((c) >= 'A' && (c) <= 'Z') # define isLOWER(c) ((c) >= 'a' && (c) <= 'z') # define isALNUMC(c) (isALPHA(c) || isDIGIT(c)) # define isASCII(c) ((c) <= 127) # define isCNTRL(c) ((c) < ' ' || (c) == 127) # define isGRAPH(c) (isALNUM(c) || isPUNCT(c)) # define isPRINT(c) (((c) > 32 && (c) < 127) || (c) == ' ') # define isPUNCT(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126)) # define isXDIGIT(c) (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) # define toUPPER(c) (isLOWER(c) ? (c) - ('a' - 'A') : (c)) # define toLOWER(c) (isUPPER(c) ? (c) + ('a' - 'A') : (c)) #endif #ifdef USE_NEXT_CTYPE # define isALNUM_LC(c) \ (NXIsAlNum((unsigned int)(c)) || (char)(c) == '_') # define isIDFIRST_LC(c) \ (NXIsAlpha((unsigned int)(c)) || (char)(c) == '_') # define isALPHA_LC(c) NXIsAlpha((unsigned int)(c)) # define isSPACE_LC(c) NXIsSpace((unsigned int)(c)) # define isDIGIT_LC(c) NXIsDigit((unsigned int)(c)) # define isUPPER_LC(c) NXIsUpper((unsigned int)(c)) # define isLOWER_LC(c) NXIsLower((unsigned int)(c)) # define isALNUMC_LC(c) NXIsAlNum((unsigned int)(c)) # define isCNTRL_LC(c) NXIsCntrl((unsigned int)(c)) # define isGRAPH_LC(c) NXIsGraph((unsigned int)(c)) # define isPRINT_LC(c) NXIsPrint((unsigned int)(c)) # define isPUNCT_LC(c) NXIsPunct((unsigned int)(c)) # define toUPPER_LC(c) NXToUpper((unsigned int)(c)) # define toLOWER_LC(c) NXToLower((unsigned int)(c)) #else /* !USE_NEXT_CTYPE */ # if defined(CTYPE256) || (!defined(isascii) && !defined(HAS_ISASCII)) # define isALNUM_LC(c) (isalnum((unsigned char)(c)) || (char)(c) == '_') # define isIDFIRST_LC(c) (isalpha((unsigned char)(c)) || (char)(c) == '_') # define isALPHA_LC(c) isalpha((unsigned char)(c)) # define isSPACE_LC(c) isspace((unsigned char)(c)) # define isDIGIT_LC(c) isdigit((unsigned char)(c)) # define isUPPER_LC(c) isupper((unsigned char)(c)) # define isLOWER_LC(c) islower((unsigned char)(c)) # define isALNUMC_LC(c) isalnum((unsigned char)(c)) # define isCNTRL_LC(c) iscntrl((unsigned char)(c)) # define isGRAPH_LC(c) isgraph((unsigned char)(c)) # define isPRINT_LC(c) isprint((unsigned char)(c)) # define isPUNCT_LC(c) ispunct((unsigned char)(c)) # define toUPPER_LC(c) toupper((unsigned char)(c)) # define toLOWER_LC(c) tolower((unsigned char)(c)) # else # define isALNUM_LC(c) (isascii(c) && (isalnum(c) || (c) == '_')) # define isIDFIRST_LC(c) (isascii(c) && (isalpha(c) || (c) == '_')) # define isALPHA_LC(c) (isascii(c) && isalpha(c)) # define isSPACE_LC(c) (isascii(c) && isspace(c)) # define isDIGIT_LC(c) (isascii(c) && isdigit(c)) # define isUPPER_LC(c) (isascii(c) && isupper(c)) # define isLOWER_LC(c) (isascii(c) && islower(c)) # define isALNUMC_LC(c) (isascii(c) && isalnum(c)) # define isCNTRL_LC(c) (isascii(c) && iscntrl(c)) # define isGRAPH_LC(c) (isascii(c) && isgraph(c)) # define isPRINT_LC(c) (isascii(c) && isprint(c)) # define isPUNCT_LC(c) (isascii(c) && ispunct(c)) # define toUPPER_LC(c) toupper(c) # define toLOWER_LC(c) tolower(c) # endif #endif /* USE_NEXT_CTYPE */ #define isPSXSPC_LC(c) (isSPACE_LC(c) || (c) == '\v') #define isBLANK_LC(c) isBLANK(c) /* could be wrong */ #define isALNUM_uni(c) is_uni_alnum(c) #define isIDFIRST_uni(c) is_uni_idfirst(c) #define isALPHA_uni(c) is_uni_alpha(c) #define isSPACE_uni(c) is_uni_space(c) #define isDIGIT_uni(c) is_uni_digit(c) #define isUPPER_uni(c) is_uni_upper(c) #define isLOWER_uni(c) is_uni_lower(c) #define isALNUMC_uni(c) is_uni_alnumc(c) #define isASCII_uni(c) is_uni_ascii(c) #define isCNTRL_uni(c) is_uni_cntrl(c) #define isGRAPH_uni(c) is_uni_graph(c) #define isPRINT_uni(c) is_uni_print(c) #define isPUNCT_uni(c) is_uni_punct(c) #define isXDIGIT_uni(c) is_uni_xdigit(c) #define toUPPER_uni(c,s,l) to_uni_upper(c,s,l) #define toTITLE_uni(c,s,l) to_uni_title(c,s,l) #define toLOWER_uni(c,s,l) to_uni_lower(c,s,l) #define toFOLD_uni(c,s,l) to_uni_fold(c,s,l) #define isPSXSPC_uni(c) (isSPACE_uni(c) ||(c) == '\f') #define isBLANK_uni(c) isBLANK(c) /* could be wrong */ #define isALNUM_LC_uvchr(c) (c < 256 ? isALNUM_LC(c) : is_uni_alnum_lc(c)) #define isIDFIRST_LC_uvchr(c) (c < 256 ? isIDFIRST_LC(c) : is_uni_idfirst_lc(c)) #define isALPHA_LC_uvchr(c) (c < 256 ? isALPHA_LC(c) : is_uni_alpha_lc(c)) #define isSPACE_LC_uvchr(c) (c < 256 ? isSPACE_LC(c) : is_uni_space_lc(c)) #define isDIGIT_LC_uvchr(c) (c < 256 ? isDIGIT_LC(c) : is_uni_digit_lc(c)) #define isUPPER_LC_uvchr(c) (c < 256 ? isUPPER_LC(c) : is_uni_upper_lc(c)) #define isLOWER_LC_uvchr(c) (c < 256 ? isLOWER_LC(c) : is_uni_lower_lc(c)) #define isALNUMC_LC_uvchr(c) (c < 256 ? isALNUMC_LC(c) : is_uni_alnumc_lc(c)) #define isCNTRL_LC_uvchr(c) (c < 256 ? isCNTRL_LC(c) : is_uni_cntrl_lc(c)) #define isGRAPH_LC_uvchr(c) (c < 256 ? isGRAPH_LC(c) : is_uni_graph_lc(c)) #define isPRINT_LC_uvchr(c) (c < 256 ? isPRINT_LC(c) : is_uni_print_lc(c)) #define isPUNCT_LC_uvchr(c) (c < 256 ? isPUNCT_LC(c) : is_uni_punct_lc(c)) #define isPSXSPC_LC_uni(c) (isSPACE_LC_uni(c) ||(c) == '\f') #define isBLANK_LC_uni(c) isBLANK(c) /* could be wrong */ #define isALNUM_utf8(p) is_utf8_alnum(p) /* The ID_Start of Unicode is quite limiting: it assumes a L-class * character (meaning that you cannot have, say, a CJK character). * Instead, let's allow ID_Continue but not digits. */ #define isIDFIRST_utf8(p) (is_utf8_idcont(p) && !is_utf8_digit(p)) #define isALPHA_utf8(p) is_utf8_alpha(p) #define isSPACE_utf8(p) is_utf8_space(p) #define isDIGIT_utf8(p) is_utf8_digit(p) #define isUPPER_utf8(p) is_utf8_upper(p) #define isLOWER_utf8(p) is_utf8_lower(p) #define isALNUMC_utf8(p) is_utf8_alnumc(p) #define isASCII_utf8(p) is_utf8_ascii(p) #define isCNTRL_utf8(p) is_utf8_cntrl(p) #define isGRAPH_utf8(p) is_utf8_graph(p) #define isPRINT_utf8(p) is_utf8_print(p) #define isPUNCT_utf8(p) is_utf8_punct(p) #define isXDIGIT_utf8(p) is_utf8_xdigit(p) #define toUPPER_utf8(p,s,l) to_utf8_upper(p,s,l) #define toTITLE_utf8(p,s,l) to_utf8_title(p,s,l) #define toLOWER_utf8(p,s,l) to_utf8_lower(p,s,l) #define isPSXSPC_utf8(c) (isSPACE_utf8(c) ||(c) == '\f') #define isBLANK_utf8(c) isBLANK(c) /* could be wrong */ #define isALNUM_LC_utf8(p) isALNUM_LC_uvchr(utf8_to_uvchr(p, 0)) #define isIDFIRST_LC_utf8(p) isIDFIRST_LC_uvchr(utf8_to_uvchr(p, 0)) #define isALPHA_LC_utf8(p) isALPHA_LC_uvchr(utf8_to_uvchr(p, 0)) #define isSPACE_LC_utf8(p) isSPACE_LC_uvchr(utf8_to_uvchr(p, 0)) #define isDIGIT_LC_utf8(p) isDIGIT_LC_uvchr(utf8_to_uvchr(p, 0)) #define isUPPER_LC_utf8(p) isUPPER_LC_uvchr(utf8_to_uvchr(p, 0)) #define isLOWER_LC_utf8(p) isLOWER_LC_uvchr(utf8_to_uvchr(p, 0)) #define isALNUMC_LC_utf8(p) isALNUMC_LC_uvchr(utf8_to_uvchr(p, 0)) #define isCNTRL_LC_utf8(p) isCNTRL_LC_uvchr(utf8_to_uvchr(p, 0)) #define isGRAPH_LC_utf8(p) isGRAPH_LC_uvchr(utf8_to_uvchr(p, 0)) #define isPRINT_LC_utf8(p) isPRINT_LC_uvchr(utf8_to_uvchr(p, 0)) #define isPUNCT_LC_utf8(p) isPUNCT_LC_uvchr(utf8_to_uvchr(p, 0)) #define isPSXSPC_LC_utf8(c) (isSPACE_LC_utf8(c) ||(c) == '\f') #define isBLANK_LC_utf8(c) isBLANK(c) /* could be wrong */ #ifdef EBCDIC # ifdef PERL_IMPLICIT_CONTEXT # define toCTRL(c) Perl_ebcdic_control(aTHX_ c) # else # define toCTRL Perl_ebcdic_control # endif #else /* This conversion works both ways, strangely enough. */ # define toCTRL(c) (toUPPER(c) ^ 64) #endif /* Line numbers are unsigned, 32 bits. */ typedef U32 line_t; #define NOLINE ((line_t) 4294967295UL) /* =head1 Memory Management =for apidoc Am|void|Newx|void* ptr|int nitems|type The XSUB-writer's interface to the C C function. In 5.9.3, Newx() and friends replace the older New() API, and drops the first parameter, I, a debug aid which allowed callers to identify themselves. This aid has been superseded by a new build option, PERL_MEM_LOG (see L). The older API is still there for use in XS modules supporting older perls. =for apidoc Am|void|Newxc|void* ptr|int nitems|type|cast The XSUB-writer's interface to the C C function, with cast. See also C. =for apidoc Am|void|Newxz|void* ptr|int nitems|type The XSUB-writer's interface to the C C function. The allocated memory is zeroed with C. See also C. =for apidoc Am|void|Renew|void* ptr|int nitems|type The XSUB-writer's interface to the C C function. =for apidoc Am|void|Renewc|void* ptr|int nitems|type|cast The XSUB-writer's interface to the C C function, with cast. =for apidoc Am|void|Safefree|void* ptr The XSUB-writer's interface to the C C function. =for apidoc Am|void|Move|void* src|void* dest|int nitems|type The XSUB-writer's interface to the C C function. The C is the source, C is the destination, C is the number of items, and C is the type. Can do overlapping moves. See also C. =for apidoc Am|void *|MoveD|void* src|void* dest|int nitems|type Like C but returns dest. Useful for encouraging compilers to tail-call optimise. =for apidoc Am|void|Copy|void* src|void* dest|int nitems|type The XSUB-writer's interface to the C C function. The C is the source, C is the destination, C is the number of items, and C is the type. May fail on overlapping copies. See also C. =for apidoc Am|void *|CopyD|void* src|void* dest|int nitems|type Like C but returns dest. Useful for encouraging compilers to tail-call optimise. =for apidoc Am|void|Zero|void* dest|int nitems|type The XSUB-writer's interface to the C C function. The C is the destination, C is the number of items, and C is the type. =for apidoc Am|void *|ZeroD|void* dest|int nitems|type Like C but returns dest. Useful for encouraging compilers to tail-call optimise. =for apidoc Am|void|StructCopy|type src|type dest|type This is an architecture-independent macro to copy one structure to another. =for apidoc Am|void|PoisonWith|void* dest|int nitems|type|U8 byte Fill up memory with a byte pattern (a byte repeated over and over again) that hopefully catches attempts to access uninitialized memory. =for apidoc Am|void|PoisonNew|void* dest|int nitems|type PoisonWith(0xAB) for catching access to allocated but uninitialized memory. =for apidoc Am|void|PoisonFree|void* dest|int nitems|type PoisonWith(0xEF) for catching access to freed memory. =for apidoc Am|void|Poison|void* dest|int nitems|type PoisonWith(0xEF) for catching access to freed memory. =cut */ /* Maintained for backwards-compatibility only. Use newSV() instead. */ #ifndef PERL_CORE #define NEWSV(x,len) newSV(len) #endif /* The +0.0 in MEM_WRAP_CHECK_ is an attempt to foil * overly eager compilers that will bleat about e.g. * (U16)n > (size_t)~0/sizeof(U16) always being false. */ #ifdef PERL_MALLOC_WRAP #define MEM_WRAP_CHECK(n,t) MEM_WRAP_CHECK_1(n,t,PL_memory_wrap) #define MEM_WRAP_CHECK_1(n,t,a) \ (void)(sizeof(t) > 1 && ((MEM_SIZE)(n)+0.0) > ((MEM_SIZE)~0)/sizeof(t) && (Perl_croak_nocontext(a),0)) #define MEM_WRAP_CHECK_(n,t) MEM_WRAP_CHECK(n,t), #define PERL_STRLEN_ROUNDUP(n) ((void)(((n) > (MEM_SIZE)~0 - 2 * PERL_STRLEN_ROUNDUP_QUANTUM) ? (Perl_croak_nocontext(PL_memory_wrap),0):0),((n-1+PERL_STRLEN_ROUNDUP_QUANTUM)&~((MEM_SIZE)PERL_STRLEN_ROUNDUP_QUANTUM-1))) #else #define MEM_WRAP_CHECK(n,t) #define MEM_WRAP_CHECK_1(n,t,a) #define MEM_WRAP_CHECK_2(n,t,a,b) #define MEM_WRAP_CHECK_(n,t) #define PERL_STRLEN_ROUNDUP(n) (((n-1+PERL_STRLEN_ROUNDUP_QUANTUM)&~((MEM_SIZE)PERL_STRLEN_ROUNDUP_QUANTUM-1))) #endif #ifdef PERL_MEM_LOG /* * If PERL_MEM_LOG is defined, all Newx()s, Renew()s, and Safefree()s * go through functions, which are handy for debugging breakpoints, but * which more importantly get the immediate calling environment (file and * line number, and C function name if available) passed in. This info can * then be used for logging the calls, for which one gets a sample * implementation if PERL_MEM_LOG_STDERR is defined. * * Known problems: * - all memory allocs do not get logged, only those * that go through Newx() and derivatives (while all * Safefrees do get logged) * - __FILE__ and __LINE__ do not work everywhere * - __func__ or __FUNCTION__ even less so * - I think more goes on after the perlio frees but * the thing is that STDERR gets closed (as do all * the file descriptors) * - no deeper calling stack than the caller of the Newx() * or the kind, but do I look like a C reflection/introspection * utility to you? * - the function prototypes for the logging functions * probably should maybe be somewhere else than handy.h * - one could consider inlining (macrofying) the logging * for speed, but I am too lazy * - one could imagine recording the allocations in a hash, * (keyed by the allocation address?), and maintain that * through reallocs and frees, but how to do that without * any News() happening...? */ Malloc_t Perl_mem_log_alloc(const UV n, const UV typesize, const char *typename, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname); Malloc_t Perl_mem_log_realloc(const UV n, const UV typesize, const char *typename, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname); Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname); #endif #ifdef PERL_MEM_LOG #define MEM_LOG_ALLOC(n,t,a) Perl_mem_log_alloc(n,sizeof(t),STRINGIFY(t),a,__FILE__,__LINE__,FUNCTION__) #define MEM_LOG_REALLOC(n,t,v,a) Perl_mem_log_realloc(n,sizeof(t),STRINGIFY(t),v,a,__FILE__,__LINE__,FUNCTION__) #define MEM_LOG_FREE(a) Perl_mem_log_free(a,__FILE__,__LINE__,FUNCTION__) #endif #ifndef MEM_LOG_ALLOC #define MEM_LOG_ALLOC(n,t,a) (a) #endif #ifndef MEM_LOG_REALLOC #define MEM_LOG_REALLOC(n,t,v,a) (a) #endif #ifndef MEM_LOG_FREE #define MEM_LOG_FREE(a) (a) #endif #define Newx(v,n,t) (v = (MEM_WRAP_CHECK_(n,t) MEM_LOG_ALLOC(n,t,(t*)safemalloc((MEM_SIZE)((n)*sizeof(t)))))) #define Newxc(v,n,t,c) (v = (MEM_WRAP_CHECK_(n,t) MEM_LOG_ALLOC(n,t,(c*)safemalloc((MEM_SIZE)((n)*sizeof(t)))))) #define Newxz(v,n,t) (v = (MEM_WRAP_CHECK_(n,t) MEM_LOG_ALLOC(n,t,(t*)safecalloc((n),sizeof(t))))) #ifndef PERL_CORE /* pre 5.9.x compatibility */ #define New(x,v,n,t) Newx(v,n,t) #define Newc(x,v,n,t,c) Newxc(v,n,t,c) #define Newz(x,v,n,t) Newxz(v,n,t) #endif #define Renew(v,n,t) \ (v = (MEM_WRAP_CHECK_(n,t) MEM_LOG_REALLOC(n,t,v,(t*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t)))))) #define Renewc(v,n,t,c) \ (v = (MEM_WRAP_CHECK_(n,t) MEM_LOG_REALLOC(n,t,v,(c*)saferealloc((Malloc_t)(v),(MEM_SIZE)((n)*sizeof(t)))))) #ifdef PERL_POISON #define Safefree(d) \ ((d) ? (void)(safefree(MEM_LOG_FREE((Malloc_t)(d))), Poison(&(d), 1, Malloc_t)) : (void) 0) #else #define Safefree(d) safefree(MEM_LOG_FREE((Malloc_t)(d))) #endif #define Move(s,d,n,t) (MEM_WRAP_CHECK_(n,t) (void)memmove((char*)(d),(const char*)(s), (n) * sizeof(t))) #define Copy(s,d,n,t) (MEM_WRAP_CHECK_(n,t) (void)memcpy((char*)(d),(const char*)(s), (n) * sizeof(t))) #define Zero(d,n,t) (MEM_WRAP_CHECK_(n,t) (void)memzero((char*)(d), (n) * sizeof(t))) #define MoveD(s,d,n,t) (MEM_WRAP_CHECK_(n,t) memmove((char*)(d),(const char*)(s), (n) * sizeof(t))) #define CopyD(s,d,n,t) (MEM_WRAP_CHECK_(n,t) memcpy((char*)(d),(const char*)(s), (n) * sizeof(t))) #ifdef HAS_MEMSET #define ZeroD(d,n,t) (MEM_WRAP_CHECK_(n,t) memzero((char*)(d), (n) * sizeof(t))) #else /* Using bzero(), which returns void. */ #define ZeroD(d,n,t) (MEM_WRAP_CHECK_(n,t) memzero((char*)(d), (n) * sizeof(t)),d) #endif #define PoisonWith(d,n,t,b) (MEM_WRAP_CHECK_(n,t) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))) #define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) #define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) #define Poison(d,n,t) PoisonFree(d,n,t) #ifdef USE_STRUCT_COPY #define StructCopy(s,d,t) (*((t*)(d)) = *((t*)(s))) #else #define StructCopy(s,d,t) Copy(s,d,1,t) #endif #define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0])) #ifdef NEED_VA_COPY # ifdef va_copy # define Perl_va_copy(s, d) va_copy(d, s) # else # if defined(__va_copy) # define Perl_va_copy(s, d) __va_copy(d, s) # else # define Perl_va_copy(s, d) Copy(s, d, 1, va_list) # endif # endif #endif /* convenience debug macros */ #ifdef USE_ITHREADS #define pTHX_FORMAT "Perl interpreter: 0x%p" #define pTHX__FORMAT ", Perl interpreter: 0x%p" #define pTHX_VALUE_ (void *)my_perl, #define pTHX_VALUE (void *)my_perl #define pTHX__VALUE_ ,(void *)my_perl, #define pTHX__VALUE ,(void *)my_perl #else #define pTHX_FORMAT #define pTHX__FORMAT #define pTHX_VALUE_ #define pTHX_VALUE #define pTHX__VALUE_ #define pTHX__VALUE #endif /* USE_ITHREADS */ Convert-Binary-C-0.76/tests/include/perlinc/perl.h0000644000175000001440000047433511550664630020565 0ustar mhxusers/* perl.h * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #ifndef H_PERL #define H_PERL 1 #ifdef PERL_FOR_X2P /* * This file is being used for x2p stuff. * Above symbol is defined via -D in 'x2p/Makefile.SH' * Decouple x2p stuff from some of perls more extreme eccentricities. */ #undef MULTIPLICITY #undef USE_STDIO #define USE_STDIO #endif /* PERL_FOR_X2P */ #if defined(DGUX) #include #endif #ifdef VOIDUSED # undef VOIDUSED #endif #define VOIDUSED 1 #ifdef PERL_MICRO # include "uconfig.h" #else # ifndef USE_CROSS_COMPILE # include "config.h" # else # include "xconfig.h" # endif #endif /* See L for detailed notes on * PERL_IMPLICIT_CONTEXT and PERL_IMPLICIT_SYS */ /* Note that from here --> to <-- the same logic is * repeated in makedef.pl, so be certain to update * both places when editing. */ #ifdef PERL_IMPLICIT_SYS /* PERL_IMPLICIT_SYS implies PerlMemShared != PerlMem so use slab allocator to avoid lots of MUTEX overhead */ # ifndef PL_OP_SLAB_ALLOC # define PL_OP_SLAB_ALLOC # endif #endif #ifdef USE_ITHREADS # if !defined(MULTIPLICITY) # define MULTIPLICITY # endif #endif #ifdef PERL_GLOBAL_STRUCT_PRIVATE # ifndef PERL_GLOBAL_STRUCT # define PERL_GLOBAL_STRUCT # endif #endif #ifdef PERL_GLOBAL_STRUCT # ifndef MULTIPLICITY # define MULTIPLICITY # endif #endif #ifdef MULTIPLICITY # ifndef PERL_IMPLICIT_CONTEXT # define PERL_IMPLICIT_CONTEXT # endif #endif /* undef WIN32 when building on Cygwin (for libwin32) - gph */ #ifdef __CYGWIN__ # undef WIN32 # undef _WIN32 #endif #if defined(__SYMBIAN32__) || (defined(__VC32__) && defined(WINS)) # ifndef SYMBIAN # define SYMBIAN # endif #endif #ifdef __SYMBIAN32__ # include "symbian/symbian_proto.h" #endif /* Any stack-challenged places. The limit varies (and often * is configurable), but using more than a kilobyte of stack * is usually dubious in these systems. */ #if defined(EPOC) || defined(__SYMBIAN32__) /* EPOC/Symbian: need to work around the SDK features. * * On WINS: MS VC5 generates calls to _chkstk, * * if a "large" stack frame is allocated. * * gcc on MARM does not generate calls like these. */ # define USE_HEAP_INSTEAD_OF_STACK #endif #/* Use the reentrant APIs like localtime_r and getpwent_r */ /* Win32 has naturally threadsafe libraries, no need to use any _r variants. */ #if defined(USE_ITHREADS) && !defined(USE_REENTRANT_API) && !defined(NETWARE) && !defined(WIN32) && !defined(PERL_DARWIN) # define USE_REENTRANT_API #endif /* <--- here ends the logic shared by perl.h and makedef.pl */ /* * PERL_DARWIN for MacOSX (__APPLE__ exists but is not officially sanctioned) * (The -DPERL_DARWIN comes from the hints/darwin.sh.) * __bsdi__ for BSD/OS */ #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(PERL_DARWIN) || defined(__bsdi__) || defined(BSD41) || defined(BSD42) || defined(BSD43) || defined(BSD44) # ifndef BSDish # define BSDish # endif #endif #ifdef PERL_GLOBAL_STRUCT # ifndef PERL_GET_VARS # ifdef PERL_GLOBAL_STRUCT_PRIVATE extern struct perl_vars* Perl_GetVarsPrivate(); # define PERL_GET_VARS() Perl_GetVarsPrivate() /* see miniperlmain.c */ # ifndef PERLIO_FUNCS_CONST # define PERLIO_FUNCS_CONST /* Can't have these lying around. */ # endif # else # define PERL_GET_VARS() PL_VarsPtr # endif # endif #endif #define pVAR register struct perl_vars* my_vars PERL_UNUSED_DECL #ifdef PERL_GLOBAL_STRUCT # define dVAR pVAR = (struct perl_vars*)PERL_GET_VARS() #else # define dVAR dNOOP #endif #ifdef PERL_IMPLICIT_CONTEXT # ifndef MULTIPLICITY # define MULTIPLICITY # endif # define tTHX PerlInterpreter* # define pTHX register tTHX my_perl PERL_UNUSED_DECL # define aTHX my_perl # ifdef PERL_GLOBAL_STRUCT # define dTHXa(a) dVAR; pTHX = (tTHX)a # else # define dTHXa(a) pTHX = (tTHX)a # endif # ifdef PERL_GLOBAL_STRUCT # define dTHX dVAR; pTHX = PERL_GET_THX # else # define dTHX pTHX = PERL_GET_THX # endif # define pTHX_ pTHX, # define aTHX_ aTHX, # define pTHX_1 2 # define pTHX_2 3 # define pTHX_3 4 # define pTHX_4 5 # define pTHX_5 6 # define pTHX_6 7 # define pTHX_7 8 # define pTHX_8 9 # define pTHX_9 10 # if defined(DEBUGGING) && !defined(PERL_TRACK_MEMPOOL) # define PERL_TRACK_MEMPOOL # endif #else # undef PERL_TRACK_MEMPOOL #endif #define STATIC static #define CPERLscope(x) x #define CPERLarg void #define CPERLarg_ #define _CPERLarg #define PERL_OBJECT_THIS #define _PERL_OBJECT_THIS #define PERL_OBJECT_THIS_ #define CALL_FPTR(fptr) (*fptr) #define CALLRUNOPS CALL_FPTR(PL_runops) #define CALLREGCOMP(exp, xend, pm) Perl_pregcomp(aTHX_ exp,xend,pm) #define CALLREGCOMP_ENG(prog, exp, xend, pm) \ CALL_FPTR(((prog)->comp))(aTHX_ exp, xend, pm) #define CALLREGEXEC(prog,stringarg,strend,strbeg,minend,screamer,data,flags) \ CALL_FPTR((prog)->engine->exec)(aTHX_ (prog),(stringarg),(strend), \ (strbeg),(minend),(screamer),(data),(flags)) #define CALLREG_INTUIT_START(prog,sv,strpos,strend,flags,data) \ CALL_FPTR((prog)->engine->intuit)(aTHX_ (prog), (sv), (strpos), \ (strend),(flags),(data)) #define CALLREG_INTUIT_STRING(prog) \ CALL_FPTR((prog)->engine->checkstr)(aTHX_ (prog)) #define CALLREGFREE(prog) \ if(prog) CALL_FPTR((prog)->engine->free)(aTHX_ (prog)) #if defined(USE_ITHREADS) #define CALLREGDUPE(prog,param) \ (prog ? CALL_FPTR((prog)->engine->dupe)(aTHX_ (prog),(param)) \ : (REGEXP *)NULL) #endif /* * Because of backward compatibility reasons the PERL_UNUSED_DECL * cannot be changed from postfix to PERL_UNUSED_DECL(x). Sigh. * * Note that there are C compilers such as MetroWerks CodeWarrior * which do not have an "inlined" way (like the gcc __attribute__) of * marking unused variables (they need e.g. a #pragma) and therefore * cpp macros like PERL_UNUSED_DECL cannot work for this purpose, even * if it were PERL_UNUSED_DECL(x), which it cannot be (see above). * */ #if defined(__SYMBIAN32__) && defined(__GNUC__) # ifdef __cplusplus # define PERL_UNUSED_DECL # else # define PERL_UNUSED_DECL __attribute__((unused)) # endif #endif #ifndef PERL_UNUSED_DECL # if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus) # define PERL_UNUSED_DECL __attribute__unused__ # else # define PERL_UNUSED_DECL # endif #endif /* gcc -Wall: * for silencing unused variables that are actually used most of the time, * but we cannot quite get rid of, such as "ax" in PPCODE+noargs xsubs */ #ifndef PERL_UNUSED_ARG # if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ # include # define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) # else # define PERL_UNUSED_ARG(x) ((void)x) # endif #endif #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(x) ((void)x) #endif #ifdef USE_ITHREADS # define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) #else # define PERL_UNUSED_CONTEXT #endif #define NOOP /*EMPTY*/(void)0 #if !defined(HASATTRIBUTE_UNUSED) && defined(__cplusplus) #define dNOOP /*EMPTY*/(void)0 /* Older g++ has no __attribute((unused))__ */ #else #define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL #endif #ifndef pTHX /* Don't bother defining tTHX and sTHX; using them outside * code guarded by PERL_IMPLICIT_CONTEXT is an error. */ # define pTHX void # define pTHX_ # define aTHX # define aTHX_ # define dTHXa(a) dNOOP # define dTHX dNOOP # define pTHX_1 1 # define pTHX_2 2 # define pTHX_3 3 # define pTHX_4 4 # define pTHX_5 5 # define pTHX_6 6 # define pTHX_7 7 # define pTHX_8 8 # define pTHX_9 9 #endif #ifndef dVAR # define dVAR dNOOP #endif /* these are only defined for compatibility; should not be used internally */ #if !defined(pTHXo) && !defined(PERL_CORE) # define pTHXo pTHX # define pTHXo_ pTHX_ # define aTHXo aTHX # define aTHXo_ aTHX_ # define dTHXo dTHX # define dTHXoa(x) dTHXa(x) #endif #ifndef pTHXx # define pTHXx register PerlInterpreter *my_perl # define pTHXx_ pTHXx, # define aTHXx my_perl # define aTHXx_ aTHXx, # define dTHXx dTHX #endif /* Under PERL_IMPLICIT_SYS (used in Windows for fork emulation) * PerlIO_foo() expands to PL_StdIO->pFOO(PL_StdIO, ...). * dTHXs is therefore needed for all functions using PerlIO_foo(). */ #ifdef PERL_IMPLICIT_SYS # ifdef PERL_GLOBAL_STRUCT_PRIVATE # define dTHXs dVAR; dTHX # else # define dTHXs dTHX # endif #else # ifdef PERL_GLOBAL_STRUCT_PRIVATE # define dTHXs dVAR # else # define dTHXs dNOOP # endif #endif #undef START_EXTERN_C #undef END_EXTERN_C #undef EXTERN_C #ifdef __cplusplus # define START_EXTERN_C extern "C" { # define END_EXTERN_C } # define EXTERN_C extern "C" #else # define START_EXTERN_C # define END_EXTERN_C # define EXTERN_C extern #endif /* Some platforms require marking function declarations * for them to be exportable. Used in perlio.h, proto.h * is handled either by the makedef.pl or by defining the * PERL_CALLCONV to be something special. See also the * definition of XS() in XSUB.h. */ #ifndef PERL_EXPORT_C # ifdef __cplusplus # define PERL_EXPORT_C extern "C" # else # define PERL_EXPORT_C extern # endif #endif #ifndef PERL_XS_EXPORT_C # ifdef __cplusplus # define PERL_XS_EXPORT_C extern "C" # else # define PERL_XS_EXPORT_C # endif #endif #ifdef OP_IN_REGISTER # ifdef __GNUC__ # define stringify_immed(s) #s # define stringify(s) stringify_immed(s) register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); # endif #endif /* gcc (-ansi) -pedantic doesn't allow gcc brace groups, * g++ allows them but seems to have problems with them * (insane errors ensue). */ #if defined(PERL_GCC_PEDANTIC) || (defined(__GNUC__) && defined(__cplusplus)) # ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN # define PERL_GCC_BRACE_GROUPS_FORBIDDEN # endif #endif #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) # ifndef PERL_USE_GCC_BRACE_GROUPS # define PERL_USE_GCC_BRACE_GROUPS # endif #endif /* * STMT_START { statements; } STMT_END; * can be used as a single statement, as in * if (x) STMT_START { ... } STMT_END; else ... * * Trying to select a version that gives no warnings... */ #if !(defined(STMT_START) && defined(STMT_END)) # ifdef PERL_USE_GCC_BRACE_GROUPS # define STMT_START (void)( /* gcc supports "({ STATEMENTS; })" */ # define STMT_END ) # else /* Now which other defined()s do we need here ??? */ # if (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) # define STMT_START if (1) # define STMT_END else (void)0 # else # define STMT_START do # define STMT_END while (0) # endif # endif #endif #define WITH_THX(s) STMT_START { dTHX; s; } STMT_END #define WITH_THR(s) WITH_THX(s) #ifndef BYTEORDER /* Should never happen -- byteorder is in config.h */ # define BYTEORDER 0x1234 #endif /* Overall memory policy? */ #ifndef CONSERVATIVE # define LIBERAL 1 #endif #if 'A' == 65 && 'I' == 73 && 'J' == 74 && 'Z' == 90 #define ASCIIish #else #undef ASCIIish #endif /* * The following contortions are brought to you on behalf of all the * standards, semi-standards, de facto standards, not-so-de-facto standards * of the world, as well as all the other botches anyone ever thought of. * The basic theory is that if we work hard enough here, the rest of the * code can be a lot prettier. Well, so much for theory. Sorry, Henry... */ /* define this once if either system, instead of cluttering up the src */ #if defined(MSDOS) || defined(atarist) || defined(WIN32) || defined(NETWARE) #define DOSISH 1 #endif #if defined(__STDC__) || defined(_AIX) || defined(__stdc__) || defined(__cplusplus) || defined(EPOC) || defined(NETWARE) || defined(__SYMBIAN32__) # define STANDARD_C 1 #endif #if defined(__cplusplus) || defined(WIN32) || defined(__sgi) || defined(__EMX__) || defined(__DGUX) || defined(EPOC) || defined(__QNX__) || defined(NETWARE) || defined(PERL_MICRO) # define DONT_DECLARE_STD 1 #endif #if defined(HASVOLATILE) || defined(STANDARD_C) # ifdef __cplusplus # define VOL /* to temporarily suppress warnings */ # else # define VOL volatile # endif #else # define VOL #endif #define TAINT (PL_tainted = TRUE) #define TAINT_NOT (PL_tainted = FALSE) #define TAINT_IF(c) if (c) { PL_tainted = TRUE; } #define TAINT_ENV() if (PL_tainting) { taint_env(); } #define TAINT_PROPER(s) if (PL_tainting) { taint_proper(NULL, s); } /* XXX All process group stuff is handled in pp_sys.c. Should these defines move there? If so, I could simplify this a lot. --AD 9/96. */ /* Process group stuff changed from traditional BSD to POSIX. perlfunc.pod documents the traditional BSD-style syntax, so we'll try to preserve that, if possible. */ #ifdef HAS_SETPGID # define BSD_SETPGRP(pid, pgrp) setpgid((pid), (pgrp)) #else # if defined(HAS_SETPGRP) && defined(USE_BSD_SETPGRP) # define BSD_SETPGRP(pid, pgrp) setpgrp((pid), (pgrp)) # else # ifdef HAS_SETPGRP2 /* DG/UX */ # define BSD_SETPGRP(pid, pgrp) setpgrp2((pid), (pgrp)) # endif # endif #endif #if defined(BSD_SETPGRP) && !defined(HAS_SETPGRP) # define HAS_SETPGRP /* Well, effectively it does . . . */ #endif /* getpgid isn't POSIX, but at least Solaris and Linux have it, and it makes our life easier :-) so we'll try it. */ #ifdef HAS_GETPGID # define BSD_GETPGRP(pid) getpgid((pid)) #else # if defined(HAS_GETPGRP) && defined(USE_BSD_GETPGRP) # define BSD_GETPGRP(pid) getpgrp((pid)) # else # ifdef HAS_GETPGRP2 /* DG/UX */ # define BSD_GETPGRP(pid) getpgrp2((pid)) # endif # endif #endif #if defined(BSD_GETPGRP) && !defined(HAS_GETPGRP) # define HAS_GETPGRP /* Well, effectively it does . . . */ #endif /* These are not exact synonyms, since setpgrp() and getpgrp() may have different behaviors, but perl.h used to define USE_BSDPGRP (prior to 5.003_05) so some extension might depend on it. */ #if defined(USE_BSD_SETPGRP) || defined(USE_BSD_GETPGRP) # ifndef USE_BSDPGRP # define USE_BSDPGRP # endif #endif /* HP-UX 10.X CMA (Common Multithreaded Architecure) insists that pthread.h must be included before all other header files. */ #if defined(USE_ITHREADS) && defined(PTHREAD_H_FIRST) && defined(I_PTHREAD) # include #endif #ifndef _TYPES_ /* If types.h defines this it's easy. */ # ifndef major /* Does everyone's types.h define this? */ # include # endif #endif #ifdef __cplusplus # ifndef I_STDARG # define I_STDARG 1 # endif #endif #ifdef I_STDARG # include #else # ifdef I_VARARGS # include # endif #endif #ifdef USE_NEXT_CTYPE #if NX_CURRENT_COMPILER_RELEASE >= 500 # include #else # if NX_CURRENT_COMPILER_RELEASE >= 400 # include # else /* NX_CURRENT_COMPILER_RELEASE < 400 */ # include # endif /* NX_CURRENT_COMPILER_RELEASE >= 400 */ #endif /* NX_CURRENT_COMPILER_RELEASE >= 500 */ #else /* !USE_NEXT_CTYPE */ #include #endif /* USE_NEXT_CTYPE */ #ifdef METHOD /* Defined by OSF/1 v3.0 by ctype.h */ #undef METHOD #endif #ifdef PERL_MICRO # define NO_LOCALE #endif #ifdef I_LOCALE # include #endif #if !defined(NO_LOCALE) && defined(HAS_SETLOCALE) # define USE_LOCALE # if !defined(NO_LOCALE_COLLATE) && defined(LC_COLLATE) \ && defined(HAS_STRXFRM) # define USE_LOCALE_COLLATE # endif # if !defined(NO_LOCALE_CTYPE) && defined(LC_CTYPE) # define USE_LOCALE_CTYPE # endif # if !defined(NO_LOCALE_NUMERIC) && defined(LC_NUMERIC) # define USE_LOCALE_NUMERIC # endif #endif /* !NO_LOCALE && HAS_SETLOCALE */ #include #ifdef I_SYS_PARAM # ifdef PARAM_NEEDS_TYPES # include # endif # include #endif /* Use all the "standard" definitions? */ #if defined(STANDARD_C) && defined(I_STDLIB) # include #endif /* If this causes problems, set i_unistd=undef in the hint file. */ #ifdef I_UNISTD # include #endif #ifdef __SYMBIAN32__ # undef _SC_ARG_MAX /* Symbian has _SC_ARG_MAX but no sysconf() */ #endif #if defined(HAS_SYSCALL) && !defined(HAS_SYSCALL_PROTO) && !defined(PERL_MICRO) EXTERN_C int syscall(int, ...); #endif #if defined(HAS_USLEEP) && !defined(HAS_USLEEP_PROTO) && !defined(PERL_MICRO) EXTERN_C int usleep(unsigned int); #endif #ifdef PERL_MICRO /* Last chance to export Perl_my_swap */ # define MYSWAP #endif #ifdef PERL_CORE /* macros for correct constant construction */ # if INTSIZE >= 2 # define U16_CONST(x) ((U16)x##U) # else # define U16_CONST(x) ((U16)x##UL) # endif # if INTSIZE >= 4 # define U32_CONST(x) ((U32)x##U) # else # define U32_CONST(x) ((U32)x##UL) # endif # ifdef HAS_QUAD # if INTSIZE >= 8 # define U64_CONST(x) ((U64)x##U) # elif LONGSIZE >= 8 # define U64_CONST(x) ((U64)x##UL) # elif QUADKIND == QUAD_IS_LONG_LONG # define U64_CONST(x) ((U64)x##ULL) # else /* best guess we can make */ # define U64_CONST(x) ((U64)x##UL) # endif # endif /* byte-swapping functions for big-/little-endian conversion */ # define _swab_16_(x) ((U16)( \ (((U16)(x) & U16_CONST(0x00ff)) << 8) | \ (((U16)(x) & U16_CONST(0xff00)) >> 8) )) # define _swab_32_(x) ((U32)( \ (((U32)(x) & U32_CONST(0x000000ff)) << 24) | \ (((U32)(x) & U32_CONST(0x0000ff00)) << 8) | \ (((U32)(x) & U32_CONST(0x00ff0000)) >> 8) | \ (((U32)(x) & U32_CONST(0xff000000)) >> 24) )) # ifdef HAS_QUAD # define _swab_64_(x) ((U64)( \ (((U64)(x) & U64_CONST(0x00000000000000ff)) << 56) | \ (((U64)(x) & U64_CONST(0x000000000000ff00)) << 40) | \ (((U64)(x) & U64_CONST(0x0000000000ff0000)) << 24) | \ (((U64)(x) & U64_CONST(0x00000000ff000000)) << 8) | \ (((U64)(x) & U64_CONST(0x000000ff00000000)) >> 8) | \ (((U64)(x) & U64_CONST(0x0000ff0000000000)) >> 24) | \ (((U64)(x) & U64_CONST(0x00ff000000000000)) >> 40) | \ (((U64)(x) & U64_CONST(0xff00000000000000)) >> 56) )) # endif /*----------------------------------------------------------------------------*/ # if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678 /* little-endian */ /*----------------------------------------------------------------------------*/ # define my_htole16(x) (x) # define my_letoh16(x) (x) # define my_htole32(x) (x) # define my_letoh32(x) (x) # define my_htobe16(x) _swab_16_(x) # define my_betoh16(x) _swab_16_(x) # define my_htobe32(x) _swab_32_(x) # define my_betoh32(x) _swab_32_(x) # ifdef HAS_QUAD # define my_htole64(x) (x) # define my_letoh64(x) (x) # define my_htobe64(x) _swab_64_(x) # define my_betoh64(x) _swab_64_(x) # endif # define my_htoles(x) (x) # define my_letohs(x) (x) # define my_htolei(x) (x) # define my_letohi(x) (x) # define my_htolel(x) (x) # define my_letohl(x) (x) # if SHORTSIZE == 1 # define my_htobes(x) (x) # define my_betohs(x) (x) # elif SHORTSIZE == 2 # define my_htobes(x) _swab_16_(x) # define my_betohs(x) _swab_16_(x) # elif SHORTSIZE == 4 # define my_htobes(x) _swab_32_(x) # define my_betohs(x) _swab_32_(x) # elif SHORTSIZE == 8 # define my_htobes(x) _swab_64_(x) # define my_betohs(x) _swab_64_(x) # else # define PERL_NEED_MY_HTOBES # define PERL_NEED_MY_BETOHS # endif # if INTSIZE == 1 # define my_htobei(x) (x) # define my_betohi(x) (x) # elif INTSIZE == 2 # define my_htobei(x) _swab_16_(x) # define my_betohi(x) _swab_16_(x) # elif INTSIZE == 4 # define my_htobei(x) _swab_32_(x) # define my_betohi(x) _swab_32_(x) # elif INTSIZE == 8 # define my_htobei(x) _swab_64_(x) # define my_betohi(x) _swab_64_(x) # else # define PERL_NEED_MY_HTOBEI # define PERL_NEED_MY_BETOHI # endif # if LONGSIZE == 1 # define my_htobel(x) (x) # define my_betohl(x) (x) # elif LONGSIZE == 2 # define my_htobel(x) _swab_16_(x) # define my_betohl(x) _swab_16_(x) # elif LONGSIZE == 4 # define my_htobel(x) _swab_32_(x) # define my_betohl(x) _swab_32_(x) # elif LONGSIZE == 8 # define my_htobel(x) _swab_64_(x) # define my_betohl(x) _swab_64_(x) # else # define PERL_NEED_MY_HTOBEL # define PERL_NEED_MY_BETOHL # endif # define my_htolen(p,n) NOOP # define my_letohn(p,n) NOOP # define my_htoben(p,n) my_swabn(p,n) # define my_betohn(p,n) my_swabn(p,n) /*----------------------------------------------------------------------------*/ # elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321 /* big-endian */ /*----------------------------------------------------------------------------*/ # define my_htobe16(x) (x) # define my_betoh16(x) (x) # define my_htobe32(x) (x) # define my_betoh32(x) (x) # define my_htole16(x) _swab_16_(x) # define my_letoh16(x) _swab_16_(x) # define my_htole32(x) _swab_32_(x) # define my_letoh32(x) _swab_32_(x) # ifdef HAS_QUAD # define my_htobe64(x) (x) # define my_betoh64(x) (x) # define my_htole64(x) _swab_64_(x) # define my_letoh64(x) _swab_64_(x) # endif # define my_htobes(x) (x) # define my_betohs(x) (x) # define my_htobei(x) (x) # define my_betohi(x) (x) # define my_htobel(x) (x) # define my_betohl(x) (x) # if SHORTSIZE == 1 # define my_htoles(x) (x) # define my_letohs(x) (x) # elif SHORTSIZE == 2 # define my_htoles(x) _swab_16_(x) # define my_letohs(x) _swab_16_(x) # elif SHORTSIZE == 4 # define my_htoles(x) _swab_32_(x) # define my_letohs(x) _swab_32_(x) # elif SHORTSIZE == 8 # define my_htoles(x) _swab_64_(x) # define my_letohs(x) _swab_64_(x) # else # define PERL_NEED_MY_HTOLES # define PERL_NEED_MY_LETOHS # endif # if INTSIZE == 1 # define my_htolei(x) (x) # define my_letohi(x) (x) # elif INTSIZE == 2 # define my_htolei(x) _swab_16_(x) # define my_letohi(x) _swab_16_(x) # elif INTSIZE == 4 # define my_htolei(x) _swab_32_(x) # define my_letohi(x) _swab_32_(x) # elif INTSIZE == 8 # define my_htolei(x) _swab_64_(x) # define my_letohi(x) _swab_64_(x) # else # define PERL_NEED_MY_HTOLEI # define PERL_NEED_MY_LETOHI # endif # if LONGSIZE == 1 # define my_htolel(x) (x) # define my_letohl(x) (x) # elif LONGSIZE == 2 # define my_htolel(x) _swab_16_(x) # define my_letohl(x) _swab_16_(x) # elif LONGSIZE == 4 # define my_htolel(x) _swab_32_(x) # define my_letohl(x) _swab_32_(x) # elif LONGSIZE == 8 # define my_htolel(x) _swab_64_(x) # define my_letohl(x) _swab_64_(x) # else # define PERL_NEED_MY_HTOLEL # define PERL_NEED_MY_LETOHL # endif # define my_htolen(p,n) my_swabn(p,n) # define my_letohn(p,n) my_swabn(p,n) # define my_htoben(p,n) NOOP # define my_betohn(p,n) NOOP /*----------------------------------------------------------------------------*/ # else /* all other byte-orders */ /*----------------------------------------------------------------------------*/ # define PERL_NEED_MY_HTOLE16 # define PERL_NEED_MY_LETOH16 # define PERL_NEED_MY_HTOBE16 # define PERL_NEED_MY_BETOH16 # define PERL_NEED_MY_HTOLE32 # define PERL_NEED_MY_LETOH32 # define PERL_NEED_MY_HTOBE32 # define PERL_NEED_MY_BETOH32 # ifdef HAS_QUAD # define PERL_NEED_MY_HTOLE64 # define PERL_NEED_MY_LETOH64 # define PERL_NEED_MY_HTOBE64 # define PERL_NEED_MY_BETOH64 # endif # define PERL_NEED_MY_HTOLES # define PERL_NEED_MY_LETOHS # define PERL_NEED_MY_HTOBES # define PERL_NEED_MY_BETOHS # define PERL_NEED_MY_HTOLEI # define PERL_NEED_MY_LETOHI # define PERL_NEED_MY_HTOBEI # define PERL_NEED_MY_BETOHI # define PERL_NEED_MY_HTOLEL # define PERL_NEED_MY_LETOHL # define PERL_NEED_MY_HTOBEL # define PERL_NEED_MY_BETOHL /*----------------------------------------------------------------------------*/ # endif /* end of byte-order macros */ /*----------------------------------------------------------------------------*/ /* The old value was hard coded at 1008. (4096-16) seems to be a bit faster, at least on FreeBSD. YMMV, so experiment. */ #ifndef PERL_ARENA_SIZE #define PERL_ARENA_SIZE 4080 #endif #endif /* PERL_CORE */ /* We no longer default to creating a new SV for GvSV. Do this before embed. */ #ifndef PERL_CREATE_GVSV # ifndef PERL_DONT_CREATE_GVSV # define PERL_DONT_CREATE_GVSV # endif #endif #if !defined(HAS_WAITPID) && !defined(HAS_WAIT4) || defined(HAS_WAITPID_RUNTIME) #define PERL_USES_PL_PIDSTATUS #endif #if !defined(OS2) && !defined(WIN32) && !defined(DJGPP) && !defined(EPOC) && !defined(__SYMBIAN32__) && !defined(MACOS_TRADITIONAL) #define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION #endif /* Cannot include embed.h here on Win32 as win32.h has not yet been included and defines some config variables e.g. HAVE_INTERP_INTERN */ #if !defined(PERL_FOR_X2P) && !(defined(WIN32)||defined(VMS)) # include "embed.h" # ifndef PERL_MAD # undef op_getmad # define op_getmad(arg,pegop,slot) NOOP # endif #endif #define MEM_SIZE Size_t /* Round all values passed to malloc up, by default to a multiple of sizeof(size_t) */ #ifndef PERL_STRLEN_ROUNDUP_QUANTUM #define PERL_STRLEN_ROUNDUP_QUANTUM Size_t_size #endif #if defined(STANDARD_C) && defined(I_STDDEF) # include # define STRUCT_OFFSET(s,m) offsetof(s,m) #else # define STRUCT_OFFSET(s,m) (Size_t)(&(((s *)0)->m)) #endif #ifndef __SYMBIAN32__ # if defined(I_STRING) || defined(__cplusplus) # include # else # include # endif #endif /* This comes after so we don't try to change the standard * library prototypes; we'll use our own in proto.h instead. */ #ifdef MYMALLOC # ifdef PERL_POLLUTE_MALLOC # ifndef PERL_EXTMALLOC_DEF # define Perl_malloc malloc # define Perl_calloc calloc # define Perl_realloc realloc # define Perl_mfree free # endif # else # define EMBEDMYMALLOC /* for compatibility */ # endif # define safemalloc Perl_malloc # define safecalloc Perl_calloc # define saferealloc Perl_realloc # define safefree Perl_mfree # define CHECK_MALLOC_TOO_LATE_FOR_(code) STMT_START { \ if (!PL_tainting && MallocCfg_ptr[MallocCfg_cfg_env_read]) \ code; \ } STMT_END # define CHECK_MALLOC_TOO_LATE_FOR(ch) \ CHECK_MALLOC_TOO_LATE_FOR_(MALLOC_TOO_LATE_FOR(ch)) # define panic_write2(s) write(2, s, strlen(s)) # define CHECK_MALLOC_TAINT(newval) \ CHECK_MALLOC_TOO_LATE_FOR_( \ if (newval) { \ panic_write2("panic: tainting with $ENV{PERL_MALLOC_OPT}\n");\ exit(1); }) # define MALLOC_CHECK_TAINT(argc,argv,env) STMT_START { \ if (doing_taint(argc,argv,env)) { \ MallocCfg_ptr[MallocCfg_skip_cfg_env] = 1; \ }} STMT_END; #else /* MYMALLOC */ # define safemalloc safesysmalloc # define safecalloc safesyscalloc # define saferealloc safesysrealloc # define safefree safesysfree # define CHECK_MALLOC_TOO_LATE_FOR(ch) ((void)0) # define CHECK_MALLOC_TAINT(newval) ((void)0) # define MALLOC_CHECK_TAINT(argc,argv,env) #endif /* MYMALLOC */ #define TOO_LATE_FOR_(ch,what) Perl_croak(aTHX_ "\"-%c\" is on the #! line, it must also be used on the command line%s", (char)(ch), what) #define TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, "") #define MALLOC_TOO_LATE_FOR(ch) TOO_LATE_FOR_(ch, " with $ENV{PERL_MALLOC_OPT}") #define MALLOC_CHECK_TAINT2(argc,argv) MALLOC_CHECK_TAINT(argc,argv,NULL) #if !defined(HAS_STRCHR) && defined(HAS_INDEX) && !defined(strchr) #define strchr index #define strrchr rindex #endif #ifdef I_MEMORY # include #endif #ifdef HAS_MEMCPY # if !defined(STANDARD_C) && !defined(I_STRING) && !defined(I_MEMORY) # ifndef memcpy extern char * memcpy (char*, char*, int); # endif # endif #else # ifndef memcpy # ifdef HAS_BCOPY # define memcpy(d,s,l) bcopy(s,d,l) # else # define memcpy(d,s,l) my_bcopy(s,d,l) # endif # endif #endif /* HAS_MEMCPY */ #ifdef HAS_MEMSET # if !defined(STANDARD_C) && !defined(I_STRING) && !defined(I_MEMORY) # ifndef memset extern char *memset (char*, int, int); # endif # endif #else # undef memset # define memset(d,c,l) my_memset(d,c,l) #endif /* HAS_MEMSET */ #if !defined(HAS_MEMMOVE) && !defined(memmove) # if defined(HAS_BCOPY) && defined(HAS_SAFE_BCOPY) # define memmove(d,s,l) bcopy(s,d,l) # else # if defined(HAS_MEMCPY) && defined(HAS_SAFE_MEMCPY) # define memmove(d,s,l) memcpy(d,s,l) # else # define memmove(d,s,l) my_bcopy(s,d,l) # endif # endif #endif #if defined(mips) && defined(ultrix) && !defined(__STDC__) # undef HAS_MEMCMP #endif #if defined(HAS_MEMCMP) && defined(HAS_SANE_MEMCMP) # if !defined(STANDARD_C) && !defined(I_STRING) && !defined(I_MEMORY) # ifndef memcmp extern int memcmp (char*, char*, int); # endif # endif # ifdef BUGGY_MSC # pragma function(memcmp) # endif #else # ifndef memcmp # define memcmp my_memcmp # endif #endif /* HAS_MEMCMP && HAS_SANE_MEMCMP */ #ifndef memzero # ifdef HAS_MEMSET # define memzero(d,l) memset(d,0,l) # else # ifdef HAS_BZERO # define memzero(d,l) bzero(d,l) # else # define memzero(d,l) my_bzero(d,l) # endif # endif #endif #ifndef PERL_MICRO #ifndef memchr # ifndef HAS_MEMCHR # define memchr(s,c,n) ninstr((char*)(s), ((char*)(s)) + n, &(c), &(c) + 1) # endif #endif #endif #ifndef HAS_BCMP # ifndef bcmp # define bcmp(s1,s2,l) memcmp(s1,s2,l) # endif #endif /* !HAS_BCMP */ #ifdef I_NETINET_IN # include #endif #ifdef I_ARPA_INET # include #endif #if defined(SF_APPEND) && defined(USE_SFIO) && defined(I_SFIO) /* defines SF_APPEND and might define SF_APPEND * (the neo-BSD seem to do this). */ # undef SF_APPEND #endif #ifdef I_SYS_STAT # include #endif /* The stat macros for Amdahl UTS, Unisoft System V/88 (and derivatives like UTekV) are broken, sometimes giving false positives. Undefine them here and let the code below set them to proper values. The ghs macro stands for GreenHills Software C-1.8.5 which is the C compiler for sysV88 and the various derivatives. This header file bug is corrected in gcc-2.5.8 and later versions. --Kaveh Ghazi (ghazi@noc.rutgers.edu) 10/3/94. */ #if defined(uts) || (defined(m88k) && defined(ghs)) # undef S_ISDIR # undef S_ISCHR # undef S_ISBLK # undef S_ISREG # undef S_ISFIFO # undef S_ISLNK #endif #ifdef I_TIME # include #endif #ifdef I_SYS_TIME # ifdef I_SYS_TIME_KERNEL # define KERNEL # endif # include # ifdef I_SYS_TIME_KERNEL # undef KERNEL # endif #endif #if defined(HAS_TIMES) && defined(I_SYS_TIMES) # include #endif #if defined(HAS_STRERROR) && (!defined(HAS_MKDIR) || !defined(HAS_RMDIR)) # undef HAS_STRERROR #endif #include #if defined(WIN32) && defined(PERL_IMPLICIT_SYS) # define WIN32SCK_IS_STDSCK /* don't pull in custom wsock layer */ #endif /* In Tru64 use the 4.4BSD struct msghdr, not the 4.3 one. * This is important for using IPv6. * For OSF/1 3.2, however, defining _SOCKADDR_LEN would be * a bad idea since it breaks send() and recv(). */ #if defined(__osf__) && defined(__alpha) && !defined(_SOCKADDR_LEN) && !defined(DEC_OSF1_3_X) # define _SOCKADDR_LEN #endif #if defined(HAS_SOCKET) && !defined(VMS) && !defined(WIN32) /* VMS/WIN32 handle sockets via vmsish.h/win32.h */ # include # if defined(USE_SOCKS) && defined(I_SOCKS) # if !defined(INCLUDE_PROTOTYPES) # define INCLUDE_PROTOTYPES /* for */ # define PERL_SOCKS_NEED_PROTOTYPES # endif # include # ifdef PERL_SOCKS_NEED_PROTOTYPES /* keep cpp space clean */ # undef INCLUDE_PROTOTYPES # undef PERL_SOCKS_NEED_PROTOTYPES # endif # endif # ifdef I_NETDB # ifdef NETWARE # include # endif # include # endif # ifndef ENOTSOCK # ifdef I_NET_ERRNO # include # endif # endif #endif /* sockatmark() is so new (2001) that many places might have it hidden * behind some -D_BLAH_BLAH_SOURCE guard. The __THROW magic is required * e.g. in Gentoo, see http://bugs.gentoo.org/show_bug.cgi?id=12605 */ #if defined(HAS_SOCKATMARK) && !defined(HAS_SOCKATMARK_PROTO) # if defined(__THROW) && defined(__GLIBC__) int sockatmark(int) __THROW; # else int sockatmark(int); # endif #endif #if defined(__osf__) && defined(__cplusplus) && !defined(_XOPEN_SOURCE_EXTENDED) /* Tru64 "cxx" (C++), see hints/dec_osf.sh for why the _XOPEN_SOURCE_EXTENDED cannot be defined. */ EXTERN_C int fchdir(int); EXTERN_C int flock(int, int); EXTERN_C int fseeko(FILE *, off_t, int); EXTERN_C off_t ftello(FILE *); #endif #if defined(__SUNPRO_CC) /* SUNWspro CC (C++) */ EXTERN_C char *crypt(const char *, const char *); EXTERN_C char **environ; #endif #ifdef SETERRNO # undef SETERRNO /* SOCKS might have defined this */ #endif #ifdef VMS # define SETERRNO(errcode,vmserrcode) \ STMT_START { \ set_errno(errcode); \ set_vaxc_errno(vmserrcode); \ } STMT_END # define LIB_INVARG LIB$_INVARG # define RMS_DIR RMS$_DIR # define RMS_FAC RMS$_FAC # define RMS_FEX RMS$_FEX # define RMS_FNF RMS$_FNF # define RMS_IFI RMS$_IFI # define RMS_ISI RMS$_ISI # define RMS_PRV RMS$_PRV # define SS_ACCVIO SS$_ACCVIO # define SS_DEVOFFLINE SS$_DEVOFFLINE # define SS_IVCHAN SS$_IVCHAN # define SS_NORMAL SS$_NORMAL #else # define SETERRNO(errcode,vmserrcode) (errno = (errcode)) # define LIB_INVARG 0 # define RMS_DIR 0 # define RMS_FAC 0 # define RMS_FEX 0 # define RMS_FNF 0 # define RMS_IFI 0 # define RMS_ISI 0 # define RMS_PRV 0 # define SS_ACCVIO 0 # define SS_DEVOFFLINE 0 # define SS_IVCHAN 0 # define SS_NORMAL 0 #endif #define ERRSV GvSV(PL_errgv) /* FIXME? Change the assignments to PL_defgv to instantiate GvSV? */ #define DEFSV GvSVn(PL_defgv) #define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) #define ERRHV GvHV(PL_errgv) /* XXX unused, here for compatibility */ #ifndef errno extern int errno; /* ANSI allows errno to be an lvalue expr. * For example in multithreaded environments * something like this might happen: * extern int *_errno(void); * #define errno (*_errno()) */ #endif #ifdef HAS_STRERROR # ifdef VMS char *strerror (int,...); # else #ifndef DONT_DECLARE_STD char *strerror (int); #endif # endif # ifndef Strerror # define Strerror strerror # endif #else # ifdef HAS_SYS_ERRLIST extern int sys_nerr; extern char *sys_errlist[]; # ifndef Strerror # define Strerror(e) \ ((e) < 0 || (e) >= sys_nerr ? "(unknown)" : sys_errlist[e]) # endif # endif #endif #ifdef I_SYS_IOCTL # ifndef _IOCTL_ # include # endif #endif #if defined(mc300) || defined(mc500) || defined(mc700) || defined(mc6000) # ifdef HAS_SOCKETPAIR # undef HAS_SOCKETPAIR # endif # ifdef I_NDBM # undef I_NDBM # endif #endif #ifndef HAS_SOCKETPAIR # ifdef HAS_SOCKET # define socketpair Perl_my_socketpair # endif #endif #if INTSIZE == 2 # define htoni htons # define ntohi ntohs #else # define htoni htonl # define ntohi ntohl #endif /* Configure already sets Direntry_t */ #if defined(I_DIRENT) # include /* NeXT needs dirent + sys/dir.h */ # if defined(I_SYS_DIR) && (defined(NeXT) || defined(__NeXT__)) # include # endif #else # ifdef I_SYS_NDIR # include # else # ifdef I_SYS_DIR # ifdef hp9000s500 # include /* may be wrong in the future */ # else # include # endif # endif # endif #endif #ifdef PERL_MICRO # ifndef DIR # define DIR void # endif #endif #ifdef FPUTS_BOTCH /* work around botch in SunOS 4.0.1 and 4.0.2 */ # ifndef fputs # define fputs(sv,fp) fprintf(fp,"%s",sv) # endif #endif /* * The following gobbledygook brought to you on behalf of __STDC__. * (I could just use #ifndef __STDC__, but this is more bulletproof * in the face of half-implementations.) */ #if defined(I_SYSMODE) && !defined(PERL_MICRO) #include #endif #ifndef S_IFMT # ifdef _S_IFMT # define S_IFMT _S_IFMT # else # define S_IFMT 0170000 # endif #endif #ifndef S_ISDIR # define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR) #endif #ifndef S_ISCHR # define S_ISCHR(m) ((m & S_IFMT) == S_IFCHR) #endif #ifndef S_ISBLK # ifdef S_IFBLK # define S_ISBLK(m) ((m & S_IFMT) == S_IFBLK) # else # define S_ISBLK(m) (0) # endif #endif #ifndef S_ISREG # define S_ISREG(m) ((m & S_IFMT) == S_IFREG) #endif #ifndef S_ISFIFO # ifdef S_IFIFO # define S_ISFIFO(m) ((m & S_IFMT) == S_IFIFO) # else # define S_ISFIFO(m) (0) # endif #endif #ifndef S_ISLNK # ifdef _S_ISLNK # define S_ISLNK(m) _S_ISLNK(m) # else # ifdef _S_IFLNK # define S_ISLNK(m) ((m & S_IFMT) == _S_IFLNK) # else # ifdef S_IFLNK # define S_ISLNK(m) ((m & S_IFMT) == S_IFLNK) # else # define S_ISLNK(m) (0) # endif # endif # endif #endif #ifndef S_ISSOCK # ifdef _S_ISSOCK # define S_ISSOCK(m) _S_ISSOCK(m) # else # ifdef _S_IFSOCK # define S_ISSOCK(m) ((m & S_IFMT) == _S_IFSOCK) # else # ifdef S_IFSOCK # define S_ISSOCK(m) ((m & S_IFMT) == S_IFSOCK) # else # define S_ISSOCK(m) (0) # endif # endif # endif #endif #ifndef S_IRUSR # ifdef S_IREAD # define S_IRUSR S_IREAD # define S_IWUSR S_IWRITE # define S_IXUSR S_IEXEC # else # define S_IRUSR 0400 # define S_IWUSR 0200 # define S_IXUSR 0100 # endif #endif #ifndef S_IRGRP # ifdef S_IRUSR # define S_IRGRP (S_IRUSR>>3) # define S_IWGRP (S_IWUSR>>3) # define S_IXGRP (S_IXUSR>>3) # else # define S_IRGRP 0040 # define S_IWGRP 0020 # define S_IXGRP 0010 # endif #endif #ifndef S_IROTH # ifdef S_IRUSR # define S_IROTH (S_IRUSR>>6) # define S_IWOTH (S_IWUSR>>6) # define S_IXOTH (S_IXUSR>>6) # else # define S_IROTH 0040 # define S_IWOTH 0020 # define S_IXOTH 0010 # endif #endif #ifndef S_ISUID # define S_ISUID 04000 #endif #ifndef S_ISGID # define S_ISGID 02000 #endif #ifndef S_IRWXU # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR) #endif #ifndef S_IRWXG # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP) #endif #ifndef S_IRWXO # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH) #endif /* BeOS 5.0 seems to define S_IREAD and S_IWRITE in * which would get included through , but that is 3000 * lines in the future. --jhi */ #if !defined(S_IREAD) && !defined(__BEOS__) # define S_IREAD S_IRUSR #endif #if !defined(S_IWRITE) && !defined(__BEOS__) # define S_IWRITE S_IWUSR #endif #ifndef S_IEXEC # define S_IEXEC S_IXUSR #endif #ifdef ff_next # undef ff_next #endif #if defined(cray) || defined(gould) || defined(i860) || defined(pyr) # define SLOPPYDIVIDE #endif #ifdef UV #undef UV #endif #ifdef SPRINTF_E_BUG # define sprintf UTS_sprintf_wrap #endif /* For the times when you want the return value of sprintf, and you want it to be the length. Can't have a thread variable passed in, because C89 has no varargs macros. */ #ifdef SPRINTF_RETURNS_STRLEN # define my_sprintf sprintf #else # define my_sprintf Perl_my_sprintf #endif /* * If we have v?snprintf() and the C99 variadic macros, we can just * use just the v?snprintf(). It is nice to try to trap the buffer * overflow, however, so if we are DEBUGGING, and we cannot use the * gcc brace groups, then use the function wrappers which try to trap * the overflow. If we can use the gcc brace groups, we can try that * even with the version that uses the C99 variadic macros. */ /* Note that we do not check against snprintf()/vsnprintf() returning * negative values because that is non-standard behaviour and we use * snprintf/vsnprintf only iff HAS_VSNPRINTF has been defined, and * that should be true only if the snprintf()/vsnprintf() are true * to the standard. */ #if defined(HAS_SNPRINTF) && defined(HAS_C99_VARIADIC_MACROS) && !(defined(DEBUGGING) && !defined(PERL_USE_GCC_BRACE_GROUPS)) && !defined(PERL_GCC_PEDANTIC) # ifdef PERL_USE_GCC_BRACE_GROUPS # define my_snprintf(buffer, len, ...) ({ int __len__ = snprintf(buffer, len, __VA_ARGS__); if ((len) > 0 && (Size_t)__len__ >= (len)) Perl_croak_nocontext("panic: snprintf buffer overflow"); __len__; }) # define PERL_MY_SNPRINTF_GUARDED # else # define my_snprintf(buffer, len, ...) snprintf(buffer, len, __VA_ARGS__) # endif #else # define my_snprintf Perl_my_snprintf # define PERL_MY_SNPRINTF_GUARDED #endif #if defined(HAS_VSNPRINTF) && defined(HAS_C99_VARIADIC_MACROS) && !(defined(DEBUGGING) && !defined(PERL_USE_GCC_BRACE_GROUPS)) && !defined(PERL_GCC_PEDANTIC) # ifdef PERL_USE_GCC_BRACE_GROUPS # define my_vsnprintf(buffer, len, ...) ({ int __len__ = vsnprintf(buffer, len, __VA_ARGS__); if ((len) > 0 && (Size_t)__len__ >= (len)) Perl_croak_nocontext("panic: vsnprintf buffer overflow"); __len__; }) # define PERL_MY_VSNPRINTF_GUARDED # else # define my_vsnprintf(buffer, len, ...) vsnprintf(buffer, len, __VA_ARGS__) # endif #else # define my_vsnprintf Perl_my_vsnprintf # define PERL_MY_VSNPRINTF_GUARDED #endif #ifdef HAS_STRLCAT # define my_strlcat strlcat #else # define my_strlcat Perl_my_strlcat #endif #ifdef HAS_STRLCPY # define my_strlcpy strlcpy #else # define my_strlcpy Perl_my_strlcpy #endif /* Configure gets this right but the UTS compiler gets it wrong. -- Hal Morris */ #ifdef UTS # undef UVTYPE # define UVTYPE unsigned #endif /* The IV type is supposed to be long enough to hold any integral value or a pointer. --Andy Dougherty August 1996 */ typedef IVTYPE IV; typedef UVTYPE UV; #if defined(USE_64_BIT_INT) && defined(HAS_QUAD) # if QUADKIND == QUAD_IS_INT64_T && defined(INT64_MAX) # define IV_MAX INT64_MAX # define IV_MIN INT64_MIN # define UV_MAX UINT64_MAX # ifndef UINT64_MIN # define UINT64_MIN 0 # endif # define UV_MIN UINT64_MIN # else # define IV_MAX PERL_QUAD_MAX # define IV_MIN PERL_QUAD_MIN # define UV_MAX PERL_UQUAD_MAX # define UV_MIN PERL_UQUAD_MIN # endif # define IV_IS_QUAD # define UV_IS_QUAD #else # if defined(INT32_MAX) && IVSIZE == 4 # define IV_MAX INT32_MAX # define IV_MIN INT32_MIN # ifndef UINT32_MAX_BROKEN /* e.g. HP-UX with gcc messes this up */ # define UV_MAX UINT32_MAX # else # define UV_MAX 4294967295U # endif # ifndef UINT32_MIN # define UINT32_MIN 0 # endif # define UV_MIN UINT32_MIN # else # define IV_MAX PERL_LONG_MAX # define IV_MIN PERL_LONG_MIN # define UV_MAX PERL_ULONG_MAX # define UV_MIN PERL_ULONG_MIN # endif # if IVSIZE == 8 # define IV_IS_QUAD # define UV_IS_QUAD # ifndef HAS_QUAD # define HAS_QUAD # endif # else # undef IV_IS_QUAD # undef UV_IS_QUAD # undef HAS_QUAD # endif #endif #ifndef HAS_QUAD # undef PERL_NEED_MY_HTOLE64 # undef PERL_NEED_MY_LETOH64 # undef PERL_NEED_MY_HTOBE64 # undef PERL_NEED_MY_BETOH64 #endif #if defined(uts) || defined(UTS) # undef UV_MAX # define UV_MAX (4294967295u) #endif #define IV_DIG (BIT_DIGITS(IVSIZE * 8)) #define UV_DIG (BIT_DIGITS(UVSIZE * 8)) #ifndef NO_PERL_PRESERVE_IVUV #define PERL_PRESERVE_IVUV /* We like our integers to stay integers. */ #endif /* * The macros INT2PTR and NUM2PTR are (despite their names) * bi-directional: they will convert int/float to or from pointers. * However the conversion to int/float are named explicitly: * PTR2IV, PTR2UV, PTR2NV. * * For int conversions we do not need two casts if pointers are * the same size as IV and UV. Otherwise we need an explicit * cast (PTRV) to avoid compiler warnings. */ #if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) # define PTRV UV # define INT2PTR(any,d) (any)(d) #else # if PTRSIZE == LONGSIZE # define PTRV unsigned long # define PTR2ul(p) (unsigned long)(p) # else # define PTRV unsigned # endif #endif #ifndef INT2PTR # define INT2PTR(any,d) (any)(PTRV)(d) #endif #ifndef PTR2ul # define PTR2ul(p) INT2PTR(unsigned long,p) #endif #define NUM2PTR(any,d) (any)(PTRV)(d) #define PTR2IV(p) INT2PTR(IV,p) #define PTR2UV(p) INT2PTR(UV,p) #define PTR2NV(p) NUM2PTR(NV,p) #define PTR2nat(p) (PTRV)(p) /* pointer to integer of PTRSIZE */ /* According to strict ANSI C89 one cannot freely cast between * data pointers and function (code) pointers. There are at least * two ways around this. One (used below) is to do two casts, * first the other pointer to an (unsigned) integer, and then * the integer to the other pointer. The other way would be * to use unions to "overlay" the pointers. For an example of * the latter technique, see union dirpu in struct xpvio in sv.h. * The only feasible use is probably temporarily storing * function pointers in a data pointer (such as a void pointer). */ #define DPTR2FPTR(t,p) ((t)PTR2nat(p)) /* data pointer to function pointer */ #define FPTR2DPTR(t,p) ((t)PTR2nat(p)) /* function pointer to data pointer */ #ifdef USE_LONG_DOUBLE # if defined(HAS_LONG_DOUBLE) && LONG_DOUBLESIZE == DOUBLESIZE # define LONG_DOUBLE_EQUALS_DOUBLE # endif # if !(defined(HAS_LONG_DOUBLE) && (LONG_DOUBLESIZE > DOUBLESIZE)) # undef USE_LONG_DOUBLE /* Ouch! */ # endif #endif #ifdef OVR_DBL_DIG /* Use an overridden DBL_DIG */ # ifdef DBL_DIG # undef DBL_DIG # endif # define DBL_DIG OVR_DBL_DIG #else /* The following is all to get DBL_DIG, in order to pick a nice default value for printing floating point numbers in Gconvert (see config.h). (It also has other uses, such as figuring out if a given precision of printing can be done with a double instead of a long double - Allen). */ #ifdef I_LIMITS #include #endif #ifdef I_FLOAT #include #endif #ifndef HAS_DBL_DIG #define DBL_DIG 15 /* A guess that works lots of places */ #endif #endif #ifdef I_FLOAT #include #endif #ifndef HAS_DBL_DIG #define DBL_DIG 15 /* A guess that works lots of places */ #endif #ifdef OVR_LDBL_DIG /* Use an overridden LDBL_DIG */ # ifdef LDBL_DIG # undef LDBL_DIG # endif # define LDBL_DIG OVR_LDBL_DIG #else /* The following is all to get LDBL_DIG, in order to pick a nice default value for printing floating point numbers in Gconvert. (see config.h) */ # ifdef I_LIMITS # include # endif # ifdef I_FLOAT # include # endif # ifndef HAS_LDBL_DIG # if LONG_DOUBLESIZE == 10 # define LDBL_DIG 18 /* assume IEEE */ # else # if LONG_DOUBLESIZE == 12 # define LDBL_DIG 18 /* gcc? */ # else # if LONG_DOUBLESIZE == 16 # define LDBL_DIG 33 /* assume IEEE */ # else # if LONG_DOUBLESIZE == DOUBLESIZE # define LDBL_DIG DBL_DIG /* bummer */ # endif # endif # endif # endif # endif #endif /* * This is for making sure we have a good DBL_MAX value, if possible, * either for usage as NV_MAX or for usage in figuring out if we can * fit a given long double into a double, if bug-fixing makes it * necessary to do so. - Allen */ #ifdef I_LIMITS # include #endif #ifdef I_VALUES # if !(defined(DBL_MIN) && defined(DBL_MAX) && defined(I_LIMITS)) # include # if defined(MAXDOUBLE) && !defined(DBL_MAX) # define DBL_MAX MAXDOUBLE # endif # if defined(MINDOUBLE) && !defined(DBL_MIN) # define DBL_MIN MINDOUBLE # endif # endif #endif /* defined(I_VALUES) */ typedef NVTYPE NV; #ifdef I_IEEEFP # include #endif #ifdef USE_LONG_DOUBLE # ifdef I_SUNMATH # include # endif # define NV_DIG LDBL_DIG # ifdef LDBL_MANT_DIG # define NV_MANT_DIG LDBL_MANT_DIG # endif # ifdef LDBL_MIN # define NV_MIN LDBL_MIN # endif # ifdef LDBL_MAX # define NV_MAX LDBL_MAX # endif # ifdef LDBL_MIN_10_EXP # define NV_MIN_10_EXP LDBL_MIN_10_EXP # endif # ifdef LDBL_MAX_10_EXP # define NV_MAX_10_EXP LDBL_MAX_10_EXP # endif # ifdef LDBL_EPSILON # define NV_EPSILON LDBL_EPSILON # endif # ifdef LDBL_MAX # define NV_MAX LDBL_MAX /* Having LDBL_MAX doesn't necessarily mean that we have LDBL_MIN... -Allen */ # else # ifdef HUGE_VALL # define NV_MAX HUGE_VALL # else # ifdef HUGE_VAL # define NV_MAX ((NV)HUGE_VAL) # endif # endif # endif # ifdef HAS_SQRTL # define Perl_cos cosl # define Perl_sin sinl # define Perl_sqrt sqrtl # define Perl_exp expl # define Perl_log logl # define Perl_atan2 atan2l # define Perl_pow powl # define Perl_floor floorl # define Perl_ceil ceill # define Perl_fmod fmodl # endif /* e.g. libsunmath doesn't have modfl and frexpl as of mid-March 2000 */ # ifdef HAS_MODFL # define Perl_modf(x,y) modfl(x,y) /* eg glibc 2.2 series seems to provide modfl on ppc and arm, but has no prototype in */ # ifndef HAS_MODFL_PROTO EXTERN_C long double modfl(long double, long double *); # endif # else # if defined(HAS_AINTL) && defined(HAS_COPYSIGNL) extern long double Perl_my_modfl(long double x, long double *ip); # define Perl_modf(x,y) Perl_my_modfl(x,y) # endif # endif # ifdef HAS_FREXPL # define Perl_frexp(x,y) frexpl(x,y) # else # if defined(HAS_ILOGBL) && defined(HAS_SCALBNL) extern long double Perl_my_frexpl(long double x, int *e); # define Perl_frexp(x,y) Perl_my_frexpl(x,y) # endif # endif # ifndef Perl_isnan # ifdef HAS_ISNANL # define Perl_isnan(x) isnanl(x) # endif # endif # ifndef Perl_isinf # ifdef HAS_FINITEL # define Perl_isinf(x) !(finitel(x)||Perl_isnan(x)) # endif # endif #else # define NV_DIG DBL_DIG # ifdef DBL_MANT_DIG # define NV_MANT_DIG DBL_MANT_DIG # endif # ifdef DBL_MIN # define NV_MIN DBL_MIN # endif # ifdef DBL_MAX # define NV_MAX DBL_MAX # endif # ifdef DBL_MIN_10_EXP # define NV_MIN_10_EXP DBL_MIN_10_EXP # endif # ifdef DBL_MAX_10_EXP # define NV_MAX_10_EXP DBL_MAX_10_EXP # endif # ifdef DBL_EPSILON # define NV_EPSILON DBL_EPSILON # endif # ifdef DBL_MAX /* XXX Does DBL_MAX imply having DBL_MIN? */ # define NV_MAX DBL_MAX # define NV_MIN DBL_MIN # else # ifdef HUGE_VAL # define NV_MAX HUGE_VAL # endif # endif # define Perl_cos cos # define Perl_sin sin # define Perl_sqrt sqrt # define Perl_exp exp # define Perl_log log # define Perl_atan2 atan2 # define Perl_pow pow # define Perl_floor floor # define Perl_ceil ceil # define Perl_fmod fmod # define Perl_modf(x,y) modf(x,y) # define Perl_frexp(x,y) frexp(x,y) #endif /* rumor has it that Win32 has _fpclass() */ /* SGI has fpclassl... but not with the same result values, * and it's via a typedef (not via #define), so will need to redo Configure * to use. Not worth the trouble, IMO, at least until the below is used * more places. Also has fp_class_l, BTW, via fp_class.h. Feel free to check * with me for the SGI manpages, SGI testing, etcetera, if you want to * try getting this to work with IRIX. - Allen */ #if !defined(Perl_fp_class) && (defined(HAS_FPCLASS)||defined(HAS_FPCLASSL)) # ifdef I_IEEFP # include # endif # ifdef I_FP # include # endif # if defined(USE_LONG_DOUBLE) && defined(HAS_FPCLASSL) # define Perl_fp_class() fpclassl(x) # else # define Perl_fp_class() fpclass(x) # endif # define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_CLASS_SNAN) # define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_CLASS_QNAN) # define Perl_fp_class_nan(x) (Perl_fp_class(x)==FP_CLASS_SNAN||Perl_fp_class(x)==FP_CLASS_QNAN) # define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_CLASS_NINF) # define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_CLASS_PINF) # define Perl_fp_class_inf(x) (Perl_fp_class(x)==FP_CLASS_NINF||Perl_fp_class(x)==FP_CLASS_PINF) # define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_CLASS_NNORM) # define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_CLASS_PNORM) # define Perl_fp_class_norm(x) (Perl_fp_class(x)==FP_CLASS_NNORM||Perl_fp_class(x)==FP_CLASS_PNORM) # define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_CLASS_NDENORM) # define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_CLASS_PDENORM) # define Perl_fp_class_denorm(x) (Perl_fp_class(x)==FP_CLASS_NDENORM||Perl_fp_class(x)==FP_CLASS_PDENORM) # define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_CLASS_NZERO) # define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_CLASS_PZERO) # define Perl_fp_class_zero(x) (Perl_fp_class(x)==FP_CLASS_NZERO||Perl_fp_class(x)==FP_CLASS_PZERO) #endif #if !defined(Perl_fp_class) && defined(HAS_FP_CLASS) && !defined(PERL_MICRO) # include # if !defined(FP_SNAN) && defined(I_FP_CLASS) # include # endif # define Perl_fp_class(x) fp_class(x) # define Perl_fp_class_snan(x) (fp_class(x)==FP_SNAN) # define Perl_fp_class_qnan(x) (fp_class(x)==FP_QNAN) # define Perl_fp_class_nan(x) (fp_class(x)==FP_SNAN||fp_class(x)==FP_QNAN) # define Perl_fp_class_ninf(x) (fp_class(x)==FP_NEG_INF) # define Perl_fp_class_pinf(x) (fp_class(x)==FP_POS_INF) # define Perl_fp_class_inf(x) (fp_class(x)==FP_NEG_INF||fp_class(x)==FP_POS_INF) # define Perl_fp_class_nnorm(x) (fp_class(x)==FP_NEG_NORM) # define Perl_fp_class_pnorm(x) (fp_class(x)==FP_POS_NORM) # define Perl_fp_class_norm(x) (fp_class(x)==FP_NEG_NORM||fp_class(x)==FP_POS_NORM) # define Perl_fp_class_ndenorm(x) (fp_class(x)==FP_NEG_DENORM) # define Perl_fp_class_pdenorm(x) (fp_class(x)==FP_POS_DENORM) # define Perl_fp_class_denorm(x) (fp_class(x)==FP_NEG_DENORM||fp_class(x)==FP_POS_DENORM) # define Perl_fp_class_nzero(x) (fp_class(x)==FP_NEG_ZERO) # define Perl_fp_class_pzero(x) (fp_class(x)==FP_POS_ZERO) # define Perl_fp_class_zero(x) (fp_class(x)==FP_NEG_ZERO||fp_class(x)==FP_POS_ZERO) #endif #if !defined(Perl_fp_class) && defined(HAS_FPCLASSIFY) # include # define Perl_fp_class(x) fpclassify(x) # define Perl_fp_class_nan(x) (fp_classify(x)==FP_SNAN||fp_classify(x)==FP_QNAN) # define Perl_fp_class_inf(x) (fp_classify(x)==FP_INFINITE) # define Perl_fp_class_norm(x) (fp_classify(x)==FP_NORMAL) # define Perl_fp_class_denorm(x) (fp_classify(x)==FP_SUBNORMAL) # define Perl_fp_class_zero(x) (fp_classify(x)==FP_ZERO) #endif #if !defined(Perl_fp_class) && defined(HAS_CLASS) # include # ifndef _cplusplus # define Perl_fp_class(x) class(x) # else # define Perl_fp_class(x) _class(x) # endif # define Perl_fp_class_snan(x) (Perl_fp_class(x)==FP_NANS) # define Perl_fp_class_qnan(x) (Perl_fp_class(x)==FP_NANQ) # define Perl_fp_class_nan(x) (Perl_fp_class(x)==FP_SNAN||Perl_fp_class(x)==FP_QNAN) # define Perl_fp_class_ninf(x) (Perl_fp_class(x)==FP_MINUS_INF) # define Perl_fp_class_pinf(x) (Perl_fp_class(x)==FP_PLUS_INF) # define Perl_fp_class_inf(x) (Perl_fp_class(x)==FP_MINUS_INF||Perl_fp_class(x)==FP_PLUS_INF) # define Perl_fp_class_nnorm(x) (Perl_fp_class(x)==FP_MINUS_NORM) # define Perl_fp_class_pnorm(x) (Perl_fp_class(x)==FP_PLUS_NORM) # define Perl_fp_class_norm(x) (Perl_fp_class(x)==FP_MINUS_NORM||Perl_fp_class(x)==FP_PLUS_NORM) # define Perl_fp_class_ndenorm(x) (Perl_fp_class(x)==FP_MINUS_DENORM) # define Perl_fp_class_pdenorm(x) (Perl_fp_class(x)==FP_PLUS_DENORM) # define Perl_fp_class_denorm(x) (Perl_fp_class(x)==FP_MINUS_DENORM||Perl_fp_class(x)==FP_PLUS_DENORM) # define Perl_fp_class_nzero(x) (Perl_fp_class(x)==FP_MINUS_ZERO) # define Perl_fp_class_pzero(x) (Perl_fp_class(x)==FP_PLUS_ZERO) # define Perl_fp_class_zero(x) (Perl_fp_class(x)==FP_MINUS_ZERO||Perl_fp_class(x)==FP_PLUS_ZERO) #endif /* rumor has it that Win32 has _isnan() */ #ifndef Perl_isnan # ifdef HAS_ISNAN # define Perl_isnan(x) isnan((NV)x) # else # ifdef Perl_fp_class_nan # define Perl_isnan(x) Perl_fp_class_nan(x) # else # ifdef HAS_UNORDERED # define Perl_isnan(x) unordered((x), 0.0) # else # define Perl_isnan(x) ((x)!=(x)) # endif # endif # endif #endif #ifdef UNDER_CE int isnan(double d); #endif #ifndef Perl_isinf # ifdef HAS_ISINF # define Perl_isinf(x) isinf((NV)x) # else # ifdef Perl_fp_class_inf # define Perl_isinf(x) Perl_fp_class_inf(x) # else # define Perl_isinf(x) ((x)==NV_INF) # endif # endif #endif #ifndef Perl_isfinite # ifdef HAS_FINITE # define Perl_isfinite(x) finite((NV)x) # else # ifdef HAS_ISFINITE # define Perl_isfinite(x) isfinite(x) # else # ifdef Perl_fp_class_finite # define Perl_isfinite(x) Perl_fp_class_finite(x) # else # define Perl_isfinite(x) !(Perl_is_inf(x)||Perl_is_nan(x)) # endif # endif # endif #endif /* The default is to use Perl's own atof() implementation (in numeric.c). * Usually that is the one to use but for some platforms (e.g. UNICOS) * it is however best to use the native implementation of atof. * You can experiment with using your native one by -DUSE_PERL_ATOF=0. * Some good tests to try out with either setting are t/base/num.t, * t/op/numconvert.t, and t/op/pack.t. Note that if using long doubles * you may need to be using a different function than atof! */ #ifndef USE_PERL_ATOF # ifndef _UNICOS # define USE_PERL_ATOF # endif #else # if USE_PERL_ATOF == 0 # undef USE_PERL_ATOF # endif #endif #ifdef USE_PERL_ATOF # define Perl_atof(s) Perl_my_atof(s) # define Perl_atof2(s, n) Perl_my_atof2(aTHX_ (s), &(n)) #else # define Perl_atof(s) (NV)atof(s) # define Perl_atof2(s, n) ((n) = atof(s)) #endif /* Previously these definitions used hardcoded figures. * It is hoped these formula are more portable, although * no data one way or another is presently known to me. * The "PERL_" names are used because these calculated constants * do not meet the ANSI requirements for LONG_MAX, etc., which * need to be constants acceptable to #if - kja * define PERL_LONG_MAX 2147483647L * define PERL_LONG_MIN (-LONG_MAX - 1) * define PERL ULONG_MAX 4294967295L */ #ifdef I_LIMITS /* Needed for cast_xxx() functions below. */ # include #endif /* Included values.h above if necessary; still including limits.h down here, * despite doing above, because math.h might have overriden... XXX - Allen */ /* * Try to figure out max and min values for the integral types. THE CORRECT * SOLUTION TO THIS MESS: ADAPT enquire.c FROM GCC INTO CONFIGURE. The * following hacks are used if neither limits.h or values.h provide them: * U_MAX: for types >= int: ~(unsigned TYPE)0 * for types < int: (unsigned TYPE)~(unsigned)0 * The argument to ~ must be unsigned so that later signed->unsigned * conversion can't modify the value's bit pattern (e.g. -0 -> +0), * and it must not be smaller than int because ~ does integral promotion. * _MAX: () (U_MAX >> 1) * _MIN: -_MAX - . * The latter is a hack which happens to work on some machines but * does *not* catch any random system, or things like integer types * with NaN if that is possible. * * All of the types are explicitly cast to prevent accidental loss of * numeric range, and in the hope that they will be less likely to confuse * over-eager optimizers. * */ #define PERL_UCHAR_MIN ((unsigned char)0) #ifdef UCHAR_MAX # define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) #else # ifdef MAXUCHAR # define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) # else # define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) # endif #endif /* * CHAR_MIN and CHAR_MAX are not included here, as the (char) type may be * ambiguous. It may be equivalent to (signed char) or (unsigned char) * depending on local options. Until Configure detects this (or at least * detects whether the "signed" keyword is available) the CHAR ranges * will not be included. UCHAR functions normally. * - kja */ #define PERL_USHORT_MIN ((unsigned short)0) #ifdef USHORT_MAX # define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) #else # ifdef MAXUSHORT # define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) # else # ifdef USHRT_MAX # define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) # else # define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) # endif # endif #endif #ifdef SHORT_MAX # define PERL_SHORT_MAX ((short)SHORT_MAX) #else # ifdef MAXSHORT /* Often used in */ # define PERL_SHORT_MAX ((short)MAXSHORT) # else # ifdef SHRT_MAX # define PERL_SHORT_MAX ((short)SHRT_MAX) # else # define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) # endif # endif #endif #ifdef SHORT_MIN # define PERL_SHORT_MIN ((short)SHORT_MIN) #else # ifdef MINSHORT # define PERL_SHORT_MIN ((short)MINSHORT) # else # ifdef SHRT_MIN # define PERL_SHORT_MIN ((short)SHRT_MIN) # else # define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) # endif # endif #endif #ifdef UINT_MAX # define PERL_UINT_MAX ((unsigned int)UINT_MAX) #else # ifdef MAXUINT # define PERL_UINT_MAX ((unsigned int)MAXUINT) # else # define PERL_UINT_MAX (~(unsigned int)0) # endif #endif #define PERL_UINT_MIN ((unsigned int)0) #ifdef INT_MAX # define PERL_INT_MAX ((int)INT_MAX) #else # ifdef MAXINT /* Often used in */ # define PERL_INT_MAX ((int)MAXINT) # else # define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) # endif #endif #ifdef INT_MIN # define PERL_INT_MIN ((int)INT_MIN) #else # ifdef MININT # define PERL_INT_MIN ((int)MININT) # else # define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) # endif #endif #ifdef ULONG_MAX # define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) #else # ifdef MAXULONG # define PERL_ULONG_MAX ((unsigned long)MAXULONG) # else # define PERL_ULONG_MAX (~(unsigned long)0) # endif #endif #define PERL_ULONG_MIN ((unsigned long)0L) #ifdef LONG_MAX # define PERL_LONG_MAX ((long)LONG_MAX) #else # ifdef MAXLONG /* Often used in */ # define PERL_LONG_MAX ((long)MAXLONG) # else # define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) # endif #endif #ifdef LONG_MIN # define PERL_LONG_MIN ((long)LONG_MIN) #else # ifdef MINLONG # define PERL_LONG_MIN ((long)MINLONG) # else # define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) # endif #endif #ifdef UV_IS_QUAD # define PERL_UQUAD_MAX (~(UV)0) # define PERL_UQUAD_MIN ((UV)0) # define PERL_QUAD_MAX ((IV) (PERL_UQUAD_MAX >> 1)) # define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) #endif #ifdef MYMALLOC # include "malloc_ctl.h" #endif struct RExC_state_t; struct _reg_trie_data; typedef MEM_SIZE STRLEN; #ifdef PERL_MAD typedef struct token TOKEN; typedef struct madprop MADPROP; typedef struct nexttoken NEXTTOKE; #endif typedef struct op OP; typedef struct cop COP; typedef struct unop UNOP; typedef struct binop BINOP; typedef struct listop LISTOP; typedef struct logop LOGOP; typedef struct pmop PMOP; typedef struct svop SVOP; typedef struct padop PADOP; typedef struct pvop PVOP; typedef struct loop LOOP; typedef struct interpreter PerlInterpreter; /* Amdahl's has struct sv */ /* SGI's has struct sv */ #if defined(UTS) || defined(__sgi) # define STRUCT_SV perl_sv #else # define STRUCT_SV sv #endif typedef struct STRUCT_SV SV; typedef struct av AV; typedef struct hv HV; typedef struct cv CV; typedef struct regexp REGEXP; typedef struct gp GP; typedef struct gv GV; typedef struct io IO; typedef struct context PERL_CONTEXT; typedef struct block BLOCK; typedef struct magic MAGIC; typedef struct xpv XPV; typedef struct xpviv XPVIV; typedef struct xpvuv XPVUV; typedef struct xpvnv XPVNV; typedef struct xpvmg XPVMG; typedef struct xpvlv XPVLV; typedef struct xpvav XPVAV; typedef struct xpvhv XPVHV; typedef struct xpvgv XPVGV; typedef struct xpvcv XPVCV; typedef struct xpvbm XPVBM; typedef struct xpvfm XPVFM; typedef struct xpvio XPVIO; typedef struct mgvtbl MGVTBL; typedef union any ANY; typedef struct ptr_tbl_ent PTR_TBL_ENT_t; typedef struct ptr_tbl PTR_TBL_t; typedef struct clone_params CLONE_PARAMS; #include "handy.h" #if defined(USE_LARGE_FILES) && !defined(NO_64_BIT_RAWIO) # if LSEEKSIZE == 8 && !defined(USE_64_BIT_RAWIO) # define USE_64_BIT_RAWIO /* implicit */ # endif #endif /* Notice the use of HAS_FSEEKO: now we are obligated to always use * fseeko/ftello if possible. Don't go #defining ftell to ftello yourself, * however, because operating systems like to do that themself. */ #ifndef FSEEKSIZE # ifdef HAS_FSEEKO # define FSEEKSIZE LSEEKSIZE # else # define FSEEKSIZE LONGSIZE # endif #endif #if defined(USE_LARGE_FILES) && !defined(NO_64_BIT_STDIO) # if FSEEKSIZE == 8 && !defined(USE_64_BIT_STDIO) # define USE_64_BIT_STDIO /* implicit */ # endif #endif #ifdef USE_64_BIT_RAWIO # ifdef HAS_OFF64_T # undef Off_t # define Off_t off64_t # undef LSEEKSIZE # define LSEEKSIZE 8 # endif /* Most 64-bit environments have defines like _LARGEFILE_SOURCE that * will trigger defines like the ones below. Some 64-bit environments, * however, do not. Therefore we have to explicitly mix and match. */ # if defined(USE_OPEN64) # define open open64 # endif # if defined(USE_LSEEK64) # define lseek lseek64 # else # if defined(USE_LLSEEK) # define lseek llseek # endif # endif # if defined(USE_STAT64) # define stat stat64 # endif # if defined(USE_FSTAT64) # define fstat fstat64 # endif # if defined(USE_LSTAT64) # define lstat lstat64 # endif # if defined(USE_FLOCK64) # define flock flock64 # endif # if defined(USE_LOCKF64) # define lockf lockf64 # endif # if defined(USE_FCNTL64) # define fcntl fcntl64 # endif # if defined(USE_TRUNCATE64) # define truncate truncate64 # endif # if defined(USE_FTRUNCATE64) # define ftruncate ftruncate64 # endif #endif #ifdef USE_64_BIT_STDIO # ifdef HAS_FPOS64_T # undef Fpos_t # define Fpos_t fpos64_t # endif /* Most 64-bit environments have defines like _LARGEFILE_SOURCE that * will trigger defines like the ones below. Some 64-bit environments, * however, do not. */ # if defined(USE_FOPEN64) # define fopen fopen64 # endif # if defined(USE_FSEEK64) # define fseek fseek64 /* don't do fseeko here, see perlio.c */ # endif # if defined(USE_FTELL64) # define ftell ftell64 /* don't do ftello here, see perlio.c */ # endif # if defined(USE_FSETPOS64) # define fsetpos fsetpos64 # endif # if defined(USE_FGETPOS64) # define fgetpos fgetpos64 # endif # if defined(USE_TMPFILE64) # define tmpfile tmpfile64 # endif # if defined(USE_FREOPEN64) # define freopen freopen64 # endif #endif #if defined(OS2) || defined(MACOS_TRADITIONAL) # include "iperlsys.h" #endif #if defined(__OPEN_VM) # include "vmesa/vmesaish.h" # define ISHISH "vmesa" #endif #ifdef DOSISH # if defined(OS2) # include "os2ish.h" # else # include "dosish.h" # endif # define ISHISH "dos" #endif #if defined(VMS) # include "vmsish.h" # include "embed.h" # ifndef PERL_MAD # undef op_getmad # define op_getmad(arg,pegop,slot) NOOP # endif # define ISHISH "vms" #endif #if defined(PLAN9) # include "./plan9/plan9ish.h" # define ISHISH "plan9" #endif #if defined(MPE) # include "mpeix/mpeixish.h" # define ISHISH "mpeix" #endif #if defined(__VOS__) # ifdef __GNUC__ # include "./vos/vosish.h" # else # include "vos/vosish.h" # endif # define ISHISH "vos" #endif #if defined(EPOC) # include "epocish.h" # define ISHISH "epoc" #endif #ifdef __SYMBIAN32__ # include "symbian/symbianish.h" # include "embed.h" # ifndef PERL_MAD # undef op_getmad # define op_getmad(arg,pegop,slot) NOOP # endif # define ISHISH "symbian" #endif #if defined(MACOS_TRADITIONAL) # include "macos/macish.h" # ifndef NO_ENVIRON_ARRAY # define NO_ENVIRON_ARRAY # endif # define ISHISH "macos classic" #endif #if defined(__BEOS__) # include "beos/beosish.h" # define ISHISH "beos" #endif #ifndef ISHISH # include "unixish.h" # define ISHISH "unix" #endif /* NSIG logic from Configure --> */ /* Strange style to avoid deeply-nested #if/#else/#endif */ #ifndef NSIG # ifdef _NSIG # define NSIG (_NSIG) # endif #endif #ifndef NSIG # ifdef SIGMAX # define NSIG (SIGMAX+1) # endif #endif #ifndef NSIG # ifdef SIG_MAX # define NSIG (SIG_MAX+1) # endif #endif #ifndef NSIG # ifdef _SIG_MAX # define NSIG (_SIG_MAX+1) # endif #endif #ifndef NSIG # ifdef MAXSIG # define NSIG (MAXSIG+1) # endif #endif #ifndef NSIG # ifdef MAX_SIG # define NSIG (MAX_SIG+1) # endif #endif #ifndef NSIG # ifdef SIGARRAYSIZE # define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */ # endif #endif #ifndef NSIG # ifdef _sys_nsig # define NSIG (_sys_nsig) /* Solaris 2.5 */ # endif #endif /* Default to some arbitrary number that's big enough to get most of the common signals. */ #ifndef NSIG # define NSIG 50 #endif /* <-- NSIG logic from Configure */ #ifndef NO_ENVIRON_ARRAY # define USE_ENVIRON_ARRAY #endif /* * initialise to avoid floating-point exceptions from overflow, etc */ #ifndef PERL_FPU_INIT # ifdef HAS_FPSETMASK # if HAS_FLOATINGPOINT_H # include # endif # define PERL_FPU_INIT fpsetmask(0) # else # if defined(SIGFPE) && defined(SIG_IGN) && !defined(PERL_MICRO) # define PERL_FPU_INIT PL_sigfpe_saved = (Sighandler_t) signal(SIGFPE, SIG_IGN) # define PERL_FPU_PRE_EXEC { Sigsave_t xfpe; rsignal_save(SIGFPE, PL_sigfpe_saved, &xfpe); # define PERL_FPU_POST_EXEC rsignal_restore(SIGFPE, &xfpe); } # else # define PERL_FPU_INIT # endif # endif #endif #ifndef PERL_FPU_PRE_EXEC # define PERL_FPU_PRE_EXEC { # define PERL_FPU_POST_EXEC } #endif #ifndef PERL_SYS_INIT3 # define PERL_SYS_INIT3(argvp,argcp,envp) PERL_SYS_INIT(argvp,argcp) #endif #ifndef PERL_WRITE_MSG_TO_CONSOLE # define PERL_WRITE_MSG_TO_CONSOLE(io, msg, len) PerlIO_write(io, msg, len) #endif #ifndef MAXPATHLEN # ifdef PATH_MAX # ifdef _POSIX_PATH_MAX # if PATH_MAX > _POSIX_PATH_MAX /* POSIX 1990 (and pre) was ambiguous about whether PATH_MAX * included the null byte or not. Later amendments of POSIX, * XPG4, the Austin Group, and the Single UNIX Specification * all explicitly include the null byte in the PATH_MAX. * Ditto for _POSIX_PATH_MAX. */ # define MAXPATHLEN PATH_MAX # else # define MAXPATHLEN _POSIX_PATH_MAX # endif # else # define MAXPATHLEN (PATH_MAX+1) # endif # else # ifdef _POSIX_PATH_MAX # define MAXPATHLEN _POSIX_PATH_MAX # else # define MAXPATHLEN 1024 /* Err on the large side. */ # endif # endif #endif /* In case Configure was not used (we are using a "canned config" * such as Win32, or a cross-compilation setup, for example) try going * by the gcc major and minor versions. One useful URL is * http://www.ohse.de/uwe/articles/gcc-attributes.html, * but contrary to this information warn_unused_result seems * not to be in gcc 3.3.5, at least. --jhi * Also, when building extensions with an installed perl, this allows * the user to upgrade gcc and get the right attributes, rather than * relying on the list generated at Configure time. --AD * Set these up now otherwise we get confused when some of the <*thread.h> * includes below indirectly pull in (which needs to know if we * have HASATTRIBUTE_FORMAT). */ #if defined __GNUC__ && !defined(__INTEL_COMPILER) # if __GNUC__ >= 3 /* 3.0 -> */ /* XXX Verify this version */ # define HASATTRIBUTE_FORMAT # endif # if __GNUC__ >= 3 /* 3.0 -> */ # define HASATTRIBUTE_MALLOC # endif # if __GNUC__ == 3 && __GNUC_MINOR__ >= 3 || __GNUC__ > 3 /* 3.3 -> */ # define HASATTRIBUTE_NONNULL # endif # if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 || __GNUC__ > 2 /* 2.5 -> */ # define HASATTRIBUTE_NORETURN # endif # if __GNUC__ >= 3 /* gcc 3.0 -> */ # define HASATTRIBUTE_PURE # endif # if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 /* 3.4 -> */ # define HASATTRIBUTE_UNUSED # endif # if __GNUC__ == 3 && __GNUC_MINOR__ == 3 && !defined(__cplusplus) # define HASATTRIBUTE_UNUSED /* gcc-3.3, but not g++-3.3. */ # endif # if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 /* 3.4 -> */ # define HASATTRIBUTE_WARN_UNUSED_RESULT # endif #endif /* USE_5005THREADS needs to be after unixish.h as includes * which defines NSIG - which will stop inclusion of * this results in many functions being undeclared which bothers C++ * May make sense to have threads after "*ish.h" anyway */ #if defined(USE_ITHREADS) # ifdef NETWARE # include # else # ifdef FAKE_THREADS # include "fakethr.h" # else # ifdef WIN32 # include # else # ifdef OS2 # include "os2thread.h" # else # ifdef I_MACH_CTHREADS # include # if (defined(NeXT) || defined(__NeXT__)) && defined(PERL_POLLUTE_MALLOC) # define MUTEX_INIT_CALLS_MALLOC # endif typedef cthread_t perl_os_thread; typedef mutex_t perl_mutex; typedef condition_t perl_cond; typedef void * perl_key; # else /* Posix threads */ # ifdef I_PTHREAD # include # endif typedef pthread_t perl_os_thread; typedef pthread_mutex_t perl_mutex; typedef pthread_cond_t perl_cond; typedef pthread_key_t perl_key; # endif /* I_MACH_CTHREADS */ # endif /* OS2 */ # endif /* WIN32 */ # endif /* FAKE_THREADS */ #endif /* NETWARE */ #endif /* USE_ITHREADS */ #if defined(WIN32) # include "win32.h" #endif #ifdef NETWARE # include "netware.h" #endif #define STATUS_UNIX PL_statusvalue #ifdef VMS # define STATUS_NATIVE PL_statusvalue_vms /* * vaxc$errno is only guaranteed to be valid if errno == EVMSERR, otherwise * its contents can not be trusted. Unfortunately, Perl seems to check * it on exit, so it when PL_statusvalue_vms is updated, vaxc$errno should * be updated also. */ # include # include /* Presume this because if VMS changes it, it will require a new * set of APIs for waiting on children for binary compatibility. */ # define child_offset_bits (8) # ifndef C_FAC_POSIX # define C_FAC_POSIX 0x35A000 # endif /* STATUS_EXIT - validates and returns a NATIVE exit status code for the * platform from the existing UNIX or Native status values. */ # define STATUS_EXIT \ (((I32)PL_statusvalue_vms == -1 ? SS$_ABORT : PL_statusvalue_vms) | \ (VMSISH_HUSHED ? STS$M_INHIB_MSG : 0)) /* STATUS_NATIVE_CHILD_SET - Calculate UNIX status that matches the child * exit code and shifts the UNIX value over the correct number of bits to * be a child status. Usually the number of bits is 8, but that could be * platform dependent. The NATIVE status code is presumed to have either * from a child process. */ /* This is complicated. The child processes return a true native VMS status which must be saved. But there is an assumption in Perl that the UNIX child status has some relationship to errno values, so Perl tries to translate it to text in some of the tests. In order to get the string translation correct, for the error, errno must be EVMSERR, but that generates a different text message than what the test programs are expecting. So an errno value must be derived from the native status value when an error occurs. That will hide the true native status message. With this version of perl, the true native child status can always be retrieved so that is not a problem. But in this case, Pl_statusvalue and errno may have different values in them. */ # define STATUS_NATIVE_CHILD_SET(n) \ STMT_START { \ I32 evalue = (I32)n; \ if (evalue == EVMSERR) { \ PL_statusvalue_vms = vaxc$errno; \ PL_statusvalue = evalue; \ } else { \ PL_statusvalue_vms = evalue; \ if (evalue == -1) { \ PL_statusvalue = -1; \ PL_statusvalue_vms = SS$_ABORT; /* Should not happen */ \ } else \ PL_statusvalue = Perl_vms_status_to_unix(evalue, 1); \ set_vaxc_errno(evalue); \ if ((PL_statusvalue_vms & C_FAC_POSIX) == C_FAC_POSIX) \ set_errno(EVMSERR); \ else set_errno(Perl_vms_status_to_unix(evalue, 0)); \ PL_statusvalue = PL_statusvalue << child_offset_bits; \ } \ } STMT_END # ifdef VMSISH_STATUS # define STATUS_CURRENT (VMSISH_STATUS ? STATUS_NATIVE : STATUS_UNIX) # else # define STATUS_CURRENT STATUS_UNIX # endif /* STATUS_UNIX_SET - takes a UNIX/POSIX errno value and attempts to update * the NATIVE status to an equivalent value. Can not be used to translate * exit code values as exit code values are not guaranteed to have any * relationship at all to errno values. * This is used when Perl is forcing errno to have a specific value. */ # define STATUS_UNIX_SET(n) \ STMT_START { \ I32 evalue = (I32)n; \ PL_statusvalue = evalue; \ if (PL_statusvalue != -1) { \ if (PL_statusvalue != EVMSERR) { \ PL_statusvalue &= 0xFFFF; \ if (MY_POSIX_EXIT) \ PL_statusvalue_vms=PL_statusvalue ? SS$_ABORT : SS$_NORMAL;\ else PL_statusvalue_vms = Perl_unix_status_to_vms(evalue); \ } \ else { \ PL_statusvalue_vms = vaxc$errno; \ } \ } \ else PL_statusvalue_vms = SS$_ABORT; \ set_vaxc_errno(PL_statusvalue_vms); \ } STMT_END /* STATUS_UNIX_EXIT_SET - Takes a UNIX/POSIX exit code and sets * the NATIVE error status based on it. It does not assume that * the UNIX/POSIX exit codes have any relationship to errno, except * that 0 indicates a success. When in the default mode to comply * with the Perl VMS documentation, any other code sets the NATIVE * status to a failure code of SS$_ABORT. * * In the new POSIX EXIT mode, native status will be set so that the * actual exit code will can be retrieved by the calling program or * shell. * * If the exit code is not clearly a UNIX parent or child exit status, * it will be passed through as a VMS status. */ # define STATUS_UNIX_EXIT_SET(n) \ STMT_START { \ I32 evalue = (I32)n; \ PL_statusvalue = evalue; \ if (evalue != -1) { \ if (evalue <= 0xFF00) { \ if (evalue > 0xFF) \ evalue = (evalue >> child_offset_bits) & 0xFF; \ if (evalue == 0) \ PL_statusvalue_vms == SS$_NORMAL; \ else \ if (MY_POSIX_EXIT) \ PL_statusvalue_vms = \ (C_FAC_POSIX | (evalue << 3 ) | (evalue == 1)? \ (STS$K_ERROR | STS$M_INHIB_MSG) : 1); \ else \ PL_statusvalue_vms = SS$_ABORT; \ } else { /* forgive them Perl, for they have sinned */ \ if (evalue != EVMSERR) PL_statusvalue_vms = evalue; \ else PL_statusvalue_vms = vaxc$errno; \ /* And obviously used a VMS status value instead of UNIX */ \ PL_statusvalue = EVMSERR; \ } \ } \ else PL_statusvalue_vms = SS$_ABORT; \ set_vaxc_errno(PL_statusvalue_vms); \ } STMT_END /* STATUS_EXIT_SET - Takes a NATIVE/UNIX/POSIX exit code * and sets the NATIVE error status based on it. This special case * is needed to maintain compatibility with past VMS behavior. * * In the default mode on VMS, this number is passed through as * both the NATIVE and UNIX status. Which makes it different * that the STATUS_UNIX_EXIT_SET. * * In the new POSIX EXIT mode, native status will be set so that the * actual exit code will can be retrieved by the calling program or * shell. * */ # define STATUS_EXIT_SET(n) \ STMT_START { \ I32 evalue = (I32)n; \ PL_statusvalue = evalue; \ if (MY_POSIX_EXIT) \ PL_statusvalue_vms = \ (C_FAC_POSIX | (evalue << 3 ) | (evalue == 1)? \ (STS$K_ERROR | STS$M_INHIB_MSG) : 1); \ else \ PL_statusvalue_vms = evalue ? evalue : SS$_NORMAL; \ set_vaxc_errno(PL_statusvalue_vms); \ } STMT_END /* This macro forces a success status */ # define STATUS_ALL_SUCCESS \ (PL_statusvalue = 0, PL_statusvalue_vms = SS$_NORMAL) /* This macro forces a failure status */ # define STATUS_ALL_FAILURE (PL_statusvalue = 1, \ vaxc$errno = PL_statusvalue_vms = MY_POSIX_EXIT ? \ (C_FAC_POSIX | (1 << 3) | STS$K_ERROR | STS$M_INHIB_MSG) : SS$_ABORT) #else # define STATUS_NATIVE PL_statusvalue_posix # if defined(WCOREDUMP) # define STATUS_NATIVE_CHILD_SET(n) \ STMT_START { \ PL_statusvalue_posix = (n); \ if (PL_statusvalue_posix == -1) \ PL_statusvalue = -1; \ else { \ PL_statusvalue = \ (WIFEXITED(PL_statusvalue_posix) ? (WEXITSTATUS(PL_statusvalue_posix) << 8) : 0) | \ (WIFSIGNALED(PL_statusvalue_posix) ? (WTERMSIG(PL_statusvalue_posix) & 0x7F) : 0) | \ (WIFSIGNALED(PL_statusvalue_posix) && WCOREDUMP(PL_statusvalue_posix) ? 0x80 : 0); \ } \ } STMT_END # elif defined(WIFEXITED) # define STATUS_NATIVE_CHILD_SET(n) \ STMT_START { \ PL_statusvalue_posix = (n); \ if (PL_statusvalue_posix == -1) \ PL_statusvalue = -1; \ else { \ PL_statusvalue = \ (WIFEXITED(PL_statusvalue_posix) ? (WEXITSTATUS(PL_statusvalue_posix) << 8) : 0) | \ (WIFSIGNALED(PL_statusvalue_posix) ? (WTERMSIG(PL_statusvalue_posix) & 0x7F) : 0); \ } \ } STMT_END # else # define STATUS_NATIVE_CHILD_SET(n) \ STMT_START { \ PL_statusvalue_posix = (n); \ if (PL_statusvalue_posix == -1) \ PL_statusvalue = -1; \ else { \ PL_statusvalue = \ PL_statusvalue_posix & 0xFFFF; \ } \ } STMT_END # endif # define STATUS_UNIX_SET(n) \ STMT_START { \ PL_statusvalue = (n); \ if (PL_statusvalue != -1) \ PL_statusvalue &= 0xFFFF; \ } STMT_END # define STATUS_UNIX_EXIT_SET(n) STATUS_UNIX_SET(n) # define STATUS_EXIT_SET(n) STATUS_UNIX_SET(n) # define STATUS_CURRENT STATUS_UNIX # define STATUS_EXIT STATUS_UNIX # define STATUS_ALL_SUCCESS (PL_statusvalue = 0, PL_statusvalue_posix = 0) # define STATUS_ALL_FAILURE (PL_statusvalue = 1, PL_statusvalue_posix = 1) #endif /* flags in PL_exit_flags for nature of exit() */ #define PERL_EXIT_EXPECTED 0x01 #define PERL_EXIT_DESTRUCT_END 0x02 /* Run END in perl_destruct */ #ifndef MEMBER_TO_FPTR # define MEMBER_TO_FPTR(name) name #endif /* format to use for version numbers in file/directory names */ /* XXX move to Configure? */ #ifndef PERL_FS_VER_FMT # define PERL_FS_VER_FMT "%d.%d.%d" #endif /* This defines a way to flush all output buffers. This may be a * performance issue, so we allow people to disable it. Also, if * we are using stdio, there are broken implementations of fflush(NULL) * out there, Solaris being the most prominent. */ #ifndef PERL_FLUSHALL_FOR_CHILD # if defined(USE_PERLIO) || defined(FFLUSH_NULL) || defined(USE_SFIO) # define PERL_FLUSHALL_FOR_CHILD PerlIO_flush((PerlIO*)NULL) # else # ifdef FFLUSH_ALL # define PERL_FLUSHALL_FOR_CHILD my_fflush_all() # else # define PERL_FLUSHALL_FOR_CHILD NOOP # endif # endif #endif #ifndef PERL_WAIT_FOR_CHILDREN # define PERL_WAIT_FOR_CHILDREN NOOP #endif /* the traditional thread-unsafe notion of "current interpreter". */ #ifndef PERL_SET_INTERP # define PERL_SET_INTERP(i) (PL_curinterp = (PerlInterpreter*)(i)) #endif #ifndef PERL_GET_INTERP # define PERL_GET_INTERP (PL_curinterp) #endif #if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_GET_THX) # ifdef MULTIPLICITY # define PERL_GET_THX ((PerlInterpreter *)PERL_GET_CONTEXT) # endif # define PERL_SET_THX(t) PERL_SET_CONTEXT(t) #endif /* This replaces the previous %_ "hack" by the "%p" hacks. All that is required is that the perl source does not use "%-p" or "%-p" or "%p" formats. These formats will still work in perl code. See comments in sv.c for futher details. -DvdNUMBER= can be used to redefine VDf -DvdNUMBER=0 reverts VDf to "vd", as in perl5.8.7, which works properly but gives compiler warnings Robin Barker 2005-07-14 */ #ifndef SVf_ # define SVf_(n) "-" STRINGIFY(n) "p" #endif #ifndef SVf # define SVf "-p" #endif #ifndef SVf32 # define SVf32 SVf_(32) #endif #ifndef SVf256 # define SVf256 SVf_(256) #endif #ifndef vdNUMBER # define vdNUMBER 1 #endif #ifndef VDf # if vdNUMBER # define VDf STRINGIFY(vdNUMBER) "p" # else # define VDf "vd" # endif #endif /* not used; but needed for backward compatibilty with XS code? - RMB */ #ifndef UVf # define UVf UVuf #endif #ifdef HASATTRIBUTE_FORMAT # define __attribute__format__(x,y,z) __attribute__((format(x,y,z))) #endif #ifdef HASATTRIBUTE_MALLOC # define __attribute__malloc__ __attribute__((__malloc__)) #endif #ifdef HASATTRIBUTE_NONNULL # define __attribute__nonnull__(a) __attribute__((nonnull(a))) #endif #ifdef HASATTRIBUTE_NORETURN # define __attribute__noreturn__ __attribute__((noreturn)) #endif #ifdef HASATTRIBUTE_PURE # define __attribute__pure__ __attribute__((pure)) #endif #ifdef HASATTRIBUTE_UNUSED # define __attribute__unused__ __attribute__((unused)) #endif #ifdef HASATTRIBUTE_WARN_UNUSED_RESULT # define __attribute__warn_unused_result__ __attribute__((warn_unused_result)) #endif /* If we haven't defined the attributes yet, define them to blank. */ #ifndef __attribute__format__ # define __attribute__format__(x,y,z) #endif #ifndef __attribute__malloc__ # define __attribute__malloc__ #endif #ifndef __attribute__nonnull__ # define __attribute__nonnull__(a) #endif #ifndef __attribute__noreturn__ # define __attribute__noreturn__ #endif #ifndef __attribute__pure__ # define __attribute__pure__ #endif #ifndef __attribute__unused__ # define __attribute__unused__ #endif #ifndef __attribute__warn_unused_result__ # define __attribute__warn_unused_result__ #endif /* For functions that are marked as __attribute__noreturn__, it's not appropriate to call return. In either case, include the lint directive. */ #ifdef HASATTRIBUTE_NORETURN # define NORETURN_FUNCTION_END /* NOTREACHED */ #else # define NORETURN_FUNCTION_END /* NOTREACHED */ return 0 #endif #ifdef HAS_BUILTIN_EXPECT # define EXPECT(expr,val) __builtin_expect(expr,val) #else # define EXPECT(expr,val) (expr) #endif #define LIKELY(cond) EXPECT(cond,1) #define UNLIKELY(cond) EXPECT(cond,0) #ifdef HAS_BUILTIN_CHOOSE_EXPR /* placeholder */ #endif /* Some unistd.h's give a prototype for pause() even though HAS_PAUSE ends up undefined. This causes the #define below to be rejected by the compiler. Sigh. */ #ifdef HAS_PAUSE #define Pause pause #else #define Pause() sleep((32767<<16)+32767) #endif #ifndef IOCPARM_LEN # ifdef IOCPARM_MASK /* on BSDish systems we're safe */ # define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK) # else # if defined(_IOC_SIZE) && defined(__GLIBC__) /* on Linux systems we're safe; except when we're not [perl #38223] */ # define IOCPARM_LEN(x) (_IOC_SIZE(x) < 256 ? 256 : _IOC_SIZE(x)) # else /* otherwise guess at what's safe */ # define IOCPARM_LEN(x) 256 # endif # endif #endif #if defined(__CYGWIN__) /* USEMYBINMODE * This symbol, if defined, indicates that the program should * use the routine my_binmode(FILE *fp, char iotype, int mode) to insure * that a file is in "binary" mode -- that is, that no translation * of bytes occurs on read or write operations. */ # define USEMYBINMODE /**/ # include /* for setmode() prototype */ # define my_binmode(fp, iotype, mode) \ (PerlLIO_setmode(fileno(fp), mode) != -1 ? TRUE : FALSE) #endif #ifdef __CYGWIN__ void init_os_extras(void); #endif #ifdef UNION_ANY_DEFINITION UNION_ANY_DEFINITION; #else union any { void* any_ptr; I32 any_i32; IV any_iv; long any_long; bool any_bool; void (*any_dptr) (void*); void (*any_dxptr) (pTHX_ void*); }; #endif typedef I32 (*filter_t) (pTHX_ int, SV *, int); #define FILTER_READ(idx, sv, len) filter_read(idx, sv, len) #define FILTER_DATA(idx) (AvARRAY(PL_rsfp_filters)[idx]) #define FILTER_ISREADER(idx) (idx >= AvFILLp(PL_rsfp_filters)) #if defined(_AIX) && !defined(_AIX43) #if defined(USE_REENTRANT) || defined(_REENTRANT) || defined(_THREAD_SAFE) /* We cannot include to get the struct crypt_data * because of setkey prototype problems when threading */ typedef struct crypt_data { /* straight from /usr/include/crypt.h */ /* From OSF, Not needed in AIX char C[28], D[28]; */ char E[48]; char KS[16][48]; char block[66]; char iobuf[16]; } CRYPTD; #endif /* threading */ #endif /* AIX */ #if !defined(OS2) && !defined(MACOS_TRADITIONAL) # include "iperlsys.h" #endif /* [perl #22371] Algorimic Complexity Attack on Perl 5.6.1, 5.8.0. * Note that the USE_HASH_SEED and USE_HASH_SEED_EXPLICIT are *NOT* * defined by Configure, despite their names being similar to the * other defines like USE_ITHREADS. Configure in fact knows nothing * about the randomised hashes. Therefore to enable/disable the hash * randomisation defines use the Configure -Accflags=... instead. */ #if !defined(NO_HASH_SEED) && !defined(USE_HASH_SEED) && !defined(USE_HASH_SEED_EXPLICIT) # define USE_HASH_SEED #endif /* Win32 defines a type 'WORD' in windef.h. This conflicts with the enumerator * 'WORD' defined in perly.h. The yytokentype enum is only a debugging aid, so * it's not really needed. */ #if defined(WIN32) # define YYTOKENTYPE #endif #include "perly.h" #ifdef PERL_MAD struct nexttoken { YYSTYPE next_val; /* value of next token, if any */ I32 next_type; /* type of next token */ MADPROP *next_mad; /* everything else about that token */ }; #endif #include "regexp.h" #include "sv.h" #include "util.h" #include "form.h" #include "gv.h" #include "pad.h" #include "cv.h" #include "opnames.h" #include "op.h" #include "hv.h" #include "cop.h" #include "av.h" #include "mg.h" #include "scope.h" #include "warnings.h" #include "utf8.h" typedef struct _sublex_info SUBLEXINFO; struct _sublex_info { I32 super_state; /* lexer state to save */ I32 sub_inwhat; /* "lex_inwhat" to use */ OP *sub_op; /* "lex_op" to use */ char *super_bufptr; /* PL_bufptr that was */ char *super_bufend; /* PL_bufend that was */ }; typedef struct magic_state MGS; /* struct magic_state defined in mg.c */ struct scan_data_t; /* Used in S_* functions in regcomp.c */ struct regnode_charclass_class; /* Used in S_* functions in regcomp.c */ /* Keep next first in this structure, because sv_free_arenas take advantage of this to share code between the pte arenas and the SV body arenas */ struct ptr_tbl_ent { struct ptr_tbl_ent* next; const void* oldval; void* newval; }; struct ptr_tbl { struct ptr_tbl_ent** tbl_ary; UV tbl_max; UV tbl_items; }; #if defined(iAPX286) || defined(M_I286) || defined(I80286) # define I286 #endif #if defined(htonl) && !defined(HAS_HTONL) #define HAS_HTONL #endif #if defined(htons) && !defined(HAS_HTONS) #define HAS_HTONS #endif #if defined(ntohl) && !defined(HAS_NTOHL) #define HAS_NTOHL #endif #if defined(ntohs) && !defined(HAS_NTOHS) #define HAS_NTOHS #endif #ifndef HAS_HTONL #if (BYTEORDER & 0xffff) != 0x4321 #define HAS_HTONS #define HAS_HTONL #define HAS_NTOHS #define HAS_NTOHL #define MYSWAP #define htons my_swap #define htonl my_htonl #define ntohs my_swap #define ntohl my_ntohl #endif #else #if (BYTEORDER & 0xffff) == 0x4321 #undef HAS_HTONS #undef HAS_HTONL #undef HAS_NTOHS #undef HAS_NTOHL #endif #endif /* * Little-endian byte order functions - 'v' for 'VAX', or 'reVerse'. * -DWS */ #if BYTEORDER != 0x1234 # define HAS_VTOHL # define HAS_VTOHS # define HAS_HTOVL # define HAS_HTOVS # if BYTEORDER == 0x4321 || BYTEORDER == 0x87654321 # define vtohl(x) ((((x)&0xFF)<<24) \ +(((x)>>24)&0xFF) \ +(((x)&0x0000FF00)<<8) \ +(((x)&0x00FF0000)>>8) ) # define vtohs(x) ((((x)&0xFF)<<8) + (((x)>>8)&0xFF)) # define htovl(x) vtohl(x) # define htovs(x) vtohs(x) # endif /* otherwise default to functions in util.c */ #ifndef htovs short htovs(short n); short vtohs(short n); long htovl(long n); long vtohl(long n); #endif #endif /* *MAX Plus 1. A floating point value. Hopefully expressed in a way that dodgy floating point can't mess up. >> 2 rather than 1, so that value is safely less than I32_MAX after 1 is added to it May find that some broken compiler will want the value cast to I32. [after the shift, as signed >> may not be as secure as unsigned >>] */ #define I32_MAX_P1 (2.0 * (1 + (((U32)I32_MAX) >> 1))) #define U32_MAX_P1 (4.0 * (1 + ((U32_MAX) >> 2))) /* For compilers that can't correctly cast NVs over 0x7FFFFFFF (or 0x7FFFFFFFFFFFFFFF) to an unsigned integer. In the future, sizeof(UV) may be greater than sizeof(IV), so don't assume that half max UV is max IV. */ #define U32_MAX_P1_HALF (2.0 * (1 + ((U32_MAX) >> 2))) #define UV_MAX_P1 (4.0 * (1 + ((UV_MAX) >> 2))) #define IV_MAX_P1 (2.0 * (1 + (((UV)IV_MAX) >> 1))) #define UV_MAX_P1_HALF (2.0 * (1 + ((UV_MAX) >> 2))) /* This may look like unnecessary jumping through hoops, but converting out of range floating point values to integers *is* undefined behaviour, and it is starting to bite. */ #ifndef CAST_INLINE #define I_32(what) (cast_i32((NV)(what))) #define U_32(what) (cast_ulong((NV)(what))) #define I_V(what) (cast_iv((NV)(what))) #define U_V(what) (cast_uv((NV)(what))) #else #define I_32(n) ((n) < I32_MAX_P1 ? ((n) < I32_MIN ? I32_MIN : (I32) (n)) \ : ((n) < U32_MAX_P1 ? (I32)(U32) (n) \ : ((n) > 0 ? (I32) U32_MAX : 0 /* NaN */))) #define U_32(n) ((n) < 0.0 ? ((n) < I32_MIN ? (UV) I32_MIN : (U32)(I32) (n)) \ : ((n) < U32_MAX_P1 ? (U32) (n) \ : ((n) > 0 ? U32_MAX : 0 /* NaN */))) #define I_V(n) ((n) < IV_MAX_P1 ? ((n) < IV_MIN ? IV_MIN : (IV) (n)) \ : ((n) < UV_MAX_P1 ? (IV)(UV) (n) \ : ((n) > 0 ? (IV)UV_MAX : 0 /* NaN */))) #define U_V(n) ((n) < 0.0 ? ((n) < IV_MIN ? (UV) IV_MIN : (UV)(IV) (n)) \ : ((n) < UV_MAX_P1 ? (UV) (n) \ : ((n) > 0 ? UV_MAX : 0 /* NaN */))) #endif #define U_S(what) ((U16)U_32(what)) #define U_I(what) ((unsigned int)U_32(what)) #define U_L(what) U_32(what) /* These do not care about the fractional part, only about the range. */ #define NV_WITHIN_IV(nv) (I_V(nv) >= IV_MIN && I_V(nv) <= IV_MAX) #define NV_WITHIN_UV(nv) ((nv)>=0.0 && U_V(nv) >= UV_MIN && U_V(nv) <= UV_MAX) /* Used with UV/IV arguments: */ /* XXXX: need to speed it up */ #define CLUMP_2UV(iv) ((iv) < 0 ? 0 : (UV)(iv)) #define CLUMP_2IV(uv) ((uv) > (UV)IV_MAX ? IV_MAX : (IV)(uv)) #ifndef MAXSYSFD # define MAXSYSFD 2 #endif #ifndef __cplusplus #if !(defined(UNDER_CE) || defined(SYMBIAN)) Uid_t getuid (void); Uid_t geteuid (void); Gid_t getgid (void); Gid_t getegid (void); #endif #endif #ifndef Perl_debug_log # define Perl_debug_log PerlIO_stderr() #endif #ifndef Perl_error_log # define Perl_error_log (PL_stderrgv \ && isGV(PL_stderrgv) \ && GvIOp(PL_stderrgv) \ && IoOFP(GvIOp(PL_stderrgv)) \ ? IoOFP(GvIOp(PL_stderrgv)) \ : PerlIO_stderr()) #endif #define DEBUG_p_FLAG 0x00000001 /* 1 */ #define DEBUG_s_FLAG 0x00000002 /* 2 */ #define DEBUG_l_FLAG 0x00000004 /* 4 */ #define DEBUG_t_FLAG 0x00000008 /* 8 */ #define DEBUG_o_FLAG 0x00000010 /* 16 */ #define DEBUG_c_FLAG 0x00000020 /* 32 */ #define DEBUG_P_FLAG 0x00000040 /* 64 */ #define DEBUG_m_FLAG 0x00000080 /* 128 */ #define DEBUG_f_FLAG 0x00000100 /* 256 */ #define DEBUG_r_FLAG 0x00000200 /* 512 */ #define DEBUG_x_FLAG 0x00000400 /* 1024 */ #define DEBUG_u_FLAG 0x00000800 /* 2048 */ /* U is reserved for Unofficial, exploratory hacking */ #define DEBUG_U_FLAG 0x00001000 /* 4096 */ #define DEBUG_H_FLAG 0x00002000 /* 8192 */ #define DEBUG_X_FLAG 0x00004000 /* 16384 */ #define DEBUG_D_FLAG 0x00008000 /* 32768 */ #define DEBUG_S_FLAG 0x00010000 /* 65536 */ #define DEBUG_T_FLAG 0x00020000 /* 131072 */ #define DEBUG_R_FLAG 0x00040000 /* 262144 */ #define DEBUG_J_FLAG 0x00080000 /* 524288 */ #define DEBUG_v_FLAG 0x00100000 /*1048576 */ #define DEBUG_C_FLAG 0x00200000 /*2097152 */ #define DEBUG_A_FLAG 0x00400000 /*4194304 */ #define DEBUG_q_FLAG 0x00800000 /*8388608 */ #define DEBUG_MASK 0x00FFEFFF /* mask of all the standard flags */ #define DEBUG_DB_RECURSE_FLAG 0x40000000 #define DEBUG_TOP_FLAG 0x80000000 /* XXX what's this for ??? Signal that something was done? */ # define DEBUG_p_TEST_ (PL_debug & DEBUG_p_FLAG) # define DEBUG_s_TEST_ (PL_debug & DEBUG_s_FLAG) # define DEBUG_l_TEST_ (PL_debug & DEBUG_l_FLAG) # define DEBUG_t_TEST_ (PL_debug & DEBUG_t_FLAG) # define DEBUG_o_TEST_ (PL_debug & DEBUG_o_FLAG) # define DEBUG_c_TEST_ (PL_debug & DEBUG_c_FLAG) # define DEBUG_P_TEST_ (PL_debug & DEBUG_P_FLAG) # define DEBUG_m_TEST_ (PL_debug & DEBUG_m_FLAG) # define DEBUG_f_TEST_ (PL_debug & DEBUG_f_FLAG) # define DEBUG_r_TEST_ (PL_debug & DEBUG_r_FLAG) # define DEBUG_x_TEST_ (PL_debug & DEBUG_x_FLAG) # define DEBUG_u_TEST_ (PL_debug & DEBUG_u_FLAG) # define DEBUG_U_TEST_ (PL_debug & DEBUG_U_FLAG) # define DEBUG_H_TEST_ (PL_debug & DEBUG_H_FLAG) # define DEBUG_X_TEST_ (PL_debug & DEBUG_X_FLAG) # define DEBUG_D_TEST_ (PL_debug & DEBUG_D_FLAG) # define DEBUG_S_TEST_ (PL_debug & DEBUG_S_FLAG) # define DEBUG_T_TEST_ (PL_debug & DEBUG_T_FLAG) # define DEBUG_R_TEST_ (PL_debug & DEBUG_R_FLAG) # define DEBUG_J_TEST_ (PL_debug & DEBUG_J_FLAG) # define DEBUG_v_TEST_ (PL_debug & DEBUG_v_FLAG) # define DEBUG_C_TEST_ (PL_debug & DEBUG_C_FLAG) # define DEBUG_A_TEST_ (PL_debug & DEBUG_A_FLAG) # define DEBUG_q_TEST_ (PL_debug & DEBUG_q_FLAG) # define DEBUG_Xv_TEST_ (DEBUG_X_TEST_ && DEBUG_v_TEST_) #ifdef DEBUGGING # define DEBUG_p_TEST DEBUG_p_TEST_ # define DEBUG_s_TEST DEBUG_s_TEST_ # define DEBUG_l_TEST DEBUG_l_TEST_ # define DEBUG_t_TEST DEBUG_t_TEST_ # define DEBUG_o_TEST DEBUG_o_TEST_ # define DEBUG_c_TEST DEBUG_c_TEST_ # define DEBUG_P_TEST DEBUG_P_TEST_ # define DEBUG_m_TEST DEBUG_m_TEST_ # define DEBUG_f_TEST DEBUG_f_TEST_ # define DEBUG_r_TEST DEBUG_r_TEST_ # define DEBUG_x_TEST DEBUG_x_TEST_ # define DEBUG_u_TEST DEBUG_u_TEST_ # define DEBUG_U_TEST DEBUG_U_TEST_ # define DEBUG_H_TEST DEBUG_H_TEST_ # define DEBUG_X_TEST DEBUG_X_TEST_ # define DEBUG_Xv_TEST DEBUG_Xv_TEST_ # define DEBUG_D_TEST DEBUG_D_TEST_ # define DEBUG_S_TEST DEBUG_S_TEST_ # define DEBUG_T_TEST DEBUG_T_TEST_ # define DEBUG_R_TEST DEBUG_R_TEST_ # define DEBUG_J_TEST DEBUG_J_TEST_ # define DEBUG_v_TEST DEBUG_v_TEST_ # define DEBUG_C_TEST DEBUG_C_TEST_ # define DEBUG_A_TEST DEBUG_A_TEST_ # define DEBUG_q_TEST DEBUG_q_TEST_ # define PERL_DEB(a) a # define PERL_DEBUG(a) if (PL_debug) a # define DEBUG_p(a) if (DEBUG_p_TEST) a # define DEBUG_s(a) if (DEBUG_s_TEST) a # define DEBUG_l(a) if (DEBUG_l_TEST) a # define DEBUG_t(a) if (DEBUG_t_TEST) a # define DEBUG_o(a) if (DEBUG_o_TEST) a # define DEBUG_c(a) if (DEBUG_c_TEST) a # define DEBUG_P(a) if (DEBUG_P_TEST) a /* Temporarily turn off memory debugging in case the a * does memory allocation, either directly or indirectly. */ # define DEBUG_m(a) \ STMT_START { \ if (PERL_GET_INTERP) { dTHX; if (DEBUG_m_TEST) {PL_debug&=~DEBUG_m_FLAG; a; PL_debug|=DEBUG_m_FLAG;} } \ } STMT_END # define DEBUG__(t, a) \ STMT_START { \ if (t) STMT_START {a;} STMT_END; \ } STMT_END # define DEBUG_f(a) DEBUG__(DEBUG_f_TEST, a) #ifndef PERL_EXT_RE_BUILD # define DEBUG_r(a) DEBUG__(DEBUG_r_TEST, a) #else # define DEBUG_r(a) STMT_START {a;} STMT_END #endif /* PERL_EXT_RE_BUILD */ # define DEBUG_x(a) DEBUG__(DEBUG_x_TEST, a) # define DEBUG_u(a) DEBUG__(DEBUG_u_TEST, a) # define DEBUG_U(a) DEBUG__(DEBUG_U_TEST, a) # define DEBUG_H(a) DEBUG__(DEBUG_H_TEST, a) # define DEBUG_X(a) DEBUG__(DEBUG_X_TEST, a) # define DEBUG_Xv(a) DEBUG__(DEBUG_Xv_TEST, a) # define DEBUG_D(a) DEBUG__(DEBUG_D_TEST, a) # define DEBUG_S(a) # define DEBUG_T(a) DEBUG__(DEBUG_T_TEST, a) # define DEBUG_R(a) DEBUG__(DEBUG_R_TEST, a) # define DEBUG_v(a) DEBUG__(DEBUG_v_TEST, a) # define DEBUG_C(a) DEBUG__(DEBUG_C_TEST, a) # define DEBUG_A(a) DEBUG__(DEBUG_A_TEST, a) # define DEBUG_q(a) DEBUG__(DEBUG_q_TEST, a) #else /* DEBUGGING */ # define DEBUG_p_TEST (0) # define DEBUG_s_TEST (0) # define DEBUG_l_TEST (0) # define DEBUG_t_TEST (0) # define DEBUG_o_TEST (0) # define DEBUG_c_TEST (0) # define DEBUG_P_TEST (0) # define DEBUG_m_TEST (0) # define DEBUG_f_TEST (0) # define DEBUG_r_TEST (0) # define DEBUG_x_TEST (0) # define DEBUG_u_TEST (0) # define DEBUG_U_TEST (0) # define DEBUG_H_TEST (0) # define DEBUG_X_TEST (0) # define DEBUG_Xv_TEST (0) # define DEBUG_D_TEST (0) # define DEBUG_S_TEST (0) # define DEBUG_T_TEST (0) # define DEBUG_R_TEST (0) # define DEBUG_J_TEST (0) # define DEBUG_v_TEST (0) # define DEBUG_C_TEST (0) # define DEBUG_A_TEST (0) # define DEBUG_q_TEST (0) # define PERL_DEB(a) # define PERL_DEBUG(a) # define DEBUG_p(a) # define DEBUG_s(a) # define DEBUG_l(a) # define DEBUG_t(a) # define DEBUG_o(a) # define DEBUG_c(a) # define DEBUG_P(a) # define DEBUG_m(a) # define DEBUG_f(a) # define DEBUG_r(a) # define DEBUG_x(a) # define DEBUG_u(a) # define DEBUG_U(a) # define DEBUG_H(a) # define DEBUG_X(a) # define DEBUG_Xv(a) # define DEBUG_D(a) # define DEBUG_S(a) # define DEBUG_T(a) # define DEBUG_R(a) # define DEBUG_v(a) # define DEBUG_C(a) # define DEBUG_A(a) # define DEBUG_q(a) #endif /* DEBUGGING */ #define DEBUG_SCOPE(where) \ DEBUG_l(WITH_THR(Perl_deb(aTHX_ "%s scope %ld at %s:%d\n", \ where, (long)PL_scopestack_ix, __FILE__, __LINE__))); /* These constants should be used in preference to raw characters * when using magic. Note that some perl guts still assume * certain character properties of these constants, namely that * isUPPER() and toLOWER() may do useful mappings. * * Update the magic_names table in dump.c when adding/amending these */ #define PERL_MAGIC_sv '\0' /* Special scalar variable */ #define PERL_MAGIC_overload 'A' /* %OVERLOAD hash */ #define PERL_MAGIC_overload_elem 'a' /* %OVERLOAD hash element */ #define PERL_MAGIC_overload_table 'c' /* Holds overload table (AMT) on stash */ #define PERL_MAGIC_bm 'B' /* Boyer-Moore (fast string search) */ #define PERL_MAGIC_regdata_names '+' /* Regex named capture buffer hash (%+ support) */ #define PERL_MAGIC_regdata 'D' /* Regex match position data (@+ and @- vars) */ #define PERL_MAGIC_regdatum 'd' /* Regex match position data element */ #define PERL_MAGIC_env 'E' /* %ENV hash */ #define PERL_MAGIC_envelem 'e' /* %ENV hash element */ #define PERL_MAGIC_fm 'f' /* Formline ('compiled' format) */ #define PERL_MAGIC_regex_global 'g' /* m//g target / study()ed string */ #define PERL_MAGIC_hints 'H' /* %^H hash */ #define PERL_MAGIC_hintselem 'h' /* %^H hash element */ #define PERL_MAGIC_isa 'I' /* @ISA array */ #define PERL_MAGIC_isaelem 'i' /* @ISA array element */ #define PERL_MAGIC_nkeys 'k' /* scalar(keys()) lvalue */ #define PERL_MAGIC_dbfile 'L' /* Debugger %_ might have been included somehow */ #define assert(what) PERL_DEB( \ ((what) ? ((void) 0) : \ (Perl_croak_nocontext("Assertion %s failed: file \"" __FILE__ \ "\", line %d", STRINGIFY(what), __LINE__), \ (void) 0))) #endif struct ufuncs { I32 (*uf_val)(pTHX_ IV, SV*); I32 (*uf_set)(pTHX_ IV, SV*); IV uf_index; }; /* In pre-5.7-Perls the PERL_MAGIC_uvar magic didn't get the thread context. * XS code wanting to be backward compatible can do something * like the following: #ifndef PERL_MG_UFUNC #define PERL_MG_UFUNC(name,ix,sv) I32 name(IV ix, SV *sv) #endif static PERL_MG_UFUNC(foo_get, index, val) { sv_setsv(val, ...); return TRUE; } -- Doug MacEachern */ #ifndef PERL_MG_UFUNC #define PERL_MG_UFUNC(name,ix,sv) I32 name(pTHX_ IV ix, SV *sv) #endif /* Fix these up for __STDC__ */ #ifndef DONT_DECLARE_STD char *mktemp (char*); #ifndef atof double atof (const char*); #endif #endif #ifndef STANDARD_C /* All of these are in stdlib.h or time.h for ANSI C */ Time_t time(); struct tm *gmtime(), *localtime(); #if defined(OEMVS) || defined(__OPEN_VM) char *(strchr)(), *(strrchr)(); char *(strcpy)(), *(strcat)(); #else char *strchr(), *strrchr(); char *strcpy(), *strcat(); #endif #endif /* ! STANDARD_C */ #ifdef I_MATH # include #else START_EXTERN_C double exp (double); double log (double); double log10 (double); double sqrt (double); double frexp (double,int*); double ldexp (double,int); double modf (double,double*); double sin (double); double cos (double); double atan2 (double,double); double pow (double,double); END_EXTERN_C #endif #if !defined(NV_INF) && defined(USE_LONG_DOUBLE) && defined(LDBL_INFINITY) # define NV_INF LDBL_INFINITY #endif #if !defined(NV_INF) && defined(DBL_INFINITY) # define NV_INF (NV)DBL_INFINITY #endif #if !defined(NV_INF) && defined(INFINITY) # define NV_INF (NV)INFINITY #endif #if !defined(NV_INF) && defined(INF) # define NV_INF (NV)INF #endif #if !defined(NV_INF) && defined(USE_LONG_DOUBLE) && defined(HUGE_VALL) # define NV_INF (NV)HUGE_VALL #endif #if !defined(NV_INF) && defined(HUGE_VAL) # define NV_INF (NV)HUGE_VAL #endif #if !defined(NV_NAN) && defined(USE_LONG_DOUBLE) # if !defined(NV_NAN) && defined(LDBL_NAN) # define NV_NAN LDBL_NAN # endif # if !defined(NV_NAN) && defined(LDBL_QNAN) # define NV_NAN LDBL_QNAN # endif # if !defined(NV_NAN) && defined(LDBL_SNAN) # define NV_NAN LDBL_SNAN # endif #endif #if !defined(NV_NAN) && defined(DBL_NAN) # define NV_NAN (NV)DBL_NAN #endif #if !defined(NV_NAN) && defined(DBL_QNAN) # define NV_NAN (NV)DBL_QNAN #endif #if !defined(NV_NAN) && defined(DBL_SNAN) # define NV_NAN (NV)DBL_SNAN #endif #if !defined(NV_NAN) && defined(QNAN) # define NV_NAN (NV)QNAN #endif #if !defined(NV_NAN) && defined(SNAN) # define NV_NAN (NV)SNAN #endif #if !defined(NV_NAN) && defined(NAN) # define NV_NAN (NV)NAN #endif #ifndef __cplusplus # if defined(NeXT) || defined(__NeXT__) /* or whatever catches all NeXTs */ char *crypt (); /* Maybe more hosts will need the unprototyped version */ # else # if !defined(WIN32) && !defined(VMS) #ifndef crypt char *crypt (const char*, const char*); #endif # endif /* !WIN32 */ # endif /* !NeXT && !__NeXT__ */ # ifndef DONT_DECLARE_STD # ifndef getenv char *getenv (const char*); # endif /* !getenv */ # if !defined(HAS_LSEEK_PROTO) && !defined(EPOC) && !defined(__hpux) # ifdef _FILE_OFFSET_BITS # if _FILE_OFFSET_BITS == 64 Off_t lseek (int,Off_t,int); # endif # endif # endif # endif /* !DONT_DECLARE_STD */ #ifndef getlogin char *getlogin (void); #endif #endif /* !__cplusplus */ /* Fixme on VMS. This needs to be a run-time, not build time options */ /* Also rename() is affected by this */ #ifdef UNLINK_ALL_VERSIONS /* Currently only makes sense for VMS */ #define UNLINK unlnk I32 unlnk (pTHX_ const char*); #else #define UNLINK PerlLIO_unlink #endif /* some versions of glibc are missing the setresuid() proto */ #if defined(HAS_SETRESUID) && !defined(HAS_SETRESUID_PROTO) int setresuid(uid_t ruid, uid_t euid, uid_t suid); #endif /* some versions of glibc are missing the setresgid() proto */ #if defined(HAS_SETRESGID) && !defined(HAS_SETRESGID_PROTO) int setresgid(gid_t rgid, gid_t egid, gid_t sgid); #endif #ifndef HAS_SETREUID # ifdef HAS_SETRESUID # define setreuid(r,e) setresuid(r,e,(Uid_t)-1) # define HAS_SETREUID # endif #endif #ifndef HAS_SETREGID # ifdef HAS_SETRESGID # define setregid(r,e) setresgid(r,e,(Gid_t)-1) # define HAS_SETREGID # endif #endif /* Sighandler_t defined in iperlsys.h */ #ifdef HAS_SIGACTION typedef struct sigaction Sigsave_t; #else typedef Sighandler_t Sigsave_t; #endif #define SCAN_DEF 0 #define SCAN_TR 1 #define SCAN_REPL 2 #ifdef DEBUGGING # ifndef register # define register # endif # define RUNOPS_DEFAULT Perl_runops_debug #else # define RUNOPS_DEFAULT Perl_runops_standard #endif #ifdef USE_PERLIO EXTERN_C void PerlIO_teardown(pTHX); # ifdef USE_ITHREADS # define PERLIO_INIT MUTEX_INIT(&PL_perlio_mutex) # define PERLIO_TERM \ STMT_START { \ PerlIO_teardown(aTHX); \ MUTEX_DESTROY(&PL_perlio_mutex);\ } STMT_END # else # define PERLIO_INIT # define PERLIO_TERM PerlIO_teardown(aTHX) # endif #else # define PERLIO_INIT # define PERLIO_TERM #endif #ifdef MYMALLOC # ifdef MUTEX_INIT_CALLS_MALLOC # define MALLOC_INIT \ STMT_START { \ PL_malloc_mutex = NULL; \ MUTEX_INIT(&PL_malloc_mutex); \ } STMT_END # define MALLOC_TERM \ STMT_START { \ perl_mutex tmp = PL_malloc_mutex; \ PL_malloc_mutex = NULL; \ MUTEX_DESTROY(&tmp); \ } STMT_END # else # define MALLOC_INIT MUTEX_INIT(&PL_malloc_mutex) # define MALLOC_TERM MUTEX_DESTROY(&PL_malloc_mutex) # endif #else # define MALLOC_INIT # define MALLOC_TERM #endif #if defined(PERL_IMPLICIT_CONTEXT) struct perl_memory_debug_header; struct perl_memory_debug_header { tTHX interpreter; # ifdef PERL_POISON MEM_SIZE size; # endif struct perl_memory_debug_header *prev; struct perl_memory_debug_header *next; }; # define sTHX (sizeof(struct perl_memory_debug_header) + \ (MEM_ALIGNBYTES - sizeof(struct perl_memory_debug_header) \ %MEM_ALIGNBYTES) % MEM_ALIGNBYTES) #endif #ifdef PERL_TRACK_MEMPOOL # define INIT_TRACK_MEMPOOL(header, interp) \ STMT_START { \ (header).interpreter = (interp); \ (header).prev = (header).next = &(header); \ } STMT_END # else # define INIT_TRACK_MEMPOOL(header, interp) #endif typedef int (CPERLscope(*runops_proc_t)) (pTHX); typedef void (CPERLscope(*share_proc_t)) (pTHX_ SV *sv); typedef int (CPERLscope(*thrhook_proc_t)) (pTHX); typedef OP* (CPERLscope(*PPADDR_t)[]) (pTHX); /* _ (for $_) must be first in the following list (DEFSV requires it) */ #define THREADSV_NAMES "_123456789&`'+/.,\\\";^-%=|~:\001\005!@" /* NeXT has problems with crt0.o globals */ #if defined(__DYNAMIC__) && \ (defined(NeXT) || defined(__NeXT__) || defined(PERL_DARWIN)) # if defined(NeXT) || defined(__NeXT) # include # define environ (*environ_pointer) EXT char *** environ_pointer; # else # if defined(PERL_DARWIN) && defined(PERL_CORE) # include /* for the env array */ # define environ (*_NSGetEnviron()) # endif # endif #else /* VMS and some other platforms don't use the environ array */ # ifdef USE_ENVIRON_ARRAY # if !defined(DONT_DECLARE_STD) || \ (defined(__svr4__) && defined(__GNUC__) && defined(sun)) || \ defined(__sgi) || \ defined(__DGUX) extern char ** environ; /* environment variables supplied via exec */ # endif # endif #endif START_EXTERN_C /* handy constants */ EXTCONST char PL_warn_uninit[] INIT("Use of uninitialized value%s%s%s"); EXTCONST char PL_warn_nosemi[] INIT("Semicolon seems to be missing"); EXTCONST char PL_warn_reserved[] INIT("Unquoted string \"%s\" may clash with future reserved word"); EXTCONST char PL_warn_nl[] INIT("Unsuccessful %s on filename containing newline"); EXTCONST char PL_no_wrongref[] INIT("Can't use %s ref as %s ref"); EXTCONST char PL_no_symref[] INIT("Can't use string (\"%.32s\") as %s ref while \"strict refs\" in use"); EXTCONST char PL_no_symref_sv[] INIT("Can't use string (\"%" SVf32 "\") as %s ref while \"strict refs\" in use"); EXTCONST char PL_no_usym[] INIT("Can't use an undefined value as %s reference"); EXTCONST char PL_no_aelem[] INIT("Modification of non-creatable array value attempted, subscript %d"); EXTCONST char PL_no_helem_sv[] INIT("Modification of non-creatable hash value attempted, subscript \"%"SVf"\""); EXTCONST char PL_no_modify[] INIT("Modification of a read-only value attempted"); EXTCONST char PL_no_mem[] INIT("Out of memory!\n"); EXTCONST char PL_no_security[] INIT("Insecure dependency in %s%s"); EXTCONST char PL_no_sock_func[] INIT("Unsupported socket function \"%s\" called"); EXTCONST char PL_no_dir_func[] INIT("Unsupported directory function \"%s\" called"); EXTCONST char PL_no_func[] INIT("The %s function is unimplemented"); EXTCONST char PL_no_myglob[] INIT("\"%s\" variable %s can't be in a package"); EXTCONST char PL_no_localize_ref[] INIT("Can't localize through a reference"); EXTCONST char PL_memory_wrap[] INIT("panic: memory wrap"); EXTCONST char PL_uuemap[65] INIT("`!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"); #ifdef DOINIT EXTCONST char* const PL_sig_name[] = { SIG_NAME }; EXTCONST int PL_sig_num[] = { SIG_NUM }; #else EXTCONST char* const PL_sig_name[]; EXTCONST int PL_sig_num[]; #endif /* fast conversion and case folding tables */ #ifdef DOINIT #ifdef EBCDIC EXTCONST unsigned char PL_fold[] = { /* fast EBCDIC case folding table */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 138, 139, 140, 141, 142, 143, 144, 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 154, 155, 156, 157, 158, 159, 160, 161, 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 202, 203, 204, 205, 206, 207, 208, 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 218, 219, 220, 221, 222, 223, 224, 225, 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; #else /* ascii rather than ebcdic */ EXTCONST unsigned char PL_fold[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 91, 92, 93, 94, 95, 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; #endif /* !EBCDIC */ #else EXTCONST unsigned char PL_fold[]; #endif #ifndef PERL_GLOBAL_STRUCT /* or perlvars.h */ #ifdef DOINIT EXT unsigned char PL_fold_locale[] = { /* Unfortunately not EXTCONST. */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 91, 92, 93, 94, 95, 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255 }; #else EXT unsigned char PL_fold_locale[]; /* Unfortunately not EXTCONST. */ #endif #endif /* !PERL_GLOBAL_STRUCT */ #ifdef DOINIT #ifdef EBCDIC EXTCONST unsigned char PL_freq[] = {/* EBCDIC frequencies for mixed English/C */ 1, 2, 84, 151, 154, 155, 156, 157, 165, 246, 250, 3, 158, 7, 18, 29, 40, 51, 62, 73, 85, 96, 107, 118, 129, 140, 147, 148, 149, 150, 152, 153, 255, 6, 8, 9, 10, 11, 12, 13, 14, 15, 24, 25, 26, 27, 28, 226, 29, 30, 31, 32, 33, 43, 44, 45, 46, 47, 48, 49, 50, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 94, 95, 234, 181, 233, 187, 190, 180, 96, 97, 98, 99, 100, 101, 102, 104, 112, 182, 174, 236, 232, 229, 103, 228, 226, 114, 115, 116, 117, 118, 119, 120, 121, 122, 235, 176, 230, 194, 162, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 201, 205, 163, 217, 220, 224, 5, 248, 227, 244, 242, 255, 241, 231, 240, 253, 16, 197, 19, 20, 21, 187, 23, 169, 210, 245, 237, 249, 247, 239, 168, 252, 34, 196, 36, 37, 38, 39, 41, 42, 251, 254, 238, 223, 221, 213, 225, 177, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 205, 208, 186, 202, 200, 218, 198, 179, 178, 214, 88, 89, 90, 91, 92, 93, 217, 166, 170, 207, 199, 209, 206, 204, 160, 212, 105, 106, 108, 109, 110, 111, 203, 113, 216, 215, 192, 175, 193, 243, 172, 161, 123, 124, 125, 126, 127, 128, 222, 219, 211, 195, 188, 193, 185, 184, 191, 183, 141, 142, 143, 144, 145, 146 }; #else /* ascii rather than ebcdic */ EXTCONST unsigned char PL_freq[] = { /* letter frequencies for mixed English/C */ 1, 2, 84, 151, 154, 155, 156, 157, 165, 246, 250, 3, 158, 7, 18, 29, 40, 51, 62, 73, 85, 96, 107, 118, 129, 140, 147, 148, 149, 150, 152, 153, 255, 182, 224, 205, 174, 176, 180, 217, 233, 232, 236, 187, 235, 228, 234, 226, 222, 219, 211, 195, 188, 193, 185, 184, 191, 183, 201, 229, 181, 220, 194, 162, 163, 208, 186, 202, 200, 218, 198, 179, 178, 214, 166, 170, 207, 199, 209, 206, 204, 160, 212, 216, 215, 192, 175, 173, 243, 172, 161, 190, 203, 189, 164, 230, 167, 248, 227, 244, 242, 255, 241, 231, 240, 253, 169, 210, 245, 237, 249, 247, 239, 168, 252, 251, 254, 238, 223, 221, 213, 225, 177, 197, 171, 196, 159, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146 }; #endif #else EXTCONST unsigned char PL_freq[]; #endif #ifdef DEBUGGING #ifdef DOINIT EXTCONST char* const PL_block_type[] = { "NULL", "SUB", "EVAL", "LOOP", "SUBST", "BLOCK", "FORMAT", "GIVEN", "WHEN" }; #else EXTCONST char* PL_block_type[]; #endif #endif END_EXTERN_C /*****************************************************************************/ /* This lexer/parser stuff is currently global since yacc is hard to reenter */ /*****************************************************************************/ /* XXX This needs to be revisited, since BEGIN makes yacc re-enter... */ #ifdef __Lynx__ /* LynxOS defines these in scsi.h which is included via ioctl.h */ #ifdef FORMAT #undef FORMAT #endif #ifdef SPACE #undef SPACE #endif #endif #define LEX_NOTPARSING 11 /* borrowed from toke.c */ typedef enum { XOPERATOR, XTERM, XREF, XSTATE, XBLOCK, XATTRBLOCK, XATTRTERM, XTERMBLOCK, XTERMORDORDOR /* evil hack */ /* update exp_name[] in toke.c if adding to this enum */ } expectation; enum { /* pass one of these to get_vtbl */ want_vtbl_sv, want_vtbl_env, want_vtbl_envelem, want_vtbl_sig, want_vtbl_sigelem, want_vtbl_pack, want_vtbl_packelem, want_vtbl_dbline, want_vtbl_isa, want_vtbl_isaelem, want_vtbl_arylen, want_vtbl_glob, want_vtbl_mglob, want_vtbl_nkeys, want_vtbl_taint, want_vtbl_substr, want_vtbl_vec, want_vtbl_pos, want_vtbl_bm, want_vtbl_fm, want_vtbl_uvar, want_vtbl_defelem, want_vtbl_regexp, want_vtbl_collxfrm, want_vtbl_amagic, want_vtbl_amagicelem, want_vtbl_regdata, want_vtbl_regdatum, want_vtbl_backref, want_vtbl_utf8, want_vtbl_symtab, want_vtbl_arylen_p, want_vtbl_hintselem }; /* Hints are now stored in a dedicated U32, so the bottom 8 bits are no longer special and there is no need for HINT_PRIVATE_MASK for COPs However, bitops store HINT_INTEGER in their op_private. */ #define HINT_INTEGER 0x00000001 /* integer pragma */ #define HINT_STRICT_REFS 0x00000002 /* strict pragma */ #define HINT_LOCALE 0x00000004 /* locale pragma */ #define HINT_BYTES 0x00000008 /* bytes pragma */ #define HINT_ARYBASE 0x00000010 /* $[ is non-zero */ /* Note: 20,40,80 used for NATIVE_HINTS */ /* currently defined by vms/vmsish.h */ #define HINT_BLOCK_SCOPE 0x00000100 #define HINT_STRICT_SUBS 0x00000200 /* strict pragma */ #define HINT_STRICT_VARS 0x00000400 /* strict pragma */ /* The HINT_NEW_* constants are used by the overload pragma */ #define HINT_NEW_INTEGER 0x00001000 #define HINT_NEW_FLOAT 0x00002000 #define HINT_NEW_BINARY 0x00004000 #define HINT_NEW_STRING 0x00008000 #define HINT_NEW_RE 0x00010000 #define HINT_LOCALIZE_HH 0x00020000 /* %^H needs to be copied */ #define HINT_LEXICAL_IO 0x00040000 /* ${^OPEN} is set */ #define HINT_RE_TAINT 0x00100000 /* re pragma */ #define HINT_RE_EVAL 0x00200000 /* re pragma */ #define HINT_FILETEST_ACCESS 0x00400000 /* filetest pragma */ #define HINT_UTF8 0x00800000 /* utf8 pragma */ /* assertions pragma, stored in $^H{assertions} */ #define HINT_ASSERTING 0x00000001 #define HINT_ASSERTIONSSEEN 0x00000002 /* The following are stored in $^H{sort}, not in PL_hints */ #define HINT_SORT_SORT_BITS 0x000000FF /* allow 256 different ones */ #define HINT_SORT_QUICKSORT 0x00000001 #define HINT_SORT_MERGESORT 0x00000002 #define HINT_SORT_STABLE 0x00000100 /* sort styles (currently one) */ /* Various states of the input record separator SV (rs) */ #define RsSNARF(sv) (! SvOK(sv)) #define RsSIMPLE(sv) (SvOK(sv) && (! SvPOK(sv) || SvCUR(sv))) #define RsPARA(sv) (SvPOK(sv) && ! SvCUR(sv)) #define RsRECORD(sv) (SvROK(sv) && (SvIV(SvRV(sv)) > 0)) /* A struct for keeping various DEBUGGING related stuff, * neatly packed. Currently only scratch variables for * constructing debug output are included. Needed always, * not just when DEBUGGING, though, because of the re extension. c*/ struct perl_debug_pad { SV pad[3]; }; #define PERL_DEBUG_PAD(i) &(PL_debug_pad.pad[i]) #define PERL_DEBUG_PAD_ZERO(i) (SvPVX(PERL_DEBUG_PAD(i))[0] = 0, \ (((XPV*) SvANY(PERL_DEBUG_PAD(i)))->xpv_cur = 0), \ PERL_DEBUG_PAD(i)) /* Enable variables which are pointers to functions */ typedef void (CPERLscope(*peep_t))(pTHX_ OP* o); typedef regexp*(CPERLscope(*regcomp_t)) (pTHX_ char* exp, char* xend, PMOP* pm); typedef I32 (CPERLscope(*regexec_t)) (pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags); typedef char* (CPERLscope(*re_intuit_start_t)) (pTHX_ regexp *prog, SV *sv, char *strpos, char *strend, U32 flags, struct re_scream_pos_data_s *d); typedef SV* (CPERLscope(*re_intuit_string_t)) (pTHX_ regexp *prog); typedef void (CPERLscope(*regfree_t)) (pTHX_ struct regexp* r); typedef regexp*(CPERLscope(*regdupe_t)) (pTHX_ const regexp* r, CLONE_PARAMS *param); typedef void (*DESTRUCTORFUNC_NOCONTEXT_t) (void*); typedef void (*DESTRUCTORFUNC_t) (pTHX_ void*); typedef void (*SVFUNC_t) (pTHX_ SV*); typedef I32 (*SVCOMPARE_t) (pTHX_ SV*, SV*); typedef void (*XSINIT_t) (pTHX); typedef void (*ATEXIT_t) (pTHX_ void*); typedef void (*XSUBADDR_t) (pTHX_ CV *); /* Set up PERLVAR macros for populating structs */ #define PERLVAR(var,type) type var; #define PERLVARA(var,n,type) type var[n]; #define PERLVARI(var,type,init) type var; #define PERLVARIC(var,type,init) type var; #define PERLVARISC(var,init) const char var[sizeof(init)]; typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX); typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); /* Interpreter exitlist entry */ typedef struct exitlistentry { void (*fn) (pTHX_ void*); void *ptr; } PerlExitListEntry; /* if you only have signal() and it resets on each signal, FAKE_PERSISTENT_SIGNAL_HANDLERS fixes */ /* These have to be before perlvars.h */ #if !defined(HAS_SIGACTION) && defined(VMS) # define FAKE_PERSISTENT_SIGNAL_HANDLERS #endif /* if we're doing kill() with sys$sigprc on VMS, FAKE_DEFAULT_SIGNAL_HANDLERS */ #if defined(KILL_BY_SIGPRC) # define FAKE_DEFAULT_SIGNAL_HANDLERS #endif #ifdef PERL_GLOBAL_STRUCT struct perl_vars { # include "perlvars.h" }; # ifdef PERL_CORE # ifndef PERL_GLOBAL_STRUCT_PRIVATE EXT struct perl_vars PL_Vars; EXT struct perl_vars *PL_VarsPtr INIT(&PL_Vars); # undef PERL_GET_VARS # define PERL_GET_VARS() PL_VarsPtr # endif /* !PERL_GLOBAL_STRUCT_PRIVATE */ # else /* PERL_CORE */ # if !defined(__GNUC__) || !defined(WIN32) EXT # endif /* WIN32 */ struct perl_vars *PL_VarsPtr; # define PL_Vars (*((PL_VarsPtr) \ ? PL_VarsPtr : (PL_VarsPtr = Perl_GetVars(aTHX)))) # endif /* PERL_CORE */ #endif /* PERL_GLOBAL_STRUCT */ #if defined(MULTIPLICITY) /* If we have multiple interpreters define a struct holding variables which must be per-interpreter If we don't have threads anything that would have be per-thread is per-interpreter. */ struct interpreter { # include "thrdvar.h" # include "intrpvar.h" /* * The following is a buffer where new variables must * be defined to maintain binary compatibility with previous versions */ PERLVARA(object_compatibility,30, char) }; #else struct interpreter { char broiled; }; #endif /* MULTIPLICITY */ typedef void *Thread; /* Done with PERLVAR macros for now ... */ #undef PERLVAR #undef PERLVARA #undef PERLVARI #undef PERLVARIC #undef PERLVARISC struct tempsym; /* defined in pp_pack.c */ #include "thread.h" #include "pp.h" #ifndef PERL_CALLCONV # ifdef __cplusplus # define PERL_CALLCONV extern "C" # else # define PERL_CALLCONV # endif #endif #undef PERL_CKDEF #undef PERL_PPDEF #define PERL_CKDEF(s) PERL_CALLCONV OP *s (pTHX_ OP *o); #define PERL_PPDEF(s) PERL_CALLCONV OP *s (pTHX); #include "proto.h" /* this has structure inits, so it cannot be included before here */ #include "opcode.h" /* The following must follow proto.h as #defines mess up syntax */ #if !defined(PERL_FOR_X2P) # include "embedvar.h" #endif #ifndef PERL_MAD # undef PL_madskills # undef PL_xmlfp # define PL_madskills 0 # define PL_xmlfp 0 #endif /* Now include all the 'global' variables * If we don't have threads or multiple interpreters * these include variables that would have been their struct-s */ #define PERLVAR(var,type) EXT type PL_##var; #define PERLVARA(var,n,type) EXT type PL_##var[n]; #define PERLVARI(var,type,init) EXT type PL_##var INIT(init); #define PERLVARIC(var,type,init) EXTCONST type PL_##var INIT(init); #define PERLVARISC(var,init) EXTCONST char PL_##var[sizeof(init)] INIT(init); #if !defined(MULTIPLICITY) START_EXTERN_C # include "intrpvar.h" # include "thrdvar.h" END_EXTERN_C #endif #if defined(WIN32) /* Now all the config stuff is setup we can include embed.h */ # include "embed.h" # ifndef PERL_MAD # undef op_getmad # define op_getmad(arg,pegop,slot) NOOP # endif #endif #ifndef PERL_GLOBAL_STRUCT START_EXTERN_C # include "perlvars.h" END_EXTERN_C #endif #undef PERLVAR #undef PERLVARA #undef PERLVARI #undef PERLVARIC START_EXTERN_C /* PERL_GLOBAL_STRUCT_PRIVATE wants to keep global data like the * magic vtables const, but this is incompatible with SWIG which * does want to modify the vtables. */ #ifdef PERL_GLOBAL_STRUCT_PRIVATE # define EXT_MGVTBL EXTCONST MGVTBL #else # define EXT_MGVTBL EXT MGVTBL #endif #ifdef DOINIT # define MGVTBL_SET(var,a,b,c,d,e,f,g,h) EXT_MGVTBL var = {a,b,c,d,e,f,g,h} /* Like MGVTBL_SET but with the get magic having a const MG* */ # define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g,h) EXT_MGVTBL var \ = {(int (*)(pTHX_ SV *, MAGIC *))a,b,c,d,e,f,g,h} #else # define MGVTBL_SET(var,a,b,c,d,e,f,g,h) EXT_MGVTBL var # define MGVTBL_SET_CONST_MAGIC_GET(var,a,b,c,d,e,f,g,h) EXT_MGVTBL var #endif MGVTBL_SET( PL_vtbl_sv, MEMBER_TO_FPTR(Perl_magic_get), MEMBER_TO_FPTR(Perl_magic_set), MEMBER_TO_FPTR(Perl_magic_len), NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_env, NULL, MEMBER_TO_FPTR(Perl_magic_set_all_env), NULL, MEMBER_TO_FPTR(Perl_magic_clear_all_env), NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_envelem, NULL, MEMBER_TO_FPTR(Perl_magic_setenv), NULL, MEMBER_TO_FPTR(Perl_magic_clearenv), NULL, NULL, NULL, NULL ); /* For now, hints magic will also use vtbl_sig, because it is all NULL */ MGVTBL_SET( PL_vtbl_sig, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); #ifdef PERL_MICRO MGVTBL_SET( PL_vtbl_sigelem, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); #else MGVTBL_SET( PL_vtbl_sigelem, MEMBER_TO_FPTR(Perl_magic_getsig), MEMBER_TO_FPTR(Perl_magic_setsig), NULL, MEMBER_TO_FPTR(Perl_magic_clearsig), NULL, NULL, NULL, NULL ); #endif MGVTBL_SET( PL_vtbl_pack, NULL, NULL, MEMBER_TO_FPTR(Perl_magic_sizepack), MEMBER_TO_FPTR(Perl_magic_wipepack), NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_packelem, MEMBER_TO_FPTR(Perl_magic_getpack), MEMBER_TO_FPTR(Perl_magic_setpack), NULL, MEMBER_TO_FPTR(Perl_magic_clearpack), NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_dbline, NULL, MEMBER_TO_FPTR(Perl_magic_setdbline), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_isa, NULL, MEMBER_TO_FPTR(Perl_magic_setisa), NULL, MEMBER_TO_FPTR(Perl_magic_setisa), NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_isaelem, NULL, MEMBER_TO_FPTR(Perl_magic_setisa), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET_CONST_MAGIC_GET( PL_vtbl_arylen, MEMBER_TO_FPTR(Perl_magic_getarylen), MEMBER_TO_FPTR(Perl_magic_setarylen), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_arylen_p, NULL, NULL, NULL, NULL, MEMBER_TO_FPTR(Perl_magic_freearylen_p), NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_mglob, NULL, MEMBER_TO_FPTR(Perl_magic_setmglob), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_nkeys, MEMBER_TO_FPTR(Perl_magic_getnkeys), MEMBER_TO_FPTR(Perl_magic_setnkeys), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_taint, MEMBER_TO_FPTR(Perl_magic_gettaint), MEMBER_TO_FPTR(Perl_magic_settaint), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_substr, MEMBER_TO_FPTR(Perl_magic_getsubstr), MEMBER_TO_FPTR(Perl_magic_setsubstr), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_vec, MEMBER_TO_FPTR(Perl_magic_getvec), MEMBER_TO_FPTR(Perl_magic_setvec), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_pos, MEMBER_TO_FPTR(Perl_magic_getpos), MEMBER_TO_FPTR(Perl_magic_setpos), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_bm, NULL, MEMBER_TO_FPTR(Perl_magic_setbm), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_fm, NULL, MEMBER_TO_FPTR(Perl_magic_setfm), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_uvar, MEMBER_TO_FPTR(Perl_magic_getuvar), MEMBER_TO_FPTR(Perl_magic_setuvar), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_defelem, MEMBER_TO_FPTR(Perl_magic_getdefelem), MEMBER_TO_FPTR(Perl_magic_setdefelem), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_regexp, NULL, MEMBER_TO_FPTR(Perl_magic_setregexp), NULL, NULL, MEMBER_TO_FPTR(Perl_magic_freeregexp), NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_regdata_names, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_regdata, NULL, NULL, MEMBER_TO_FPTR(Perl_magic_regdata_cnt), NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_regdatum, MEMBER_TO_FPTR(Perl_magic_regdatum_get), MEMBER_TO_FPTR(Perl_magic_regdatum_set), NULL, NULL, NULL, NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_amagic, NULL, MEMBER_TO_FPTR(Perl_magic_setamagic), NULL, NULL, MEMBER_TO_FPTR(Perl_magic_setamagic), NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_amagicelem, NULL, MEMBER_TO_FPTR(Perl_magic_setamagic), NULL, NULL, MEMBER_TO_FPTR(Perl_magic_setamagic), NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_backref, NULL, NULL, NULL, NULL, MEMBER_TO_FPTR(Perl_magic_killbackrefs), NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_ovrld, NULL, NULL, NULL, NULL, MEMBER_TO_FPTR(Perl_magic_freeovrld), NULL, NULL, NULL ); MGVTBL_SET( PL_vtbl_utf8, NULL, MEMBER_TO_FPTR(Perl_magic_setutf8), NULL, NULL, NULL, NULL, NULL, NULL ); #ifdef USE_LOCALE_COLLATE MGVTBL_SET( PL_vtbl_collxfrm, NULL, MEMBER_TO_FPTR(Perl_magic_setcollxfrm), NULL, NULL, NULL, NULL, NULL, NULL ); #endif MGVTBL_SET( PL_vtbl_hintselem, NULL, MEMBER_TO_FPTR(Perl_magic_sethint), NULL, MEMBER_TO_FPTR(Perl_magic_clearhint), NULL, NULL, NULL, NULL ); #include "overload.h" END_EXTERN_C struct am_table { U32 flags; U32 was_ok_sub; long was_ok_am; CV* table[NofAMmeth]; long fallback; }; struct am_table_short { U32 flags; U32 was_ok_sub; long was_ok_am; }; typedef struct am_table AMT; typedef struct am_table_short AMTS; #define AMGfallNEVER 1 #define AMGfallNO 2 #define AMGfallYES 3 #define AMTf_AMAGIC 1 #define AMTf_OVERLOADED 2 #define AMT_AMAGIC(amt) ((amt)->flags & AMTf_AMAGIC) #define AMT_AMAGIC_on(amt) ((amt)->flags |= AMTf_AMAGIC) #define AMT_AMAGIC_off(amt) ((amt)->flags &= ~AMTf_AMAGIC) #define AMT_OVERLOADED(amt) ((amt)->flags & AMTf_OVERLOADED) #define AMT_OVERLOADED_on(amt) ((amt)->flags |= AMTf_OVERLOADED) #define AMT_OVERLOADED_off(amt) ((amt)->flags &= ~AMTf_OVERLOADED) #define StashHANDLER(stash,meth) gv_handler((stash),CAT2(meth,_amg)) /* * some compilers like to redefine cos et alia as faster * (and less accurate?) versions called F_cos et cetera (Quidquid * latine dictum sit, altum viditur.) This trick collides with * the Perl overloading (amg). The following #defines fool both. */ #ifdef _FASTMATH # ifdef atan2 # define F_atan2_amg atan2_amg # endif # ifdef cos # define F_cos_amg cos_amg # endif # ifdef exp # define F_exp_amg exp_amg # endif # ifdef log # define F_log_amg log_amg # endif # ifdef pow # define F_pow_amg pow_amg # endif # ifdef sin # define F_sin_amg sin_amg # endif # ifdef sqrt # define F_sqrt_amg sqrt_amg # endif #endif /* _FASTMATH */ #define PERLDB_ALL (PERLDBf_SUB | PERLDBf_LINE | \ PERLDBf_NOOPT | PERLDBf_INTER | \ PERLDBf_SUBLINE| PERLDBf_SINGLE| \ PERLDBf_NAMEEVAL| PERLDBf_NAMEANON ) /* No _NONAME, _GOTO, _ASSERTION */ #define PERLDBf_SUB 0x01 /* Debug sub enter/exit */ #define PERLDBf_LINE 0x02 /* Keep line # */ #define PERLDBf_NOOPT 0x04 /* Switch off optimizations */ #define PERLDBf_INTER 0x08 /* Preserve more data for later inspections */ #define PERLDBf_SUBLINE 0x10 /* Keep subr source lines */ #define PERLDBf_SINGLE 0x20 /* Start with single-step on */ #define PERLDBf_NONAME 0x40 /* For _SUB: no name of the subr */ #define PERLDBf_GOTO 0x80 /* Report goto: call DB::goto */ #define PERLDBf_NAMEEVAL 0x100 /* Informative names for evals */ #define PERLDBf_NAMEANON 0x200 /* Informative names for anon subs */ #define PERLDBf_ASSERTION 0x400 /* Debug assertion subs enter/exit */ #define PERLDB_SUB (PL_perldb && (PL_perldb & PERLDBf_SUB)) #define PERLDB_LINE (PL_perldb && (PL_perldb & PERLDBf_LINE)) #define PERLDB_NOOPT (PL_perldb && (PL_perldb & PERLDBf_NOOPT)) #define PERLDB_INTER (PL_perldb && (PL_perldb & PERLDBf_INTER)) #define PERLDB_SUBLINE (PL_perldb && (PL_perldb & PERLDBf_SUBLINE)) #define PERLDB_SINGLE (PL_perldb && (PL_perldb & PERLDBf_SINGLE)) #define PERLDB_SUB_NN (PL_perldb && (PL_perldb & (PERLDBf_NONAME))) #define PERLDB_GOTO (PL_perldb && (PL_perldb & PERLDBf_GOTO)) #define PERLDB_NAMEEVAL (PL_perldb && (PL_perldb & PERLDBf_NAMEEVAL)) #define PERLDB_NAMEANON (PL_perldb && (PL_perldb & PERLDBf_NAMEANON)) #define PERLDB_ASSERTION (PL_perldb && (PL_perldb & PERLDBf_ASSERTION)) #ifdef USE_LOCALE_NUMERIC #define SET_NUMERIC_STANDARD() \ set_numeric_standard(); #define SET_NUMERIC_LOCAL() \ set_numeric_local(); #define IN_LOCALE_RUNTIME (CopHINTS_get(PL_curcop) & HINT_LOCALE) #define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE) #define IN_LOCALE \ (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME) #define STORE_NUMERIC_LOCAL_SET_STANDARD() \ bool was_local = PL_numeric_local && IN_LOCALE; \ if (was_local) SET_NUMERIC_STANDARD(); #define STORE_NUMERIC_STANDARD_SET_LOCAL() \ bool was_standard = PL_numeric_standard && IN_LOCALE; \ if (was_standard) SET_NUMERIC_LOCAL(); #define RESTORE_NUMERIC_LOCAL() \ if (was_local) SET_NUMERIC_LOCAL(); #define RESTORE_NUMERIC_STANDARD() \ if (was_standard) SET_NUMERIC_STANDARD(); #define Atof my_atof #else /* !USE_LOCALE_NUMERIC */ #define SET_NUMERIC_STANDARD() /**/ #define SET_NUMERIC_LOCAL() /**/ #define IS_NUMERIC_RADIX(a, b) (0) #define STORE_NUMERIC_LOCAL_SET_STANDARD() /**/ #define STORE_NUMERIC_STANDARD_SET_LOCAL() /**/ #define RESTORE_NUMERIC_LOCAL() /**/ #define RESTORE_NUMERIC_STANDARD() /**/ #define Atof my_atof #define IN_LOCALE_RUNTIME 0 #endif /* !USE_LOCALE_NUMERIC */ #if !defined(Strtol) && defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && QUADKIND == QUAD_IS_LONG_LONG # ifdef __hpux # define strtoll __strtoll /* secret handshake */ # endif # ifdef WIN64 # define strtoll _strtoi64 /* secret handshake */ # endif # if !defined(Strtol) && defined(HAS_STRTOLL) # define Strtol strtoll # endif # if !defined(Strtol) && defined(HAS_STRTOQ) # define Strtol strtoq # endif /* is there atoq() anywhere? */ #endif #if !defined(Strtol) && defined(HAS_STRTOL) # define Strtol strtol #endif #ifndef Atol /* It would be more fashionable to use Strtol() to define atol() * (as is done for Atoul(), see below) but for backward compatibility * we just assume atol(). */ # if defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && QUADKIND == QUAD_IS_LONG_LONG && defined(HAS_ATOLL) # ifdef WIN64 # define atoll _atoi64 /* secret handshake */ # endif # define Atol atoll # else # define Atol atol # endif #endif #if !defined(Strtoul) && defined(USE_64_BIT_INT) && defined(UV_IS_QUAD) && QUADKIND == QUAD_IS_LONG_LONG # ifdef __hpux # define strtoull __strtoull /* secret handshake */ # endif # ifdef WIN64 # define strtoull _strtoui64 /* secret handshake */ # endif # if !defined(Strtoul) && defined(HAS_STRTOULL) # define Strtoul strtoull # endif # if !defined(Strtoul) && defined(HAS_STRTOUQ) # define Strtoul strtouq # endif /* is there atouq() anywhere? */ #endif #if !defined(Strtoul) && defined(HAS_STRTOUL) # define Strtoul strtoul #endif #if !defined(Strtoul) && defined(HAS_STRTOL) /* Last resort. */ # define Strtoul(s, e, b) strchr((s), '-') ? ULONG_MAX : (unsigned long)strtol((s), (e), (b)) #endif #ifndef Atoul # define Atoul(s) Strtoul(s, NULL, 10) #endif /* if these never got defined, they need defaults */ #ifndef PERL_SET_CONTEXT # define PERL_SET_CONTEXT(i) PERL_SET_INTERP(i) #endif #ifndef PERL_GET_CONTEXT # define PERL_GET_CONTEXT PERL_GET_INTERP #endif #ifndef PERL_GET_THX # define PERL_GET_THX ((void*)NULL) #endif #ifndef PERL_SET_THX # define PERL_SET_THX(t) NOOP #endif #ifndef PERL_SCRIPT_MODE #define PERL_SCRIPT_MODE "r" #endif /* * Some operating systems are stingy with stack allocation, * so perl may have to guard against stack overflow. */ #ifndef PERL_STACK_OVERFLOW_CHECK #define PERL_STACK_OVERFLOW_CHECK() NOOP #endif /* * Some nonpreemptive operating systems find it convenient to * check for asynchronous conditions after each op execution. * Keep this check simple, or it may slow down execution * massively. */ #ifndef PERL_MICRO # ifndef PERL_ASYNC_CHECK # define PERL_ASYNC_CHECK() if (PL_sig_pending) despatch_signals() # endif #endif #ifndef PERL_ASYNC_CHECK # define PERL_ASYNC_CHECK() NOOP #endif /* * On some operating systems, a memory allocation may succeed, * but put the process too close to the system's comfort limit. * In this case, PERL_ALLOC_CHECK frees the pointer and sets * it to NULL. */ #ifndef PERL_ALLOC_CHECK #define PERL_ALLOC_CHECK(p) NOOP #endif #ifdef HAS_SEM # include # include # ifndef HAS_UNION_SEMUN /* Provide the union semun. */ union semun { int val; struct semid_ds *buf; unsigned short *array; }; # endif # ifdef USE_SEMCTL_SEMUN # ifdef IRIX32_SEMUN_BROKEN_BY_GCC union gccbug_semun { int val; struct semid_ds *buf; unsigned short *array; char __dummy[5]; }; # define semun gccbug_semun # endif # define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun) # else # ifdef USE_SEMCTL_SEMID_DS # ifdef EXTRA_F_IN_SEMUN_BUF # define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun.buff) # else # define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun.buf) # endif # endif # endif #endif /* * Boilerplate macros for initializing and accessing interpreter-local * data from C. All statics in extensions should be reworked to use * this, if you want to make the extension thread-safe. See * ext/XS/APItest/APItest.xs for an example of the use of these macros, * and perlxs.pod for more. * * Code that uses these macros is responsible for the following: * 1. #define MY_CXT_KEY to a unique string, e.g. * "DynaLoader::_guts" XS_VERSION * XXX in the current implementation, this string is ignored. * 2. Declare a typedef named my_cxt_t that is a structure that contains * all the data that needs to be interpreter-local. * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t. * 4. Use the MY_CXT_INIT macro such that it is called exactly once * (typically put in the BOOT: section). * 5. Use the members of the my_cxt_t structure everywhere as * MY_CXT.member. * 6. Use the dMY_CXT macro (a declaration) in all the functions that * access MY_CXT. */ #if defined(PERL_IMPLICIT_CONTEXT) /* This must appear in all extensions that define a my_cxt_t structure, * right after the definition (i.e. at file scope). The non-threads * case below uses it to declare the data as static. */ #define START_MY_CXT static int my_cxt_index = -1; /* This declaration should be used within all functions that use the * interpreter-local data. */ #define dMY_CXT \ my_cxt_t *my_cxtp = (my_cxt_t *)PL_my_cxt_list[my_cxt_index] #define dMY_CXT_INTERP(my_perl) \ my_cxt_t *my_cxtp = (my_cxt_t *)(my_perl)->Imy_cxt_list[my_cxt_index] /* Creates and zeroes the per-interpreter data. * (We allocate my_cxtp in a Perl SV so that it will be released when * the interpreter goes away.) */ #define MY_CXT_INIT \ my_cxt_t *my_cxtp = \ (my_cxt_t*)Perl_my_cxt_init(aTHX_ &my_cxt_index, sizeof(my_cxt_t)) #define MY_CXT_INIT_INTERP(my_perl) \ my_cxt_t *my_cxtp = \ (my_cxt_t*)Perl_my_cxt_init(my_perl, &my_cxt_index, sizeof(my_cxt_t)) /* Clones the per-interpreter data. */ #define MY_CXT_CLONE \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Copy(PL_my_cxt_list[my_cxt_index], my_cxtp, 1, my_cxt_t);\ PL_my_cxt_list[my_cxt_index] = my_cxtp \ /* This macro must be used to access members of the my_cxt_t structure. * e.g. MYCXT.some_data */ #define MY_CXT (*my_cxtp) /* Judicious use of these macros can reduce the number of times dMY_CXT * is used. Use is similar to pTHX, aTHX etc. */ #define pMY_CXT my_cxt_t *my_cxtp #define pMY_CXT_ pMY_CXT, #define _pMY_CXT ,pMY_CXT #define aMY_CXT my_cxtp #define aMY_CXT_ aMY_CXT, #define _aMY_CXT ,aMY_CXT #else /* PERL_IMPLICIT_CONTEXT */ #define START_MY_CXT static my_cxt_t my_cxt; #define dMY_CXT_SV dNOOP #define dMY_CXT dNOOP #define MY_CXT_INIT NOOP #define MY_CXT_CLONE NOOP #define MY_CXT my_cxt #define pMY_CXT void #define pMY_CXT_ #define _pMY_CXT #define aMY_CXT #define aMY_CXT_ #define _aMY_CXT #endif /* !defined(PERL_IMPLICIT_CONTEXT) */ #ifdef I_FCNTL # include #endif #ifdef __Lynx__ # include #endif #ifdef I_SYS_FILE # include #endif #if defined(HAS_FLOCK) && !defined(HAS_FLOCK_PROTO) int flock(int fd, int op); #endif #ifndef O_RDONLY /* Assume UNIX defaults */ # define O_RDONLY 0000 # define O_WRONLY 0001 # define O_RDWR 0002 # define O_CREAT 0100 #endif #ifndef O_BINARY # define O_BINARY 0 #endif #ifndef O_TEXT # define O_TEXT 0 #endif #if O_TEXT != O_BINARY /* If you have different O_TEXT and O_BINARY and you are a CLRF shop, * that is, you are somehow DOSish. */ # if defined(__BEOS__) || defined(__VOS__) || defined(__CYGWIN__) /* BeOS has O_TEXT != O_BINARY but O_TEXT and O_BINARY have no effect; * BeOS is always UNIXoid (LF), not DOSish (CRLF). */ /* VOS has O_TEXT != O_BINARY, and they have effect, * but VOS always uses LF, never CRLF. */ /* If you have O_TEXT different from your O_BINARY but you still are * not a CRLF shop. */ # undef PERLIO_USING_CRLF # else /* If you really are DOSish. */ # define PERLIO_USING_CRLF 1 # endif #endif #ifdef IAMSUID #ifdef I_SYS_STATVFS # if defined(PERL_SCO) && !defined(_SVID3) # define _SVID3 # endif # include /* for f?statvfs() */ #endif #ifdef I_SYS_MOUNT # include /* for *BSD f?statfs() */ #endif #ifdef I_MNTENT # include /* for getmntent() */ #endif #ifdef I_SYS_STATFS # include /* for some statfs() */ #endif #ifdef I_SYS_VFS # ifdef __sgi # define sv IRIX_sv /* kludge: IRIX has an sv of its own */ # endif # include /* for some statfs() */ # ifdef __sgi # undef IRIX_sv # endif #endif #ifdef I_USTAT # include /* for ustat() */ #endif #if !defined(PERL_MOUNT_NOSUID) && defined(MOUNT_NOSUID) # define PERL_MOUNT_NOSUID MOUNT_NOSUID #endif #if !defined(PERL_MOUNT_NOSUID) && defined(MNT_NOSUID) # define PERL_MOUNT_NOSUID MNT_NOSUID #endif #if !defined(PERL_MOUNT_NOSUID) && defined(MS_NOSUID) # define PERL_MOUNT_NOSUID MS_NOSUID #endif #if !defined(PERL_MOUNT_NOSUID) && defined(M_NOSUID) # define PERL_MOUNT_NOSUID M_NOSUID #endif #if !defined(PERL_MOUNT_NOEXEC) && defined(MOUNT_NOEXEC) # define PERL_MOUNT_NOEXEC MOUNT_NOEXEC #endif #if !defined(PERL_MOUNT_NOEXEC) && defined(MNT_NOEXEC) # define PERL_MOUNT_NOEXEC MNT_NOEXEC #endif #if !defined(PERL_MOUNT_NOEXEC) && defined(MS_NOEXEC) # define PERL_MOUNT_NOEXEC MS_NOEXEC #endif #if !defined(PERL_MOUNT_NOEXEC) && defined(M_NOEXEC) # define PERL_MOUNT_NOEXEC M_NOEXEC #endif #endif /* IAMSUID */ #ifdef I_LIBUTIL # include /* setproctitle() in some FreeBSDs */ #endif #ifndef EXEC_ARGV_CAST #define EXEC_ARGV_CAST(x) x #endif #define IS_NUMBER_IN_UV 0x01 /* number within UV range (maybe not int). value returned in pointed- to UV */ #define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 /* pointed to UV undefined */ #define IS_NUMBER_NOT_INT 0x04 /* saw . or E notation */ #define IS_NUMBER_NEG 0x08 /* leading minus sign */ #define IS_NUMBER_INFINITY 0x10 /* this is big */ #define IS_NUMBER_NAN 0x20 /* this is not */ #define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) /* Input flags: */ #define PERL_SCAN_ALLOW_UNDERSCORES 0x01 /* grok_??? accept _ in numbers */ #define PERL_SCAN_DISALLOW_PREFIX 0x02 /* grok_??? reject 0x in hex etc */ #define PERL_SCAN_SILENT_ILLDIGIT 0x04 /* grok_??? not warn about illegal digits */ /* Output flags: */ #define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 /* should this merge with above? */ /* to let user control profiling */ #ifdef PERL_GPROF_CONTROL extern void moncontrol(int); #define PERL_GPROF_MONCONTROL(x) moncontrol(x) #else #define PERL_GPROF_MONCONTROL(x) #endif #ifdef UNDER_CE #include "wince.h" #endif /* ISO 6429 NEL - C1 control NExt Line */ /* See http://www.unicode.org/unicode/reports/tr13/ */ #ifdef EBCDIC /* In EBCDIC NEL is just an alias for LF */ # if '^' == 95 /* CP 1047: MVS OpenEdition - OS/390 - z/OS */ # define NEXT_LINE_CHAR 0x15 # else /* CDRA */ # define NEXT_LINE_CHAR 0x25 # endif #else # define NEXT_LINE_CHAR 0x85 #endif /* The UTF-8 bytes of the Unicode LS and PS, U+2028 and U+2029 */ #define UNICODE_LINE_SEPA_0 0xE2 #define UNICODE_LINE_SEPA_1 0x80 #define UNICODE_LINE_SEPA_2 0xA8 #define UNICODE_PARA_SEPA_0 0xE2 #define UNICODE_PARA_SEPA_1 0x80 #define UNICODE_PARA_SEPA_2 0xA9 #ifndef PIPESOCK_MODE # define PIPESOCK_MODE #endif #ifndef SOCKET_OPEN_MODE # define SOCKET_OPEN_MODE PIPESOCK_MODE #endif #ifndef PIPE_OPEN_MODE # define PIPE_OPEN_MODE PIPESOCK_MODE #endif #define PERL_MAGIC_UTF8_CACHESIZE 2 #define PERL_UNICODE_STDIN_FLAG 0x0001 #define PERL_UNICODE_STDOUT_FLAG 0x0002 #define PERL_UNICODE_STDERR_FLAG 0x0004 #define PERL_UNICODE_IN_FLAG 0x0008 #define PERL_UNICODE_OUT_FLAG 0x0010 #define PERL_UNICODE_ARGV_FLAG 0x0020 #define PERL_UNICODE_LOCALE_FLAG 0x0040 #define PERL_UNICODE_WIDESYSCALLS_FLAG 0x0080 /* for Sarathy */ #define PERL_UNICODE_UTF8CACHEASSERT_FLAG 0x0100 #define PERL_UNICODE_STD_FLAG \ (PERL_UNICODE_STDIN_FLAG | \ PERL_UNICODE_STDOUT_FLAG | \ PERL_UNICODE_STDERR_FLAG) #define PERL_UNICODE_INOUT_FLAG \ (PERL_UNICODE_IN_FLAG | \ PERL_UNICODE_OUT_FLAG) #define PERL_UNICODE_DEFAULT_FLAGS \ (PERL_UNICODE_STD_FLAG | \ PERL_UNICODE_INOUT_FLAG | \ PERL_UNICODE_LOCALE_FLAG) #define PERL_UNICODE_ALL_FLAGS 0x01ff #define PERL_UNICODE_STDIN 'I' #define PERL_UNICODE_STDOUT 'O' #define PERL_UNICODE_STDERR 'E' #define PERL_UNICODE_STD 'S' #define PERL_UNICODE_IN 'i' #define PERL_UNICODE_OUT 'o' #define PERL_UNICODE_INOUT 'D' #define PERL_UNICODE_ARGV 'A' #define PERL_UNICODE_LOCALE 'L' #define PERL_UNICODE_WIDESYSCALLS 'W' #define PERL_UNICODE_UTF8CACHEASSERT 'a' #define PERL_SIGNALS_UNSAFE_FLAG 0x0001 /* From sigaction(2) (FreeBSD man page): * | Signal routines normally execute with the signal that * | caused their invocation blocked, but other signals may * | yet occur. * Emulation of this behavior (from within Perl) is enabled * by defining PERL_BLOCK_SIGNALS. */ #define PERL_BLOCK_SIGNALS #if defined(HAS_SIGPROCMASK) && defined(PERL_BLOCK_SIGNALS) # define PERL_BLOCKSIG_ADD(set,sig) \ sigset_t set; sigemptyset(&(set)); sigaddset(&(set), sig) # define PERL_BLOCKSIG_BLOCK(set) \ sigprocmask(SIG_BLOCK, &(set), NULL) # define PERL_BLOCKSIG_UNBLOCK(set) \ sigprocmask(SIG_UNBLOCK, &(set), NULL) #endif /* HAS_SIGPROCMASK && PERL_BLOCK_SIGNALS */ /* How about the old style of sigblock()? */ #ifndef PERL_BLOCKSIG_ADD # define PERL_BLOCKSIG_ADD(set, sig) NOOP #endif #ifndef PERL_BLOCKSIG_BLOCK # define PERL_BLOCKSIG_BLOCK(set) NOOP #endif #ifndef PERL_BLOCKSIG_UNBLOCK # define PERL_BLOCKSIG_UNBLOCK(set) NOOP #endif /* Use instead of abs() since abs() forces its argument to be an int, * but also beware since this evaluates its argument twice, so no x++. */ #define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) #if defined(__DECC) && defined(__osf__) #pragma message disable (mainparm) /* Perl uses the envp in main(). */ #endif #define do_open(g, n, l, a, rm, rp, sf) \ do_openn(g, n, l, a, rm, rp, sf, (SV **) NULL, 0) #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION # define do_exec(cmd) do_exec3(cmd,0,0) #endif #ifdef OS2 # define do_aexec Perl_do_aexec #else # define do_aexec(really, mark,sp) do_aexec5(really, mark, sp, 0, 0) #endif #if defined(OEMVS) #define NO_ENV_ARRAY_IN_MAIN #endif /* and finally... */ #define PERL_PATCHLEVEL_H_IMPLICIT #include "patchlevel.h" #undef PERL_PATCHLEVEL_H_IMPLICIT /* These are used by Perl_pv_escape() and Perl_pv_pretty() * are here so that they are available throughout the core * NOTE that even though some are for _escape and some for _pretty * there must not be any clashes as the flags from _pretty are * passed straight through to _escape. */ #define PERL_PV_ESCAPE_QUOTE 0x0001 #define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE #define PERL_PV_PRETTY_ELIPSES 0x0002 #define PERL_PV_PRETTY_LTGT 0x0004 #define PERL_PV_ESCAPE_FIRSTCHAR 0x0008 #define PERL_PV_ESCAPE_UNI 0x0100 #define PERL_PV_ESCAPE_UNI_DETECT 0x0200 #define PERL_PV_ESCAPE_ALL 0x1000 #define PERL_PV_ESCAPE_NOBACKSLASH 0x2000 #define PERL_PV_ESCAPE_NOCLEAR 0x4000 /* used by pv_display in dump.c*/ #define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELIPSES|PERL_PV_PRETTY_QUOTE #define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELIPSES|PERL_PV_PRETTY_LTGT /* (KEEP THIS LAST IN perl.h!) Mention NV_PRESERVES_UV HAS_MKSTEMP HAS_MKSTEMPS HAS_MKDTEMP HAS_GETCWD HAS_MMAP HAS_MPROTECT HAS_MSYNC HAS_MADVISE HAS_MUNMAP I_SYSMMAN Mmap_t NVef NVff NVgf HAS_UALARM HAS_USLEEP HAS_SETITIMER HAS_GETITIMER HAS_SENDMSG HAS_RECVMSG HAS_READV HAS_WRITEV I_SYSUIO HAS_STRUCT_MSGHDR HAS_STRUCT_CMSGHDR HAS_NL_LANGINFO HAS_DIRFD so that Configure picks them up. (KEEP THIS LAST IN perl.h!) */ #endif /* Include guard */ Convert-Binary-C-0.76/tests/include/perlinc/EXTERN.h0000644000175000001440000000342311550664630020612 0ustar mhxusers/* EXTERN.h * * Copyright (C) 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* * EXT designates a global var which is defined in perl.h * dEXT designates a global var which is defined in another * file, so we can't count on finding it in perl.h * (this practice should be avoided). */ #undef EXT #undef dEXT #undef EXTCONST #undef dEXTCONST #if defined(VMS) && !defined(__GNUC__) /* Suppress portability warnings from DECC for VMS-specific extensions */ # ifdef __DECC # pragma message disable (GLOBALEXT,NOSHAREEXT,READONLYEXT) # endif # define EXT globalref # define dEXT globaldef {"$GLOBAL_RW_VARS"} noshare # define EXTCONST globalref # define dEXTCONST globaldef {"$GLOBAL_RO_VARS"} readonly #else # if (defined(WIN32) || defined(__SYMBIAN32__)) && !defined(PERL_STATIC_SYMS) # if defined(PERLDLL) || defined(__SYMBIAN32__) # define EXT extern __declspec(dllexport) # define dEXT # define EXTCONST extern __declspec(dllexport) const # define dEXTCONST const # else # define EXT extern __declspec(dllimport) # define dEXT # define EXTCONST extern __declspec(dllimport) const # define dEXTCONST const # endif # else # if defined(__CYGWIN__) && defined(USEIMPORTLIB) # define EXT extern __declspec(dllimport) # define dEXT # define EXTCONST extern __declspec(dllimport) const # define dEXTCONST const # else # define EXT extern # define dEXT # define EXTCONST extern const # define dEXTCONST const # endif # endif #endif #undef INIT #define INIT(x) #undef DOINIT Convert-Binary-C-0.76/tests/include/perlinc/opcode.h0000644000175000001440000014302611550664630021062 0ustar mhxusers/* -*- buffer-read-only: t -*- * * opcode.h * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by opcode.pl from its data. Any changes made here * will be lost! */ #ifndef PERL_GLOBAL_STRUCT_INIT #define Perl_pp_i_preinc Perl_pp_preinc #define Perl_pp_i_predec Perl_pp_predec #define Perl_pp_i_postinc Perl_pp_postinc #define Perl_pp_i_postdec Perl_pp_postdec PERL_PPDEF(Perl_unimplemented_op) START_EXTERN_C #define OP_NAME(o) ((o)->op_type == OP_CUSTOM ? custom_op_name(o) : \ PL_op_name[(o)->op_type]) #define OP_DESC(o) ((o)->op_type == OP_CUSTOM ? custom_op_desc(o) : \ PL_op_desc[(o)->op_type]) #ifndef DOINIT EXTCONST char* const PL_op_name[]; #else EXTCONST char* const PL_op_name[] = { "null", "stub", "scalar", "pushmark", "wantarray", "const", "gvsv", "gv", "gelem", "padsv", "padav", "padhv", "padany", "pushre", "rv2gv", "rv2sv", "av2arylen", "rv2cv", "anoncode", "prototype", "refgen", "srefgen", "ref", "bless", "backtick", "glob", "readline", "rcatline", "regcmaybe", "regcreset", "regcomp", "match", "qr", "subst", "substcont", "trans", "sassign", "aassign", "chop", "schop", "chomp", "schomp", "defined", "undef", "study", "pos", "preinc", "i_preinc", "predec", "i_predec", "postinc", "i_postinc", "postdec", "i_postdec", "pow", "multiply", "i_multiply", "divide", "i_divide", "modulo", "i_modulo", "repeat", "add", "i_add", "subtract", "i_subtract", "concat", "stringify", "left_shift", "right_shift", "lt", "i_lt", "gt", "i_gt", "le", "i_le", "ge", "i_ge", "eq", "i_eq", "ne", "i_ne", "ncmp", "i_ncmp", "slt", "sgt", "sle", "sge", "seq", "sne", "scmp", "bit_and", "bit_xor", "bit_or", "negate", "i_negate", "not", "complement", "atan2", "sin", "cos", "rand", "srand", "exp", "log", "sqrt", "int", "hex", "oct", "abs", "length", "substr", "vec", "index", "rindex", "sprintf", "formline", "ord", "chr", "crypt", "ucfirst", "lcfirst", "uc", "lc", "quotemeta", "rv2av", "aelemfast", "aelem", "aslice", "each", "values", "keys", "delete", "exists", "rv2hv", "helem", "hslice", "unpack", "pack", "split", "join", "list", "lslice", "anonlist", "anonhash", "splice", "push", "pop", "shift", "unshift", "sort", "reverse", "grepstart", "grepwhile", "mapstart", "mapwhile", "range", "flip", "flop", "and", "or", "xor", "cond_expr", "andassign", "orassign", "method", "entersub", "leavesub", "leavesublv", "caller", "warn", "die", "reset", "lineseq", "nextstate", "dbstate", "unstack", "enter", "leave", "scope", "enteriter", "iter", "enterloop", "leaveloop", "return", "last", "next", "redo", "dump", "goto", "exit", "open", "close", "pipe_op", "fileno", "umask", "binmode", "tie", "untie", "tied", "dbmopen", "dbmclose", "sselect", "select", "getc", "read", "enterwrite", "leavewrite", "prtf", "print", "sysopen", "sysseek", "sysread", "syswrite", "send", "recv", "eof", "tell", "seek", "truncate", "fcntl", "ioctl", "flock", "socket", "sockpair", "bind", "connect", "listen", "accept", "shutdown", "gsockopt", "ssockopt", "getsockname", "getpeername", "lstat", "stat", "ftrread", "ftrwrite", "ftrexec", "fteread", "ftewrite", "fteexec", "ftis", "fteowned", "ftrowned", "ftzero", "ftsize", "ftmtime", "ftatime", "ftctime", "ftsock", "ftchr", "ftblk", "ftfile", "ftdir", "ftpipe", "ftlink", "ftsuid", "ftsgid", "ftsvtx", "fttty", "fttext", "ftbinary", "chdir", "chown", "chroot", "unlink", "chmod", "utime", "rename", "link", "symlink", "readlink", "mkdir", "rmdir", "open_dir", "readdir", "telldir", "seekdir", "rewinddir", "closedir", "fork", "wait", "waitpid", "system", "exec", "kill", "getppid", "getpgrp", "setpgrp", "getpriority", "setpriority", "time", "tms", "localtime", "gmtime", "alarm", "sleep", "shmget", "shmctl", "shmread", "shmwrite", "msgget", "msgctl", "msgsnd", "msgrcv", "semget", "semctl", "semop", "require", "dofile", "entereval", "leaveeval", "entertry", "leavetry", "ghbyname", "ghbyaddr", "ghostent", "gnbyname", "gnbyaddr", "gnetent", "gpbyname", "gpbynumber", "gprotoent", "gsbyname", "gsbyport", "gservent", "shostent", "snetent", "sprotoent", "sservent", "ehostent", "enetent", "eprotoent", "eservent", "gpwnam", "gpwuid", "gpwent", "spwent", "epwent", "ggrnam", "ggrgid", "ggrent", "sgrent", "egrent", "getlogin", "syscall", "lock", "threadsv", "setstate", "method_named", "dor", "dorassign", "entergiven", "leavegiven", "enterwhen", "leavewhen", "break", "continue", "smartmatch", "say", "custom", }; #endif #ifndef DOINIT EXTCONST char* const PL_op_desc[]; #else EXTCONST char* const PL_op_desc[] = { "null operation", "stub", "scalar", "pushmark", "wantarray", "constant item", "scalar variable", "glob value", "glob elem", "private variable", "private array", "private hash", "private value", "push regexp", "ref-to-glob cast", "scalar dereference", "array length", "subroutine dereference", "anonymous subroutine", "subroutine prototype", "reference constructor", "single ref constructor", "reference-type operator", "bless", "quoted execution (``, qx)", "glob", "", "append I/O operator", "regexp internal guard", "regexp internal reset", "regexp compilation", "pattern match (m//)", "pattern quote (qr//)", "substitution (s///)", "substitution iterator", "transliteration (tr///)", "scalar assignment", "list assignment", "chop", "scalar chop", "chomp", "scalar chomp", "defined operator", "undef operator", "study", "match position", "preincrement (++)", "integer preincrement (++)", "predecrement (--)", "integer predecrement (--)", "postincrement (++)", "integer postincrement (++)", "postdecrement (--)", "integer postdecrement (--)", "exponentiation (**)", "multiplication (*)", "integer multiplication (*)", "division (/)", "integer division (/)", "modulus (%)", "integer modulus (%)", "repeat (x)", "addition (+)", "integer addition (+)", "subtraction (-)", "integer subtraction (-)", "concatenation (.) or string", "string", "left bitshift (<<)", "right bitshift (>>)", "numeric lt (<)", "integer lt (<)", "numeric gt (>)", "integer gt (>)", "numeric le (<=)", "integer le (<=)", "numeric ge (>=)", "integer ge (>=)", "numeric eq (==)", "integer eq (==)", "numeric ne (!=)", "integer ne (!=)", "numeric comparison (<=>)", "integer comparison (<=>)", "string lt", "string gt", "string le", "string ge", "string eq", "string ne", "string comparison (cmp)", "bitwise and (&)", "bitwise xor (^)", "bitwise or (|)", "negation (-)", "integer negation (-)", "not", "1's complement (~)", "atan2", "sin", "cos", "rand", "srand", "exp", "log", "sqrt", "int", "hex", "oct", "abs", "length", "substr", "vec", "index", "rindex", "sprintf", "formline", "ord", "chr", "crypt", "ucfirst", "lcfirst", "uc", "lc", "quotemeta", "array dereference", "constant array element", "array element", "array slice", "each", "values", "keys", "delete", "exists", "hash dereference", "hash element", "hash slice", "unpack", "pack", "split", "join or string", "list", "list slice", "anonymous list ([])", "anonymous hash ({})", "splice", "push", "pop", "shift", "unshift", "sort", "reverse", "grep", "grep iterator", "map", "map iterator", "flipflop", "range (or flip)", "range (or flop)", "logical and (&&)", "logical or (||)", "logical xor", "conditional expression", "logical and assignment (&&=)", "logical or assignment (||=)", "method lookup", "subroutine entry", "subroutine exit", "lvalue subroutine return", "caller", "warn", "die", "symbol reset", "line sequence", "next statement", "debug next statement", "iteration finalizer", "block entry", "block exit", "block", "foreach loop entry", "foreach loop iterator", "loop entry", "loop exit", "return", "last", "next", "redo", "dump", "goto", "exit", "open", "close", "pipe", "fileno", "umask", "binmode", "tie", "untie", "tied", "dbmopen", "dbmclose", "select system call", "select", "getc", "read", "write", "write exit", "printf", "print", "sysopen", "sysseek", "sysread", "syswrite", "send", "recv", "eof", "tell", "seek", "truncate", "fcntl", "ioctl", "flock", "socket", "socketpair", "bind", "connect", "listen", "accept", "shutdown", "getsockopt", "setsockopt", "getsockname", "getpeername", "lstat", "stat", "-R", "-W", "-X", "-r", "-w", "-x", "-e", "-o", "-O", "-z", "-s", "-M", "-A", "-C", "-S", "-c", "-b", "-f", "-d", "-p", "-l", "-u", "-g", "-k", "-t", "-T", "-B", "chdir", "chown", "chroot", "unlink", "chmod", "utime", "rename", "link", "symlink", "readlink", "mkdir", "rmdir", "opendir", "readdir", "telldir", "seekdir", "rewinddir", "closedir", "fork", "wait", "waitpid", "system", "exec", "kill", "getppid", "getpgrp", "setpgrp", "getpriority", "setpriority", "time", "times", "localtime", "gmtime", "alarm", "sleep", "shmget", "shmctl", "shmread", "shmwrite", "msgget", "msgctl", "msgsnd", "msgrcv", "semget", "semctl", "semop", "require", "do \"file\"", "eval \"string\"", "eval \"string\" exit", "eval {block}", "eval {block} exit", "gethostbyname", "gethostbyaddr", "gethostent", "getnetbyname", "getnetbyaddr", "getnetent", "getprotobyname", "getprotobynumber", "getprotoent", "getservbyname", "getservbyport", "getservent", "sethostent", "setnetent", "setprotoent", "setservent", "endhostent", "endnetent", "endprotoent", "endservent", "getpwnam", "getpwuid", "getpwent", "setpwent", "endpwent", "getgrnam", "getgrgid", "getgrent", "setgrent", "endgrent", "getlogin", "syscall", "lock", "per-thread value", "set statement info", "method with known name", "defined or (//)", "defined or assignment (//=)", "given()", "leave given block", "when()", "leave when block", "break", "continue", "smart match", "say", "unknown custom operator", }; #endif END_EXTERN_C #endif /* !PERL_GLOBAL_STRUCT_INIT */ START_EXTERN_C #ifdef PERL_GLOBAL_STRUCT_INIT # define PERL_PPADDR_INITED static const Perl_ppaddr_t Gppaddr[] #else # ifndef PERL_GLOBAL_STRUCT # define PERL_PPADDR_INITED EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ # endif #endif /* PERL_GLOBAL_STRUCT */ #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT) # define PERL_PPADDR_INITED = { MEMBER_TO_FPTR(Perl_pp_null), MEMBER_TO_FPTR(Perl_pp_stub), MEMBER_TO_FPTR(Perl_pp_null), /* Perl_pp_scalar */ MEMBER_TO_FPTR(Perl_pp_pushmark), MEMBER_TO_FPTR(Perl_pp_wantarray), MEMBER_TO_FPTR(Perl_pp_const), MEMBER_TO_FPTR(Perl_pp_gvsv), MEMBER_TO_FPTR(Perl_pp_gv), MEMBER_TO_FPTR(Perl_pp_gelem), MEMBER_TO_FPTR(Perl_pp_padsv), MEMBER_TO_FPTR(Perl_pp_padav), MEMBER_TO_FPTR(Perl_pp_padhv), MEMBER_TO_FPTR(Perl_unimplemented_op), /* Perl_pp_padany */ MEMBER_TO_FPTR(Perl_pp_pushre), MEMBER_TO_FPTR(Perl_pp_rv2gv), MEMBER_TO_FPTR(Perl_pp_rv2sv), MEMBER_TO_FPTR(Perl_pp_av2arylen), MEMBER_TO_FPTR(Perl_pp_rv2cv), MEMBER_TO_FPTR(Perl_pp_anoncode), MEMBER_TO_FPTR(Perl_pp_prototype), MEMBER_TO_FPTR(Perl_pp_refgen), MEMBER_TO_FPTR(Perl_pp_srefgen), MEMBER_TO_FPTR(Perl_pp_ref), MEMBER_TO_FPTR(Perl_pp_bless), MEMBER_TO_FPTR(Perl_pp_backtick), MEMBER_TO_FPTR(Perl_pp_glob), MEMBER_TO_FPTR(Perl_pp_readline), MEMBER_TO_FPTR(Perl_pp_rcatline), MEMBER_TO_FPTR(Perl_pp_null), /* Perl_pp_regcmaybe */ MEMBER_TO_FPTR(Perl_pp_regcreset), MEMBER_TO_FPTR(Perl_pp_regcomp), MEMBER_TO_FPTR(Perl_pp_match), MEMBER_TO_FPTR(Perl_pp_qr), MEMBER_TO_FPTR(Perl_pp_subst), MEMBER_TO_FPTR(Perl_pp_substcont), MEMBER_TO_FPTR(Perl_pp_trans), MEMBER_TO_FPTR(Perl_pp_sassign), MEMBER_TO_FPTR(Perl_pp_aassign), MEMBER_TO_FPTR(Perl_pp_chop), MEMBER_TO_FPTR(Perl_pp_schop), MEMBER_TO_FPTR(Perl_pp_chomp), MEMBER_TO_FPTR(Perl_pp_schomp), MEMBER_TO_FPTR(Perl_pp_defined), MEMBER_TO_FPTR(Perl_pp_undef), MEMBER_TO_FPTR(Perl_pp_study), MEMBER_TO_FPTR(Perl_pp_pos), MEMBER_TO_FPTR(Perl_pp_preinc), MEMBER_TO_FPTR(Perl_pp_i_preinc), MEMBER_TO_FPTR(Perl_pp_predec), MEMBER_TO_FPTR(Perl_pp_i_predec), MEMBER_TO_FPTR(Perl_pp_postinc), MEMBER_TO_FPTR(Perl_pp_i_postinc), MEMBER_TO_FPTR(Perl_pp_postdec), MEMBER_TO_FPTR(Perl_pp_i_postdec), MEMBER_TO_FPTR(Perl_pp_pow), MEMBER_TO_FPTR(Perl_pp_multiply), MEMBER_TO_FPTR(Perl_pp_i_multiply), MEMBER_TO_FPTR(Perl_pp_divide), MEMBER_TO_FPTR(Perl_pp_i_divide), MEMBER_TO_FPTR(Perl_pp_modulo), MEMBER_TO_FPTR(Perl_pp_i_modulo), MEMBER_TO_FPTR(Perl_pp_repeat), MEMBER_TO_FPTR(Perl_pp_add), MEMBER_TO_FPTR(Perl_pp_i_add), MEMBER_TO_FPTR(Perl_pp_subtract), MEMBER_TO_FPTR(Perl_pp_i_subtract), MEMBER_TO_FPTR(Perl_pp_concat), MEMBER_TO_FPTR(Perl_pp_stringify), MEMBER_TO_FPTR(Perl_pp_left_shift), MEMBER_TO_FPTR(Perl_pp_right_shift), MEMBER_TO_FPTR(Perl_pp_lt), MEMBER_TO_FPTR(Perl_pp_i_lt), MEMBER_TO_FPTR(Perl_pp_gt), MEMBER_TO_FPTR(Perl_pp_i_gt), MEMBER_TO_FPTR(Perl_pp_le), MEMBER_TO_FPTR(Perl_pp_i_le), MEMBER_TO_FPTR(Perl_pp_ge), MEMBER_TO_FPTR(Perl_pp_i_ge), MEMBER_TO_FPTR(Perl_pp_eq), MEMBER_TO_FPTR(Perl_pp_i_eq), MEMBER_TO_FPTR(Perl_pp_ne), MEMBER_TO_FPTR(Perl_pp_i_ne), MEMBER_TO_FPTR(Perl_pp_ncmp), MEMBER_TO_FPTR(Perl_pp_i_ncmp), MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_slt */ MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_sgt */ MEMBER_TO_FPTR(Perl_pp_sle), MEMBER_TO_FPTR(Perl_pp_sle), /* Perl_pp_sge */ MEMBER_TO_FPTR(Perl_pp_seq), MEMBER_TO_FPTR(Perl_pp_sne), MEMBER_TO_FPTR(Perl_pp_scmp), MEMBER_TO_FPTR(Perl_pp_bit_and), MEMBER_TO_FPTR(Perl_pp_bit_or), /* Perl_pp_bit_xor */ MEMBER_TO_FPTR(Perl_pp_bit_or), MEMBER_TO_FPTR(Perl_pp_negate), MEMBER_TO_FPTR(Perl_pp_i_negate), MEMBER_TO_FPTR(Perl_pp_not), MEMBER_TO_FPTR(Perl_pp_complement), MEMBER_TO_FPTR(Perl_pp_atan2), MEMBER_TO_FPTR(Perl_pp_sin), MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_cos */ MEMBER_TO_FPTR(Perl_pp_rand), MEMBER_TO_FPTR(Perl_pp_srand), MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_exp */ MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_log */ MEMBER_TO_FPTR(Perl_pp_sin), /* Perl_pp_sqrt */ MEMBER_TO_FPTR(Perl_pp_int), MEMBER_TO_FPTR(Perl_pp_oct), /* Perl_pp_hex */ MEMBER_TO_FPTR(Perl_pp_oct), MEMBER_TO_FPTR(Perl_pp_abs), MEMBER_TO_FPTR(Perl_pp_length), MEMBER_TO_FPTR(Perl_pp_substr), MEMBER_TO_FPTR(Perl_pp_vec), MEMBER_TO_FPTR(Perl_pp_index), MEMBER_TO_FPTR(Perl_pp_index), /* Perl_pp_rindex */ MEMBER_TO_FPTR(Perl_pp_sprintf), MEMBER_TO_FPTR(Perl_pp_formline), MEMBER_TO_FPTR(Perl_pp_ord), MEMBER_TO_FPTR(Perl_pp_chr), MEMBER_TO_FPTR(Perl_pp_crypt), MEMBER_TO_FPTR(Perl_pp_ucfirst), MEMBER_TO_FPTR(Perl_pp_ucfirst), /* Perl_pp_lcfirst */ MEMBER_TO_FPTR(Perl_pp_uc), MEMBER_TO_FPTR(Perl_pp_lc), MEMBER_TO_FPTR(Perl_pp_quotemeta), MEMBER_TO_FPTR(Perl_pp_rv2av), MEMBER_TO_FPTR(Perl_pp_aelemfast), MEMBER_TO_FPTR(Perl_pp_aelem), MEMBER_TO_FPTR(Perl_pp_aslice), MEMBER_TO_FPTR(Perl_pp_each), MEMBER_TO_FPTR(Perl_do_kv), /* Perl_pp_values */ MEMBER_TO_FPTR(Perl_do_kv), /* Perl_pp_keys */ MEMBER_TO_FPTR(Perl_pp_delete), MEMBER_TO_FPTR(Perl_pp_exists), MEMBER_TO_FPTR(Perl_pp_rv2hv), MEMBER_TO_FPTR(Perl_pp_helem), MEMBER_TO_FPTR(Perl_pp_hslice), MEMBER_TO_FPTR(Perl_pp_unpack), MEMBER_TO_FPTR(Perl_pp_pack), MEMBER_TO_FPTR(Perl_pp_split), MEMBER_TO_FPTR(Perl_pp_join), MEMBER_TO_FPTR(Perl_pp_list), MEMBER_TO_FPTR(Perl_pp_lslice), MEMBER_TO_FPTR(Perl_pp_anonlist), MEMBER_TO_FPTR(Perl_pp_anonhash), MEMBER_TO_FPTR(Perl_pp_splice), MEMBER_TO_FPTR(Perl_pp_push), MEMBER_TO_FPTR(Perl_pp_shift), /* Perl_pp_pop */ MEMBER_TO_FPTR(Perl_pp_shift), MEMBER_TO_FPTR(Perl_pp_unshift), MEMBER_TO_FPTR(Perl_pp_sort), MEMBER_TO_FPTR(Perl_pp_reverse), MEMBER_TO_FPTR(Perl_pp_grepstart), MEMBER_TO_FPTR(Perl_pp_grepwhile), MEMBER_TO_FPTR(Perl_unimplemented_op), /* Perl_pp_mapstart */ MEMBER_TO_FPTR(Perl_pp_mapwhile), MEMBER_TO_FPTR(Perl_pp_range), MEMBER_TO_FPTR(Perl_pp_flip), MEMBER_TO_FPTR(Perl_pp_flop), MEMBER_TO_FPTR(Perl_pp_and), MEMBER_TO_FPTR(Perl_pp_or), MEMBER_TO_FPTR(Perl_pp_xor), MEMBER_TO_FPTR(Perl_pp_cond_expr), MEMBER_TO_FPTR(Perl_pp_and), /* Perl_pp_andassign */ MEMBER_TO_FPTR(Perl_pp_or), /* Perl_pp_orassign */ MEMBER_TO_FPTR(Perl_pp_method), MEMBER_TO_FPTR(Perl_pp_entersub), MEMBER_TO_FPTR(Perl_pp_leavesub), MEMBER_TO_FPTR(Perl_pp_leavesublv), MEMBER_TO_FPTR(Perl_pp_caller), MEMBER_TO_FPTR(Perl_pp_warn), MEMBER_TO_FPTR(Perl_pp_die), MEMBER_TO_FPTR(Perl_pp_reset), MEMBER_TO_FPTR(Perl_pp_null), /* Perl_pp_lineseq */ MEMBER_TO_FPTR(Perl_pp_nextstate), MEMBER_TO_FPTR(Perl_pp_dbstate), MEMBER_TO_FPTR(Perl_pp_unstack), MEMBER_TO_FPTR(Perl_pp_enter), MEMBER_TO_FPTR(Perl_pp_leave), MEMBER_TO_FPTR(Perl_pp_null), /* Perl_pp_scope */ MEMBER_TO_FPTR(Perl_pp_enteriter), MEMBER_TO_FPTR(Perl_pp_iter), MEMBER_TO_FPTR(Perl_pp_enterloop), MEMBER_TO_FPTR(Perl_pp_leaveloop), MEMBER_TO_FPTR(Perl_pp_return), MEMBER_TO_FPTR(Perl_pp_last), MEMBER_TO_FPTR(Perl_pp_next), MEMBER_TO_FPTR(Perl_pp_redo), MEMBER_TO_FPTR(Perl_pp_goto), /* Perl_pp_dump */ MEMBER_TO_FPTR(Perl_pp_goto), MEMBER_TO_FPTR(Perl_pp_exit), MEMBER_TO_FPTR(Perl_pp_open), MEMBER_TO_FPTR(Perl_pp_close), MEMBER_TO_FPTR(Perl_pp_pipe_op), MEMBER_TO_FPTR(Perl_pp_fileno), MEMBER_TO_FPTR(Perl_pp_umask), MEMBER_TO_FPTR(Perl_pp_binmode), MEMBER_TO_FPTR(Perl_pp_tie), MEMBER_TO_FPTR(Perl_pp_untie), MEMBER_TO_FPTR(Perl_pp_tied), MEMBER_TO_FPTR(Perl_pp_dbmopen), MEMBER_TO_FPTR(Perl_pp_untie), /* Perl_pp_dbmclose */ MEMBER_TO_FPTR(Perl_pp_sselect), MEMBER_TO_FPTR(Perl_pp_select), MEMBER_TO_FPTR(Perl_pp_getc), MEMBER_TO_FPTR(Perl_pp_sysread), /* Perl_pp_read */ MEMBER_TO_FPTR(Perl_pp_enterwrite), MEMBER_TO_FPTR(Perl_pp_leavewrite), MEMBER_TO_FPTR(Perl_pp_prtf), MEMBER_TO_FPTR(Perl_pp_print), MEMBER_TO_FPTR(Perl_pp_sysopen), MEMBER_TO_FPTR(Perl_pp_sysseek), MEMBER_TO_FPTR(Perl_pp_sysread), MEMBER_TO_FPTR(Perl_pp_send), /* Perl_pp_syswrite */ MEMBER_TO_FPTR(Perl_pp_send), MEMBER_TO_FPTR(Perl_pp_sysread), /* Perl_pp_recv */ MEMBER_TO_FPTR(Perl_pp_eof), MEMBER_TO_FPTR(Perl_pp_tell), MEMBER_TO_FPTR(Perl_pp_sysseek), /* Perl_pp_seek */ MEMBER_TO_FPTR(Perl_pp_truncate), MEMBER_TO_FPTR(Perl_pp_ioctl), /* Perl_pp_fcntl */ MEMBER_TO_FPTR(Perl_pp_ioctl), MEMBER_TO_FPTR(Perl_pp_flock), MEMBER_TO_FPTR(Perl_pp_socket), MEMBER_TO_FPTR(Perl_pp_sockpair), MEMBER_TO_FPTR(Perl_pp_bind), MEMBER_TO_FPTR(Perl_pp_connect), MEMBER_TO_FPTR(Perl_pp_listen), MEMBER_TO_FPTR(Perl_pp_accept), MEMBER_TO_FPTR(Perl_pp_shutdown), MEMBER_TO_FPTR(Perl_pp_ssockopt), /* Perl_pp_gsockopt */ MEMBER_TO_FPTR(Perl_pp_ssockopt), MEMBER_TO_FPTR(Perl_pp_getpeername), /* Perl_pp_getsockname */ MEMBER_TO_FPTR(Perl_pp_getpeername), MEMBER_TO_FPTR(Perl_pp_stat), /* Perl_pp_lstat */ MEMBER_TO_FPTR(Perl_pp_stat), MEMBER_TO_FPTR(Perl_pp_ftrread), MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_ftrwrite */ MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_ftrexec */ MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_fteread */ MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_ftewrite */ MEMBER_TO_FPTR(Perl_pp_ftrread), /* Perl_pp_fteexec */ MEMBER_TO_FPTR(Perl_pp_ftis), MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_fteowned */ MEMBER_TO_FPTR(Perl_pp_ftrowned), MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftzero */ MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftsize */ MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftmtime */ MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftatime */ MEMBER_TO_FPTR(Perl_pp_ftis), /* Perl_pp_ftctime */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsock */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftchr */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftblk */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftfile */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftdir */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftpipe */ MEMBER_TO_FPTR(Perl_pp_ftlink), MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsuid */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsgid */ MEMBER_TO_FPTR(Perl_pp_ftrowned), /* Perl_pp_ftsvtx */ MEMBER_TO_FPTR(Perl_pp_fttty), MEMBER_TO_FPTR(Perl_pp_fttext), MEMBER_TO_FPTR(Perl_pp_fttext), /* Perl_pp_ftbinary */ MEMBER_TO_FPTR(Perl_pp_chdir), MEMBER_TO_FPTR(Perl_pp_chown), MEMBER_TO_FPTR(Perl_pp_chroot), MEMBER_TO_FPTR(Perl_pp_chown), /* Perl_pp_unlink */ MEMBER_TO_FPTR(Perl_pp_chown), /* Perl_pp_chmod */ MEMBER_TO_FPTR(Perl_pp_chown), /* Perl_pp_utime */ MEMBER_TO_FPTR(Perl_pp_rename), MEMBER_TO_FPTR(Perl_pp_link), MEMBER_TO_FPTR(Perl_pp_link), /* Perl_pp_symlink */ MEMBER_TO_FPTR(Perl_pp_readlink), MEMBER_TO_FPTR(Perl_pp_mkdir), MEMBER_TO_FPTR(Perl_pp_rmdir), MEMBER_TO_FPTR(Perl_pp_open_dir), MEMBER_TO_FPTR(Perl_pp_readdir), MEMBER_TO_FPTR(Perl_pp_telldir), MEMBER_TO_FPTR(Perl_pp_seekdir), MEMBER_TO_FPTR(Perl_pp_rewinddir), MEMBER_TO_FPTR(Perl_pp_closedir), MEMBER_TO_FPTR(Perl_pp_fork), MEMBER_TO_FPTR(Perl_pp_wait), MEMBER_TO_FPTR(Perl_pp_waitpid), MEMBER_TO_FPTR(Perl_pp_system), MEMBER_TO_FPTR(Perl_pp_exec), MEMBER_TO_FPTR(Perl_pp_chown), /* Perl_pp_kill */ MEMBER_TO_FPTR(Perl_pp_getppid), MEMBER_TO_FPTR(Perl_pp_getpgrp), MEMBER_TO_FPTR(Perl_pp_setpgrp), MEMBER_TO_FPTR(Perl_pp_getpriority), MEMBER_TO_FPTR(Perl_pp_setpriority), MEMBER_TO_FPTR(Perl_pp_time), MEMBER_TO_FPTR(Perl_pp_tms), MEMBER_TO_FPTR(Perl_pp_gmtime), /* Perl_pp_localtime */ MEMBER_TO_FPTR(Perl_pp_gmtime), MEMBER_TO_FPTR(Perl_pp_alarm), MEMBER_TO_FPTR(Perl_pp_sleep), MEMBER_TO_FPTR(Perl_pp_semget), /* Perl_pp_shmget */ MEMBER_TO_FPTR(Perl_pp_semctl), /* Perl_pp_shmctl */ MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_shmread */ MEMBER_TO_FPTR(Perl_pp_shmwrite), MEMBER_TO_FPTR(Perl_pp_semget), /* Perl_pp_msgget */ MEMBER_TO_FPTR(Perl_pp_semctl), /* Perl_pp_msgctl */ MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_msgsnd */ MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_msgrcv */ MEMBER_TO_FPTR(Perl_pp_semget), MEMBER_TO_FPTR(Perl_pp_semctl), MEMBER_TO_FPTR(Perl_pp_shmwrite), /* Perl_pp_semop */ MEMBER_TO_FPTR(Perl_pp_require), MEMBER_TO_FPTR(Perl_pp_require), /* Perl_pp_dofile */ MEMBER_TO_FPTR(Perl_pp_entereval), MEMBER_TO_FPTR(Perl_pp_leaveeval), MEMBER_TO_FPTR(Perl_pp_entertry), MEMBER_TO_FPTR(Perl_pp_leavetry), MEMBER_TO_FPTR(Perl_pp_ghostent), /* Perl_pp_ghbyname */ MEMBER_TO_FPTR(Perl_pp_ghostent), /* Perl_pp_ghbyaddr */ MEMBER_TO_FPTR(Perl_pp_ghostent), MEMBER_TO_FPTR(Perl_pp_gnetent), /* Perl_pp_gnbyname */ MEMBER_TO_FPTR(Perl_pp_gnetent), /* Perl_pp_gnbyaddr */ MEMBER_TO_FPTR(Perl_pp_gnetent), MEMBER_TO_FPTR(Perl_pp_gprotoent), /* Perl_pp_gpbyname */ MEMBER_TO_FPTR(Perl_pp_gprotoent), /* Perl_pp_gpbynumber */ MEMBER_TO_FPTR(Perl_pp_gprotoent), MEMBER_TO_FPTR(Perl_pp_gservent), /* Perl_pp_gsbyname */ MEMBER_TO_FPTR(Perl_pp_gservent), /* Perl_pp_gsbyport */ MEMBER_TO_FPTR(Perl_pp_gservent), MEMBER_TO_FPTR(Perl_pp_shostent), MEMBER_TO_FPTR(Perl_pp_snetent), MEMBER_TO_FPTR(Perl_pp_sprotoent), MEMBER_TO_FPTR(Perl_pp_sservent), MEMBER_TO_FPTR(Perl_pp_ehostent), MEMBER_TO_FPTR(Perl_pp_enetent), MEMBER_TO_FPTR(Perl_pp_eprotoent), MEMBER_TO_FPTR(Perl_pp_eservent), MEMBER_TO_FPTR(Perl_pp_gpwent), /* Perl_pp_gpwnam */ MEMBER_TO_FPTR(Perl_pp_gpwent), /* Perl_pp_gpwuid */ MEMBER_TO_FPTR(Perl_pp_gpwent), MEMBER_TO_FPTR(Perl_pp_spwent), MEMBER_TO_FPTR(Perl_pp_epwent), MEMBER_TO_FPTR(Perl_pp_ggrent), /* Perl_pp_ggrnam */ MEMBER_TO_FPTR(Perl_pp_ggrent), /* Perl_pp_ggrgid */ MEMBER_TO_FPTR(Perl_pp_ggrent), MEMBER_TO_FPTR(Perl_pp_sgrent), MEMBER_TO_FPTR(Perl_pp_egrent), MEMBER_TO_FPTR(Perl_pp_getlogin), MEMBER_TO_FPTR(Perl_pp_syscall), MEMBER_TO_FPTR(Perl_pp_lock), MEMBER_TO_FPTR(Perl_unimplemented_op), /* Perl_pp_threadsv */ MEMBER_TO_FPTR(Perl_pp_setstate), MEMBER_TO_FPTR(Perl_pp_method_named), MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dor */ MEMBER_TO_FPTR(Perl_pp_defined), /* Perl_pp_dorassign */ MEMBER_TO_FPTR(Perl_pp_entergiven), MEMBER_TO_FPTR(Perl_pp_leavegiven), MEMBER_TO_FPTR(Perl_pp_enterwhen), MEMBER_TO_FPTR(Perl_pp_leavewhen), MEMBER_TO_FPTR(Perl_pp_break), MEMBER_TO_FPTR(Perl_pp_continue), MEMBER_TO_FPTR(Perl_pp_smartmatch), MEMBER_TO_FPTR(Perl_pp_print), /* Perl_pp_say */ } #endif #ifdef PERL_PPADDR_INITED ; #endif #ifdef PERL_GLOBAL_STRUCT_INIT # define PERL_CHECK_INITED static const Perl_check_t Gcheck[] #else # ifndef PERL_GLOBAL_STRUCT # define PERL_CHECK_INITED EXT Perl_check_t PL_check[] /* or perlvars.h */ # endif #endif #if (defined(DOINIT) && !defined(PERL_GLOBAL_STRUCT)) || defined(PERL_GLOBAL_STRUCT_INIT) # define PERL_CHECK_INITED = { MEMBER_TO_FPTR(Perl_ck_null), /* null */ MEMBER_TO_FPTR(Perl_ck_null), /* stub */ MEMBER_TO_FPTR(Perl_ck_fun), /* scalar */ MEMBER_TO_FPTR(Perl_ck_null), /* pushmark */ MEMBER_TO_FPTR(Perl_ck_null), /* wantarray */ MEMBER_TO_FPTR(Perl_ck_svconst), /* const */ MEMBER_TO_FPTR(Perl_ck_null), /* gvsv */ MEMBER_TO_FPTR(Perl_ck_null), /* gv */ MEMBER_TO_FPTR(Perl_ck_null), /* gelem */ MEMBER_TO_FPTR(Perl_ck_null), /* padsv */ MEMBER_TO_FPTR(Perl_ck_null), /* padav */ MEMBER_TO_FPTR(Perl_ck_null), /* padhv */ MEMBER_TO_FPTR(Perl_ck_null), /* padany */ MEMBER_TO_FPTR(Perl_ck_null), /* pushre */ MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2gv */ MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2sv */ MEMBER_TO_FPTR(Perl_ck_null), /* av2arylen */ MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2cv */ MEMBER_TO_FPTR(Perl_ck_anoncode), /* anoncode */ MEMBER_TO_FPTR(Perl_ck_null), /* prototype */ MEMBER_TO_FPTR(Perl_ck_spair), /* refgen */ MEMBER_TO_FPTR(Perl_ck_null), /* srefgen */ MEMBER_TO_FPTR(Perl_ck_fun), /* ref */ MEMBER_TO_FPTR(Perl_ck_fun), /* bless */ MEMBER_TO_FPTR(Perl_ck_open), /* backtick */ MEMBER_TO_FPTR(Perl_ck_glob), /* glob */ MEMBER_TO_FPTR(Perl_ck_null), /* readline */ MEMBER_TO_FPTR(Perl_ck_null), /* rcatline */ MEMBER_TO_FPTR(Perl_ck_fun), /* regcmaybe */ MEMBER_TO_FPTR(Perl_ck_fun), /* regcreset */ MEMBER_TO_FPTR(Perl_ck_null), /* regcomp */ MEMBER_TO_FPTR(Perl_ck_match), /* match */ MEMBER_TO_FPTR(Perl_ck_match), /* qr */ MEMBER_TO_FPTR(Perl_ck_match), /* subst */ MEMBER_TO_FPTR(Perl_ck_null), /* substcont */ MEMBER_TO_FPTR(Perl_ck_match), /* trans */ MEMBER_TO_FPTR(Perl_ck_sassign), /* sassign */ MEMBER_TO_FPTR(Perl_ck_null), /* aassign */ MEMBER_TO_FPTR(Perl_ck_spair), /* chop */ MEMBER_TO_FPTR(Perl_ck_null), /* schop */ MEMBER_TO_FPTR(Perl_ck_spair), /* chomp */ MEMBER_TO_FPTR(Perl_ck_null), /* schomp */ MEMBER_TO_FPTR(Perl_ck_defined), /* defined */ MEMBER_TO_FPTR(Perl_ck_lfun), /* undef */ MEMBER_TO_FPTR(Perl_ck_fun), /* study */ MEMBER_TO_FPTR(Perl_ck_lfun), /* pos */ MEMBER_TO_FPTR(Perl_ck_lfun), /* preinc */ MEMBER_TO_FPTR(Perl_ck_lfun), /* i_preinc */ MEMBER_TO_FPTR(Perl_ck_lfun), /* predec */ MEMBER_TO_FPTR(Perl_ck_lfun), /* i_predec */ MEMBER_TO_FPTR(Perl_ck_lfun), /* postinc */ MEMBER_TO_FPTR(Perl_ck_lfun), /* i_postinc */ MEMBER_TO_FPTR(Perl_ck_lfun), /* postdec */ MEMBER_TO_FPTR(Perl_ck_lfun), /* i_postdec */ MEMBER_TO_FPTR(Perl_ck_null), /* pow */ MEMBER_TO_FPTR(Perl_ck_null), /* multiply */ MEMBER_TO_FPTR(Perl_ck_null), /* i_multiply */ MEMBER_TO_FPTR(Perl_ck_null), /* divide */ MEMBER_TO_FPTR(Perl_ck_null), /* i_divide */ MEMBER_TO_FPTR(Perl_ck_null), /* modulo */ MEMBER_TO_FPTR(Perl_ck_null), /* i_modulo */ MEMBER_TO_FPTR(Perl_ck_repeat), /* repeat */ MEMBER_TO_FPTR(Perl_ck_null), /* add */ MEMBER_TO_FPTR(Perl_ck_null), /* i_add */ MEMBER_TO_FPTR(Perl_ck_null), /* subtract */ MEMBER_TO_FPTR(Perl_ck_null), /* i_subtract */ MEMBER_TO_FPTR(Perl_ck_concat), /* concat */ MEMBER_TO_FPTR(Perl_ck_fun), /* stringify */ MEMBER_TO_FPTR(Perl_ck_bitop), /* left_shift */ MEMBER_TO_FPTR(Perl_ck_bitop), /* right_shift */ MEMBER_TO_FPTR(Perl_ck_null), /* lt */ MEMBER_TO_FPTR(Perl_ck_null), /* i_lt */ MEMBER_TO_FPTR(Perl_ck_null), /* gt */ MEMBER_TO_FPTR(Perl_ck_null), /* i_gt */ MEMBER_TO_FPTR(Perl_ck_null), /* le */ MEMBER_TO_FPTR(Perl_ck_null), /* i_le */ MEMBER_TO_FPTR(Perl_ck_null), /* ge */ MEMBER_TO_FPTR(Perl_ck_null), /* i_ge */ MEMBER_TO_FPTR(Perl_ck_null), /* eq */ MEMBER_TO_FPTR(Perl_ck_null), /* i_eq */ MEMBER_TO_FPTR(Perl_ck_null), /* ne */ MEMBER_TO_FPTR(Perl_ck_null), /* i_ne */ MEMBER_TO_FPTR(Perl_ck_null), /* ncmp */ MEMBER_TO_FPTR(Perl_ck_null), /* i_ncmp */ MEMBER_TO_FPTR(Perl_ck_null), /* slt */ MEMBER_TO_FPTR(Perl_ck_null), /* sgt */ MEMBER_TO_FPTR(Perl_ck_null), /* sle */ MEMBER_TO_FPTR(Perl_ck_null), /* sge */ MEMBER_TO_FPTR(Perl_ck_null), /* seq */ MEMBER_TO_FPTR(Perl_ck_null), /* sne */ MEMBER_TO_FPTR(Perl_ck_null), /* scmp */ MEMBER_TO_FPTR(Perl_ck_bitop), /* bit_and */ MEMBER_TO_FPTR(Perl_ck_bitop), /* bit_xor */ MEMBER_TO_FPTR(Perl_ck_bitop), /* bit_or */ MEMBER_TO_FPTR(Perl_ck_null), /* negate */ MEMBER_TO_FPTR(Perl_ck_null), /* i_negate */ MEMBER_TO_FPTR(Perl_ck_null), /* not */ MEMBER_TO_FPTR(Perl_ck_bitop), /* complement */ MEMBER_TO_FPTR(Perl_ck_fun), /* atan2 */ MEMBER_TO_FPTR(Perl_ck_fun), /* sin */ MEMBER_TO_FPTR(Perl_ck_fun), /* cos */ MEMBER_TO_FPTR(Perl_ck_fun), /* rand */ MEMBER_TO_FPTR(Perl_ck_fun), /* srand */ MEMBER_TO_FPTR(Perl_ck_fun), /* exp */ MEMBER_TO_FPTR(Perl_ck_fun), /* log */ MEMBER_TO_FPTR(Perl_ck_fun), /* sqrt */ MEMBER_TO_FPTR(Perl_ck_fun), /* int */ MEMBER_TO_FPTR(Perl_ck_fun), /* hex */ MEMBER_TO_FPTR(Perl_ck_fun), /* oct */ MEMBER_TO_FPTR(Perl_ck_fun), /* abs */ MEMBER_TO_FPTR(Perl_ck_lengthconst), /* length */ MEMBER_TO_FPTR(Perl_ck_substr), /* substr */ MEMBER_TO_FPTR(Perl_ck_fun), /* vec */ MEMBER_TO_FPTR(Perl_ck_index), /* index */ MEMBER_TO_FPTR(Perl_ck_index), /* rindex */ MEMBER_TO_FPTR(Perl_ck_fun), /* sprintf */ MEMBER_TO_FPTR(Perl_ck_fun), /* formline */ MEMBER_TO_FPTR(Perl_ck_fun), /* ord */ MEMBER_TO_FPTR(Perl_ck_fun), /* chr */ MEMBER_TO_FPTR(Perl_ck_fun), /* crypt */ MEMBER_TO_FPTR(Perl_ck_fun), /* ucfirst */ MEMBER_TO_FPTR(Perl_ck_fun), /* lcfirst */ MEMBER_TO_FPTR(Perl_ck_fun), /* uc */ MEMBER_TO_FPTR(Perl_ck_fun), /* lc */ MEMBER_TO_FPTR(Perl_ck_fun), /* quotemeta */ MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2av */ MEMBER_TO_FPTR(Perl_ck_null), /* aelemfast */ MEMBER_TO_FPTR(Perl_ck_null), /* aelem */ MEMBER_TO_FPTR(Perl_ck_null), /* aslice */ MEMBER_TO_FPTR(Perl_ck_fun), /* each */ MEMBER_TO_FPTR(Perl_ck_fun), /* values */ MEMBER_TO_FPTR(Perl_ck_fun), /* keys */ MEMBER_TO_FPTR(Perl_ck_delete), /* delete */ MEMBER_TO_FPTR(Perl_ck_exists), /* exists */ MEMBER_TO_FPTR(Perl_ck_rvconst), /* rv2hv */ MEMBER_TO_FPTR(Perl_ck_null), /* helem */ MEMBER_TO_FPTR(Perl_ck_null), /* hslice */ MEMBER_TO_FPTR(Perl_ck_unpack), /* unpack */ MEMBER_TO_FPTR(Perl_ck_fun), /* pack */ MEMBER_TO_FPTR(Perl_ck_split), /* split */ MEMBER_TO_FPTR(Perl_ck_join), /* join */ MEMBER_TO_FPTR(Perl_ck_null), /* list */ MEMBER_TO_FPTR(Perl_ck_null), /* lslice */ MEMBER_TO_FPTR(Perl_ck_fun), /* anonlist */ MEMBER_TO_FPTR(Perl_ck_fun), /* anonhash */ MEMBER_TO_FPTR(Perl_ck_fun), /* splice */ MEMBER_TO_FPTR(Perl_ck_fun), /* push */ MEMBER_TO_FPTR(Perl_ck_shift), /* pop */ MEMBER_TO_FPTR(Perl_ck_shift), /* shift */ MEMBER_TO_FPTR(Perl_ck_fun), /* unshift */ MEMBER_TO_FPTR(Perl_ck_sort), /* sort */ MEMBER_TO_FPTR(Perl_ck_fun), /* reverse */ MEMBER_TO_FPTR(Perl_ck_grep), /* grepstart */ MEMBER_TO_FPTR(Perl_ck_null), /* grepwhile */ MEMBER_TO_FPTR(Perl_ck_grep), /* mapstart */ MEMBER_TO_FPTR(Perl_ck_null), /* mapwhile */ MEMBER_TO_FPTR(Perl_ck_null), /* range */ MEMBER_TO_FPTR(Perl_ck_null), /* flip */ MEMBER_TO_FPTR(Perl_ck_null), /* flop */ MEMBER_TO_FPTR(Perl_ck_null), /* and */ MEMBER_TO_FPTR(Perl_ck_null), /* or */ MEMBER_TO_FPTR(Perl_ck_null), /* xor */ MEMBER_TO_FPTR(Perl_ck_null), /* cond_expr */ MEMBER_TO_FPTR(Perl_ck_null), /* andassign */ MEMBER_TO_FPTR(Perl_ck_null), /* orassign */ MEMBER_TO_FPTR(Perl_ck_method), /* method */ MEMBER_TO_FPTR(Perl_ck_subr), /* entersub */ MEMBER_TO_FPTR(Perl_ck_null), /* leavesub */ MEMBER_TO_FPTR(Perl_ck_null), /* leavesublv */ MEMBER_TO_FPTR(Perl_ck_fun), /* caller */ MEMBER_TO_FPTR(Perl_ck_fun), /* warn */ MEMBER_TO_FPTR(Perl_ck_die), /* die */ MEMBER_TO_FPTR(Perl_ck_fun), /* reset */ MEMBER_TO_FPTR(Perl_ck_null), /* lineseq */ MEMBER_TO_FPTR(Perl_ck_null), /* nextstate */ MEMBER_TO_FPTR(Perl_ck_null), /* dbstate */ MEMBER_TO_FPTR(Perl_ck_null), /* unstack */ MEMBER_TO_FPTR(Perl_ck_null), /* enter */ MEMBER_TO_FPTR(Perl_ck_null), /* leave */ MEMBER_TO_FPTR(Perl_ck_null), /* scope */ MEMBER_TO_FPTR(Perl_ck_null), /* enteriter */ MEMBER_TO_FPTR(Perl_ck_null), /* iter */ MEMBER_TO_FPTR(Perl_ck_null), /* enterloop */ MEMBER_TO_FPTR(Perl_ck_null), /* leaveloop */ MEMBER_TO_FPTR(Perl_ck_return), /* return */ MEMBER_TO_FPTR(Perl_ck_null), /* last */ MEMBER_TO_FPTR(Perl_ck_null), /* next */ MEMBER_TO_FPTR(Perl_ck_null), /* redo */ MEMBER_TO_FPTR(Perl_ck_null), /* dump */ MEMBER_TO_FPTR(Perl_ck_null), /* goto */ MEMBER_TO_FPTR(Perl_ck_exit), /* exit */ MEMBER_TO_FPTR(Perl_ck_open), /* open */ MEMBER_TO_FPTR(Perl_ck_fun), /* close */ MEMBER_TO_FPTR(Perl_ck_fun), /* pipe_op */ MEMBER_TO_FPTR(Perl_ck_fun), /* fileno */ MEMBER_TO_FPTR(Perl_ck_fun), /* umask */ MEMBER_TO_FPTR(Perl_ck_fun), /* binmode */ MEMBER_TO_FPTR(Perl_ck_fun), /* tie */ MEMBER_TO_FPTR(Perl_ck_fun), /* untie */ MEMBER_TO_FPTR(Perl_ck_fun), /* tied */ MEMBER_TO_FPTR(Perl_ck_fun), /* dbmopen */ MEMBER_TO_FPTR(Perl_ck_fun), /* dbmclose */ MEMBER_TO_FPTR(Perl_ck_select), /* sselect */ MEMBER_TO_FPTR(Perl_ck_select), /* select */ MEMBER_TO_FPTR(Perl_ck_eof), /* getc */ MEMBER_TO_FPTR(Perl_ck_fun), /* read */ MEMBER_TO_FPTR(Perl_ck_fun), /* enterwrite */ MEMBER_TO_FPTR(Perl_ck_null), /* leavewrite */ MEMBER_TO_FPTR(Perl_ck_listiob), /* prtf */ MEMBER_TO_FPTR(Perl_ck_listiob), /* print */ MEMBER_TO_FPTR(Perl_ck_fun), /* sysopen */ MEMBER_TO_FPTR(Perl_ck_fun), /* sysseek */ MEMBER_TO_FPTR(Perl_ck_fun), /* sysread */ MEMBER_TO_FPTR(Perl_ck_fun), /* syswrite */ MEMBER_TO_FPTR(Perl_ck_fun), /* send */ MEMBER_TO_FPTR(Perl_ck_fun), /* recv */ MEMBER_TO_FPTR(Perl_ck_eof), /* eof */ MEMBER_TO_FPTR(Perl_ck_fun), /* tell */ MEMBER_TO_FPTR(Perl_ck_fun), /* seek */ MEMBER_TO_FPTR(Perl_ck_trunc), /* truncate */ MEMBER_TO_FPTR(Perl_ck_fun), /* fcntl */ MEMBER_TO_FPTR(Perl_ck_fun), /* ioctl */ MEMBER_TO_FPTR(Perl_ck_fun), /* flock */ MEMBER_TO_FPTR(Perl_ck_fun), /* socket */ MEMBER_TO_FPTR(Perl_ck_fun), /* sockpair */ MEMBER_TO_FPTR(Perl_ck_fun), /* bind */ MEMBER_TO_FPTR(Perl_ck_fun), /* connect */ MEMBER_TO_FPTR(Perl_ck_fun), /* listen */ MEMBER_TO_FPTR(Perl_ck_fun), /* accept */ MEMBER_TO_FPTR(Perl_ck_fun), /* shutdown */ MEMBER_TO_FPTR(Perl_ck_fun), /* gsockopt */ MEMBER_TO_FPTR(Perl_ck_fun), /* ssockopt */ MEMBER_TO_FPTR(Perl_ck_fun), /* getsockname */ MEMBER_TO_FPTR(Perl_ck_fun), /* getpeername */ MEMBER_TO_FPTR(Perl_ck_ftst), /* lstat */ MEMBER_TO_FPTR(Perl_ck_ftst), /* stat */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrread */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrwrite */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrexec */ MEMBER_TO_FPTR(Perl_ck_ftst), /* fteread */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftewrite */ MEMBER_TO_FPTR(Perl_ck_ftst), /* fteexec */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftis */ MEMBER_TO_FPTR(Perl_ck_ftst), /* fteowned */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftrowned */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftzero */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsize */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftmtime */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftatime */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftctime */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsock */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftchr */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftblk */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftfile */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftdir */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftpipe */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftlink */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsuid */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsgid */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftsvtx */ MEMBER_TO_FPTR(Perl_ck_ftst), /* fttty */ MEMBER_TO_FPTR(Perl_ck_ftst), /* fttext */ MEMBER_TO_FPTR(Perl_ck_ftst), /* ftbinary */ MEMBER_TO_FPTR(Perl_ck_chdir), /* chdir */ MEMBER_TO_FPTR(Perl_ck_fun), /* chown */ MEMBER_TO_FPTR(Perl_ck_fun), /* chroot */ MEMBER_TO_FPTR(Perl_ck_fun), /* unlink */ MEMBER_TO_FPTR(Perl_ck_fun), /* chmod */ MEMBER_TO_FPTR(Perl_ck_fun), /* utime */ MEMBER_TO_FPTR(Perl_ck_fun), /* rename */ MEMBER_TO_FPTR(Perl_ck_fun), /* link */ MEMBER_TO_FPTR(Perl_ck_fun), /* symlink */ MEMBER_TO_FPTR(Perl_ck_fun), /* readlink */ MEMBER_TO_FPTR(Perl_ck_fun), /* mkdir */ MEMBER_TO_FPTR(Perl_ck_fun), /* rmdir */ MEMBER_TO_FPTR(Perl_ck_fun), /* open_dir */ MEMBER_TO_FPTR(Perl_ck_fun), /* readdir */ MEMBER_TO_FPTR(Perl_ck_fun), /* telldir */ MEMBER_TO_FPTR(Perl_ck_fun), /* seekdir */ MEMBER_TO_FPTR(Perl_ck_fun), /* rewinddir */ MEMBER_TO_FPTR(Perl_ck_fun), /* closedir */ MEMBER_TO_FPTR(Perl_ck_null), /* fork */ MEMBER_TO_FPTR(Perl_ck_null), /* wait */ MEMBER_TO_FPTR(Perl_ck_fun), /* waitpid */ MEMBER_TO_FPTR(Perl_ck_exec), /* system */ MEMBER_TO_FPTR(Perl_ck_exec), /* exec */ MEMBER_TO_FPTR(Perl_ck_fun), /* kill */ MEMBER_TO_FPTR(Perl_ck_null), /* getppid */ MEMBER_TO_FPTR(Perl_ck_fun), /* getpgrp */ MEMBER_TO_FPTR(Perl_ck_fun), /* setpgrp */ MEMBER_TO_FPTR(Perl_ck_fun), /* getpriority */ MEMBER_TO_FPTR(Perl_ck_fun), /* setpriority */ MEMBER_TO_FPTR(Perl_ck_null), /* time */ MEMBER_TO_FPTR(Perl_ck_null), /* tms */ MEMBER_TO_FPTR(Perl_ck_fun), /* localtime */ MEMBER_TO_FPTR(Perl_ck_fun), /* gmtime */ MEMBER_TO_FPTR(Perl_ck_fun), /* alarm */ MEMBER_TO_FPTR(Perl_ck_fun), /* sleep */ MEMBER_TO_FPTR(Perl_ck_fun), /* shmget */ MEMBER_TO_FPTR(Perl_ck_fun), /* shmctl */ MEMBER_TO_FPTR(Perl_ck_fun), /* shmread */ MEMBER_TO_FPTR(Perl_ck_fun), /* shmwrite */ MEMBER_TO_FPTR(Perl_ck_fun), /* msgget */ MEMBER_TO_FPTR(Perl_ck_fun), /* msgctl */ MEMBER_TO_FPTR(Perl_ck_fun), /* msgsnd */ MEMBER_TO_FPTR(Perl_ck_fun), /* msgrcv */ MEMBER_TO_FPTR(Perl_ck_fun), /* semget */ MEMBER_TO_FPTR(Perl_ck_fun), /* semctl */ MEMBER_TO_FPTR(Perl_ck_fun), /* semop */ MEMBER_TO_FPTR(Perl_ck_require), /* require */ MEMBER_TO_FPTR(Perl_ck_fun), /* dofile */ MEMBER_TO_FPTR(Perl_ck_eval), /* entereval */ MEMBER_TO_FPTR(Perl_ck_null), /* leaveeval */ MEMBER_TO_FPTR(Perl_ck_null), /* entertry */ MEMBER_TO_FPTR(Perl_ck_null), /* leavetry */ MEMBER_TO_FPTR(Perl_ck_fun), /* ghbyname */ MEMBER_TO_FPTR(Perl_ck_fun), /* ghbyaddr */ MEMBER_TO_FPTR(Perl_ck_null), /* ghostent */ MEMBER_TO_FPTR(Perl_ck_fun), /* gnbyname */ MEMBER_TO_FPTR(Perl_ck_fun), /* gnbyaddr */ MEMBER_TO_FPTR(Perl_ck_null), /* gnetent */ MEMBER_TO_FPTR(Perl_ck_fun), /* gpbyname */ MEMBER_TO_FPTR(Perl_ck_fun), /* gpbynumber */ MEMBER_TO_FPTR(Perl_ck_null), /* gprotoent */ MEMBER_TO_FPTR(Perl_ck_fun), /* gsbyname */ MEMBER_TO_FPTR(Perl_ck_fun), /* gsbyport */ MEMBER_TO_FPTR(Perl_ck_null), /* gservent */ MEMBER_TO_FPTR(Perl_ck_fun), /* shostent */ MEMBER_TO_FPTR(Perl_ck_fun), /* snetent */ MEMBER_TO_FPTR(Perl_ck_fun), /* sprotoent */ MEMBER_TO_FPTR(Perl_ck_fun), /* sservent */ MEMBER_TO_FPTR(Perl_ck_null), /* ehostent */ MEMBER_TO_FPTR(Perl_ck_null), /* enetent */ MEMBER_TO_FPTR(Perl_ck_null), /* eprotoent */ MEMBER_TO_FPTR(Perl_ck_null), /* eservent */ MEMBER_TO_FPTR(Perl_ck_fun), /* gpwnam */ MEMBER_TO_FPTR(Perl_ck_fun), /* gpwuid */ MEMBER_TO_FPTR(Perl_ck_null), /* gpwent */ MEMBER_TO_FPTR(Perl_ck_null), /* spwent */ MEMBER_TO_FPTR(Perl_ck_null), /* epwent */ MEMBER_TO_FPTR(Perl_ck_fun), /* ggrnam */ MEMBER_TO_FPTR(Perl_ck_fun), /* ggrgid */ MEMBER_TO_FPTR(Perl_ck_null), /* ggrent */ MEMBER_TO_FPTR(Perl_ck_null), /* sgrent */ MEMBER_TO_FPTR(Perl_ck_null), /* egrent */ MEMBER_TO_FPTR(Perl_ck_null), /* getlogin */ MEMBER_TO_FPTR(Perl_ck_fun), /* syscall */ MEMBER_TO_FPTR(Perl_ck_rfun), /* lock */ MEMBER_TO_FPTR(Perl_ck_null), /* threadsv */ MEMBER_TO_FPTR(Perl_ck_null), /* setstate */ MEMBER_TO_FPTR(Perl_ck_null), /* method_named */ MEMBER_TO_FPTR(Perl_ck_null), /* dor */ MEMBER_TO_FPTR(Perl_ck_null), /* dorassign */ MEMBER_TO_FPTR(Perl_ck_null), /* entergiven */ MEMBER_TO_FPTR(Perl_ck_null), /* leavegiven */ MEMBER_TO_FPTR(Perl_ck_null), /* enterwhen */ MEMBER_TO_FPTR(Perl_ck_null), /* leavewhen */ MEMBER_TO_FPTR(Perl_ck_null), /* break */ MEMBER_TO_FPTR(Perl_ck_null), /* continue */ MEMBER_TO_FPTR(Perl_ck_smartmatch), /* smartmatch */ MEMBER_TO_FPTR(Perl_ck_say), /* say */ MEMBER_TO_FPTR(Perl_ck_null), /* custom */ } #endif #ifdef PERL_CHECK_INITED ; #endif /* #ifdef PERL_CHECK_INITED */ #ifndef PERL_GLOBAL_STRUCT_INIT #ifndef DOINIT EXTCONST U32 PL_opargs[]; #else EXTCONST U32 PL_opargs[] = { 0x00000000, /* null */ 0x00000000, /* stub */ 0x00003604, /* scalar */ 0x00000004, /* pushmark */ 0x00000014, /* wantarray */ 0x00000c04, /* const */ 0x00000c44, /* gvsv */ 0x00000c44, /* gv */ 0x00022440, /* gelem */ 0x00000044, /* padsv */ 0x00000040, /* padav */ 0x00000040, /* padhv */ 0x00000040, /* padany */ 0x00000a40, /* pushre */ 0x00000244, /* rv2gv */ 0x00000244, /* rv2sv */ 0x00000214, /* av2arylen */ 0x00000240, /* rv2cv */ 0x00000c00, /* anoncode */ 0x00003604, /* prototype */ 0x00004201, /* refgen */ 0x00002206, /* srefgen */ 0x0001368c, /* ref */ 0x00122804, /* bless */ 0x00001608, /* backtick */ 0x00012808, /* glob */ 0x0001d608, /* readline */ 0x00000c08, /* rcatline */ 0x00002204, /* regcmaybe */ 0x00002204, /* regcreset */ 0x00002604, /* regcomp */ 0x00000a40, /* match */ 0x00000a04, /* qr */ 0x00002a54, /* subst */ 0x00000654, /* substcont */ 0x00003014, /* trans */ 0x00000004, /* sassign */ 0x00044408, /* aassign */ 0x0000560d, /* chop */ 0x0001368c, /* schop */ 0x0000570d, /* chomp */ 0x0001378c, /* schomp */ 0x00013694, /* defined */ 0x00013604, /* undef */ 0x00013684, /* study */ 0x0001368c, /* pos */ 0x00002264, /* preinc */ 0x00002254, /* i_preinc */ 0x00002264, /* predec */ 0x00002254, /* i_predec */ 0x0000226c, /* postinc */ 0x0000235c, /* i_postinc */ 0x0000226c, /* postdec */ 0x0000235c, /* i_postdec */ 0x0002250e, /* pow */ 0x0002252e, /* multiply */ 0x0002251e, /* i_multiply */ 0x0002252e, /* divide */ 0x0002251e, /* i_divide */ 0x0002253e, /* modulo */ 0x0002251e, /* i_modulo */ 0x00024409, /* repeat */ 0x0002252e, /* add */ 0x0002251e, /* i_add */ 0x0002252e, /* subtract */ 0x0002251e, /* i_subtract */ 0x0002250e, /* concat */ 0x0000290e, /* stringify */ 0x0002250e, /* left_shift */ 0x0002250e, /* right_shift */ 0x00022436, /* lt */ 0x00022416, /* i_lt */ 0x00022436, /* gt */ 0x00022416, /* i_gt */ 0x00022436, /* le */ 0x00022416, /* i_le */ 0x00022436, /* ge */ 0x00022416, /* i_ge */ 0x00022436, /* eq */ 0x00022416, /* i_eq */ 0x00022436, /* ne */ 0x00022416, /* i_ne */ 0x0002243e, /* ncmp */ 0x0002241e, /* i_ncmp */ 0x00022416, /* slt */ 0x00022416, /* sgt */ 0x00022416, /* sle */ 0x00022416, /* sge */ 0x00022416, /* seq */ 0x00022416, /* sne */ 0x0002241e, /* scmp */ 0x0002240e, /* bit_and */ 0x0002240e, /* bit_xor */ 0x0002240e, /* bit_or */ 0x0000222e, /* negate */ 0x0000231e, /* i_negate */ 0x00002216, /* not */ 0x0000220e, /* complement */ 0x0002290e, /* atan2 */ 0x0001378e, /* sin */ 0x0001378e, /* cos */ 0x0001370c, /* rand */ 0x00013604, /* srand */ 0x0001378e, /* exp */ 0x0001378e, /* log */ 0x0001378e, /* sqrt */ 0x0001378e, /* int */ 0x0001378e, /* hex */ 0x0001378e, /* oct */ 0x0001378e, /* abs */ 0x0001379c, /* length */ 0x1322280c, /* substr */ 0x0022281c, /* vec */ 0x0122291c, /* index */ 0x0122291c, /* rindex */ 0x0004280d, /* sprintf */ 0x00042805, /* formline */ 0x0001379e, /* ord */ 0x0001378e, /* chr */ 0x0002290e, /* crypt */ 0x0001368e, /* ucfirst */ 0x0001368e, /* lcfirst */ 0x0001368e, /* uc */ 0x0001368e, /* lc */ 0x0001368e, /* quotemeta */ 0x00000248, /* rv2av */ 0x00026c04, /* aelemfast */ 0x00026404, /* aelem */ 0x00046801, /* aslice */ 0x00009600, /* each */ 0x00009608, /* values */ 0x00009608, /* keys */ 0x00003600, /* delete */ 0x00003614, /* exists */ 0x00000248, /* rv2hv */ 0x00028404, /* helem */ 0x00048801, /* hslice */ 0x00122800, /* unpack */ 0x0004280d, /* pack */ 0x00222808, /* split */ 0x0004280d, /* join */ 0x00004801, /* list */ 0x00448400, /* lslice */ 0x00004805, /* anonlist */ 0x00004805, /* anonhash */ 0x05326801, /* splice */ 0x0004691d, /* push */ 0x00017604, /* pop */ 0x00017604, /* shift */ 0x0004691d, /* unshift */ 0x0005a841, /* sort */ 0x00004809, /* reverse */ 0x0004a841, /* grepstart */ 0x00000648, /* grepwhile */ 0x0004a841, /* mapstart */ 0x00000648, /* mapwhile */ 0x00022600, /* range */ 0x00022200, /* flip */ 0x00000200, /* flop */ 0x00000600, /* and */ 0x00000600, /* or */ 0x00022406, /* xor */ 0x00000640, /* cond_expr */ 0x00000604, /* andassign */ 0x00000604, /* orassign */ 0x00000240, /* method */ 0x00004249, /* entersub */ 0x00000200, /* leavesub */ 0x00000200, /* leavesublv */ 0x00013608, /* caller */ 0x0000481d, /* warn */ 0x0000485d, /* die */ 0x00013614, /* reset */ 0x00000800, /* lineseq */ 0x00001404, /* nextstate */ 0x00001404, /* dbstate */ 0x00000004, /* unstack */ 0x00000000, /* enter */ 0x00000800, /* leave */ 0x00000800, /* scope */ 0x00001240, /* enteriter */ 0x00000000, /* iter */ 0x00001240, /* enterloop */ 0x00000400, /* leaveloop */ 0x00004841, /* return */ 0x00001a44, /* last */ 0x00001a44, /* next */ 0x00001a44, /* redo */ 0x00001a44, /* dump */ 0x00001a44, /* goto */ 0x00013644, /* exit */ 0x0052c81d, /* open */ 0x0001d614, /* close */ 0x000cc814, /* pipe_op */ 0x0000d61c, /* fileno */ 0x0001361c, /* umask */ 0x0012c804, /* binmode */ 0x0042e855, /* tie */ 0x0000f614, /* untie */ 0x0000f604, /* tied */ 0x00228814, /* dbmopen */ 0x00009614, /* dbmclose */ 0x02222808, /* sselect */ 0x0001c80c, /* select */ 0x0001d60c, /* getc */ 0x122ec81d, /* read */ 0x0001d654, /* enterwrite */ 0x00000200, /* leavewrite */ 0x0005c815, /* prtf */ 0x0005c815, /* print */ 0x1222c804, /* sysopen */ 0x0022c804, /* sysseek */ 0x122ec81d, /* sysread */ 0x1322c81d, /* syswrite */ 0x1222c81d, /* send */ 0x022ec81d, /* recv */ 0x0001d614, /* eof */ 0x0001d60c, /* tell */ 0x0022c804, /* seek */ 0x00022814, /* truncate */ 0x0022c80c, /* fcntl */ 0x0022c80c, /* ioctl */ 0x0002c91c, /* flock */ 0x0222c814, /* socket */ 0x222cc814, /* sockpair */ 0x0002c814, /* bind */ 0x0002c814, /* connect */ 0x0002c814, /* listen */ 0x000cc81c, /* accept */ 0x0002c81c, /* shutdown */ 0x0022c814, /* gsockopt */ 0x0222c814, /* ssockopt */ 0x0000d614, /* getsockname */ 0x0000d614, /* getpeername */ 0x0000d880, /* lstat */ 0x0000d880, /* stat */ 0x0000d894, /* ftrread */ 0x0000d894, /* ftrwrite */ 0x0000d894, /* ftrexec */ 0x0000d894, /* fteread */ 0x0000d894, /* ftewrite */ 0x0000d894, /* fteexec */ 0x0000d894, /* ftis */ 0x0000d894, /* fteowned */ 0x0000d894, /* ftrowned */ 0x0000d894, /* ftzero */ 0x0000d89c, /* ftsize */ 0x0000d88c, /* ftmtime */ 0x0000d88c, /* ftatime */ 0x0000d88c, /* ftctime */ 0x0000d894, /* ftsock */ 0x0000d894, /* ftchr */ 0x0000d894, /* ftblk */ 0x0000d894, /* ftfile */ 0x0000d894, /* ftdir */ 0x0000d894, /* ftpipe */ 0x0000d894, /* ftlink */ 0x0000d894, /* ftsuid */ 0x0000d894, /* ftsgid */ 0x0000d894, /* ftsvtx */ 0x0000d814, /* fttty */ 0x0000d894, /* fttext */ 0x0000d894, /* ftbinary */ 0x0001371c, /* chdir */ 0x0000491d, /* chown */ 0x0001379c, /* chroot */ 0x0000499d, /* unlink */ 0x0000491d, /* chmod */ 0x0000491d, /* utime */ 0x0002291c, /* rename */ 0x0002291c, /* link */ 0x0002291c, /* symlink */ 0x0001368c, /* readlink */ 0x0013299c, /* mkdir */ 0x0001379c, /* rmdir */ 0x0002c814, /* open_dir */ 0x0000d600, /* readdir */ 0x0000d60c, /* telldir */ 0x0002c804, /* seekdir */ 0x0000d604, /* rewinddir */ 0x0000d614, /* closedir */ 0x0000001c, /* fork */ 0x0000011c, /* wait */ 0x0002291c, /* waitpid */ 0x0005291d, /* system */ 0x0005295d, /* exec */ 0x0000495d, /* kill */ 0x0000011c, /* getppid */ 0x0001371c, /* getpgrp */ 0x0013291c, /* setpgrp */ 0x0002291c, /* getpriority */ 0x0022291c, /* setpriority */ 0x0000011c, /* time */ 0x00000000, /* tms */ 0x00013608, /* localtime */ 0x00013608, /* gmtime */ 0x0001369c, /* alarm */ 0x0001371c, /* sleep */ 0x0022281d, /* shmget */ 0x0022281d, /* shmctl */ 0x0222281d, /* shmread */ 0x0222281d, /* shmwrite */ 0x0002281d, /* msgget */ 0x0022281d, /* msgctl */ 0x0022281d, /* msgsnd */ 0x2222281d, /* msgrcv */ 0x0022281d, /* semget */ 0x0222281d, /* semctl */ 0x0002281d, /* semop */ 0x000136c0, /* require */ 0x00002240, /* dofile */ 0x00003640, /* entereval */ 0x00002200, /* leaveeval */ 0x00000600, /* entertry */ 0x00000800, /* leavetry */ 0x00003600, /* ghbyname */ 0x00022800, /* ghbyaddr */ 0x00000000, /* ghostent */ 0x00003600, /* gnbyname */ 0x00022800, /* gnbyaddr */ 0x00000000, /* gnetent */ 0x00003600, /* gpbyname */ 0x00002800, /* gpbynumber */ 0x00000000, /* gprotoent */ 0x00022800, /* gsbyname */ 0x00022800, /* gsbyport */ 0x00000000, /* gservent */ 0x00003614, /* shostent */ 0x00003614, /* snetent */ 0x00003614, /* sprotoent */ 0x00003614, /* sservent */ 0x00000014, /* ehostent */ 0x00000014, /* enetent */ 0x00000014, /* eprotoent */ 0x00000014, /* eservent */ 0x00003600, /* gpwnam */ 0x00003600, /* gpwuid */ 0x00000000, /* gpwent */ 0x00000014, /* spwent */ 0x00000014, /* epwent */ 0x00003600, /* ggrnam */ 0x00003600, /* ggrgid */ 0x00000000, /* ggrent */ 0x00000014, /* sgrent */ 0x00000014, /* egrent */ 0x0000000c, /* getlogin */ 0x0004281d, /* syscall */ 0x0000f604, /* lock */ 0x00000044, /* threadsv */ 0x00001404, /* setstate */ 0x00000c40, /* method_named */ 0x00000600, /* dor */ 0x00000604, /* dorassign */ 0x00000640, /* entergiven */ 0x00000200, /* leavegiven */ 0x00000640, /* enterwhen */ 0x00000200, /* leavewhen */ 0x00000000, /* break */ 0x00000000, /* continue */ 0x00000404, /* smartmatch */ 0x0005c815, /* say */ 0x00000000, /* custom */ }; #endif END_EXTERN_C #endif /* !PERL_GLOBAL_STRUCT_INIT */ /* ex: set ro: */ Convert-Binary-C-0.76/tests/include/perlinc/opnames.h0000644000175000001440000002256511550664630021257 0ustar mhxusers/* -*- buffer-read-only: t -*- * * opnames.h * * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, * by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by opcode.pl from its data. Any changes made here * will be lost! */ typedef enum opcode { OP_NULL, /* 0 */ OP_STUB, /* 1 */ OP_SCALAR, /* 2 */ OP_PUSHMARK, /* 3 */ OP_WANTARRAY, /* 4 */ OP_CONST, /* 5 */ OP_GVSV, /* 6 */ OP_GV, /* 7 */ OP_GELEM, /* 8 */ OP_PADSV, /* 9 */ OP_PADAV, /* 10 */ OP_PADHV, /* 11 */ OP_PADANY, /* 12 */ OP_PUSHRE, /* 13 */ OP_RV2GV, /* 14 */ OP_RV2SV, /* 15 */ OP_AV2ARYLEN, /* 16 */ OP_RV2CV, /* 17 */ OP_ANONCODE, /* 18 */ OP_PROTOTYPE, /* 19 */ OP_REFGEN, /* 20 */ OP_SREFGEN, /* 21 */ OP_REF, /* 22 */ OP_BLESS, /* 23 */ OP_BACKTICK, /* 24 */ OP_GLOB, /* 25 */ OP_READLINE, /* 26 */ OP_RCATLINE, /* 27 */ OP_REGCMAYBE, /* 28 */ OP_REGCRESET, /* 29 */ OP_REGCOMP, /* 30 */ OP_MATCH, /* 31 */ OP_QR, /* 32 */ OP_SUBST, /* 33 */ OP_SUBSTCONT, /* 34 */ OP_TRANS, /* 35 */ OP_SASSIGN, /* 36 */ OP_AASSIGN, /* 37 */ OP_CHOP, /* 38 */ OP_SCHOP, /* 39 */ OP_CHOMP, /* 40 */ OP_SCHOMP, /* 41 */ OP_DEFINED, /* 42 */ OP_UNDEF, /* 43 */ OP_STUDY, /* 44 */ OP_POS, /* 45 */ OP_PREINC, /* 46 */ OP_I_PREINC, /* 47 */ OP_PREDEC, /* 48 */ OP_I_PREDEC, /* 49 */ OP_POSTINC, /* 50 */ OP_I_POSTINC, /* 51 */ OP_POSTDEC, /* 52 */ OP_I_POSTDEC, /* 53 */ OP_POW, /* 54 */ OP_MULTIPLY, /* 55 */ OP_I_MULTIPLY, /* 56 */ OP_DIVIDE, /* 57 */ OP_I_DIVIDE, /* 58 */ OP_MODULO, /* 59 */ OP_I_MODULO, /* 60 */ OP_REPEAT, /* 61 */ OP_ADD, /* 62 */ OP_I_ADD, /* 63 */ OP_SUBTRACT, /* 64 */ OP_I_SUBTRACT, /* 65 */ OP_CONCAT, /* 66 */ OP_STRINGIFY, /* 67 */ OP_LEFT_SHIFT, /* 68 */ OP_RIGHT_SHIFT, /* 69 */ OP_LT, /* 70 */ OP_I_LT, /* 71 */ OP_GT, /* 72 */ OP_I_GT, /* 73 */ OP_LE, /* 74 */ OP_I_LE, /* 75 */ OP_GE, /* 76 */ OP_I_GE, /* 77 */ OP_EQ, /* 78 */ OP_I_EQ, /* 79 */ OP_NE, /* 80 */ OP_I_NE, /* 81 */ OP_NCMP, /* 82 */ OP_I_NCMP, /* 83 */ OP_SLT, /* 84 */ OP_SGT, /* 85 */ OP_SLE, /* 86 */ OP_SGE, /* 87 */ OP_SEQ, /* 88 */ OP_SNE, /* 89 */ OP_SCMP, /* 90 */ OP_BIT_AND, /* 91 */ OP_BIT_XOR, /* 92 */ OP_BIT_OR, /* 93 */ OP_NEGATE, /* 94 */ OP_I_NEGATE, /* 95 */ OP_NOT, /* 96 */ OP_COMPLEMENT, /* 97 */ OP_ATAN2, /* 98 */ OP_SIN, /* 99 */ OP_COS, /* 100 */ OP_RAND, /* 101 */ OP_SRAND, /* 102 */ OP_EXP, /* 103 */ OP_LOG, /* 104 */ OP_SQRT, /* 105 */ OP_INT, /* 106 */ OP_HEX, /* 107 */ OP_OCT, /* 108 */ OP_ABS, /* 109 */ OP_LENGTH, /* 110 */ OP_SUBSTR, /* 111 */ OP_VEC, /* 112 */ OP_INDEX, /* 113 */ OP_RINDEX, /* 114 */ OP_SPRINTF, /* 115 */ OP_FORMLINE, /* 116 */ OP_ORD, /* 117 */ OP_CHR, /* 118 */ OP_CRYPT, /* 119 */ OP_UCFIRST, /* 120 */ OP_LCFIRST, /* 121 */ OP_UC, /* 122 */ OP_LC, /* 123 */ OP_QUOTEMETA, /* 124 */ OP_RV2AV, /* 125 */ OP_AELEMFAST, /* 126 */ OP_AELEM, /* 127 */ OP_ASLICE, /* 128 */ OP_EACH, /* 129 */ OP_VALUES, /* 130 */ OP_KEYS, /* 131 */ OP_DELETE, /* 132 */ OP_EXISTS, /* 133 */ OP_RV2HV, /* 134 */ OP_HELEM, /* 135 */ OP_HSLICE, /* 136 */ OP_UNPACK, /* 137 */ OP_PACK, /* 138 */ OP_SPLIT, /* 139 */ OP_JOIN, /* 140 */ OP_LIST, /* 141 */ OP_LSLICE, /* 142 */ OP_ANONLIST, /* 143 */ OP_ANONHASH, /* 144 */ OP_SPLICE, /* 145 */ OP_PUSH, /* 146 */ OP_POP, /* 147 */ OP_SHIFT, /* 148 */ OP_UNSHIFT, /* 149 */ OP_SORT, /* 150 */ OP_REVERSE, /* 151 */ OP_GREPSTART, /* 152 */ OP_GREPWHILE, /* 153 */ OP_MAPSTART, /* 154 */ OP_MAPWHILE, /* 155 */ OP_RANGE, /* 156 */ OP_FLIP, /* 157 */ OP_FLOP, /* 158 */ OP_AND, /* 159 */ OP_OR, /* 160 */ OP_XOR, /* 161 */ OP_COND_EXPR, /* 162 */ OP_ANDASSIGN, /* 163 */ OP_ORASSIGN, /* 164 */ OP_METHOD, /* 165 */ OP_ENTERSUB, /* 166 */ OP_LEAVESUB, /* 167 */ OP_LEAVESUBLV, /* 168 */ OP_CALLER, /* 169 */ OP_WARN, /* 170 */ OP_DIE, /* 171 */ OP_RESET, /* 172 */ OP_LINESEQ, /* 173 */ OP_NEXTSTATE, /* 174 */ OP_DBSTATE, /* 175 */ OP_UNSTACK, /* 176 */ OP_ENTER, /* 177 */ OP_LEAVE, /* 178 */ OP_SCOPE, /* 179 */ OP_ENTERITER, /* 180 */ OP_ITER, /* 181 */ OP_ENTERLOOP, /* 182 */ OP_LEAVELOOP, /* 183 */ OP_RETURN, /* 184 */ OP_LAST, /* 185 */ OP_NEXT, /* 186 */ OP_REDO, /* 187 */ OP_DUMP, /* 188 */ OP_GOTO, /* 189 */ OP_EXIT, /* 190 */ OP_OPEN, /* 191 */ OP_CLOSE, /* 192 */ OP_PIPE_OP, /* 193 */ OP_FILENO, /* 194 */ OP_UMASK, /* 195 */ OP_BINMODE, /* 196 */ OP_TIE, /* 197 */ OP_UNTIE, /* 198 */ OP_TIED, /* 199 */ OP_DBMOPEN, /* 200 */ OP_DBMCLOSE, /* 201 */ OP_SSELECT, /* 202 */ OP_SELECT, /* 203 */ OP_GETC, /* 204 */ OP_READ, /* 205 */ OP_ENTERWRITE, /* 206 */ OP_LEAVEWRITE, /* 207 */ OP_PRTF, /* 208 */ OP_PRINT, /* 209 */ OP_SYSOPEN, /* 210 */ OP_SYSSEEK, /* 211 */ OP_SYSREAD, /* 212 */ OP_SYSWRITE, /* 213 */ OP_SEND, /* 214 */ OP_RECV, /* 215 */ OP_EOF, /* 216 */ OP_TELL, /* 217 */ OP_SEEK, /* 218 */ OP_TRUNCATE, /* 219 */ OP_FCNTL, /* 220 */ OP_IOCTL, /* 221 */ OP_FLOCK, /* 222 */ OP_SOCKET, /* 223 */ OP_SOCKPAIR, /* 224 */ OP_BIND, /* 225 */ OP_CONNECT, /* 226 */ OP_LISTEN, /* 227 */ OP_ACCEPT, /* 228 */ OP_SHUTDOWN, /* 229 */ OP_GSOCKOPT, /* 230 */ OP_SSOCKOPT, /* 231 */ OP_GETSOCKNAME, /* 232 */ OP_GETPEERNAME, /* 233 */ OP_LSTAT, /* 234 */ OP_STAT, /* 235 */ OP_FTRREAD, /* 236 */ OP_FTRWRITE, /* 237 */ OP_FTREXEC, /* 238 */ OP_FTEREAD, /* 239 */ OP_FTEWRITE, /* 240 */ OP_FTEEXEC, /* 241 */ OP_FTIS, /* 242 */ OP_FTEOWNED, /* 243 */ OP_FTROWNED, /* 244 */ OP_FTZERO, /* 245 */ OP_FTSIZE, /* 246 */ OP_FTMTIME, /* 247 */ OP_FTATIME, /* 248 */ OP_FTCTIME, /* 249 */ OP_FTSOCK, /* 250 */ OP_FTCHR, /* 251 */ OP_FTBLK, /* 252 */ OP_FTFILE, /* 253 */ OP_FTDIR, /* 254 */ OP_FTPIPE, /* 255 */ OP_FTLINK, /* 256 */ OP_FTSUID, /* 257 */ OP_FTSGID, /* 258 */ OP_FTSVTX, /* 259 */ OP_FTTTY, /* 260 */ OP_FTTEXT, /* 261 */ OP_FTBINARY, /* 262 */ OP_CHDIR, /* 263 */ OP_CHOWN, /* 264 */ OP_CHROOT, /* 265 */ OP_UNLINK, /* 266 */ OP_CHMOD, /* 267 */ OP_UTIME, /* 268 */ OP_RENAME, /* 269 */ OP_LINK, /* 270 */ OP_SYMLINK, /* 271 */ OP_READLINK, /* 272 */ OP_MKDIR, /* 273 */ OP_RMDIR, /* 274 */ OP_OPEN_DIR, /* 275 */ OP_READDIR, /* 276 */ OP_TELLDIR, /* 277 */ OP_SEEKDIR, /* 278 */ OP_REWINDDIR, /* 279 */ OP_CLOSEDIR, /* 280 */ OP_FORK, /* 281 */ OP_WAIT, /* 282 */ OP_WAITPID, /* 283 */ OP_SYSTEM, /* 284 */ OP_EXEC, /* 285 */ OP_KILL, /* 286 */ OP_GETPPID, /* 287 */ OP_GETPGRP, /* 288 */ OP_SETPGRP, /* 289 */ OP_GETPRIORITY, /* 290 */ OP_SETPRIORITY, /* 291 */ OP_TIME, /* 292 */ OP_TMS, /* 293 */ OP_LOCALTIME, /* 294 */ OP_GMTIME, /* 295 */ OP_ALARM, /* 296 */ OP_SLEEP, /* 297 */ OP_SHMGET, /* 298 */ OP_SHMCTL, /* 299 */ OP_SHMREAD, /* 300 */ OP_SHMWRITE, /* 301 */ OP_MSGGET, /* 302 */ OP_MSGCTL, /* 303 */ OP_MSGSND, /* 304 */ OP_MSGRCV, /* 305 */ OP_SEMGET, /* 306 */ OP_SEMCTL, /* 307 */ OP_SEMOP, /* 308 */ OP_REQUIRE, /* 309 */ OP_DOFILE, /* 310 */ OP_ENTEREVAL, /* 311 */ OP_LEAVEEVAL, /* 312 */ OP_ENTERTRY, /* 313 */ OP_LEAVETRY, /* 314 */ OP_GHBYNAME, /* 315 */ OP_GHBYADDR, /* 316 */ OP_GHOSTENT, /* 317 */ OP_GNBYNAME, /* 318 */ OP_GNBYADDR, /* 319 */ OP_GNETENT, /* 320 */ OP_GPBYNAME, /* 321 */ OP_GPBYNUMBER, /* 322 */ OP_GPROTOENT, /* 323 */ OP_GSBYNAME, /* 324 */ OP_GSBYPORT, /* 325 */ OP_GSERVENT, /* 326 */ OP_SHOSTENT, /* 327 */ OP_SNETENT, /* 328 */ OP_SPROTOENT, /* 329 */ OP_SSERVENT, /* 330 */ OP_EHOSTENT, /* 331 */ OP_ENETENT, /* 332 */ OP_EPROTOENT, /* 333 */ OP_ESERVENT, /* 334 */ OP_GPWNAM, /* 335 */ OP_GPWUID, /* 336 */ OP_GPWENT, /* 337 */ OP_SPWENT, /* 338 */ OP_EPWENT, /* 339 */ OP_GGRNAM, /* 340 */ OP_GGRGID, /* 341 */ OP_GGRENT, /* 342 */ OP_SGRENT, /* 343 */ OP_EGRENT, /* 344 */ OP_GETLOGIN, /* 345 */ OP_SYSCALL, /* 346 */ OP_LOCK, /* 347 */ OP_THREADSV, /* 348 */ OP_SETSTATE, /* 349 */ OP_METHOD_NAMED,/* 350 */ OP_DOR, /* 351 */ OP_DORASSIGN, /* 352 */ OP_ENTERGIVEN, /* 353 */ OP_LEAVEGIVEN, /* 354 */ OP_ENTERWHEN, /* 355 */ OP_LEAVEWHEN, /* 356 */ OP_BREAK, /* 357 */ OP_CONTINUE, /* 358 */ OP_SMARTMATCH, /* 359 */ OP_SAY, /* 360 */ OP_CUSTOM, /* 361 */ OP_max } opcode; #define MAXO 362 #define OP_phoney_INPUT_ONLY -1 #define OP_phoney_OUTPUT_ONLY -2 #define OP_IS_SOCKET(op) \ ((op) == OP_ACCEPT || \ (op) == OP_BIND || \ (op) == OP_CONNECT || \ (op) == OP_GETPEERNAME || \ (op) == OP_GETSOCKNAME || \ (op) == OP_GSOCKOPT || \ (op) == OP_LISTEN || \ (op) == OP_RECV || \ (op) == OP_SEND || \ (op) == OP_SHUTDOWN || \ (op) == OP_SOCKET || \ (op) == OP_SOCKPAIR || \ (op) == OP_SSOCKOPT) #define OP_IS_FILETEST(op) \ ((op) == OP_FTATIME || \ (op) == OP_FTBINARY || \ (op) == OP_FTBLK || \ (op) == OP_FTCHR || \ (op) == OP_FTCTIME || \ (op) == OP_FTDIR || \ (op) == OP_FTEEXEC || \ (op) == OP_FTEOWNED || \ (op) == OP_FTEREAD || \ (op) == OP_FTEWRITE || \ (op) == OP_FTFILE || \ (op) == OP_FTIS || \ (op) == OP_FTLINK || \ (op) == OP_FTMTIME || \ (op) == OP_FTPIPE || \ (op) == OP_FTREXEC || \ (op) == OP_FTROWNED || \ (op) == OP_FTRREAD || \ (op) == OP_FTRWRITE || \ (op) == OP_FTSGID || \ (op) == OP_FTSIZE || \ (op) == OP_FTSOCK || \ (op) == OP_FTSUID || \ (op) == OP_FTSVTX || \ (op) == OP_FTTEXT || \ (op) == OP_FTTTY || \ (op) == OP_FTZERO) /* ex: set ro: */ Convert-Binary-C-0.76/tests/include/perlinc/patchlevel.h0000644000175000001440000001117411550664630021736 0ustar mhxusers/* patchlevel.h * * Copyright (C) 1993, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #ifndef __PATCHLEVEL_H_INCLUDED__ /* do not adjust the whitespace! Configure expects the numbers to be * exactly on the third column */ #define PERL_REVISION 5 /* age */ #define PERL_VERSION 9 /* epoch */ #define PERL_SUBVERSION 5 /* generation */ /* The following numbers describe the earliest compatible version of Perl ("compatibility" here being defined as sufficient binary/API compatibility to run XS code built with the older version). Normally this should not change across maintenance releases. Note that this only refers to an out-of-the-box build. Many non-default options such as usemultiplicity tend to break binary compatibility more often. This is used by Configure et al to figure out PERL_INC_VERSION_LIST, which lists version libraries to include in @INC. See INSTALL for how this works. */ #define PERL_API_REVISION 5 /* Adjust manually as needed. */ #define PERL_API_VERSION 9 /* Adjust manually as needed. */ #define PERL_API_SUBVERSION 5 /* Adjust manually as needed. */ /* XXX Note: The selection of non-default Configure options, such as -Duselonglong may invalidate these settings. Currently, Configure does not adequately test for this. A.D. Jan 13, 2000 */ #define __PATCHLEVEL_H_INCLUDED__ #endif /* local_patches -- list of locally applied less-than-subversion patches. If you're distributing such a patch, please give it a name and a one-line description, placed just before the last NULL in the array below. If your patch fixes a bug in the perlbug database, please mention the bugid. If your patch *IS* dependent on a prior patch, please place your applied patch line after its dependencies. This will help tracking of patch dependencies. Please either use 'diff --unified=0' if your diff supports that or edit the hunk of the diff output which adds your patch to this list, to remove context lines which would give patch problems. For instance, if the original context diff is *** patchlevel.h.orig --- patchlevel.h *** 38,43 *** --- 38,44 --- ,"FOO1235 - some patch" ,"BAR3141 - another patch" ,"BAZ2718 - and another patch" + ,"MINE001 - my new patch" ,NULL }; please change it to *** patchlevel.h.orig --- patchlevel.h *** 41,43 *** --- 41,44 --- + ,"MINE001 - my new patch" ,NULL }; (Note changes to line numbers as well as removal of context lines.) This will prevent patch from choking if someone has previously applied different patches than you. History has shown that nobody distributes patches that also modify patchlevel.h. Do it yourself. The following perl program can be used to add a comment to patchlevel.h: #!perl die "Usage: perl -x patchlevel.h comment ..." unless @ARGV; open PLIN, "patchlevel.h" or die "Couldn't open patchlevel.h : $!"; open PLOUT, ">patchlevel.new" or die "Couldn't write on patchlevel.new : $!"; my $seen=0; while () { if (/\t,NULL/ and $seen) { while (my $c = shift @ARGV){ print PLOUT qq{\t,"$c"\n}; } } $seen++ if /local_patches\[\]/; print PLOUT; } close PLOUT or die "Couldn't close filehandle writing to patchlevel.new : $!"; close PLIN or die "Couldn't close filehandle reading from patchlevel.h : $!"; close DATA; # needed to allow unlink to work win32. unlink "patchlevel.bak" or warn "Couldn't unlink patchlevel.bak : $!" if -e "patchlevel.bak"; rename "patchlevel.h", "patchlevel.bak" or die "Couldn't rename patchlevel.h to patchlevel.bak : $!"; rename "patchlevel.new", "patchlevel.h" or die "Couldn't rename patchlevel.new to patchlevel.h : $!"; __END__ Please keep empty lines below so that context diffs of this file do not ever collect the lines belonging to local_patches() into the same hunk. */ #if !defined(PERL_PATCHLEVEL_H_IMPLICIT) && !defined(LOCAL_PATCH_COUNT) static const char * const local_patches[] = { NULL ,"DEVEL" ,NULL }; /* Initial space prevents this variable from being inserted in config.sh */ # define LOCAL_PATCH_COUNT \ ((int)(sizeof(local_patches)/sizeof(local_patches[0])-2)) /* the old terms of reference, add them only when explicitly included */ #define PATCHLEVEL PERL_VERSION #undef SUBVERSION /* OS/390 has a SUBVERSION in a system header */ #define SUBVERSION PERL_SUBVERSION #endif Convert-Binary-C-0.76/tests/include/perlinc/utf8.h0000644000175000001440000003052311550664630020474 0ustar mhxusers/* utf8.h * * Copyright (C) 2000, 2001, 2002, 2005 by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* Use UTF-8 as the default script encoding? * Turning this on will break scripts having non-UTF-8 binary * data (such as Latin-1) in string literals. */ #ifdef USE_UTF8_SCRIPTS # define USE_UTF8_IN_NAMES (!IN_BYTES) #else # define USE_UTF8_IN_NAMES (PL_hints & HINT_UTF8) #endif /* Source backward compatibility. */ #define uvuni_to_utf8(d, uv) uvuni_to_utf8_flags(d, uv, 0) #define is_utf8_string_loc(s, len, ep) is_utf8_string_loclen(s, len, ep, 0) #ifdef EBCDIC /* The equivalent of these macros but implementing UTF-EBCDIC are in the following header file: */ #include "utfebcdic.h" #else START_EXTERN_C #ifdef DOINIT EXTCONST unsigned char PL_utf8skip[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* bogus */ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* scripts */ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6, /* cjk etc. */ 7,13, /* Perl extended (not UTF-8). Up to 72bit allowed (64-bit + reserved). */ }; #else EXTCONST unsigned char PL_utf8skip[]; #endif END_EXTERN_C #define UTF8SKIP(s) PL_utf8skip[*(const U8*)(s)] /* Native character to iso-8859-1 */ #define NATIVE_TO_ASCII(ch) (ch) #define ASCII_TO_NATIVE(ch) (ch) /* Transform after encoding */ #define NATIVE_TO_UTF(ch) (ch) #define UTF_TO_NATIVE(ch) (ch) /* Transforms in wide UV chars */ #define UNI_TO_NATIVE(ch) (ch) #define NATIVE_TO_UNI(ch) (ch) /* Transforms in invariant space */ #define NATIVE_TO_NEED(enc,ch) (ch) #define ASCII_TO_NEED(enc,ch) (ch) /* As there are no translations avoid the function wrapper */ #define utf8n_to_uvchr utf8n_to_uvuni #define uvchr_to_utf8 uvuni_to_utf8 /* The following table is from Unicode 3.2. Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte U+0000..U+007F 00..7F U+0080..U+07FF C2..DF 80..BF U+0800..U+0FFF E0 A0..BF 80..BF U+1000..U+CFFF E1..EC 80..BF 80..BF U+D000..U+D7FF ED 80..9F 80..BF U+D800..U+DFFF ******* ill-formed ******* U+E000..U+FFFF EE..EF 80..BF 80..BF U+10000..U+3FFFF F0 90..BF 80..BF 80..BF U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF U+100000..U+10FFFF F4 80..8F 80..BF 80..BF Note the A0..BF in U+0800..U+0FFF, the 80..9F in U+D000...U+D7FF, the 90..BF in U+10000..U+3FFFF, and the 80...8F in U+100000..U+10FFFF. The "gaps" are caused by legal UTF-8 avoiding non-shortest encodings: it is technically possible to UTF-8-encode a single code point in different ways, but that is explicitly forbidden, and the shortest possible encoding should always be used (and that is what Perl does). */ /* Another way to look at it, as bits: Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte 0aaaaaaa 0aaaaaaa 00000bbbbbaaaaaa 110bbbbb 10aaaaaa ccccbbbbbbaaaaaa 1110cccc 10bbbbbb 10aaaaaa 00000dddccccccbbbbbbaaaaaa 11110ddd 10cccccc 10bbbbbb 10aaaaaa As you can see, the continuation bytes all begin with C<10>, and the leading bits of the start byte tell how many bytes the are in the encoded character. */ #define UNI_IS_INVARIANT(c) (((UV)c) < 0x80) #define UTF8_IS_INVARIANT(c) UNI_IS_INVARIANT(NATIVE_TO_UTF(c)) #define NATIVE_IS_INVARIANT(c) UNI_IS_INVARIANT(NATIVE_TO_ASCII(c)) #define UTF8_IS_START(c) (((U8)c) >= 0xc0 && (((U8)c) <= 0xfd)) #define UTF8_IS_CONTINUATION(c) (((U8)c) >= 0x80 && (((U8)c) <= 0xbf)) #define UTF8_IS_CONTINUED(c) (((U8)c) & 0x80) #define UTF8_IS_DOWNGRADEABLE_START(c) (((U8)c & 0xfc) == 0xc0) #define UTF_START_MARK(len) ((len > 7) ? 0xFF : (0xFE << (7-len))) #define UTF_START_MASK(len) ((len >= 7) ? 0x00 : (0x1F >> (len-2))) #define UTF_CONTINUATION_MARK 0x80 #define UTF_ACCUMULATION_SHIFT 6 #define UTF_CONTINUATION_MASK ((U8)0x3f) #define UTF8_ACCUMULATE(old, new) (((old) << UTF_ACCUMULATION_SHIFT) | (((U8)new) & UTF_CONTINUATION_MASK)) #define UTF8_EIGHT_BIT_HI(c) ((((U8)(c))>>UTF_ACCUMULATION_SHIFT)|UTF_START_MARK(2)) #define UTF8_EIGHT_BIT_LO(c) (((((U8)(c)))&UTF_CONTINUATION_MASK)|UTF_CONTINUATION_MARK) #ifdef HAS_QUAD #define UNISKIP(uv) ( (uv) < 0x80 ? 1 : \ (uv) < 0x800 ? 2 : \ (uv) < 0x10000 ? 3 : \ (uv) < 0x200000 ? 4 : \ (uv) < 0x4000000 ? 5 : \ (uv) < 0x80000000 ? 6 : \ (uv) < UTF8_QUAD_MAX ? 7 : 13 ) #else /* No, I'm not even going to *TRY* putting #ifdef inside a #define */ #define UNISKIP(uv) ( (uv) < 0x80 ? 1 : \ (uv) < 0x800 ? 2 : \ (uv) < 0x10000 ? 3 : \ (uv) < 0x200000 ? 4 : \ (uv) < 0x4000000 ? 5 : \ (uv) < 0x80000000 ? 6 : 7 ) #endif /* * Note: we try to be careful never to call the isXXX_utf8() functions * unless we're pretty sure we've seen the beginning of a UTF-8 character * (that is, the two high bits are set). Otherwise we risk loading in the * heavy-duty swash_init and swash_fetch routines unnecessarily. */ #define isIDFIRST_lazy_if(p,c) ((IN_BYTES || (!c || (*((const U8*)p) < 0xc0))) \ ? isIDFIRST(*(p)) \ : isIDFIRST_utf8((const U8*)p)) #define isALNUM_lazy_if(p,c) ((IN_BYTES || (!c || (*((const U8*)p) < 0xc0))) \ ? isALNUM(*(p)) \ : isALNUM_utf8((const U8*)p)) #endif /* EBCDIC vs ASCII */ /* Rest of these are attributes of Unicode and perl's internals rather than the encoding */ #define isIDFIRST_lazy(p) isIDFIRST_lazy_if(p,1) #define isALNUM_lazy(p) isALNUM_lazy_if(p,1) #define UTF8_MAXBYTES 13 /* How wide can a single UTF-8 encoded character become in bytes. * NOTE: Strictly speaking Perl's UTF-8 should not be called UTF-8 * since UTF-8 is an encoding of Unicode and given Unicode's current * upper limit only four bytes is possible. Perl thinks of UTF-8 * as a way to encode non-negative integers in a binary format. */ #define UTF8_MAXLEN UTF8_MAXBYTES #define UTF8_MAXLEN_UCLC 3 /* Obsolete, do not use. */ #define UTF8_MAXLEN_UCLC_MULT 39 /* Obsolete, do not use. */ #define UTF8_MAXLEN_FOLD 3 /* Obsolete, do not use. */ #define UTF8_MAXLEN_FOLD_MULT 39 /* Obsolete, do not use. */ /* The maximum number of UTF-8 bytes a single Unicode character can * uppercase/lowercase/fold into; this number depends on the Unicode * version. An example of maximal expansion is the U+03B0 which * uppercases to U+03C5 U+0308 U+0301. The Unicode databases that * tell these things are UnicodeDatabase.txt, CaseFolding.txt, and * SpecialCasing.txt. */ #define UTF8_MAXBYTES_CASE 6 #define IN_BYTES (CopHINTS_get(PL_curcop) & HINT_BYTES) #define DO_UTF8(sv) (SvUTF8(sv) && !IN_BYTES) #define UTF8_ALLOW_EMPTY 0x0001 #define UTF8_ALLOW_CONTINUATION 0x0002 #define UTF8_ALLOW_NON_CONTINUATION 0x0004 #define UTF8_ALLOW_FE_FF 0x0008 /* Allow above 0x7fffFFFF */ #define UTF8_ALLOW_SHORT 0x0010 #define UTF8_ALLOW_SURROGATE 0x0020 #define UTF8_ALLOW_FFFF 0x0040 /* Allow UNICODE_ILLEGAL */ #define UTF8_ALLOW_LONG 0x0080 #define UTF8_ALLOW_ANYUV (UTF8_ALLOW_EMPTY|UTF8_ALLOW_FE_FF|\ UTF8_ALLOW_SURROGATE|UTF8_ALLOW_FFFF) #define UTF8_ALLOW_ANY 0x00FF #define UTF8_CHECK_ONLY 0x0200 #define UTF8_ALLOW_DEFAULT (ckWARN(WARN_UTF8) ? 0 : \ UTF8_ALLOW_ANYUV) #define UNICODE_SURROGATE_FIRST 0xD800 #define UNICODE_SURROGATE_LAST 0xDFFF #define UNICODE_REPLACEMENT 0xFFFD #define UNICODE_BYTE_ORDER_MARK 0xFEFF #define UNICODE_ILLEGAL 0xFFFF /* Though our UTF-8 encoding can go beyond this, * let's be conservative and do as Unicode 3.2 says. */ #define PERL_UNICODE_MAX 0x10FFFF #define UNICODE_ALLOW_SURROGATE 0x0001 /* Allow UTF-16 surrogates (EVIL) */ #define UNICODE_ALLOW_FDD0 0x0002 /* Allow the U+FDD0...U+FDEF */ #define UNICODE_ALLOW_FFFF 0x0004 /* Allow U+FFF[EF], U+1FFF[EF], ... */ #define UNICODE_ALLOW_SUPER 0x0008 /* Allow past 0x10FFFF */ #define UNICODE_ALLOW_ANY 0x000F #define UNICODE_IS_SURROGATE(c) ((c) >= UNICODE_SURROGATE_FIRST && \ (c) <= UNICODE_SURROGATE_LAST) #define UNICODE_IS_REPLACEMENT(c) ((c) == UNICODE_REPLACEMENT) #define UNICODE_IS_BYTE_ORDER_MARK(c) ((c) == UNICODE_BYTE_ORDER_MARK) #define UNICODE_IS_ILLEGAL(c) ((c) == UNICODE_ILLEGAL) #ifdef HAS_QUAD # define UTF8_QUAD_MAX UINT64_C(0x1000000000) #endif #define UTF8_IS_ASCII(c) UTF8_IS_INVARIANT(c) #define UNICODE_LATIN_SMALL_LETTER_SHARP_S 0x00DF #define UNICODE_GREEK_CAPITAL_LETTER_SIGMA 0x03A3 #define UNICODE_GREEK_SMALL_LETTER_FINAL_SIGMA 0x03C2 #define UNICODE_GREEK_SMALL_LETTER_SIGMA 0x03C3 #define EBCDIC_LATIN_SMALL_LETTER_SHARP_S 0x0059 #define UNI_DISPLAY_ISPRINT 0x0001 #define UNI_DISPLAY_BACKSLASH 0x0002 #define UNI_DISPLAY_QQ (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH) #define UNI_DISPLAY_REGEX (UNI_DISPLAY_ISPRINT|UNI_DISPLAY_BACKSLASH) #ifdef EBCDIC # define ANYOF_FOLD_SHARP_S(node, input, end) \ (ANYOF_BITMAP_TEST(node, EBCDIC_LATIN_SMALL_LETTER_SHARP_S) && \ (ANYOF_FLAGS(node) & ANYOF_UNICODE) && \ (ANYOF_FLAGS(node) & ANYOF_FOLD) && \ ((end) > (input) + 1) && \ toLOWER((input)[0]) == 's' && \ toLOWER((input)[1]) == 's') #else # define ANYOF_FOLD_SHARP_S(node, input, end) \ (ANYOF_BITMAP_TEST(node, UNICODE_LATIN_SMALL_LETTER_SHARP_S) && \ (ANYOF_FLAGS(node) & ANYOF_UNICODE) && \ (ANYOF_FLAGS(node) & ANYOF_FOLD) && \ ((end) > (input) + 1) && \ toLOWER((input)[0]) == 's' && \ toLOWER((input)[1]) == 's') #endif #define SHARP_S_SKIP 2 #ifdef EBCDIC /* IS_UTF8_CHAR() is not ported to EBCDIC */ #else #define IS_UTF8_CHAR_1(p) \ ((p)[0] <= 0x7F) #define IS_UTF8_CHAR_2(p) \ ((p)[0] >= 0xC2 && (p)[0] <= 0xDF && \ (p)[1] >= 0x80 && (p)[1] <= 0xBF) #define IS_UTF8_CHAR_3a(p) \ ((p)[0] == 0xE0 && \ (p)[1] >= 0xA0 && (p)[1] <= 0xBF && \ (p)[2] >= 0x80 && (p)[2] <= 0xBF) #define IS_UTF8_CHAR_3b(p) \ ((p)[0] >= 0xE1 && (p)[0] <= 0xEC && \ (p)[1] >= 0x80 && (p)[1] <= 0xBF && \ (p)[2] >= 0x80 && (p)[2] <= 0xBF) #define IS_UTF8_CHAR_3c(p) \ ((p)[0] == 0xED && \ (p)[1] >= 0x80 && (p)[1] <= 0xBF && \ (p)[2] >= 0x80 && (p)[2] <= 0xBF) /* In IS_UTF8_CHAR_3c(p) one could use * (p)[1] >= 0x80 && (p)[1] <= 0x9F * if one wanted to exclude surrogates. */ #define IS_UTF8_CHAR_3d(p) \ ((p)[0] >= 0xEE && (p)[0] <= 0xEF && \ (p)[1] >= 0x80 && (p)[1] <= 0xBF && \ (p)[2] >= 0x80 && (p)[2] <= 0xBF) #define IS_UTF8_CHAR_4a(p) \ ((p)[0] == 0xF0 && \ (p)[1] >= 0x90 && (p)[1] <= 0xBF && \ (p)[2] >= 0x80 && (p)[2] <= 0xBF && \ (p)[3] >= 0x80 && (p)[3] <= 0xBF) #define IS_UTF8_CHAR_4b(p) \ ((p)[0] >= 0xF1 && (p)[0] <= 0xF3 && \ (p)[1] >= 0x80 && (p)[1] <= 0xBF && \ (p)[2] >= 0x80 && (p)[2] <= 0xBF && \ (p)[3] >= 0x80 && (p)[3] <= 0xBF) /* In IS_UTF8_CHAR_4c(p) one could use * (p)[0] == 0xF4 * if one wanted to stop at the Unicode limit U+10FFFF. * The 0xF7 allows us to go to 0x1fffff (0x200000 would * require five bytes). Not doing any further code points * since that is not needed (and that would not be strict * UTF-8, anyway). The "slow path" in Perl_is_utf8_char() * will take care of the "extended UTF-8". */ #define IS_UTF8_CHAR_4c(p) \ ((p)[0] == 0xF4 && (p)[0] <= 0xF7 && \ (p)[1] >= 0x80 && (p)[1] <= 0xBF && \ (p)[2] >= 0x80 && (p)[2] <= 0xBF && \ (p)[3] >= 0x80 && (p)[3] <= 0xBF) #define IS_UTF8_CHAR_3(p) \ (IS_UTF8_CHAR_3a(p) || \ IS_UTF8_CHAR_3b(p) || \ IS_UTF8_CHAR_3c(p) || \ IS_UTF8_CHAR_3d(p)) #define IS_UTF8_CHAR_4(p) \ (IS_UTF8_CHAR_4a(p) || \ IS_UTF8_CHAR_4b(p) || \ IS_UTF8_CHAR_4c(p)) /* IS_UTF8_CHAR(p) is strictly speaking wrong (not UTF-8) because it * (1) allows UTF-8 encoded UTF-16 surrogates * (2) it allows code points past U+10FFFF. * The Perl_is_utf8_char() full "slow" code will handle the Perl * "extended UTF-8". */ #define IS_UTF8_CHAR(p, n) \ ((n) == 1 ? IS_UTF8_CHAR_1(p) : \ (n) == 2 ? IS_UTF8_CHAR_2(p) : \ (n) == 3 ? IS_UTF8_CHAR_3(p) : \ (n) == 4 ? IS_UTF8_CHAR_4(p) : 0) #define IS_UTF8_CHAR_FAST(n) ((n) <= 4) #endif /* IS_UTF8_CHAR() for UTF-8 */ Convert-Binary-C-0.76/tests/include/perlinc/util.h0000644000175000001440000000272111550664631020563 0ustar mhxusers/* util.h * * Copyright (C) 1991, 1992, 1993, 1999, 2001, 2002, * by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #ifdef VMS # define PERL_FILE_IS_ABSOLUTE(f) \ (*(f) == '/' \ || (strchr(f,':') \ || ((*(f) == '[' || *(f) == '<') \ && (isALNUM((f)[1]) || strchr("$-_]>",(f)[1]))))) #else /* !VMS */ # if defined(WIN32) || defined(__CYGWIN__) # define PERL_FILE_IS_ABSOLUTE(f) \ (*(f) == '/' || *(f) == '\\' /* UNC/rooted path */ \ || ((f)[0] && (f)[1] == ':')) /* drive name */ # else /* !WIN32 */ # ifdef NETWARE # define PERL_FILE_IS_ABSOLUTE(f) \ (((f)[0] && (f)[1] == ':') /* drive name */ \ || ((f)[0] == '\\' && (f)[1] == '\\') /* UNC path */ \ || ((f)[3] == ':')) /* volume name, currently only sys */ # else /* !NETWARE */ # if defined(DOSISH) || defined(EPOC) || defined(__SYMBIAN32__) # define PERL_FILE_IS_ABSOLUTE(f) \ (*(f) == '/' \ || ((f)[0] && (f)[1] == ':')) /* drive name */ # else /* NEITHER DOSISH NOR EPOCISH NOR SYMBIANISH */ # ifdef MACOS_TRADITIONAL # define PERL_FILE_IS_ABSOLUTE(f) (strchr(f, ':') && *(f) != ':') # else /* !MACOS_TRADITIONAL */ # define PERL_FILE_IS_ABSOLUTE(f) (*(f) == '/') # endif /* MACOS_TRADITIONAL */ # endif /* DOSISH */ # endif /* NETWARE */ # endif /* WIN32 */ #endif /* VMS */ Convert-Binary-C-0.76/tests/include/perlinc/thread.h0000644000175000001440000003005211550664630021052 0ustar mhxusers/* thread.h * * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, * by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #if defined(USE_ITHREADS) #if defined(VMS) #include #endif #ifdef WIN32 # include #else #ifdef NETWARE # include #else # ifdef OLD_PTHREADS_API /* Here be dragons. */ # define DETACH(t) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_detach(&(t)->self))) { \ MUTEX_UNLOCK(&(t)->mutex); \ Perl_croak_nocontext("panic: DETACH (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } \ } STMT_END # define PERL_GET_CONTEXT Perl_get_context() # define PERL_SET_CONTEXT(t) Perl_set_context((void*)t) # define PTHREAD_GETSPECIFIC_INT # ifdef DJGPP # define pthread_addr_t any_t # define NEED_PTHREAD_INIT # define PTHREAD_CREATE_JOINABLE (1) # endif # ifdef __OPEN_VM # define pthread_addr_t void * # endif # ifdef OEMVS # define pthread_addr_t void * # define pthread_create(t,a,s,d) pthread_create(t,&(a),s,d) # define pthread_keycreate pthread_key_create # endif # ifdef VMS # define pthread_attr_init(a) pthread_attr_create(a) # define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_setdetach_np(a,s) # define PTHREAD_CREATE(t,a,s,d) pthread_create(t,a,s,d) # define pthread_key_create(k,d) pthread_keycreate(k,(pthread_destructor_t)(d)) # define pthread_mutexattr_init(a) pthread_mutexattr_create(a) # define pthread_mutexattr_settype(a,t) pthread_mutexattr_setkind_np(a,t) # endif # if defined(__hpux) && defined(__ux_version) && __ux_version <= 1020 # define pthread_attr_init(a) pthread_attr_create(a) /* XXX pthread_setdetach_np() missing in DCE threads on HP-UX 10.20 */ # define PTHREAD_ATTR_SETDETACHSTATE(a,s) (0) # define PTHREAD_CREATE(t,a,s,d) pthread_create(t,a,s,d) # define pthread_key_create(k,d) pthread_keycreate(k,(pthread_destructor_t)(d)) # define pthread_mutexattr_init(a) pthread_mutexattr_create(a) # define pthread_mutexattr_settype(a,t) pthread_mutexattr_setkind_np(a,t) # endif # if defined(DJGPP) || defined(__OPEN_VM) || defined(OEMVS) # define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_attr_setdetachstate(a,&(s)) # define YIELD pthread_yield(NULL) # endif # endif # if !defined(__hpux) || !defined(__ux_version) || __ux_version > 1020 # define pthread_mutexattr_default NULL # define pthread_condattr_default NULL # endif #endif /* NETWARE */ #endif #ifndef PTHREAD_CREATE /* You are not supposed to pass NULL as the 2nd arg of PTHREAD_CREATE(). */ # define PTHREAD_CREATE(t,a,s,d) pthread_create(t,&(a),s,d) #endif #ifndef PTHREAD_ATTR_SETDETACHSTATE # define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_attr_setdetachstate(a,s) #endif #ifndef PTHREAD_CREATE_JOINABLE # ifdef OLD_PTHREAD_CREATE_JOINABLE # define PTHREAD_CREATE_JOINABLE OLD_PTHREAD_CREATE_JOINABLE # else # define PTHREAD_CREATE_JOINABLE 0 /* Panic? No, guess. */ # endif #endif #ifdef DGUX # define THREAD_CREATE_NEEDS_STACK (32*1024) #endif #ifdef __VMS /* Default is 1024 on VAX, 8192 otherwise */ # define THREAD_CREATE_NEEDS_STACK (32*1024) #endif #ifdef I_MACH_CTHREADS /* cthreads interface */ /* #include is in perl.h #ifdef I_MACH_CTHREADS */ #define MUTEX_INIT(m) \ STMT_START { \ *m = mutex_alloc(); \ if (*m) { \ mutex_init(*m); \ } else { \ Perl_croak_nocontext("panic: MUTEX_INIT [%s:%d]", \ __FILE__, __LINE__); \ } \ } STMT_END #define MUTEX_LOCK(m) mutex_lock(*m) #define MUTEX_UNLOCK(m) mutex_unlock(*m) #define MUTEX_DESTROY(m) \ STMT_START { \ mutex_free(*m); \ *m = 0; \ } STMT_END #define COND_INIT(c) \ STMT_START { \ *c = condition_alloc(); \ if (*c) { \ condition_init(*c); \ } \ else { \ Perl_croak_nocontext("panic: COND_INIT [%s:%d]", \ __FILE__, __LINE__); \ } \ } STMT_END #define COND_SIGNAL(c) condition_signal(*c) #define COND_BROADCAST(c) condition_broadcast(*c) #define COND_WAIT(c, m) condition_wait(*c, *m) #define COND_DESTROY(c) \ STMT_START { \ condition_free(*c); \ *c = 0; \ } STMT_END #define THREAD_CREATE(thr, f) (thr->self = cthread_fork(f, thr), 0) #define THREAD_POST_CREATE(thr) #define THREAD_RET_TYPE any_t #define THREAD_RET_CAST(x) ((any_t) x) #define DETACH(t) cthread_detach(t->self) #define JOIN(t, avp) (*(avp) = (AV *)cthread_join(t->self)) #define PERL_SET_CONTEXT(t) cthread_set_data(cthread_self(), t) #define PERL_GET_CONTEXT cthread_data(cthread_self()) #define INIT_THREADS cthread_init() #define YIELD cthread_yield() #define ALLOC_THREAD_KEY NOOP #define FREE_THREAD_KEY NOOP #define SET_THREAD_SELF(thr) (thr->self = cthread_self()) #endif /* I_MACH_CTHREADS */ #ifndef YIELD # ifdef SCHED_YIELD # define YIELD SCHED_YIELD # else # ifdef HAS_SCHED_YIELD # define YIELD sched_yield() # else # ifdef HAS_PTHREAD_YIELD /* pthread_yield(NULL) platforms are expected * to have #defined YIELD for themselves. */ # define YIELD pthread_yield() # endif # endif # endif #endif #ifdef __hpux # define MUTEX_INIT_NEEDS_MUTEX_ZEROED #endif #ifndef MUTEX_INIT # ifdef MUTEX_INIT_NEEDS_MUTEX_ZEROED /* Temporary workaround, true bug is deeper. --jhi 1999-02-25 */ # define MUTEX_INIT(m) \ STMT_START { \ int _eC_; \ Zero((m), 1, perl_mutex); \ if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default))) \ Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END # else # define MUTEX_INIT(m) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default))) \ Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END # endif # define MUTEX_LOCK(m) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_mutex_lock((m)))) \ Perl_croak_nocontext("panic: MUTEX_LOCK (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END # define MUTEX_UNLOCK(m) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_mutex_unlock((m)))) \ Perl_croak_nocontext("panic: MUTEX_UNLOCK (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END # define MUTEX_DESTROY(m) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_mutex_destroy((m)))) \ Perl_croak_nocontext("panic: MUTEX_DESTROY (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* MUTEX_INIT */ #ifndef COND_INIT # define COND_INIT(c) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_cond_init((c), pthread_condattr_default))) \ Perl_croak_nocontext("panic: COND_INIT (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_SIGNAL(c) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_cond_signal((c)))) \ Perl_croak_nocontext("panic: COND_SIGNAL (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_BROADCAST(c) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_cond_broadcast((c)))) \ Perl_croak_nocontext("panic: COND_BROADCAST (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_WAIT(c, m) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_cond_wait((c), (m)))) \ Perl_croak_nocontext("panic: COND_WAIT (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END # define COND_DESTROY(c) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_cond_destroy((c)))) \ Perl_croak_nocontext("panic: COND_DESTROY (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* COND_INIT */ /* DETACH(t) must only be called while holding t->mutex */ #ifndef DETACH # define DETACH(t) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_detach((t)->self))) { \ MUTEX_UNLOCK(&(t)->mutex); \ Perl_croak_nocontext("panic: DETACH (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } \ } STMT_END #endif /* DETACH */ #ifndef JOIN # define JOIN(t, avp) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_join((t)->self, (void**)(avp)))) \ Perl_croak_nocontext("panic: pthread_join (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* JOIN */ /* Use an unchecked fetch of thread-specific data instead of a checked one. * It would fail if the key were bogus, but if the key were bogus then * Really Bad Things would be happening anyway. --dan */ #if (defined(__ALPHA) && (__VMS_VER >= 70000000)) || \ (defined(__alpha) && defined(__osf__) && !defined(__GNUC__)) /* Available only on >= 4.0 */ # define HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP /* Configure test needed */ #endif #ifdef HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP # define PTHREAD_GETSPECIFIC(key) pthread_unchecked_getspecific_np(key) #else # define PTHREAD_GETSPECIFIC(key) pthread_getspecific(key) #endif #ifndef PERL_GET_CONTEXT # define PERL_GET_CONTEXT PTHREAD_GETSPECIFIC(PL_thr_key) #endif #ifndef PERL_SET_CONTEXT # define PERL_SET_CONTEXT(t) \ STMT_START { \ int _eC_; \ if ((_eC_ = pthread_setspecific(PL_thr_key, (void *)(t)))) \ Perl_croak_nocontext("panic: pthread_setspecific (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END #endif /* PERL_SET_CONTEXT */ #ifndef INIT_THREADS # ifdef NEED_PTHREAD_INIT # define INIT_THREADS pthread_init() # endif #endif #ifndef ALLOC_THREAD_KEY # define ALLOC_THREAD_KEY \ STMT_START { \ if (pthread_key_create(&PL_thr_key, 0)) { \ write(2, STR_WITH_LEN("panic: pthread_key_create failed\n")); \ exit(1); \ } \ } STMT_END #endif #ifndef FREE_THREAD_KEY # define FREE_THREAD_KEY \ STMT_START { \ pthread_key_delete(PL_thr_key); \ } STMT_END #endif #ifndef PTHREAD_ATFORK # ifdef HAS_PTHREAD_ATFORK # define PTHREAD_ATFORK(prepare,parent,child) \ pthread_atfork(prepare,parent,child) # else # define PTHREAD_ATFORK(prepare,parent,child) \ NOOP # endif #endif #ifndef THREAD_RET_TYPE # define THREAD_RET_TYPE void * # define THREAD_RET_CAST(p) ((void *)(p)) #endif /* THREAD_RET */ # define LOCK_DOLLARZERO_MUTEX MUTEX_LOCK(&PL_dollarzero_mutex) # define UNLOCK_DOLLARZERO_MUTEX MUTEX_UNLOCK(&PL_dollarzero_mutex) #endif /* USE_ITHREADS */ #ifndef MUTEX_LOCK # define MUTEX_LOCK(m) #endif #ifndef MUTEX_UNLOCK # define MUTEX_UNLOCK(m) #endif #ifndef MUTEX_INIT # define MUTEX_INIT(m) #endif #ifndef MUTEX_DESTROY # define MUTEX_DESTROY(m) #endif #ifndef COND_INIT # define COND_INIT(c) #endif #ifndef COND_SIGNAL # define COND_SIGNAL(c) #endif #ifndef COND_BROADCAST # define COND_BROADCAST(c) #endif #ifndef COND_WAIT # define COND_WAIT(c, m) #endif #ifndef COND_DESTROY # define COND_DESTROY(c) #endif #ifndef LOCK_SV_MUTEX # define LOCK_SV_MUTEX #endif #ifndef UNLOCK_SV_MUTEX # define UNLOCK_SV_MUTEX #endif #ifndef LOCK_STRTAB_MUTEX # define LOCK_STRTAB_MUTEX #endif #ifndef UNLOCK_STRTAB_MUTEX # define UNLOCK_STRTAB_MUTEX #endif #ifndef LOCK_CRED_MUTEX # define LOCK_CRED_MUTEX #endif #ifndef UNLOCK_CRED_MUTEX # define UNLOCK_CRED_MUTEX #endif #ifndef LOCK_FDPID_MUTEX # define LOCK_FDPID_MUTEX #endif #ifndef UNLOCK_FDPID_MUTEX # define UNLOCK_FDPID_MUTEX #endif #ifndef LOCK_SV_LOCK_MUTEX # define LOCK_SV_LOCK_MUTEX #endif #ifndef UNLOCK_SV_LOCK_MUTEX # define UNLOCK_SV_LOCK_MUTEX #endif #ifndef LOCK_DOLLARZERO_MUTEX # define LOCK_DOLLARZERO_MUTEX #endif #ifndef UNLOCK_DOLLARZERO_MUTEX # define UNLOCK_DOLLARZERO_MUTEX #endif /* THR, SET_THR, and dTHR are there for compatibility with old versions */ #ifndef THR # define THR PERL_GET_THX #endif #ifndef SET_THR # define SET_THR(t) PERL_SET_THX(t) #endif #ifndef dTHR # define dTHR dNOOP #endif #ifndef INIT_THREADS # define INIT_THREADS NOOP #endif Convert-Binary-C-0.76/tests/include/perlinc/perly.h0000644000175000001440000001031511550664630020736 0ustar mhxusers#ifdef PERL_CORE /* A Bison parser, made by GNU Bison 2.1. */ /* Skeleton parser for Yacc-like parsing with Bison, Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { WORD = 258, METHOD = 259, FUNCMETH = 260, THING = 261, PMFUNC = 262, PRIVATEREF = 263, FUNC0SUB = 264, UNIOPSUB = 265, LSTOPSUB = 266, LABEL = 267, FORMAT = 268, SUB = 269, ANONSUB = 270, PACKAGE = 271, USE = 272, WHILE = 273, UNTIL = 274, IF = 275, UNLESS = 276, ELSE = 277, ELSIF = 278, CONTINUE = 279, FOR = 280, GIVEN = 281, WHEN = 282, DEFAULT = 283, LOOPEX = 284, DOTDOT = 285, FUNC0 = 286, FUNC1 = 287, FUNC = 288, UNIOP = 289, LSTOP = 290, RELOP = 291, EQOP = 292, MULOP = 293, ADDOP = 294, DOLSHARP = 295, DO = 296, HASHBRACK = 297, NOAMP = 298, LOCAL = 299, MY = 300, MYSUB = 301, REQUIRE = 302, COLONATTR = 303, PREC_LOW = 304, DOROP = 305, OROP = 306, ANDOP = 307, NOTOP = 308, ASSIGNOP = 309, DORDOR = 310, OROR = 311, ANDAND = 312, BITOROP = 313, BITANDOP = 314, SHIFTOP = 315, MATCHOP = 316, REFGEN = 317, UMINUS = 318, POWOP = 319, POSTDEC = 320, POSTINC = 321, PREDEC = 322, PREINC = 323, ARROW = 324, PEG = 325 }; #endif /* Tokens. */ #define WORD 258 #define METHOD 259 #define FUNCMETH 260 #define THING 261 #define PMFUNC 262 #define PRIVATEREF 263 #define FUNC0SUB 264 #define UNIOPSUB 265 #define LSTOPSUB 266 #define LABEL 267 #define FORMAT 268 #define SUB 269 #define ANONSUB 270 #define PACKAGE 271 #define USE 272 #define WHILE 273 #define UNTIL 274 #define IF 275 #define UNLESS 276 #define ELSE 277 #define ELSIF 278 #define CONTINUE 279 #define FOR 280 #define GIVEN 281 #define WHEN 282 #define DEFAULT 283 #define LOOPEX 284 #define DOTDOT 285 #define FUNC0 286 #define FUNC1 287 #define FUNC 288 #define UNIOP 289 #define LSTOP 290 #define RELOP 291 #define EQOP 292 #define MULOP 293 #define ADDOP 294 #define DOLSHARP 295 #define DO 296 #define HASHBRACK 297 #define NOAMP 298 #define LOCAL 299 #define MY 300 #define MYSUB 301 #define REQUIRE 302 #define COLONATTR 303 #define PREC_LOW 304 #define DOROP 305 #define OROP 306 #define ANDOP 307 #define NOTOP 308 #define ASSIGNOP 309 #define DORDOR 310 #define OROR 311 #define ANDAND 312 #define BITOROP 313 #define BITANDOP 314 #define SHIFTOP 315 #define MATCHOP 316 #define REFGEN 317 #define UMINUS 318 #define POWOP 319 #define POSTDEC 320 #define POSTINC 321 #define PREDEC 322 #define PREINC 323 #define ARROW 324 #define PEG 325 #endif /* PERL_CORE */ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) typedef union YYSTYPE { I32 ival; char *pval; #ifdef PERL_MAD TOKEN* tkval; #endif OP *opval; GV *gvval; } YYSTYPE; /* Line 1447 of yacc.c. */ # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif Convert-Binary-C-0.76/tests/include/perlinc/intrpvar.h0000644000175000001440000004500011550664630021447 0ustar mhxusers/***********************************************/ /* Global only to current interpreter instance */ /***********************************************/ /* Don't forget to re-run embed.pl to propagate changes! */ /* New variables must be added to the very end for binary compatibility. * XSUB.h provides wrapper functions via perlapi.h that make this * irrelevant, but not all code may be expected to #include XSUB.h. */ /* Don't forget to add your variable also to perl_clone()! */ /* The 'I' prefix is only needed for vars that need appropriate #defines * generated when built with or without MULTIPLICITY. It is also used * to generate the appropriate export list for win32. * * When building without MULTIPLICITY, these variables will be truly global. */ /* pseudo environmental stuff */ PERLVAR(Iorigargc, int) PERLVAR(Iorigargv, char **) PERLVAR(Ienvgv, GV *) PERLVAR(Iincgv, GV *) PERLVAR(Ihintgv, GV *) PERLVAR(Iorigfilename, char *) PERLVAR(Idiehook, SV *) PERLVAR(Iwarnhook, SV *) /* switches */ PERLVAR(Iminus_c, bool) PERLVAR(Ipatchlevel, SV *) PERLVAR(Ilocalpatches, const char * const *) PERLVARI(Isplitstr, const char *, " ") PERLVAR(Ipreprocess, bool) PERLVAR(Iminus_n, bool) PERLVAR(Iminus_p, bool) PERLVAR(Iminus_l, bool) PERLVAR(Iminus_a, bool) PERLVAR(Iminus_F, bool) PERLVAR(Idoswitches, bool) PERLVAR(Iminus_E, bool) /* =head1 Global Variables =for apidoc mn|bool|PL_dowarn The C variable which corresponds to Perl's $^W warning variable. =cut */ PERLVAR(Idowarn, U8) PERLVAR(Iwidesyscalls, bool) /* unused since 5.8.1 */ PERLVAR(Idoextract, bool) PERLVAR(Isawampersand, bool) /* must save all match strings */ PERLVAR(Iunsafe, bool) PERLVAR(Iinplace, char *) PERLVAR(Ie_script, SV *) PERLVAR(Iperldb, U32) /* This value may be set when embedding for full cleanup */ /* 0=none, 1=full, 2=full with checks */ PERLVARI(Iperl_destruct_level, int, 0) /* magical thingies */ PERLVAR(Ibasetime, Time_t) /* $^T */ PERLVAR(Iformfeed, SV *) /* $^L */ PERLVARI(Imaxsysfd, I32, MAXSYSFD) /* top fd to pass to subprocesses */ PERLVAR(Istatusvalue, I32) /* $? */ PERLVAR(Iexit_flags, U8) /* was exit() unexpected, etc. */ #ifdef VMS PERLVAR(Istatusvalue_vms,U32) #else PERLVAR(Istatusvalue_posix,I32) #endif /* shortcuts to various I/O objects */ PERLVAR(Istdingv, GV *) PERLVAR(Istderrgv, GV *) PERLVAR(Idefgv, GV *) PERLVAR(Iargvgv, GV *) PERLVAR(Iargvoutgv, GV *) PERLVAR(Iargvout_stack, AV *) /* shortcuts to regexp stuff */ /* this one needs to be moved to thrdvar.h and accessed via * find_threadsv() when USE_5005THREADS */ PERLVAR(Ireplgv, GV *) /* shortcuts to misc objects */ PERLVAR(Ierrgv, GV *) /* shortcuts to debugging objects */ PERLVAR(IDBgv, GV *) PERLVAR(IDBline, GV *) /* =for apidoc mn|GV *|PL_DBsub When Perl is run in debugging mode, with the B<-d> switch, this GV contains the SV which holds the name of the sub being debugged. This is the C variable which corresponds to Perl's $DB::sub variable. See C. =for apidoc mn|SV *|PL_DBsingle When Perl is run in debugging mode, with the B<-d> switch, this SV is a boolean which indicates whether subs are being single-stepped. Single-stepping is automatically turned on after every step. This is the C variable which corresponds to Perl's $DB::single variable. See C. =for apidoc mn|SV *|PL_DBtrace Trace variable used when Perl is run in debugging mode, with the B<-d> switch. This is the C variable which corresponds to Perl's $DB::trace variable. See C. =cut */ PERLVAR(IDBsub, GV *) PERLVAR(IDBsingle, SV *) PERLVAR(IDBtrace, SV *) PERLVAR(IDBsignal, SV *) PERLVAR(Ilineary, AV *) /* lines of script for debugger */ PERLVAR(Idbargs, AV *) /* args to call listed by caller function */ /* symbol tables */ PERLVAR(Idebstash, HV *) /* symbol table for perldb package */ PERLVAR(Iglobalstash, HV *) /* global keyword overrides imported here */ PERLVAR(Icurstname, SV *) /* name of current package */ PERLVAR(Ibeginav, AV *) /* names of BEGIN subroutines */ PERLVAR(Iendav, AV *) /* names of END subroutines */ PERLVAR(Iunitcheckav, AV *) /* names of UNITCHECK subroutines */ PERLVAR(Icheckav, AV *) /* names of CHECK subroutines */ PERLVAR(Iinitav, AV *) /* names of INIT subroutines */ PERLVAR(Istrtab, HV *) /* shared string table */ PERLVARI(Isub_generation,U32,1) /* incr to invalidate method cache */ /* memory management */ PERLVAR(Isv_count, I32) /* how many SV* are currently allocated */ PERLVAR(Isv_objcount, I32) /* how many objects are currently allocated */ PERLVAR(Isv_root, SV*) /* storage for SVs belonging to interp */ PERLVAR(Isv_arenaroot, SV*) /* list of areas for garbage collection */ /* funky return mechanisms */ PERLVAR(Iforkprocess, int) /* so do_open |- can return proc# */ /* subprocess state */ PERLVAR(Ifdpid, AV *) /* keep fd-to-pid mappings for my_popen */ /* internal state */ PERLVAR(Itainting, bool) /* doing taint checks */ PERLVARI(Iop_mask, char *, NULL) /* masked operations for safe evals */ /* current interpreter roots */ PERLVAR(Imain_cv, CV *) PERLVAR(Imain_root, OP *) PERLVAR(Imain_start, OP *) PERLVAR(Ieval_root, OP *) PERLVAR(Ieval_start, OP *) /* runtime control stuff */ PERLVARI(Icurcopdb, COP *, NULL) PERLVARI(Icopline, line_t, NOLINE) /* statics moved here for shared library purposes */ PERLVAR(Ifilemode, int) /* so nextargv() can preserve mode */ PERLVAR(Ilastfd, int) /* what to preserve mode on */ PERLVAR(Ioldname, char *) /* what to preserve mode on */ PERLVAR(IArgv, char **) /* stuff to free from do_aexec, vfork safe */ PERLVAR(ICmd, char *) /* stuff to free from do_aexec, vfork safe */ PERLVARI(Igensym, I32, 0) /* next symbol for getsym() to define */ PERLVAR(Ipreambled, bool) PERLVAR(Ipreambleav, AV *) PERLVARI(Ilaststatval, int, -1) PERLVARI(Ilaststype, I32, OP_STAT) PERLVAR(Imess_sv, SV *) /* XXX shouldn't these be per-thread? --GSAR */ PERLVAR(Iors_sv, SV *) /* output record separator $\ */ /* interpreter atexit processing */ PERLVARI(Iexitlist, PerlExitListEntry *, NULL) /* list of exit functions */ PERLVARI(Iexitlistlen, I32, 0) /* length of same */ /* =for apidoc Amn|HV*|PL_modglobal C is a general purpose, interpreter global HV for use by extensions that need to keep information on a per-interpreter basis. In a pinch, it can also be used as a symbol table for extensions to share data among each other. It is a good idea to use keys prefixed by the package name of the extension that owns the data. =cut */ PERLVAR(Imodglobal, HV *) /* per-interp module data */ /* these used to be in global before 5.004_68 */ PERLVARI(Iprofiledata, U32 *, NULL) /* table of ops, counts */ PERLVARI(Irsfp, PerlIO * VOL, NULL) /* current source file pointer */ PERLVARI(Irsfp_filters, AV *, NULL) /* keeps active source filters */ PERLVAR(Icompiling, COP) /* compiling/done executing marker */ PERLVAR(Icompcv, CV *) /* currently compiling subroutine */ PERLVAR(Icomppad, AV *) /* storage for lexically scoped temporaries */ PERLVAR(Icomppad_name, AV *) /* variable names for "my" variables */ PERLVAR(Icomppad_name_fill, I32) /* last "introduced" variable offset */ PERLVAR(Icomppad_name_floor, I32) /* start of vars in innermost block */ #ifdef HAVE_INTERP_INTERN PERLVAR(Isys_intern, struct interp_intern) /* platform internals */ #endif /* more statics moved here */ PERLVARI(Igeneration, int, 100) /* from op.c */ PERLVAR(IDBcv, CV *) /* from perl.c */ PERLVARI(Iin_clean_objs,bool, FALSE) /* from sv.c */ PERLVARI(Iin_clean_all, bool, FALSE) /* from sv.c */ PERLVAR(Ilinestart, char *) /* beg. of most recently read line */ PERLVAR(Ipending_ident, char) /* pending identifier lookup */ PERLVAR(Isublex_info, SUBLEXINFO) /* from toke.c */ PERLVAR(Iuid, Uid_t) /* current real user id */ PERLVAR(Ieuid, Uid_t) /* current effective user id */ PERLVAR(Igid, Gid_t) /* current real group id */ PERLVAR(Iegid, Gid_t) /* current effective group id */ PERLVAR(Inomemok, bool) /* let malloc context handle nomem */ PERLVARI(Ian, U32, 0) /* malloc sequence number */ PERLVARI(Icop_seqmax, U32, 0) /* statement sequence number */ PERLVARI(Ievalseq, U32, 0) /* eval sequence number */ PERLVAR(Iorigenviron, char **) PERLVAR(Iorigalen, U32) #ifdef PERL_USES_PL_PIDSTATUS PERLVAR(Ipidstatus, HV *) /* pid-to-status mappings for waitpid */ #endif PERLVARI(Imaxo, int, MAXO) /* maximum number of ops */ PERLVAR(Iosname, char *) /* operating system */ PERLVAR(Isighandlerp, Sighandler_t) PERLVARA(Ibody_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */ PERLVAR(Inice_chunk, char *) /* a nice chunk of memory to reuse */ PERLVAR(Inice_chunk_size, U32) /* how nice the chunk of memory is */ PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT)) PERLVARA(Itokenbuf,256, char) /* =for apidoc Amn|SV|PL_sv_undef This is the C SV. Always refer to this as C<&PL_sv_undef>. =for apidoc Amn|SV|PL_sv_no This is the C SV. See C. Always refer to this as C<&PL_sv_no>. =for apidoc Amn|SV|PL_sv_yes This is the C SV. See C. Always refer to this as C<&PL_sv_yes>. =cut */ PERLVAR(Isv_undef, SV) PERLVAR(Isv_no, SV) PERLVAR(Isv_yes, SV) #ifdef CSH PERLVARI(Icshname, const char *, CSH) PERLVARI(Icshlen, I32, 0) #endif PERLVAR(Ilex_state, U32) /* next token is determined */ PERLVAR(Ilex_defer, U32) /* state after determined token */ PERLVAR(Ilex_expect, int) /* expect after determined token */ PERLVAR(Ilex_brackets, I32) /* bracket count */ PERLVAR(Ilex_formbrack, I32) /* bracket count at outer format level */ PERLVAR(Ilex_casemods, I32) /* casemod count */ PERLVAR(Ilex_dojoin, I32) /* doing an array interpolation */ PERLVAR(Ilex_starts, I32) /* how many interps done on level */ PERLVAR(Ilex_stuff, SV *) /* runtime pattern from m// or s/// */ PERLVAR(Ilex_repl, SV *) /* runtime replacement from s/// */ PERLVAR(Ilex_op, OP *) /* extra info to pass back on op */ PERLVAR(Ilex_inpat, OP *) /* in pattern $) and $| are special */ PERLVAR(Ilex_inwhat, I32) /* what kind of quoting are we in */ PERLVAR(Ilex_brackstack,char *) /* what kind of brackets to pop */ PERLVAR(Ilex_casestack, char *) /* what kind of case mods in effect */ /* What we know when we're in LEX_KNOWNEXT state. */ #ifdef PERL_MAD PERLVARA(Inexttoke,5, NEXTTOKE) /* value of next token, if any */ PERLVAR(Ilasttoke, I32) PERLVAR(Irealtokenstart,I32) PERLVAR(Ifaketokens, I32) PERLVAR(Ithismad, MADPROP *) PERLVAR(Ithistoken, SV *) PERLVAR(Ithisopen, SV *) PERLVAR(Ithisstuff, SV *) PERLVAR(Ithisclose, SV *) PERLVAR(Ithiswhite, SV *) PERLVAR(Inextwhite, SV *) PERLVAR(Iskipwhite, SV *) PERLVAR(Iendwhite, SV *) PERLVAR(Icurforce, I32) #else PERLVARA(Inextval,5, YYSTYPE) /* value of next token, if any */ PERLVARA(Inexttype,5, I32) /* type of next token */ PERLVAR(Inexttoke, I32) #endif PERLVAR(Ilinestr, SV *) PERLVAR(Ibufptr, char *) PERLVAR(Ioldbufptr, char *) PERLVAR(Ioldoldbufptr, char *) PERLVAR(Ibufend, char *) PERLVARI(Iexpect,int, XSTATE) /* how to interpret ambiguous tokens */ PERLVAR(Imulti_start, I32) /* 1st line of multi-line string */ PERLVAR(Imulti_end, I32) /* last line of multi-line string */ PERLVAR(Imulti_open, I32) /* delimiter of said string */ PERLVAR(Imulti_close, I32) /* delimiter of said string */ PERLVAR(Ierror_count, I32) /* how many errors so far, max 10 */ PERLVAR(Isubline, I32) /* line this subroutine began on */ PERLVAR(Isubname, SV *) /* name of current subroutine */ PERLVAR(Imin_intro_pending, I32) /* start of vars to introduce */ PERLVAR(Imax_intro_pending, I32) /* end of vars to introduce */ PERLVAR(Ipadix, I32) /* max used index in current "register" pad */ PERLVAR(Ipadix_floor, I32) /* how low may inner block reset padix */ PERLVAR(Ipad_reset_pending, I32) /* reset pad on next attempted alloc */ PERLVAR(Ilast_uni, char *) /* position of last named-unary op */ PERLVAR(Ilast_lop, char *) /* position of last list operator */ PERLVAR(Ilast_lop_op, OPCODE) /* last list operator */ PERLVAR(Iin_my, I32) /* we're compiling a "my" (or "our") declaration */ PERLVAR(Iin_my_stash, HV *) /* declared class of this "my" declaration */ #ifdef FCRYPT PERLVARI(Icryptseen, bool, FALSE) /* has fast crypt() been initialized? */ #endif PERLVAR(Ihints, U32) /* pragma-tic compile-time flags */ PERLVAR(Idebug, VOL U32) /* flags given to -D switch */ PERLVARI(Iamagic_generation, long, 0) #ifdef USE_LOCALE_COLLATE PERLVARI(Icollation_ix, U32, 0) /* Collation generation index */ PERLVAR(Icollation_name,char *) /* Name of current collation */ PERLVARI(Icollation_standard, bool, TRUE) /* Assume simple collation */ PERLVAR(Icollxfrm_base, Size_t) /* Basic overhead in *xfrm() */ PERLVARI(Icollxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */ #endif /* USE_LOCALE_COLLATE */ #ifdef USE_LOCALE_NUMERIC PERLVAR(Inumeric_name, char *) /* Name of current numeric locale */ PERLVARI(Inumeric_standard, bool, TRUE) /* Assume simple numerics */ PERLVARI(Inumeric_local, bool, TRUE) /* Assume local numerics */ PERLVAR(Inumeric_compat1, char) /* Used to be numeric_radix */ #endif /* !USE_LOCALE_NUMERIC */ /* utf8 character classes */ PERLVAR(Iutf8_alnum, SV *) PERLVAR(Iutf8_alnumc, SV *) PERLVAR(Iutf8_ascii, SV *) PERLVAR(Iutf8_alpha, SV *) PERLVAR(Iutf8_space, SV *) PERLVAR(Iutf8_cntrl, SV *) PERLVAR(Iutf8_graph, SV *) PERLVAR(Iutf8_digit, SV *) PERLVAR(Iutf8_upper, SV *) PERLVAR(Iutf8_lower, SV *) PERLVAR(Iutf8_print, SV *) PERLVAR(Iutf8_punct, SV *) PERLVAR(Iutf8_xdigit, SV *) PERLVAR(Iutf8_mark, SV *) PERLVAR(Iutf8_toupper, SV *) PERLVAR(Iutf8_totitle, SV *) PERLVAR(Iutf8_tolower, SV *) PERLVAR(Iutf8_tofold, SV *) PERLVAR(Ilast_swash_hv, HV *) PERLVAR(Ilast_swash_klen, U32) PERLVARA(Ilast_swash_key,10, U8) PERLVAR(Ilast_swash_tmps, U8 *) PERLVAR(Ilast_swash_slen, STRLEN) /* perly.c globals */ PERLVAR(Iyycharp, int *) PERLVAR(Iyylvalp, YYSTYPE *) PERLVARI(Iglob_index, int, 0) PERLVAR(Isrand_called, bool) PERLVARA(Iuudmap,256, char) PERLVAR(Ibitcount, char *) PERLVAR(Ipsig_ptr, SV**) PERLVAR(Ipsig_name, SV**) #if defined(PERL_IMPLICIT_SYS) PERLVAR(IMem, struct IPerlMem*) PERLVAR(IMemShared, struct IPerlMem*) PERLVAR(IMemParse, struct IPerlMem*) PERLVAR(IEnv, struct IPerlEnv*) PERLVAR(IStdIO, struct IPerlStdIO*) PERLVAR(ILIO, struct IPerlLIO*) PERLVAR(IDir, struct IPerlDir*) PERLVAR(ISock, struct IPerlSock*) PERLVAR(IProc, struct IPerlProc*) #endif #if defined(USE_ITHREADS) PERLVAR(Iptr_table, PTR_TBL_t*) #endif PERLVARI(Ibeginav_save, AV*, NULL) /* save BEGIN{}s when compiling */ PERLVAR(Ibody_arenas, void*) /* pointer to list of body-arenas */ /* 5.6.0 stopped here */ PERLVAR(Ipsig_pend, int *) /* per-signal "count" of pending */ PERLVARI(Isig_pending, int,0) /* Number if highest signal pending */ #ifdef USE_LOCALE_NUMERIC PERLVAR(Inumeric_radix_sv, SV *) /* The radix separator if not '.' */ #endif #if defined(USE_ITHREADS) PERLVAR(Iregex_pad, SV**) /* All regex objects */ PERLVAR(Iregex_padav, AV*) /* All regex objects */ #endif #ifdef USE_REENTRANT_API PERLVAR(Ireentrant_buffer, REENTR*) /* here we store the _r buffers */ #endif PERLVARI(Isavebegin, bool, FALSE) /* save BEGINs for compiler */ #ifdef PERL_MAD PERLVARI(Imadskills, bool, FALSE) /* preserve all syntactic info */ /* (MAD = Misc Attribute Decoration) */ PERLVARI(Ixmlfp, PerlIO *,NULL) #endif PERLVAR(Icustom_op_names, HV*) /* Names of user defined ops */ PERLVAR(Icustom_op_descs, HV*) /* Descriptions of user defined ops */ #ifdef PERLIO_LAYERS PERLVARI(Iperlio, PerlIO *,NULL) PERLVARI(Iknown_layers, PerlIO_list_t *,NULL) PERLVARI(Idef_layerlist, PerlIO_list_t *,NULL) #endif PERLVARI(Iencoding, SV*, NULL) /* character encoding */ PERLVAR(Idebug_pad, struct perl_debug_pad) /* always needed because of the re extension */ PERLVAR(Itaint_warn, bool) /* taint warns instead of dying */ #ifdef PL_OP_SLAB_ALLOC PERLVAR(IOpPtr,I32 **) PERLVARI(IOpSpace,I32,0) PERLVAR(IOpSlab,I32 *) #endif PERLVAR(Iutf8locale, bool) /* utf8 locale detected */ PERLVAR(Iutf8_idstart, SV *) PERLVAR(Iutf8_idcont, SV *) PERLVAR(Isort_RealCmp, SVCOMPARE_t) PERLVARI(Icheckav_save, AV*, NULL) /* save CHECK{}s when compiling */ PERLVARI(Iunitcheckav_save, AV*, NULL) /* save UNITCHECK{}s when compiling */ PERLVARI(Iclocktick, long, 0) /* this many times() ticks in a second */ PERLVARI(Iin_load_module, int, 0) /* to prevent recursions in PerlIO_find_layer */ PERLVAR(Iunicode, U32) /* Unicode features: $ENV{PERL_UNICODE} or -C */ PERLVAR(Isignals, U32) /* Using which pre-5.8 signals */ PERLVAR(Istashcache, HV *) /* Cache to speed up S_method_common */ PERLVAR(Ireentrant_retint, int) /* Integer return value from reentrant functions */ /* Hooks to shared SVs and locks. */ PERLVARI(Isharehook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing)) PERLVARI(Ilockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing)) #ifdef NO_MATHOMS # define PERL_UNLOCK_HOOK Perl_sv_nosharing #else /* This reference ensures that the mathoms are linked with perl */ # define PERL_UNLOCK_HOOK Perl_sv_nounlocking #endif PERLVARI(Iunlockhook, share_proc_t, MEMBER_TO_FPTR(PERL_UNLOCK_HOOK)) PERLVARI(Ithreadhook, thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook)) /* Force inclusion of both runops options */ PERLVARI(Irunops_std, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_standard)) PERLVARI(Irunops_dbg, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_debug)) /* Stores the PPID */ #ifdef THREADS_HAVE_PIDS PERLVARI(Ippid, IV, 0) #endif PERLVARI(Ihash_seed, UV, 0) /* Hash initializer */ PERLVARI(Ihash_seed_set, bool, FALSE) /* Hash initialized? */ PERLVAR(IDBassertion, SV *) PERLVARI(Icv_has_eval, I32, 0) /* PL_compcv includes an entereval or similar */ PERLVARI(Irehash_seed, UV, 0) /* 582 hash initializer */ PERLVARI(Irehash_seed_set, bool, FALSE) /* 582 hash initialized? */ #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP /* File descriptor to talk to the child which dumps scalars. */ PERLVARI(Idumper_fd, int, -1) #endif #ifdef PERL_IMPLICIT_CONTEXT PERLVARI(Imy_cxt_size, int, 0) /* size of PL_my_cxt_list */ PERLVARI(Imy_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */ #endif #ifdef PERL_TRACK_MEMPOOL /* For use with the memory debugging code in util.c */ PERLVAR(Imemory_debug_header, struct perl_memory_debug_header) #endif #ifdef PERL_UTF8_CACHE_ASSERT PERLVARI(Iutf8cache, I8, -1) /* Is the utf8 caching code enabled? */ #else PERLVARI(Iutf8cache, I8, 1) /* Is the utf8 caching code enabled? */ #endif /* New variables must be added to the very end, before this comment, * for binary compatibility (the offsets of the old members must not change). * (Don't forget to add your variable also to perl_clone()!) * XSUB.h provides wrapper functions via perlapi.h that make this * irrelevant, but not all code may be expected to #include XSUB.h. */ Convert-Binary-C-0.76/tests/include/perlinc/overload.h0000644000175000001440000000530611550664630021422 0ustar mhxusers/* -*- buffer-read-only: t -*- * * overload.h * * Copyright (C) 1997, 1998, 2000, 2001, 2005 and 2006 by Larry Wall and * others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by overload.pl */ enum { fallback_amg, to_sv_amg, to_av_amg, to_hv_amg, to_gv_amg, to_cv_amg, inc_amg, dec_amg, bool__amg, numer_amg, string_amg, not_amg, copy_amg, abs_amg, neg_amg, iter_amg, int_amg, lt_amg, le_amg, gt_amg, ge_amg, eq_amg, ne_amg, slt_amg, sle_amg, sgt_amg, sge_amg, seq_amg, sne_amg, nomethod_amg, add_amg, add_ass_amg, subtr_amg, subtr_ass_amg, mult_amg, mult_ass_amg, div_amg, div_ass_amg, modulo_amg, modulo_ass_amg, pow_amg, pow_ass_amg, lshift_amg, lshift_ass_amg, rshift_amg, rshift_ass_amg, band_amg, band_ass_amg, bor_amg, bor_ass_amg, bxor_amg, bxor_ass_amg, ncmp_amg, scmp_amg, compl_amg, atan2_amg, cos_amg, sin_amg, exp_amg, log_amg, sqrt_amg, repeat_amg, repeat_ass_amg, concat_amg, concat_ass_amg, smart_amg, DESTROY_amg, max_amg_code /* Do not leave a trailing comma here. C9X allows it, C89 doesn't. */ }; #define NofAMmeth max_amg_code #define AMG_id2name(id) (PL_AMG_names[id]+1) #ifdef DOINIT EXTCONST char * const PL_AMG_names[NofAMmeth] = { /* Names kept in the symbol table. fallback => "()", the rest has "(" prepended. The only other place in perl which knows about this convention is AMG_id2name (used for debugging output and 'nomethod' only), the only other place which has it hardwired is overload.pm. */ "()", "(${}", "(@{}", "(%{}", "(*{}", "(&{}", "(++", "(--", "(bool", "(0+", "(\"\"", "(!", "(=", "(abs", "(neg", "(<>", "(int", "(<", "(<=", "(>", "(>=", "(==", "(!=", "(lt", "(le", "(gt", "(ge", "(eq", "(ne", "(nomethod", "(+", "(+=", "(-", "(-=", "(*", "(*=", "(/", "(/=", "(%", "(%=", "(**", "(**=", "(<<", "(<<=", "(>>", "(>>=", "(&", "(&=", "(|", "(|=", "(^", "(^=", "(<=>", "(cmp", "(~", "(atan2", "(cos", "(sin", "(exp", "(log", "(sqrt", "(x", "(x=", "(.", "(.=", "(~~", "DESTROY" }; #else EXTCONST char * PL_AMG_names[NofAMmeth]; #endif /* def INITAMAGIC */ Convert-Binary-C-0.76/tests/include/perlinc/pp_proto.h0000644000175000001440000002534111550664630021452 0ustar mhxusers/* -*- buffer-read-only: t -*- !!!!!!! DO NOT EDIT THIS FILE !!!!!!! This file is built by opcode.pl from its data. Any changes made here will be lost! */ PERL_CKDEF(Perl_ck_anoncode) PERL_CKDEF(Perl_ck_bitop) PERL_CKDEF(Perl_ck_chdir) PERL_CKDEF(Perl_ck_concat) PERL_CKDEF(Perl_ck_defined) PERL_CKDEF(Perl_ck_delete) PERL_CKDEF(Perl_ck_die) PERL_CKDEF(Perl_ck_eof) PERL_CKDEF(Perl_ck_eval) PERL_CKDEF(Perl_ck_exec) PERL_CKDEF(Perl_ck_exists) PERL_CKDEF(Perl_ck_exit) PERL_CKDEF(Perl_ck_ftst) PERL_CKDEF(Perl_ck_fun) PERL_CKDEF(Perl_ck_glob) PERL_CKDEF(Perl_ck_grep) PERL_CKDEF(Perl_ck_index) PERL_CKDEF(Perl_ck_join) PERL_CKDEF(Perl_ck_lengthconst) PERL_CKDEF(Perl_ck_lfun) PERL_CKDEF(Perl_ck_listiob) PERL_CKDEF(Perl_ck_match) PERL_CKDEF(Perl_ck_method) PERL_CKDEF(Perl_ck_null) PERL_CKDEF(Perl_ck_open) PERL_CKDEF(Perl_ck_repeat) PERL_CKDEF(Perl_ck_require) PERL_CKDEF(Perl_ck_return) PERL_CKDEF(Perl_ck_rfun) PERL_CKDEF(Perl_ck_rvconst) PERL_CKDEF(Perl_ck_sassign) PERL_CKDEF(Perl_ck_say) PERL_CKDEF(Perl_ck_select) PERL_CKDEF(Perl_ck_shift) PERL_CKDEF(Perl_ck_smartmatch) PERL_CKDEF(Perl_ck_sort) PERL_CKDEF(Perl_ck_spair) PERL_CKDEF(Perl_ck_split) PERL_CKDEF(Perl_ck_subr) PERL_CKDEF(Perl_ck_substr) PERL_CKDEF(Perl_ck_svconst) PERL_CKDEF(Perl_ck_trunc) PERL_CKDEF(Perl_ck_unpack) PERL_PPDEF(Perl_pp_null) PERL_PPDEF(Perl_pp_stub) PERL_PPDEF(Perl_pp_scalar) PERL_PPDEF(Perl_pp_pushmark) PERL_PPDEF(Perl_pp_wantarray) PERL_PPDEF(Perl_pp_const) PERL_PPDEF(Perl_pp_gvsv) PERL_PPDEF(Perl_pp_gv) PERL_PPDEF(Perl_pp_gelem) PERL_PPDEF(Perl_pp_padsv) PERL_PPDEF(Perl_pp_padav) PERL_PPDEF(Perl_pp_padhv) PERL_PPDEF(Perl_pp_padany) PERL_PPDEF(Perl_pp_pushre) PERL_PPDEF(Perl_pp_rv2gv) PERL_PPDEF(Perl_pp_rv2sv) PERL_PPDEF(Perl_pp_av2arylen) PERL_PPDEF(Perl_pp_rv2cv) PERL_PPDEF(Perl_pp_anoncode) PERL_PPDEF(Perl_pp_prototype) PERL_PPDEF(Perl_pp_refgen) PERL_PPDEF(Perl_pp_srefgen) PERL_PPDEF(Perl_pp_ref) PERL_PPDEF(Perl_pp_bless) PERL_PPDEF(Perl_pp_backtick) PERL_PPDEF(Perl_pp_glob) PERL_PPDEF(Perl_pp_readline) PERL_PPDEF(Perl_pp_rcatline) PERL_PPDEF(Perl_pp_regcmaybe) PERL_PPDEF(Perl_pp_regcreset) PERL_PPDEF(Perl_pp_regcomp) PERL_PPDEF(Perl_pp_match) PERL_PPDEF(Perl_pp_qr) PERL_PPDEF(Perl_pp_subst) PERL_PPDEF(Perl_pp_substcont) PERL_PPDEF(Perl_pp_trans) PERL_PPDEF(Perl_pp_sassign) PERL_PPDEF(Perl_pp_aassign) PERL_PPDEF(Perl_pp_chop) PERL_PPDEF(Perl_pp_schop) PERL_PPDEF(Perl_pp_chomp) PERL_PPDEF(Perl_pp_schomp) PERL_PPDEF(Perl_pp_defined) PERL_PPDEF(Perl_pp_undef) PERL_PPDEF(Perl_pp_study) PERL_PPDEF(Perl_pp_pos) PERL_PPDEF(Perl_pp_preinc) PERL_PPDEF(Perl_pp_predec) PERL_PPDEF(Perl_pp_postinc) PERL_PPDEF(Perl_pp_postdec) PERL_PPDEF(Perl_pp_pow) PERL_PPDEF(Perl_pp_multiply) PERL_PPDEF(Perl_pp_i_multiply) PERL_PPDEF(Perl_pp_divide) PERL_PPDEF(Perl_pp_i_divide) PERL_PPDEF(Perl_pp_modulo) PERL_PPDEF(Perl_pp_i_modulo) PERL_PPDEF(Perl_pp_repeat) PERL_PPDEF(Perl_pp_add) PERL_PPDEF(Perl_pp_i_add) PERL_PPDEF(Perl_pp_subtract) PERL_PPDEF(Perl_pp_i_subtract) PERL_PPDEF(Perl_pp_concat) PERL_PPDEF(Perl_pp_stringify) PERL_PPDEF(Perl_pp_left_shift) PERL_PPDEF(Perl_pp_right_shift) PERL_PPDEF(Perl_pp_lt) PERL_PPDEF(Perl_pp_i_lt) PERL_PPDEF(Perl_pp_gt) PERL_PPDEF(Perl_pp_i_gt) PERL_PPDEF(Perl_pp_le) PERL_PPDEF(Perl_pp_i_le) PERL_PPDEF(Perl_pp_ge) PERL_PPDEF(Perl_pp_i_ge) PERL_PPDEF(Perl_pp_eq) PERL_PPDEF(Perl_pp_i_eq) PERL_PPDEF(Perl_pp_ne) PERL_PPDEF(Perl_pp_i_ne) PERL_PPDEF(Perl_pp_ncmp) PERL_PPDEF(Perl_pp_i_ncmp) PERL_PPDEF(Perl_pp_slt) PERL_PPDEF(Perl_pp_sgt) PERL_PPDEF(Perl_pp_sle) PERL_PPDEF(Perl_pp_sge) PERL_PPDEF(Perl_pp_seq) PERL_PPDEF(Perl_pp_sne) PERL_PPDEF(Perl_pp_scmp) PERL_PPDEF(Perl_pp_bit_and) PERL_PPDEF(Perl_pp_bit_xor) PERL_PPDEF(Perl_pp_bit_or) PERL_PPDEF(Perl_pp_negate) PERL_PPDEF(Perl_pp_i_negate) PERL_PPDEF(Perl_pp_not) PERL_PPDEF(Perl_pp_complement) PERL_PPDEF(Perl_pp_atan2) PERL_PPDEF(Perl_pp_sin) PERL_PPDEF(Perl_pp_cos) PERL_PPDEF(Perl_pp_rand) PERL_PPDEF(Perl_pp_srand) PERL_PPDEF(Perl_pp_exp) PERL_PPDEF(Perl_pp_log) PERL_PPDEF(Perl_pp_sqrt) PERL_PPDEF(Perl_pp_int) PERL_PPDEF(Perl_pp_hex) PERL_PPDEF(Perl_pp_oct) PERL_PPDEF(Perl_pp_abs) PERL_PPDEF(Perl_pp_length) PERL_PPDEF(Perl_pp_substr) PERL_PPDEF(Perl_pp_vec) PERL_PPDEF(Perl_pp_index) PERL_PPDEF(Perl_pp_rindex) PERL_PPDEF(Perl_pp_sprintf) PERL_PPDEF(Perl_pp_formline) PERL_PPDEF(Perl_pp_ord) PERL_PPDEF(Perl_pp_chr) PERL_PPDEF(Perl_pp_crypt) PERL_PPDEF(Perl_pp_ucfirst) PERL_PPDEF(Perl_pp_lcfirst) PERL_PPDEF(Perl_pp_uc) PERL_PPDEF(Perl_pp_lc) PERL_PPDEF(Perl_pp_quotemeta) PERL_PPDEF(Perl_pp_rv2av) PERL_PPDEF(Perl_pp_aelemfast) PERL_PPDEF(Perl_pp_aelem) PERL_PPDEF(Perl_pp_aslice) PERL_PPDEF(Perl_pp_each) PERL_PPDEF(Perl_pp_values) PERL_PPDEF(Perl_pp_keys) PERL_PPDEF(Perl_pp_delete) PERL_PPDEF(Perl_pp_exists) PERL_PPDEF(Perl_pp_rv2hv) PERL_PPDEF(Perl_pp_helem) PERL_PPDEF(Perl_pp_hslice) PERL_PPDEF(Perl_pp_unpack) PERL_PPDEF(Perl_pp_pack) PERL_PPDEF(Perl_pp_split) PERL_PPDEF(Perl_pp_join) PERL_PPDEF(Perl_pp_list) PERL_PPDEF(Perl_pp_lslice) PERL_PPDEF(Perl_pp_anonlist) PERL_PPDEF(Perl_pp_anonhash) PERL_PPDEF(Perl_pp_splice) PERL_PPDEF(Perl_pp_push) PERL_PPDEF(Perl_pp_pop) PERL_PPDEF(Perl_pp_shift) PERL_PPDEF(Perl_pp_unshift) PERL_PPDEF(Perl_pp_sort) PERL_PPDEF(Perl_pp_reverse) PERL_PPDEF(Perl_pp_grepstart) PERL_PPDEF(Perl_pp_grepwhile) PERL_PPDEF(Perl_pp_mapstart) PERL_PPDEF(Perl_pp_mapwhile) PERL_PPDEF(Perl_pp_range) PERL_PPDEF(Perl_pp_flip) PERL_PPDEF(Perl_pp_flop) PERL_PPDEF(Perl_pp_and) PERL_PPDEF(Perl_pp_or) PERL_PPDEF(Perl_pp_xor) PERL_PPDEF(Perl_pp_cond_expr) PERL_PPDEF(Perl_pp_andassign) PERL_PPDEF(Perl_pp_orassign) PERL_PPDEF(Perl_pp_method) PERL_PPDEF(Perl_pp_entersub) PERL_PPDEF(Perl_pp_leavesub) PERL_PPDEF(Perl_pp_leavesublv) PERL_PPDEF(Perl_pp_caller) PERL_PPDEF(Perl_pp_warn) PERL_PPDEF(Perl_pp_die) PERL_PPDEF(Perl_pp_reset) PERL_PPDEF(Perl_pp_lineseq) PERL_PPDEF(Perl_pp_nextstate) PERL_PPDEF(Perl_pp_dbstate) PERL_PPDEF(Perl_pp_unstack) PERL_PPDEF(Perl_pp_enter) PERL_PPDEF(Perl_pp_leave) PERL_PPDEF(Perl_pp_scope) PERL_PPDEF(Perl_pp_enteriter) PERL_PPDEF(Perl_pp_iter) PERL_PPDEF(Perl_pp_enterloop) PERL_PPDEF(Perl_pp_leaveloop) PERL_PPDEF(Perl_pp_return) PERL_PPDEF(Perl_pp_last) PERL_PPDEF(Perl_pp_next) PERL_PPDEF(Perl_pp_redo) PERL_PPDEF(Perl_pp_dump) PERL_PPDEF(Perl_pp_goto) PERL_PPDEF(Perl_pp_exit) PERL_PPDEF(Perl_pp_open) PERL_PPDEF(Perl_pp_close) PERL_PPDEF(Perl_pp_pipe_op) PERL_PPDEF(Perl_pp_fileno) PERL_PPDEF(Perl_pp_umask) PERL_PPDEF(Perl_pp_binmode) PERL_PPDEF(Perl_pp_tie) PERL_PPDEF(Perl_pp_untie) PERL_PPDEF(Perl_pp_tied) PERL_PPDEF(Perl_pp_dbmopen) PERL_PPDEF(Perl_pp_dbmclose) PERL_PPDEF(Perl_pp_sselect) PERL_PPDEF(Perl_pp_select) PERL_PPDEF(Perl_pp_getc) PERL_PPDEF(Perl_pp_read) PERL_PPDEF(Perl_pp_enterwrite) PERL_PPDEF(Perl_pp_leavewrite) PERL_PPDEF(Perl_pp_prtf) PERL_PPDEF(Perl_pp_print) PERL_PPDEF(Perl_pp_sysopen) PERL_PPDEF(Perl_pp_sysseek) PERL_PPDEF(Perl_pp_sysread) PERL_PPDEF(Perl_pp_syswrite) PERL_PPDEF(Perl_pp_send) PERL_PPDEF(Perl_pp_recv) PERL_PPDEF(Perl_pp_eof) PERL_PPDEF(Perl_pp_tell) PERL_PPDEF(Perl_pp_seek) PERL_PPDEF(Perl_pp_truncate) PERL_PPDEF(Perl_pp_fcntl) PERL_PPDEF(Perl_pp_ioctl) PERL_PPDEF(Perl_pp_flock) PERL_PPDEF(Perl_pp_socket) PERL_PPDEF(Perl_pp_sockpair) PERL_PPDEF(Perl_pp_bind) PERL_PPDEF(Perl_pp_connect) PERL_PPDEF(Perl_pp_listen) PERL_PPDEF(Perl_pp_accept) PERL_PPDEF(Perl_pp_shutdown) PERL_PPDEF(Perl_pp_gsockopt) PERL_PPDEF(Perl_pp_ssockopt) PERL_PPDEF(Perl_pp_getsockname) PERL_PPDEF(Perl_pp_getpeername) PERL_PPDEF(Perl_pp_lstat) PERL_PPDEF(Perl_pp_stat) PERL_PPDEF(Perl_pp_ftrread) PERL_PPDEF(Perl_pp_ftrwrite) PERL_PPDEF(Perl_pp_ftrexec) PERL_PPDEF(Perl_pp_fteread) PERL_PPDEF(Perl_pp_ftewrite) PERL_PPDEF(Perl_pp_fteexec) PERL_PPDEF(Perl_pp_ftis) PERL_PPDEF(Perl_pp_fteowned) PERL_PPDEF(Perl_pp_ftrowned) PERL_PPDEF(Perl_pp_ftzero) PERL_PPDEF(Perl_pp_ftsize) PERL_PPDEF(Perl_pp_ftmtime) PERL_PPDEF(Perl_pp_ftatime) PERL_PPDEF(Perl_pp_ftctime) PERL_PPDEF(Perl_pp_ftsock) PERL_PPDEF(Perl_pp_ftchr) PERL_PPDEF(Perl_pp_ftblk) PERL_PPDEF(Perl_pp_ftfile) PERL_PPDEF(Perl_pp_ftdir) PERL_PPDEF(Perl_pp_ftpipe) PERL_PPDEF(Perl_pp_ftlink) PERL_PPDEF(Perl_pp_ftsuid) PERL_PPDEF(Perl_pp_ftsgid) PERL_PPDEF(Perl_pp_ftsvtx) PERL_PPDEF(Perl_pp_fttty) PERL_PPDEF(Perl_pp_fttext) PERL_PPDEF(Perl_pp_ftbinary) PERL_PPDEF(Perl_pp_chdir) PERL_PPDEF(Perl_pp_chown) PERL_PPDEF(Perl_pp_chroot) PERL_PPDEF(Perl_pp_unlink) PERL_PPDEF(Perl_pp_chmod) PERL_PPDEF(Perl_pp_utime) PERL_PPDEF(Perl_pp_rename) PERL_PPDEF(Perl_pp_link) PERL_PPDEF(Perl_pp_symlink) PERL_PPDEF(Perl_pp_readlink) PERL_PPDEF(Perl_pp_mkdir) PERL_PPDEF(Perl_pp_rmdir) PERL_PPDEF(Perl_pp_open_dir) PERL_PPDEF(Perl_pp_readdir) PERL_PPDEF(Perl_pp_telldir) PERL_PPDEF(Perl_pp_seekdir) PERL_PPDEF(Perl_pp_rewinddir) PERL_PPDEF(Perl_pp_closedir) PERL_PPDEF(Perl_pp_fork) PERL_PPDEF(Perl_pp_wait) PERL_PPDEF(Perl_pp_waitpid) PERL_PPDEF(Perl_pp_system) PERL_PPDEF(Perl_pp_exec) PERL_PPDEF(Perl_pp_kill) PERL_PPDEF(Perl_pp_getppid) PERL_PPDEF(Perl_pp_getpgrp) PERL_PPDEF(Perl_pp_setpgrp) PERL_PPDEF(Perl_pp_getpriority) PERL_PPDEF(Perl_pp_setpriority) PERL_PPDEF(Perl_pp_time) PERL_PPDEF(Perl_pp_tms) PERL_PPDEF(Perl_pp_localtime) PERL_PPDEF(Perl_pp_gmtime) PERL_PPDEF(Perl_pp_alarm) PERL_PPDEF(Perl_pp_sleep) PERL_PPDEF(Perl_pp_shmget) PERL_PPDEF(Perl_pp_shmctl) PERL_PPDEF(Perl_pp_shmread) PERL_PPDEF(Perl_pp_shmwrite) PERL_PPDEF(Perl_pp_msgget) PERL_PPDEF(Perl_pp_msgctl) PERL_PPDEF(Perl_pp_msgsnd) PERL_PPDEF(Perl_pp_msgrcv) PERL_PPDEF(Perl_pp_semget) PERL_PPDEF(Perl_pp_semctl) PERL_PPDEF(Perl_pp_semop) PERL_PPDEF(Perl_pp_require) PERL_PPDEF(Perl_pp_dofile) PERL_PPDEF(Perl_pp_entereval) PERL_PPDEF(Perl_pp_leaveeval) PERL_PPDEF(Perl_pp_entertry) PERL_PPDEF(Perl_pp_leavetry) PERL_PPDEF(Perl_pp_ghbyname) PERL_PPDEF(Perl_pp_ghbyaddr) PERL_PPDEF(Perl_pp_ghostent) PERL_PPDEF(Perl_pp_gnbyname) PERL_PPDEF(Perl_pp_gnbyaddr) PERL_PPDEF(Perl_pp_gnetent) PERL_PPDEF(Perl_pp_gpbyname) PERL_PPDEF(Perl_pp_gpbynumber) PERL_PPDEF(Perl_pp_gprotoent) PERL_PPDEF(Perl_pp_gsbyname) PERL_PPDEF(Perl_pp_gsbyport) PERL_PPDEF(Perl_pp_gservent) PERL_PPDEF(Perl_pp_shostent) PERL_PPDEF(Perl_pp_snetent) PERL_PPDEF(Perl_pp_sprotoent) PERL_PPDEF(Perl_pp_sservent) PERL_PPDEF(Perl_pp_ehostent) PERL_PPDEF(Perl_pp_enetent) PERL_PPDEF(Perl_pp_eprotoent) PERL_PPDEF(Perl_pp_eservent) PERL_PPDEF(Perl_pp_gpwnam) PERL_PPDEF(Perl_pp_gpwuid) PERL_PPDEF(Perl_pp_gpwent) PERL_PPDEF(Perl_pp_spwent) PERL_PPDEF(Perl_pp_epwent) PERL_PPDEF(Perl_pp_ggrnam) PERL_PPDEF(Perl_pp_ggrgid) PERL_PPDEF(Perl_pp_ggrent) PERL_PPDEF(Perl_pp_sgrent) PERL_PPDEF(Perl_pp_egrent) PERL_PPDEF(Perl_pp_getlogin) PERL_PPDEF(Perl_pp_syscall) PERL_PPDEF(Perl_pp_lock) PERL_PPDEF(Perl_pp_threadsv) PERL_PPDEF(Perl_pp_setstate) PERL_PPDEF(Perl_pp_method_named) PERL_PPDEF(Perl_pp_dor) PERL_PPDEF(Perl_pp_dorassign) PERL_PPDEF(Perl_pp_entergiven) PERL_PPDEF(Perl_pp_leavegiven) PERL_PPDEF(Perl_pp_enterwhen) PERL_PPDEF(Perl_pp_leavewhen) PERL_PPDEF(Perl_pp_break) PERL_PPDEF(Perl_pp_continue) PERL_PPDEF(Perl_pp_smartmatch) PERL_PPDEF(Perl_pp_say) /* ex: set ro: */ Convert-Binary-C-0.76/tests/include/perlinc/perlio.h0000644000175000001440000002500511550664630021077 0ustar mhxusers/* perlio.h * * Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003, * by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ #ifndef _PERLIO_H #define _PERLIO_H /* Interface for perl to IO functions. There is a hierarchy of Configure determined #define controls: USE_STDIO - forces PerlIO_xxx() to be #define-d onto stdio functions. This is used for x2p subdirectory and for conservative builds - "just like perl5.00X used to be". This dominates over the others. USE_PERLIO - The primary Configure variable that enables PerlIO. If USE_PERLIO is _NOT_ set then USE_STDIO above will be set to be conservative. If USE_PERLIO is set then there are two modes determined by USE_SFIO: USE_SFIO - If set causes PerlIO_xxx() to be #define-d onto sfio functions. A backward compatability mode for some specialist applications. If USE_SFIO is not set then PerlIO_xxx() are real functions defined in perlio.c which implement extra functionality required for utf8 support. One further note - the table-of-functions scheme controlled by PERL_IMPLICIT_SYS turns on USE_PERLIO so that iperlsys.h can #define PerlIO_xxx() to go via the function table, without having to #undef them from (say) stdio forms. */ #if defined(PERL_IMPLICIT_SYS) #ifndef USE_PERLIO #ifndef NETWARE /* # define USE_PERLIO */ #endif #endif #endif #ifndef USE_PERLIO # define USE_STDIO #endif #ifdef USE_STDIO # ifndef PERLIO_IS_STDIO # define PERLIO_IS_STDIO # endif #endif /* -------------------- End of Configure controls ---------------------------- */ /* * Although we may not want stdio to be used including here * avoids issues where stdio.h has strange side effects */ #include #ifdef __BEOS__ int fseeko(FILE *stream, off_t offset, int whence); off_t ftello(FILE *stream); #endif #if defined(USE_64_BIT_STDIO) && defined(HAS_FTELLO) && !defined(USE_FTELL64) #define ftell ftello #endif #if defined(USE_64_BIT_STDIO) && defined(HAS_FSEEKO) && !defined(USE_FSEEK64) #define fseek fseeko #endif /* BS2000 includes are sometimes a bit non standard :-( */ #if defined(POSIX_BC) && defined(O_BINARY) && !defined(O_TEXT) #undef O_BINARY #endif #ifdef PERLIO_IS_STDIO /* #define PerlIO_xxxx() as equivalent stdio function */ #include "perlsdio.h" #else /* PERLIO_IS_STDIO */ #ifdef USE_SFIO /* #define PerlIO_xxxx() as equivalent sfio function */ #include "perlsfio.h" #endif /* USE_SFIO */ #endif /* PERLIO_IS_STDIO */ #ifndef PerlIO /* ----------- PerlIO implementation ---------- */ /* PerlIO not #define-d to something else - define the implementation */ typedef struct _PerlIO PerlIOl; typedef struct _PerlIO_funcs PerlIO_funcs; typedef PerlIOl *PerlIO; #define PerlIO PerlIO #define PERLIO_LAYERS 1 /* Making the big PerlIO_funcs vtables const is good (enables placing * them in the const section which is good for speed, security, and * embeddability) but this cannot be done by default because of * backward compatibility. */ #ifdef PERLIO_FUNCS_CONST #define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs #define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs) #else #define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs #define PERLIO_FUNCS_CAST(funcs) (funcs) #endif PERL_EXPORT_C void PerlIO_define_layer(pTHX_ PerlIO_funcs *tab); PERL_EXPORT_C PerlIO_funcs *PerlIO_find_layer(pTHX_ const char *name, STRLEN len, int load); PERL_EXPORT_C PerlIO *PerlIO_push(pTHX_ PerlIO *f, PERLIO_FUNCS_DECL(*tab), const char *mode, SV *arg); PERL_EXPORT_C void PerlIO_pop(pTHX_ PerlIO *f); PERL_EXPORT_C AV* PerlIO_get_layers(pTHX_ PerlIO *f); PERL_EXPORT_C void PerlIO_clone(pTHX_ PerlInterpreter *proto, CLONE_PARAMS *param); #endif /* PerlIO */ /* ----------- End of implementation choices ---------- */ #ifndef PERLIO_IS_STDIO /* Not using stdio _directly_ as PerlIO */ /* We now need to determine what happens if source trys to use stdio. * There are three cases based on PERLIO_NOT_STDIO which XS code * can set how it wants. */ #ifdef PERL_CORE /* Make a choice for perl core code - currently this is set to try and catch lingering raw stdio calls. This is a known issue with some non UNIX ports which still use "native" stdio features. */ #ifndef PERLIO_NOT_STDIO #define PERLIO_NOT_STDIO 1 #endif #else #ifndef PERLIO_NOT_STDIO #define PERLIO_NOT_STDIO 0 #endif #endif #ifdef PERLIO_NOT_STDIO #if PERLIO_NOT_STDIO /* * PERLIO_NOT_STDIO #define'd as 1 * Case 1: Strong denial of stdio - make all stdio calls (we can think of) errors */ #include "nostdio.h" #else /* if PERLIO_NOT_STDIO */ /* * PERLIO_NOT_STDIO #define'd as 0 * Case 2: Declares that both PerlIO and stdio can be used */ #endif /* if PERLIO_NOT_STDIO */ #else /* ifdef PERLIO_NOT_STDIO */ /* * PERLIO_NOT_STDIO not defined * Case 3: Try and fake stdio calls as PerlIO calls */ #include "fakesdio.h" #endif /* ifndef PERLIO_NOT_STDIO */ #endif /* PERLIO_IS_STDIO */ /* ----------- fill in things that have not got #define'd ---------- */ #ifndef Fpos_t #define Fpos_t Off_t #endif #ifndef EOF #define EOF (-1) #endif /* This is to catch case with no stdio */ #ifndef BUFSIZ #define BUFSIZ 1024 #endif #ifndef SEEK_SET #define SEEK_SET 0 #endif #ifndef SEEK_CUR #define SEEK_CUR 1 #endif #ifndef SEEK_END #define SEEK_END 2 #endif #define PERLIO_DUP_CLONE 1 #define PERLIO_DUP_FD 2 /* --------------------- Now prototypes for functions --------------- */ START_EXTERN_C #ifndef __attribute__format__ # ifdef HASATTRIBUTE_FORMAT # define __attribute__format__(x,y,z) __attribute__((format(x,y,z))) # else # define __attribute__format__(x,y,z) # endif #endif #ifndef PerlIO_init PERL_EXPORT_C void PerlIO_init(pTHX); #endif #ifndef PerlIO_stdoutf PERL_EXPORT_C int PerlIO_stdoutf(const char *, ...) __attribute__format__(__printf__, 1, 2); #endif #ifndef PerlIO_puts PERL_EXPORT_C int PerlIO_puts(PerlIO *, const char *); #endif #ifndef PerlIO_open PERL_EXPORT_C PerlIO *PerlIO_open(const char *, const char *); #endif #ifndef PerlIO_openn PERL_EXPORT_C PerlIO *PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd, int imode, int perm, PerlIO *old, int narg, SV **arg); #endif #ifndef PerlIO_eof PERL_EXPORT_C int PerlIO_eof(PerlIO *); #endif #ifndef PerlIO_error PERL_EXPORT_C int PerlIO_error(PerlIO *); #endif #ifndef PerlIO_clearerr PERL_EXPORT_C void PerlIO_clearerr(PerlIO *); #endif #ifndef PerlIO_getc PERL_EXPORT_C int PerlIO_getc(PerlIO *); #endif #ifndef PerlIO_putc PERL_EXPORT_C int PerlIO_putc(PerlIO *, int); #endif #ifndef PerlIO_ungetc PERL_EXPORT_C int PerlIO_ungetc(PerlIO *, int); #endif #ifndef PerlIO_fdopen PERL_EXPORT_C PerlIO *PerlIO_fdopen(int, const char *); #endif #ifndef PerlIO_importFILE PERL_EXPORT_C PerlIO *PerlIO_importFILE(FILE *, const char *); #endif #ifndef PerlIO_exportFILE PERL_EXPORT_C FILE *PerlIO_exportFILE(PerlIO *, const char *); #endif #ifndef PerlIO_findFILE PERL_EXPORT_C FILE *PerlIO_findFILE(PerlIO *); #endif #ifndef PerlIO_releaseFILE PERL_EXPORT_C void PerlIO_releaseFILE(PerlIO *, FILE *); #endif #ifndef PerlIO_read PERL_EXPORT_C SSize_t PerlIO_read(PerlIO *, void *, Size_t); #endif #ifndef PerlIO_unread PERL_EXPORT_C SSize_t PerlIO_unread(PerlIO *, const void *, Size_t); #endif #ifndef PerlIO_write PERL_EXPORT_C SSize_t PerlIO_write(PerlIO *, const void *, Size_t); #endif #ifndef PerlIO_setlinebuf PERL_EXPORT_C void PerlIO_setlinebuf(PerlIO *); #endif #ifndef PerlIO_printf PERL_EXPORT_C int PerlIO_printf(PerlIO *, const char *, ...) __attribute__format__(__printf__, 2, 3); #endif #ifndef PerlIO_sprintf PERL_EXPORT_C int PerlIO_sprintf(char *, int, const char *, ...) __attribute__format__(__printf__, 3, 4); #endif #ifndef PerlIO_vprintf PERL_EXPORT_C int PerlIO_vprintf(PerlIO *, const char *, va_list); #endif #ifndef PerlIO_tell PERL_EXPORT_C Off_t PerlIO_tell(PerlIO *); #endif #ifndef PerlIO_seek PERL_EXPORT_C int PerlIO_seek(PerlIO *, Off_t, int); #endif #ifndef PerlIO_rewind PERL_EXPORT_C void PerlIO_rewind(PerlIO *); #endif #ifndef PerlIO_has_base PERL_EXPORT_C int PerlIO_has_base(PerlIO *); #endif #ifndef PerlIO_has_cntptr PERL_EXPORT_C int PerlIO_has_cntptr(PerlIO *); #endif #ifndef PerlIO_fast_gets PERL_EXPORT_C int PerlIO_fast_gets(PerlIO *); #endif #ifndef PerlIO_canset_cnt PERL_EXPORT_C int PerlIO_canset_cnt(PerlIO *); #endif #ifndef PerlIO_get_ptr PERL_EXPORT_C STDCHAR *PerlIO_get_ptr(PerlIO *); #endif #ifndef PerlIO_get_cnt PERL_EXPORT_C int PerlIO_get_cnt(PerlIO *); #endif #ifndef PerlIO_set_cnt PERL_EXPORT_C void PerlIO_set_cnt(PerlIO *, int); #endif #ifndef PerlIO_set_ptrcnt PERL_EXPORT_C void PerlIO_set_ptrcnt(PerlIO *, STDCHAR *, int); #endif #ifndef PerlIO_get_base PERL_EXPORT_C STDCHAR *PerlIO_get_base(PerlIO *); #endif #ifndef PerlIO_get_bufsiz PERL_EXPORT_C int PerlIO_get_bufsiz(PerlIO *); #endif #ifndef PerlIO_tmpfile PERL_EXPORT_C PerlIO *PerlIO_tmpfile(void); #endif #ifndef PerlIO_stdin PERL_EXPORT_C PerlIO *PerlIO_stdin(void); #endif #ifndef PerlIO_stdout PERL_EXPORT_C PerlIO *PerlIO_stdout(void); #endif #ifndef PerlIO_stderr PERL_EXPORT_C PerlIO *PerlIO_stderr(void); #endif #ifndef PerlIO_getpos PERL_EXPORT_C int PerlIO_getpos(PerlIO *, SV *); #endif #ifndef PerlIO_setpos PERL_EXPORT_C int PerlIO_setpos(PerlIO *, SV *); #endif #ifndef PerlIO_fdupopen PERL_EXPORT_C PerlIO *PerlIO_fdupopen(pTHX_ PerlIO *, CLONE_PARAMS *, int); #endif #if !defined(PerlIO_modestr) && !defined(PERLIO_IS_STDIO) PERL_EXPORT_C char *PerlIO_modestr(PerlIO *, char *buf); #endif #ifndef PerlIO_isutf8 PERL_EXPORT_C int PerlIO_isutf8(PerlIO *); #endif #ifndef PerlIO_apply_layers PERL_EXPORT_C int PerlIO_apply_layers(pTHX_ PerlIO *f, const char *mode, const char *names); #endif #ifndef PerlIO_binmode PERL_EXPORT_C int PerlIO_binmode(pTHX_ PerlIO *f, int iotype, int omode, const char *names); #endif #ifndef PerlIO_getname PERL_EXPORT_C char *PerlIO_getname(PerlIO *, char *); #endif PERL_EXPORT_C void PerlIO_destruct(pTHX); PERL_EXPORT_C int PerlIO_intmode2str(int rawmode, char *mode, int *writing); #ifdef PERLIO_LAYERS PERL_EXPORT_C void PerlIO_cleanup(pTHX); PERL_EXPORT_C void PerlIO_debug(const char *fmt, ...) __attribute__format__(__printf__, 1, 2); typedef struct PerlIO_list_s PerlIO_list_t; #endif END_EXTERN_C #endif /* _PERLIO_H */ Convert-Binary-C-0.76/tests/include/perlinc/proto.h0000644000175000001440000045550011550664630020757 0ustar mhxusers/* -*- buffer-read-only: t -*- * * proto.h * * Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, * 2000, 2001, 2002, 2003, 2004, 2005, 2006, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * !!!!!!! DO NOT EDIT THIS FILE !!!!!!! * This file is built by embed.pl from data in embed.fnc, embed.pl, * pp.sym, intrpvar.h, perlvars.h and thrdvar.h. * Any changes made here will be lost! * * Edit those files and run 'make regen_headers' to effect changes. */ START_EXTERN_C #if defined(PERL_IMPLICIT_SYS) PERL_CALLCONV PerlInterpreter* perl_alloc_using(struct IPerlMem* m, struct IPerlMem* ms, struct IPerlMem* mp, struct IPerlEnv* e, struct IPerlStdIO* io, struct IPerlLIO* lio, struct IPerlDir* d, struct IPerlSock* s, struct IPerlProc* p) __attribute__nonnull__(1) __attribute__nonnull__(2) __attribute__nonnull__(3) __attribute__nonnull__(4) __attribute__nonnull__(5) __attribute__nonnull__(6) __attribute__nonnull__(7) __attribute__nonnull__(8) __attribute__nonnull__(9); #endif PERL_CALLCONV PerlInterpreter* perl_alloc(void); PERL_CALLCONV void perl_construct(PerlInterpreter* interp) __attribute__nonnull__(1); PERL_CALLCONV int perl_destruct(PerlInterpreter* interp) __attribute__nonnull__(1); PERL_CALLCONV void perl_free(PerlInterpreter* interp) __attribute__nonnull__(1); PERL_CALLCONV int perl_run(PerlInterpreter* interp) __attribute__nonnull__(1); PERL_CALLCONV int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env) __attribute__nonnull__(1); PERL_CALLCONV bool Perl_doing_taint(int argc, char** argv, char** env) __attribute__warn_unused_result__; #if defined(USE_ITHREADS) PERL_CALLCONV PerlInterpreter* perl_clone(PerlInterpreter* interp, UV flags) __attribute__nonnull__(1); # if defined(PERL_IMPLICIT_SYS) PERL_CALLCONV PerlInterpreter* perl_clone_using(PerlInterpreter *interp, UV flags, struct IPerlMem* m, struct IPerlMem* ms, struct IPerlMem* mp, struct IPerlEnv* e, struct IPerlStdIO* io, struct IPerlLIO* lio, struct IPerlDir* d, struct IPerlSock* s, struct IPerlProc* p) __attribute__nonnull__(1) __attribute__nonnull__(3) __attribute__nonnull__(4) __attribute__nonnull__(5) __attribute__nonnull__(6) __attribute__nonnull__(7) __attribute__nonnull__(8) __attribute__nonnull__(9) __attribute__nonnull__(10) __attribute__nonnull__(11); # endif #endif PERL_CALLCONV Malloc_t Perl_malloc(MEM_SIZE nbytes) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV Malloc_t Perl_calloc(MEM_SIZE elements, MEM_SIZE size) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV Malloc_t Perl_realloc(Malloc_t where, MEM_SIZE nbytes) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV Free_t Perl_mfree(Malloc_t where); #if defined(MYMALLOC) PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p) __attribute__warn_unused_result__ __attribute__nonnull__(1); #endif PERL_CALLCONV void* Perl_get_context(void) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_set_context(void *thx) __attribute__nonnull__(1); END_EXTERN_C /* functions with flag 'n' should come before here */ START_EXTERN_C # include "pp_proto.h" PERL_CALLCONV SV* Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV bool Perl_Gv_AMupdate(pTHX_ HV* stash) __attribute__nonnull__(pTHX_1); PERL_CALLCONV CV* Perl_gv_handler(pTHX_ HV* stash, I32 id) __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_append_elem(pTHX_ I32 optype, OP* first, OP* last); PERL_CALLCONV OP* Perl_append_list(pTHX_ I32 optype, LISTOP* first, LISTOP* last); PERL_CALLCONV I32 Perl_apply(pTHX_ I32 type, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_av_clear(pTHX_ AV* ar) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_av_delete(pTHX_ AV* ar, I32 key, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_av_exists(pTHX_ AV* ar, I32 key) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_av_extend(pTHX_ AV* ar, I32 key) __attribute__nonnull__(pTHX_1); PERL_CALLCONV AV* Perl_av_fake(pTHX_ I32 size, SV** svp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV SV** Perl_av_fetch(pTHX_ AV* ar, I32 key, I32 lval) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_av_fill(pTHX_ AV* ar, I32 fill) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_av_len(pTHX_ const AV* ar) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV AV* Perl_av_make(pTHX_ I32 size, SV** svp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV SV* Perl_av_pop(pTHX_ AV* ar) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_av_push(pTHX_ AV* ar, SV* val) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_av_reify(pTHX_ AV* ar) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_av_shift(pTHX_ AV* ar) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV** Perl_av_store(pTHX_ AV* ar, I32 key, SV* val) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_av_undef(pTHX_ AV* ar) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_av_unshift(pTHX_ AV* ar, I32 num) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV** Perl_av_arylen_p(pTHX_ AV* av) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_bind_match(pTHX_ I32 type, OP* left, OP* pat) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV OP* Perl_block_end(pTHX_ I32 floor, OP* seq) __attribute__warn_unused_result__; PERL_CALLCONV I32 Perl_block_gimme(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV int Perl_block_start(pTHX_ int full) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_boot_core_UNIVERSAL(pTHX); PERL_CALLCONV void Perl_boot_core_PerlIO(pTHX); PERL_CALLCONV void Perl_call_list(pTHX_ I32 oldscope, AV* av_list) __attribute__nonnull__(pTHX_2); PERL_CALLCONV bool Perl_cando(pTHX_ Mode_t mode, bool effective, const Stat_t* statbufp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_3); PERL_CALLCONV U32 Perl_cast_ulong(pTHX_ NV f) __attribute__warn_unused_result__; PERL_CALLCONV I32 Perl_cast_i32(pTHX_ NV f) __attribute__warn_unused_result__; PERL_CALLCONV IV Perl_cast_iv(pTHX_ NV f) __attribute__warn_unused_result__; PERL_CALLCONV UV Perl_cast_uv(pTHX_ NV f) __attribute__warn_unused_result__; #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP) PERL_CALLCONV I32 Perl_my_chsize(pTHX_ int fd, Off_t length) __attribute__warn_unused_result__; #endif PERL_CALLCONV OP* Perl_convert(pTHX_ I32 optype, I32 flags, OP* o) __attribute__warn_unused_result__; PERL_CALLCONV PERL_CONTEXT* Perl_create_eval_scope(pTHX_ U32 flags); PERL_CALLCONV void Perl_croak(pTHX_ const char* pat, ...) __attribute__noreturn__ __attribute__format__(__printf__,pTHX_1,pTHX_2); PERL_CALLCONV void Perl_vcroak(pTHX_ const char* pat, va_list* args) __attribute__noreturn__ __attribute__nonnull__(pTHX_1); #if defined(PERL_IMPLICIT_CONTEXT) PERL_CALLCONV void Perl_croak_nocontext(const char* pat, ...) __attribute__noreturn__ __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); PERL_CALLCONV OP* Perl_die_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); PERL_CALLCONV void Perl_deb_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); PERL_CALLCONV char* Perl_form_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); PERL_CALLCONV void Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...) __attribute__nonnull__(2) __attribute__nonnull__(3); PERL_CALLCONV SV* Perl_mess_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); PERL_CALLCONV void Perl_warn_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); PERL_CALLCONV void Perl_warner_nocontext(U32 err, const char* pat, ...) __attribute__format__(__printf__,2,3) __attribute__nonnull__(2); PERL_CALLCONV SV* Perl_newSVpvf_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); PERL_CALLCONV void Perl_sv_catpvf_nocontext(SV* sv, const char* pat, ...) __attribute__format__(__printf__,2,3) __attribute__nonnull__(1) __attribute__nonnull__(2); PERL_CALLCONV void Perl_sv_setpvf_nocontext(SV* sv, const char* pat, ...) __attribute__format__(__printf__,2,3) __attribute__nonnull__(1) __attribute__nonnull__(2); PERL_CALLCONV void Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat, ...) __attribute__format__(__printf__,2,3) __attribute__nonnull__(1) __attribute__nonnull__(2); PERL_CALLCONV void Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...) __attribute__format__(__printf__,2,3) __attribute__nonnull__(1) __attribute__nonnull__(2); PERL_CALLCONV int Perl_fprintf_nocontext(PerlIO* stream, const char* fmt, ...) __attribute__format__(__printf__,2,3) __attribute__nonnull__(1) __attribute__nonnull__(2); PERL_CALLCONV int Perl_printf_nocontext(const char* fmt, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); #endif PERL_CALLCONV void Perl_cv_ckproto(pTHX_ const CV* cv, const GV* gv, const char* p) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_cv_ckproto_len(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len) __attribute__nonnull__(pTHX_1); PERL_CALLCONV CV* Perl_cv_clone(pTHX_ CV* proto) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_gv_const_sv(pTHX_ GV* gv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_cv_const_sv(pTHX_ CV* cv) __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_op_const_sv(pTHX_ const OP* o, CV* cv) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_cv_undef(pTHX_ CV* cv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_cx_dump(pTHX_ PERL_CONTEXT* cx) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_filter_add(pTHX_ filter_t funcp, SV* datasv); PERL_CALLCONV void Perl_filter_del(pTHX_ filter_t funcp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_filter_read(pTHX_ int idx, SV* buffer, int maxlen) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV char** Perl_get_op_descs(pTHX) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV char** Perl_get_op_names(pTHX) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV const char* Perl_get_no_modify(pTHX) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV U32* Perl_get_opargs(pTHX) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV PPADDR_t* Perl_get_ppaddr(pTHX) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV I32 Perl_cxinc(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_deb(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_vdeb(pTHX_ const char* pat, va_list* args) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_debprofdump(pTHX); PERL_CALLCONV I32 Perl_debop(pTHX_ const OP* o) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_debstack(pTHX); PERL_CALLCONV I32 Perl_debstackptrs(pTHX); PERL_CALLCONV char* Perl_delimcpy(pTHX_ char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_6); PERL_CALLCONV void Perl_delete_eval_scope(pTHX); PERL_CALLCONV void Perl_deprecate(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_deprecate_old(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_die(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2); PERL_CALLCONV OP* Perl_vdie(pTHX_ const char* pat, va_list* args); PERL_CALLCONV OP* Perl_die_where(pTHX_ const char* message, STRLEN msglen); PERL_CALLCONV void Perl_dounwind(pTHX_ I32 cxix); /* PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); */ PERL_CALLCONV bool Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd, int do_report) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV int Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_do_chop(pTHX_ SV* asv, SV* sv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit); PERL_CALLCONV bool Perl_do_eof(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION /* PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd) __attribute__nonnull__(pTHX_1); */ #else PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd) __attribute__nonnull__(pTHX_1); #endif #if defined(WIN32) || defined(__SYMBIAN32__) PERL_CALLCONV int Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV int Perl_do_spawn(pTHX_ char* cmd) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_do_spawn_nowait(pTHX_ char* cmd) __attribute__nonnull__(pTHX_1); #endif #if !defined(WIN32) PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char* cmd, int fd, int do_report) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV void Perl_do_execfree(pTHX); #ifdef PERL_IN_DOIO_C STATIC void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report) __attribute__nonnull__(pTHX_1); #endif #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) PERL_CALLCONV I32 Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV I32 Perl_do_ipcget(pTHX_ I32 optype, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV I32 Perl_do_msgrcv(pTHX_ SV** mark, SV** sp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_do_msgsnd(pTHX_ SV** mark, SV** sp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_do_semop(pTHX_ SV** mark, SV** sp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); #endif PERL_CALLCONV void Perl_do_join(pTHX_ SV* sv, SV* del, SV** mark, SV** sp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV OP* Perl_do_kv(pTHX); /* PERL_CALLCONV bool Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); */ PERL_CALLCONV bool Perl_do_open9(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_8); PERL_CALLCONV bool Perl_do_openn(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, I32 num) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_do_pipe(pTHX_ SV* sv, GV* rgv, GV* wgv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_do_print(pTHX_ SV* sv, PerlIO* fp) __attribute__nonnull__(pTHX_2); PERL_CALLCONV OP* Perl_do_readline(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV I32 Perl_do_chomp(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_do_seek(pTHX_ GV* gv, Off_t pos, int whence); PERL_CALLCONV void Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV Off_t Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence) __attribute__nonnull__(pTHX_1); PERL_CALLCONV Off_t Perl_do_tell(pTHX_ GV* gv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_do_trans(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV UV Perl_do_vecget(pTHX_ SV* sv, I32 offset, I32 size) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_do_vecset(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV OP* Perl_dofile(pTHX_ OP* term, I32 force_builtin) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_dowantarray(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_dump_all(pTHX); PERL_CALLCONV void Perl_dump_eval(pTHX); #if defined(DUMP_FDS) PERL_CALLCONV void Perl_dump_fds(pTHX_ char* s) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV void Perl_dump_form(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_gv_dump(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_op_dump(pTHX_ const OP* arg) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP* pm); PERL_CALLCONV void Perl_dump_packsubs(pTHX_ const HV* stash) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_dump_sub(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_fbm_compile(pTHX_ SV* sv, U32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV char* Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char *const *const search_ext, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_force_list(pTHX_ OP* arg); PERL_CALLCONV OP* Perl_fold_constants(pTHX_ OP* arg) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_form(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_vform(pTHX_ const char* pat, va_list* args) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_free_tmps(pTHX); PERL_CALLCONV OP* Perl_gen_constant_list(pTHX_ OP* o); #if !defined(HAS_GETENV_LEN) PERL_CALLCONV char* Perl_getenv_len(pTHX_ const char* key, unsigned long *len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #endif PERL_CALLCONV void Perl_gp_free(pTHX_ GV* gv); PERL_CALLCONV GP* Perl_gp_ref(pTHX_ GP* gp); PERL_CALLCONV GV* Perl_gv_AVadd(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV GV* Perl_gv_HVadd(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV GV* Perl_gv_IOadd(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV GV* Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_gv_check(pTHX_ const HV* stash) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_gv_efullname(pTHX_ SV* sv, const GV* gv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); /* PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); */ PERL_CALLCONV void Perl_gv_efullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV GV* Perl_gv_fetchfile(pTHX_ const char* name) __attribute__nonnull__(pTHX_1); PERL_CALLCONV GV* Perl_gv_fetchmeth(pTHX_ HV* stash, const char* name, STRLEN len, I32 level) __attribute__nonnull__(pTHX_2); PERL_CALLCONV GV* Perl_gv_fetchmeth_autoload(pTHX_ HV* stash, const char* name, STRLEN len, I32 level) __attribute__nonnull__(pTHX_2); /* PERL_CALLCONV GV* Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name) __attribute__nonnull__(pTHX_2); */ PERL_CALLCONV GV* Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload) __attribute__nonnull__(pTHX_2); PERL_CALLCONV GV* Perl_gv_fetchpv(pTHX_ const char* name, I32 add, I32 sv_type) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_gv_fullname(pTHX_ SV* sv, const GV* gv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); /* PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); */ PERL_CALLCONV void Perl_gv_fullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV GP * Perl_newGP(pTHX_ GV *const gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_gv_name_set(pTHX_ GV* gv, const char *name, U32 len, U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV HV* Perl_gv_stashpv(pTHX_ const char* name, I32 create) __attribute__nonnull__(pTHX_1); PERL_CALLCONV HV* Perl_gv_stashpvn(pTHX_ const char* name, U32 namelen, I32 create) __attribute__nonnull__(pTHX_1); PERL_CALLCONV HV* Perl_gv_stashsv(pTHX_ SV* sv, I32 create); PERL_CALLCONV void Perl_hv_clear(pTHX_ HV* tb); PERL_CALLCONV HV * Perl_hv_copy_hints_hv(pTHX_ HV *const ohv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_hv_delayfree_ent(pTHX_ HV* hv, HE* entry) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_hv_delete(pTHX_ HV* tb, const char* key, I32 klen, I32 flags) __attribute__nonnull__(pTHX_2); PERL_CALLCONV SV* Perl_hv_delete_ent(pTHX_ HV* tb, SV* key, I32 flags, U32 hash) __attribute__nonnull__(pTHX_2); PERL_CALLCONV bool Perl_hv_exists(pTHX_ HV* tb, const char* key, I32 klen) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV bool Perl_hv_exists_ent(pTHX_ HV* tb, SV* key, U32 hash) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV SV** Perl_hv_fetch(pTHX_ HV* tb, const char* key, I32 klen, I32 lval) __attribute__nonnull__(pTHX_2); PERL_CALLCONV HE* Perl_hv_fetch_ent(pTHX_ HV* tb, SV* key, I32 lval, U32 hash) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_hv_free_ent(pTHX_ HV* hv, HE* entryK) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_hv_iterinit(pTHX_ HV* tb) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_hv_iterkey(pTHX_ HE* entry, I32* retlen) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV SV* Perl_hv_iterkeysv(pTHX_ HE* entry) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV HE* Perl_hv_iternext(pTHX_ HV* tb) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV SV* Perl_hv_iternextsv(pTHX_ HV* hv, char** key, I32* retlen) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV HE* Perl_hv_iternext_flags(pTHX_ HV* tb, I32 flags) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_hv_iterval(pTHX_ HV* tb, HE* entry) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_hv_ksplit(pTHX_ HV* hv, IV newmax) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV void Perl_hv_magic(pTHX_ HV* hv, GV* gv, int how) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c); PERL_CALLCONV SV * Perl_refcounted_he_fetch(pTHX_ const struct refcounted_he *chain, SV *keysv, const char *key, STRLEN klen, int flags, U32 hash) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_refcounted_he_free(pTHX_ struct refcounted_he *he); PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new(pTHX_ struct refcounted_he *const parent, SV *const key, SV *const value); PERL_CALLCONV SV** Perl_hv_store(pTHX_ HV* tb, const char* key, I32 klen, SV* val, U32 hash); PERL_CALLCONV HE* Perl_hv_store_ent(pTHX_ HV* tb, SV* key, SV* val, U32 hash); PERL_CALLCONV SV** Perl_hv_store_flags(pTHX_ HV* tb, const char* key, I32 klen, SV* val, U32 hash, int flags); PERL_CALLCONV void Perl_hv_undef(pTHX_ HV* tb); PERL_CALLCONV I32 Perl_ibcmp(pTHX_ const char* a, const char* b, I32 len) __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_ibcmp_locale(pTHX_ const char* a, const char* b, I32 len) __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_ibcmp_utf8(pTHX_ const char* a, char **pe1, UV l1, bool u1, const char* b, char **pe2, UV l2, bool u2) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_5); PERL_CALLCONV bool Perl_ingroup(pTHX_ Gid_t testgid, bool effective) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_init_argv_symbols(pTHX_ int argc, char **argv) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_init_debugger(pTHX); PERL_CALLCONV void Perl_init_stacks(pTHX); PERL_CALLCONV void Perl_init_tm(pTHX_ struct tm *ptm) __attribute__nonnull__(pTHX_1); PERL_CALLCONV U32 Perl_intro_my(pTHX); PERL_CALLCONV char* Perl_instr(pTHX_ const char* big, const char* little) __attribute__warn_unused_result__ __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, bool not_implicit) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd) __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_gv_magical(pTHX_ const char *name, STRLEN len, U32 flags) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_is_lvalue_sub(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV U32 Perl_to_uni_upper_lc(pTHX_ U32 c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV U32 Perl_to_uni_title_lc(pTHX_ U32 c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV U32 Perl_to_uni_lower_lc(pTHX_ U32 c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_alnum(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_alnumc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_idfirst(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_alpha(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_ascii(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_space(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_cntrl(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_graph(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_digit(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_upper(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_lower(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_print(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_punct(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_xdigit(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV UV Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV UV Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV UV Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV UV Perl_to_uni_fold(pTHX_ UV c, U8 *p, STRLEN *lenp) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV bool Perl_is_uni_alnum_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_alnumc_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_idfirst_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_alpha_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_ascii_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_space_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_cntrl_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_graph_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_digit_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_upper_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_lower_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_print_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_punct_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV bool Perl_is_uni_xdigit_lc(pTHX_ UV c) __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV STRLEN Perl_is_utf8_char(pTHX_ const U8 *p) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_string(pTHX_ const U8 *s, STRLEN len) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV bool Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **p) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV bool Perl_is_utf8_string_loclen(pTHX_ const U8 *s, STRLEN len, const U8 **ep, STRLEN *el) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_alnum(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_alnumc(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_idfirst(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_idcont(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_alpha(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_ascii(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_space(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_cntrl(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_digit(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_graph(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_upper(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_lower(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_print(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_punct(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_xdigit(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_utf8_mark(pTHX_ const U8 *p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_jmaybe(pTHX_ OP* arg) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_keyword(pTHX_ const char* d, I32 len, bool all_keywords) __attribute__pure__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_leave_scope(pTHX_ I32 base); PERL_CALLCONV void Perl_lex_end(pTHX); PERL_CALLCONV void Perl_lex_start(pTHX_ SV* line) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_op_null(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_op_clear(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_op_refcnt_lock(pTHX); PERL_CALLCONV void Perl_op_refcnt_unlock(pTHX); PERL_CALLCONV OP* Perl_linklist(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_list(pTHX_ OP* o); PERL_CALLCONV OP* Perl_listkids(pTHX_ OP* o); PERL_CALLCONV void Perl_load_module(pTHX_ U32 flags, SV* name, SV* ver, ...) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_vload_module(pTHX_ U32 flags, SV* name, SV* ver, va_list* args) __attribute__nonnull__(pTHX_2); PERL_CALLCONV OP* Perl_localize(pTHX_ OP* arg, I32 lexical) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_looks_like_number(pTHX_ SV* sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV UV Perl_grok_bin(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV UV Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV int Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV UV Perl_grok_oct(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV int Perl_magic_clearenv(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_clear_all_env(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_clearhint(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_clearpack(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_clearsig(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_existspack(pTHX_ SV* sv, const MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_freeregexp(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_freeovrld(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_get(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getarylen(pTHX_ SV* sv, const MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getdefelem(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getnkeys(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getpack(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getpos(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getsig(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getsubstr(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_gettaint(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getuvar(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_getvec(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV U32 Perl_magic_len(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_nextpack(pTHX_ SV* sv, MAGIC* mg, SV* key) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV U32 Perl_magic_regdata_cnt(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_regdatum_get(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) __attribute__noreturn__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_set(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setamagic(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setarylen(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_freearylen_p(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setbm(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setdbline(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setdefelem(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setenv(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setfm(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_sethint(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setisa(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setglob(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setmglob(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setnkeys(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setpack(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setpos(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setregexp(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setsig(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setsubstr(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_settaint(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setuvar(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setvec(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_setutf8(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_set_all_env(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV U32 Perl_magic_sizepack(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_magicname(pTHX_ const char* sym, const char* name, I32 namlen) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_markstack_grow(pTHX); #if defined(USE_LOCALE_COLLATE) PERL_CALLCONV int Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_mem_collxfrm(pTHX_ const char* s, STRLEN len, STRLEN* xlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); #endif PERL_CALLCONV SV* Perl_mess(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_vmess(pTHX_ const char* pat, va_list* args) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_qerror(pTHX_ SV* err) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sortsv(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_sortsv_flags(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV int Perl_mg_clear(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_mg_copy(pTHX_ SV* sv, SV* nsv, const char* key, I32 klen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_mg_localize(pTHX_ SV* sv, SV* nsv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV MAGIC* Perl_mg_find(pTHX_ const SV* sv, int type) __attribute__warn_unused_result__; PERL_CALLCONV int Perl_mg_free(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_mg_get(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV U32 Perl_mg_length(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_mg_magical(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_mg_set(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_mg_size(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_mini_mktime(pTHX_ struct tm *pm) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_mod(pTHX_ OP* o, I32 type); PERL_CALLCONV int Perl_mode_from_discipline(pTHX_ SV* discp); PERL_CALLCONV char* Perl_moreswitches(pTHX_ char* s) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_my(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); PERL_CALLCONV NV Perl_my_atof(pTHX_ const char *s) __attribute__nonnull__(pTHX_1); #if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) PERL_CALLCONV char* Perl_my_bcopy(const char* from, char* to, I32 len) __attribute__nonnull__(1) __attribute__nonnull__(2); #endif #if !defined(HAS_BZERO) && !defined(HAS_MEMSET) PERL_CALLCONV char* Perl_my_bzero(char* loc, I32 len) __attribute__nonnull__(1); #endif PERL_CALLCONV void Perl_my_exit(pTHX_ U32 status) __attribute__noreturn__; PERL_CALLCONV void Perl_my_failure_exit(pTHX) __attribute__noreturn__; PERL_CALLCONV I32 Perl_my_fflush_all(pTHX); PERL_CALLCONV Pid_t Perl_my_fork(void); PERL_CALLCONV void Perl_atfork_lock(void); PERL_CALLCONV void Perl_atfork_unlock(void); PERL_CALLCONV I32 Perl_my_lstat(pTHX); #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) PERL_CALLCONV I32 Perl_my_memcmp(const char* s1, const char* s2, I32 len) __attribute__pure__ __attribute__nonnull__(1) __attribute__nonnull__(2); #endif #if !defined(HAS_MEMSET) PERL_CALLCONV void* Perl_my_memset(char* loc, I32 ch, I32 len) __attribute__nonnull__(1); #endif PERL_CALLCONV I32 Perl_my_pclose(pTHX_ PerlIO* ptr); PERL_CALLCONV PerlIO* Perl_my_popen(pTHX_ const char* cmd, const char* mode) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV PerlIO* Perl_my_popen_list(pTHX_ char* mode, int n, SV ** args) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_my_setenv(pTHX_ const char* nam, const char* val); PERL_CALLCONV I32 Perl_my_stat(pTHX); PERL_CALLCONV char * Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst) __attribute__nonnull__(pTHX_1); #if defined(MYSWAP) PERL_CALLCONV short Perl_my_swap(pTHX_ short s) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV long Perl_my_htonl(pTHX_ long l) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__pure__; PERL_CALLCONV long Perl_my_ntohl(pTHX_ long l) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__pure__; #endif PERL_CALLCONV void Perl_my_unexec(pTHX); PERL_CALLCONV OP* Perl_newANONLIST(pTHX_ OP* o) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newANONHASH(pTHX_ OP* o) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block); PERL_CALLCONV OP* Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newCONDOP(pTHX_ I32 flags, OP* first, OP* trueop, OP* falseop) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV CV* Perl_newCONSTSUB(pTHX_ HV* stash, const char* name, SV* sv); #ifdef PERL_MAD PERL_CALLCONV OP* Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block); #else PERL_CALLCONV void Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block); #endif PERL_CALLCONV OP* Perl_newFOROP(pTHX_ I32 flags, char* label, line_t forline, OP* sv, OP* expr, OP* block, OP* cont) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_5); PERL_CALLCONV OP* Perl_newGIVENOP(pTHX_ OP* cond, OP* block, PADOFFSET defsv_off) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV OP* Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP* left, OP* right) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV OP* Perl_newLOOPEX(pTHX_ I32 type, OP* label) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV OP* Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newNULLLIST(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newOP(pTHX_ I32 optype, I32 flags) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_newPROG(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV OP* Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV CV* Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); PERL_CALLCONV CV * Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV CV* Perl_newXS(pTHX_ const char* name, XSUBADDR_t f, const char* filename) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV AV* Perl_newAV(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newAVREF(pTHX_ OP* o) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newCVREF(pTHX_ I32 flags, OP* o) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_3); PERL_CALLCONV GV* Perl_newGVgen(pTHX_ const char* pack) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_newGVREF(pTHX_ I32 type, OP* o) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newHVREF(pTHX_ OP* o) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV HV* Perl_newHV(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV HV* Perl_newHVhv(pTHX_ HV* hv) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV IO* Perl_newIO(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newPADOP(pTHX_ I32 type, I32 flags, SV* sv) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newPMOP(pTHX_ I32 type, I32 flags) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newRV(pTHX_ SV* sv) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV* sv) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_newSV(pTHX_ STRLEN len) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newSVREF(pTHX_ OP* o) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_3); PERL_CALLCONV SV* Perl_newSViv(pTHX_ IV i) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVuv(pTHX_ UV u) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVnv(pTHX_ NV n) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpv(pTHX_ const char* s, STRLEN len) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char* s, STRLEN len) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVhek(pTHX_ const HEK *hek) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpvf(pTHX_ const char* pat, ...) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_vnewSVpvf(pTHX_ const char* pat, va_list* args) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_newSVrv(pTHX_ SV* rv, const char* classname) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_newSVsv(pTHX_ SV* old) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newWHENOP(pTHX_ OP* cond, OP* block) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV OP* Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont, I32 has_my) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV PERL_SI* Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV char* Perl_scan_vstring(pTHX_ const char *vstr, SV *sv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV const char* Perl_scan_version(pTHX_ const char *vstr, SV *sv, bool qv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV SV* Perl_new_version(pTHX_ SV *ver) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_upg_version(pTHX_ SV *ver) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_vverify(pTHX_ SV *vs) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_vnumify(pTHX_ SV *vs) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_vnormal(pTHX_ SV *vs) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_vstringify(pTHX_ SV *vs) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_vcmp(pTHX_ SV *lvs, SV *rvs) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV PerlIO* Perl_nextargv(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_ninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend) __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV OP* Perl_oopsCV(pTHX_ OP* o) __attribute__noreturn__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_op_free(pTHX_ OP* arg); #ifdef PERL_MAD PERL_CALLCONV OP* Perl_package(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); #else PERL_CALLCONV void Perl_package(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype); PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name) __attribute__nonnull__(pTHX_1); PERL_CALLCONV PADOFFSET Perl_pad_findmy(pTHX_ const char* name) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV PADOFFSET Perl_find_rundefsvoffset(pTHX); PERL_CALLCONV OP* Perl_oopsAV(pTHX_ OP* o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_oopsHV(pTHX_ OP* o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_pad_leavemy(pTHX); PERL_CALLCONV SV* Perl_pad_sv(pTHX_ PADOFFSET po); PERL_CALLCONV void Perl_pad_free(pTHX_ PADOFFSET po); PERL_CALLCONV void Perl_pad_reset(pTHX); PERL_CALLCONV void Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust); PERL_CALLCONV void Perl_peep(pTHX_ OP* o); PERL_CALLCONV PerlIO* Perl_start_glob(pTHX_ SV* pattern, IO *io) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #if defined(USE_REENTRANT_API) PERL_CALLCONV void Perl_reentrant_size(pTHX); PERL_CALLCONV void Perl_reentrant_init(pTHX); PERL_CALLCONV void Perl_reentrant_free(pTHX); PERL_CALLCONV void* Perl_reentrant_retry(const char*, ...) __attribute__nonnull__(1); #endif PERL_CALLCONV void Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr); PERL_CALLCONV I32 Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV I32 Perl_call_method(pTHX_ const char* methname, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_call_pv(pTHX_ const char* sub_name, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_call_sv(pTHX_ SV* sv, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_despatch_signals(pTHX); PERL_CALLCONV OP * Perl_doref(pTHX_ OP *o, I32 type, bool set_op_ref) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_eval_pv(pTHX_ const char* p, I32 croak_on_error) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_eval_sv(pTHX_ SV* sv, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_get_sv(pTHX_ const char* name, I32 create) __attribute__nonnull__(pTHX_1); PERL_CALLCONV AV* Perl_get_av(pTHX_ const char* name, I32 create) __attribute__nonnull__(pTHX_1); PERL_CALLCONV HV* Perl_get_hv(pTHX_ const char* name, I32 create) __attribute__nonnull__(pTHX_1); PERL_CALLCONV CV* Perl_get_cv(pTHX_ const char* name, I32 create) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_init_i18nl10n(pTHX_ int printwarn); PERL_CALLCONV int Perl_init_i18nl14n(pTHX_ int printwarn); PERL_CALLCONV void Perl_new_collate(pTHX_ const char* newcoll); PERL_CALLCONV void Perl_new_ctype(pTHX_ const char* newctype) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_new_numeric(pTHX_ const char* newcoll); PERL_CALLCONV void Perl_set_numeric_local(pTHX); PERL_CALLCONV void Perl_set_numeric_radix(pTHX); PERL_CALLCONV void Perl_set_numeric_standard(pTHX); PERL_CALLCONV void Perl_require_pv(pTHX_ const char* pv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5) __attribute__nonnull__(pTHX_6); PERL_CALLCONV void Perl_packlist(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); #ifdef PERL_USES_PL_PIDSTATUS PERL_CALLCONV void Perl_pidgone(pTHX_ Pid_t pid, int status); #endif PERL_CALLCONV void Perl_pmflag(pTHX_ U32* pmfl, int ch) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP* pm, OP* expr, bool isreg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV OP* Perl_pmtrans(pTHX_ OP* o, OP* expr, OP* repl) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_pop_scope(pTHX); PERL_CALLCONV OP* Perl_prepend_elem(pTHX_ I32 optype, OP* head, OP* tail); PERL_CALLCONV void Perl_push_scope(pTHX); /* PERL_CALLCONV OP* ref(pTHX_ OP* o, I32 type); */ PERL_CALLCONV OP* Perl_refkids(pTHX_ OP* o, I32 type); PERL_CALLCONV void Perl_regdump(pTHX_ const regexp* r) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_regclass_swash(pTHX_ const regexp *prog, const struct regnode *n, bool doinit, SV **listsvp, SV **altsvp) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_pregexec(pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_6); PERL_CALLCONV void Perl_pregfree(pTHX_ struct regexp* r); #if defined(USE_ITHREADS) PERL_CALLCONV regexp* Perl_regdupe(pTHX_ const regexp* r, CLONE_PARAMS* param) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #endif PERL_CALLCONV regexp* Perl_pregcomp(pTHX_ char* exp, char* xend, PMOP* pm) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV char* Perl_re_intuit_start(pTHX_ regexp* prog, SV* sv, char* strpos, char* strend, U32 flags, struct re_scream_pos_data_s *data) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV SV* Perl_re_intuit_string(pTHX_ regexp* prog) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_regexec_flags(pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_6); PERL_CALLCONV regnode* Perl_regnext(pTHX_ regnode* p) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_reg_named_buff_sv(pTHX_ SV* namesv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* o) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_repeatcpy(pTHX_ char* to, const char* from, I32 len, I32 count) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_rninstr(pTHX_ const char* big, const char* bigend, const char* little, const char* lend) __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV Sighandler_t Perl_rsignal(pTHX_ int i, Sighandler_t t); PERL_CALLCONV int Perl_rsignal_restore(pTHX_ int i, Sigsave_t* t); PERL_CALLCONV int Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* t2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV Sighandler_t Perl_rsignal_state(pTHX_ int i); PERL_CALLCONV void Perl_rxres_free(pTHX_ void** rsp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_rxres_restore(pTHX_ void** rsp, REGEXP* prx) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_rxres_save(pTHX_ void** rsp, REGEXP* prx) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #if !defined(HAS_RENAME) PERL_CALLCONV I32 Perl_same_dirent(pTHX_ const char* a, const char* b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #endif PERL_CALLCONV char* Perl_savepv(pTHX_ const char* pv) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV char* Perl_savepvn(pTHX_ const char* pv, I32 len) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV char* Perl_savesharedpv(pTHX_ const char* pv) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV char* Perl_savesvpv(pTHX_ SV* sv) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_savestack_grow(pTHX); PERL_CALLCONV void Perl_savestack_grow_cnt(pTHX_ I32 need); PERL_CALLCONV void Perl_save_aelem(pTHX_ AV* av, I32 idx, SV **sptr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV I32 Perl_save_alloc(pTHX_ I32 size, I32 pad); PERL_CALLCONV void Perl_save_aptr(pTHX_ AV** aptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV AV* Perl_save_ary(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_bool(pTHX_ bool* boolp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_clearsv(pTHX_ SV** svp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_delete(pTHX_ HV* hv, char* key, I32 klen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void* p) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p); PERL_CALLCONV void Perl_save_freesv(pTHX_ SV* sv); PERL_CALLCONV void Perl_save_freeop(pTHX_ OP* o); PERL_CALLCONV void Perl_save_freepv(pTHX_ char* pv); PERL_CALLCONV void Perl_save_generic_svref(pTHX_ SV** sptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_generic_pvref(pTHX_ char** str) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_shared_pvref(pTHX_ char** str) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_gp(pTHX_ GV* gv, I32 empty) __attribute__nonnull__(pTHX_1); PERL_CALLCONV HV* Perl_save_hash(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_helem(pTHX_ HV* hv, SV *key, SV **sptr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_save_hints(pTHX) __attribute__noreturn__; PERL_CALLCONV void Perl_save_hptr(pTHX_ HV** hptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_I16(pTHX_ I16* intp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_I32(pTHX_ I32* intp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_I8(pTHX_ I8* bytep) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_int(pTHX_ int* intp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_item(pTHX_ SV* item) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_iv(pTHX_ IV* iv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_list(pTHX_ SV** sarg, I32 maxsarg) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_long(pTHX_ long* longp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv); PERL_CALLCONV void Perl_save_op(pTHX); PERL_CALLCONV SV* Perl_save_scalar(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_pptr(pTHX_ char** pptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_vptr(pTHX_ void* pptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_save_re_context(pTHX); PERL_CALLCONV void Perl_save_padsv(pTHX_ PADOFFSET off); PERL_CALLCONV void Perl_save_sptr(pTHX_ SV** sptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_save_svref(pTHX_ SV** sptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_sawparens(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalar(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalarkids(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalarseq(pTHX_ OP* o); PERL_CALLCONV OP* Perl_scalarvoid(pTHX_ OP* o) __attribute__nonnull__(pTHX_1); PERL_CALLCONV NV Perl_scan_bin(pTHX_ const char* start, STRLEN len, STRLEN* retlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV NV Perl_scan_hex(pTHX_ const char* start, STRLEN len, STRLEN* retlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV char* Perl_scan_num(pTHX_ const char* s, YYSTYPE *lvalp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV NV Perl_scan_oct(pTHX_ const char* start, STRLEN len, STRLEN* retlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV OP* Perl_scope(pTHX_ OP* o); PERL_CALLCONV char* Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *oldposp, I32 last) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_5); #if !defined(VMS) PERL_CALLCONV I32 Perl_setenv_getix(pTHX_ const char* nam) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV void Perl_setdefout(pTHX_ GV* gv); PERL_CALLCONV HEK* Perl_share_hek(pTHX_ const char* str, I32 len, U32 hash) __attribute__nonnull__(pTHX_1); #if defined(HAS_SIGACTION) && defined(SA_SIGINFO) PERL_CALLCONV Signal_t Perl_sighandler(int sig, ...); PERL_CALLCONV Signal_t Perl_csighandler(int sig, ...); #else PERL_CALLCONV Signal_t Perl_sighandler(int sig); PERL_CALLCONV Signal_t Perl_csighandler(int sig); #endif PERL_CALLCONV SV** Perl_stack_grow(pTHX_ SV** sp, SV** p, int n) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_start_subparse(pTHX_ I32 is_format, U32 flags); PERL_CALLCONV void Perl_sub_crush_depth(pTHX_ CV* cv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_sv_2bool(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV CV* Perl_sv_2cv(pTHX_ SV* sv, HV** st, GV** gvp, I32 lref) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); #ifdef PERL_IN_SV_C STATIC bool S_glob_2number(pTHX_ GV* const gv) __attribute__nonnull__(pTHX_1); STATIC char* S_glob_2pv(pTHX_ GV* const gv, STRLEN * const len) __attribute__nonnull__(pTHX_1); #endif /* PERL_CALLCONV IV sv_2iv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV IV Perl_sv_2iv_flags(pTHX_ SV* sv, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_2mortal(pTHX_ SV* sv); PERL_CALLCONV NV Perl_sv_2nv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV char* sv_2pv(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV char* Perl_sv_2pv_flags(pTHX_ SV* sv, STRLEN* lp, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_2pvutf8(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_2pvbyte(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV UV sv_2uv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV UV Perl_sv_2uv_flags(pTHX_ SV* sv, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV IV Perl_sv_iv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV UV Perl_sv_uv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV NV Perl_sv_nv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_pvn(pTHX_ SV *sv, STRLEN *len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_sv_true(pTHX_ SV *sv); PERL_CALLCONV void Perl_sv_add_arena(pTHX_ char* ptr, U32 size, U32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_sv_backoff(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_bless(pTHX_ SV* sv, HV* stash) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_catpvf(pTHX_ SV* sv, const char* pat, ...) __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_vcatpvf(pTHX_ SV* sv, const char* pat, va_list* args) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_catpv(pTHX_ SV* sv, const char* ptr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); /* PERL_CALLCONV void sv_catpvn(pTHX_ SV* sv, const char* ptr, STRLEN len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); */ /* PERL_CALLCONV void sv_catsv(pTHX_ SV* dsv, SV* ssv) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV void Perl_sv_chop(pTHX_ SV* sv, const char* ptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_sv_clean_all(pTHX); PERL_CALLCONV void Perl_sv_clean_objs(pTHX); PERL_CALLCONV void Perl_sv_clear(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_sv_cmp(pTHX_ SV* sv1, SV* sv2) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_sv_cmp_locale(pTHX_ SV* sv1, SV* sv2) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #if defined(USE_LOCALE_COLLATE) PERL_CALLCONV char* Perl_sv_collxfrm(pTHX_ SV* sv, STRLEN* nxp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #endif PERL_CALLCONV OP* Perl_sv_compile_2op(pTHX_ SV* sv, OP** startp, const char* code, PAD** padp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV int Perl_getcwd_sv(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_dec(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_dump(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_sv_derived_from(pTHX_ SV* sv, const char* name) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV bool Perl_sv_does(pTHX_ SV* sv, const char* name) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV* sv1, SV* sv2); PERL_CALLCONV void Perl_sv_free(pTHX_ SV* sv); PERL_CALLCONV void Perl_sv_free2(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_free_arenas(pTHX); PERL_CALLCONV char* Perl_sv_gets(pTHX_ SV* sv, PerlIO* fp, I32 append) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_sv_grow(pTHX_ SV* sv, STRLEN newlen) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_inc(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_insert(pTHX_ SV* bigsv, STRLEN offset, STRLEN len, const char* little, STRLEN littlelen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_4); PERL_CALLCONV int Perl_sv_isa(pTHX_ SV* sv, const char* name) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_sv_isobject(pTHX_ SV* sv); PERL_CALLCONV STRLEN Perl_sv_len(pTHX_ SV* sv); PERL_CALLCONV STRLEN Perl_sv_len_utf8(pTHX_ SV* sv); PERL_CALLCONV void Perl_sv_magic(pTHX_ SV* sv, SV* obj, int how, const char* name, I32 namlen) __attribute__nonnull__(pTHX_1); PERL_CALLCONV MAGIC * Perl_sv_magicext(pTHX_ SV* sv, SV* obj, int how, MGVTBL *vtbl, const char* name, I32 namlen) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_mortalcopy(pTHX_ SV* oldsv) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_sv_newmortal(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_sv_newref(pTHX_ SV* sv); PERL_CALLCONV char* Perl_sv_peek(pTHX_ SV* sv); PERL_CALLCONV void Perl_sv_pos_u2b(pTHX_ SV* sv, I32* offsetp, I32* lenp) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV* sv, I32* offsetp) __attribute__nonnull__(pTHX_2); /* PERL_CALLCONV char* sv_pvn_force(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV* sv, STRLEN* lp) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_recode_to_utf8(pTHX_ SV* sv, SV *encoding) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV bool Perl_sv_cat_decode(pTHX_ SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); PERL_CALLCONV const char* Perl_sv_reftype(pTHX_ const SV* sv, int ob) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_replace(pTHX_ SV* sv, SV* nsv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_report_used(pTHX); PERL_CALLCONV void Perl_sv_reset(pTHX_ const char* s, HV* stash) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setpvf(pTHX_ SV* sv, const char* pat, ...) __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_vsetpvf(pTHX_ SV* sv, const char* pat, va_list* args) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_setiv(pTHX_ SV* sv, IV num) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setpviv(pTHX_ SV* sv, IV num) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setuv(pTHX_ SV* sv, UV num) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setnv(pTHX_ SV* sv, NV num) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_setref_iv(pTHX_ SV* rv, const char* classname, IV iv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_setref_uv(pTHX_ SV* rv, const char* classname, UV uv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_setref_nv(pTHX_ SV* rv, const char* classname, NV nv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_setref_pv(pTHX_ SV* rv, const char* classname, void* pv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_sv_setref_pvn(pTHX_ SV* rv, const char* classname, const char* pv, STRLEN n) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_sv_setpv(pTHX_ SV* sv, const char* ptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setpvn(pTHX_ SV* sv, const char* ptr, STRLEN len) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV void sv_setsv(pTHX_ SV* dsv, SV* ssv) __attribute__nonnull__(pTHX_1); */ /* PERL_CALLCONV void sv_taint(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV bool Perl_sv_tainted(pTHX_ SV* sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_sv_unmagic(pTHX_ SV* sv, int type) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV void Perl_sv_unref(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV void Perl_sv_unref_flags(pTHX_ SV* sv, U32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_untaint(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_upgrade(pTHX_ SV* sv, svtype new_type) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV void Perl_sv_usepvn_flags(pTHX_ SV* sv, char* ptr, STRLEN len, U32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_vcatpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_vsetpvfn(pTHX_ SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV NV Perl_str_to_version(pTHX_ SV *sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_swash_init(pTHX_ const char* pkg, const char* name, SV* listsv, I32 minbits, I32 none) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV UV Perl_swash_fetch(pTHX_ SV *swash, const U8 *ptr, bool do_utf8) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_taint_env(pTHX); PERL_CALLCONV void Perl_taint_proper(pTHX_ const char* f, const char* s) __attribute__nonnull__(pTHX_2); PERL_CALLCONV UV Perl_to_utf8_case(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5) __attribute__nonnull__(pTHX_6); PERL_CALLCONV UV Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV UV Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #if defined(UNLINK_ALL_VERSIONS) PERL_CALLCONV I32 Perl_unlnk(pTHX_ const char* f) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV I32 Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_5); PERL_CALLCONV I32 Perl_unpackstring(pTHX_ const char *pat, const char *patend, const char *s, const char *strend, U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV void Perl_unsharepvn(pTHX_ const char* sv, I32 len, U32 hash); PERL_CALLCONV void Perl_unshare_hek(pTHX_ HEK* hek); #ifdef PERL_MAD PERL_CALLCONV OP * Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop, OP* arg) __attribute__nonnull__(pTHX_4); #else PERL_CALLCONV void Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop, OP* arg) __attribute__nonnull__(pTHX_4); #endif PERL_CALLCONV U8* Perl_utf16_to_utf8(pTHX_ U8* p, U8 *d, I32 bytelen, I32 *newlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_4); PERL_CALLCONV U8* Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8 *d, I32 bytelen, I32 *newlen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_4); PERL_CALLCONV STRLEN Perl_utf8_length(pTHX_ const U8* s, const U8 *e) __attribute__warn_unused_result__ __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV IV Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b) __attribute__warn_unused_result__ __attribute__pure__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV U8* Perl_utf8_hop(pTHX_ const U8 *s, I32 off) __attribute__warn_unused_result__ __attribute__pure__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV U8* Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV U8* Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *len, bool *is_utf8) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV U8* Perl_bytes_to_utf8(pTHX_ const U8 *s, STRLEN *len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV UV Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen) __attribute__nonnull__(pTHX_1); PERL_CALLCONV UV Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen) __attribute__nonnull__(pTHX_1); #ifdef EBCDIC PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) __attribute__nonnull__(pTHX_1); #else /* PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) __attribute__nonnull__(pTHX_1); */ #endif PERL_CALLCONV UV Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags) __attribute__nonnull__(pTHX_1); #ifdef EBCDIC PERL_CALLCONV U8* Perl_uvchr_to_utf8(pTHX_ U8 *d, UV uv) __attribute__nonnull__(pTHX_1); #else /* PERL_CALLCONV U8* Perl_uvchr_to_utf8(pTHX_ U8 *d, UV uv) __attribute__nonnull__(pTHX_1); */ #endif /* PERL_CALLCONV U8* Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV U8* Perl_uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV U8* Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_sv_uni_display(pTHX_ SV *dsv, SV *ssv, STRLEN pvlim, UV flags) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_vivify_defelem(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_vivify_ref(pTHX_ SV* sv, U32 to_what) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_wait4pid(pTHX_ Pid_t pid, int* statusp, int flags) __attribute__nonnull__(pTHX_2); PERL_CALLCONV U32 Perl_parse_unicode_opts(pTHX_ const char **popt) __attribute__nonnull__(pTHX_1); PERL_CALLCONV U32 Perl_seed(pTHX); PERL_CALLCONV UV Perl_get_hash_seed(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_report_evil_fh(pTHX_ const GV *gv, const IO *io, I32 op); PERL_CALLCONV void Perl_report_uninit(pTHX_ SV* uninit_sv); PERL_CALLCONV void Perl_warn(pTHX_ const char* pat, ...) __attribute__format__(__printf__,pTHX_1,pTHX_2) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_vwarn(pTHX_ const char* pat, va_list* args) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_warner(pTHX_ U32 err, const char* pat, ...) __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_watch(pTHX_ char** addr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_whichsig(pTHX_ const char* sig) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_write_to_stderr(pTHX_ const char* message, int msglen) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_yyerror(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_yylex(pTHX); PERL_CALLCONV int Perl_yyparse(pTHX); PERL_CALLCONV int Perl_yywarn(pTHX_ const char* s) __attribute__nonnull__(pTHX_1); #if defined(MYMALLOC) PERL_CALLCONV void Perl_dump_mstats(pTHX_ char* s) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV Malloc_t Perl_safesysmalloc(MEM_SIZE nbytes) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV Malloc_t Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV Malloc_t Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV Free_t Perl_safesysfree(Malloc_t where); #if defined(PERL_GLOBAL_STRUCT) PERL_CALLCONV struct perl_vars * Perl_GetVars(pTHX); PERL_CALLCONV struct perl_vars* Perl_init_global_struct(pTHX); PERL_CALLCONV void Perl_free_global_struct(pTHX_ struct perl_vars *plvarsp) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV int Perl_runops_standard(pTHX); PERL_CALLCONV int Perl_runops_debug(pTHX); PERL_CALLCONV void Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...) __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_vcatpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_catpv_mg(pTHX_ SV *sv, const char *ptr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); /* PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); */ /* PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dstr, SV *sstr) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV void Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...) __attribute__format__(__printf__,pTHX_2,pTHX_3) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_vsetpvf_mg(pTHX_ SV* sv, const char* pat, va_list* args) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_setiv_mg(pTHX_ SV *sv, IV i) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setuv_mg(pTHX_ SV *sv, UV u) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setnv_mg(pTHX_ SV *sv, NV num) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setpv_mg(pTHX_ SV *sv, const char *ptr) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_setpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_setsv_mg(pTHX_ SV *dstr, SV *sstr) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV MGVTBL* Perl_get_vtbl(pTHX_ int vtbl_id) __attribute__warn_unused_result__; PERL_CALLCONV char* Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) __attribute__format__(__printf__,pTHX_3,pTHX_4) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV void Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV void Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); PERL_CALLCONV void Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_magic_dump(pTHX_ const MAGIC *mg); PERL_CALLCONV void Perl_reginitcolors(pTHX); /* PERL_CALLCONV char* Perl_sv_2pv_nolen(pTHX_ SV* sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); */ /* PERL_CALLCONV char* Perl_sv_2pvutf8_nolen(pTHX_ SV* sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); */ /* PERL_CALLCONV char* Perl_sv_2pvbyte_nolen(pTHX_ SV* sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); */ /* PERL_CALLCONV char* sv_pv(pTHX_ SV *sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); */ /* PERL_CALLCONV char* sv_pvutf8(pTHX_ SV *sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); */ /* PERL_CALLCONV char* sv_pvbyte(pTHX_ SV *sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); */ /* PERL_CALLCONV STRLEN sv_utf8_upgrade(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV bool Perl_sv_utf8_downgrade(pTHX_ SV *sv, bool fail_ok) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_utf8_encode(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_sv_utf8_decode(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); /* PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); */ PERL_CALLCONV void Perl_sv_force_normal_flags(pTHX_ SV *sv, U32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_tmps_grow(pTHX_ I32 n); PERL_CALLCONV SV* Perl_sv_rvweaken(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV int Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV OP* Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block); PERL_CALLCONV CV* Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); #ifdef PERL_MAD PERL_CALLCONV OP * Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) __attribute__noreturn__; #else PERL_CALLCONV void Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block) __attribute__noreturn__; #endif PERL_CALLCONV OP * Perl_my_attrs(pTHX_ OP *o, OP *attrs) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_boot_core_xsutils(pTHX); #if defined(USE_ITHREADS) PERL_CALLCONV PERL_CONTEXT* Perl_cx_dup(pTHX_ PERL_CONTEXT* cx, I32 ix, I32 max, CLONE_PARAMS* param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_4); PERL_CALLCONV PERL_SI* Perl_si_dup(pTHX_ PERL_SI* si, CLONE_PARAMS* param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV ANY* Perl_ss_dup(pTHX_ PerlInterpreter* proto_perl, CLONE_PARAMS* param) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void* Perl_any_dup(pTHX_ void* v, const PerlInterpreter* proto_perl) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV HE* Perl_he_dup(pTHX_ const HE* e, bool shared, CLONE_PARAMS* param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_3); PERL_CALLCONV HEK* Perl_hek_dup(pTHX_ HEK* e, CLONE_PARAMS* param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV REGEXP* Perl_re_dup(pTHX_ const REGEXP* r, CLONE_PARAMS* param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV PerlIO* Perl_fp_dup(pTHX_ PerlIO* fp, char type, CLONE_PARAMS* param) __attribute__nonnull__(pTHX_3); PERL_CALLCONV DIR* Perl_dirp_dup(pTHX_ DIR* dp) __attribute__warn_unused_result__; PERL_CALLCONV GP* Perl_gp_dup(pTHX_ GP* gp, CLONE_PARAMS* param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV MAGIC* Perl_mg_dup(pTHX_ MAGIC* mg, CLONE_PARAMS* param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV SV* Perl_sv_dup(pTHX_ const SV* sstr, CLONE_PARAMS* param) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_rvpv_dup(pTHX_ SV* dstr, const SV *sstr, CLONE_PARAMS* param) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV PTR_TBL_t* Perl_ptr_table_new(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void* Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *tbl, const void *sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_ptr_table_store(pTHX_ PTR_TBL_t *tbl, const void *oldsv, void *newsv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *tbl) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *tbl); PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *tbl); # if defined(HAVE_INTERP_INTERN) PERL_CALLCONV void Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); # endif #endif #if defined(HAVE_INTERP_INTERN) PERL_CALLCONV void Perl_sys_intern_clear(pTHX); PERL_CALLCONV void Perl_sys_intern_init(pTHX); #endif PERL_CALLCONV char * Perl_custom_op_name(pTHX_ const OP* op) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV char * Perl_custom_op_desc(pTHX_ const OP* op) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #if defined(PERL_OLD_COPY_ON_WRITE) PERL_CALLCONV int Perl_sv_release_IVX(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV void Perl_sv_nosharing(pTHX_ SV *sv); /* PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv); */ #ifdef NO_MATHOMS /* PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); */ #else PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); #endif PERL_CALLCONV int Perl_nothreadhook(pTHX); END_EXTERN_C #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) STATIC I32 S_do_trans_simple(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC I32 S_do_trans_count(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC I32 S_do_trans_complex(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC I32 S_do_trans_simple_utf8(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC I32 S_do_trans_count_utf8(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC I32 S_do_trans_complex_utf8(pTHX_ SV * const sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) STATIC void S_gv_init_sv(pTHX_ GV *gv, I32 sv_type) __attribute__nonnull__(pTHX_1); STATIC void S_require_errno(pTHX_ GV *gv) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV void* Perl_get_arena(pTHX_ int svtype) __attribute__malloc__ __attribute__warn_unused_result__; #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) STATIC void S_hsplit(pTHX_ HV *hv) __attribute__nonnull__(pTHX_1); STATIC void S_hfreeentries(pTHX_ HV *hv) __attribute__nonnull__(pTHX_1); STATIC HE* S_new_he(pTHX) __attribute__malloc__ __attribute__warn_unused_result__; STATIC HEK* S_save_hek_flags(const char *str, I32 len, U32 hash, int flags) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(1); STATIC void S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store) __attribute__nonnull__(1) __attribute__nonnull__(2) __attribute__nonnull__(3); STATIC void S_unshare_hek_or_pvn(pTHX_ const HEK* hek, const char* str, I32 len, U32 hash); STATIC HEK* S_share_hek_flags(pTHX_ const char* sv, I32 len, U32 hash, int flags) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC SV* S_hv_magic_uvar_xkey(pTHX_ HV* hv, SV* keysv, int action) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC void S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg) __attribute__noreturn__ __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_4); STATIC struct xpvhv_aux* S_hv_auxinit(HV *hv) __attribute__nonnull__(1); STATIC SV* S_hv_delete_common(pTHX_ HV* tb, SV* keysv, const char* key, STRLEN klen, int k_flags, I32 d_flags, U32 hash); STATIC HE* S_hv_fetch_common(pTHX_ HV* tb, SV* keysv, const char* key, STRLEN klen, int flags, int action, SV* val, U32 hash); STATIC void S_clear_placeholders(pTHX_ HV* hb, U32 items) __attribute__nonnull__(pTHX_1); STATIC SV * S_refcounted_he_value(pTHX_ const struct refcounted_he *he) __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) STATIC void S_save_magic(pTHX_ I32 mgs_ix, SV *sv) __attribute__nonnull__(pTHX_2); STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, const char *meth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC int S_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, I32 f, int n, SV *val) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC void S_restore_magic(pTHX_ const void *p) __attribute__nonnull__(pTHX_1); STATIC void S_unwind_handler_stack(pTHX_ const void *p) __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) PERL_CALLCONV OP* Perl_ck_anoncode(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_bitop(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_concat(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_defined(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_delete(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_die(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_eof(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_eval(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_exec(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_exists(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_exit(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_ftst(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_fun(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_glob(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_grep(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_index(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_join(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_lengthconst(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_lfun(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_listiob(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_match(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_method(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_null(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_open(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_repeat(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_require(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_retarget(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_return(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_rfun(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_rvconst(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_sassign(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_say(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_select(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_shift(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_sort(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_spair(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_split(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_subr(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_substr(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_svconst(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_trunc(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV OP* Perl_ck_unpack(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC bool S_is_handle_constructor(const OP *o, I32 numargs) __attribute__warn_unused_result__ __attribute__nonnull__(1); STATIC I32 S_is_list_assignment(pTHX_ const OP *o) __attribute__warn_unused_result__; STATIC void S_cop_free(pTHX_ COP *cop) __attribute__nonnull__(pTHX_1); STATIC OP* S_modkids(pTHX_ OP *o, I32 type); STATIC OP* S_scalarboolean(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); STATIC OP* S_newDEFSVOP(pTHX) __attribute__warn_unused_result__; STATIC OP* S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC void S_simplify_sort(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); STATIC const char* S_gv_ename(pTHX_ GV *gv) __attribute__nonnull__(pTHX_1); STATIC bool S_scalar_mod_type(const OP *o, I32 type) __attribute__warn_unused_result__ __attribute__nonnull__(1); STATIC OP * S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp) __attribute__nonnull__(pTHX_3); STATIC OP * S_dup_attrlist(pTHX_ OP *o) __attribute__nonnull__(pTHX_1); STATIC void S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs, bool for_my) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC void S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_4); STATIC void S_bad_type(pTHX_ I32 n, const char *t, const char *name, const OP *kid) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC void S_no_bareword_allowed(pTHX_ const OP *o) __attribute__nonnull__(pTHX_1); STATIC OP* S_no_fh_allowed(pTHX_ OP *o) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC OP* S_too_few_arguments(pTHX_ OP *o, const char* name) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC OP* S_too_many_arguments(pTHX_ OP *o, const char* name) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC bool S_looks_like_bool(pTHX_ const OP* o) __attribute__nonnull__(pTHX_1); STATIC OP* S_newGIVWHENOP(pTHX_ OP* cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg) __attribute__nonnull__(pTHX_2); STATIC OP* S_ref_array_or_hash(pTHX_ OP* cond); #endif #if defined(PL_OP_SLAB_ALLOC) PERL_CALLCONV void* Perl_Slab_Alloc(pTHX_ int m, size_t sz) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_Slab_Free(pTHX_ void *op) __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) STATIC void S_find_beginning(pTHX); STATIC void S_forbid_setid(pTHX_ const char flag, const int suidscript); STATIC void S_incpush(pTHX_ const char *dir, bool addsubdirs, bool addoldvers, bool usesep, bool canrelocate); STATIC void S_init_interp(pTHX); STATIC void S_init_ids(pTHX); STATIC void S_init_lexer(pTHX); STATIC void S_init_main_stash(pTHX); STATIC void S_init_perllib(pTHX); STATIC void S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env) __attribute__nonnull__(pTHX_2); STATIC void S_init_predump_symbols(pTHX); STATIC void S_my_exit_jump(pTHX) __attribute__noreturn__; STATIC void S_nuke_stacks(pTHX); STATIC int S_open_script(pTHX_ const char *scriptname, bool dosearch, SV *sv, int *suidscript) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC void S_usage(pTHX_ const char *name) __attribute__nonnull__(pTHX_1); STATIC void S_validate_suid(pTHX_ const char *validarg, const char *scriptname, int fdscript, int suidscript) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); # if defined(IAMSUID) STATIC int S_fd_on_nosuid_fs(pTHX_ int fd); # endif STATIC void* S_parse_body(pTHX_ char **env, XSINIT_t xsinit); STATIC void S_run_body(pTHX_ I32 oldscope) __attribute__noreturn__; STATIC SV * S_incpush_if_exists(pTHX_ SV *dir) __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) STATIC SV* S_refto(pTHX_ SV* sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) STATIC I32 S_unpack_rec(pTHX_ struct tempsym* symptr, const char *s, const char *strbeg, const char *strend, const char **new_s) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC SV ** S_pack_rec(pTHX_ SV *cat, struct tempsym* symptr, SV **beglist, SV **endlist) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC SV* S_mul128(pTHX_ SV *sv, U8 m) __attribute__nonnull__(pTHX_1); STATIC I32 S_measure_struct(pTHX_ struct tempsym* symptr) __attribute__nonnull__(pTHX_1); STATIC bool S_next_symbol(pTHX_ struct tempsym* symptr) __attribute__nonnull__(pTHX_1); STATIC SV* S_is_an_int(pTHX_ const char *s, STRLEN l) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC int S_div128(pTHX_ SV *pnum, bool *done) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC const char * S_group_end(pTHX_ const char *pat, const char *patend, char ender) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC const char * S_get_num(pTHX_ const char *ppat, I32 *lenptr) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC bool S_need_utf8(const char *pat, const char *patend) __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC char S_first_symbol(const char *pat, const char *patend) __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC char * S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char * S_bytes_to_uni(const U8 *start, STRLEN len, char *dest) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); #endif #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) STATIC OP* S_docatch(pTHX_ OP *o) __attribute__warn_unused_result__; STATIC void S_docatch_body(pTHX); STATIC OP* S_dofindlabel(pTHX_ OP *o, const char *label, OP **opstack, OP **oplimit) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC OP* S_doparseform(pTHX_ SV *sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC bool S_num_overflow(NV value, I32 fldsize, I32 frcsize) __attribute__warn_unused_result__; STATIC I32 S_dopoptoeval(pTHX_ I32 startingblock) __attribute__warn_unused_result__; STATIC I32 S_dopoptogiven(pTHX_ I32 startingblock) __attribute__warn_unused_result__; STATIC I32 S_dopoptolabel(pTHX_ const char *label) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC I32 S_dopoptoloop(pTHX_ I32 startingblock) __attribute__warn_unused_result__; STATIC I32 S_dopoptosub(pTHX_ I32 startingblock) __attribute__warn_unused_result__; STATIC I32 S_dopoptosub_at(pTHX_ const PERL_CONTEXT* cxstk, I32 startingblock) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC I32 S_dopoptowhen(pTHX_ I32 startingblock) __attribute__warn_unused_result__; STATIC void S_save_lines(pTHX_ AV *array, SV *sv) __attribute__nonnull__(pTHX_2); STATIC OP* S_doeval(pTHX_ int gimme, OP** startop, CV* outside, U32 seq) __attribute__warn_unused_result__; STATIC PerlIO * S_check_type_and_open(pTHX_ const char *name, const char *mode) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC PerlIO * S_doopen_pm(pTHX_ const char *name, const char *mode) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC bool S_path_is_absolute(const char *name) __attribute__warn_unused_result__ __attribute__nonnull__(1); STATIC I32 S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); STATIC PMOP* S_make_matcher(pTHX_ regexp* re) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC bool S_matcher_matches_sv(pTHX_ PMOP* matcher, SV* sv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC void S_destroy_matcher(pTHX_ PMOP* matcher) __attribute__nonnull__(pTHX_1); STATIC OP* S_do_smartmatch(pTHX_ HV* seen_this, HV* seen_other); #endif #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) STATIC void S_do_oddball(pTHX_ HV *hash, SV **relem, SV **firstrelem) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC CV* S_get_db_sub(pTHX_ SV **svp, CV *cv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC SV* S_method_common(pTHX_ SV* meth, U32* hashp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_PP_SORT_C) || defined(PERL_DECL_PROT) STATIC I32 S_sv_ncmp(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_sv_i_ncmp(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_amagic_ncmp(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_amagic_i_ncmp(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_amagic_cmp(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_amagic_cmp_locale(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_sortcv(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_sortcv_xsub(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_sortcv_stacked(pTHX_ SV *a, SV *b) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC void S_qsortsvu(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t compare) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); #endif #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC int S_emulate_eaccess(pTHX_ const char* path, Mode_t mode) __attribute__nonnull__(pTHX_1); # if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) STATIC int S_dooneliner(pTHX_ const char *cmd, const char *filename) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); # endif STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array) __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) STATIC regnode* S_reg(pTHX_ struct RExC_state_t *state, I32 paren, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); STATIC regnode* S_reganode(pTHX_ struct RExC_state_t *state, U8 op, U32 arg) __attribute__nonnull__(pTHX_1); STATIC regnode* S_regatom(pTHX_ struct RExC_state_t *state, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC regnode* S_regbranch(pTHX_ struct RExC_state_t *state, I32 *flagp, I32 first, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC STRLEN S_reguni(pTHX_ const struct RExC_state_t *state, UV uv, char *s) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); STATIC regnode* S_regclass(pTHX_ struct RExC_state_t *state, U32 depth) __attribute__nonnull__(pTHX_1); STATIC I32 S_regcurly(const char *) __attribute__warn_unused_result__ __attribute__nonnull__(1); STATIC regnode* S_reg_node(pTHX_ struct RExC_state_t *state, U8 op) __attribute__nonnull__(pTHX_1); STATIC regnode* S_regpiece(pTHX_ struct RExC_state_t *state, I32 *flagp, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC regnode* S_reg_namedseq(pTHX_ struct RExC_state_t *state, UV *valuep) __attribute__nonnull__(pTHX_1); STATIC void S_reginsert(pTHX_ struct RExC_state_t *state, U8 op, regnode *opnd, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); STATIC void S_regtail(pTHX_ struct RExC_state_t *state, regnode *p, const regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC SV * S_reg_scan_name(pTHX_ struct RExC_state_t *state, U32 flags) __attribute__nonnull__(pTHX_1); STATIC U32 S_join_exact(pTHX_ struct RExC_state_t *state, regnode *scan, I32 *min, U32 flags, regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC char* S_regwhite(char *p, const char *e) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC char* S_nextchar(pTHX_ struct RExC_state_t *state) __attribute__nonnull__(pTHX_1); STATIC void S_scan_commit(pTHX_ const struct RExC_state_t* state, struct scan_data_t *data, I32 *minlenp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC void S_cl_anything(const struct RExC_state_t* state, struct regnode_charclass_class *cl) __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC int S_cl_is_anything(const struct regnode_charclass_class *cl) __attribute__warn_unused_result__ __attribute__nonnull__(1); STATIC void S_cl_init(const struct RExC_state_t* state, struct regnode_charclass_class *cl) __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC void S_cl_init_zero(const struct RExC_state_t* state, struct regnode_charclass_class *cl) __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC void S_cl_and(struct regnode_charclass_class *cl, const struct regnode_charclass_class *and_with) __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC void S_cl_or(const struct RExC_state_t* state, struct regnode_charclass_class *cl, const struct regnode_charclass_class *or_with) __attribute__nonnull__(1) __attribute__nonnull__(2) __attribute__nonnull__(3); STATIC I32 S_study_chunk(pTHX_ struct RExC_state_t* state, regnode **scanp, I32 *minlenp, I32 *deltap, regnode *last, struct scan_data_t *data, U32 flags, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); STATIC I32 S_add_data(struct RExC_state_t* state, I32 n, const char *s) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); STATIC void S_re_croak2(pTHX_ const char* pat1, const char* pat2, ...) __attribute__noreturn__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_regpposixcc(pTHX_ struct RExC_state_t* state, I32 value) __attribute__nonnull__(pTHX_1); STATIC void S_checkposixcc(pTHX_ struct RExC_state_t* state) __attribute__nonnull__(pTHX_1); STATIC I32 S_make_trie(pTHX_ struct RExC_state_t* state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); STATIC void S_make_trie_failtable(pTHX_ struct RExC_state_t* state, regnode *source, regnode *node, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); # ifdef DEBUGGING STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_6); STATIC void S_put_byte(pTHX_ SV* sv, int c) __attribute__nonnull__(pTHX_1); STATIC void S_dump_trie(pTHX_ const struct _reg_trie_data *trie, U32 depth) __attribute__nonnull__(pTHX_1); STATIC void S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, U32 next_alloc, U32 depth) __attribute__nonnull__(pTHX_1); STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, U32 next_alloc, U32 depth) __attribute__nonnull__(pTHX_1); STATIC U8 S_regtail_study(pTHX_ struct RExC_state_t *state, regnode *p, const regnode *val, U32 depth) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); # endif #endif #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) STATIC I32 S_regmatch(pTHX_ const regmatch_info *reginfo, regnode *prog) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_regrepeat(pTHX_ const regexp *prog, const regnode *p, I32 max) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC I32 S_regtry(pTHX_ const regmatch_info *reginfo, char *startpos) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC bool S_reginclass(pTHX_ const regexp *prog, const regnode *n, const U8 *p, STRLEN *lenp, bool do_utf8sv_is_utf8) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC CHECKPOINT S_regcppush(pTHX_ I32 parenfloor); STATIC char* S_regcppop(pTHX_ const regexp *rex) __attribute__nonnull__(pTHX_1); STATIC U8* S_reghop3(U8 *pos, I32 off, const U8 *lim) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); #ifdef XXX_dmq STATIC U8* S_reghop4(U8 *pos, I32 off, const U8 *llim, const U8 *rlim) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3) __attribute__nonnull__(4); #endif STATIC U8* S_reghopmaybe3(U8 *pos, I32 off, const U8 *lim) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(3); STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, const char *strend, const regmatch_info *reginfo) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC void S_to_utf8_substr(pTHX_ regexp * prog) __attribute__nonnull__(pTHX_1); STATIC void S_to_byte_substr(pTHX_ regexp * prog) __attribute__nonnull__(pTHX_1); STATIC I32 S_reg_check_named_buff_matched(pTHX_ const regexp *rex, const regnode *prog) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); # ifdef DEBUGGING STATIC void S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); STATIC void S_debug_start_match(pTHX_ const regexp *prog, const bool do_utf8, const char *start, const char *end, const char *blurb) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4) __attribute__nonnull__(pTHX_5); # endif #endif #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) STATIC CV* S_deb_curcv(pTHX_ I32 ix); STATIC void S_debprof(pTHX_ const OP *o) __attribute__nonnull__(pTHX_1); STATIC void S_sequence(pTHX_ const OP *o); STATIC void S_sequence_tail(pTHX_ const OP *o); STATIC UV S_sequence_num(pTHX_ const OP *o); STATIC SV* S_pm_description(pTHX_ const PMOP *pm) __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) STATIC SV* S_save_scalar_at(pTHX_ SV **sptr) __attribute__nonnull__(pTHX_1); #endif #if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) PERL_CALLCONV void Perl_sv_add_backref(pTHX_ SV *tsv, SV *sv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #endif #if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) PERL_CALLCONV int Perl_sv_kill_backrefs(pTHX_ SV *sv, AV *av) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #endif #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) STATIC char * S_uiv_2buf(char *buf, IV iv, UV uv, int is_uv, char **peob) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(5); STATIC void S_sv_unglob(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); STATIC void S_not_a_number(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); STATIC I32 S_visit(pTHX_ SVFUNC_t f, U32 flags, U32 mask) __attribute__nonnull__(pTHX_1); STATIC void S_sv_del_backref(pTHX_ SV *target, SV *ref) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC SV * S_varname(pTHX_ GV *gv, const char gvtype, PADOFFSET targ, SV *keyname, I32 aindex, int subscript_type) __attribute__warn_unused_result__; # ifdef DEBUGGING STATIC void S_del_sv(pTHX_ SV *p) __attribute__nonnull__(pTHX_1); # endif # if !defined(NV_PRESERVES_UV) STATIC int S_sv_2iuv_non_preserve(pTHX_ SV *sv, I32 numtype) __attribute__nonnull__(pTHX_1); # endif STATIC I32 S_expect_number(pTHX_ char** pattern) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); # STATIC STRLEN S_sv_pos_u2b_forwards(const U8 *const start, const U8 *const send, STRLEN uoffset) __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC STRLEN S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, STRLEN uoffset, STRLEN uend) __attribute__nonnull__(1) __attribute__nonnull__(2); STATIC STRLEN S_sv_pos_u2b_cached(pTHX_ SV *sv, MAGIC **mgp, const U8 *const start, const U8 *const send, STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC void S_utf8_mg_pos_cache_update(pTHX_ SV *sv, MAGIC **mgp, STRLEN byte, STRLEN utf8, STRLEN blen) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC STRLEN S_sv_pos_b2u_forwards(pTHX_ const U8 *s, const U8 *const target) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC STRLEN S_sv_pos_b2u_midway(pTHX_ const U8 *s, const U8 *const target, const U8 *end, STRLEN endu) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC char * S_stringify_regexp(pTHX_ SV *sv, MAGIC *mg, STRLEN *lp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC char * S_F0convert(NV nv, char *endbuf, STRLEN *len) __attribute__nonnull__(2) __attribute__nonnull__(3); # if defined(PERL_OLD_COPY_ON_WRITE) STATIC void S_sv_release_COW(pTHX_ SV *sv, const char *pvx, STRLEN len, SV *after) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_4); # endif STATIC SV * S_more_sv(pTHX); STATIC void * S_more_bodies(pTHX_ svtype sv_type); STATIC bool S_sv_2iuv_common(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); STATIC void S_glob_assign_glob(pTHX_ SV *dstr, SV *sstr, const int dtype) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC void S_glob_assign_ref(pTHX_ SV *dstr, SV *sstr) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); # if defined(USE_ITHREADS) STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *tbl, const void *sv) __attribute__warn_unused_result__ __attribute__nonnull__(1) __attribute__nonnull__(2); # endif #endif #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) STATIC void S_check_uni(pTHX); STATIC void S_force_next(pTHX_ I32 type); STATIC char* S_force_version(pTHX_ char *start, int guessing) __attribute__nonnull__(pTHX_1); STATIC char* S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack, int allow_tick) __attribute__nonnull__(pTHX_1); STATIC SV* S_tokeq(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); STATIC int S_pending_ident(pTHX); STATIC char* S_scan_const(pTHX_ char *start) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_scan_formline(pTHX_ char *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_scan_heredoc(pTHX_ char *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_scan_ident(pTHX_ char *s, const char *send, char *dest, STRLEN destlen, I32 ck_uni) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC char* S_scan_inputsymbol(pTHX_ char *start) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_scan_pat(pTHX_ char *start, I32 type) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_scan_subst(pTHX_ char *start) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_scan_trans(pTHX_ char *start) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_5); STATIC char* S_skipspace(pTHX_ char *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char* S_swallow_bom(pTHX_ U8 *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC void S_checkcomma(pTHX_ const char *s, const char *name, const char *what) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC bool S_feature_is_enabled(pTHX_ const char* name, STRLEN namelen) __attribute__nonnull__(pTHX_1); STATIC void S_force_ident(pTHX_ const char *s, int kind) __attribute__nonnull__(pTHX_1); STATIC void S_incline(pTHX_ char *s) __attribute__nonnull__(pTHX_1); STATIC int S_intuit_method(pTHX_ char *s, GV *gv, CV *cv) __attribute__nonnull__(pTHX_1); STATIC int S_intuit_more(pTHX_ char *s) __attribute__nonnull__(pTHX_1); STATIC I32 S_lop(pTHX_ I32 f, int x, char *s) __attribute__nonnull__(pTHX_3); STATIC void S_missingterm(pTHX_ char *s) __attribute__noreturn__; STATIC void S_no_op(pTHX_ const char *what, char *s) __attribute__nonnull__(pTHX_1); STATIC void S_set_csh(pTHX); STATIC I32 S_sublex_done(pTHX) __attribute__warn_unused_result__; STATIC I32 S_sublex_push(pTHX) __attribute__warn_unused_result__; STATIC I32 S_sublex_start(pTHX) __attribute__warn_unused_result__; STATIC char * S_filter_gets(pTHX_ SV *sv, PerlIO *fp, STRLEN append) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); STATIC HV * S_find_in_my_stash(pTHX_ const char *pkgname, I32 len) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); STATIC char * S_tokenize_use(pTHX_ int is_use, char *s) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); STATIC SV* S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, SV *sv, SV *pv, const char *type) __attribute__nonnull__(pTHX_3) __attribute__nonnull__(pTHX_4); STATIC int S_ao(pTHX_ int toketype); STATIC const char* S_incl_perldb(pTHX); # if defined(PERL_CR_FILTER) STATIC I32 S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen); STATIC void S_strip_return(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); # endif # if defined(DEBUGGING) STATIC int S_tokereport(pTHX_ I32 rv); STATIC void S_printbuf(pTHX_ const char* fmt, const char* s) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); # endif #endif #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) STATIC bool S_isa_lookup(pTHX_ HV *stash, const char *name, const HV * const name_stash, int len, int level) __attribute__nonnull__(pTHX_2); #endif #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) #if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE) STATIC char* S_stdize_locale(pTHX_ char* locs) __attribute__nonnull__(pTHX_1); #endif #endif #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) STATIC const COP* S_closest_cop(pTHX_ const COP *cop, const OP *o) __attribute__nonnull__(pTHX_1); STATIC SV* S_mess_alloc(pTHX); STATIC const char * S_vdie_croak_common(pTHX_ const char *pat, va_list *args, STRLEN *msglen, I32* utf8); STATIC bool S_vdie_common(pTHX_ const char *message, STRLEN msglen, I32 utf8, bool warn); STATIC char * S_write_no_mem(pTHX) __attribute__noreturn__; #endif #if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT) STATIC NV S_mulexp10(NV value, I32 exponent); #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT) STATIC STRLEN S_is_utf8_char_slow(const U8 *s, const STRLEN len) __attribute__warn_unused_result__ __attribute__nonnull__(1); STATIC bool S_is_utf8_common(pTHX_ const U8 *const p, SV **swash, const char * const swashname) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); STATIC SV* S_swash_get(pTHX_ SV* swash, UV start, UV span) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #endif START_EXTERN_C PERL_CALLCONV void Perl_sv_setsv_flags(pTHX_ SV* dsv, SV* ssv, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_catpvn_flags(pTHX_ SV* sv, const char* ptr, STRLEN len, I32 flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_sv_catsv_flags(pTHX_ SV* dsv, SV* ssv, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags(pTHX_ SV *sv, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV char* Perl_sv_pvn_force_flags(pTHX_ SV* sv, STRLEN* lp, I32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_sv_copypv(pTHX_ SV* dsv, SV* ssv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_my_atof2(pTHX_ const char *s, NV* value) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV int Perl_my_socketpair(int family, int type, int protocol, int fd[2]); #ifdef PERL_OLD_COPY_ON_WRITE PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dsv, SV* ssv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #endif PERL_CALLCONV const char * Perl_PerlIO_context_layers(pTHX_ const char *mode); #if defined(USE_PERLIO) && !defined(USE_SFIO) PERL_CALLCONV int Perl_PerlIO_close(pTHX_ PerlIO *f); PERL_CALLCONV int Perl_PerlIO_fill(pTHX_ PerlIO *f); PERL_CALLCONV int Perl_PerlIO_fileno(pTHX_ PerlIO *f); PERL_CALLCONV int Perl_PerlIO_eof(pTHX_ PerlIO *f); PERL_CALLCONV int Perl_PerlIO_error(pTHX_ PerlIO *f); PERL_CALLCONV int Perl_PerlIO_flush(pTHX_ PerlIO *f); PERL_CALLCONV void Perl_PerlIO_clearerr(pTHX_ PerlIO *f); PERL_CALLCONV void Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, int cnt); PERL_CALLCONV void Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, int cnt) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f); PERL_CALLCONV SSize_t Perl_PerlIO_read(pTHX_ PerlIO *f, void *buf, Size_t count) __attribute__nonnull__(pTHX_2); PERL_CALLCONV SSize_t Perl_PerlIO_write(pTHX_ PerlIO *f, const void *buf, Size_t count) __attribute__nonnull__(pTHX_2); PERL_CALLCONV SSize_t Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *buf, Size_t count) __attribute__nonnull__(pTHX_2); PERL_CALLCONV Off_t Perl_PerlIO_tell(pTHX_ PerlIO *f); PERL_CALLCONV int Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence); PERL_CALLCONV STDCHAR * Perl_PerlIO_get_base(pTHX_ PerlIO *f); PERL_CALLCONV STDCHAR * Perl_PerlIO_get_ptr(pTHX_ PerlIO *f); PERL_CALLCONV int Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f) __attribute__warn_unused_result__; PERL_CALLCONV int Perl_PerlIO_get_cnt(pTHX_ PerlIO *f) __attribute__warn_unused_result__; PERL_CALLCONV PerlIO * Perl_PerlIO_stdin(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV PerlIO * Perl_PerlIO_stdout(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV PerlIO * Perl_PerlIO_stderr(pTHX) __attribute__warn_unused_result__; #endif /* PERLIO_LAYERS */ PERL_CALLCONV void Perl_deb_stack_all(pTHX); #ifdef PERL_IN_DEB_C STATIC void S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags) __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_pad_undef(pTHX_ CV* cv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV PADOFFSET Perl_pad_add_name(pTHX_ const char *name, HV* typestash, HV* ourstash, bool clone, bool state) __attribute__nonnull__(pTHX_1); PERL_CALLCONV PADOFFSET Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_pad_check_dup(pTHX_ const char* name, bool is_our, const HV* ourstash) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_3); #ifdef DEBUGGING PERL_CALLCONV void Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv) __attribute__nonnull__(pTHX_2); #endif PERL_CALLCONV void Perl_pad_block_start(pTHX_ int full); PERL_CALLCONV void Perl_pad_tidy(pTHX_ padtidy_type type); PERL_CALLCONV void Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_pad_push(pTHX_ PADLIST *padlist, int depth) __attribute__nonnull__(pTHX_1); PERL_CALLCONV HV* Perl_pad_compname_type(pTHX_ const PADOFFSET po) __attribute__warn_unused_result__; #if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT) STATIC PADOFFSET S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_6) __attribute__nonnull__(pTHX_7); # if defined(DEBUGGING) STATIC void S_cv_dump(pTHX_ const CV *cv, const char *title) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); # endif #endif PERL_CALLCONV CV* Perl_find_runcv(pTHX_ U32 *db_seqp) __attribute__warn_unused_result__; PERL_CALLCONV void Perl_free_tied_hv_pool(pTHX); #if defined(DEBUGGING) PERL_CALLCONV int Perl_get_debug_opts(pTHX_ const char **s, bool givehelp) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV void Perl_save_set_svflags(pTHX_ SV* sv, U32 mask, U32 val); PERL_CALLCONV void Perl_hv_assert(pTHX_ HV* tb) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV* hv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32* Perl_hv_riter_p(pTHX_ HV* hv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV HE** Perl_hv_eiter_p(pTHX_ HV* hv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_hv_riter_set(pTHX_ HV* hv, I32 riter) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_hv_eiter_set(pTHX_ HV* hv, HE* eiter) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_hv_name_set(pTHX_ HV* hv, const char *name, U32 len, U32 flags) __attribute__nonnull__(pTHX_1); PERL_CALLCONV AV** Perl_hv_backreferences_p(pTHX_ HV* hv) __attribute__nonnull__(pTHX_1); #if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) PERL_CALLCONV void Perl_hv_kill_backrefs(pTHX_ HV* hv) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV void Perl_hv_clear_placeholders(pTHX_ HV* hb) __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32* Perl_hv_placeholders_p(pTHX_ HV* hv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV I32 Perl_hv_placeholders_get(pTHX_ HV* hv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_hv_placeholders_set(pTHX_ HV* hv, I32 ph) __attribute__nonnull__(pTHX_1); PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV* hv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) STATIC SV * S_find_hash_subscript(pTHX_ HV *hv, SV *val) __attribute__nonnull__(pTHX_2); STATIC I32 S_find_array_subscript(pTHX_ AV *av, SV *val) __attribute__nonnull__(pTHX_2); STATIC SV* S_find_uninit_var(pTHX_ OP* obase, SV* uninit_sv, bool top); #endif #ifdef PERL_NEED_MY_HTOLE16 PERL_CALLCONV U16 Perl_my_htole16(U16 n); #endif #ifdef PERL_NEED_MY_LETOH16 PERL_CALLCONV U16 Perl_my_letoh16(U16 n); #endif #ifdef PERL_NEED_MY_HTOBE16 PERL_CALLCONV U16 Perl_my_htobe16(U16 n); #endif #ifdef PERL_NEED_MY_BETOH16 PERL_CALLCONV U16 Perl_my_betoh16(U16 n); #endif #ifdef PERL_NEED_MY_HTOLE32 PERL_CALLCONV U32 Perl_my_htole32(U32 n); #endif #ifdef PERL_NEED_MY_LETOH32 PERL_CALLCONV U32 Perl_my_letoh32(U32 n); #endif #ifdef PERL_NEED_MY_HTOBE32 PERL_CALLCONV U32 Perl_my_htobe32(U32 n); #endif #ifdef PERL_NEED_MY_BETOH32 PERL_CALLCONV U32 Perl_my_betoh32(U32 n); #endif #ifdef PERL_NEED_MY_HTOLE64 PERL_CALLCONV U64 Perl_my_htole64(U64 n); #endif #ifdef PERL_NEED_MY_LETOH64 PERL_CALLCONV U64 Perl_my_letoh64(U64 n); #endif #ifdef PERL_NEED_MY_HTOBE64 PERL_CALLCONV U64 Perl_my_htobe64(U64 n); #endif #ifdef PERL_NEED_MY_BETOH64 PERL_CALLCONV U64 Perl_my_betoh64(U64 n); #endif #ifdef PERL_NEED_MY_HTOLES PERL_CALLCONV short Perl_my_htoles(short n); #endif #ifdef PERL_NEED_MY_LETOHS PERL_CALLCONV short Perl_my_letohs(short n); #endif #ifdef PERL_NEED_MY_HTOBES PERL_CALLCONV short Perl_my_htobes(short n); #endif #ifdef PERL_NEED_MY_BETOHS PERL_CALLCONV short Perl_my_betohs(short n); #endif #ifdef PERL_NEED_MY_HTOLEI PERL_CALLCONV int Perl_my_htolei(int n); #endif #ifdef PERL_NEED_MY_LETOHI PERL_CALLCONV int Perl_my_letohi(int n); #endif #ifdef PERL_NEED_MY_HTOBEI PERL_CALLCONV int Perl_my_htobei(int n); #endif #ifdef PERL_NEED_MY_BETOHI PERL_CALLCONV int Perl_my_betohi(int n); #endif #ifdef PERL_NEED_MY_HTOLEL PERL_CALLCONV long Perl_my_htolel(long n); #endif #ifdef PERL_NEED_MY_LETOHL PERL_CALLCONV long Perl_my_letohl(long n); #endif #ifdef PERL_NEED_MY_HTOBEL PERL_CALLCONV long Perl_my_htobel(long n); #endif #ifdef PERL_NEED_MY_BETOHL PERL_CALLCONV long Perl_my_betohl(long n); #endif PERL_CALLCONV void Perl_my_swabn(void* ptr, int n) __attribute__nonnull__(1); PERL_CALLCONV GV* Perl_gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, I32 flags, I32 sv_type) __attribute__nonnull__(pTHX_1); PERL_CALLCONV GV* Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, I32 sv_type) __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_is_gv_magical_sv(pTHX_ SV *name, U32 flags) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1); PERL_CALLCONV bool Perl_stashpv_hvname_match(pTHX_ const COP *cop, const HV *hv) __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP PERL_CALLCONV void Perl_dump_sv_child(pTHX_ SV *sv) __attribute__nonnull__(pTHX_1); #endif #ifdef PERL_DONT_CREATE_GVSV PERL_CALLCONV GV* Perl_gv_SVadd(pTHX_ GV* gv) __attribute__nonnull__(pTHX_1); #endif PERL_CALLCONV bool Perl_ckwarn(pTHX_ U32 w); PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w); PERL_CALLCONV STRLEN * Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, STRLEN size) __attribute__malloc__ __attribute__warn_unused_result__ __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_offer_nice_chunk(pTHX_ void *chunk, U32 chunk_size) __attribute__nonnull__(pTHX_1); #ifndef SPRINTF_RETURNS_STRLEN PERL_CALLCONV int Perl_my_sprintf(char *buffer, const char *pat, ...) __attribute__nonnull__(1) __attribute__nonnull__(2); #endif PERL_CALLCONV int Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...) __attribute__format__(__printf__,3,4) __attribute__nonnull__(1) __attribute__nonnull__(3); PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap) __attribute__nonnull__(1) __attribute__nonnull__(3); PERL_CALLCONV void Perl_my_clearenv(pTHX); #ifdef PERL_IMPLICIT_CONTEXT PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *index, size_t size) __attribute__nonnull__(pTHX_1); #endif #ifndef HAS_STRLCAT PERL_CALLCONV Size_t Perl_my_strlcat(char *dst, const char *src, Size_t size); #endif #ifndef HAS_STRLCPY PERL_CALLCONV Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size); #endif #ifdef PERL_MAD PERL_CALLCONV void Perl_pad_peg(const char* s) __attribute__nonnull__(1); #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) STATIC void S_xmldump_attr(pTHX_ I32 level, PerlIO *file, const char* pat, ...) __attribute__format__(__printf__,pTHX_3,pTHX_4) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); #endif PERL_CALLCONV void Perl_xmldump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...) __attribute__format__(__printf__,pTHX_3,pTHX_4) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_xmldump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args) __attribute__nonnull__(pTHX_2) __attribute__nonnull__(pTHX_3); PERL_CALLCONV void Perl_xmldump_all(pTHX); PERL_CALLCONV void Perl_xmldump_packsubs(pTHX_ const HV* stash) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_xmldump_sub(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_xmldump_form(pTHX_ const GV* gv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_xmldump_eval(pTHX); PERL_CALLCONV char* Perl_sv_catxmlsv(pTHX_ SV *dsv, SV *ssv) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_sv_catxmlpvn(pTHX_ SV *dsv, char *pv, STRLEN len, int utf8) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); PERL_CALLCONV char* Perl_sv_xmlpeek(pTHX_ SV* sv) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_do_pmop_xmldump(pTHX_ I32 level, PerlIO *file, const PMOP *pm) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_pmop_xmldump(pTHX_ const PMOP* pm); PERL_CALLCONV void Perl_do_op_xmldump(pTHX_ I32 level, PerlIO *file, const OP *o) __attribute__nonnull__(pTHX_2); PERL_CALLCONV void Perl_op_xmldump(pTHX_ const OP* arg) __attribute__nonnull__(pTHX_1); PERL_CALLCONV TOKEN* Perl_newTOKEN(pTHX_ I32 optype, YYSTYPE lval, MADPROP* madprop); PERL_CALLCONV void Perl_token_free(pTHX_ TOKEN* arg) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_token_getmad(pTHX_ TOKEN* arg, OP* o, char slot) __attribute__nonnull__(pTHX_1); PERL_CALLCONV void Perl_op_getmad_weak(pTHX_ OP* from, OP* o, char slot); PERL_CALLCONV void Perl_op_getmad(pTHX_ OP* from, OP* o, char slot); PERL_CALLCONV void Perl_prepend_madprops(pTHX_ MADPROP* mp, OP* o, char slot); PERL_CALLCONV void Perl_append_madprops(pTHX_ MADPROP* tm, OP* o, char slot); PERL_CALLCONV void Perl_addmad(pTHX_ MADPROP* tm, MADPROP** root, char slot); PERL_CALLCONV MADPROP* Perl_newMADsv(pTHX_ char key, SV* sv) __attribute__nonnull__(pTHX_2); PERL_CALLCONV MADPROP* Perl_newMADPROP(pTHX_ char key, char type, void* val, I32 vlen); PERL_CALLCONV void Perl_mad_free(pTHX_ MADPROP* mp); # if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) STATIC char* S_skipspace0(pTHX_ char *s) __attribute__nonnull__(pTHX_1); STATIC char* S_skipspace1(pTHX_ char *s) __attribute__nonnull__(pTHX_1); STATIC char* S_skipspace2(pTHX_ char *s, SV **sv) __attribute__nonnull__(pTHX_1); STATIC void S_start_force(pTHX_ int where); STATIC void S_curmad(pTHX_ char slot, SV *sv); # endif PERL_CALLCONV int Perl_madlex(pTHX); PERL_CALLCONV int Perl_madparse(pTHX); #endif END_EXTERN_C /* * ex: set ts=8 sts=4 sw=4 noet: */ /* ex: set ro: */ Convert-Binary-C-0.76/tests/include/perlinc/regexp.h0000644000175000001440000003352211550664630021102 0ustar mhxusers/* regexp.h * * Copyright (C) 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2003, * by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ /* * Definitions etc. for regexp(3) routines. * * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof], * not the System V one. */ #ifndef PLUGGABLE_RE_EXTENSION /* we don't want to include this stuff if we are inside Nicholas' * pluggable regex engine code */ struct regnode { U8 flags; U8 type; U16 next_off; }; typedef struct regnode regnode; struct reg_substr_data; struct reg_data; struct regexp_engine; typedef struct regexp { I32 *startp; I32 *endp; regnode *regstclass; struct reg_substr_data *substrs; char *precomp; /* pre-compilation regular expression */ struct reg_data *data; /* Additional data. */ char *subbeg; /* saved or original string so \digit works forever. */ #ifdef PERL_OLD_COPY_ON_WRITE SV *saved_copy; /* If non-NULL, SV which is COW from original */ #endif U32 *offsets; /* offset annotations 20001228 MJD */ I32 sublen; /* Length of string pointed by subbeg */ I32 refcnt; I32 minlen; /* mininum possible length of $& */ I32 prelen; /* length of precomp */ U32 nparens; /* number of parentheses */ U32 lastparen; /* last paren matched */ U32 lastcloseparen; /* last paren matched */ U32 reganch; /* Internal use only + Tainted information used by regexec? */ HV *paren_names; /* Paren names */ const struct regexp_engine* engine; regnode program[1]; /* Unwarranted chumminess with compiler. */ } regexp; typedef struct re_scream_pos_data_s { char **scream_olds; /* match pos */ I32 *scream_pos; /* Internal iterator of scream. */ } re_scream_pos_data; typedef struct regexp_engine { regexp* (*comp) (pTHX_ char* exp, char* xend, PMOP* pm); I32 (*exec) (pTHX_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags); char* (*intuit) (pTHX_ regexp *prog, SV *sv, char *strpos, char *strend, U32 flags, struct re_scream_pos_data_s *data); SV* (*checkstr) (pTHX_ regexp *prog); void (*free) (pTHX_ struct regexp* r); #ifdef USE_ITHREADS regexp* (*dupe) (pTHX_ const regexp *r, CLONE_PARAMS *param); #endif } regexp_engine; #define ROPT_ANCH (ROPT_ANCH_BOL|ROPT_ANCH_MBOL|ROPT_ANCH_GPOS|ROPT_ANCH_SBOL) #define ROPT_ANCH_SINGLE (ROPT_ANCH_SBOL|ROPT_ANCH_GPOS) #define ROPT_ANCH_BOL 0x00000001 #define ROPT_ANCH_MBOL 0x00000002 #define ROPT_ANCH_SBOL 0x00000004 #define ROPT_ANCH_GPOS 0x00000008 #define ROPT_SKIP 0x00000010 #define ROPT_IMPLICIT 0x00000020 /* Converted .* to ^.* */ #define ROPT_NOSCAN 0x00000040 /* Check-string always at start. */ #define ROPT_GPOS_SEEN 0x00000080 #define ROPT_CHECK_ALL 0x00000100 #define ROPT_LOOKBEHIND_SEEN 0x00000200 #define ROPT_EVAL_SEEN 0x00000400 #define ROPT_CANY_SEEN 0x00000800 #define ROPT_SANY_SEEN ROPT_CANY_SEEN /* src bckwrd cmpt */ #define ROPT_GPOS_CHECK (ROPT_GPOS_SEEN|ROPT_ANCH_GPOS) #define ROPT_RECURSE_SEEN 0x00001000 /* 0xf800 of reganch is used by PMf_COMPILETIME */ #define ROPT_UTF8 0x00010000 #define ROPT_NAUGHTY 0x00020000 /* how exponential is this pattern? */ #define ROPT_COPY_DONE 0x00040000 /* subbeg is a copy of the string */ #define ROPT_TAINTED_SEEN 0x00080000 #define ROPT_MATCH_UTF8 0x10000000 /* subbeg is utf-8 */ #define RE_USE_INTUIT_NOML 0x00100000 /* Best to intuit before matching */ #define RE_USE_INTUIT_ML 0x00200000 #define REINT_AUTORITATIVE_NOML 0x00400000 /* Can trust a positive answer */ #define REINT_AUTORITATIVE_ML 0x00800000 #define REINT_ONCE_NOML 0x01000000 /* Intuit can succed once only. */ #define REINT_ONCE_ML 0x02000000 #define RE_INTUIT_ONECHAR 0x04000000 #define RE_INTUIT_TAIL 0x08000000 #define RE_USE_INTUIT (RE_USE_INTUIT_NOML|RE_USE_INTUIT_ML) #define REINT_AUTORITATIVE (REINT_AUTORITATIVE_NOML|REINT_AUTORITATIVE_ML) #define REINT_ONCE (REINT_ONCE_NOML|REINT_ONCE_ML) #define RX_MATCH_TAINTED(prog) ((prog)->reganch & ROPT_TAINTED_SEEN) #define RX_MATCH_TAINTED_on(prog) ((prog)->reganch |= ROPT_TAINTED_SEEN) #define RX_MATCH_TAINTED_off(prog) ((prog)->reganch &= ~ROPT_TAINTED_SEEN) #define RX_MATCH_TAINTED_set(prog, t) ((t) \ ? RX_MATCH_TAINTED_on(prog) \ : RX_MATCH_TAINTED_off(prog)) #define RX_MATCH_COPIED(prog) ((prog)->reganch & ROPT_COPY_DONE) #define RX_MATCH_COPIED_on(prog) ((prog)->reganch |= ROPT_COPY_DONE) #define RX_MATCH_COPIED_off(prog) ((prog)->reganch &= ~ROPT_COPY_DONE) #define RX_MATCH_COPIED_set(prog,t) ((t) \ ? RX_MATCH_COPIED_on(prog) \ : RX_MATCH_COPIED_off(prog)) #endif /* PLUGGABLE_RE_EXTENSION */ /* Stuff that needs to be included in the plugable extension goes below here */ #define RE_DEBUG_BIT 0x20000000 #define RX_DEBUG(prog) ((prog)->reganch & RE_DEBUG_BIT) #define RX_DEBUG_on(prog) ((prog)->reganch |= RE_DEBUG_BIT) #ifdef PERL_OLD_COPY_ON_WRITE #define RX_MATCH_COPY_FREE(rx) \ STMT_START {if (rx->saved_copy) { \ SV_CHECK_THINKFIRST_COW_DROP(rx->saved_copy); \ } \ if (RX_MATCH_COPIED(rx)) { \ Safefree(rx->subbeg); \ RX_MATCH_COPIED_off(rx); \ }} STMT_END #else #define RX_MATCH_COPY_FREE(rx) \ STMT_START {if (RX_MATCH_COPIED(rx)) { \ Safefree(rx->subbeg); \ RX_MATCH_COPIED_off(rx); \ }} STMT_END #endif #define RX_MATCH_UTF8(prog) ((prog)->reganch & ROPT_MATCH_UTF8) #define RX_MATCH_UTF8_on(prog) ((prog)->reganch |= ROPT_MATCH_UTF8) #define RX_MATCH_UTF8_off(prog) ((prog)->reganch &= ~ROPT_MATCH_UTF8) #define RX_MATCH_UTF8_set(prog, t) ((t) \ ? (RX_MATCH_UTF8_on(prog), (PL_reg_match_utf8 = 1)) \ : (RX_MATCH_UTF8_off(prog), (PL_reg_match_utf8 = 0))) #define REXEC_COPY_STR 0x01 /* Need to copy the string. */ #define REXEC_CHECKED 0x02 /* check_substr already checked. */ #define REXEC_SCREAM 0x04 /* use scream table. */ #define REXEC_IGNOREPOS 0x08 /* \G matches at start. */ #define REXEC_NOT_FIRST 0x10 /* This is another iteration of //g. */ #define ReREFCNT_inc(re) ((void)(re && re->refcnt++), re) #define ReREFCNT_dec(re) CALLREGFREE(re) #define FBMcf_TAIL_DOLLAR 1 #define FBMcf_TAIL_DOLLARM 2 #define FBMcf_TAIL_Z 4 #define FBMcf_TAIL_z 8 #define FBMcf_TAIL (FBMcf_TAIL_DOLLAR|FBMcf_TAIL_DOLLARM|FBMcf_TAIL_Z|FBMcf_TAIL_z) #define FBMrf_MULTILINE 1 struct re_scream_pos_data_s; /* an accepting state/position*/ struct _reg_trie_accepted { U8 *endpos; U16 wordnum; }; typedef struct _reg_trie_accepted reg_trie_accepted; /* some basic information about the current match that is created by * Perl_regexec_flags and then passed to regtry(), regmatch() etc */ typedef struct { regexp *prog; char *bol; char *till; SV *sv; char *ganch; } regmatch_info; /* structures for holding and saving the state maintained by regmatch() */ #define MAX_RECURSE_EVAL_NOCHANGE_DEPTH 50 typedef I32 CHECKPOINT; typedef struct regmatch_state { int resume_state; /* where to jump to on return */ char *locinput; /* where to backtrack in string on failure */ union { /* this is a fake union member that matches the first element * of each member that needs to store positive backtrack * information */ struct { struct regmatch_state *prev_yes_state; } yes; struct { reg_trie_accepted *accept_buff; U32 accepted; /* how many accepting states we have seen */ U16 *jump; /* positive offsets from me */ regnode *B; /* node following the trie */ regnode *me; /* Which node am I - needed for jump tries*/ } trie; struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; struct regmatch_state *prev_eval; struct regmatch_state *prev_curlyx; regexp *prev_rex; U32 toggle_reg_flags; /* what bits in PL_reg_flags to flip when transitioning between inner and outer rexen */ CHECKPOINT cp; /* remember current savestack indexes */ CHECKPOINT lastcp; regnode *B; /* the node following us */ U32 close_paren; /* which close bracket is our end */ } eval; struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; struct regmatch_state *prev_curlyx; /* previous cur_curlyx */ CHECKPOINT cp; /* remember current savestack index */ bool minmod; int parenfloor;/* how far back to strip paren data */ int min; /* the minimal number of A's to match */ int max; /* the maximal number of A's to match */ regnode *A, *B; /* the nodes corresponding to /A*B/ */ /* these two are modified by WHILEM */ int count; /* how many instances of A we've matched */ char *lastloc;/* where previous A matched (0-len detect) */ } curlyx; struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; struct regmatch_state *save_curlyx; CHECKPOINT cp; /* remember current savestack indexes */ CHECKPOINT lastcp; char *save_lastloc; /* previous curlyx.lastloc */ I32 cache_offset; I32 cache_mask; } whilem; struct { I32 lastparen; regnode *next_branch; /* next branch node */ CHECKPOINT cp; } branch; struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; I32 c1, c2; /* case fold search */ CHECKPOINT cp; I32 alen; /* length of first-matched A string */ I32 count; bool minmod; regnode *A, *B; /* the nodes corresponding to /A*B/ */ regnode *me; /* the curlym node */ } curlym; struct { I32 paren; CHECKPOINT cp; I32 c1, c2; /* case fold search */ char *maxpos; /* highest possible point in string to match */ char *oldloc; /* the previous locinput */ int count; int min, max; /* {m,n} */ regnode *A, *B; /* the nodes corresponding to /A*B/ */ } curly; /* and CURLYN/PLUS/STAR */ struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; I32 wanted; I32 logical; /* saved copy of 'logical' var */ regnode *me; /* the IFMATCH/SUSPEND/UNLESSM node */ } ifmatch; /* and SUSPEND/UNLESSM */ } u; } regmatch_state; /* how many regmatch_state structs to allocate as a single slab. * We do it in 4K blocks for efficiency. The "3" is 2 for the next/prev * pointers, plus 1 for any mythical malloc overhead. */ #define PERL_REGMATCH_SLAB_SLOTS \ ((4096 - 3 * sizeof (void*)) / sizeof(regmatch_state)) typedef struct regmatch_slab { regmatch_state states[PERL_REGMATCH_SLAB_SLOTS]; struct regmatch_slab *prev, *next; } regmatch_slab; #define PL_reg_flags PL_reg_state.re_state_reg_flags #define PL_bostr PL_reg_state.re_state_bostr #define PL_reginput PL_reg_state.re_state_reginput #define PL_regeol PL_reg_state.re_state_regeol #define PL_regstartp PL_reg_state.re_state_regstartp #define PL_regendp PL_reg_state.re_state_regendp #define PL_reglastparen PL_reg_state.re_state_reglastparen #define PL_reglastcloseparen PL_reg_state.re_state_reglastcloseparen #define PL_reg_start_tmp PL_reg_state.re_state_reg_start_tmp #define PL_reg_start_tmpl PL_reg_state.re_state_reg_start_tmpl #define PL_reg_eval_set PL_reg_state.re_state_reg_eval_set #define PL_reg_match_utf8 PL_reg_state.re_state_reg_match_utf8 #define PL_reg_magic PL_reg_state.re_state_reg_magic #define PL_reg_oldpos PL_reg_state.re_state_reg_oldpos #define PL_reg_oldcurpm PL_reg_state.re_state_reg_oldcurpm #define PL_reg_curpm PL_reg_state.re_state_reg_curpm #define PL_reg_oldsaved PL_reg_state.re_state_reg_oldsaved #define PL_reg_oldsavedlen PL_reg_state.re_state_reg_oldsavedlen #define PL_reg_maxiter PL_reg_state.re_state_reg_maxiter #define PL_reg_leftiter PL_reg_state.re_state_reg_leftiter #define PL_reg_poscache PL_reg_state.re_state_reg_poscache #define PL_reg_poscache_size PL_reg_state.re_state_reg_poscache_size #define PL_regsize PL_reg_state.re_state_regsize #define PL_reg_starttry PL_reg_state.re_state_reg_starttry #define PL_nrs PL_reg_state.re_state_nrs struct re_save_state { U32 re_state_reg_flags; /* from regexec.c */ char *re_state_bostr; char *re_state_reginput; /* String-input pointer. */ char *re_state_regeol; /* End of input, for $ check. */ I32 *re_state_regstartp; /* Pointer to startp array. */ I32 *re_state_regendp; /* Ditto for endp. */ U32 *re_state_reglastparen; /* Similarly for lastparen. */ U32 *re_state_reglastcloseparen; /* Similarly for lastcloseparen. */ char **re_state_reg_start_tmp; /* from regexec.c */ U32 re_state_reg_start_tmpl; /* from regexec.c */ I32 re_state_reg_eval_set; /* from regexec.c */ bool re_state_reg_match_utf8; /* from regexec.c */ MAGIC *re_state_reg_magic; /* from regexec.c */ I32 re_state_reg_oldpos; /* from regexec.c */ PMOP *re_state_reg_oldcurpm; /* from regexec.c */ PMOP *re_state_reg_curpm; /* from regexec.c */ char *re_state_reg_oldsaved; /* old saved substr during match */ STRLEN re_state_reg_oldsavedlen; /* old length of saved substr during match */ I32 re_state_reg_maxiter; /* max wait until caching pos */ I32 re_state_reg_leftiter; /* wait until caching pos */ char *re_state_reg_poscache; /* cache of pos of WHILEM */ STRLEN re_state_reg_poscache_size; /* size of pos cache of WHILEM */ I32 re_state_regsize; /* from regexec.c */ char *re_state_reg_starttry; /* from regexec.c */ #ifdef PERL_OLD_COPY_ON_WRITE SV *re_state_nrs; /* was placeholder: unused since 5.8.0 (5.7.2 patch #12027 for bug ID 20010815.012). Used to save rx->saved_copy */ #endif }; #define SAVESTACK_ALLOC_FOR_RE_SAVE_STATE \ (1 + ((sizeof(struct re_save_state) - 1) / sizeof(*PL_savestack))) /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */ Convert-Binary-C-0.76/tests/include/include/0000755000175000001440000000000011550665107017421 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/asm/0000755000175000001440000000000011550665107020201 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/asm/sigcontext.h0000644000175000001440000000370511550664624022551 0ustar mhxusers#ifndef _ASMi386_SIGCONTEXT_H #define _ASMi386_SIGCONTEXT_H #include /* * As documented in the iBCS2 standard.. * * The first part of "struct _fpstate" is just the normal i387 * hardware setup, the extra "status" word is used to save the * coprocessor status word before entering the handler. * * Pentium III FXSR, SSE support * Gareth Hughes , May 2000 * * The FPU state data structure has had to grow to accommodate the * extended FPU state required by the Streaming SIMD Extensions. * There is no documented standard to accomplish this at the moment. */ struct _fpreg { unsigned short significand[4]; unsigned short exponent; }; struct _fpxreg { unsigned short significand[4]; unsigned short exponent; unsigned short padding[3]; }; struct _xmmreg { unsigned long element[4]; }; struct _fpstate { /* Regular FPU environment */ unsigned long cw; unsigned long sw; unsigned long tag; unsigned long ipoff; unsigned long cssel; unsigned long dataoff; unsigned long datasel; struct _fpreg _st[8]; unsigned short status; unsigned short magic; /* 0xffff = regular FPU data only */ /* FXSR FPU environment */ unsigned long _fxsr_env[6]; /* FXSR FPU env is ignored */ unsigned long mxcsr; unsigned long reserved; struct _fpxreg _fxsr_st[8]; /* FXSR FPU reg data is ignored */ struct _xmmreg _xmm[8]; unsigned long padding[56]; }; #define X86_FXSR_MAGIC 0x0000 struct sigcontext { unsigned short gs, __gsh; unsigned short fs, __fsh; unsigned short es, __esh; unsigned short ds, __dsh; unsigned long edi; unsigned long esi; unsigned long ebp; unsigned long esp; unsigned long ebx; unsigned long edx; unsigned long ecx; unsigned long eax; unsigned long trapno; unsigned long err; unsigned long eip; unsigned short cs, __csh; unsigned long eflags; unsigned long esp_at_signal; unsigned short ss, __ssh; struct _fpstate __user * fpstate; unsigned long oldmask; unsigned long cr2; }; #endif Convert-Binary-C-0.76/tests/include/include/asm/errno.h0000644000175000001440000000012411550664623021476 0ustar mhxusers#ifndef _I386_ERRNO_H #define _I386_ERRNO_H #include #endif Convert-Binary-C-0.76/tests/include/include/asm/param.h0000644000175000001440000000102311550664624021451 0ustar mhxusers#ifndef _ASMi386_PARAM_H #define _ASMi386_PARAM_H #ifdef __KERNEL__ # include # define HZ CONFIG_HZ /* Internal kernel timer frequency */ # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ #endif #ifndef HZ #define HZ 100 #endif #ifndef USER_HZ #define USER_HZ 100 #endif #define EXEC_PAGESIZE 4096 #ifndef NOGROUP #define NOGROUP (-1) #endif #define MAXHOSTNAMELEN 64 /* max length of hostname */ #define COMMAND_LINE_SIZE 256 #endif Convert-Binary-C-0.76/tests/include/include/asm/sockios.h0000644000175000001440000000042511550664624022030 0ustar mhxusers#ifndef __ARCH_I386_SOCKIOS__ #define __ARCH_I386_SOCKIOS__ /* Socket-level I/O control calls. */ #define FIOSETOWN 0x8901 #define SIOCSPGRP 0x8902 #define FIOGETOWN 0x8903 #define SIOCGPGRP 0x8904 #define SIOCATMARK 0x8905 #define SIOCGSTAMP 0x8906 /* Get stamp */ #endif Convert-Binary-C-0.76/tests/include/include/asm/ioctl.h0000644000175000001440000000003711550664623021466 0ustar mhxusers#include Convert-Binary-C-0.76/tests/include/include/asm/ioctls.h0000644000175000001440000000504611550664624021657 0ustar mhxusers#ifndef __ARCH_I386_IOCTLS_H__ #define __ARCH_I386_IOCTLS_H__ #include /* 0x54 is just a magic number to make these relatively unique ('T') */ #define TCGETS 0x5401 #define TCSETS 0x5402 /* Clashes with SNDCTL_TMR_START sound ioctl */ #define TCSETSW 0x5403 #define TCSETSF 0x5404 #define TCGETA 0x5405 #define TCSETA 0x5406 #define TCSETAW 0x5407 #define TCSETAF 0x5408 #define TCSBRK 0x5409 #define TCXONC 0x540A #define TCFLSH 0x540B #define TIOCEXCL 0x540C #define TIOCNXCL 0x540D #define TIOCSCTTY 0x540E #define TIOCGPGRP 0x540F #define TIOCSPGRP 0x5410 #define TIOCOUTQ 0x5411 #define TIOCSTI 0x5412 #define TIOCGWINSZ 0x5413 #define TIOCSWINSZ 0x5414 #define TIOCMGET 0x5415 #define TIOCMBIS 0x5416 #define TIOCMBIC 0x5417 #define TIOCMSET 0x5418 #define TIOCGSOFTCAR 0x5419 #define TIOCSSOFTCAR 0x541A #define FIONREAD 0x541B #define TIOCINQ FIONREAD #define TIOCLINUX 0x541C #define TIOCCONS 0x541D #define TIOCGSERIAL 0x541E #define TIOCSSERIAL 0x541F #define TIOCPKT 0x5420 #define FIONBIO 0x5421 #define TIOCNOTTY 0x5422 #define TIOCSETD 0x5423 #define TIOCGETD 0x5424 #define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ /* #define TIOCTTYGSTRUCT 0x5426 - Former debugging-only ioctl */ #define TIOCSBRK 0x5427 /* BSD compatibility */ #define TIOCCBRK 0x5428 /* BSD compatibility */ #define TIOCGSID 0x5429 /* Return the session ID of FD */ #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ #define FIONCLEX 0x5450 #define FIOCLEX 0x5451 #define FIOASYNC 0x5452 #define TIOCSERCONFIG 0x5453 #define TIOCSERGWILD 0x5454 #define TIOCSERSWILD 0x5455 #define TIOCGLCKTRMIOS 0x5456 #define TIOCSLCKTRMIOS 0x5457 #define TIOCSERGSTRUCT 0x5458 /* For debugging only */ #define TIOCSERGETLSR 0x5459 /* Get line status register */ #define TIOCSERGETMULTI 0x545A /* Get multiport config */ #define TIOCSERSETMULTI 0x545B /* Set multiport config */ #define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */ #define TIOCGICOUNT 0x545D /* read serial port __inline__ interrupt counts */ #define TIOCGHAYESESP 0x545E /* Get Hayes ESP configuration */ #define TIOCSHAYESESP 0x545F /* Set Hayes ESP configuration */ #define FIOQSIZE 0x5460 /* Used for packet mode */ #define TIOCPKT_DATA 0 #define TIOCPKT_FLUSHREAD 1 #define TIOCPKT_FLUSHWRITE 2 #define TIOCPKT_STOP 4 #define TIOCPKT_START 8 #define TIOCPKT_NOSTOP 16 #define TIOCPKT_DOSTOP 32 #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ #endif Convert-Binary-C-0.76/tests/include/include/asm/socket.h0000644000175000001440000000215411550664624021647 0ustar mhxusers#ifndef _ASM_SOCKET_H #define _ASM_SOCKET_H #include /* For setsockopt(2) */ #define SOL_SOCKET 1 #define SO_DEBUG 1 #define SO_REUSEADDR 2 #define SO_TYPE 3 #define SO_ERROR 4 #define SO_DONTROUTE 5 #define SO_BROADCAST 6 #define SO_SNDBUF 7 #define SO_RCVBUF 8 #define SO_SNDBUFFORCE 32 #define SO_RCVBUFFORCE 33 #define SO_KEEPALIVE 9 #define SO_OOBINLINE 10 #define SO_NO_CHECK 11 #define SO_PRIORITY 12 #define SO_LINGER 13 #define SO_BSDCOMPAT 14 /* To add :#define SO_REUSEPORT 15 */ #define SO_PASSCRED 16 #define SO_PEERCRED 17 #define SO_RCVLOWAT 18 #define SO_SNDLOWAT 19 #define SO_RCVTIMEO 20 #define SO_SNDTIMEO 21 /* Security levels - as per NRL IPv6 - don't actually do anything */ #define SO_SECURITY_AUTHENTICATION 22 #define SO_SECURITY_ENCRYPTION_TRANSPORT 23 #define SO_SECURITY_ENCRYPTION_NETWORK 24 #define SO_BINDTODEVICE 25 /* Socket filtering */ #define SO_ATTACH_FILTER 26 #define SO_DETACH_FILTER 27 #define SO_PEERNAME 28 #define SO_TIMESTAMP 29 #define SCM_TIMESTAMP SO_TIMESTAMP #define SO_ACCEPTCONN 30 #define SO_PEERSEC 31 #endif /* _ASM_SOCKET_H */ Convert-Binary-C-0.76/tests/include/include/gnu/0000755000175000001440000000000011550665107020212 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/gnu/stubs-32.h0000644000175000001440000000120711550664626021752 0ustar mhxusers/* This file is automatically generated. It defines a symbol `__stub_FUNCTION' for each function in the C library which is a stub, meaning it will fail every time called, usually setting errno to ENOSYS. */ #ifdef _LIBC #error Applications may not define the macro _LIBC #endif #define __stub___kernel_cosl #define __stub___kernel_sinl #define __stub___kernel_tanl #define __stub_chflags #define __stub_fattach #define __stub_fchflags #define __stub_fdetach #define __stub_gtty #define __stub_lchmod #define __stub_lutimes #define __stub_revoke #define __stub_setlogin #define __stub_sigreturn #define __stub_sstk #define __stub_stty Convert-Binary-C-0.76/tests/include/include/gnu/stubs.h0000644000175000001440000000047311550664626021534 0ustar mhxusers/* This file selects the right generated file of `__stub_FUNCTION' macros based on the architecture being compiled for. */ #include #if __WORDSIZE == 32 # include #elif __WORDSIZE == 64 # include #else # error "unexpected value for __WORDSIZE macro" #endif Convert-Binary-C-0.76/tests/include/include/rpc/0000755000175000001440000000000011550665107020205 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/rpc/netdb.h0000644000175000001440000000501211550664626021455 0ustar mhxusers/* @(#)netdb.h 2.1 88/07/29 3.9 RPCSRC */ /* * Sun RPC is a product of Sun Microsystems, Inc. and is provided for * unrestricted use provided that this legend is included on all tape * media and as a part of the software program in whole or part. Users * may copy or modify Sun RPC without charge, but are not authorized * to license or distribute it to anyone else except as part of a product or * program developed by the user. * * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. * * Sun RPC is provided with no support and without any obligation on the * part of Sun Microsystems, Inc. to assist in its use, correction, * modification or enhancement. * * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC * OR ANY PART THEREOF. * * In no event will Sun Microsystems, Inc. be liable for any lost revenue * or profits or other special, indirect and consequential damages, even if * Sun has been advised of the possibility of such damages. * * Sun Microsystems, Inc. * 2550 Garcia Avenue * Mountain View, California 94043 */ /* @(#)rpc.h 1.8 87/07/24 SMI */ /* Cleaned up for GNU C library roland@gnu.ai.mit.edu: added multiple inclusion protection and use of . In GNU this file is #include'd by . */ #ifndef _RPC_NETDB_H #define _RPC_NETDB_H 1 #include #define __need_size_t #include __BEGIN_DECLS struct rpcent { char *r_name; /* Name of server for this rpc program. */ char **r_aliases; /* Alias list. */ int r_number; /* RPC program number. */ }; extern void setrpcent (int __stayopen) __THROW; extern void endrpcent (void) __THROW; extern struct rpcent *getrpcbyname (__const char *__name) __THROW; extern struct rpcent *getrpcbynumber (int __number) __THROW; extern struct rpcent *getrpcent (void) __THROW; #ifdef __USE_MISC extern int getrpcbyname_r (__const char *__name, struct rpcent *__result_buf, char *__buffer, size_t __buflen, struct rpcent **__result) __THROW; extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf, char *__buffer, size_t __buflen, struct rpcent **__result) __THROW; extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer, size_t __buflen, struct rpcent **__result) __THROW; #endif __END_DECLS #endif /* rpc/netdb.h */ Convert-Binary-C-0.76/tests/include/include/sys/0000755000175000001440000000000011550665107020237 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/sys/ucontext.h0000644000175000001440000000611411550664627022271 0ustar mhxusers/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_UCONTEXT_H #define _SYS_UCONTEXT_H 1 #include #include /* We need the signal context definitions even if they are not used included in . */ #include /* Type for general register. */ typedef int greg_t; /* Number of general registers. */ #define NGREG 19 /* Container for all general registers. */ typedef greg_t gregset_t[NGREG]; #ifdef __USE_GNU /* Number of each register is the `gregset_t' array. */ enum { REG_GS = 0, # define REG_GS REG_GS REG_FS, # define REG_FS REG_FS REG_ES, # define REG_ES REG_ES REG_DS, # define REG_DS REG_DS REG_EDI, # define REG_EDI REG_EDI REG_ESI, # define REG_ESI REG_ESI REG_EBP, # define REG_EBP REG_EBP REG_ESP, # define REG_ESP REG_ESP REG_EBX, # define REG_EBX REG_EBX REG_EDX, # define REG_EDX REG_EDX REG_ECX, # define REG_ECX REG_ECX REG_EAX, # define REG_EAX REG_EAX REG_TRAPNO, # define REG_TRAPNO REG_TRAPNO REG_ERR, # define REG_ERR REG_ERR REG_EIP, # define REG_EIP REG_EIP REG_CS, # define REG_CS REG_CS REG_EFL, # define REG_EFL REG_EFL REG_UESP, # define REG_UESP REG_UESP REG_SS # define REG_SS REG_SS }; #endif /* Definitions taken from the kernel headers. */ struct _libc_fpreg { unsigned short int significand[4]; unsigned short int exponent; }; struct _libc_fpstate { unsigned long int cw; unsigned long int sw; unsigned long int tag; unsigned long int ipoff; unsigned long int cssel; unsigned long int dataoff; unsigned long int datasel; struct _libc_fpreg _st[8]; unsigned long int status; }; /* Structure to describe FPU registers. */ typedef struct _libc_fpstate *fpregset_t; /* Context to describe whole processor state. */ typedef struct { gregset_t gregs; /* Due to Linux's history we have to use a pointer here. The SysV/i386 ABI requires a struct with the values. */ fpregset_t fpregs; unsigned long int oldmask; unsigned long int cr2; } mcontext_t; /* Userlevel context. */ typedef struct ucontext { unsigned long int uc_flags; struct ucontext *uc_link; stack_t uc_stack; mcontext_t uc_mcontext; __sigset_t uc_sigmask; struct _libc_fpstate __fpregs_mem; } ucontext_t; #endif /* sys/ucontext.h */ Convert-Binary-C-0.76/tests/include/include/sys/resource.h0000644000175000001440000000723011550664627022247 0ustar mhxusers/* Copyright (C) 1992,94,1996-2000,2002,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_RESOURCE_H #define _SYS_RESOURCE_H 1 #include /* Get the system-dependent definitions of structures and bit values. */ #include #ifndef __id_t_defined typedef __id_t id_t; # define __id_t_defined #endif __BEGIN_DECLS /* The X/Open standard defines that all the functions below must use `int' as the type for the first argument. When we are compiling with GNU extensions we change this slightly to provide better error checking. */ #if defined __USE_GNU && !defined __cplusplus typedef enum __rlimit_resource __rlimit_resource_t; typedef enum __rusage_who __rusage_who_t; typedef enum __priority_which __priority_which_t; #else typedef int __rlimit_resource_t; typedef int __rusage_who_t; typedef int __priority_which_t; #endif /* Put the soft and hard limits for RESOURCE in *RLIMITS. Returns 0 if successful, -1 if not (and sets errno). */ #ifndef __USE_FILE_OFFSET64 extern int getrlimit (__rlimit_resource_t __resource, struct rlimit *__rlimits) __THROW; #else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (getrlimit, (__rlimit_resource_t __resource, struct rlimit *__rlimits), getrlimit64); # else # define getrlimit getrlimit64 # endif #endif #ifdef __USE_LARGEFILE64 extern int getrlimit64 (__rlimit_resource_t __resource, struct rlimit64 *__rlimits) __THROW; #endif /* Set the soft and hard limits for RESOURCE to *RLIMITS. Only the super-user can increase hard limits. Return 0 if successful, -1 if not (and sets errno). */ #ifndef __USE_FILE_OFFSET64 extern int setrlimit (__rlimit_resource_t __resource, __const struct rlimit *__rlimits) __THROW; #else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (setrlimit, (__rlimit_resource_t __resource, __const struct rlimit *__rlimits), setrlimit64); # else # define setrlimit setrlimit64 # endif #endif #ifdef __USE_LARGEFILE64 extern int setrlimit64 (__rlimit_resource_t __resource, __const struct rlimit64 *__rlimits) __THROW; #endif /* Return resource usage information on process indicated by WHO and put it in *USAGE. Returns 0 for success, -1 for failure. */ extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __THROW; /* Return the highest priority of any process specified by WHICH and WHO (see above); if WHO is zero, the current process, process group, or user (as specified by WHO) is used. A lower priority number means higher priority. Priorities range from PRIO_MIN to PRIO_MAX (above). */ extern int getpriority (__priority_which_t __which, id_t __who) __THROW; /* Set the priority of all processes specified by WHICH and WHO (see above) to PRIO. Returns 0 on success, -1 on errors. */ extern int setpriority (__priority_which_t __which, id_t __who, int __prio) __THROW; __END_DECLS #endif /* sys/resource.h */ Convert-Binary-C-0.76/tests/include/include/sys/ipc.h0000644000175000001440000000325211550664627021173 0ustar mhxusers/* Copyright (C) 1995,1996,1997,1999,2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_IPC_H #define _SYS_IPC_H 1 #include #if !defined __USE_SVID && !defined __USE_XOPEN && __GNUC__ >= 2 # warning "Files using this header must be compiled with _SVID_SOURCE or _XOPEN_SOURCE" #endif /* Get system dependent definition of `struct ipc_perm' and more. */ #include #include #ifndef __uid_t_defined typedef __uid_t uid_t; # define __uid_t_defined #endif #ifndef __gid_t_defined typedef __gid_t gid_t; # define __gid_t_defined #endif #ifndef __mode_t_defined typedef __mode_t mode_t; # define __mode_t_defined #endif #ifndef __key_t_defined typedef __key_t key_t; # define __key_t_defined #endif __BEGIN_DECLS /* Generates key for System V style IPC. */ extern key_t ftok (__const char *__pathname, int __proj_id) __THROW; __END_DECLS #endif /* sys/ipc.h */ Convert-Binary-C-0.76/tests/include/include/sys/sem.h0000644000175000001440000000411011550664627021176 0ustar mhxusers/* Copyright (C) 1995-1999, 2000, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_SEM_H #define _SYS_SEM_H 1 #include #define __need_size_t #include /* Get common definition of System V style IPC. */ #include /* Get system dependent definition of `struct semid_ds' and more. */ #include #ifdef __USE_GNU # define __need_timespec # include #endif /* The following System V style IPC functions implement a semaphore handling. The definition is found in XPG2. */ /* Structure used for argument to `semop' to describe operations. */ struct sembuf { unsigned short int sem_num; /* semaphore number */ short int sem_op; /* semaphore operation */ short int sem_flg; /* operation flag */ }; __BEGIN_DECLS /* Semaphore control operation. */ extern int semctl (int __semid, int __semnum, int __cmd, ...) __THROW; /* Get semaphore. */ extern int semget (key_t __key, int __nsems, int __semflg) __THROW; /* Operate on semaphore. */ extern int semop (int __semid, struct sembuf *__sops, size_t __nsops) __THROW; #ifdef __USE_GNU /* Operate on semaphore with timeout. */ extern int semtimedop (int __semid, struct sembuf *__sops, size_t __nsops, __const struct timespec *__timeout) __THROW; #endif __END_DECLS #endif /* sys/sem.h */ Convert-Binary-C-0.76/tests/include/include/sys/uio.h0000644000175000001440000000374011550664627021216 0ustar mhxusers/* Copyright (C) 1991, 92, 96, 97, 98, 99, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_UIO_H #define _SYS_UIO_H 1 #include #include __BEGIN_DECLS /* This file defines `struct iovec'. */ #include /* Read data from file descriptor FD, and put the result in the buffers described by IOVEC, which is a vector of COUNT `struct iovec's. The buffers are filled in the order specified. Operates just like `read' (see ) except that data are put in IOVEC instead of a contiguous buffer. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count); /* Write data pointed by the buffers described by IOVEC, which is a vector of COUNT `struct iovec's, to file descriptor FD. The data is written in the order specified. Operates just like `write' (see ) except that the data are taken from IOVEC instead of a contiguous buffer. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count); __END_DECLS #endif /* sys/uio.h */ Convert-Binary-C-0.76/tests/include/include/sys/ttydefaults.h0000644000175000001440000000676011550664627022777 0ustar mhxusers/*- * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. * All or some portions of this file are derived from material licensed * to the University of California by American Telephone and Telegraph * Co. or Unix System Laboratories, Inc. and are reproduced herein with * the permission of UNIX System Laboratories, Inc. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @(#)ttydefaults.h 8.4 (Berkeley) 1/21/94 */ /* * System wide defaults for terminal state. Linux version. */ #ifndef _SYS_TTYDEFAULTS_H_ #define _SYS_TTYDEFAULTS_H_ /* * Defaults on "first" open. */ #define TTYDEF_IFLAG (BRKINT | ISTRIP | ICRNL | IMAXBEL | IXON | IXANY) #define TTYDEF_OFLAG (OPOST | ONLCR | XTABS) #define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL) #define TTYDEF_CFLAG (CREAD | CS7 | PARENB | HUPCL) #define TTYDEF_SPEED (B9600) /* * Control Character Defaults */ #define CTRL(x) (x&037) #define CEOF CTRL('d') #ifdef _POSIX_VDISABLE # define CEOL _POSIX_VDISABLE #else # define CEOL '\0' /* XXX avoid _POSIX_VDISABLE */ #endif #define CERASE 0177 #define CINTR CTRL('c') #ifdef _POSIX_VDISABLE # define CSTATUS _POSIX_VDISABLE #else # define CSTATUS '\0' /* XXX avoid _POSIX_VDISABLE */ #endif #define CKILL CTRL('u') #define CMIN 1 #define CQUIT 034 /* FS, ^\ */ #define CSUSP CTRL('z') #define CTIME 0 #define CDSUSP CTRL('y') #define CSTART CTRL('q') #define CSTOP CTRL('s') #define CLNEXT CTRL('v') #define CDISCARD CTRL('o') #define CWERASE CTRL('w') #define CREPRINT CTRL('r') #define CEOT CEOF /* compat */ #define CBRK CEOL #define CRPRNT CREPRINT #define CFLUSH CDISCARD /* PROTECTED INCLUSION ENDS HERE */ #endif /* !_SYS_TTYDEFAULTS_H_ */ /* * #define TTYDEFCHARS to include an array of default control characters. */ #ifdef TTYDEFCHARS cc_t ttydefchars[NCCS] = { CEOF, CEOL, CEOL, CERASE, CWERASE, CKILL, CREPRINT, _POSIX_VDISABLE, CINTR, CQUIT, CSUSP, CDSUSP, CSTART, CSTOP, CLNEXT, CDISCARD, CMIN, CTIME, CSTATUS, _POSIX_VDISABLE }; #undef TTYDEFCHARS #endif Convert-Binary-C-0.76/tests/include/include/sys/times.h0000644000175000001440000000323411550664627021541 0ustar mhxusers/* Copyright (C) 1991, 1992, 1996, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * POSIX Standard: 4.5.2 Process Times */ #ifndef _SYS_TIMES_H #define _SYS_TIMES_H 1 #include #define __need_clock_t #include __BEGIN_DECLS /* Structure describing CPU time used by a process and its children. */ struct tms { clock_t tms_utime; /* User CPU time. */ clock_t tms_stime; /* System CPU time. */ clock_t tms_cutime; /* User CPU time of dead children. */ clock_t tms_cstime; /* System CPU time of dead children. */ }; /* Store the CPU time used by this process and all its dead children (and their dead children) in BUFFER. Return the elapsed real time, or (clock_t) -1 for errors. All times are in CLK_TCKths of a second. */ extern clock_t times (struct tms *__buffer) __THROW; __END_DECLS #endif /* sys/times.h */ Convert-Binary-C-0.76/tests/include/include/sys/file.h0000644000175000001440000000333411550664627021340 0ustar mhxusers/* Copyright (C) 1991, 92, 96, 97, 98, 99 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_FILE_H #define _SYS_FILE_H 1 #include #ifndef _FCNTL_H # include #endif __BEGIN_DECLS /* Alternate names for values for the WHENCE argument to `lseek'. These are the same as SEEK_SET, SEEK_CUR, and SEEK_END, respectively. */ #ifndef L_SET # define L_SET 0 /* Seek from beginning of file. */ # define L_INCR 1 /* Seek from current position. */ # define L_XTND 2 /* Seek from end of file. */ #endif /* Operations for the `flock' call. */ #define LOCK_SH 1 /* Shared lock. */ #define LOCK_EX 2 /* Exclusive lock. */ #define LOCK_UN 8 /* Unlock. */ /* Can be OR'd in to one of the above. */ #define LOCK_NB 4 /* Don't block when locking. */ /* Apply or remove an advisory lock, according to OPERATION, on the file FD refers to. */ extern int flock (int __fd, int __operation) __THROW; __END_DECLS #endif /* sys/file.h */ Convert-Binary-C-0.76/tests/include/include/sys/select.h0000644000175000001440000001007711550664627021702 0ustar mhxusers/* `fd_set' type and related macros, and `select'/`pselect' declarations. Copyright (C) 1996,97,98,99,2000,01,02,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* POSIX 1003.1g: 6.2 Select from File Descriptor Sets */ #ifndef _SYS_SELECT_H #define _SYS_SELECT_H 1 #include /* Get definition of needed basic types. */ #include /* Get __FD_* definitions. */ #include /* Get __sigset_t. */ #include #ifndef __sigset_t_defined # define __sigset_t_defined typedef __sigset_t sigset_t; #endif /* Get definition of timer specification structures. */ #define __need_time_t #define __need_timespec #include #define __need_timeval #include #ifndef __suseconds_t_defined typedef __suseconds_t suseconds_t; # define __suseconds_t_defined #endif /* The fd_set member is required to be an array of longs. */ typedef long int __fd_mask; /* Some versions of define these macros. */ #undef __NFDBITS #undef __FDELT #undef __FDMASK /* It's easier to assume 8-bit bytes than to get CHAR_BIT. */ #define __NFDBITS (8 * sizeof (__fd_mask)) #define __FDELT(d) ((d) / __NFDBITS) #define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS)) /* fd_set for select and pselect. */ typedef struct { /* XPG4.2 requires this member name. Otherwise avoid the name from the global namespace. */ #ifdef __USE_XOPEN __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; # define __FDS_BITS(set) ((set)->fds_bits) #else __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS]; # define __FDS_BITS(set) ((set)->__fds_bits) #endif } fd_set; /* Maximum number of file descriptors in `fd_set'. */ #define FD_SETSIZE __FD_SETSIZE #ifdef __USE_MISC /* Sometimes the fd_set member is assumed to have this type. */ typedef __fd_mask fd_mask; /* Number of bits per word of `fd_set' (some code assumes this is 32). */ # define NFDBITS __NFDBITS #endif /* Access macros for `fd_set'. */ #define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp) #define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp) #define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp) #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) __BEGIN_DECLS /* Check the first NFDS descriptors each in READFDS (if not NULL) for read readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out after waiting the interval specified therein. Returns the number of ready descriptors, or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern int select (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout); #ifdef __USE_XOPEN2K /* Same as above only that the TIMEOUT value is given with higher resolution and a sigmask which is been set temporarily. This version should be used. This function is a cancellation point and therefore not marked with __THROW. */ extern int pselect (int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask); #endif __END_DECLS #endif /* sys/select.h */ Convert-Binary-C-0.76/tests/include/include/sys/types.h0000644000175000001440000001516711550664627021574 0ustar mhxusers/* Copyright (C) 1991,1992,1994,1995,1996,1997,1998,1999,2000,2001,2002,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * POSIX Standard: 2.6 Primitive System Data Types */ #ifndef _SYS_TYPES_H #define _SYS_TYPES_H 1 #include __BEGIN_DECLS #include #ifdef __USE_BSD # ifndef __u_char_defined typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; # define __u_char_defined # endif #endif typedef __loff_t loff_t; #ifndef __ino_t_defined # ifndef __USE_FILE_OFFSET64 typedef __ino_t ino_t; # else typedef __ino64_t ino_t; # endif # define __ino_t_defined #endif #if defined __USE_LARGEFILE64 && !defined __ino64_t_defined typedef __ino64_t ino64_t; # define __ino64_t_defined #endif #ifndef __dev_t_defined typedef __dev_t dev_t; # define __dev_t_defined #endif #ifndef __gid_t_defined typedef __gid_t gid_t; # define __gid_t_defined #endif #ifndef __mode_t_defined typedef __mode_t mode_t; # define __mode_t_defined #endif #ifndef __nlink_t_defined typedef __nlink_t nlink_t; # define __nlink_t_defined #endif #ifndef __uid_t_defined typedef __uid_t uid_t; # define __uid_t_defined #endif #ifndef __off_t_defined # ifndef __USE_FILE_OFFSET64 typedef __off_t off_t; # else typedef __off64_t off_t; # endif # define __off_t_defined #endif #if defined __USE_LARGEFILE64 && !defined __off64_t_defined typedef __off64_t off64_t; # define __off64_t_defined #endif #ifndef __pid_t_defined typedef __pid_t pid_t; # define __pid_t_defined #endif #if (defined __USE_SVID || defined __USE_XOPEN) && !defined __id_t_defined typedef __id_t id_t; # define __id_t_defined #endif #ifndef __ssize_t_defined typedef __ssize_t ssize_t; # define __ssize_t_defined #endif #ifdef __USE_BSD # ifndef __daddr_t_defined typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; # define __daddr_t_defined # endif #endif #if (defined __USE_SVID || defined __USE_XOPEN) && !defined __key_t_defined typedef __key_t key_t; # define __key_t_defined #endif #ifdef __USE_XOPEN # define __need_clock_t #endif #define __need_time_t #define __need_timer_t #define __need_clockid_t #include #ifdef __USE_XOPEN # ifndef __useconds_t_defined typedef __useconds_t useconds_t; # define __useconds_t_defined # endif # ifndef __suseconds_t_defined typedef __suseconds_t suseconds_t; # define __suseconds_t_defined # endif #endif #define __need_size_t #include #ifdef __USE_MISC /* Old compatibility names for C types. */ typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; #endif /* These size-specific names are used by some of the inet code. */ #if !__GNUC_PREREQ (2, 7) /* These types are defined by the ISO C99 header . */ # ifndef __int8_t_defined # define __int8_t_defined typedef char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE == 64 typedef long int int64_t; # elif __GLIBC_HAVE_LONG_LONG __extension__ typedef long long int int64_t; # endif # endif /* But these were defined by ISO C without the first `_'. */ typedef unsigned char u_int8_t; typedef unsigned short int u_int16_t; typedef unsigned int u_int32_t; # if __WORDSIZE == 64 typedef unsigned long int u_int64_t; # elif __GLIBC_HAVE_LONG_LONG __extension__ typedef unsigned long long int u_int64_t; # endif typedef int register_t; #else /* For GCC 2.7 and later, we can use specific type-size attributes. */ # define __intN_t(N, MODE) \ typedef int int##N##_t __attribute__ ((__mode__ (MODE))) # define __u_intN_t(N, MODE) \ typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE))) # ifndef __int8_t_defined # define __int8_t_defined __intN_t (8, __QI__); __intN_t (16, __HI__); __intN_t (32, __SI__); __intN_t (64, __DI__); # endif __u_intN_t (8, __QI__); __u_intN_t (16, __HI__); __u_intN_t (32, __SI__); __u_intN_t (64, __DI__); typedef int register_t __attribute__ ((__mode__ (__word__))); /* Some code from BIND tests this macro to see if the types above are defined. */ #endif #define __BIT_TYPES_DEFINED__ 1 #ifdef __USE_BSD /* In BSD is expected to define BYTE_ORDER. */ # include /* It also defines `fd_set' and the FD_* macros for `select'. */ # include /* BSD defines these symbols, so we follow. */ # include #endif /* Use BSD. */ #if defined __USE_UNIX98 && !defined __blksize_t_defined typedef __blksize_t blksize_t; # define __blksize_t_defined #endif /* Types from the Large File Support interface. */ #ifndef __USE_FILE_OFFSET64 # ifndef __blkcnt_t_defined typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */ # define __blkcnt_t_defined # endif # ifndef __fsblkcnt_t_defined typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks. */ # define __fsblkcnt_t_defined # endif # ifndef __fsfilcnt_t_defined typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes. */ # define __fsfilcnt_t_defined # endif #else # ifndef __blkcnt_t_defined typedef __blkcnt64_t blkcnt_t; /* Type to count number of disk blocks. */ # define __blkcnt_t_defined # endif # ifndef __fsblkcnt_t_defined typedef __fsblkcnt64_t fsblkcnt_t; /* Type to count file system blocks. */ # define __fsblkcnt_t_defined # endif # ifndef __fsfilcnt_t_defined typedef __fsfilcnt64_t fsfilcnt_t; /* Type to count file system inodes. */ # define __fsfilcnt_t_defined # endif #endif #ifdef __USE_LARGEFILE64 typedef __blkcnt64_t blkcnt64_t; /* Type to count number of disk blocks. */ typedef __fsblkcnt64_t fsblkcnt64_t; /* Type to count file system blocks. */ typedef __fsfilcnt64_t fsfilcnt64_t; /* Type to count file system inodes. */ #endif /* Now add the thread types. */ #if defined __USE_POSIX199506 || defined __USE_UNIX98 # include #endif __END_DECLS #endif /* sys/types.h */ Convert-Binary-C-0.76/tests/include/include/sys/stat.h0000644000175000001440000003730411550664627021400 0ustar mhxusers/* Copyright (C) 1991,1992,1995-2004,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * POSIX Standard: 5.6 File Characteristics */ #ifndef _SYS_STAT_H #define _SYS_STAT_H 1 #include #include /* For __mode_t and __dev_t. */ #if defined __USE_XOPEN || defined __USE_MISC # if defined __USE_XOPEN || defined __USE_XOPEN2K # define __need_time_t # endif # ifdef __USE_MISC # define __need_timespec # endif # include /* For time_t resp. timespec. */ #endif #if defined __USE_XOPEN || defined __USE_XOPEN2K /* The Single Unix specification says that some more types are available here. */ # ifndef __dev_t_defined typedef __dev_t dev_t; # define __dev_t_defined # endif # ifndef __gid_t_defined typedef __gid_t gid_t; # define __gid_t_defined # endif # ifndef __ino_t_defined # ifndef __USE_FILE_OFFSET64 typedef __ino_t ino_t; # else typedef __ino64_t ino_t; # endif # define __ino_t_defined # endif # ifndef __mode_t_defined typedef __mode_t mode_t; # define __mode_t_defined # endif # ifndef __nlink_t_defined typedef __nlink_t nlink_t; # define __nlink_t_defined # endif # ifndef __off_t_defined # ifndef __USE_FILE_OFFSET64 typedef __off_t off_t; # else typedef __off64_t off_t; # endif # define __off_t_defined # endif # ifndef __uid_t_defined typedef __uid_t uid_t; # define __uid_t_defined # endif #endif /* X/Open */ #ifdef __USE_UNIX98 # ifndef __blkcnt_t_defined # ifndef __USE_FILE_OFFSET64 typedef __blkcnt_t blkcnt_t; # else typedef __blkcnt64_t blkcnt_t; # endif # define __blkcnt_t_defined # endif # ifndef __blksize_t_defined typedef __blksize_t blksize_t; # define __blksize_t_defined # endif #endif /* Unix98 */ __BEGIN_DECLS #include #if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN # define S_IFMT __S_IFMT # define S_IFDIR __S_IFDIR # define S_IFCHR __S_IFCHR # define S_IFBLK __S_IFBLK # define S_IFREG __S_IFREG # ifdef __S_IFIFO # define S_IFIFO __S_IFIFO # endif # ifdef __S_IFLNK # define S_IFLNK __S_IFLNK # endif # if (defined __USE_BSD || defined __USE_MISC || defined __USE_UNIX98) \ && defined __S_IFSOCK # define S_IFSOCK __S_IFSOCK # endif #endif /* Test macros for file types. */ #define __S_ISTYPE(mode, mask) (((mode) & __S_IFMT) == (mask)) #define S_ISDIR(mode) __S_ISTYPE((mode), __S_IFDIR) #define S_ISCHR(mode) __S_ISTYPE((mode), __S_IFCHR) #define S_ISBLK(mode) __S_ISTYPE((mode), __S_IFBLK) #define S_ISREG(mode) __S_ISTYPE((mode), __S_IFREG) #ifdef __S_IFIFO # define S_ISFIFO(mode) __S_ISTYPE((mode), __S_IFIFO) #endif #ifdef __S_IFLNK # define S_ISLNK(mode) __S_ISTYPE((mode), __S_IFLNK) #endif #if defined __USE_BSD && !defined __S_IFLNK # define S_ISLNK(mode) 0 #endif #if (defined __USE_BSD || defined __USE_UNIX98) \ && defined __S_IFSOCK # define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK) #endif /* These are from POSIX.1b. If the objects are not implemented using separate distinct file types, the macros always will evaluate to zero. Unlike the other S_* macros the following three take a pointer to a `struct stat' object as the argument. */ #ifdef __USE_POSIX199309 # define S_TYPEISMQ(buf) __S_TYPEISMQ(buf) # define S_TYPEISSEM(buf) __S_TYPEISSEM(buf) # define S_TYPEISSHM(buf) __S_TYPEISSHM(buf) #endif /* Protection bits. */ #define S_ISUID __S_ISUID /* Set user ID on execution. */ #define S_ISGID __S_ISGID /* Set group ID on execution. */ #if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN /* Save swapped text after use (sticky bit). This is pretty well obsolete. */ # define S_ISVTX __S_ISVTX #endif #define S_IRUSR __S_IREAD /* Read by owner. */ #define S_IWUSR __S_IWRITE /* Write by owner. */ #define S_IXUSR __S_IEXEC /* Execute by owner. */ /* Read, write, and execute by owner. */ #define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC) #if defined __USE_MISC && defined __USE_BSD # define S_IREAD S_IRUSR # define S_IWRITE S_IWUSR # define S_IEXEC S_IXUSR #endif #define S_IRGRP (S_IRUSR >> 3) /* Read by group. */ #define S_IWGRP (S_IWUSR >> 3) /* Write by group. */ #define S_IXGRP (S_IXUSR >> 3) /* Execute by group. */ /* Read, write, and execute by group. */ #define S_IRWXG (S_IRWXU >> 3) #define S_IROTH (S_IRGRP >> 3) /* Read by others. */ #define S_IWOTH (S_IWGRP >> 3) /* Write by others. */ #define S_IXOTH (S_IXGRP >> 3) /* Execute by others. */ /* Read, write, and execute by others. */ #define S_IRWXO (S_IRWXG >> 3) #ifdef __USE_BSD /* Macros for common mode bit masks. */ # define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */ # define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)/* 07777 */ # define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)/* 0666*/ # define S_BLKSIZE 512 /* Block size for `st_blocks'. */ #endif #ifndef __USE_FILE_OFFSET64 /* Get file attributes for FILE and put them in BUF. */ extern int stat (__const char *__restrict __file, struct stat *__restrict __buf) __THROW __nonnull ((1, 2)); /* Get file attributes for the file, device, pipe, or socket that file descriptor FD is open on and put them in BUF. */ extern int fstat (int __fd, struct stat *__buf) __THROW __nonnull ((2)); #else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (stat, (__const char *__restrict __file, struct stat *__restrict __buf), stat64) __nonnull ((1, 2)); extern int __REDIRECT_NTH (fstat, (int __fd, struct stat *__buf), fstat64) __nonnull ((2)); # else # define stat stat64 # define fstat fstat64 # endif #endif #ifdef __USE_LARGEFILE64 extern int stat64 (__const char *__restrict __file, struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2)); extern int fstat64 (int __fd, struct stat64 *__buf) __THROW __nonnull ((2)); #endif #ifdef __USE_ATFILE /* Similar to stat, get the attributes for FILE and put them in BUF. Relative path names are interpreted relative to FD unless FD is AT_FDCWD. */ # ifndef __USE_FILE_OFFSET64 extern int fstatat (int __fd, __const char *__restrict __file, struct stat *__restrict __buf, int __flag) __THROW __nonnull ((2, 3)); # else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (fstatat, (int __fd, __const char *__restrict __file, struct stat *__restrict __buf, int __flag), fstatat64) __nonnull ((2, 3)); # else # define fstatat fstatat64 # endif # endif extern int fstatat64 (int __fd, __const char *__restrict __file, struct stat64 *__restrict __buf, int __flag) __THROW __nonnull ((2, 3)); #endif #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED # ifndef __USE_FILE_OFFSET64 /* Get file attributes about FILE and put them in BUF. If FILE is a symbolic link, do not follow it. */ extern int lstat (__const char *__restrict __file, struct stat *__restrict __buf) __THROW __nonnull ((1, 2)); # else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (lstat, (__const char *__restrict __file, struct stat *__restrict __buf), lstat64) __nonnull ((1, 2)); # else # define lstat lstat64 # endif # endif # ifdef __USE_LARGEFILE64 extern int lstat64 (__const char *__restrict __file, struct stat64 *__restrict __buf) __THROW __nonnull ((1, 2)); # endif #endif /* Set file access permissions for FILE to MODE. If FILE is a symbolic link, this affects its target instead. */ extern int chmod (__const char *__file, __mode_t __mode) __THROW __nonnull ((1)); #ifdef __USE_BSD /* Set file access permissions for FILE to MODE. If FILE is a symbolic link, this affects the link itself rather than its target. */ extern int lchmod (__const char *__file, __mode_t __mode) __THROW __nonnull ((1)); #endif /* Set file access permissions of the file FD is open on to MODE. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED extern int fchmod (int __fd, __mode_t __mode) __THROW; #endif #ifdef __USE_ATFILE /* Set file access permissions of FILE relative to the directory FD is open on. */ extern int fchmodat (int __fd, __const char *__file, __mode_t mode, int __flag) __THROW __nonnull ((2)) __wur; #endif /* Use ATFILE. */ /* Set the file creation mask of the current process to MASK, and return the old creation mask. */ extern __mode_t umask (__mode_t __mask) __THROW; #ifdef __USE_GNU /* Get the current `umask' value without changing it. This function is only available under the GNU Hurd. */ extern __mode_t getumask (void) __THROW; #endif /* Create a new directory named PATH, with permission bits MODE. */ extern int mkdir (__const char *__path, __mode_t __mode) __THROW __nonnull ((1)); #ifdef __USE_ATFILE /* Like mkdir, create a new directory with permission bits MODE. But interpret relative PATH names relative to the directory associated with FD. */ extern int mkdirat (int __fd, __const char *__path, __mode_t __mode) __THROW __nonnull ((2)); #endif /* Create a device file named PATH, with permission and special bits MODE and device number DEV (which can be constructed from major and minor device numbers with the `makedev' macro above). */ #if defined __USE_MISC || defined __USE_BSD || defined __USE_XOPEN_EXTENDED extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) __THROW __nonnull ((1)); #endif #ifdef __USE_ATFILE /* Like mknod, create a new device file with permission bits MODE and device number DEV. But interpret relative PATH names relative to the directory associated with FD. */ extern int mknodat (int __fd, __const char *__path, __mode_t __mode, __dev_t __dev) __THROW __nonnull ((2)); #endif /* Create a new FIFO named PATH, with permission bits MODE. */ extern int mkfifo (__const char *__path, __mode_t __mode) __THROW __nonnull ((1)); #ifdef __USE_ATFILE /* Like mkfifo, create a new FIFO with permission bits MODE. But interpret relative PATH names relative to the directory associated with FD. */ extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode) __THROW __nonnull ((2)); #endif /* To allow the `struct stat' structure and the file type `mode_t' bits to vary without changing shared library major version number, the `stat' family of functions and `mknod' are in fact inline wrappers around calls to `xstat', `fxstat', `lxstat', and `xmknod', which all take a leading version-number argument designating the data structure and bits used. defines _STAT_VER with the version number corresponding to `struct stat' as defined in that file; and _MKNOD_VER with the version number corresponding to the S_IF* macros defined therein. It is arranged that when not inlined these function are always statically linked; that way a dynamically-linked executable always encodes the version number corresponding to the data structures it uses, so the `x' functions in the shared library can adapt without needing to recompile all callers. */ #ifndef _STAT_VER # define _STAT_VER 0 #endif #ifndef _MKNOD_VER # define _MKNOD_VER 0 #endif /* Wrappers for stat and mknod system calls. */ #ifndef __USE_FILE_OFFSET64 extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) __THROW __nonnull ((3)); extern int __xstat (int __ver, __const char *__filename, struct stat *__stat_buf) __THROW __nonnull ((2, 3)); extern int __lxstat (int __ver, __const char *__filename, struct stat *__stat_buf) __THROW __nonnull ((2, 3)); extern int __fxstatat (int __ver, int __fildes, __const char *__filename, struct stat *__stat_buf, int __flag) __THROW __nonnull ((3, 4)); #else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (__fxstat, (int __ver, int __fildes, struct stat *__stat_buf), __fxstat64) __nonnull ((3)); extern int __REDIRECT_NTH (__xstat, (int __ver, __const char *__filename, struct stat *__stat_buf), __xstat64) __nonnull ((2, 3)); extern int __REDIRECT_NTH (__lxstat, (int __ver, __const char *__filename, struct stat *__stat_buf), __lxstat64) __nonnull ((2, 3)); extern int __REDIRECT_NTH (__fxstatat, (int __ver, int __fildes, __const char *__filename, struct stat *__stat_buf, int __flag), __fxstatat64) __nonnull ((3, 4)); # else # define __fxstat __fxstat64 # define __xstat __xstat64 # define __lxstat __lxstat64 # endif #endif #ifdef __USE_LARGEFILE64 extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) __THROW __nonnull ((3)); extern int __xstat64 (int __ver, __const char *__filename, struct stat64 *__stat_buf) __THROW __nonnull ((2, 3)); extern int __lxstat64 (int __ver, __const char *__filename, struct stat64 *__stat_buf) __THROW __nonnull ((2, 3)); extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename, struct stat64 *__stat_buf, int __flag) __THROW __nonnull ((3, 4)); #endif extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, __dev_t *__dev) __THROW __nonnull ((2, 4)); extern int __xmknodat (int __ver, int __fd, __const char *__path, __mode_t __mode, __dev_t *__dev) __THROW __nonnull ((3, 5)); #if defined __GNUC__ && __GNUC__ >= 2 /* Inlined versions of the real stat and mknod functions. */ extern __inline__ int __NTH (stat (__const char *__path, struct stat *__statbuf)) { return __xstat (_STAT_VER, __path, __statbuf); } # if defined __USE_BSD || defined __USE_XOPEN_EXTENDED extern __inline__ int __NTH (lstat (__const char *__path, struct stat *__statbuf)) { return __lxstat (_STAT_VER, __path, __statbuf); } # endif extern __inline__ int __NTH (fstat (int __fd, struct stat *__statbuf)) { return __fxstat (_STAT_VER, __fd, __statbuf); } # ifdef __USE_ATFILE extern __inline__ int __NTH (fstatat (int __fd, __const char *__filename, struct stat *__statbuf, int __flag)) { return __fxstatat (_STAT_VER, __fd, __filename, __statbuf, __flag); } # endif # if defined __USE_MISC || defined __USE_BSD extern __inline__ int __NTH (mknod (__const char *__path, __mode_t __mode, __dev_t __dev)) { return __xmknod (_MKNOD_VER, __path, __mode, &__dev); } # endif # ifdef __USE_ATFILE extern __inline__ int __NTH (mknodat (int __fd, __const char *__path, __mode_t __mode, __dev_t __dev)) { return __xmknodat (_MKNOD_VER, __fd, __path, __mode, &__dev); } # endif # if defined __USE_LARGEFILE64 \ && (! defined __USE_FILE_OFFSET64 \ || (defined __REDIRECT_NTH && defined __OPTIMIZE__)) extern __inline__ int __NTH (stat64 (__const char *__path, struct stat64 *__statbuf)) { return __xstat64 (_STAT_VER, __path, __statbuf); } # if defined __USE_BSD || defined __USE_XOPEN_EXTENDED extern __inline__ int __NTH (lstat64 (__const char *__path, struct stat64 *__statbuf)) { return __lxstat64 (_STAT_VER, __path, __statbuf); } # endif extern __inline__ int __NTH (fstat64 (int __fd, struct stat64 *__statbuf)) { return __fxstat64 (_STAT_VER, __fd, __statbuf); } # ifdef __USE_GNU extern __inline__ int __NTH (fstatat64 (int __fd, __const char *__filename, struct stat64 *__statbuf, int __flag)) { return __fxstatat64 (_STAT_VER, __fd, __filename, __statbuf, __flag); } # endif # endif #endif __END_DECLS #endif /* sys/stat.h */ Convert-Binary-C-0.76/tests/include/include/sys/time.h0000644000175000001440000001525411550664627021363 0ustar mhxusers/* Copyright (C) 1991-1994,1996-2002,2003,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_TIME_H #define _SYS_TIME_H 1 #include #include #define __need_time_t #include #define __need_timeval #include #include #ifndef __suseconds_t_defined typedef __suseconds_t suseconds_t; # define __suseconds_t_defined #endif __BEGIN_DECLS #ifdef __USE_GNU /* Macros for converting between `struct timeval' and `struct timespec'. */ # define TIMEVAL_TO_TIMESPEC(tv, ts) { \ (ts)->tv_sec = (tv)->tv_sec; \ (ts)->tv_nsec = (tv)->tv_usec * 1000; \ } # define TIMESPEC_TO_TIMEVAL(tv, ts) { \ (tv)->tv_sec = (ts)->tv_sec; \ (tv)->tv_usec = (ts)->tv_nsec / 1000; \ } #endif #ifdef __USE_BSD /* Structure crudely representing a timezone. This is obsolete and should never be used. */ struct timezone { int tz_minuteswest; /* Minutes west of GMT. */ int tz_dsttime; /* Nonzero if DST is ever in effect. */ }; typedef struct timezone *__restrict __timezone_ptr_t; #else typedef void *__restrict __timezone_ptr_t; #endif /* Get the current time of day and timezone information, putting it into *TV and *TZ. If TZ is NULL, *TZ is not filled. Returns 0 on success, -1 on errors. NOTE: This form of timezone information is obsolete. Use the functions and variables declared in instead. */ extern int gettimeofday (struct timeval *__restrict __tv, __timezone_ptr_t __tz) __THROW __nonnull ((1)); #ifdef __USE_BSD /* Set the current time of day and timezone information. This call is restricted to the super-user. */ extern int settimeofday (__const struct timeval *__tv, __const struct timezone *__tz) __THROW __nonnull ((1)); /* Adjust the current time of day by the amount in DELTA. If OLDDELTA is not NULL, it is filled in with the amount of time adjustment remaining to be done from the last `adjtime' call. This call is restricted to the super-user. */ extern int adjtime (__const struct timeval *__delta, struct timeval *__olddelta) __THROW; #endif /* Values for the first argument to `getitimer' and `setitimer'. */ enum __itimer_which { /* Timers run in real time. */ ITIMER_REAL = 0, #define ITIMER_REAL ITIMER_REAL /* Timers run only when the process is executing. */ ITIMER_VIRTUAL = 1, #define ITIMER_VIRTUAL ITIMER_VIRTUAL /* Timers run when the process is executing and when the system is executing on behalf of the process. */ ITIMER_PROF = 2 #define ITIMER_PROF ITIMER_PROF }; /* Type of the second argument to `getitimer' and the second and third arguments `setitimer'. */ struct itimerval { /* Value to put into `it_value' when the timer expires. */ struct timeval it_interval; /* Time to the next timer expiration. */ struct timeval it_value; }; #if defined __USE_GNU && !defined __cplusplus /* Use the nicer parameter type only in GNU mode and not for C++ since the strict C++ rules prevent the automatic promotion. */ typedef enum __itimer_which __itimer_which_t; #else typedef int __itimer_which_t; #endif /* Set *VALUE to the current setting of timer WHICH. Return 0 on success, -1 on errors. */ extern int getitimer (__itimer_which_t __which, struct itimerval *__value) __THROW; /* Set the timer WHICH to *NEW. If OLD is not NULL, set *OLD to the old value of timer WHICH. Returns 0 on success, -1 on errors. */ extern int setitimer (__itimer_which_t __which, __const struct itimerval *__restrict __new, struct itimerval *__restrict __old) __THROW; /* Change the access time of FILE to TVP[0] and the modification time of FILE to TVP[1]. If TVP is a null pointer, use the current time instead. Returns 0 on success, -1 on errors. */ extern int utimes (__const char *__file, __const struct timeval __tvp[2]) __THROW __nonnull ((1)); #ifdef __USE_BSD /* Same as `utimes', but does not follow symbolic links. */ extern int lutimes (__const char *__file, __const struct timeval __tvp[2]) __THROW __nonnull ((1)); /* Same as `utimes', but takes an open file descriptor instead of a name. */ extern int futimes (int __fd, __const struct timeval __tvp[2]) __THROW; #endif #ifdef __USE_ATFILE /* Change the access time of FILE relative to FD to TVP[0] and the modification time of FILE to TVP[1]. If TVP is a null pointer, use the current time instead. Returns 0 on success, -1 on errors. */ extern int futimesat (int __fd, __const char *__file, __const struct timeval __tvp[2]) __THROW; #endif #ifdef __USE_BSD /* Convenience macros for operations on timevals. NOTE: `timercmp' does not work for >= or <=. */ # define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) # define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) # define timercmp(a, b, CMP) \ (((a)->tv_sec == (b)->tv_sec) ? \ ((a)->tv_usec CMP (b)->tv_usec) : \ ((a)->tv_sec CMP (b)->tv_sec)) # define timeradd(a, b, result) \ do { \ (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ if ((result)->tv_usec >= 1000000) \ { \ ++(result)->tv_sec; \ (result)->tv_usec -= 1000000; \ } \ } while (0) # define timersub(a, b, result) \ do { \ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ if ((result)->tv_usec < 0) { \ --(result)->tv_sec; \ (result)->tv_usec += 1000000; \ } \ } while (0) #endif /* BSD */ __END_DECLS #endif /* sys/time.h */ Convert-Binary-C-0.76/tests/include/include/sys/wait.h0000644000175000001440000001473411550664627021373 0ustar mhxusers/* Copyright (C) 1991-1994,1996-2001,2003,2004,2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * POSIX Standard: 3.2.1 Wait for Process Termination */ #ifndef _SYS_WAIT_H #define _SYS_WAIT_H 1 #include __BEGIN_DECLS #include #include /* These macros could also be defined in . */ #if !defined _STDLIB_H || !defined __USE_XOPEN /* This will define the `W*' macros for the flag bits to `waitpid', `wait3', and `wait4'. */ # include # ifdef __USE_BSD /* Lots of hair to allow traditional BSD use of `union wait' as well as POSIX.1 use of `int' for the status word. */ # if defined __GNUC__ && !defined __cplusplus # define __WAIT_INT(status) \ (__extension__ (((union { __typeof(status) __in; int __i; }) \ { .__in = (status) }).__i)) # else # define __WAIT_INT(status) (*(__const int *) &(status)) # endif /* This is the type of the argument to `wait'. The funky union causes redeclarations with ether `int *' or `union wait *' to be allowed without complaint. __WAIT_STATUS_DEFN is the type used in the actual function definitions. */ # if !defined __GNUC__ || __GNUC__ < 2 || defined __cplusplus # define __WAIT_STATUS void * # define __WAIT_STATUS_DEFN void * # else /* This works in GCC 2.6.1 and later. */ typedef union { union wait *__uptr; int *__iptr; } __WAIT_STATUS __attribute__ ((__transparent_union__)); # define __WAIT_STATUS_DEFN int * # endif # else /* Don't use BSD. */ # define __WAIT_INT(status) (status) # define __WAIT_STATUS int * # define __WAIT_STATUS_DEFN int * # endif /* Use BSD. */ /* This will define all the `__W*' macros. */ # include # define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status)) # define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status)) # define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status)) # define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status)) # define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status)) # define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status)) # ifdef __WIFCONTINUED # define WIFCONTINUED(status) __WIFCONTINUED(__WAIT_INT(status)) # endif #endif /* not included. */ #ifdef __USE_BSD # define WCOREFLAG __WCOREFLAG # define WCOREDUMP(status) __WCOREDUMP(__WAIT_INT(status)) # define W_EXITCODE(ret, sig) __W_EXITCODE(ret, sig) # define W_STOPCODE(sig) __W_STOPCODE(sig) #endif /* The following values are used by the `waitid' function. */ #if defined __USE_SVID || defined __USE_XOPEN typedef enum { P_ALL, /* Wait for any child. */ P_PID, /* Wait for specified process. */ P_PGID /* Wait for members of process group. */ } idtype_t; #endif /* Wait for a child to die. When one does, put its status in *STAT_LOC and return its process ID. For errors, return (pid_t) -1. This function is a cancellation point and therefore not marked with __THROW. */ extern __pid_t wait (__WAIT_STATUS __stat_loc); #ifdef __USE_BSD /* Special values for the PID argument to `waitpid' and `wait4'. */ # define WAIT_ANY (-1) /* Any process. */ # define WAIT_MYPGRP 0 /* Any process in my process group. */ #endif /* Wait for a child matching PID to die. If PID is greater than 0, match any process whose process ID is PID. If PID is (pid_t) -1, match any process. If PID is (pid_t) 0, match any process with the same process group as the current process. If PID is less than -1, match any process whose process group is the absolute value of PID. If the WNOHANG bit is set in OPTIONS, and that child is not already dead, return (pid_t) 0. If successful, return PID and store the dead child's status in STAT_LOC. Return (pid_t) -1 for errors. If the WUNTRACED bit is set in OPTIONS, return status for stopped children; otherwise don't. This function is a cancellation point and therefore not marked with __THROW. */ extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options); #if defined __USE_SVID || defined __USE_XOPEN # define __need_siginfo_t # include /* Wait for a childing matching IDTYPE and ID to change the status and place appropriate information in *INFOP. If IDTYPE is P_PID, match any process whose process ID is ID. If IDTYPE is P_PGID, match any process whose process group is ID. If IDTYPE is P_ALL, match any process. If the WNOHANG bit is set in OPTIONS, and that child is not already dead, clear *INFOP and return 0. If successful, store exit code and status in *INFOP. This function is a cancellation point and therefore not marked with __THROW. */ extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop, int __options); #endif #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* This being here makes the prototypes valid whether or not we have already included to define `struct rusage'. */ struct rusage; /* Wait for a child to exit. When one does, put its status in *STAT_LOC and return its process ID. For errors return (pid_t) -1. If USAGE is not nil, store information about the child's resource usage there. If the WUNTRACED bit is set in OPTIONS, return status for stopped children; otherwise don't. */ extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options, struct rusage * __usage) __THROW; #endif #ifdef __USE_BSD /* This being here makes the prototypes valid whether or not we have already included to define `struct rusage'. */ struct rusage; /* PID is like waitpid. Other args are like wait3. */ extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options, struct rusage *__usage) __THROW; #endif /* Use BSD. */ __END_DECLS #endif /* sys/wait.h */ Convert-Binary-C-0.76/tests/include/include/sys/param.h0000644000175000001440000000433211550664627021520 0ustar mhxusers/* Copyright (C) 1995,1996,1997,2000,2001,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_PARAM_H #define _SYS_PARAM_H 1 #include #include #include /* BSD names for some values. */ #define NBBY CHAR_BIT #ifndef NGROUPS # define NGROUPS NGROUPS_MAX #endif #define MAXSYMLINKS 20 #define CANBSIZ MAX_CANON #define NCARGS ARG_MAX #define MAXPATHLEN PATH_MAX /* The following is not really correct but it is a value we used for a long time and which seems to be usable. People should not use NOFILE anyway. */ #define NOFILE 256 #include /* Bit map related macros. */ #define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY)) #define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) #define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY))) #define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) /* Macros for counting and rounding. */ #ifndef howmany # define howmany(x, y) (((x) + ((y) - 1)) / (y)) #endif #ifdef __GNUC__ # define roundup(x, y) (__builtin_constant_p (y) && powerof2 (y) \ ? (((x) + (y) - 1) & ~((y) - 1)) \ : ((((x) + ((y) - 1)) / (y)) * (y))) #else # define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) #endif #define powerof2(x) ((((x) - 1) & (x)) == 0) /* Macros for min/max. */ #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) /* Unit of `st_blocks'. */ #define DEV_BSIZE 512 #endif /* sys/param.h */ Convert-Binary-C-0.76/tests/include/include/sys/sysmacros.h0000644000175000001440000000462111550664627022444 0ustar mhxusers/* Definitions of macros to access `dev_t' values. Copyright (C) 1996, 1997, 1999, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_SYSMACROS_H #define _SYS_SYSMACROS_H 1 #include /* If the compiler does not know long long it is out of luck. We are not going to hack weird hacks to support the dev_t representation they need. */ #ifdef __GLIBC_HAVE_LONG_LONG __extension__ extern __inline unsigned int gnu_dev_major (unsigned long long int __dev) __THROW; __extension__ extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev) __THROW; __extension__ extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major, unsigned int __minor) __THROW; # if defined __GNUC__ && __GNUC__ >= 2 __extension__ extern __inline unsigned int __NTH (gnu_dev_major (unsigned long long int __dev)) { return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); } __extension__ extern __inline unsigned int __NTH (gnu_dev_minor (unsigned long long int __dev)) { return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); } __extension__ extern __inline unsigned long long int __NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor)) { return ((__minor & 0xff) | ((__major & 0xfff) << 8) | (((unsigned long long int) (__minor & ~0xff)) << 12) | (((unsigned long long int) (__major & ~0xfff)) << 32)); } # endif /* Access the functions with their traditional names. */ # define major(dev) gnu_dev_major (dev) # define minor(dev) gnu_dev_minor (dev) # define makedev(maj, min) gnu_dev_makedev (maj, min) #endif #endif /* sys/sysmacros.h */ Convert-Binary-C-0.76/tests/include/include/sys/cdefs.h0000644000175000001440000002611311550664627021505 0ustar mhxusers/* Copyright (C) 1992-2001, 2002, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_CDEFS_H #define _SYS_CDEFS_H 1 /* We are almost always included from features.h. */ #ifndef _FEATURES_H # include #endif /* The GNU libc does not support any K&R compilers or the traditional mode of ISO C compilers anymore. Check for some of the combinations not anymore supported. */ #if defined __GNUC__ && !defined __STDC__ # error "You need a ISO C conforming compiler to use the glibc headers" #endif /* Some user header file might have defined this before. */ #undef __P #undef __PMT #ifdef __GNUC__ /* GCC can always grok prototypes. For C++ programs we add throw() to help it optimize the function calls. But this works only with gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions as non-throwing using a function attribute since programs can use the -fexceptions options for C code as well. */ # if !defined __cplusplus && __GNUC_PREREQ (3, 3) # define __THROW __attribute__ ((__nothrow__)) # define __NTH(fct) __attribute__ ((__nothrow__)) fct # else # if defined __cplusplus && __GNUC_PREREQ (2,8) # define __THROW throw () # define __NTH(fct) fct throw () # else # define __THROW # define __NTH(fct) fct # endif # endif #else /* Not GCC. */ # define __inline /* No inline functions. */ # define __THROW # define __NTH(fct) fct # define __const const # define __signed signed # define __volatile volatile #endif /* GCC. */ /* These two macros are not used in glibc anymore. They are kept here only because some other projects expect the macros to be defined. */ #define __P(args) args #define __PMT(args) args /* For these things, GCC behaves the ANSI way normally, and the non-ANSI way under -traditional. */ #define __CONCAT(x,y) x ## y #define __STRING(x) #x /* This is not a typedef so `const __ptr_t' does the right thing. */ #define __ptr_t void * #define __long_double_t long double /* C++ needs to know that types and declarations are C, not C++. */ #ifdef __cplusplus # define __BEGIN_DECLS extern "C" { # define __END_DECLS } #else # define __BEGIN_DECLS # define __END_DECLS #endif /* The standard library needs the functions from the ISO C90 standard in the std namespace. At the same time we want to be safe for future changes and we include the ISO C99 code in the non-standard namespace __c99. The C++ wrapper header take case of adding the definitions to the global namespace. */ #if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES # define __BEGIN_NAMESPACE_STD namespace std { # define __END_NAMESPACE_STD } # define __USING_NAMESPACE_STD(name) using std::name; # define __BEGIN_NAMESPACE_C99 namespace __c99 { # define __END_NAMESPACE_C99 } # define __USING_NAMESPACE_C99(name) using __c99::name; #else /* For compatibility we do not add the declarations into any namespace. They will end up in the global namespace which is what old code expects. */ # define __BEGIN_NAMESPACE_STD # define __END_NAMESPACE_STD # define __USING_NAMESPACE_STD(name) # define __BEGIN_NAMESPACE_C99 # define __END_NAMESPACE_C99 # define __USING_NAMESPACE_C99(name) #endif /* Support for bounded pointers. */ #ifndef __BOUNDED_POINTERS__ # define __bounded /* nothing */ # define __unbounded /* nothing */ # define __ptrvalue /* nothing */ #endif /* Fortify support. */ #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) #define __bos0(ptr) __builtin_object_size (ptr, 0) #define __warndecl(name, msg) extern void name (void) /* Support for flexible arrays. */ #if __GNUC_PREREQ (2,97) /* GCC 2.97 supports C99 flexible array members. */ # define __flexarr [] #else # ifdef __GNUC__ # define __flexarr [0] # else # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L # define __flexarr [] # else /* Some other non-C99 compiler. Approximate with [1]. */ # define __flexarr [1] # endif # endif #endif /* __asm__ ("xyz") is used throughout the headers to rename functions at the assembly language level. This is wrapped by the __REDIRECT macro, in order to support compilers that can do this some other way. When compilers don't support asm-names at all, we have to do preprocessor tricks instead (which don't have exactly the right semantics, but it's the best we can do). Example: int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ #if defined __GNUC__ && __GNUC__ >= 2 # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) # ifdef __cplusplus # define __REDIRECT_NTH(name, proto, alias) \ name proto __THROW __asm__ (__ASMNAME (#alias)) # else # define __REDIRECT_NTH(name, proto, alias) \ name proto __asm__ (__ASMNAME (#alias)) __THROW # endif # define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname) # define __ASMNAME2(prefix, cname) __STRING (prefix) cname /* #elif __SOME_OTHER_COMPILER__ # define __REDIRECT(name, proto, alias) name proto; \ _Pragma("let " #name " = " #alias) */ #endif /* GCC has various useful declarations that can be made with the `__attribute__' syntax. All of the ways we use this do fine if they are omitted for compilers that don't understand it. */ #if !defined __GNUC__ || __GNUC__ < 2 # define __attribute__(xyz) /* Ignore */ #endif /* At some point during the gcc 2.96 development the `malloc' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (2,96) # define __attribute_malloc__ __attribute__ ((__malloc__)) #else # define __attribute_malloc__ /* Ignore */ #endif /* At some point during the gcc 2.96 development the `pure' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (2,96) # define __attribute_pure__ __attribute__ ((__pure__)) #else # define __attribute_pure__ /* Ignore */ #endif /* At some point during the gcc 3.1 development the `used' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (3,1) # define __attribute_used__ __attribute__ ((__used__)) # define __attribute_noinline__ __attribute__ ((__noinline__)) #else # define __attribute_used__ __attribute__ ((__unused__)) # define __attribute_noinline__ /* Ignore */ #endif /* gcc allows marking deprecated functions. */ #if __GNUC_PREREQ (3,2) # define __attribute_deprecated__ __attribute__ ((__deprecated__)) #else # define __attribute_deprecated__ /* Ignore */ #endif /* At some point during the gcc 2.8 development the `format_arg' attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. If several `format_arg' attributes are given for the same function, in gcc-3.0 and older, all but the last one are ignored. In newer gccs, all designated arguments are considered. */ #if __GNUC_PREREQ (2,8) # define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) #else # define __attribute_format_arg__(x) /* Ignore */ #endif /* At some point during the gcc 2.97 development the `strfmon' format attribute for functions was introduced. We don't want to use it unconditionally (although this would be possible) since it generates warnings. */ #if __GNUC_PREREQ (2,97) # define __attribute_format_strfmon__(a,b) \ __attribute__ ((__format__ (__strfmon__, a, b))) #else # define __attribute_format_strfmon__(a,b) /* Ignore */ #endif /* The nonull function attribute allows to mark pointer parameters which must not be NULL. */ #if __GNUC_PREREQ (3,3) # define __nonnull(params) __attribute__ ((__nonnull__ params)) #else # define __nonnull(params) #endif /* If fortification mode, we warn about unused results of certain function calls which can lead to problems. */ #if __GNUC_PREREQ (3,4) # define __attribute_warn_unused_result__ \ __attribute__ ((__warn_unused_result__)) # if __USE_FORTIFY_LEVEL > 0 # define __wur __attribute_warn_unused_result__ # endif #else # define __attribute_warn_unused_result__ /* empty */ #endif #ifndef __wur # define __wur /* Ignore */ #endif /* Forces a function to be always inlined. */ #if __GNUC_PREREQ (3,2) # define __always_inline __inline __attribute__ ((__always_inline__)) #else # define __always_inline __inline #endif /* It is possible to compile containing GCC extensions even if GCC is run in pedantic mode if the uses are carefully marked using the `__extension__' keyword. But this is not generally available before version 2.8. */ #if !__GNUC_PREREQ (2,8) # define __extension__ /* Ignore */ #endif /* __restrict is known in EGCS 1.2 and above. */ #if !__GNUC_PREREQ (2,92) # define __restrict /* Ignore */ #endif /* ISO C99 also allows to declare arrays as non-overlapping. The syntax is array_name[restrict] GCC 3.1 supports this. */ #if __GNUC_PREREQ (3,1) && !defined __GNUG__ # define __restrict_arr __restrict #else # ifdef __GNUC__ # define __restrict_arr /* Not supported in old GCC. */ # else # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L # define __restrict_arr restrict # else /* Some other non-C99 compiler. */ # define __restrict_arr /* Not supported. */ # endif # endif #endif #include #if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH # define __LDBL_COMPAT 1 # ifdef __REDIRECT # define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias) # define __LDBL_REDIR(name, proto) \ __LDBL_REDIR1 (name, proto, __nldbl_##name) # define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias) # define __LDBL_REDIR_NTH(name, proto) \ __LDBL_REDIR1_NTH (name, proto, __nldbl_##name) # define __LDBL_REDIR1_DECL(name, alias) \ extern __typeof (name) name __asm (__ASMNAME (#alias)); # define __LDBL_REDIR_DECL(name) \ extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name)); # endif #endif #if !defined __LDBL_COMPAT || !defined __REDIRECT # define __LDBL_REDIR1(name, proto, alias) name proto # define __LDBL_REDIR(name, proto) name proto # define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW # define __LDBL_REDIR_NTH(name, proto) name proto __THROW # define __LDBL_REDIR_DECL(name) #endif #endif /* sys/cdefs.h */ Convert-Binary-C-0.76/tests/include/include/sys/ioctl.h0000644000175000001440000000344111550664627021532 0ustar mhxusers/* Copyright (C) 1991, 92, 93, 94, 96, 98, 99 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_IOCTL_H #define _SYS_IOCTL_H 1 #include __BEGIN_DECLS /* Get the list of `ioctl' requests and related constants. */ #include /* Define some types used by `ioctl' requests. */ #include /* On a Unix system, the system probably defines some of the symbols we define in (usually with the same values). The code to generate has omitted these symbols to avoid the conflict, but a Unix program expects to define them, so we must include here. */ #include /* Perform the I/O control operation specified by REQUEST on FD. One argument may follow; its presence and type depend on REQUEST. Return value depends on REQUEST. Usually -1 indicates error. */ extern int ioctl (int __fd, unsigned long int __request, ...) __THROW; __END_DECLS #endif /* sys/ioctl.h */ Convert-Binary-C-0.76/tests/include/include/sys/socket.h0000644000175000001440000002174711550664627021721 0ustar mhxusers/* Declarations of socket constants, types, and functions. Copyright (C) 1991,92,1994-2001,2003,2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_SOCKET_H #define _SYS_SOCKET_H 1 #include __BEGIN_DECLS #include #define __need_size_t #include /* This operating system-specific header file defines the SOCK_*, PF_*, AF_*, MSG_*, SOL_*, and SO_* constants, and the `struct sockaddr', `struct msghdr', and `struct linger' types. */ #include #ifdef __USE_BSD /* This is the 4.3 BSD `struct sockaddr' format, which is used as wire format in the grotty old 4.3 `talk' protocol. */ struct osockaddr { unsigned short int sa_family; unsigned char sa_data[14]; }; #endif /* The following constants should be used for the second parameter of `shutdown'. */ enum { SHUT_RD = 0, /* No more receptions. */ #define SHUT_RD SHUT_RD SHUT_WR, /* No more transmissions. */ #define SHUT_WR SHUT_WR SHUT_RDWR /* No more receptions or transmissions. */ #define SHUT_RDWR SHUT_RDWR }; /* This is the type we use for generic socket address arguments. With GCC 2.7 and later, the funky union causes redeclarations or uses with any of the listed types to be allowed without complaint. G++ 2.7 does not support transparent unions so there we want the old-style declaration, too. */ #if defined __cplusplus || !__GNUC_PREREQ (2, 7) || !defined __USE_GNU # define __SOCKADDR_ARG struct sockaddr *__restrict # define __CONST_SOCKADDR_ARG __const struct sockaddr * #else /* Add more `struct sockaddr_AF' types here as necessary. These are all the ones I found on NetBSD and Linux. */ # define __SOCKADDR_ALLTYPES \ __SOCKADDR_ONETYPE (sockaddr) \ __SOCKADDR_ONETYPE (sockaddr_at) \ __SOCKADDR_ONETYPE (sockaddr_ax25) \ __SOCKADDR_ONETYPE (sockaddr_dl) \ __SOCKADDR_ONETYPE (sockaddr_eon) \ __SOCKADDR_ONETYPE (sockaddr_in) \ __SOCKADDR_ONETYPE (sockaddr_in6) \ __SOCKADDR_ONETYPE (sockaddr_inarp) \ __SOCKADDR_ONETYPE (sockaddr_ipx) \ __SOCKADDR_ONETYPE (sockaddr_iso) \ __SOCKADDR_ONETYPE (sockaddr_ns) \ __SOCKADDR_ONETYPE (sockaddr_un) \ __SOCKADDR_ONETYPE (sockaddr_x25) # define __SOCKADDR_ONETYPE(type) struct type *__restrict __##type##__; typedef union { __SOCKADDR_ALLTYPES } __SOCKADDR_ARG __attribute__ ((__transparent_union__)); # undef __SOCKADDR_ONETYPE # define __SOCKADDR_ONETYPE(type) __const struct type *__restrict __##type##__; typedef union { __SOCKADDR_ALLTYPES } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__)); # undef __SOCKADDR_ONETYPE #endif /* Create a new socket of type TYPE in domain DOMAIN, using protocol PROTOCOL. If PROTOCOL is zero, one is chosen automatically. Returns a file descriptor for the new socket, or -1 for errors. */ extern int socket (int __domain, int __type, int __protocol) __THROW; /* Create two new sockets, of type TYPE in domain DOMAIN and using protocol PROTOCOL, which are connected to each other, and put file descriptors for them in FDS[0] and FDS[1]. If PROTOCOL is zero, one will be chosen automatically. Returns 0 on success, -1 for errors. */ extern int socketpair (int __domain, int __type, int __protocol, int __fds[2]) __THROW; /* Give the socket FD the local address ADDR (which is LEN bytes long). */ extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len) __THROW; /* Put the local address of FD into *ADDR and its length in *LEN. */ extern int getsockname (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __len) __THROW; /* Open a connection on socket FD to peer at ADDR (which LEN bytes long). For connectionless socket types, just set the default address to send to and the only address from which to accept transmissions. Return 0 on success, -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len); /* Put the address of the peer connected to socket FD into *ADDR (which is *LEN bytes long), and its actual length into *LEN. */ extern int getpeername (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __len) __THROW; /* Send N bytes of BUF to socket FD. Returns the number sent or -1. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags); /* Read N bytes into BUF from socket FD. Returns the number read or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); /* Send N bytes of BUF on socket FD to peer at address ADDR (which is ADDR_LEN bytes long). Returns the number sent, or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t sendto (int __fd, __const void *__buf, size_t __n, int __flags, __CONST_SOCKADDR_ARG __addr, socklen_t __addr_len); /* Read N bytes into BUF through socket FD. If ADDR is not NULL, fill in *ADDR_LEN bytes of it with tha address of the sender, and store the actual size of the address in *ADDR_LEN. Returns the number of bytes read or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len); /* Send a message described MESSAGE on socket FD. Returns the number of bytes sent, or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t sendmsg (int __fd, __const struct msghdr *__message, int __flags); /* Receive a message as described by MESSAGE from socket FD. Returns the number of bytes read or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags); /* Put the current value for socket FD's option OPTNAME at protocol level LEVEL into OPTVAL (which is *OPTLEN bytes long), and set *OPTLEN to the value's actual length. Returns 0 on success, -1 for errors. */ extern int getsockopt (int __fd, int __level, int __optname, void *__restrict __optval, socklen_t *__restrict __optlen) __THROW; /* Set socket FD's option OPTNAME at protocol level LEVEL to *OPTVAL (which is OPTLEN bytes long). Returns 0 on success, -1 for errors. */ extern int setsockopt (int __fd, int __level, int __optname, __const void *__optval, socklen_t __optlen) __THROW; /* Prepare to accept connections on socket FD. N connection requests will be queued before further requests are refused. Returns 0 on success, -1 for errors. */ extern int listen (int __fd, int __n) __THROW; /* Await a connection on socket FD. When a connection arrives, open a new socket to communicate with it, set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting peer and *ADDR_LEN to the address's actual length, and return the new socket's descriptor, or -1 for errors. This function is a cancellation point and therefore not marked with __THROW. */ extern int accept (int __fd, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len); /* Shut down all or part of the connection open on socket FD. HOW determines what to shut down: SHUT_RD = No more receptions; SHUT_WR = No more transmissions; SHUT_RDWR = No more receptions or transmissions. Returns 0 on success, -1 for errors. */ extern int shutdown (int __fd, int __how) __THROW; #ifdef __USE_XOPEN2K /* Determine wheter socket is at a out-of-band mark. */ extern int sockatmark (int __fd) __THROW; #endif #ifdef __USE_MISC /* FDTYPE is S_IFSOCK or another S_IF* macro defined in ; returns 1 if FD is open on an object of the indicated type, 0 if not, or -1 for errors (setting errno). */ extern int isfdtype (int __fd, int __fdtype) __THROW; #endif /* Define some macros helping to catch buffer overflows. */ #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus # include #endif __END_DECLS #endif /* sys/socket.h */ Convert-Binary-C-0.76/tests/include/include/arpa/0000755000175000001440000000000011550665107020344 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/arpa/inet.h0000644000175000001440000001043111550664623021455 0ustar mhxusers/* Copyright (C) 1997, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _ARPA_INET_H #define _ARPA_INET_H 1 #include #include /* To define `struct in_addr'. */ /* Type for length arguments in socket calls. */ #ifndef __socklen_t_defined typedef __socklen_t socklen_t; # define __socklen_t_defined #endif __BEGIN_DECLS /* Convert Internet host address from numbers-and-dots notation in CP into binary data in network byte order. */ extern in_addr_t inet_addr (__const char *__cp) __THROW; /* Return the local host address part of the Internet address in IN. */ extern in_addr_t inet_lnaof (struct in_addr __in) __THROW; /* Make Internet host address in network byte order by combining the network number NET with the local address HOST. */ extern struct in_addr inet_makeaddr (in_addr_t __net, in_addr_t __host) __THROW; /* Return network number part of the Internet address IN. */ extern in_addr_t inet_netof (struct in_addr __in) __THROW; /* Extract the network number in network byte order from the address in numbers-and-dots natation starting at CP. */ extern in_addr_t inet_network (__const char *__cp) __THROW; /* Convert Internet number in IN to ASCII representation. The return value is a pointer to an internal array containing the string. */ extern char *inet_ntoa (struct in_addr __in) __THROW; /* Convert from presentation format of an Internet number in buffer starting at CP to the binary network format and store result for interface type AF in buffer starting at BUF. */ extern int inet_pton (int __af, __const char *__restrict __cp, void *__restrict __buf) __THROW; /* Convert a Internet address in binary network format for interface type AF in buffer starting at CP to presentation form and place result in buffer of length LEN astarting at BUF. */ extern __const char *inet_ntop (int __af, __const void *__restrict __cp, char *__restrict __buf, socklen_t __len) __THROW; /* The following functions are not part of XNS 5.2. */ #ifdef __USE_MISC /* Convert Internet host address from numbers-and-dots notation in CP into binary data and store the result in the structure INP. */ extern int inet_aton (__const char *__cp, struct in_addr *__inp) __THROW; /* Format a network number NET into presentation format and place result in buffer starting at BUF with length of LEN bytes. */ extern char *inet_neta (in_addr_t __net, char *__buf, size_t __len) __THROW; /* Convert network number for interface type AF in buffer starting at CP to presentation format. The result will specifiy BITS bits of the number. */ extern char *inet_net_ntop (int __af, __const void *__cp, int __bits, char *__buf, size_t __len) __THROW; /* Convert network number for interface type AF from presentation in buffer starting at CP to network format and store result int buffer starting at BUF of size LEN. */ extern int inet_net_pton (int __af, __const char *__cp, void *__buf, size_t __len) __THROW; /* Convert ASCII representation in hexadecimal form of the Internet address to binary form and place result in buffer of length LEN starting at BUF. */ extern unsigned int inet_nsap_addr (__const char *__cp, unsigned char *__buf, int __len) __THROW; /* Convert internet address in binary form in LEN bytes starting at CP a presentation form and place result in BUF. */ extern char *inet_nsap_ntoa (int __len, __const unsigned char *__cp, char *__buf) __THROW; #endif __END_DECLS #endif /* arpa/inet.h */ Convert-Binary-C-0.76/tests/include/include/bits/0000755000175000001440000000000011550665107020362 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/bits/in.h0000644000175000001440000001467711550664624021163 0ustar mhxusers/* Copyright (C) 1991-1999, 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* Linux version. */ #ifndef _NETINET_IN_H # error "Never use directly; include instead." #endif /* Options for use with `getsockopt' and `setsockopt' at the IP level. The first word in the comment at the right is the data type used; "bool" means a boolean value stored in an `int'. */ #define IP_OPTIONS 4 /* ip_opts; IP per-packet options. */ #define IP_HDRINCL 3 /* int; Header is included with data. */ #define IP_TOS 1 /* int; IP type of service and precedence. */ #define IP_TTL 2 /* int; IP time to live. */ #define IP_RECVOPTS 6 /* bool; Receive all IP options w/datagram. */ /* For BSD compatibility. */ #define IP_RECVRETOPTS IP_RETOPTS /* bool; Receive IP options for response. */ #define IP_RETOPTS 7 /* ip_opts; Set/get IP per-packet options. */ #define IP_MULTICAST_IF 32 /* in_addr; set/get IP multicast i/f */ #define IP_MULTICAST_TTL 33 /* u_char; set/get IP multicast ttl */ #define IP_MULTICAST_LOOP 34 /* i_char; set/get IP multicast loopback */ #define IP_ADD_MEMBERSHIP 35 /* ip_mreq; add an IP group membership */ #define IP_DROP_MEMBERSHIP 36 /* ip_mreq; drop an IP group membership */ #define IP_UNBLOCK_SOURCE 37 /* ip_mreq_source: unblock data from source */ #define IP_BLOCK_SOURCE 38 /* ip_mreq_source: block data from source */ #define IP_ADD_SOURCE_MEMBERSHIP 39 /* ip_mreq_source: join source group */ #define IP_DROP_SOURCE_MEMBERSHIP 40 /* ip_mreq_source: leave source group */ #define IP_MSFILTER 41 #define MCAST_JOIN_GROUP 42 /* group_req: join any-source group */ #define MCAST_BLOCK_SOURCE 43 /* group_source_req: block from given group */ #define MCAST_UNBLOCK_SOURCE 44 /* group_source_req: unblock from given group*/ #define MCAST_LEAVE_GROUP 45 /* group_req: leave any-source group */ #define MCAST_JOIN_SOURCE_GROUP 46 /* group_source_req: join source-spec gr */ #define MCAST_LEAVE_SOURCE_GROUP 47 /* group_source_req: leave source-spec gr*/ #define MCAST_MSFILTER 48 #define MCAST_EXCLUDE 0 #define MCAST_INCLUDE 1 #define IP_ROUTER_ALERT 5 /* bool */ #define IP_PKTINFO 8 /* bool */ #define IP_PKTOPTIONS 9 #define IP_PMTUDISC 10 /* obsolete name? */ #define IP_MTU_DISCOVER 10 /* int; see below */ #define IP_RECVERR 11 /* bool */ #define IP_RECVTTL 12 /* bool */ #define IP_RECVTOS 13 /* bool */ /* IP_MTU_DISCOVER arguments. */ #define IP_PMTUDISC_DONT 0 /* Never send DF frames. */ #define IP_PMTUDISC_WANT 1 /* Use per route hints. */ #define IP_PMTUDISC_DO 2 /* Always DF. */ /* To select the IP level. */ #define SOL_IP 0 #define IP_DEFAULT_MULTICAST_TTL 1 #define IP_DEFAULT_MULTICAST_LOOP 1 #define IP_MAX_MEMBERSHIPS 20 /* Structure used to describe IP options for IP_OPTIONS and IP_RETOPTS. The `ip_dst' field is used for the first-hop gateway when using a source route (this gets put into the header proper). */ struct ip_opts { struct in_addr ip_dst; /* First hop; zero without source route. */ char ip_opts[40]; /* Actually variable in size. */ }; /* Like `struct ip_mreq' but including interface specification by index. */ struct ip_mreqn { struct in_addr imr_multiaddr; /* IP multicast address of group */ struct in_addr imr_address; /* local IP address of interface */ int imr_ifindex; /* Interface index */ }; /* Structure used for IP_PKTINFO. */ struct in_pktinfo { int ipi_ifindex; /* Interface index */ struct in_addr ipi_spec_dst; /* Routing destination address */ struct in_addr ipi_addr; /* Header destination address */ }; /* Options for use with `getsockopt' and `setsockopt' at the IPv6 level. The first word in the comment at the right is the data type used; "bool" means a boolean value stored in an `int'. */ #define IPV6_ADDRFORM 1 #define IPV6_2292PKTINFO 2 #define IPV6_2292HOPOPTS 3 #define IPV6_2292DSTOPTS 4 #define IPV6_2292RTHDR 5 #define IPV6_2292PKTOPTIONS 6 #define IPV6_CHECKSUM 7 #define IPV6_2292HOPLIMIT 8 #define SCM_SRCRT IPV6_RXSRCRT #define IPV6_NEXTHOP 9 #define IPV6_AUTHHDR 10 #define IPV6_UNICAST_HOPS 16 #define IPV6_MULTICAST_IF 17 #define IPV6_MULTICAST_HOPS 18 #define IPV6_MULTICAST_LOOP 19 #define IPV6_JOIN_GROUP 20 #define IPV6_LEAVE_GROUP 21 #define IPV6_ROUTER_ALERT 22 #define IPV6_MTU_DISCOVER 23 #define IPV6_MTU 24 #define IPV6_RECVERR 25 #define IPV6_V6ONLY 26 #define IPV6_JOIN_ANYCAST 27 #define IPV6_LEAVE_ANYCAST 28 #define IPV6_IPSEC_POLICY 34 #define IPV6_XFRM_POLICY 35 #define IPV6_RECVPKTINFO 49 #define IPV6_PKTINFO 50 #define IPV6_RECVHOPLIMIT 51 #define IPV6_HOPLIMIT 52 #define IPV6_RECVHOPOPTS 53 #define IPV6_HOPOPTS 54 #define IPV6_RTHDRDSTOPTS 55 #define IPV6_RECVRTHDR 56 #define IPV6_RTHDR 57 #define IPV6_RECVDSTOPTS 58 #define IPV6_DSTOPTS 59 #define IPV6_RECVTCLASS 66 #define IPV6_TCLASS 67 /* Obsolete synonyms for the above. */ #define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP #define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP #define IPV6_RXHOPOPTS IPV6_HOPOPTS #define IPV6_RXDSTOPTS IPV6_DSTOPTS /* IPV6_MTU_DISCOVER values. */ #define IPV6_PMTUDISC_DONT 0 /* Never send DF frames. */ #define IPV6_PMTUDISC_WANT 1 /* Use per route hints. */ #define IPV6_PMTUDISC_DO 2 /* Always DF. */ /* Socket level values for IPv6. */ #define SOL_IPV6 41 #define SOL_ICMPV6 58 /* Routing header options for IPv6. */ #define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */ #define IPV6_RTHDR_STRICT 1 /* Hop must be a neighbour. */ #define IPV6_RTHDR_TYPE_0 0 /* IPv6 Routing header type 0. */ Convert-Binary-C-0.76/tests/include/include/bits/waitflags.h0000644000175000001440000000326311550664626022525 0ustar mhxusers/* Definitions of flag bits for `waitpid' et al. Copyright (C) 1992,1996,1997,2000,2004,2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #if !defined _SYS_WAIT_H && !defined _STDLIB_H # error "Never include directly; use instead." #endif /* Bits in the third argument to `waitpid'. */ #define WNOHANG 1 /* Don't block waiting. */ #define WUNTRACED 2 /* Report status of stopped children. */ /* Bits in the fourth argument to `waitid'. */ #define WSTOPPED 2 /* Report stopped child (same as WUNTRACED). */ #define WEXITED 4 /* Report dead child. */ #define WCONTINUED 8 /* Report continued child. */ #define WNOWAIT 0x01000000 /* Don't reap, just poll status. */ #define __WNOTHREAD 0x20000000 /* Don't wait on children of other threads in this group */ #define __WALL 0x40000000 /* Wait for any child. */ #define __WCLONE 0x80000000 /* Wait for cloned process. */ Convert-Binary-C-0.76/tests/include/include/bits/ioctl-types.h0000644000175000001440000000474711550664624023026 0ustar mhxusers/* Structure types for pre-termios terminal ioctls. Linux version. Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_IOCTL_H # error "Never use directly; include instead." #endif /* Get definition of constants for use with `ioctl'. */ #include struct winsize { unsigned short int ws_row; unsigned short int ws_col; unsigned short int ws_xpixel; unsigned short int ws_ypixel; }; #define NCC 8 struct termio { unsigned short int c_iflag; /* input mode flags */ unsigned short int c_oflag; /* output mode flags */ unsigned short int c_cflag; /* control mode flags */ unsigned short int c_lflag; /* local mode flags */ unsigned char c_line; /* line discipline */ unsigned char c_cc[NCC]; /* control characters */ }; /* modem lines */ #define TIOCM_LE 0x001 #define TIOCM_DTR 0x002 #define TIOCM_RTS 0x004 #define TIOCM_ST 0x008 #define TIOCM_SR 0x010 #define TIOCM_CTS 0x020 #define TIOCM_CAR 0x040 #define TIOCM_RNG 0x080 #define TIOCM_DSR 0x100 #define TIOCM_CD TIOCM_CAR #define TIOCM_RI TIOCM_RNG /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ /* line disciplines */ #define N_TTY 0 #define N_SLIP 1 #define N_MOUSE 2 #define N_PPP 3 #define N_STRIP 4 #define N_AX25 5 #define N_X25 6 /* X.25 async */ #define N_6PACK 7 #define N_MASC 8 /* Mobitex module */ #define N_R3964 9 /* Simatic R3964 module */ #define N_PROFIBUS_FDL 10 /* Profibus */ #define N_IRDA 11 /* Linux IR */ #define N_SMSBLOCK 12 /* SMS block mode */ #define N_HDLC 13 /* synchronous HDLC */ #define N_SYNC_PPP 14 /* synchronous PPP */ #define N_HCI 15 /* Bluetooth HCI UART */ Convert-Binary-C-0.76/tests/include/include/bits/huge_valf.h0000644000175000001440000000355511550664624022506 0ustar mhxusers/* `HUGE_VALF' constant for IEEE 754 machines (where it is infinity). Used by and functions for overflow. Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _MATH_H # error "Never use directly; include instead." #endif /* IEEE positive infinity (-HUGE_VAL is negative infinity). */ #if __GNUC_PREREQ(3,3) # define HUGE_VALF (__builtin_huge_valf()) #elif __GNUC_PREREQ(2,96) # define HUGE_VALF (__extension__ 0x1.0p255f) #elif defined __GNUC__ # define HUGE_VALF \ (__extension__ \ ((union { unsigned __l __attribute__((__mode__(__SI__))); float __d; }) \ { __l: 0x7f800000UL }).__d) #else /* not GCC */ typedef union { unsigned char __c[4]; float __f; } __huge_valf_t; # if __BYTE_ORDER == __BIG_ENDIAN # define __HUGE_VALF_bytes { 0x7f, 0x80, 0, 0 } # endif # if __BYTE_ORDER == __LITTLE_ENDIAN # define __HUGE_VALF_bytes { 0, 0, 0x80, 0x7f } # endif static __huge_valf_t __huge_valf = { __HUGE_VALF_bytes }; # define HUGE_VALF (__huge_valf.__f) #endif /* GCC. */ Convert-Binary-C-0.76/tests/include/include/bits/huge_vall.h0000644000175000001440000000321311550664624022503 0ustar mhxusers/* `HUGE_VALL' constant for ix86 (where it is infinity). Used by and functions for overflow. Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _MATH_H # error "Never use directly; include instead." #endif #if __GNUC_PREREQ(3,3) # define HUGE_VALL (__builtin_huge_vall()) #elif __GNUC_PREREQ(2,96) # define HUGE_VALL (__extension__ 0x1.0p32767L) #else # define __HUGE_VALL_bytes { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xff, 0x7f, 0, 0 } # define __huge_vall_t union { unsigned char __c[12]; long double __ld; } # ifdef __GNUC__ # define HUGE_VALL (__extension__ \ ((__huge_vall_t) { __c: __HUGE_VALL_bytes }).__ld) # else /* Not GCC. */ static __huge_vall_t __huge_vall = { __HUGE_VALL_bytes }; # define HUGE_VALL (__huge_vall.__ld) # endif /* GCC. */ #endif /* GCC 2.95 */ Convert-Binary-C-0.76/tests/include/include/bits/resource.h0000644000175000001440000001547011550664625022375 0ustar mhxusers/* Bit values & structures for resource limits. Linux version. Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_RESOURCE_H # error "Never use directly; include instead." #endif #include /* Transmute defines to enumerations. The macro re-definitions are necessary because some programs want to test for operating system features with #ifdef RUSAGE_SELF. In ISO C the reflexive definition is a no-op. */ /* Kinds of resource limit. */ enum __rlimit_resource { /* Per-process CPU limit, in seconds. */ RLIMIT_CPU = 0, #define RLIMIT_CPU RLIMIT_CPU /* Largest file that can be created, in bytes. */ RLIMIT_FSIZE = 1, #define RLIMIT_FSIZE RLIMIT_FSIZE /* Maximum size of data segment, in bytes. */ RLIMIT_DATA = 2, #define RLIMIT_DATA RLIMIT_DATA /* Maximum size of stack segment, in bytes. */ RLIMIT_STACK = 3, #define RLIMIT_STACK RLIMIT_STACK /* Largest core file that can be created, in bytes. */ RLIMIT_CORE = 4, #define RLIMIT_CORE RLIMIT_CORE /* Largest resident set size, in bytes. This affects swapping; processes that are exceeding their resident set size will be more likely to have physical memory taken from them. */ __RLIMIT_RSS = 5, #define RLIMIT_RSS __RLIMIT_RSS /* Number of open files. */ RLIMIT_NOFILE = 7, __RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */ #define RLIMIT_NOFILE RLIMIT_NOFILE #define RLIMIT_OFILE __RLIMIT_OFILE /* Address space limit. */ RLIMIT_AS = 9, #define RLIMIT_AS RLIMIT_AS /* Number of processes. */ __RLIMIT_NPROC = 6, #define RLIMIT_NPROC __RLIMIT_NPROC /* Locked-in-memory address space. */ __RLIMIT_MEMLOCK = 8, #define RLIMIT_MEMLOCK __RLIMIT_MEMLOCK /* Maximum number of file locks. */ __RLIMIT_LOCKS = 10, #define RLIMIT_LOCKS __RLIMIT_LOCKS /* Maximum number of pending signals. */ __RLIMIT_SIGPENDING = 11, #define RLIMIT_SIGPENDING __RLIMIT_SIGPENDING /* Maximum bytes in POSIX message queues. */ __RLIMIT_MSGQUEUE = 12, #define RLIMIT_MSGQUEUE __RLIMIT_MSGQUEUE /* Maximum nice priority allowed to raise to. Nice levels 19 .. -20 correspond to 0 .. 39 values of this resource limit. */ __RLIMIT_NICE = 13, #define RLIMIT_NICE __RLIMIT_NICE /* Maximum realtime priority allowed for non-priviledged processes. */ __RLIMIT_RTPRIO = 14, #define RLIMIT_RTPRIO __RLIMIT_RTPRIO __RLIMIT_NLIMITS = 15, __RLIM_NLIMITS = __RLIMIT_NLIMITS #define RLIMIT_NLIMITS __RLIMIT_NLIMITS #define RLIM_NLIMITS __RLIM_NLIMITS }; /* Value to indicate that there is no limit. */ #ifndef __USE_FILE_OFFSET64 # define RLIM_INFINITY ((unsigned long int)(~0UL)) #else # define RLIM_INFINITY 0xffffffffffffffffuLL #endif #ifdef __USE_LARGEFILE64 # define RLIM64_INFINITY 0xffffffffffffffffuLL #endif /* We can represent all limits. */ #define RLIM_SAVED_MAX RLIM_INFINITY #define RLIM_SAVED_CUR RLIM_INFINITY /* Type for resource quantity measurement. */ #ifndef __USE_FILE_OFFSET64 typedef __rlim_t rlim_t; #else typedef __rlim64_t rlim_t; #endif #ifdef __USE_LARGEFILE64 typedef __rlim64_t rlim64_t; #endif struct rlimit { /* The current (soft) limit. */ rlim_t rlim_cur; /* The hard limit. */ rlim_t rlim_max; }; #ifdef __USE_LARGEFILE64 struct rlimit64 { /* The current (soft) limit. */ rlim64_t rlim_cur; /* The hard limit. */ rlim64_t rlim_max; }; #endif /* Whose usage statistics do you want? */ enum __rusage_who { /* The calling process. */ RUSAGE_SELF = 0, #define RUSAGE_SELF RUSAGE_SELF /* All of its terminated child processes. */ RUSAGE_CHILDREN = -1 #define RUSAGE_CHILDREN RUSAGE_CHILDREN }; #define __need_timeval #include /* For `struct timeval'. */ /* Structure which says how much of each resource has been used. */ struct rusage { /* Total amount of user time used. */ struct timeval ru_utime; /* Total amount of system time used. */ struct timeval ru_stime; /* Maximum resident set size (in kilobytes). */ long int ru_maxrss; /* Amount of sharing of text segment memory with other processes (kilobyte-seconds). */ long int ru_ixrss; /* Amount of data segment memory used (kilobyte-seconds). */ long int ru_idrss; /* Amount of stack memory used (kilobyte-seconds). */ long int ru_isrss; /* Number of soft page faults (i.e. those serviced by reclaiming a page from the list of pages awaiting reallocation. */ long int ru_minflt; /* Number of hard page faults (i.e. those that required I/O). */ long int ru_majflt; /* Number of times a process was swapped out of physical memory. */ long int ru_nswap; /* Number of input operations via the file system. Note: This and `ru_oublock' do not include operations with the cache. */ long int ru_inblock; /* Number of output operations via the file system. */ long int ru_oublock; /* Number of IPC messages sent. */ long int ru_msgsnd; /* Number of IPC messages received. */ long int ru_msgrcv; /* Number of signals delivered. */ long int ru_nsignals; /* Number of voluntary context switches, i.e. because the process gave up the process before it had to (usually to wait for some resource to be available). */ long int ru_nvcsw; /* Number of involuntary context switches, i.e. a higher priority process became runnable or the current process used up its time slice. */ long int ru_nivcsw; }; /* Priority limits. */ #define PRIO_MIN -20 /* Minimum priority a process can have. */ #define PRIO_MAX 20 /* Maximum priority a process can have. */ /* The type of the WHICH argument to `getpriority' and `setpriority', indicating what flavor of entity the WHO argument specifies. */ enum __priority_which { PRIO_PROCESS = 0, /* WHO is a process ID. */ #define PRIO_PROCESS PRIO_PROCESS PRIO_PGRP = 1, /* WHO is a process group ID. */ #define PRIO_PGRP PRIO_PGRP PRIO_USER = 2 /* WHO is a user ID. */ #define PRIO_USER PRIO_USER }; Convert-Binary-C-0.76/tests/include/include/bits/inf.h0000644000175000001440000000214311550664624021312 0ustar mhxusers/* `INFINITY' constant for IEEE 754 machines. Copyright (C) 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _MATH_H # error "Never use directly; include instead." #endif /* IEEE positive infinity. */ #if __GNUC_PREREQ(3,3) # define INFINITY (__builtin_inff()) #else # define INFINITY HUGE_VALF #endif Convert-Binary-C-0.76/tests/include/include/bits/ipc.h0000644000175000001440000000411711550664624021314 0ustar mhxusers/* Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_IPC_H # error "Never use directly; include instead." #endif #include /* Mode bits for `msgget', `semget', and `shmget'. */ #define IPC_CREAT 01000 /* Create key if key does not exist. */ #define IPC_EXCL 02000 /* Fail if key exists. */ #define IPC_NOWAIT 04000 /* Return error on wait. */ /* Control commands for `msgctl', `semctl', and `shmctl'. */ #define IPC_RMID 0 /* Remove identifier. */ #define IPC_SET 1 /* Set `ipc_perm' options. */ #define IPC_STAT 2 /* Get `ipc_perm' options. */ #ifdef __USE_GNU # define IPC_INFO 3 /* See ipcs. */ #endif /* Special key values. */ #define IPC_PRIVATE ((__key_t) 0) /* Private key. */ /* Data structure used to pass permission information to IPC operations. */ struct ipc_perm { __key_t __key; /* Key. */ __uid_t uid; /* Owner's user ID. */ __gid_t gid; /* Owner's group ID. */ __uid_t cuid; /* Creator's user ID. */ __gid_t cgid; /* Creator's group ID. */ unsigned short int mode; /* Read/write permission. */ unsigned short int __pad1; unsigned short int __seq; /* Sequence number. */ unsigned short int __pad2; unsigned long int __unused1; unsigned long int __unused2; }; Convert-Binary-C-0.76/tests/include/include/bits/nan.h0000644000175000001440000000315111550664624021312 0ustar mhxusers/* `NAN' constant for IEEE 754 machines. Copyright (C) 1992,1996,1997,1999,2004,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _MATH_H # error "Never use directly; include instead." #endif /* IEEE Not A Number. */ #if __GNUC_PREREQ(3,3) # define NAN (__builtin_nanf ("")) #elif defined __GNUC__ # define NAN \ (__extension__ \ ((union { unsigned __l __attribute__ ((__mode__ (__SI__))); float __d; }) \ { __l: 0x7fc00000UL }).__d) #else # include # if __BYTE_ORDER == __BIG_ENDIAN # define __nan_bytes { 0x7f, 0xc0, 0, 0 } # endif # if __BYTE_ORDER == __LITTLE_ENDIAN # define __nan_bytes { 0, 0, 0xc0, 0x7f } # endif static union { unsigned char __c[4]; float __d; } __nan_union __attribute_used__ = { __nan_bytes }; # define NAN (__nan_union.__d) #endif /* GCC. */ Convert-Binary-C-0.76/tests/include/include/bits/sem.h0000644000175000001440000000513011550664625021322 0ustar mhxusers/* Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_SEM_H # error "Never include directly; use instead." #endif #include /* Flags for `semop'. */ #define SEM_UNDO 0x1000 /* undo the operation on exit */ /* Commands for `semctl'. */ #define GETPID 11 /* get sempid */ #define GETVAL 12 /* get semval */ #define GETALL 13 /* get all semval's */ #define GETNCNT 14 /* get semncnt */ #define GETZCNT 15 /* get semzcnt */ #define SETVAL 16 /* set semval */ #define SETALL 17 /* set all semval's */ /* Data structure describing a set of semaphores. */ struct semid_ds { struct ipc_perm sem_perm; /* operation permission struct */ __time_t sem_otime; /* last semop() time */ unsigned long int __unused1; __time_t sem_ctime; /* last time changed by semctl() */ unsigned long int __unused2; unsigned long int sem_nsems; /* number of semaphores in set */ unsigned long int __unused3; unsigned long int __unused4; }; /* The user should define a union like the following to use it for arguments for `semctl'. union semun { int val; <= value for SETVAL struct semid_ds *buf; <= buffer for IPC_STAT & IPC_SET unsigned short int *array; <= array for GETALL & SETALL struct seminfo *__buf; <= buffer for IPC_INFO }; Previous versions of this file used to define this union but this is incorrect. One can test the macro _SEM_SEMUN_UNDEFINED to see whether one must define the union or not. */ #define _SEM_SEMUN_UNDEFINED 1 #ifdef __USE_MISC /* ipcs ctl cmds */ # define SEM_STAT 18 # define SEM_INFO 19 struct seminfo { int semmap; int semmni; int semmns; int semmnu; int semmsl; int semopm; int semume; int semusz; int semvmx; int semaem; }; #endif /* __USE_MISC */ Convert-Binary-C-0.76/tests/include/include/bits/posix1_lim.h0000644000175000001440000001134011550664625022622 0ustar mhxusers/* Copyright (C) 1991-1993,96,98,2000-2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * POSIX Standard: 2.9.2 Minimum Values Added to * * Never include this file directly; use instead. */ #ifndef _BITS_POSIX1_LIM_H #define _BITS_POSIX1_LIM_H 1 /* These are the standard-mandated minimum values. */ /* Minimum number of operations in one list I/O call. */ #define _POSIX_AIO_LISTIO_MAX 2 /* Minimal number of outstanding asynchronous I/O operations. */ #define _POSIX_AIO_MAX 1 /* Maximum length of arguments to `execve', including environment. */ #define _POSIX_ARG_MAX 4096 /* Maximum simultaneous processes per real user ID. */ #ifdef __USE_XOPEN2K # define _POSIX_CHILD_MAX 25 #else # define _POSIX_CHILD_MAX 6 #endif /* Minimal number of timer expiration overruns. */ #define _POSIX_DELAYTIMER_MAX 32 /* Maximum length of a host name (not including the terminating null) as returned from the GETHOSTNAME function. */ #define _POSIX_HOST_NAME_MAX 255 /* Maximum link count of a file. */ #define _POSIX_LINK_MAX 8 /* Maximum length of login name. */ #define _POSIX_LOGIN_NAME_MAX 9 /* Number of bytes in a terminal canonical input queue. */ #define _POSIX_MAX_CANON 255 /* Number of bytes for which space will be available in a terminal input queue. */ #define _POSIX_MAX_INPUT 255 /* Maximum number of message queues open for a process. */ #define _POSIX_MQ_OPEN_MAX 8 /* Maximum number of supported message priorities. */ #define _POSIX_MQ_PRIO_MAX 32 /* Number of bytes in a filename. */ #define _POSIX_NAME_MAX 14 /* Number of simultaneous supplementary group IDs per process. */ #ifdef __USE_XOPEN2K # define _POSIX_NGROUPS_MAX 8 #else # define _POSIX_NGROUPS_MAX 0 #endif /* Number of files one process can have open at once. */ #ifdef __USE_XOPEN2K # define _POSIX_OPEN_MAX 20 #else # define _POSIX_OPEN_MAX 16 #endif /* Number of descriptors that a process may examine with `pselect' or `select'. */ #define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX /* Number of bytes in a pathname. */ #define _POSIX_PATH_MAX 256 /* Number of bytes than can be written atomically to a pipe. */ #define _POSIX_PIPE_BUF 512 /* The number of repeated occurrences of a BRE permitted by the REGEXEC and REGCOMP functions when using the interval notation. */ #define _POSIX_RE_DUP_MAX 255 /* Minimal number of realtime signals reserved for the application. */ #define _POSIX_RTSIG_MAX 8 /* Number of semaphores a process can have. */ #define _POSIX_SEM_NSEMS_MAX 256 /* Maximal value of a semaphore. */ #define _POSIX_SEM_VALUE_MAX 32767 /* Number of pending realtime signals. */ #define _POSIX_SIGQUEUE_MAX 32 /* Largest value of a `ssize_t'. */ #define _POSIX_SSIZE_MAX 32767 /* Number of streams a process can have open at once. */ #define _POSIX_STREAM_MAX 8 /* The number of bytes in a symbolic link. */ #define _POSIX_SYMLINK_MAX 255 /* The number of symbolic links that can be traversed in the resolution of a pathname in the absence of a loop. */ #define _POSIX_SYMLOOP_MAX 8 /* Number of timer for a process. */ #define _POSIX_TIMER_MAX 32 /* Maximum number of characters in a tty name. */ #define _POSIX_TTY_NAME_MAX 9 /* Maximum length of a timezone name (element of `tzname'). */ #define _POSIX_TZNAME_MAX 6 /* Maximum number of connections that can be queued on a socket. */ #define _POSIX_QLIMIT 1 /* Maximum number of bytes that can be buffered on a socket for send or receive. */ #define _POSIX_HIWAT _POSIX_PIPE_BUF /* Maximum number of elements in an `iovec' array. */ #define _POSIX_UIO_MAXIOV 16 /* Maximum clock resolution in nanoseconds. */ #define _POSIX_CLOCKRES_MIN 20000000 /* Get the implementation-specific values for the above. */ #include #ifndef SSIZE_MAX # define SSIZE_MAX LONG_MAX #endif /* This value is a guaranteed minimum maximum. The current maximum can be got from `sysconf'. */ #ifndef NGROUPS_MAX # define NGROUPS_MAX 8 #endif #endif /* bits/posix1_lim.h */ Convert-Binary-C-0.76/tests/include/include/bits/uio.h0000644000175000001440000000332711550664625021340 0ustar mhxusers/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_UIO_H # error "Never include directly; use instead." #endif #include /* We should normally use the Linux kernel header file to define this type and macros but this calls for trouble because of the header includes other kernel headers. */ /* Size of object which can be written atomically. This macro has different values in different kernel versions. The latest versions of ther kernel use 1024 and this is good choice. Since the C library implementation of readv/writev is able to emulate the functionality even if the currently running kernel does not support this large value the readv/writev call will not fail because of this. */ #define UIO_MAXIOV 1024 /* Structure for scatter/gather I/O. */ struct iovec { void *iov_base; /* Pointer to data. */ size_t iov_len; /* Length of data. */ }; Convert-Binary-C-0.76/tests/include/include/bits/sigaction.h0000644000175000001440000000542111550664625022521 0ustar mhxusers/* The proper definitions for Linux's sigaction. Copyright (C) 1993-1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SIGNAL_H # error "Never include directly; use instead." #endif /* Structure describing the action to be taken when a signal arrives. */ struct sigaction { /* Signal handler. */ #ifdef __USE_POSIX199309 union { /* Used if SA_SIGINFO is not set. */ __sighandler_t sa_handler; /* Used if SA_SIGINFO is set. */ void (*sa_sigaction) (int, siginfo_t *, void *); } __sigaction_handler; # define sa_handler __sigaction_handler.sa_handler # define sa_sigaction __sigaction_handler.sa_sigaction #else __sighandler_t sa_handler; #endif /* Additional set of signals to be blocked. */ __sigset_t sa_mask; /* Special flags. */ int sa_flags; /* Restore handler. */ void (*sa_restorer) (void); }; /* Bits in `sa_flags'. */ #define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */ #define SA_NOCLDWAIT 2 /* Don't create zombie on child death. */ #define SA_SIGINFO 4 /* Invoke signal-catching function with three arguments instead of one. */ #if defined __USE_UNIX98 || defined __USE_MISC # define SA_ONSTACK 0x08000000 /* Use signal stack by using `sa_restorer'. */ # define SA_RESTART 0x10000000 /* Restart syscall on signal return. */ # define SA_NODEFER 0x40000000 /* Don't automatically block the signal when its handler is being executed. */ # define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */ #endif #ifdef __USE_MISC # define SA_INTERRUPT 0x20000000 /* Historical no-op. */ /* Some aliases for the SA_ constants. */ # define SA_NOMASK SA_NODEFER # define SA_ONESHOT SA_RESETHAND # define SA_STACK SA_ONSTACK #endif /* Values for the HOW argument to `sigprocmask'. */ #define SIG_BLOCK 0 /* Block signals. */ #define SIG_UNBLOCK 1 /* Unblock signals. */ #define SIG_SETMASK 2 /* Set the set of blocked signals. */ Convert-Binary-C-0.76/tests/include/include/bits/signum.h0000644000175000001440000000663411550664625022052 0ustar mhxusers/* Signal number definitions. Linux version. Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifdef _SIGNAL_H /* Fake signal functions. */ #define SIG_ERR ((__sighandler_t) -1) /* Error return. */ #define SIG_DFL ((__sighandler_t) 0) /* Default action. */ #define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */ #ifdef __USE_UNIX98 # define SIG_HOLD ((__sighandler_t) 2) /* Add signal to hold mask. */ #endif /* Signals. */ #define SIGHUP 1 /* Hangup (POSIX). */ #define SIGINT 2 /* Interrupt (ANSI). */ #define SIGQUIT 3 /* Quit (POSIX). */ #define SIGILL 4 /* Illegal instruction (ANSI). */ #define SIGTRAP 5 /* Trace trap (POSIX). */ #define SIGABRT 6 /* Abort (ANSI). */ #define SIGIOT 6 /* IOT trap (4.2 BSD). */ #define SIGBUS 7 /* BUS error (4.2 BSD). */ #define SIGFPE 8 /* Floating-point exception (ANSI). */ #define SIGKILL 9 /* Kill, unblockable (POSIX). */ #define SIGUSR1 10 /* User-defined signal 1 (POSIX). */ #define SIGSEGV 11 /* Segmentation violation (ANSI). */ #define SIGUSR2 12 /* User-defined signal 2 (POSIX). */ #define SIGPIPE 13 /* Broken pipe (POSIX). */ #define SIGALRM 14 /* Alarm clock (POSIX). */ #define SIGTERM 15 /* Termination (ANSI). */ #define SIGSTKFLT 16 /* Stack fault. */ #define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */ #define SIGCHLD 17 /* Child status has changed (POSIX). */ #define SIGCONT 18 /* Continue (POSIX). */ #define SIGSTOP 19 /* Stop, unblockable (POSIX). */ #define SIGTSTP 20 /* Keyboard stop (POSIX). */ #define SIGTTIN 21 /* Background read from tty (POSIX). */ #define SIGTTOU 22 /* Background write to tty (POSIX). */ #define SIGURG 23 /* Urgent condition on socket (4.2 BSD). */ #define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */ #define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */ #define SIGVTALRM 26 /* Virtual alarm clock (4.2 BSD). */ #define SIGPROF 27 /* Profiling alarm clock (4.2 BSD). */ #define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */ #define SIGPOLL SIGIO /* Pollable event occurred (System V). */ #define SIGIO 29 /* I/O now possible (4.2 BSD). */ #define SIGPWR 30 /* Power failure restart (System V). */ #define SIGSYS 31 /* Bad system call. */ #define SIGUNUSED 31 #define _NSIG 65 /* Biggest signal number + 1 (including real-time signals). */ #define SIGRTMIN (__libc_current_sigrtmin ()) #define SIGRTMAX (__libc_current_sigrtmax ()) /* These are the hard limits of the kernel. These values should not be used directly at user level. */ #define __SIGRTMIN 32 #define __SIGRTMAX (_NSIG - 1) #endif /* included. */ Convert-Binary-C-0.76/tests/include/include/bits/sigset.h0000644000175000001440000001104311550664625022034 0ustar mhxusers/* __sig_atomic_t, __sigset_t, and related definitions. Linux version. Copyright (C) 1991, 1992, 1994, 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SIGSET_H_types # define _SIGSET_H_types 1 typedef int __sig_atomic_t; /* A `sigset_t' has a bit for each signal. */ # define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) typedef struct { unsigned long int __val[_SIGSET_NWORDS]; } __sigset_t; #endif /* We only want to define these functions if was actually included; otherwise we were included just to define the types. Since we are namespace-clean, it wouldn't hurt to define extra macros. But trouble can be caused by functions being defined (e.g., any global register vars declared later will cause compilation errors). */ #if !defined _SIGSET_H_fns && defined _SIGNAL_H # define _SIGSET_H_fns 1 # ifndef _EXTERN_INLINE # define _EXTERN_INLINE extern __inline # endif /* Return a mask that includes the bit for SIG only. */ # define __sigmask(sig) \ (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int)))) /* Return the word index for SIG. */ # define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int))) # if defined __GNUC__ && __GNUC__ >= 2 # define __sigemptyset(set) \ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ sigset_t *__set = (set); \ while (--__cnt >= 0) __set->__val[__cnt] = 0; \ 0; })) # define __sigfillset(set) \ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ sigset_t *__set = (set); \ while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; \ 0; })) # ifdef __USE_GNU /* The POSIX does not specify for handling the whole signal set in one command. This is often wanted and so we define three more functions here. */ # define __sigisemptyset(set) \ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ const sigset_t *__set = (set); \ int __ret = __set->__val[--__cnt]; \ while (!__ret && --__cnt >= 0) \ __ret = __set->__val[__cnt]; \ __ret == 0; })) # define __sigandset(dest, left, right) \ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ sigset_t *__dest = (dest); \ const sigset_t *__left = (left); \ const sigset_t *__right = (right); \ while (--__cnt >= 0) \ __dest->__val[__cnt] = (__left->__val[__cnt] \ & __right->__val[__cnt]); \ 0; })) # define __sigorset(dest, left, right) \ (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ sigset_t *__dest = (dest); \ const sigset_t *__left = (left); \ const sigset_t *__right = (right); \ while (--__cnt >= 0) \ __dest->__val[__cnt] = (__left->__val[__cnt] \ | __right->__val[__cnt]); \ 0; })) # endif # endif /* These functions needn't check for a bogus signal number -- error checking is done in the non __ versions. */ extern int __sigismember (__const __sigset_t *, int); extern int __sigaddset (__sigset_t *, int); extern int __sigdelset (__sigset_t *, int); # ifdef __USE_EXTERN_INLINES # define __SIGSETFN(NAME, BODY, CONST) \ _EXTERN_INLINE int \ NAME (CONST __sigset_t *__set, int __sig) \ { \ unsigned long int __mask = __sigmask (__sig); \ unsigned long int __word = __sigword (__sig); \ return BODY; \ } __SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, __const) __SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), ) __SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), ) # undef __SIGSETFN # endif #endif /* ! _SIGSET_H_fns. */ Convert-Binary-C-0.76/tests/include/include/bits/waitstatus.h0000644000175000001440000000706711550664626022762 0ustar mhxusers/* Definitions of status bits for `wait' et al. Copyright (C) 1992,1994,1996,1997,2000,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #if !defined _SYS_WAIT_H && !defined _STDLIB_H # error "Never include directly; use instead." #endif /* Everything extant so far uses these same bits. */ /* If WIFEXITED(STATUS), the low-order 8 bits of the status. */ #define __WEXITSTATUS(status) (((status) & 0xff00) >> 8) /* If WIFSIGNALED(STATUS), the terminating signal. */ #define __WTERMSIG(status) ((status) & 0x7f) /* If WIFSTOPPED(STATUS), the signal that stopped the child. */ #define __WSTOPSIG(status) __WEXITSTATUS(status) /* Nonzero if STATUS indicates normal termination. */ #define __WIFEXITED(status) (__WTERMSIG(status) == 0) /* Nonzero if STATUS indicates termination by a signal. */ #define __WIFSIGNALED(status) \ (((signed char) (((status) & 0x7f) + 1) >> 1) > 0) /* Nonzero if STATUS indicates the child is stopped. */ #define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f) /* Nonzero if STATUS indicates the child continued after a stop. We only define this if provides the WCONTINUED flag bit. */ #ifdef WCONTINUED # define __WIFCONTINUED(status) ((status) == __W_CONTINUED) #endif /* Nonzero if STATUS indicates the child dumped core. */ #define __WCOREDUMP(status) ((status) & __WCOREFLAG) /* Macros for constructing status values. */ #define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) #define __W_STOPCODE(sig) ((sig) << 8 | 0x7f) #define __W_CONTINUED 0xffff #define __WCOREFLAG 0x80 #ifdef __USE_BSD # include union wait { int w_status; struct { # if __BYTE_ORDER == __LITTLE_ENDIAN unsigned int __w_termsig:7; /* Terminating signal. */ unsigned int __w_coredump:1; /* Set if dumped core. */ unsigned int __w_retcode:8; /* Return code if exited normally. */ unsigned int:16; # endif /* Little endian. */ # if __BYTE_ORDER == __BIG_ENDIAN unsigned int:16; unsigned int __w_retcode:8; unsigned int __w_coredump:1; unsigned int __w_termsig:7; # endif /* Big endian. */ } __wait_terminated; struct { # if __BYTE_ORDER == __LITTLE_ENDIAN unsigned int __w_stopval:8; /* W_STOPPED if stopped. */ unsigned int __w_stopsig:8; /* Stopping signal. */ unsigned int:16; # endif /* Little endian. */ # if __BYTE_ORDER == __BIG_ENDIAN unsigned int:16; unsigned int __w_stopsig:8; /* Stopping signal. */ unsigned int __w_stopval:8; /* W_STOPPED if stopped. */ # endif /* Big endian. */ } __wait_stopped; }; # define w_termsig __wait_terminated.__w_termsig # define w_coredump __wait_terminated.__w_coredump # define w_retcode __wait_terminated.__w_retcode # define w_stopsig __wait_stopped.__w_stopsig # define w_stopval __wait_stopped.__w_stopval #endif /* Use BSD. */ Convert-Binary-C-0.76/tests/include/include/bits/dirent.h0000644000175000001440000000311111550664624022017 0ustar mhxusers/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _DIRENT_H # error "Never use directly; include instead." #endif struct dirent { #ifndef __USE_FILE_OFFSET64 __ino_t d_ino; __off_t d_off; #else __ino64_t d_ino; __off64_t d_off; #endif unsigned short int d_reclen; unsigned char d_type; char d_name[256]; /* We must not include limits.h! */ }; #ifdef __USE_LARGEFILE64 struct dirent64 { __ino64_t d_ino; __off64_t d_off; unsigned short int d_reclen; unsigned char d_type; char d_name[256]; /* We must not include limits.h! */ }; #endif #define d_fileno d_ino /* Backwards compatibility. */ #undef _DIRENT_HAVE_D_NAMLEN #define _DIRENT_HAVE_D_RECLEN #define _DIRENT_HAVE_D_OFF #define _DIRENT_HAVE_D_TYPE Convert-Binary-C-0.76/tests/include/include/bits/xopen_lim.h0000644000175000001440000000737511550664626022546 0ustar mhxusers/* Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * Never include this file directly; use instead. */ /* Additional definitions from X/Open Portability Guide, Issue 4, Version 2 System Interfaces and Headers, 4.16 Please note only the values which are not greater than the minimum stated in the standard document are listed. The `sysconf' functions should be used to obtain the actual value. */ #ifndef _XOPEN_LIM_H #define _XOPEN_LIM_H 1 #define __need_IOV_MAX #include /* We do not provide fixed values for ARG_MAX Maximum length of argument to the `exec' function including environment data. ATEXIT_MAX Maximum number of functions that may be registered with `atexit'. CHILD_MAX Maximum number of simultaneous processes per real user ID. OPEN_MAX Maximum number of files that one process can have open at anyone time. PAGESIZE PAGE_SIZE Size of bytes of a page. PASS_MAX Maximum number of significant bytes in a password. We only provide a fixed limit for IOV_MAX Maximum number of `iovec' structures that one process has available for use with `readv' or writev'. if this is indeed fixed by the underlying system. */ /* Maximum number of `iovec' structures that one process has available for use with `readv' or writev'. */ #define _XOPEN_IOV_MAX _POSIX_UIO_MAXIOV /* Maximum value of `digit' in calls to the `printf' and `scanf' functions. We have no limit, so return a reasonable value. */ #define NL_ARGMAX _POSIX_ARG_MAX /* Maximum number of bytes in a `LANG' name. We have no limit. */ #define NL_LANGMAX _POSIX2_LINE_MAX /* Maximum message number. We have no limit. */ #define NL_MSGMAX INT_MAX /* Maximum number of bytes in N-to-1 collation mapping. We have no limit. */ #define NL_NMAX INT_MAX /* Maximum set number. We have no limit. */ #define NL_SETMAX INT_MAX /* Maximum number of bytes in a message. We have no limit. */ #define NL_TEXTMAX INT_MAX /* Default process priority. */ #define NZERO 20 /* Number of bits in a word of type `int'. */ #ifdef INT_MAX # if INT_MAX == 32767 # define WORD_BIT 16 # else # if INT_MAX == 2147483647 # define WORD_BIT 32 # else /* Safe assumption. */ # define WORD_BIT 64 # endif # endif #elif defined __INT_MAX__ # if __INT_MAX__ == 32767 # define WORD_BIT 16 # else # if __INT_MAX__ == 2147483647 # define WORD_BIT 32 # else /* Safe assumption. */ # define WORD_BIT 64 # endif # endif #else # define WORD_BIT 32 #endif /* Number of bits in a word of type `long int'. */ #ifdef LONG_MAX # if LONG_MAX == 2147483647 # define LONG_BIT 32 # else /* Safe assumption. */ # define LONG_BIT 64 # endif #elif defined __LONG_MAX__ # if __LONG_MAX__ == 2147483647 # define LONG_BIT 32 # else /* Safe assumption. */ # define LONG_BIT 64 # endif #else # include # if __WORDSIZE == 64 # define LONG_BIT 64 # else # define LONG_BIT 32 # endif #endif #endif /* bits/xopen_lim.h */ Convert-Binary-C-0.76/tests/include/include/bits/sigcontext.h0000644000175000001440000000225611550664625022733 0ustar mhxusers/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H # error "Never use directly; include instead." #endif #ifndef sigcontext_struct /* Kernel headers before 2.1.1 define a struct sigcontext_struct, but we need sigcontext. */ # define sigcontext_struct sigcontext # include #endif Convert-Binary-C-0.76/tests/include/include/bits/ipctypes.h0000644000175000001440000000231111550664624022373 0ustar mhxusers/* bits/ipctypes.h -- Define some types used by SysV IPC/MSG/SHM. Generic. Copyright (C) 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * Never include directly. */ #ifndef _BITS_IPCTYPES_H #define _BITS_IPCTYPES_H 1 #include /* Used in `struct shmid_ds'. */ # if __WORDSIZE == 32 typedef unsigned short int __ipc_pid_t; # else typedef int __ipc_pid_t; # endif #endif /* bits/ipctypes.h */ Convert-Binary-C-0.76/tests/include/include/bits/sigthread.h0000644000175000001440000000303511550664625022512 0ustar mhxusers/* Signal handling function for threaded programs. Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _BITS_SIGTHREAD_H #define _BITS_SIGTHREAD_H 1 #if !defined _SIGNAL_H && !defined _PTHREAD_H # error "Never include this file directly. Use instead" #endif /* Functions for handling signals. */ /* Modify the signal mask for the calling thread. The arguments have the same meaning as for sigprocmask(2). */ extern int pthread_sigmask (int __how, __const __sigset_t *__restrict __newmask, __sigset_t *__restrict __oldmask)__THROW; /* Send signal SIGNO to the given thread. */ extern int pthread_kill (pthread_t __threadid, int __signo) __THROW; #endif /* bits/sigthread.h */ Convert-Binary-C-0.76/tests/include/include/bits/mathcalls.h0000644000175000001440000002646211550664624022520 0ustar mhxusers/* Prototype declarations for math functions; helper file for . Copyright (C) 1996-2002, 2003, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* NOTE: Because of the special way this file is used by , this file must NOT be protected from multiple inclusion as header files usually are. This file provides prototype declarations for the math functions. Most functions are declared using the macro: __MATHCALL (NAME,[_r], (ARGS...)); This means there is a function `NAME' returning `double' and a function `NAMEf' returning `float'. Each place `_Mdouble_' appears in the prototype, that is actually `double' in the prototype for `NAME' and `float' in the prototype for `NAMEf'. Reentrant variant functions are called `NAME_r' and `NAMEf_r'. Functions returning other types like `int' are declared using the macro: __MATHDECL (TYPE, NAME,[_r], (ARGS...)); This is just like __MATHCALL but for a function returning `TYPE' instead of `_Mdouble_'. In all of these cases, there is still both a `NAME' and a `NAMEf' that takes `float' arguments. Note that there must be no whitespace before the argument passed for NAME, to make token pasting work with -traditional. */ #ifndef _MATH_H # error "Never include directly; include instead." #endif /* Trigonometric functions. */ _Mdouble_BEGIN_NAMESPACE /* Arc cosine of X. */ __MATHCALL (acos,, (_Mdouble_ __x)); /* Arc sine of X. */ __MATHCALL (asin,, (_Mdouble_ __x)); /* Arc tangent of X. */ __MATHCALL (atan,, (_Mdouble_ __x)); /* Arc tangent of Y/X. */ __MATHCALL (atan2,, (_Mdouble_ __y, _Mdouble_ __x)); /* Cosine of X. */ __MATHCALL (cos,, (_Mdouble_ __x)); /* Sine of X. */ __MATHCALL (sin,, (_Mdouble_ __x)); /* Tangent of X. */ __MATHCALL (tan,, (_Mdouble_ __x)); /* Hyperbolic functions. */ /* Hyperbolic cosine of X. */ __MATHCALL (cosh,, (_Mdouble_ __x)); /* Hyperbolic sine of X. */ __MATHCALL (sinh,, (_Mdouble_ __x)); /* Hyperbolic tangent of X. */ __MATHCALL (tanh,, (_Mdouble_ __x)); _Mdouble_END_NAMESPACE #ifdef __USE_GNU /* Cosine and sine of X. */ __MATHDECL (void,sincos,, (_Mdouble_ __x, _Mdouble_ *__sinx, _Mdouble_ *__cosx)); #endif #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Hyperbolic arc cosine of X. */ __MATHCALL (acosh,, (_Mdouble_ __x)); /* Hyperbolic arc sine of X. */ __MATHCALL (asinh,, (_Mdouble_ __x)); /* Hyperbolic arc tangent of X. */ __MATHCALL (atanh,, (_Mdouble_ __x)); __END_NAMESPACE_C99 #endif /* Exponential and logarithmic functions. */ _Mdouble_BEGIN_NAMESPACE /* Exponential function of X. */ __MATHCALL (exp,, (_Mdouble_ __x)); /* Break VALUE into a normalized fraction and an integral power of 2. */ __MATHCALL (frexp,, (_Mdouble_ __x, int *__exponent)); /* X times (two to the EXP power). */ __MATHCALL (ldexp,, (_Mdouble_ __x, int __exponent)); /* Natural logarithm of X. */ __MATHCALL (log,, (_Mdouble_ __x)); /* Base-ten logarithm of X. */ __MATHCALL (log10,, (_Mdouble_ __x)); /* Break VALUE into integral and fractional parts. */ __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr)); _Mdouble_END_NAMESPACE #ifdef __USE_GNU /* A function missing in all standards: compute exponent to base ten. */ __MATHCALL (exp10,, (_Mdouble_ __x)); /* Another name occasionally used. */ __MATHCALL (pow10,, (_Mdouble_ __x)); #endif #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Return exp(X) - 1. */ __MATHCALL (expm1,, (_Mdouble_ __x)); /* Return log(1 + X). */ __MATHCALL (log1p,, (_Mdouble_ __x)); /* Return the base 2 signed integral exponent of X. */ __MATHCALL (logb,, (_Mdouble_ __x)); __END_NAMESPACE_C99 #endif #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Compute base-2 exponential of X. */ __MATHCALL (exp2,, (_Mdouble_ __x)); /* Compute base-2 logarithm of X. */ __MATHCALL (log2,, (_Mdouble_ __x)); __END_NAMESPACE_C99 #endif /* Power functions. */ _Mdouble_BEGIN_NAMESPACE /* Return X to the Y power. */ __MATHCALL (pow,, (_Mdouble_ __x, _Mdouble_ __y)); /* Return the square root of X. */ __MATHCALL (sqrt,, (_Mdouble_ __x)); _Mdouble_END_NAMESPACE #if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Return `sqrt(X*X + Y*Y)'. */ __MATHCALL (hypot,, (_Mdouble_ __x, _Mdouble_ __y)); __END_NAMESPACE_C99 #endif #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Return the cube root of X. */ __MATHCALL (cbrt,, (_Mdouble_ __x)); __END_NAMESPACE_C99 #endif /* Nearest integer, absolute value, and remainder functions. */ _Mdouble_BEGIN_NAMESPACE /* Smallest integral value not less than X. */ __MATHCALLX (ceil,, (_Mdouble_ __x), (__const__)); /* Absolute value of X. */ __MATHCALLX (fabs,, (_Mdouble_ __x), (__const__)); /* Largest integer not greater than X. */ __MATHCALLX (floor,, (_Mdouble_ __x), (__const__)); /* Floating-point modulo remainder of X/Y. */ __MATHCALL (fmod,, (_Mdouble_ __x, _Mdouble_ __y)); /* Return 0 if VALUE is finite or NaN, +1 if it is +Infinity, -1 if it is -Infinity. */ __MATHDECL_1 (int,__isinf,, (_Mdouble_ __value)) __attribute__ ((__const__)); /* Return nonzero if VALUE is finite and not NaN. */ __MATHDECL_1 (int,__finite,, (_Mdouble_ __value)) __attribute__ ((__const__)); _Mdouble_END_NAMESPACE #ifdef __USE_MISC /* Return 0 if VALUE is finite or NaN, +1 if it is +Infinity, -1 if it is -Infinity. */ __MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__)); /* Return nonzero if VALUE is finite and not NaN. */ __MATHDECL_1 (int,finite,, (_Mdouble_ __value)) __attribute__ ((__const__)); /* Return the remainder of X/Y. */ __MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y)); /* Return the fractional part of X after dividing out `ilogb (X)'. */ __MATHCALL (significand,, (_Mdouble_ __x)); #endif /* Use misc. */ #if defined __USE_MISC || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Return X with its signed changed to Y's. */ __MATHCALLX (copysign,, (_Mdouble_ __x, _Mdouble_ __y), (__const__)); __END_NAMESPACE_C99 #endif #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Return representation of NaN for double type. */ __MATHCALLX (nan,, (__const char *__tagb), (__const__)); __END_NAMESPACE_C99 #endif /* Return nonzero if VALUE is not a number. */ __MATHDECL_1 (int,__isnan,, (_Mdouble_ __value)) __attribute__ ((__const__)); #if defined __USE_MISC || defined __USE_XOPEN /* Return nonzero if VALUE is not a number. */ __MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__)); /* Bessel functions. */ __MATHCALL (j0,, (_Mdouble_)); __MATHCALL (j1,, (_Mdouble_)); __MATHCALL (jn,, (int, _Mdouble_)); __MATHCALL (y0,, (_Mdouble_)); __MATHCALL (y1,, (_Mdouble_)); __MATHCALL (yn,, (int, _Mdouble_)); #endif #if defined __USE_MISC || defined __USE_XOPEN || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Error and gamma functions. */ __MATHCALL (erf,, (_Mdouble_)); __MATHCALL (erfc,, (_Mdouble_)); __MATHCALL (lgamma,, (_Mdouble_)); __END_NAMESPACE_C99 #endif #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* True gamma function. */ __MATHCALL (tgamma,, (_Mdouble_)); __END_NAMESPACE_C99 #endif #if defined __USE_MISC || defined __USE_XOPEN /* Obsolete alias for `lgamma'. */ __MATHCALL (gamma,, (_Mdouble_)); #endif #ifdef __USE_MISC /* Reentrant version of lgamma. This function uses the global variable `signgam'. The reentrant version instead takes a pointer and stores the value through it. */ __MATHCALL (lgamma,_r, (_Mdouble_, int *__signgamp)); #endif #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Return the integer nearest X in the direction of the prevailing rounding mode. */ __MATHCALL (rint,, (_Mdouble_ __x)); /* Return X + epsilon if X < Y, X - epsilon if X > Y. */ __MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__)); # if defined __USE_ISOC99 && !defined __LDBL_COMPAT __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__)); # endif /* Return the remainder of integer divison X / Y with infinite precision. */ __MATHCALL (remainder,, (_Mdouble_ __x, _Mdouble_ __y)); # if defined __USE_MISC || defined __USE_ISOC99 /* Return X times (2 to the Nth power). */ __MATHCALL (scalbn,, (_Mdouble_ __x, int __n)); # endif /* Return the binary exponent of X, which must be nonzero. */ __MATHDECL (int,ilogb,, (_Mdouble_ __x)); #endif #ifdef __USE_ISOC99 /* Return X times (2 to the Nth power). */ __MATHCALL (scalbln,, (_Mdouble_ __x, long int __n)); /* Round X to integral value in floating-point format using current rounding direction, but do not raise inexact exception. */ __MATHCALL (nearbyint,, (_Mdouble_ __x)); /* Round X to nearest integral value, rounding halfway cases away from zero. */ __MATHCALLX (round,, (_Mdouble_ __x), (__const__)); /* Round X to the integral value in floating-point format nearest but not larger in magnitude. */ __MATHCALLX (trunc,, (_Mdouble_ __x), (__const__)); /* Compute remainder of X and Y and put in *QUO a value with sign of x/y and magnitude congruent `mod 2^n' to the magnitude of the integral quotient x/y, with n >= 3. */ __MATHCALL (remquo,, (_Mdouble_ __x, _Mdouble_ __y, int *__quo)); /* Conversion functions. */ /* Round X to nearest integral value according to current rounding direction. */ __MATHDECL (long int,lrint,, (_Mdouble_ __x)); __MATHDECL (long long int,llrint,, (_Mdouble_ __x)); /* Round X to nearest integral value, rounding halfway cases away from zero. */ __MATHDECL (long int,lround,, (_Mdouble_ __x)); __MATHDECL (long long int,llround,, (_Mdouble_ __x)); /* Return positive difference between X and Y. */ __MATHCALL (fdim,, (_Mdouble_ __x, _Mdouble_ __y)); /* Return maximum numeric value from X and Y. */ __MATHCALL (fmax,, (_Mdouble_ __x, _Mdouble_ __y)); /* Return minimum numeric value from X and Y. */ __MATHCALL (fmin,, (_Mdouble_ __x, _Mdouble_ __y)); /* Classify given number. */ __MATHDECL_1 (int, __fpclassify,, (_Mdouble_ __value)) __attribute__ ((__const__)); /* Test for negative number. */ __MATHDECL_1 (int, __signbit,, (_Mdouble_ __value)) __attribute__ ((__const__)); /* Multiply-add function computed as a ternary operation. */ __MATHCALL (fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z)); #endif /* Use ISO C99. */ #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 __END_NAMESPACE_C99 #endif #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED /* Return X times (2 to the Nth power). */ __MATHCALL (scalb,, (_Mdouble_ __x, _Mdouble_ __n)); #endif Convert-Binary-C-0.76/tests/include/include/bits/posix2_lim.h0000644000175000001440000000561011550664625022626 0ustar mhxusers/* Copyright (C) 1991, 1996, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * Never include this file directly; include instead. */ #ifndef _BITS_POSIX2_LIM_H #define _BITS_POSIX2_LIM_H 1 /* The maximum `ibase' and `obase' values allowed by the `bc' utility. */ #define _POSIX2_BC_BASE_MAX 99 /* The maximum number of elements allowed in an array by the `bc' utility. */ #define _POSIX2_BC_DIM_MAX 2048 /* The maximum `scale' value allowed by the `bc' utility. */ #define _POSIX2_BC_SCALE_MAX 99 /* The maximum length of a string constant accepted by the `bc' utility. */ #define _POSIX2_BC_STRING_MAX 1000 /* The maximum number of weights that can be assigned to an entry of the LC_COLLATE `order' keyword in the locale definition file. */ #define _POSIX2_COLL_WEIGHTS_MAX 2 /* The maximum number of expressions that can be nested within parentheses by the `expr' utility. */ #define _POSIX2_EXPR_NEST_MAX 32 /* The maximum length, in bytes, of an input line. */ #define _POSIX2_LINE_MAX 2048 /* The maximum number of repeated occurrences of a regular expression permitted when using the interval notation `\{M,N\}'. */ #define _POSIX2_RE_DUP_MAX 255 /* The maximum number of bytes in a character class name. We have no fixed limit, 2048 is a high number. */ #define _POSIX2_CHARCLASS_NAME_MAX 14 /* These values are implementation-specific, and may vary within the implementation. Their precise values can be obtained from sysconf. */ #ifndef BC_BASE_MAX #define BC_BASE_MAX _POSIX2_BC_BASE_MAX #endif #ifndef BC_DIM_MAX #define BC_DIM_MAX _POSIX2_BC_DIM_MAX #endif #ifndef BC_SCALE_MAX #define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX #endif #ifndef BC_STRING_MAX #define BC_STRING_MAX _POSIX2_BC_STRING_MAX #endif #ifndef COLL_WEIGHTS_MAX #define COLL_WEIGHTS_MAX 255 #endif #ifndef EXPR_NEST_MAX #define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX #endif #ifndef LINE_MAX #define LINE_MAX _POSIX2_LINE_MAX #endif #ifndef CHARCLASS_NAME_MAX #define CHARCLASS_NAME_MAX 2048 #endif /* This value is defined like this in regex.h. */ #define RE_DUP_MAX (0x7fff) #endif /* bits/posix2_lim.h */ Convert-Binary-C-0.76/tests/include/include/bits/fcntl.h0000644000175000001440000001554411550664624021655 0ustar mhxusers/* O_*, F_*, FD_* bit values for Linux. Copyright (C) 1995, 1996, 1997, 1998, 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _FCNTL_H # error "Never use directly; include instead." #endif #include /* open/fcntl - O_SYNC is only implemented on blocks devices and on files located on an ext2 file system */ #define O_ACCMODE 0003 #define O_RDONLY 00 #define O_WRONLY 01 #define O_RDWR 02 #define O_CREAT 0100 /* not fcntl */ #define O_EXCL 0200 /* not fcntl */ #define O_NOCTTY 0400 /* not fcntl */ #define O_TRUNC 01000 /* not fcntl */ #define O_APPEND 02000 #define O_NONBLOCK 04000 #define O_NDELAY O_NONBLOCK #define O_SYNC 010000 #define O_FSYNC O_SYNC #define O_ASYNC 020000 #ifdef __USE_GNU # define O_DIRECT 040000 /* Direct disk access. */ # define O_DIRECTORY 0200000 /* Must be a directory. */ # define O_NOFOLLOW 0400000 /* Do not follow links. */ # define O_NOATIME 01000000 /* Do not set atime. */ #endif /* For now Linux has synchronisity options for data and read operations. We define the symbols here but let them do the same as O_SYNC since this is a superset. */ #if defined __USE_POSIX199309 || defined __USE_UNIX98 # define O_DSYNC O_SYNC /* Synchronize data. */ # define O_RSYNC O_SYNC /* Synchronize read operations. */ #endif #ifdef __USE_LARGEFILE64 # define O_LARGEFILE 0100000 #endif /* Values for the second argument to `fcntl'. */ #define F_DUPFD 0 /* Duplicate file descriptor. */ #define F_GETFD 1 /* Get file descriptor flags. */ #define F_SETFD 2 /* Set file descriptor flags. */ #define F_GETFL 3 /* Get file status flags. */ #define F_SETFL 4 /* Set file status flags. */ #ifndef __USE_FILE_OFFSET64 # define F_GETLK 5 /* Get record locking info. */ # define F_SETLK 6 /* Set record locking info (non-blocking). */ # define F_SETLKW 7 /* Set record locking info (blocking). */ #else # define F_GETLK F_GETLK64 /* Get record locking info. */ # define F_SETLK F_SETLK64 /* Set record locking info (non-blocking).*/ # define F_SETLKW F_SETLKW64 /* Set record locking info (blocking). */ #endif #define F_GETLK64 12 /* Get record locking info. */ #define F_SETLK64 13 /* Set record locking info (non-blocking). */ #define F_SETLKW64 14 /* Set record locking info (blocking). */ #if defined __USE_BSD || defined __USE_UNIX98 # define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */ # define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */ #endif #ifdef __USE_GNU # define F_SETSIG 10 /* Set number of signal to be sent. */ # define F_GETSIG 11 /* Get number of signal to be sent. */ #endif #ifdef __USE_GNU # define F_SETLEASE 1024 /* Set a lease. */ # define F_GETLEASE 1025 /* Enquire what lease is active. */ # define F_NOTIFY 1026 /* Request notfications on a directory. */ #endif /* For F_[GET|SET]FL. */ #define FD_CLOEXEC 1 /* actually anything with low bit set goes */ /* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */ #define F_RDLCK 0 /* Read lock. */ #define F_WRLCK 1 /* Write lock. */ #define F_UNLCK 2 /* Remove lock. */ /* For old implementation of bsd flock(). */ #define F_EXLCK 4 /* or 3 */ #define F_SHLCK 8 /* or 4 */ #ifdef __USE_BSD /* Operations for bsd flock(), also used by the kernel implementation. */ # define LOCK_SH 1 /* shared lock */ # define LOCK_EX 2 /* exclusive lock */ # define LOCK_NB 4 /* or'd with one of the above to prevent blocking */ # define LOCK_UN 8 /* remove lock */ #endif #ifdef __USE_GNU # define LOCK_MAND 32 /* This is a mandatory flock: */ # define LOCK_READ 64 /* ... which allows concurrent read operations. */ # define LOCK_WRITE 128 /* ... which allows concurrent write operations. */ # define LOCK_RW 192 /* ... Which allows concurrent read & write operations. */ #endif #ifdef __USE_GNU /* Types of directory notifications that may be requested with F_NOTIFY. */ # define DN_ACCESS 0x00000001 /* File accessed. */ # define DN_MODIFY 0x00000002 /* File modified. */ # define DN_CREATE 0x00000004 /* File created. */ # define DN_DELETE 0x00000008 /* File removed. */ # define DN_RENAME 0x00000010 /* File renamed. */ # define DN_ATTRIB 0x00000020 /* File changed attibutes. */ # define DN_MULTISHOT 0x80000000 /* Don't remove notifier. */ #endif struct flock { short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ #ifndef __USE_FILE_OFFSET64 __off_t l_start; /* Offset where the lock begins. */ __off_t l_len; /* Size of the locked area; zero means until EOF. */ #else __off64_t l_start; /* Offset where the lock begins. */ __off64_t l_len; /* Size of the locked area; zero means until EOF. */ #endif __pid_t l_pid; /* Process holding the lock. */ }; #ifdef __USE_LARGEFILE64 struct flock64 { short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */ __off64_t l_start; /* Offset where the lock begins. */ __off64_t l_len; /* Size of the locked area; zero means until EOF. */ __pid_t l_pid; /* Process holding the lock. */ }; #endif /* Define some more compatibility macros to be backward compatible with BSD systems which did not managed to hide these kernel macros. */ #ifdef __USE_BSD # define FAPPEND O_APPEND # define FFSYNC O_FSYNC # define FASYNC O_ASYNC # define FNONBLOCK O_NONBLOCK # define FNDELAY O_NDELAY #endif /* Use BSD. */ /* Advise to `posix_fadvise'. */ #ifdef __USE_XOPEN2K # define POSIX_FADV_NORMAL 0 /* No further special treatment. */ # define POSIX_FADV_RANDOM 1 /* Expect random page references. */ # define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */ # define POSIX_FADV_WILLNEED 3 /* Will need these pages. */ # define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ # define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ #endif __BEGIN_DECLS /* Provide kernel hint to read ahead. */ extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) __THROW; __END_DECLS Convert-Binary-C-0.76/tests/include/include/bits/errno.h0000644000175000001440000000412111550664624021661 0ustar mhxusers/* Error constants. Linux specific version. Copyright (C) 1996, 1997, 1998, 1999, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifdef _ERRNO_H # undef EDOM # undef EILSEQ # undef ERANGE # include /* Linux has no ENOTSUP error code. */ # define ENOTSUP EOPNOTSUPP /* Older Linux versions also had no ECANCELED error code. */ # ifndef ECANCELED # define ECANCELED 125 # endif /* Support for error codes to support robust mutexes was added later, too. */ # ifndef EOWNERDEAD # define EOWNERDEAD 130 # define ENOTRECOVERABLE 131 # endif # ifndef __ASSEMBLER__ /* Function to get address of global `errno' variable. */ extern int *__errno_location (void) __THROW __attribute__ ((__const__)); # if !defined _LIBC || defined _LIBC_REENTRANT /* When using threads, errno is a per-thread value. */ # define errno (*__errno_location ()) # endif # endif /* !__ASSEMBLER__ */ #endif /* _ERRNO_H */ #if !defined _ERRNO_H && defined __need_Emath /* This is ugly but the kernel header is not clean enough. We must define only the values EDOM, EILSEQ and ERANGE in case __need_Emath is defined. */ # define EDOM 33 /* Math argument out of domain of function. */ # define EILSEQ 84 /* Illegal byte sequence. */ # define ERANGE 34 /* Math result not representable. */ #endif /* !_ERRNO_H && __need_Emath */ Convert-Binary-C-0.76/tests/include/include/bits/local_lim.h0000644000175000001440000000574111550664624022500 0ustar mhxusers/* Minimum guaranteed maximum values for system limits. Linux version. Copyright (C) 1993-1998,2000,2002,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* The kernel header pollutes the namespace with the NR_OPEN symbol and defines LINK_MAX although filesystems have different maxima. A similar thing is true for OPEN_MAX: the limit can be changed at runtime and therefore the macro must not be defined. Remove this after including the header if necessary. */ #ifndef NR_OPEN # define __undef_NR_OPEN #endif #ifndef LINK_MAX # define __undef_LINK_MAX #endif #ifndef OPEN_MAX # define __undef_OPEN_MAX #endif /* The kernel sources contain a file with all the needed information. */ #include /* Have to remove NR_OPEN? */ #ifdef __undef_NR_OPEN # undef NR_OPEN # undef __undef_NR_OPEN #endif /* Have to remove LINK_MAX? */ #ifdef __undef_LINK_MAX # undef LINK_MAX # undef __undef_LINK_MAX #endif /* Have to remove OPEN_MAX? */ #ifdef __undef_OPEN_MAX # undef OPEN_MAX # undef __undef_OPEN_MAX #endif /* The number of data keys per process. */ #define _POSIX_THREAD_KEYS_MAX 128 /* This is the value this implementation supports. */ #define PTHREAD_KEYS_MAX 1024 /* Controlling the iterations of destructors for thread-specific data. */ #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4 /* Number of iterations this implementation does. */ #define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS /* The number of threads per process. */ #define _POSIX_THREAD_THREADS_MAX 64 /* We have no predefined limit on the number of threads. */ #undef PTHREAD_THREADS_MAX /* Maximum amount by which a process can descrease its asynchronous I/O priority level. */ #define AIO_PRIO_DELTA_MAX 20 /* Minimum size for a thread. We are free to choose a reasonable value. */ #define PTHREAD_STACK_MIN 16384 /* Maximum number of timer expiration overruns. */ #define DELAYTIMER_MAX 2147483647 /* Maximum tty name length. */ #define TTY_NAME_MAX 32 /* Maximum login name length. This is arbitrary. */ #define LOGIN_NAME_MAX 256 /* Maximum host name length. */ #define HOST_NAME_MAX 64 /* Maximum message queue priority level. */ #define MQ_PRIO_MAX 32768 Convert-Binary-C-0.76/tests/include/include/bits/endian.h0000644000175000001440000000025011550664624021771 0ustar mhxusers/* i386 is little-endian. */ #ifndef _ENDIAN_H # error "Never use directly; include instead." #endif #define __BYTE_ORDER __LITTLE_ENDIAN Convert-Binary-C-0.76/tests/include/include/bits/mathdef.h0000644000175000001440000000363511550664624022155 0ustar mhxusers/* Copyright (C) 1997, 1998, 1999, 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #if !defined _MATH_H && !defined _COMPLEX_H # error "Never use directly; include instead" #endif #if defined __USE_ISOC99 && defined _MATH_H && !defined _MATH_H_MATHDEF # define _MATH_H_MATHDEF 1 # if defined __FLT_EVAL_METHOD__ && __FLT_EVAL_METHOD__ == 0 /* When using -mfpmath=sse, values are computed with the precission of the used type. */ typedef float float_t; /* `float' expressions are evaluated as `float'. */ typedef double double_t; /* `double' expressions are evaluated as `double'. */ # else /* The ix87 FPUs evaluate all values in the 80 bit floating-point format which is also available for the user as `long double'. Therefore we define: */ typedef long double float_t; /* `float' expressions are evaluated as `long double'. */ typedef long double double_t; /* `double' expressions are evaluated as `long double'. */ # endif /* The values returned by `ilogb' for 0 and NaN respectively. */ # define FP_ILOGB0 (-2147483647 - 1) # define FP_ILOGBNAN (-2147483647 - 1) #endif /* ISO C99 */ Convert-Binary-C-0.76/tests/include/include/bits/confname.h0000644000175000001440000005011611550664624022327 0ustar mhxusers/* `sysconf', `pathconf', and `confstr' NAME values. Generic version. Copyright (C) 1993,1995-1998,2000,2001,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _UNISTD_H # error "Never use directly; include instead." #endif /* Values for the NAME argument to `pathconf' and `fpathconf'. */ enum { _PC_LINK_MAX, #define _PC_LINK_MAX _PC_LINK_MAX _PC_MAX_CANON, #define _PC_MAX_CANON _PC_MAX_CANON _PC_MAX_INPUT, #define _PC_MAX_INPUT _PC_MAX_INPUT _PC_NAME_MAX, #define _PC_NAME_MAX _PC_NAME_MAX _PC_PATH_MAX, #define _PC_PATH_MAX _PC_PATH_MAX _PC_PIPE_BUF, #define _PC_PIPE_BUF _PC_PIPE_BUF _PC_CHOWN_RESTRICTED, #define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED _PC_NO_TRUNC, #define _PC_NO_TRUNC _PC_NO_TRUNC _PC_VDISABLE, #define _PC_VDISABLE _PC_VDISABLE _PC_SYNC_IO, #define _PC_SYNC_IO _PC_SYNC_IO _PC_ASYNC_IO, #define _PC_ASYNC_IO _PC_ASYNC_IO _PC_PRIO_IO, #define _PC_PRIO_IO _PC_PRIO_IO _PC_SOCK_MAXBUF, #define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF _PC_FILESIZEBITS, #define _PC_FILESIZEBITS _PC_FILESIZEBITS _PC_REC_INCR_XFER_SIZE, #define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE _PC_REC_MAX_XFER_SIZE, #define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE _PC_REC_MIN_XFER_SIZE, #define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE _PC_REC_XFER_ALIGN, #define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN _PC_ALLOC_SIZE_MIN, #define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN _PC_SYMLINK_MAX, #define _PC_SYMLINK_MAX _PC_SYMLINK_MAX _PC_2_SYMLINKS #define _PC_2_SYMLINKS _PC_2_SYMLINKS }; /* Values for the argument to `sysconf'. */ enum { _SC_ARG_MAX, #define _SC_ARG_MAX _SC_ARG_MAX _SC_CHILD_MAX, #define _SC_CHILD_MAX _SC_CHILD_MAX _SC_CLK_TCK, #define _SC_CLK_TCK _SC_CLK_TCK _SC_NGROUPS_MAX, #define _SC_NGROUPS_MAX _SC_NGROUPS_MAX _SC_OPEN_MAX, #define _SC_OPEN_MAX _SC_OPEN_MAX _SC_STREAM_MAX, #define _SC_STREAM_MAX _SC_STREAM_MAX _SC_TZNAME_MAX, #define _SC_TZNAME_MAX _SC_TZNAME_MAX _SC_JOB_CONTROL, #define _SC_JOB_CONTROL _SC_JOB_CONTROL _SC_SAVED_IDS, #define _SC_SAVED_IDS _SC_SAVED_IDS _SC_REALTIME_SIGNALS, #define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS _SC_PRIORITY_SCHEDULING, #define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING _SC_TIMERS, #define _SC_TIMERS _SC_TIMERS _SC_ASYNCHRONOUS_IO, #define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO _SC_PRIORITIZED_IO, #define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO _SC_SYNCHRONIZED_IO, #define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO _SC_FSYNC, #define _SC_FSYNC _SC_FSYNC _SC_MAPPED_FILES, #define _SC_MAPPED_FILES _SC_MAPPED_FILES _SC_MEMLOCK, #define _SC_MEMLOCK _SC_MEMLOCK _SC_MEMLOCK_RANGE, #define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE _SC_MEMORY_PROTECTION, #define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION _SC_MESSAGE_PASSING, #define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING _SC_SEMAPHORES, #define _SC_SEMAPHORES _SC_SEMAPHORES _SC_SHARED_MEMORY_OBJECTS, #define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS _SC_AIO_LISTIO_MAX, #define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX _SC_AIO_MAX, #define _SC_AIO_MAX _SC_AIO_MAX _SC_AIO_PRIO_DELTA_MAX, #define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX _SC_DELAYTIMER_MAX, #define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX _SC_MQ_OPEN_MAX, #define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX _SC_MQ_PRIO_MAX, #define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX _SC_VERSION, #define _SC_VERSION _SC_VERSION _SC_PAGESIZE, #define _SC_PAGESIZE _SC_PAGESIZE #define _SC_PAGE_SIZE _SC_PAGESIZE _SC_RTSIG_MAX, #define _SC_RTSIG_MAX _SC_RTSIG_MAX _SC_SEM_NSEMS_MAX, #define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX _SC_SEM_VALUE_MAX, #define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX _SC_SIGQUEUE_MAX, #define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX _SC_TIMER_MAX, #define _SC_TIMER_MAX _SC_TIMER_MAX /* Values for the argument to `sysconf' corresponding to _POSIX2_* symbols. */ _SC_BC_BASE_MAX, #define _SC_BC_BASE_MAX _SC_BC_BASE_MAX _SC_BC_DIM_MAX, #define _SC_BC_DIM_MAX _SC_BC_DIM_MAX _SC_BC_SCALE_MAX, #define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX _SC_BC_STRING_MAX, #define _SC_BC_STRING_MAX _SC_BC_STRING_MAX _SC_COLL_WEIGHTS_MAX, #define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX _SC_EQUIV_CLASS_MAX, #define _SC_EQUIV_CLASS_MAX _SC_EQUIV_CLASS_MAX _SC_EXPR_NEST_MAX, #define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX _SC_LINE_MAX, #define _SC_LINE_MAX _SC_LINE_MAX _SC_RE_DUP_MAX, #define _SC_RE_DUP_MAX _SC_RE_DUP_MAX _SC_CHARCLASS_NAME_MAX, #define _SC_CHARCLASS_NAME_MAX _SC_CHARCLASS_NAME_MAX _SC_2_VERSION, #define _SC_2_VERSION _SC_2_VERSION _SC_2_C_BIND, #define _SC_2_C_BIND _SC_2_C_BIND _SC_2_C_DEV, #define _SC_2_C_DEV _SC_2_C_DEV _SC_2_FORT_DEV, #define _SC_2_FORT_DEV _SC_2_FORT_DEV _SC_2_FORT_RUN, #define _SC_2_FORT_RUN _SC_2_FORT_RUN _SC_2_SW_DEV, #define _SC_2_SW_DEV _SC_2_SW_DEV _SC_2_LOCALEDEF, #define _SC_2_LOCALEDEF _SC_2_LOCALEDEF _SC_PII, #define _SC_PII _SC_PII _SC_PII_XTI, #define _SC_PII_XTI _SC_PII_XTI _SC_PII_SOCKET, #define _SC_PII_SOCKET _SC_PII_SOCKET _SC_PII_INTERNET, #define _SC_PII_INTERNET _SC_PII_INTERNET _SC_PII_OSI, #define _SC_PII_OSI _SC_PII_OSI _SC_POLL, #define _SC_POLL _SC_POLL _SC_SELECT, #define _SC_SELECT _SC_SELECT _SC_UIO_MAXIOV, #define _SC_UIO_MAXIOV _SC_UIO_MAXIOV _SC_IOV_MAX = _SC_UIO_MAXIOV, #define _SC_IOV_MAX _SC_IOV_MAX _SC_PII_INTERNET_STREAM, #define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_DGRAM, #define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM _SC_PII_OSI_COTS, #define _SC_PII_OSI_COTS _SC_PII_OSI_COTS _SC_PII_OSI_CLTS, #define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS _SC_PII_OSI_M, #define _SC_PII_OSI_M _SC_PII_OSI_M _SC_T_IOV_MAX, #define _SC_T_IOV_MAX _SC_T_IOV_MAX /* Values according to POSIX 1003.1c (POSIX threads). */ _SC_THREADS, #define _SC_THREADS _SC_THREADS _SC_THREAD_SAFE_FUNCTIONS, #define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS _SC_GETGR_R_SIZE_MAX, #define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX, #define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX _SC_LOGIN_NAME_MAX, #define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX _SC_TTY_NAME_MAX, #define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX _SC_THREAD_DESTRUCTOR_ITERATIONS, #define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_KEYS_MAX, #define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX _SC_THREAD_STACK_MIN, #define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN _SC_THREAD_THREADS_MAX, #define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX _SC_THREAD_ATTR_STACKADDR, #define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKSIZE, #define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_PRIORITY_SCHEDULING, #define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIO_INHERIT, #define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_PROTECT, #define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT _SC_THREAD_PROCESS_SHARED, #define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED _SC_NPROCESSORS_CONF, #define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_CONF _SC_NPROCESSORS_ONLN, #define _SC_NPROCESSORS_ONLN _SC_NPROCESSORS_ONLN _SC_PHYS_PAGES, #define _SC_PHYS_PAGES _SC_PHYS_PAGES _SC_AVPHYS_PAGES, #define _SC_AVPHYS_PAGES _SC_AVPHYS_PAGES _SC_ATEXIT_MAX, #define _SC_ATEXIT_MAX _SC_ATEXIT_MAX _SC_PASS_MAX, #define _SC_PASS_MAX _SC_PASS_MAX _SC_XOPEN_VERSION, #define _SC_XOPEN_VERSION _SC_XOPEN_VERSION _SC_XOPEN_XCU_VERSION, #define _SC_XOPEN_XCU_VERSION _SC_XOPEN_XCU_VERSION _SC_XOPEN_UNIX, #define _SC_XOPEN_UNIX _SC_XOPEN_UNIX _SC_XOPEN_CRYPT, #define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT _SC_XOPEN_ENH_I18N, #define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N _SC_XOPEN_SHM, #define _SC_XOPEN_SHM _SC_XOPEN_SHM _SC_2_CHAR_TERM, #define _SC_2_CHAR_TERM _SC_2_CHAR_TERM _SC_2_C_VERSION, #define _SC_2_C_VERSION _SC_2_C_VERSION _SC_2_UPE, #define _SC_2_UPE _SC_2_UPE _SC_XOPEN_XPG2, #define _SC_XOPEN_XPG2 _SC_XOPEN_XPG2 _SC_XOPEN_XPG3, #define _SC_XOPEN_XPG3 _SC_XOPEN_XPG3 _SC_XOPEN_XPG4, #define _SC_XOPEN_XPG4 _SC_XOPEN_XPG4 _SC_CHAR_BIT, #define _SC_CHAR_BIT _SC_CHAR_BIT _SC_CHAR_MAX, #define _SC_CHAR_MAX _SC_CHAR_MAX _SC_CHAR_MIN, #define _SC_CHAR_MIN _SC_CHAR_MIN _SC_INT_MAX, #define _SC_INT_MAX _SC_INT_MAX _SC_INT_MIN, #define _SC_INT_MIN _SC_INT_MIN _SC_LONG_BIT, #define _SC_LONG_BIT _SC_LONG_BIT _SC_WORD_BIT, #define _SC_WORD_BIT _SC_WORD_BIT _SC_MB_LEN_MAX, #define _SC_MB_LEN_MAX _SC_MB_LEN_MAX _SC_NZERO, #define _SC_NZERO _SC_NZERO _SC_SSIZE_MAX, #define _SC_SSIZE_MAX _SC_SSIZE_MAX _SC_SCHAR_MAX, #define _SC_SCHAR_MAX _SC_SCHAR_MAX _SC_SCHAR_MIN, #define _SC_SCHAR_MIN _SC_SCHAR_MIN _SC_SHRT_MAX, #define _SC_SHRT_MAX _SC_SHRT_MAX _SC_SHRT_MIN, #define _SC_SHRT_MIN _SC_SHRT_MIN _SC_UCHAR_MAX, #define _SC_UCHAR_MAX _SC_UCHAR_MAX _SC_UINT_MAX, #define _SC_UINT_MAX _SC_UINT_MAX _SC_ULONG_MAX, #define _SC_ULONG_MAX _SC_ULONG_MAX _SC_USHRT_MAX, #define _SC_USHRT_MAX _SC_USHRT_MAX _SC_NL_ARGMAX, #define _SC_NL_ARGMAX _SC_NL_ARGMAX _SC_NL_LANGMAX, #define _SC_NL_LANGMAX _SC_NL_LANGMAX _SC_NL_MSGMAX, #define _SC_NL_MSGMAX _SC_NL_MSGMAX _SC_NL_NMAX, #define _SC_NL_NMAX _SC_NL_NMAX _SC_NL_SETMAX, #define _SC_NL_SETMAX _SC_NL_SETMAX _SC_NL_TEXTMAX, #define _SC_NL_TEXTMAX _SC_NL_TEXTMAX _SC_XBS5_ILP32_OFF32, #define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFFBIG, #define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG _SC_XBS5_LP64_OFF64, #define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64 _SC_XBS5_LPBIG_OFFBIG, #define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG _SC_XOPEN_LEGACY, #define _SC_XOPEN_LEGACY _SC_XOPEN_LEGACY _SC_XOPEN_REALTIME, #define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME_THREADS, #define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS _SC_ADVISORY_INFO, #define _SC_ADVISORY_INFO _SC_ADVISORY_INFO _SC_BARRIERS, #define _SC_BARRIERS _SC_BARRIERS _SC_BASE, #define _SC_BASE _SC_BASE _SC_C_LANG_SUPPORT, #define _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT_R, #define _SC_C_LANG_SUPPORT_R _SC_C_LANG_SUPPORT_R _SC_CLOCK_SELECTION, #define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION _SC_CPUTIME, #define _SC_CPUTIME _SC_CPUTIME _SC_THREAD_CPUTIME, #define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME _SC_DEVICE_IO, #define _SC_DEVICE_IO _SC_DEVICE_IO _SC_DEVICE_SPECIFIC, #define _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC_R, #define _SC_DEVICE_SPECIFIC_R _SC_DEVICE_SPECIFIC_R _SC_FD_MGMT, #define _SC_FD_MGMT _SC_FD_MGMT _SC_FIFO, #define _SC_FIFO _SC_FIFO _SC_PIPE, #define _SC_PIPE _SC_PIPE _SC_FILE_ATTRIBUTES, #define _SC_FILE_ATTRIBUTES _SC_FILE_ATTRIBUTES _SC_FILE_LOCKING, #define _SC_FILE_LOCKING _SC_FILE_LOCKING _SC_FILE_SYSTEM, #define _SC_FILE_SYSTEM _SC_FILE_SYSTEM _SC_MONOTONIC_CLOCK, #define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK _SC_MULTI_PROCESS, #define _SC_MULTI_PROCESS _SC_MULTI_PROCESS _SC_SINGLE_PROCESS, #define _SC_SINGLE_PROCESS _SC_SINGLE_PROCESS _SC_NETWORKING, #define _SC_NETWORKING _SC_NETWORKING _SC_READER_WRITER_LOCKS, #define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS _SC_SPIN_LOCKS, #define _SC_SPIN_LOCKS _SC_SPIN_LOCKS _SC_REGEXP, #define _SC_REGEXP _SC_REGEXP _SC_REGEX_VERSION, #define _SC_REGEX_VERSION _SC_REGEX_VERSION _SC_SHELL, #define _SC_SHELL _SC_SHELL _SC_SIGNALS, #define _SC_SIGNALS _SC_SIGNALS _SC_SPAWN, #define _SC_SPAWN _SC_SPAWN _SC_SPORADIC_SERVER, #define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER, #define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER _SC_SYSTEM_DATABASE, #define _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE_R, #define _SC_SYSTEM_DATABASE_R _SC_SYSTEM_DATABASE_R _SC_TIMEOUTS, #define _SC_TIMEOUTS _SC_TIMEOUTS _SC_TYPED_MEMORY_OBJECTS, #define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS _SC_USER_GROUPS, #define _SC_USER_GROUPS _SC_USER_GROUPS _SC_USER_GROUPS_R, #define _SC_USER_GROUPS_R _SC_USER_GROUPS_R _SC_2_PBS, #define _SC_2_PBS _SC_2_PBS _SC_2_PBS_ACCOUNTING, #define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING _SC_2_PBS_LOCATE, #define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE _SC_2_PBS_MESSAGE, #define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE _SC_2_PBS_TRACK, #define _SC_2_PBS_TRACK _SC_2_PBS_TRACK _SC_SYMLOOP_MAX, #define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX _SC_STREAMS, #define _SC_STREAMS _SC_STREAMS _SC_2_PBS_CHECKPOINT, #define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT _SC_V6_ILP32_OFF32, #define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFFBIG, #define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG _SC_V6_LP64_OFF64, #define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64 _SC_V6_LPBIG_OFFBIG, #define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG _SC_HOST_NAME_MAX, #define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX _SC_TRACE, #define _SC_TRACE _SC_TRACE _SC_TRACE_EVENT_FILTER, #define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER _SC_TRACE_INHERIT, #define _SC_TRACE_INHERIT _SC_TRACE_INHERIT _SC_TRACE_LOG, #define _SC_TRACE_LOG _SC_TRACE_LOG _SC_LEVEL1_ICACHE_SIZE, #define _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_ASSOC, #define _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_LINESIZE, #define _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_DCACHE_SIZE, #define _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_ASSOC, #define _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_LINESIZE, #define _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL2_CACHE_SIZE, #define _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_ASSOC, #define _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_LINESIZE, #define _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL3_CACHE_SIZE, #define _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_ASSOC, #define _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_LINESIZE, #define _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL4_CACHE_SIZE, #define _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_ASSOC, #define _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_LINESIZE, #define _SC_LEVEL4_CACHE_LINESIZE _SC_LEVEL4_CACHE_LINESIZE /* Leave room here, maybe we need a few more cache levels some day. */ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, #define _SC_IPV6 _SC_IPV6 _SC_RAW_SOCKETS #define _SC_RAW_SOCKETS _SC_RAW_SOCKETS }; /* Values for the NAME argument to `confstr'. */ enum { _CS_PATH, /* The default search path. */ #define _CS_PATH _CS_PATH _CS_V6_WIDTH_RESTRICTED_ENVS, # define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS _CS_GNU_LIBC_VERSION, #define _CS_GNU_LIBC_VERSION _CS_GNU_LIBC_VERSION _CS_GNU_LIBPTHREAD_VERSION, #define _CS_GNU_LIBPTHREAD_VERSION _CS_GNU_LIBPTHREAD_VERSION _CS_LFS_CFLAGS = 1000, #define _CS_LFS_CFLAGS _CS_LFS_CFLAGS _CS_LFS_LDFLAGS, #define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS _CS_LFS_LIBS, #define _CS_LFS_LIBS _CS_LFS_LIBS _CS_LFS_LINTFLAGS, #define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS _CS_LFS64_CFLAGS, #define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS _CS_LFS64_LDFLAGS, #define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS _CS_LFS64_LIBS, #define _CS_LFS64_LIBS _CS_LFS64_LIBS _CS_LFS64_LINTFLAGS, #define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, #define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS, #define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LIBS, #define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LINTFLAGS, #define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS, #define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS, #define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LIBS, #define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, #define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_LP64_OFF64_CFLAGS, #define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS, #define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LIBS, #define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LINTFLAGS, #define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS, #define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, #define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LIBS, #define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, #define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS, #define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, #define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LIBS, #define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, #define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, #define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, #define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LIBS, #define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, #define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS, #define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS, #define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LIBS, #define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, #define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, #define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, #define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, #define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS #define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS }; Convert-Binary-C-0.76/tests/include/include/bits/stdio_lim.h0000644000175000001440000000253611550664625022530 0ustar mhxusers/* Copyright (C) 1994, 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #if !defined _STDIO_H && !defined __need_FOPEN_MAX && !defined __need_IOV_MAX # error "Never include directly; use instead." #endif #ifdef _STDIO_H # define L_tmpnam 20 # define TMP_MAX 238328 # define FILENAME_MAX 4096 # ifdef __USE_POSIX # define L_ctermid 9 # define L_cuserid 9 # endif #endif #if defined __need_FOPEN_MAX || defined _STDIO_H # undef FOPEN_MAX # define FOPEN_MAX 16 #endif #if defined __need_IOV_MAX && !defined IOV_MAX # define IOV_MAX 1024 #endif Convert-Binary-C-0.76/tests/include/include/bits/netdb.h0000644000175000001440000000250511550664625021635 0ustar mhxusers/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _NETDB_H # error "Never include directly; use instead." #endif /* Description of data base entry for a single network. NOTE: here a poor assumption is made. The network number is expected to fit into an unsigned long int variable. */ struct netent { char *n_name; /* Official name of network. */ char **n_aliases; /* Alias list. */ int n_addrtype; /* Net address type. */ uint32_t n_net; /* Network number. */ }; Convert-Binary-C-0.76/tests/include/include/bits/sockaddr.h0000644000175000001440000000300311550664625022325 0ustar mhxusers/* Definition of `struct sockaddr_*' common members. Generic/4.2 BSD version. Copyright (C) 1995,1996,1997,1998,2000,2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * Never include this file directly; use instead. */ #ifndef _BITS_SOCKADDR_H #define _BITS_SOCKADDR_H 1 /* POSIX.1g specifies this type name for the `sa_family' member. */ typedef unsigned short int sa_family_t; /* This macro is used to declare the initial common members of the data types used for socket addresses, `struct sockaddr', `struct sockaddr_in', `struct sockaddr_un', etc. */ #define __SOCKADDR_COMMON(sa_prefix) \ sa_family_t sa_prefix##family #define __SOCKADDR_COMMON_SIZE (sizeof (unsigned short int)) #endif /* bits/sockaddr.h */ Convert-Binary-C-0.76/tests/include/include/bits/sys_errlist.h0000644000175000001440000000240411550664625023121 0ustar mhxusers/* Declare sys_errlist and sys_nerr, or don't. Compatibility (do) version. Copyright (C) 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _STDIO_H # error "Never include directly; use instead." #endif /* sys_errlist and sys_nerr are deprecated. Use strerror instead. */ #ifdef __USE_BSD extern int sys_nerr; extern __const char *__const sys_errlist[]; #endif #ifdef __USE_GNU extern int _sys_nerr; extern __const char *__const _sys_errlist[]; #endif Convert-Binary-C-0.76/tests/include/include/bits/pthreadtypes.h0000644000175000001440000001045311550664625023256 0ustar mhxusers/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _BITS_PTHREADTYPES_H #define _BITS_PTHREADTYPES_H 1 #define __SIZEOF_PTHREAD_ATTR_T 36 #define __SIZEOF_PTHREAD_MUTEX_T 24 #define __SIZEOF_PTHREAD_MUTEXATTR_T 4 #define __SIZEOF_PTHREAD_COND_T 48 #define __SIZEOF_PTHREAD_COND_COMPAT_T 12 #define __SIZEOF_PTHREAD_CONDATTR_T 4 #define __SIZEOF_PTHREAD_RWLOCK_T 32 #define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 #define __SIZEOF_PTHREAD_BARRIER_T 20 #define __SIZEOF_PTHREAD_BARRIERATTR_T 4 /* Thread identifiers. The structure of the attribute type is not exposed on purpose. */ typedef unsigned long int pthread_t; typedef union { char __size[__SIZEOF_PTHREAD_ATTR_T]; long int __align; } pthread_attr_t; typedef struct __pthread_internal_slist { struct __pthread_internal_slist *__next; } __pthread_slist_t; /* Data structures for mutex handling. The structure of the attribute type is not exposed on purpose. */ typedef union { struct __pthread_mutex_s { int __lock; unsigned int __count; int __owner; /* KIND must stay at this position in the structure to maintain binary compatibility. */ int __kind; unsigned int __nusers; __extension__ union { int __spins; __pthread_slist_t __list; }; } __data; char __size[__SIZEOF_PTHREAD_MUTEX_T]; long int __align; } pthread_mutex_t; typedef union { char __size[__SIZEOF_PTHREAD_MUTEXATTR_T]; long int __align; } pthread_mutexattr_t; /* Data structure for conditional variable handling. The structure of the attribute type is not exposed on purpose. */ typedef union { struct { int __lock; unsigned int __futex; __extension__ unsigned long long int __total_seq; __extension__ unsigned long long int __wakeup_seq; __extension__ unsigned long long int __woken_seq; void *__mutex; unsigned int __nwaiters; unsigned int __broadcast_seq; } __data; char __size[__SIZEOF_PTHREAD_COND_T]; __extension__ long long int __align; } pthread_cond_t; typedef union { char __size[__SIZEOF_PTHREAD_CONDATTR_T]; long int __align; } pthread_condattr_t; /* Keys for thread-specific data */ typedef unsigned int pthread_key_t; /* Once-only execution */ typedef int pthread_once_t; #if defined __USE_UNIX98 || defined __USE_XOPEN2K /* Data structure for read-write lock variable handling. The structure of the attribute type is not exposed on purpose. */ typedef union { struct { int __lock; unsigned int __nr_readers; unsigned int __readers_wakeup; unsigned int __writer_wakeup; unsigned int __nr_readers_queued; unsigned int __nr_writers_queued; /* FLAGS must stay at this position in the structure to maintain binary compatibility. */ unsigned int __flags; int __writer; } __data; char __size[__SIZEOF_PTHREAD_RWLOCK_T]; long int __align; } pthread_rwlock_t; typedef union { char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T]; long int __align; } pthread_rwlockattr_t; #endif #ifdef __USE_XOPEN2K /* POSIX spinlock data type. */ typedef volatile int pthread_spinlock_t; /* POSIX barriers data type. The structure of the type is deliberately not exposed. */ typedef union { char __size[__SIZEOF_PTHREAD_BARRIER_T]; long int __align; } pthread_barrier_t; typedef union { char __size[__SIZEOF_PTHREAD_BARRIERATTR_T]; int __align; } pthread_barrierattr_t; #endif /* Extra attributes for the cleanup functions. */ #define __cleanup_fct_attribute __attribute__ ((__regparm__ (1))) #endif /* bits/pthreadtypes.h */ Convert-Binary-C-0.76/tests/include/include/bits/byteswap.h0000644000175000001440000001076011550664624022400 0ustar mhxusers/* Macros to swap the order of bytes in integer values. Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #if !defined _BYTESWAP_H && !defined _NETINET_IN_H # error "Never use directly; include instead." #endif #ifndef _BITS_BYTESWAP_H #define _BITS_BYTESWAP_H 1 /* Swap bytes in 16 bit value. */ #define __bswap_constant_16(x) \ ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) #ifdef __GNUC__ # if __GNUC__ >= 2 # define __bswap_16(x) \ (__extension__ \ ({ register unsigned short int __v, __x = (x); \ if (__builtin_constant_p (__x)) \ __v = __bswap_constant_16 (__x); \ else \ __asm__ ("rorw $8, %w0" \ : "=r" (__v) \ : "0" (__x) \ : "cc"); \ __v; })) # else /* This is better than nothing. */ # define __bswap_16(x) \ (__extension__ \ ({ register unsigned short int __x = (x); __bswap_constant_16 (__x); })) # endif #else static __inline unsigned short int __bswap_16 (unsigned short int __bsx) { return __bswap_constant_16 (__bsx); } #endif /* Swap bytes in 32 bit value. */ #define __bswap_constant_32(x) \ ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) #ifdef __GNUC__ # if __GNUC__ >= 2 /* To swap the bytes in a word the i486 processors and up provide the `bswap' opcode. On i386 we have to use three instructions. */ # if !defined __i486__ && !defined __pentium__ && !defined __pentiumpro__ \ && !defined __pentium4__ # define __bswap_32(x) \ (__extension__ \ ({ register unsigned int __v, __x = (x); \ if (__builtin_constant_p (__x)) \ __v = __bswap_constant_32 (__x); \ else \ __asm__ ("rorw $8, %w0;" \ "rorl $16, %0;" \ "rorw $8, %w0" \ : "=r" (__v) \ : "0" (__x) \ : "cc"); \ __v; })) # else # define __bswap_32(x) \ (__extension__ \ ({ register unsigned int __v, __x = (x); \ if (__builtin_constant_p (__x)) \ __v = __bswap_constant_32 (__x); \ else \ __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \ __v; })) # endif # else # define __bswap_32(x) \ (__extension__ \ ({ register unsigned int __x = (x); __bswap_constant_32 (__x); })) # endif #else static __inline unsigned int __bswap_32 (unsigned int __bsx) { return __bswap_constant_32 (__bsx); } #endif #if defined __GNUC__ && __GNUC__ >= 2 /* Swap bytes in 64 bit value. */ #define __bswap_constant_64(x) \ ((((x) & 0xff00000000000000ull) >> 56) \ | (((x) & 0x00ff000000000000ull) >> 40) \ | (((x) & 0x0000ff0000000000ull) >> 24) \ | (((x) & 0x000000ff00000000ull) >> 8) \ | (((x) & 0x00000000ff000000ull) << 8) \ | (((x) & 0x0000000000ff0000ull) << 24) \ | (((x) & 0x000000000000ff00ull) << 40) \ | (((x) & 0x00000000000000ffull) << 56)) # define __bswap_64(x) \ (__extension__ \ ({ union { __extension__ unsigned long long int __ll; \ unsigned long int __l[2]; } __w, __r; \ if (__builtin_constant_p (x)) \ __r.__ll = __bswap_constant_64 (x); \ else \ { \ __w.__ll = (x); \ __r.__l[0] = __bswap_32 (__w.__l[1]); \ __r.__l[1] = __bswap_32 (__w.__l[0]); \ } \ __r.__ll; })) #endif #endif /* _BITS_BYTESWAP_H */ Convert-Binary-C-0.76/tests/include/include/bits/select.h0000644000175000001440000000530111550664625022015 0ustar mhxusers/* Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_SELECT_H # error "Never use directly; include instead." #endif #if defined __GNUC__ && __GNUC__ >= 2 # define __FD_ZERO(fdsp) \ do { \ int __d0, __d1; \ __asm__ __volatile__ ("cld; rep; stosl" \ : "=c" (__d0), "=D" (__d1) \ : "a" (0), "0" (sizeof (fd_set) \ / sizeof (__fd_mask)), \ "1" (&__FDS_BITS (fdsp)[0]) \ : "memory"); \ } while (0) # define __FD_SET(fd, fdsp) \ __asm__ __volatile__ ("btsl %1,%0" \ : "=m" (__FDS_BITS (fdsp)[__FDELT (fd)]) \ : "r" (((int) (fd)) % __NFDBITS) \ : "cc","memory") # define __FD_CLR(fd, fdsp) \ __asm__ __volatile__ ("btrl %1,%0" \ : "=m" (__FDS_BITS (fdsp)[__FDELT (fd)]) \ : "r" (((int) (fd)) % __NFDBITS) \ : "cc","memory") # define __FD_ISSET(fd, fdsp) \ (__extension__ \ ({register char __result; \ __asm__ __volatile__ ("btl %1,%2 ; setcb %b0" \ : "=q" (__result) \ : "r" (((int) (fd)) % __NFDBITS), \ "m" (__FDS_BITS (fdsp)[__FDELT (fd)]) \ : "cc"); \ __result; })) #else /* ! GNU CC */ /* We don't use `memset' because this would require a prototype and the array isn't too big. */ # define __FD_ZERO(set) \ do { \ unsigned int __i; \ fd_set *__arr = (set); \ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ __FDS_BITS (__arr)[__i] = 0; \ } while (0) # define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d)) # define __FD_CLR(d, set) (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d)) # define __FD_ISSET(d, set) (__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d)) #endif /* GNU CC */ Convert-Binary-C-0.76/tests/include/include/bits/types.h0000644000175000001440000001672611550664625021717 0ustar mhxusers/* bits/types.h -- definitions of __*_t types underlying *_t types. Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * Never include this file directly; use instead. */ #ifndef _BITS_TYPES_H #define _BITS_TYPES_H 1 #include #include #define __need_size_t #include /* Convenience types. */ typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long; /* Fixed-size types, underlying types depend on word size and compiler. */ typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; #if __WORDSIZE == 64 typedef signed long int __int64_t; typedef unsigned long int __uint64_t; #elif defined __GLIBC_HAVE_LONG_LONG __extension__ typedef signed long long int __int64_t; __extension__ typedef unsigned long long int __uint64_t; #endif /* quad_t is also 64 bits. */ #if __WORDSIZE == 64 typedef long int __quad_t; typedef unsigned long int __u_quad_t; #elif defined __GLIBC_HAVE_LONG_LONG __extension__ typedef long long int __quad_t; __extension__ typedef unsigned long long int __u_quad_t; #else typedef struct { long __val[2]; } __quad_t; typedef struct { __u_long __val[2]; } __u_quad_t; #endif /* The machine-dependent file defines __*_T_TYPE macros for each of the OS types we define below. The definitions of those macros must use the following macros for underlying types. We define __S_TYPE and __U_TYPE for the signed and unsigned variants of each of the following integer types on this machine. 16 -- "natural" 16-bit type (always short) 32 -- "natural" 32-bit type (always int) 64 -- "natural" 64-bit type (long or long long) LONG32 -- 32-bit type, traditionally long QUAD -- 64-bit type, always long long WORD -- natural type of __WORDSIZE bits (int or long) LONGWORD -- type of __WORDSIZE bits, traditionally long We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the conventional uses of `long' or `long long' type modifiers match the types we define, even when a less-adorned type would be the same size. This matters for (somewhat) portably writing printf/scanf formats for these types, where using the appropriate l or ll format modifiers can make the typedefs and the formats match up across all GNU platforms. If we used `long' when it's 64 bits where `long long' is expected, then the compiler would warn about the formats not matching the argument types, and the programmer changing them to shut up the compiler would break the program's portability. Here we assume what is presently the case in all the GCC configurations we support: long long is always 64 bits, long is always word/address size, and int is always 32 bits. */ #define __S16_TYPE short int #define __U16_TYPE unsigned short int #define __S32_TYPE int #define __U32_TYPE unsigned int #define __SLONGWORD_TYPE long int #define __ULONGWORD_TYPE unsigned long int #if __WORDSIZE == 32 # define __SQUAD_TYPE __quad_t # define __UQUAD_TYPE __u_quad_t # define __SWORD_TYPE int # define __UWORD_TYPE unsigned int # define __SLONG32_TYPE long int # define __ULONG32_TYPE unsigned long int # define __S64_TYPE __quad_t # define __U64_TYPE __u_quad_t /* We want __extension__ before typedef's that use nonstandard base types such as `long long' in C89 mode. */ # define __STD_TYPE __extension__ typedef #elif __WORDSIZE == 64 # define __SQUAD_TYPE long int # define __UQUAD_TYPE unsigned long int # define __SWORD_TYPE long int # define __UWORD_TYPE unsigned long int # define __SLONG32_TYPE int # define __ULONG32_TYPE unsigned int # define __S64_TYPE long int # define __U64_TYPE unsigned long int /* No need to mark the typedef with __extension__. */ # define __STD_TYPE typedef #else # error #endif #include /* Defines __*_T_TYPE macros. */ __STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ __STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ __STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ __STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ __STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ __STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ __STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ __STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ __STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ __STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ __STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ __STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ __STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ __STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ __STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ __STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ __STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ __STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ __STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */ __STD_TYPE __SWBLK_T_TYPE __swblk_t; /* Type of a swap block maybe? */ __STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ /* Clock ID used in clock and timer functions. */ __STD_TYPE __CLOCKID_T_TYPE __clockid_t; /* Timer ID returned by `timer_create'. */ __STD_TYPE __TIMER_T_TYPE __timer_t; /* Type to represent block size. */ __STD_TYPE __BLKSIZE_T_TYPE __blksize_t; /* Types from the Large File Support interface. */ /* Type to count number of disk blocks. */ __STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; __STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; /* Type to count file system blocks. */ __STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; __STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; /* Type to count file system nodes. */ __STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; __STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; __STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ /* These few don't really vary by system, they always correspond to one of the other defined types. */ typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ typedef __quad_t *__qaddr_t; typedef char *__caddr_t; /* Duplicates info from stdint.h but this is used in unistd.h. */ __STD_TYPE __SWORD_TYPE __intptr_t; /* Duplicate info from sys/socket.h. */ __STD_TYPE __U32_TYPE __socklen_t; #undef __STD_TYPE #endif /* bits/types.h */ Convert-Binary-C-0.76/tests/include/include/bits/stat.h0000644000175000001440000001455611550664625021525 0ustar mhxusers/* Copyright (C) 1992, 1995-2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_STAT_H # error "Never include directly; use instead." #endif /* Versions of the `struct stat' data structure. */ #define _STAT_VER_LINUX_OLD 1 #define _STAT_VER_KERNEL 1 #define _STAT_VER_SVR4 2 #define _STAT_VER_LINUX 3 #define _STAT_VER _STAT_VER_LINUX /* The one defined below. */ /* Versions of the `xmknod' interface. */ #define _MKNOD_VER_LINUX 1 #define _MKNOD_VER_SVR4 2 #define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */ struct stat { __dev_t st_dev; /* Device. */ unsigned short int __pad1; #ifndef __USE_FILE_OFFSET64 __ino_t st_ino; /* File serial number. */ #else __ino_t __st_ino; /* 32bit file serial number. */ #endif __mode_t st_mode; /* File mode. */ __nlink_t st_nlink; /* Link count. */ __uid_t st_uid; /* User ID of the file's owner. */ __gid_t st_gid; /* Group ID of the file's group.*/ __dev_t st_rdev; /* Device number, if device. */ unsigned short int __pad2; #ifndef __USE_FILE_OFFSET64 __off_t st_size; /* Size of file, in bytes. */ #else __off64_t st_size; /* Size of file, in bytes. */ #endif __blksize_t st_blksize; /* Optimal block size for I/O. */ #ifndef __USE_FILE_OFFSET64 __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ #else __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ #endif #ifdef __USE_MISC /* Nanosecond resolution timestamps are stored in a format equivalent to 'struct timespec'. This is the type used whenever possible but the Unix namespace rules do not allow the identifier 'timespec' to appear in the header. Therefore we have to handle the use of this header in strictly standard-compliant sources special. */ struct timespec st_atim; /* Time of last access. */ struct timespec st_mtim; /* Time of last modification. */ struct timespec st_ctim; /* Time of last status change. */ # define st_atime st_atim.tv_sec /* Backward compatibility. */ # define st_mtime st_mtim.tv_sec # define st_ctime st_ctim.tv_sec #else __time_t st_atime; /* Time of last access. */ unsigned long int st_atimensec; /* Nscecs of last access. */ __time_t st_mtime; /* Time of last modification. */ unsigned long int st_mtimensec; /* Nsecs of last modification. */ __time_t st_ctime; /* Time of last status change. */ unsigned long int st_ctimensec; /* Nsecs of last status change. */ #endif #ifndef __USE_FILE_OFFSET64 unsigned long int __unused4; unsigned long int __unused5; #else __ino64_t st_ino; /* File serial number. */ #endif }; #ifdef __USE_LARGEFILE64 struct stat64 { __dev_t st_dev; /* Device. */ unsigned int __pad1; __ino_t __st_ino; /* 32bit file serial number. */ __mode_t st_mode; /* File mode. */ __nlink_t st_nlink; /* Link count. */ __uid_t st_uid; /* User ID of the file's owner. */ __gid_t st_gid; /* Group ID of the file's group.*/ __dev_t st_rdev; /* Device number, if device. */ unsigned int __pad2; __off64_t st_size; /* Size of file, in bytes. */ __blksize_t st_blksize; /* Optimal block size for I/O. */ __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ #ifdef __USE_MISC /* Nanosecond resolution timestamps are stored in a format equivalent to 'struct timespec'. This is the type used whenever possible but the Unix namespace rules do not allow the identifier 'timespec' to appear in the header. Therefore we have to handle the use of this header in strictly standard-compliant sources special. */ struct timespec st_atim; /* Time of last access. */ struct timespec st_mtim; /* Time of last modification. */ struct timespec st_ctim; /* Time of last status change. */ #else __time_t st_atime; /* Time of last access. */ unsigned long int st_atimensec; /* Nscecs of last access. */ __time_t st_mtime; /* Time of last modification. */ unsigned long int st_mtimensec; /* Nsecs of last modification. */ __time_t st_ctime; /* Time of last status change. */ unsigned long int st_ctimensec; /* Nsecs of last status change. */ #endif __ino64_t st_ino; /* File serial number. */ }; #endif /* Tell code we have these members. */ #define _STATBUF_ST_BLKSIZE #define _STATBUF_ST_RDEV /* Nanosecond resolution time values are supported. */ #define _STATBUF_ST_NSEC /* Encoding of the file mode. */ #define __S_IFMT 0170000 /* These bits determine file type. */ /* File types. */ #define __S_IFDIR 0040000 /* Directory. */ #define __S_IFCHR 0020000 /* Character device. */ #define __S_IFBLK 0060000 /* Block device. */ #define __S_IFREG 0100000 /* Regular file. */ #define __S_IFIFO 0010000 /* FIFO. */ #define __S_IFLNK 0120000 /* Symbolic link. */ #define __S_IFSOCK 0140000 /* Socket. */ /* POSIX.1b objects. Note that these macros always evaluate to zero. But they do it by enforcing the correct use of the macros. */ #define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode) #define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode) #define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode) /* Protection bits. */ #define __S_ISUID 04000 /* Set user ID on execution. */ #define __S_ISGID 02000 /* Set group ID on execution. */ #define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ #define __S_IREAD 0400 /* Read by owner. */ #define __S_IWRITE 0200 /* Write by owner. */ #define __S_IEXEC 0100 /* Execute by owner. */ Convert-Binary-C-0.76/tests/include/include/bits/time.h0000644000175000001440000000477011550664625021505 0ustar mhxusers/* System-dependent timing definitions. Generic version. Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * Never include this file directly; use instead. */ #ifndef __need_timeval # ifndef _BITS_TIME_H # define _BITS_TIME_H 1 /* ISO/IEC 9899:1990 7.12.1: The macro `CLOCKS_PER_SEC' is the number per second of the value returned by the `clock' function. */ /* CAE XSH, Issue 4, Version 2: The value of CLOCKS_PER_SEC is required to be 1 million on all XSI-conformant systems. */ # define CLOCKS_PER_SEC 1000000l # if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K /* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK presents the real value for clock ticks per second for the system. */ # include extern long int __sysconf (int); # define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */ # endif # ifdef __USE_POSIX199309 /* Identifier for system-wide realtime clock. */ # define CLOCK_REALTIME 0 /* Monotonic system-wide clock. */ # define CLOCK_MONOTONIC 1 /* High-resolution timer from the CPU. */ # define CLOCK_PROCESS_CPUTIME_ID 2 /* Thread-specific CPU-time clock. */ # define CLOCK_THREAD_CPUTIME_ID 3 /* Flag to indicate time is absolute. */ # define TIMER_ABSTIME 1 # endif # endif /* bits/time.h */ #endif #ifdef __need_timeval # undef __need_timeval # ifndef _STRUCT_TIMEVAL # define _STRUCT_TIMEVAL 1 # include /* A time value that is accurate to the nearest microsecond but also has a range of years. */ struct timeval { __time_t tv_sec; /* Seconds. */ __suseconds_t tv_usec; /* Microseconds. */ }; # endif /* struct timeval */ #endif /* need timeval */ Convert-Binary-C-0.76/tests/include/include/bits/locale.h0000644000175000001440000000254211550664624022000 0ustar mhxusers/* Definition of locale category symbol values. Copyright (C) 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #if !defined _LOCALE_H && !defined _LANGINFO_H # error "Never use directly; include instead." #endif #ifndef _BITS_LOCALE_H #define _BITS_LOCALE_H 1 enum { __LC_CTYPE = 0, __LC_NUMERIC = 1, __LC_TIME = 2, __LC_COLLATE = 3, __LC_MONETARY = 4, __LC_MESSAGES = 5, __LC_ALL = 6, __LC_PAPER = 7, __LC_NAME = 8, __LC_ADDRESS = 9, __LC_TELEPHONE = 10, __LC_MEASUREMENT = 11, __LC_IDENTIFICATION = 12 }; #endif /* bits/locale.h */ Convert-Binary-C-0.76/tests/include/include/bits/huge_val.h0000644000175000001440000000362511550664624022336 0ustar mhxusers/* `HUGE_VAL' constant for IEEE 754 machines (where it is infinity). Used by and functions for overflow. Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _MATH_H # error "Never use directly; include instead." #endif /* IEEE positive infinity (-HUGE_VAL is negative infinity). */ #if __GNUC_PREREQ(3,3) # define HUGE_VAL (__builtin_huge_val()) #elif __GNUC_PREREQ(2,96) # define HUGE_VAL (__extension__ 0x1.0p2047) #elif defined __GNUC__ # define HUGE_VAL \ (__extension__ \ ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ { __l: 0x7ff0000000000000ULL }).__d) #else /* not GCC */ # include typedef union { unsigned char __c[8]; double __d; } __huge_val_t; # if __BYTE_ORDER == __BIG_ENDIAN # define __HUGE_VAL_bytes { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } # endif # if __BYTE_ORDER == __LITTLE_ENDIAN # define __HUGE_VAL_bytes { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } # endif static __huge_val_t __huge_val = { __HUGE_VAL_bytes }; # define HUGE_VAL (__huge_val.__d) #endif /* GCC. */ Convert-Binary-C-0.76/tests/include/include/bits/typesizes.h0000644000175000001440000000475211550664625022606 0ustar mhxusers/* bits/typesizes.h -- underlying types for *_t. Generic version. Copyright (C) 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _BITS_TYPES_H # error "Never include directly; use instead." #endif #ifndef _BITS_TYPESIZES_H #define _BITS_TYPESIZES_H 1 /* See for the meaning of these macros. This file exists so that need not vary across different GNU platforms. */ #define __DEV_T_TYPE __UQUAD_TYPE #define __UID_T_TYPE __U32_TYPE #define __GID_T_TYPE __U32_TYPE #define __INO_T_TYPE __ULONGWORD_TYPE #define __INO64_T_TYPE __UQUAD_TYPE #define __MODE_T_TYPE __U32_TYPE #define __NLINK_T_TYPE __UWORD_TYPE #define __OFF_T_TYPE __SLONGWORD_TYPE #define __OFF64_T_TYPE __SQUAD_TYPE #define __PID_T_TYPE __S32_TYPE #define __RLIM_T_TYPE __ULONGWORD_TYPE #define __RLIM64_T_TYPE __UQUAD_TYPE #define __BLKCNT_T_TYPE __SLONGWORD_TYPE #define __BLKCNT64_T_TYPE __SQUAD_TYPE #define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE #define __FSBLKCNT64_T_TYPE __UQUAD_TYPE #define __FSFILCNT_T_TYPE __ULONGWORD_TYPE #define __FSFILCNT64_T_TYPE __UQUAD_TYPE #define __ID_T_TYPE __U32_TYPE #define __CLOCK_T_TYPE __SLONGWORD_TYPE #define __TIME_T_TYPE __SLONGWORD_TYPE #define __USECONDS_T_TYPE __U32_TYPE #define __SUSECONDS_T_TYPE __SLONGWORD_TYPE #define __DADDR_T_TYPE __S32_TYPE #define __SWBLK_T_TYPE __SLONGWORD_TYPE #define __KEY_T_TYPE __S32_TYPE #define __CLOCKID_T_TYPE __S32_TYPE #define __TIMER_T_TYPE void * #define __BLKSIZE_T_TYPE __SLONGWORD_TYPE #define __FSID_T_TYPE struct { int __val[2]; } #define __SSIZE_T_TYPE __SWORD_TYPE /* Number of descriptors that can fit in an `fd_set'. */ #define __FD_SETSIZE 1024 #endif /* bits/typesizes.h */ Convert-Binary-C-0.76/tests/include/include/bits/setjmp.h0000644000175000001440000000226511550664625022046 0ustar mhxusers/* Copyright (C) 1997,1998,2000,2001,2003,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* Define the machine-dependent type `jmp_buf'. Intel 386 version. */ #ifndef _BITS_SETJMP_H #define _BITS_SETJMP_H 1 #if !defined _SETJMP_H && !defined _PTHREAD_H # error "Never include directly; use instead." #endif #ifndef _ASM typedef int __jmp_buf[6]; #endif #endif /* bits/setjmp.h */ Convert-Binary-C-0.76/tests/include/include/bits/environments.h0000644000175000001440000000503011550664624023263 0ustar mhxusers/* Copyright (C) 1999, 2001, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _UNISTD_H # error "Never include this file directly. Use instead" #endif /* This header should define the following symbols under the described situations. A value `1' means that the model is always supported, `-1' means it is never supported. Undefined means it cannot be statically decided. _POSIX_V6_ILP32_OFF32 32bit int, long, pointers, and off_t type _POSIX_V6_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type _POSIX_V6_LP64_OFF32 64bit long and pointers and 32bit off_t type _POSIX_V6_LPBIG_OFFBIG 64bit long and pointers and large off_t type The macros _XBS5_ILP32_OFF32, _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were used in previous versions of the Unix standard and are available only for compatibility. */ /* By default we have 32-bit wide `int', `long int', pointers and `off_t' and all platforms support LFS. */ #define _POSIX_V6_ILP32_OFF32 1 #define _POSIX_V6_ILP32_OFFBIG 1 #define _XBS5_ILP32_OFF32 1 #define _XBS5_ILP32_OFFBIG 1 /* We optionally provide an environment with the above size but an 64-bit side `off_t'. Therefore we don't define _XBS5_ILP32_OFFBIG. */ /* Environments with 64-bit wide pointers can be provided, so these macros aren't defined: # undef _POSIX_V6_LP64_OFF64 # undef _POSIX_V6_LPBIG_OFFBIG # undef _XBS5_LP64_OFF64 # undef _XBS5_LPBIG_OFFBIG and sysconf tests for it at runtime. */ #define __ILP32_OFF32_CFLAGS "-m32" #define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" #define __ILP32_OFF32_LDFLAGS "-m32" #define __ILP32_OFFBIG_LDFLAGS "-m32" #define __LP64_OFF64_CFLAGS "-m64" #define __LP64_OFF64_LDFLAGS "-m64" Convert-Binary-C-0.76/tests/include/include/bits/wchar.h0000644000175000001440000000201411550664626021641 0ustar mhxusers/* wchar_t type related definitions. Copyright (C) 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _BITS_WCHAR_H #define _BITS_WCHAR_H 1 #define __WCHAR_MIN (-2147483647l - 1l) #define __WCHAR_MAX (2147483647l) #endif /* bits/wchar.h */ Convert-Binary-C-0.76/tests/include/include/bits/wordsize.h0000644000175000001440000000155111550664626022410 0ustar mhxusers/* Copyright (C) 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #define __WORDSIZE 32 Convert-Binary-C-0.76/tests/include/include/bits/siginfo.h0000644000175000001440000002164511550664625022205 0ustar mhxusers/* siginfo_t, sigevent and constants. Linux version. Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #if !defined _SIGNAL_H && !defined __need_siginfo_t \ && !defined __need_sigevent_t # error "Never include this file directly. Use instead" #endif #include #if (!defined __have_sigval_t \ && (defined _SIGNAL_H || defined __need_siginfo_t \ || defined __need_sigevent_t)) # define __have_sigval_t 1 /* Type for data associated with a signal. */ typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; #endif #if (!defined __have_siginfo_t \ && (defined _SIGNAL_H || defined __need_siginfo_t)) # define __have_siginfo_t 1 # define __SI_MAX_SIZE 128 # if __WORDSIZE == 64 # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4) # else # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3) # endif typedef struct siginfo { int si_signo; /* Signal number. */ int si_errno; /* If non-zero, an errno value associated with this signal, as defined in . */ int si_code; /* Signal code. */ union { int _pad[__SI_PAD_SIZE]; /* kill(). */ struct { __pid_t si_pid; /* Sending process ID. */ __uid_t si_uid; /* Real user ID of sending process. */ } _kill; /* POSIX.1b timers. */ struct { int si_tid; /* Timer ID. */ int si_overrun; /* Overrun count. */ sigval_t si_sigval; /* Signal value. */ } _timer; /* POSIX.1b signals. */ struct { __pid_t si_pid; /* Sending process ID. */ __uid_t si_uid; /* Real user ID of sending process. */ sigval_t si_sigval; /* Signal value. */ } _rt; /* SIGCHLD. */ struct { __pid_t si_pid; /* Which child. */ __uid_t si_uid; /* Real user ID of sending process. */ int si_status; /* Exit value or signal. */ __clock_t si_utime; __clock_t si_stime; } _sigchld; /* SIGILL, SIGFPE, SIGSEGV, SIGBUS. */ struct { void *si_addr; /* Faulting insn/memory ref. */ } _sigfault; /* SIGPOLL. */ struct { long int si_band; /* Band event for SIGPOLL. */ int si_fd; } _sigpoll; } _sifields; } siginfo_t; /* X/Open requires some more fields with fixed names. */ # define si_pid _sifields._kill.si_pid # define si_uid _sifields._kill.si_uid # define si_timerid _sifields._timer.si_tid # define si_overrun _sifields._timer.si_overrun # define si_status _sifields._sigchld.si_status # define si_utime _sifields._sigchld.si_utime # define si_stime _sifields._sigchld.si_stime # define si_value _sifields._rt.si_sigval # define si_int _sifields._rt.si_sigval.sival_int # define si_ptr _sifields._rt.si_sigval.sival_ptr # define si_addr _sifields._sigfault.si_addr # define si_band _sifields._sigpoll.si_band # define si_fd _sifields._sigpoll.si_fd /* Values for `si_code'. Positive values are reserved for kernel-generated signals. */ enum { SI_ASYNCNL = -60, /* Sent by asynch name lookup completion. */ # define SI_ASYNCNL SI_ASYNCNL SI_TKILL = -6, /* Sent by tkill. */ # define SI_TKILL SI_TKILL SI_SIGIO, /* Sent by queued SIGIO. */ # define SI_SIGIO SI_SIGIO SI_ASYNCIO, /* Sent by AIO completion. */ # define SI_ASYNCIO SI_ASYNCIO SI_MESGQ, /* Sent by real time mesq state change. */ # define SI_MESGQ SI_MESGQ SI_TIMER, /* Sent by timer expiration. */ # define SI_TIMER SI_TIMER SI_QUEUE, /* Sent by sigqueue. */ # define SI_QUEUE SI_QUEUE SI_USER, /* Sent by kill, sigsend, raise. */ # define SI_USER SI_USER SI_KERNEL = 0x80 /* Send by kernel. */ #define SI_KERNEL SI_KERNEL }; /* `si_code' values for SIGILL signal. */ enum { ILL_ILLOPC = 1, /* Illegal opcode. */ # define ILL_ILLOPC ILL_ILLOPC ILL_ILLOPN, /* Illegal operand. */ # define ILL_ILLOPN ILL_ILLOPN ILL_ILLADR, /* Illegal addressing mode. */ # define ILL_ILLADR ILL_ILLADR ILL_ILLTRP, /* Illegal trap. */ # define ILL_ILLTRP ILL_ILLTRP ILL_PRVOPC, /* Privileged opcode. */ # define ILL_PRVOPC ILL_PRVOPC ILL_PRVREG, /* Privileged register. */ # define ILL_PRVREG ILL_PRVREG ILL_COPROC, /* Coprocessor error. */ # define ILL_COPROC ILL_COPROC ILL_BADSTK /* Internal stack error. */ # define ILL_BADSTK ILL_BADSTK }; /* `si_code' values for SIGFPE signal. */ enum { FPE_INTDIV = 1, /* Integer divide by zero. */ # define FPE_INTDIV FPE_INTDIV FPE_INTOVF, /* Integer overflow. */ # define FPE_INTOVF FPE_INTOVF FPE_FLTDIV, /* Floating point divide by zero. */ # define FPE_FLTDIV FPE_FLTDIV FPE_FLTOVF, /* Floating point overflow. */ # define FPE_FLTOVF FPE_FLTOVF FPE_FLTUND, /* Floating point underflow. */ # define FPE_FLTUND FPE_FLTUND FPE_FLTRES, /* Floating point inexact result. */ # define FPE_FLTRES FPE_FLTRES FPE_FLTINV, /* Floating point invalid operation. */ # define FPE_FLTINV FPE_FLTINV FPE_FLTSUB /* Subscript out of range. */ # define FPE_FLTSUB FPE_FLTSUB }; /* `si_code' values for SIGSEGV signal. */ enum { SEGV_MAPERR = 1, /* Address not mapped to object. */ # define SEGV_MAPERR SEGV_MAPERR SEGV_ACCERR /* Invalid permissions for mapped object. */ # define SEGV_ACCERR SEGV_ACCERR }; /* `si_code' values for SIGBUS signal. */ enum { BUS_ADRALN = 1, /* Invalid address alignment. */ # define BUS_ADRALN BUS_ADRALN BUS_ADRERR, /* Non-existant physical address. */ # define BUS_ADRERR BUS_ADRERR BUS_OBJERR /* Object specific hardware error. */ # define BUS_OBJERR BUS_OBJERR }; /* `si_code' values for SIGTRAP signal. */ enum { TRAP_BRKPT = 1, /* Process breakpoint. */ # define TRAP_BRKPT TRAP_BRKPT TRAP_TRACE /* Process trace trap. */ # define TRAP_TRACE TRAP_TRACE }; /* `si_code' values for SIGCHLD signal. */ enum { CLD_EXITED = 1, /* Child has exited. */ # define CLD_EXITED CLD_EXITED CLD_KILLED, /* Child was killed. */ # define CLD_KILLED CLD_KILLED CLD_DUMPED, /* Child terminated abnormally. */ # define CLD_DUMPED CLD_DUMPED CLD_TRAPPED, /* Traced child has trapped. */ # define CLD_TRAPPED CLD_TRAPPED CLD_STOPPED, /* Child has stopped. */ # define CLD_STOPPED CLD_STOPPED CLD_CONTINUED /* Stopped child has continued. */ # define CLD_CONTINUED CLD_CONTINUED }; /* `si_code' values for SIGPOLL signal. */ enum { POLL_IN = 1, /* Data input available. */ # define POLL_IN POLL_IN POLL_OUT, /* Output buffers available. */ # define POLL_OUT POLL_OUT POLL_MSG, /* Input message available. */ # define POLL_MSG POLL_MSG POLL_ERR, /* I/O error. */ # define POLL_ERR POLL_ERR POLL_PRI, /* High priority input available. */ # define POLL_PRI POLL_PRI POLL_HUP /* Device disconnected. */ # define POLL_HUP POLL_HUP }; # undef __need_siginfo_t #endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t). */ #if (defined _SIGNAL_H || defined __need_sigevent_t) \ && !defined __have_sigevent_t # define __have_sigevent_t 1 /* Structure to transport application-defined values with signals. */ # define __SIGEV_MAX_SIZE 64 # if __WORDSIZE == 64 # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4) # else # define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 3) # endif typedef struct sigevent { sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[__SIGEV_PAD_SIZE]; /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the thread to receive the signal. */ __pid_t _tid; struct { void (*_function) (sigval_t); /* Function to start. */ void *_attribute; /* Really pthread_attr_t. */ } _sigev_thread; } _sigev_un; } sigevent_t; /* POSIX names to access some of the members. */ # define sigev_notify_function _sigev_un._sigev_thread._function # define sigev_notify_attributes _sigev_un._sigev_thread._attribute /* `sigev_notify' values. */ enum { SIGEV_SIGNAL = 0, /* Notify via signal. */ # define SIGEV_SIGNAL SIGEV_SIGNAL SIGEV_NONE, /* Other notification: meaningless. */ # define SIGEV_NONE SIGEV_NONE SIGEV_THREAD, /* Deliver via thread creation. */ # define SIGEV_THREAD SIGEV_THREAD SIGEV_THREAD_ID = 4 /* Send signal to specific thread. */ #define SIGEV_THREAD_ID SIGEV_THREAD_ID }; #endif /* have _SIGNAL_H. */ Convert-Binary-C-0.76/tests/include/include/bits/posix_opt.h0000644000175000001440000001234711550664625022572 0ustar mhxusers/* Define POSIX options for Linux. Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _POSIX_OPT_H #define _POSIX_OPT_H 1 /* Job control is supported. */ #define _POSIX_JOB_CONTROL 1 /* Processes have a saved set-user-ID and a saved set-group-ID. */ #define _POSIX_SAVED_IDS 1 /* Priority scheduling is supported. */ #define _POSIX_PRIORITY_SCHEDULING 200112L /* Synchronizing file data is supported. */ #define _POSIX_SYNCHRONIZED_IO 200112L /* The fsync function is present. */ #define _POSIX_FSYNC 200112L /* Mapping of files to memory is supported. */ #define _POSIX_MAPPED_FILES 200112L /* Locking of all memory is supported. */ #define _POSIX_MEMLOCK 200112L /* Locking of ranges of memory is supported. */ #define _POSIX_MEMLOCK_RANGE 200112L /* Setting of memory protections is supported. */ #define _POSIX_MEMORY_PROTECTION 200112L /* Only root can change owner of file. */ #define _POSIX_CHOWN_RESTRICTED 1 /* `c_cc' member of 'struct termios' structure can be disabled by using the value _POSIX_VDISABLE. */ #define _POSIX_VDISABLE '\0' /* Filenames are not silently truncated. */ #define _POSIX_NO_TRUNC 1 /* X/Open realtime support is available. */ #define _XOPEN_REALTIME 1 /* XPG4.2 shared memory is supported. */ #define _XOPEN_SHM 1 /* Tell we have POSIX threads. */ #define _POSIX_THREADS 200112L /* We have the reentrant functions described in POSIX. */ #define _POSIX_REENTRANT_FUNCTIONS 1 #define _POSIX_THREAD_SAFE_FUNCTIONS 200112L /* We provide priority scheduling for threads. */ #define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L /* We support user-defined stack sizes. */ #define _POSIX_THREAD_ATTR_STACKSIZE 200112L /* We support user-defined stacks. */ #define _POSIX_THREAD_ATTR_STACKADDR 200112L /* We support POSIX.1b semaphores. */ #define _POSIX_SEMAPHORES 200112L /* Real-time signals are supported. */ #define _POSIX_REALTIME_SIGNALS 200112L /* We support asynchronous I/O. */ #define _POSIX_ASYNCHRONOUS_IO 200112L #define _POSIX_ASYNC_IO 1 /* Alternative name for Unix98. */ #define _LFS_ASYNCHRONOUS_IO 1 /* Support for prioritization is also available. */ #define _POSIX_PRIORITIZED_IO 200112L /* The LFS support in asynchronous I/O is also available. */ #define _LFS64_ASYNCHRONOUS_IO 1 /* The rest of the LFS is also available. */ #define _LFS_LARGEFILE 1 #define _LFS64_LARGEFILE 1 #define _LFS64_STDIO 1 /* POSIX shared memory objects are implemented. */ #define _POSIX_SHARED_MEMORY_OBJECTS 200112L /* CPU-time clocks support needs to be checked at runtime. */ #define _POSIX_CPUTIME 0 /* Clock support in threads must be also checked at runtime. */ #define _POSIX_THREAD_CPUTIME 0 /* GNU libc provides regular expression handling. */ #define _POSIX_REGEXP 1 /* Reader/Writer locks are available. */ #define _POSIX_READER_WRITER_LOCKS 200112L /* We have a POSIX shell. */ #define _POSIX_SHELL 1 /* We support the Timeouts option. */ #define _POSIX_TIMEOUTS 200112L /* We support spinlocks. */ #define _POSIX_SPIN_LOCKS 200112L /* The `spawn' function family is supported. */ #define _POSIX_SPAWN 200112L /* We have POSIX timers. */ #define _POSIX_TIMERS 200112L /* The barrier functions are available. */ #define _POSIX_BARRIERS 200112L /* POSIX message queues are available. */ #define _POSIX_MESSAGE_PASSING 200112L /* Thread process-shared synchronization is supported. */ #define _POSIX_THREAD_PROCESS_SHARED 200112L /* The monotonic clock might be available. */ #define _POSIX_MONOTONIC_CLOCK 0 /* The clock selection interfaces are available. */ #define _POSIX_CLOCK_SELECTION 200112L /* Advisory information interfaces are available. */ #define _POSIX_ADVISORY_INFO 200112L /* IPv6 support is available. */ #define _POSIX_IPV6 200112L /* Raw socket support is available. */ #define _POSIX_RAW_SOCKETS 200112L /* We have at least one terminal. */ #define _POSIX2_CHAR_TERM 200112L /* Neither process nor thread sporadic server interfaces is available. */ #define _POSIX_SPORADIC_SERVER -1 #define _POSIX_THREAD_SPORADIC_SERVER -1 /* trace.h is not available. */ #define _POSIX_TRACE -1 #define _POSIX_TRACE_EVENT_FILTER -1 #define _POSIX_TRACE_INHERIT -1 #define _POSIX_TRACE_LOG -1 /* Typed memory objects are not available. */ #define _POSIX_TYPED_MEMORY_OBJECTS -1 /* No support for priority inheritance or protection so far. */ #define _POSIX_THREAD_PRIO_INHERIT -1 #define _POSIX_THREAD_PRIO_PROTECT -1 #endif /* posix_opt.h */ Convert-Binary-C-0.76/tests/include/include/bits/sigstack.h0000644000175000001440000000307311550664625022352 0ustar mhxusers/* sigstack, sigaltstack definitions. Copyright (C) 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SIGNAL_H # error "Never include this file directly. Use instead" #endif /* Structure describing a signal stack (obsolete). */ struct sigstack { void *ss_sp; /* Signal stack pointer. */ int ss_onstack; /* Nonzero if executing on this stack. */ }; /* Possible values for `ss_flags.'. */ enum { SS_ONSTACK = 1, #define SS_ONSTACK SS_ONSTACK SS_DISABLE #define SS_DISABLE SS_DISABLE }; /* Minimum stack size for a signal handler. */ #define MINSIGSTKSZ 2048 /* System default stack size. */ #define SIGSTKSZ 8192 /* Alternate, preferred interface. */ typedef struct sigaltstack { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; Convert-Binary-C-0.76/tests/include/include/bits/ioctls.h0000644000175000001440000001071511550664624022037 0ustar mhxusers/* Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _SYS_IOCTL_H # error "Never use directly; include instead." #endif /* Use the definitions from the kernel header files. */ #include /* Routing table calls. */ #define SIOCADDRT 0x890B /* add routing table entry */ #define SIOCDELRT 0x890C /* delete routing table entry */ #define SIOCRTMSG 0x890D /* call to routing system */ /* Socket configuration controls. */ #define SIOCGIFNAME 0x8910 /* get iface name */ #define SIOCSIFLINK 0x8911 /* set iface channel */ #define SIOCGIFCONF 0x8912 /* get iface list */ #define SIOCGIFFLAGS 0x8913 /* get flags */ #define SIOCSIFFLAGS 0x8914 /* set flags */ #define SIOCGIFADDR 0x8915 /* get PA address */ #define SIOCSIFADDR 0x8916 /* set PA address */ #define SIOCGIFDSTADDR 0x8917 /* get remote PA address */ #define SIOCSIFDSTADDR 0x8918 /* set remote PA address */ #define SIOCGIFBRDADDR 0x8919 /* get broadcast PA address */ #define SIOCSIFBRDADDR 0x891a /* set broadcast PA address */ #define SIOCGIFNETMASK 0x891b /* get network PA mask */ #define SIOCSIFNETMASK 0x891c /* set network PA mask */ #define SIOCGIFMETRIC 0x891d /* get metric */ #define SIOCSIFMETRIC 0x891e /* set metric */ #define SIOCGIFMEM 0x891f /* get memory address (BSD) */ #define SIOCSIFMEM 0x8920 /* set memory address (BSD) */ #define SIOCGIFMTU 0x8921 /* get MTU size */ #define SIOCSIFMTU 0x8922 /* set MTU size */ #define SIOCSIFNAME 0x8923 /* set interface name */ #define SIOCSIFHWADDR 0x8924 /* set hardware address */ #define SIOCGIFENCAP 0x8925 /* get/set encapsulations */ #define SIOCSIFENCAP 0x8926 #define SIOCGIFHWADDR 0x8927 /* Get hardware address */ #define SIOCGIFSLAVE 0x8929 /* Driver slaving support */ #define SIOCSIFSLAVE 0x8930 #define SIOCADDMULTI 0x8931 /* Multicast address lists */ #define SIOCDELMULTI 0x8932 #define SIOCGIFINDEX 0x8933 /* name -> if_index mapping */ #define SIOGIFINDEX SIOCGIFINDEX /* misprint compatibility :-) */ #define SIOCSIFPFLAGS 0x8934 /* set/get extended flags set */ #define SIOCGIFPFLAGS 0x8935 #define SIOCDIFADDR 0x8936 /* delete PA address */ #define SIOCSIFHWBROADCAST 0x8937 /* set hardware broadcast addr */ #define SIOCGIFCOUNT 0x8938 /* get number of devices */ #define SIOCGIFBR 0x8940 /* Bridging support */ #define SIOCSIFBR 0x8941 /* Set bridging options */ #define SIOCGIFTXQLEN 0x8942 /* Get the tx queue length */ #define SIOCSIFTXQLEN 0x8943 /* Set the tx queue length */ /* ARP cache control calls. */ /* 0x8950 - 0x8952 * obsolete calls, don't re-use */ #define SIOCDARP 0x8953 /* delete ARP table entry */ #define SIOCGARP 0x8954 /* get ARP table entry */ #define SIOCSARP 0x8955 /* set ARP table entry */ /* RARP cache control calls. */ #define SIOCDRARP 0x8960 /* delete RARP table entry */ #define SIOCGRARP 0x8961 /* get RARP table entry */ #define SIOCSRARP 0x8962 /* set RARP table entry */ /* Driver configuration calls */ #define SIOCGIFMAP 0x8970 /* Get device parameters */ #define SIOCSIFMAP 0x8971 /* Set device parameters */ /* DLCI configuration calls */ #define SIOCADDDLCI 0x8980 /* Create new DLCI device */ #define SIOCDELDLCI 0x8981 /* Delete DLCI device */ /* Device private ioctl calls. */ /* These 16 ioctls are available to devices via the do_ioctl() device vector. Each device should include this file and redefine these names as their own. Because these are device dependent it is a good idea _NOT_ to issue them to random objects and hope. */ #define SIOCDEVPRIVATE 0x89F0 /* to 89FF */ /* * These 16 ioctl calls are protocol private */ #define SIOCPROTOPRIVATE 0x89E0 /* to 89EF */ Convert-Binary-C-0.76/tests/include/include/bits/socket.h0000644000175000001440000002472111550664625022035 0ustar mhxusers/* System-specific socket constants and types. Linux version. Copyright (C) 1991,1992,1994-2001, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef __BITS_SOCKET_H #define __BITS_SOCKET_H #if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H # error "Never include directly; use instead." #endif #define __need_size_t #define __need_NULL #include #include #include /* Type for length arguments in socket calls. */ #ifndef __socklen_t_defined typedef __socklen_t socklen_t; # define __socklen_t_defined #endif /* Types of sockets. */ enum __socket_type { SOCK_STREAM = 1, /* Sequenced, reliable, connection-based byte streams. */ #define SOCK_STREAM SOCK_STREAM SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams of fixed maximum length. */ #define SOCK_DGRAM SOCK_DGRAM SOCK_RAW = 3, /* Raw protocol interface. */ #define SOCK_RAW SOCK_RAW SOCK_RDM = 4, /* Reliably-delivered messages. */ #define SOCK_RDM SOCK_RDM SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based, datagrams of fixed maximum length. */ #define SOCK_SEQPACKET SOCK_SEQPACKET SOCK_PACKET = 10 /* Linux specific way of getting packets at the dev level. For writing rarp and other similar things on the user level. */ #define SOCK_PACKET SOCK_PACKET }; /* Protocol families. */ #define PF_UNSPEC 0 /* Unspecified. */ #define PF_LOCAL 1 /* Local to host (pipes and file-domain). */ #define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */ #define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */ #define PF_INET 2 /* IP protocol family. */ #define PF_AX25 3 /* Amateur Radio AX.25. */ #define PF_IPX 4 /* Novell Internet Protocol. */ #define PF_APPLETALK 5 /* Appletalk DDP. */ #define PF_NETROM 6 /* Amateur radio NetROM. */ #define PF_BRIDGE 7 /* Multiprotocol bridge. */ #define PF_ATMPVC 8 /* ATM PVCs. */ #define PF_X25 9 /* Reserved for X.25 project. */ #define PF_INET6 10 /* IP version 6. */ #define PF_ROSE 11 /* Amateur Radio X.25 PLP. */ #define PF_DECnet 12 /* Reserved for DECnet project. */ #define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */ #define PF_SECURITY 14 /* Security callback pseudo AF. */ #define PF_KEY 15 /* PF_KEY key management API. */ #define PF_NETLINK 16 #define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */ #define PF_PACKET 17 /* Packet family. */ #define PF_ASH 18 /* Ash. */ #define PF_ECONET 19 /* Acorn Econet. */ #define PF_ATMSVC 20 /* ATM SVCs. */ #define PF_SNA 22 /* Linux SNA Project */ #define PF_IRDA 23 /* IRDA sockets. */ #define PF_PPPOX 24 /* PPPoX sockets. */ #define PF_WANPIPE 25 /* Wanpipe API sockets. */ #define PF_BLUETOOTH 31 /* Bluetooth sockets. */ #define PF_MAX 32 /* For now.. */ /* Address families. */ #define AF_UNSPEC PF_UNSPEC #define AF_LOCAL PF_LOCAL #define AF_UNIX PF_UNIX #define AF_FILE PF_FILE #define AF_INET PF_INET #define AF_AX25 PF_AX25 #define AF_IPX PF_IPX #define AF_APPLETALK PF_APPLETALK #define AF_NETROM PF_NETROM #define AF_BRIDGE PF_BRIDGE #define AF_ATMPVC PF_ATMPVC #define AF_X25 PF_X25 #define AF_INET6 PF_INET6 #define AF_ROSE PF_ROSE #define AF_DECnet PF_DECnet #define AF_NETBEUI PF_NETBEUI #define AF_SECURITY PF_SECURITY #define AF_KEY PF_KEY #define AF_NETLINK PF_NETLINK #define AF_ROUTE PF_ROUTE #define AF_PACKET PF_PACKET #define AF_ASH PF_ASH #define AF_ECONET PF_ECONET #define AF_ATMSVC PF_ATMSVC #define AF_SNA PF_SNA #define AF_IRDA PF_IRDA #define AF_PPPOX PF_PPPOX #define AF_WANPIPE PF_WANPIPE #define AF_BLUETOOTH PF_BLUETOOTH #define AF_MAX PF_MAX /* Socket level values. Others are defined in the appropriate headers. XXX These definitions also should go into the appropriate headers as far as they are available. */ #define SOL_RAW 255 #define SOL_DECNET 261 #define SOL_X25 262 #define SOL_PACKET 263 #define SOL_ATM 264 /* ATM layer (cell level). */ #define SOL_AAL 265 /* ATM Adaption Layer (packet level). */ #define SOL_IRDA 266 /* Maximum queue length specifiable by listen. */ #define SOMAXCONN 128 /* Get the definition of the macro to define the common sockaddr members. */ #include /* Structure describing a generic socket address. */ struct sockaddr { __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */ char sa_data[14]; /* Address data. */ }; /* Structure large enough to hold any socket address (with the historical exception of AF_UNIX). We reserve 128 bytes. */ #if ULONG_MAX > 0xffffffff # define __ss_aligntype __uint64_t #else # define __ss_aligntype __uint32_t #endif #define _SS_SIZE 128 #define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype))) struct sockaddr_storage { __SOCKADDR_COMMON (ss_); /* Address family, etc. */ __ss_aligntype __ss_align; /* Force desired alignment. */ char __ss_padding[_SS_PADSIZE]; }; /* Bits in the FLAGS argument to `send', `recv', et al. */ enum { MSG_OOB = 0x01, /* Process out-of-band data. */ #define MSG_OOB MSG_OOB MSG_PEEK = 0x02, /* Peek at incoming messages. */ #define MSG_PEEK MSG_PEEK MSG_DONTROUTE = 0x04, /* Don't use local routing. */ #define MSG_DONTROUTE MSG_DONTROUTE #ifdef __USE_GNU /* DECnet uses a different name. */ MSG_TRYHARD = MSG_DONTROUTE, # define MSG_TRYHARD MSG_DONTROUTE #endif MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ #define MSG_CTRUNC MSG_CTRUNC MSG_PROXY = 0x10, /* Supply or ask second address. */ #define MSG_PROXY MSG_PROXY MSG_TRUNC = 0x20, #define MSG_TRUNC MSG_TRUNC MSG_DONTWAIT = 0x40, /* Nonblocking IO. */ #define MSG_DONTWAIT MSG_DONTWAIT MSG_EOR = 0x80, /* End of record. */ #define MSG_EOR MSG_EOR MSG_WAITALL = 0x100, /* Wait for a full request. */ #define MSG_WAITALL MSG_WAITALL MSG_FIN = 0x200, #define MSG_FIN MSG_FIN MSG_SYN = 0x400, #define MSG_SYN MSG_SYN MSG_CONFIRM = 0x800, /* Confirm path validity. */ #define MSG_CONFIRM MSG_CONFIRM MSG_RST = 0x1000, #define MSG_RST MSG_RST MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */ #define MSG_ERRQUEUE MSG_ERRQUEUE MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */ #define MSG_NOSIGNAL MSG_NOSIGNAL MSG_MORE = 0x8000 /* Sender will send more. */ #define MSG_MORE MSG_MORE }; /* Structure describing messages sent by `sendmsg' and received by `recvmsg'. */ struct msghdr { void *msg_name; /* Address to send to/receive from. */ socklen_t msg_namelen; /* Length of address data. */ struct iovec *msg_iov; /* Vector of data to send/receive into. */ size_t msg_iovlen; /* Number of elements in the vector. */ void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ size_t msg_controllen; /* Ancillary data buffer length. */ int msg_flags; /* Flags on received message. */ }; /* Structure used for storage of ancillary data object information. */ struct cmsghdr { size_t cmsg_len; /* Length of data in cmsg_data plus length of cmsghdr structure. */ int cmsg_level; /* Originating protocol. */ int cmsg_type; /* Protocol specific type. */ #if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */ #endif }; /* Ancillary data object manipulation macros. */ #if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L # define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data) #else # define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1)) #endif #define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg) #define CMSG_FIRSTHDR(mhdr) \ ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL) #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \ & (size_t) ~(sizeof (size_t) - 1)) #define CMSG_SPACE(len) (CMSG_ALIGN (len) \ + CMSG_ALIGN (sizeof (struct cmsghdr))) #define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len)) extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW; #ifdef __USE_EXTERN_INLINES # ifndef _EXTERN_INLINE # define _EXTERN_INLINE extern __inline # endif _EXTERN_INLINE struct cmsghdr * __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)) { if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) /* The kernel header does this so there may be a reason. */ return 0; __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)); if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen) || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len) > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) /* No more entries. */ return 0; return __cmsg; } #endif /* Use `extern inline'. */ /* Socket level message types. This must match the definitions in . */ enum { SCM_RIGHTS = 0x01 /* Transfer file descriptors. */ #define SCM_RIGHTS SCM_RIGHTS #ifdef __USE_BSD , SCM_CREDENTIALS = 0x02 /* Credentials passing. */ # define SCM_CREDENTIALS SCM_CREDENTIALS #endif }; /* User visible structure for SCM_CREDENTIALS message */ struct ucred { pid_t pid; /* PID of sending process. */ uid_t uid; /* UID of sending process. */ gid_t gid; /* GID of sending process. */ }; /* Get socket manipulation related informations from kernel headers. */ #include /* Structure used to manipulate the SO_LINGER option. */ struct linger { int l_onoff; /* Nonzero to linger on close. */ int l_linger; /* Time to linger. */ }; #endif /* bits/socket.h */ Convert-Binary-C-0.76/tests/include/include/ctype.h0000644000175000001440000002602211550664626020725 0ustar mhxusers/* Copyright (C) 1991,92,93,95,96,97,98,99,2001,2002,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard 7.4: Character handling */ #ifndef _CTYPE_H #define _CTYPE_H 1 #include #include __BEGIN_DECLS #ifndef _ISbit /* These are all the characteristics of characters. If there get to be more than 16 distinct characteristics, many things must be changed that use `unsigned short int's. The characteristics are stored always in network byte order (big endian). We define the bit value interpretations here dependent on the machine's byte order. */ # include # if __BYTE_ORDER == __BIG_ENDIAN # define _ISbit(bit) (1 << (bit)) # else /* __BYTE_ORDER == __LITTLE_ENDIAN */ # define _ISbit(bit) ((bit) < 8 ? ((1 << (bit)) << 8) : ((1 << (bit)) >> 8)) # endif enum { _ISupper = _ISbit (0), /* UPPERCASE. */ _ISlower = _ISbit (1), /* lowercase. */ _ISalpha = _ISbit (2), /* Alphabetic. */ _ISdigit = _ISbit (3), /* Numeric. */ _ISxdigit = _ISbit (4), /* Hexadecimal numeric. */ _ISspace = _ISbit (5), /* Whitespace. */ _ISprint = _ISbit (6), /* Printing. */ _ISgraph = _ISbit (7), /* Graphical. */ _ISblank = _ISbit (8), /* Blank (usually SPC and TAB). */ _IScntrl = _ISbit (9), /* Control character. */ _ISpunct = _ISbit (10), /* Punctuation. */ _ISalnum = _ISbit (11) /* Alphanumeric. */ }; #endif /* ! _ISbit */ /* These are defined in ctype-info.c. The declarations here must match those in localeinfo.h. In the thread-specific locale model (see `uselocale' in ) we cannot use global variables for these as was done in the past. Instead, the following accessor functions return the address of each variable, which is local to the current thread if multithreaded. These point into arrays of 384, so they can be indexed by any `unsigned char' value [0,255]; by EOF (-1); or by any `signed char' value [-128,-1). ISO C requires that the ctype functions work for `unsigned char' values and for EOF; we also support negative `signed char' values for broken old programs. The case conversion arrays are of `int's rather than `unsigned char's because tolower (EOF) must be EOF, which doesn't fit into an `unsigned char'. But today more important is that the arrays are also used for multi-byte character sets. */ extern __const unsigned short int **__ctype_b_loc (void) __attribute__ ((__const)); extern __const __int32_t **__ctype_tolower_loc (void) __attribute__ ((__const)); extern __const __int32_t **__ctype_toupper_loc (void) __attribute__ ((__const)); #define __isctype(c, type) \ ((*__ctype_b_loc ())[(int) (c)] & (unsigned short int) type) #define __isascii(c) (((c) & ~0x7f) == 0) /* If C is a 7 bit value. */ #define __toascii(c) ((c) & 0x7f) /* Mask off high bits. */ #define __exctype(name) extern int name (int) __THROW __BEGIN_NAMESPACE_STD /* The following names are all functions: int isCHARACTERISTIC(int c); which return nonzero iff C has CHARACTERISTIC. For the meaning of the characteristic names, see the `enum' above. */ __exctype (isalnum); __exctype (isalpha); __exctype (iscntrl); __exctype (isdigit); __exctype (islower); __exctype (isgraph); __exctype (isprint); __exctype (ispunct); __exctype (isspace); __exctype (isupper); __exctype (isxdigit); /* Return the lowercase version of C. */ extern int tolower (int __c) __THROW; /* Return the uppercase version of C. */ extern int toupper (int __c) __THROW; __END_NAMESPACE_STD /* ISO C99 introduced one new function. */ #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 __exctype (isblank); __END_NAMESPACE_C99 #endif #ifdef __USE_GNU /* Test C for a set of character classes according to MASK. */ extern int isctype (int __c, int __mask) __THROW; #endif #if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN /* Return nonzero iff C is in the ASCII set (i.e., is no more than 7 bits wide). */ extern int isascii (int __c) __THROW; /* Return the part of C that is in the ASCII set (i.e., the low-order 7 bits of C). */ extern int toascii (int __c) __THROW; /* These are the same as `toupper' and `tolower' except that they do not check the argument for being in the range of a `char'. */ __exctype (_toupper); __exctype (_tolower); #endif /* Use SVID or use misc. */ /* This code is needed for the optimized mapping functions. */ #define __tobody(c, f, a, args) \ (__extension__ \ ({ int __res; \ if (sizeof (c) > 1) \ { \ if (__builtin_constant_p (c)) \ { \ int __c = (c); \ __res = __c < -128 || __c > 255 ? __c : (a)[__c]; \ } \ else \ __res = f args; \ } \ else \ __res = (a)[(int) (c)]; \ __res; })) #if !defined __NO_CTYPE && !defined __cplusplus # define isalnum(c) __isctype((c), _ISalnum) # define isalpha(c) __isctype((c), _ISalpha) # define iscntrl(c) __isctype((c), _IScntrl) # define isdigit(c) __isctype((c), _ISdigit) # define islower(c) __isctype((c), _ISlower) # define isgraph(c) __isctype((c), _ISgraph) # define isprint(c) __isctype((c), _ISprint) # define ispunct(c) __isctype((c), _ISpunct) # define isspace(c) __isctype((c), _ISspace) # define isupper(c) __isctype((c), _ISupper) # define isxdigit(c) __isctype((c), _ISxdigit) # ifdef __USE_ISOC99 # define isblank(c) __isctype((c), _ISblank) # endif # ifdef __USE_EXTERN_INLINES extern __inline int __NTH (tolower (int __c)) { return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c; } extern __inline int __NTH (toupper (int __c)) { return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c; } # endif # if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus # define tolower(c) __tobody (c, tolower, *__ctype_tolower_loc (), (c)) # define toupper(c) __tobody (c, toupper, *__ctype_toupper_loc (), (c)) # endif /* Optimizing gcc */ # if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN # define isascii(c) __isascii (c) # define toascii(c) __toascii (c) # define _tolower(c) ((int) (*__ctype_tolower_loc ())[(int) (c)]) # define _toupper(c) ((int) (*__ctype_toupper_loc ())[(int) (c)]) # endif #endif /* Not __NO_CTYPE. */ #ifdef __USE_GNU /* The concept of one static locale per category is not very well thought out. Many applications will need to process its data using information from several different locales. Another application is the implementation of the internationalization handling in the upcoming ISO C++ standard library. To support this another set of the functions using locale data exist which have an additional argument. Attention: all these functions are *not* standardized in any form. This is a proof-of-concept implementation. */ /* Structure for reentrant locale using functions. This is an (almost) opaque type for the user level programs. */ # include /* These definitions are similar to the ones above but all functions take as an argument a handle for the locale which shall be used. */ # define __isctype_l(c, type, locale) \ ((locale)->__ctype_b[(int) (c)] & (unsigned short int) type) # define __exctype_l(name) \ extern int name (int, __locale_t) __THROW /* The following names are all functions: int isCHARACTERISTIC(int c, locale_t *locale); which return nonzero iff C has CHARACTERISTIC. For the meaning of the characteristic names, see the `enum' above. */ __exctype_l (isalnum_l); __exctype_l (isalpha_l); __exctype_l (iscntrl_l); __exctype_l (isdigit_l); __exctype_l (islower_l); __exctype_l (isgraph_l); __exctype_l (isprint_l); __exctype_l (ispunct_l); __exctype_l (isspace_l); __exctype_l (isupper_l); __exctype_l (isxdigit_l); __exctype_l (isblank_l); /* Return the lowercase version of C in locale L. */ extern int __tolower_l (int __c, __locale_t __l) __THROW; extern int tolower_l (int __c, __locale_t __l) __THROW; /* Return the uppercase version of C. */ extern int __toupper_l (int __c, __locale_t __l) __THROW; extern int toupper_l (int __c, __locale_t __l) __THROW; # if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus # define __tolower_l(c, locale) \ __tobody (c, __tolower_l, (locale)->__ctype_tolower, (c, locale)) # define __toupper_l(c, locale) \ __tobody (c, __toupper_l, (locale)->__ctype_toupper, (c, locale)) # define tolower_l(c, locale) __tolower_l ((c), (locale)) # define toupper_l(c, locale) __toupper_l ((c), (locale)) # endif /* Optimizing gcc */ # ifndef __NO_CTYPE # define __isalnum_l(c,l) __isctype_l((c), _ISalnum, (l)) # define __isalpha_l(c,l) __isctype_l((c), _ISalpha, (l)) # define __iscntrl_l(c,l) __isctype_l((c), _IScntrl, (l)) # define __isdigit_l(c,l) __isctype_l((c), _ISdigit, (l)) # define __islower_l(c,l) __isctype_l((c), _ISlower, (l)) # define __isgraph_l(c,l) __isctype_l((c), _ISgraph, (l)) # define __isprint_l(c,l) __isctype_l((c), _ISprint, (l)) # define __ispunct_l(c,l) __isctype_l((c), _ISpunct, (l)) # define __isspace_l(c,l) __isctype_l((c), _ISspace, (l)) # define __isupper_l(c,l) __isctype_l((c), _ISupper, (l)) # define __isxdigit_l(c,l) __isctype_l((c), _ISxdigit, (l)) # define __isblank_l(c,l) __isctype_l((c), _ISblank, (l)) # if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN # define __isascii_l(c,l) ((l), __isascii (c)) # define __toascii_l(c,l) ((l), __toascii (c)) # endif # define isalnum_l(c,l) __isalnum_l ((c), (l)) # define isalpha_l(c,l) __isalpha_l ((c), (l)) # define iscntrl_l(c,l) __iscntrl_l ((c), (l)) # define isdigit_l(c,l) __isdigit_l ((c), (l)) # define islower_l(c,l) __islower_l ((c), (l)) # define isgraph_l(c,l) __isgraph_l ((c), (l)) # define isprint_l(c,l) __isprint_l ((c), (l)) # define ispunct_l(c,l) __ispunct_l ((c), (l)) # define isspace_l(c,l) __isspace_l ((c), (l)) # define isupper_l(c,l) __isupper_l ((c), (l)) # define isxdigit_l(c,l) __isxdigit_l ((c), (l)) # define isblank_l(c,l) __isblank_l ((c), (l)) # if defined __USE_SVID || defined __USE_MISC || defined __USE_XOPEN # define isascii_l(c,l) __isascii_l ((c), (l)) # define toascii_l(c,l) __toascii_l ((c), (l)) # endif # endif /* Not __NO_CTYPE. */ #endif /* Use GNU. */ __END_DECLS #endif /* ctype.h */ Convert-Binary-C-0.76/tests/include/include/unistd.h0000644000175000001440000011626311550664627021117 0ustar mhxusers/* Copyright (C) 1991-2002,2003,2004,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * POSIX Standard: 2.10 Symbolic Constants */ #ifndef _UNISTD_H #define _UNISTD_H 1 #include __BEGIN_DECLS /* These may be used to determine what facilities are present at compile time. Their values can be obtained at run time from `sysconf'. */ /* POSIX Standard approved as ISO/IEC 9945-1 as of December 2001. */ #define _POSIX_VERSION 200112L /* These are not #ifdef __USE_POSIX2 because they are in the theoretically application-owned namespace. */ /* The utilities on GNU systems also correspond to this version. */ #define _POSIX2_VERSION 200112L /* If defined, the implementation supports the C Language Bindings Option. */ #define _POSIX2_C_BIND 200112L /* If defined, the implementation supports the C Language Development Utilities Option. */ #define _POSIX2_C_DEV 200112L /* If defined, the implementation supports the Software Development Utilities Option. */ #define _POSIX2_SW_DEV 200112L /* If defined, the implementation supports the creation of locales with the localedef utility. */ #define _POSIX2_LOCALEDEF 200112L /* X/Open version number to which the library conforms. It is selectable. */ #ifdef __USE_UNIX98 # define _XOPEN_VERSION 500 #else # define _XOPEN_VERSION 4 #endif /* Commands and utilities from XPG4 are available. */ #define _XOPEN_XCU_VERSION 4 /* We are compatible with the old published standards as well. */ #define _XOPEN_XPG2 1 #define _XOPEN_XPG3 1 #define _XOPEN_XPG4 1 /* The X/Open Unix extensions are available. */ #define _XOPEN_UNIX 1 /* Encryption is present. */ #define _XOPEN_CRYPT 1 /* The enhanced internationalization capabilities according to XPG4.2 are present. */ #define _XOPEN_ENH_I18N 1 /* The legacy interfaces are also available. */ #define _XOPEN_LEGACY 1 /* Get values of POSIX options: If these symbols are defined, the corresponding features are always available. If not, they may be available sometimes. The current values can be obtained with `sysconf'. _POSIX_JOB_CONTROL Job control is supported. _POSIX_SAVED_IDS Processes have a saved set-user-ID and a saved set-group-ID. _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported. _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported. _POSIX_TIMERS POSIX.4 clocks and timers are supported. _POSIX_ASYNCHRONOUS_IO Asynchronous I/O is supported. _POSIX_PRIORITIZED_IO Prioritized asynchronous I/O is supported. _POSIX_SYNCHRONIZED_IO Synchronizing file data is supported. _POSIX_FSYNC The fsync function is present. _POSIX_MAPPED_FILES Mapping of files to memory is supported. _POSIX_MEMLOCK Locking of all memory is supported. _POSIX_MEMLOCK_RANGE Locking of ranges of memory is supported. _POSIX_MEMORY_PROTECTION Setting of memory protections is supported. _POSIX_MESSAGE_PASSING POSIX.4 message queues are supported. _POSIX_SEMAPHORES POSIX.4 counting semaphores are supported. _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported. _POSIX_THREADS POSIX.1c pthreads are supported. _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported. _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported. _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported. _POSIX_THREAD_PRIORITY_SCHEDULING POSIX.1c thread execution scheduling supported. _POSIX_THREAD_PRIO_INHERIT Thread priority inheritance option supported. _POSIX_THREAD_PRIO_PROTECT Thread priority protection option supported. _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported. _POSIX_PII Protocol-independent interfaces are supported. _POSIX_PII_XTI XTI protocol-indep. interfaces are supported. _POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported. _POSIX_PII_INTERNET Internet family of protocols supported. _POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported. _POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported. _POSIX_PII_OSI ISO/OSI family of protocols supported. _POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported. _POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported. _POSIX_POLL Implementation supports `poll' function. _POSIX_SELECT Implementation supports `select' and `pselect'. _XOPEN_REALTIME X/Open realtime support is available. _XOPEN_REALTIME_THREADS X/Open realtime thread support is available. _XOPEN_SHM Shared memory interface according to XPG4.2. _XBS5_ILP32_OFF32 Implementation provides environment with 32-bit int, long, pointer, and off_t types. _XBS5_ILP32_OFFBIG Implementation provides environment with 32-bit int, long, and pointer and off_t with at least 64 bits. _XBS5_LP64_OFF64 Implementation provides environment with 32-bit int, and 64-bit long, pointer, and off_t types. _XBS5_LPBIG_OFFBIG Implementation provides environment with at least 32 bits int and long, pointer, and off_t with at least 64 bits. If any of these symbols is defined as -1, the corresponding option is not true for any file. If any is defined as other than -1, the corresponding option is true for all files. If a symbol is not defined at all, the value for a specific file can be obtained from `pathconf' and `fpathconf'. _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change the owner of a file. `chown' can only be used to change the group ID of a file to a group of which the calling process is a member. _POSIX_NO_TRUNC Pathname components longer than NAME_MAX generate an error. _POSIX_VDISABLE If defined, if the value of an element of the `c_cc' member of `struct termios' is _POSIX_VDISABLE, no character will have the effect associated with that element. _POSIX_SYNC_IO Synchronous I/O may be performed. _POSIX_ASYNC_IO Asynchronous I/O may be performed. _POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed. Support for the Large File Support interface is not generally available. If it is available the following constants are defined to one. _LFS64_LARGEFILE Low-level I/O supports large files. _LFS64_STDIO Standard I/O supports large files. */ #include /* Get the environment definitions from Unix98. */ #ifdef __USE_UNIX98 # include #endif /* Standard file descriptors. */ #define STDIN_FILENO 0 /* Standard input. */ #define STDOUT_FILENO 1 /* Standard output. */ #define STDERR_FILENO 2 /* Standard error output. */ /* All functions that are not declared anywhere else. */ #include #ifndef __ssize_t_defined typedef __ssize_t ssize_t; # define __ssize_t_defined #endif #define __need_size_t #define __need_NULL #include #if defined __USE_XOPEN || defined __USE_XOPEN2K /* The Single Unix specification says that some more types are available here. */ # ifndef __gid_t_defined typedef __gid_t gid_t; # define __gid_t_defined # endif # ifndef __uid_t_defined typedef __uid_t uid_t; # define __uid_t_defined # endif # ifndef __off_t_defined # ifndef __USE_FILE_OFFSET64 typedef __off_t off_t; # else typedef __off64_t off_t; # endif # define __off_t_defined # endif # if defined __USE_LARGEFILE64 && !defined __off64_t_defined typedef __off64_t off64_t; # define __off64_t_defined # endif # ifndef __useconds_t_defined typedef __useconds_t useconds_t; # define __useconds_t_defined # endif # ifndef __pid_t_defined typedef __pid_t pid_t; # define __pid_t_defined # endif #endif /* X/Open */ #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED # ifndef __intptr_t_defined typedef __intptr_t intptr_t; # define __intptr_t_defined # endif #endif #if defined __USE_BSD || defined __USE_XOPEN # ifndef __socklen_t_defined typedef __socklen_t socklen_t; # define __socklen_t_defined # endif #endif /* Values for the second argument to access. These may be OR'd together. */ #define R_OK 4 /* Test for read permission. */ #define W_OK 2 /* Test for write permission. */ #define X_OK 1 /* Test for execute permission. */ #define F_OK 0 /* Test for existence. */ /* Test for access to NAME using the real UID and real GID. */ extern int access (__const char *__name, int __type) __THROW __nonnull ((1)); #ifdef __USE_GNU /* Test for access to NAME using the effective UID and GID (as normal file operations use). */ extern int euidaccess (__const char *__name, int __type) __THROW __nonnull ((1)); /* An alias for `euidaccess', used by some other systems. */ extern int eaccess (__const char *__name, int __type) __THROW __nonnull ((1)); #endif #ifdef __USE_ATFILE /* Test for access to FILE relative to the directory FD is open on. If AT_EACCESS is set in FLAG, then use effective IDs like `eaccess', otherwise use real IDs like `access'. */ extern int faccessat (int __fd, __const char *__file, int __type, int __flag) __THROW __nonnull ((2)) __wur; #endif /* Use GNU. */ /* Values for the WHENCE argument to lseek. */ #ifndef _STDIO_H /* has the same definitions. */ # define SEEK_SET 0 /* Seek from beginning of file. */ # define SEEK_CUR 1 /* Seek from current position. */ # define SEEK_END 2 /* Seek from end of file. */ #endif #if defined __USE_BSD && !defined L_SET /* Old BSD names for the same constants; just for compatibility. */ # define L_SET SEEK_SET # define L_INCR SEEK_CUR # define L_XTND SEEK_END #endif /* Move FD's file position to OFFSET bytes from the beginning of the file (if WHENCE is SEEK_SET), the current position (if WHENCE is SEEK_CUR), or the end of the file (if WHENCE is SEEK_END). Return the new file position. */ #ifndef __USE_FILE_OFFSET64 extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW; #else # ifdef __REDIRECT_NTH extern __off64_t __REDIRECT_NTH (lseek, (int __fd, __off64_t __offset, int __whence), lseek64); # else # define lseek lseek64 # endif #endif #ifdef __USE_LARGEFILE64 extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) __THROW; #endif /* Close the file descriptor FD. This function is a cancellation point and therefore not marked with __THROW. */ extern int close (int __fd); /* Read NBYTES into BUF from FD. Return the number read, -1 for errors or 0 for EOF. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur; /* Write N bytes of BUF to FD. Return the number written, or -1. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t write (int __fd, __const void *__buf, size_t __n) __wur; #ifdef __USE_UNIX98 # ifndef __USE_FILE_OFFSET64 /* Read NBYTES into BUF from FD at the given position OFFSET without changing the file pointer. Return the number read, -1 for errors or 0 for EOF. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __wur; /* Write N bytes of BUF to FD at the given position OFFSET without changing the file pointer. Return the number written, or -1. This function is a cancellation point and therefore not marked with __THROW. */ extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n, __off_t __offset) __wur; # else # ifdef __REDIRECT extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes, __off64_t __offset), pread64) __wur; extern ssize_t __REDIRECT (pwrite, (int __fd, __const void *__buf, size_t __nbytes, __off64_t __offset), pwrite64) __wur; # else # define pread pread64 # define pwrite pwrite64 # endif # endif # ifdef __USE_LARGEFILE64 /* Read NBYTES into BUF from FD at the given position OFFSET without changing the file pointer. Return the number read, -1 for errors or 0 for EOF. */ extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __wur; /* Write N bytes of BUF to FD at the given position OFFSET without changing the file pointer. Return the number written, or -1. */ extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, __off64_t __offset) __wur; # endif #endif /* Create a one-way communication channel (pipe). If successful, two file descriptors are stored in PIPEDES; bytes written on PIPEDES[1] can be read from PIPEDES[0]. Returns 0 if successful, -1 if not. */ extern int pipe (int __pipedes[2]) __THROW __wur; /* Schedule an alarm. In SECONDS seconds, the process will get a SIGALRM. If SECONDS is zero, any currently scheduled alarm will be cancelled. The function returns the number of seconds remaining until the last alarm scheduled would have signaled, or zero if there wasn't one. There is no return value to indicate an error, but you can set `errno' to 0 and check its value after calling `alarm', and this might tell you. The signal may come late due to processor scheduling. */ extern unsigned int alarm (unsigned int __seconds) __THROW; /* Make the process sleep for SECONDS seconds, or until a signal arrives and is not ignored. The function returns the number of seconds less than SECONDS which it actually slept (thus zero if it slept the full time). If a signal handler does a `longjmp' or modifies the handling of the SIGALRM signal while inside `sleep' call, the handling of the SIGALRM signal afterwards is undefined. There is no return value to indicate error, but if `sleep' returns SECONDS, it probably didn't work. This function is a cancellation point and therefore not marked with __THROW. */ extern unsigned int sleep (unsigned int __seconds); #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Set an alarm to go off (generating a SIGALRM signal) in VALUE microseconds. If INTERVAL is nonzero, when the alarm goes off, the timer is reset to go off every INTERVAL microseconds thereafter. Returns the number of microseconds remaining before the alarm. */ extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) __THROW; /* Sleep USECONDS microseconds, or until a signal arrives that is not blocked or ignored. This function is a cancellation point and therefore not marked with __THROW. */ extern int usleep (__useconds_t __useconds); #endif /* Suspend the process until a signal arrives. This always returns -1 and sets `errno' to EINTR. This function is a cancellation point and therefore not marked with __THROW. */ extern int pause (void); /* Change the owner and group of FILE. */ extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) __THROW __nonnull ((1)) __wur; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Change the owner and group of the file that FD is open on. */ extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __THROW __wur; /* Change owner and group of FILE, if it is a symbolic link the ownership of the symbolic link is changed. */ extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) __THROW __nonnull ((1)) __wur; #endif /* Use BSD || X/Open Unix. */ #ifdef __USE_ATFILE /* Change the owner and group of FILE relative to the directory FD is open on. */ extern int fchownat (int __fd, __const char *__file, __uid_t __owner, __gid_t __group, int __flag) __THROW __nonnull ((2)) __wur; #endif /* Use GNU. */ /* Change the process's working directory to PATH. */ extern int chdir (__const char *__path) __THROW __nonnull ((1)) __wur; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Change the process's working directory to the one FD is open on. */ extern int fchdir (int __fd) __THROW __wur; #endif /* Get the pathname of the current working directory, and put it in SIZE bytes of BUF. Returns NULL if the directory couldn't be determined or SIZE was too small. If successful, returns BUF. In GNU, if BUF is NULL, an array is allocated with `malloc'; the array is SIZE bytes long, unless SIZE == 0, in which case it is as big as necessary. */ extern char *getcwd (char *__buf, size_t __size) __THROW __wur; #ifdef __USE_GNU /* Return a malloc'd string containing the current directory name. If the environment variable `PWD' is set, and its value is correct, that value is used. */ extern char *get_current_dir_name (void) __THROW; #endif #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Put the absolute pathname of the current working directory in BUF. If successful, return BUF. If not, put an error message in BUF and return NULL. BUF should be at least PATH_MAX bytes long. */ extern char *getwd (char *__buf) __THROW __nonnull ((1)) __attribute_deprecated__ __wur; #endif /* Duplicate FD, returning a new file descriptor on the same file. */ extern int dup (int __fd) __THROW __wur; /* Duplicate FD to FD2, closing FD2 and making it open on the same file. */ extern int dup2 (int __fd, int __fd2) __THROW; /* NULL-terminated array of "NAME=VALUE" environment variables. */ extern char **__environ; #ifdef __USE_GNU extern char **environ; #endif /* Replace the current process, executing PATH with arguments ARGV and environment ENVP. ARGV and ENVP are terminated by NULL pointers. */ extern int execve (__const char *__path, char *__const __argv[], char *__const __envp[]) __THROW __nonnull ((1)); #ifdef __USE_GNU /* Execute the file FD refers to, overlaying the running program image. ARGV and ENVP are passed to the new program, as for `execve'. */ extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) __THROW; #endif /* Execute PATH with arguments ARGV and environment from `environ'. */ extern int execv (__const char *__path, char *__const __argv[]) __THROW __nonnull ((1)); /* Execute PATH with all arguments after PATH until a NULL pointer, and the argument after that for environment. */ extern int execle (__const char *__path, __const char *__arg, ...) __THROW __nonnull ((1)); /* Execute PATH with all arguments after PATH until a NULL pointer and environment from `environ'. */ extern int execl (__const char *__path, __const char *__arg, ...) __THROW __nonnull ((1)); /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with arguments ARGV and environment from `environ'. */ extern int execvp (__const char *__file, char *__const __argv[]) __THROW __nonnull ((1)); /* Execute FILE, searching in the `PATH' environment variable if it contains no slashes, with all arguments after FILE until a NULL pointer and environment from `environ'. */ extern int execlp (__const char *__file, __const char *__arg, ...) __THROW __nonnull ((1)); #if defined __USE_MISC || defined __USE_XOPEN /* Add INC to priority of the current process. */ extern int nice (int __inc) __THROW __wur; #endif /* Terminate program execution with the low-order 8 bits of STATUS. */ extern void _exit (int __status) __attribute__ ((__noreturn__)); /* Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf'; the `_SC_*' symbols for the NAME argument to `sysconf'; and the `_CS_*' symbols for the NAME argument to `confstr'. */ #include /* Get file-specific configuration information about PATH. */ extern long int pathconf (__const char *__path, int __name) __THROW __nonnull ((1)); /* Get file-specific configuration about descriptor FD. */ extern long int fpathconf (int __fd, int __name) __THROW; /* Get the value of the system variable NAME. */ extern long int sysconf (int __name) __THROW __attribute__ ((__const__)); #ifdef __USE_POSIX2 /* Get the value of the string-valued system variable NAME. */ extern size_t confstr (int __name, char *__buf, size_t __len) __THROW; #endif /* Get the process ID of the calling process. */ extern __pid_t getpid (void) __THROW; /* Get the process ID of the calling process's parent. */ extern __pid_t getppid (void) __THROW; /* Get the process group ID of the calling process. This function is different on old BSD. */ #ifndef __FAVOR_BSD extern __pid_t getpgrp (void) __THROW; #else # ifdef __REDIRECT_NTH extern __pid_t __REDIRECT_NTH (getpgrp, (__pid_t __pid), __getpgid); # else # define getpgrp __getpgid # endif #endif /* Get the process group ID of process PID. */ extern __pid_t __getpgid (__pid_t __pid) __THROW; #ifdef __USE_XOPEN_EXTENDED extern __pid_t getpgid (__pid_t __pid) __THROW; #endif /* Set the process group ID of the process matching PID to PGID. If PID is zero, the current process's process group ID is set. If PGID is zero, the process ID of the process is used. */ extern int setpgid (__pid_t __pid, __pid_t __pgid) __THROW; #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Both System V and BSD have `setpgrp' functions, but with different calling conventions. The BSD function is the same as POSIX.1 `setpgid' (above). The System V function takes no arguments and puts the calling process in its on group like `setpgid (0, 0)'. New programs should always use `setpgid' instead. The default in GNU is to provide the System V function. The BSD function is available under -D_BSD_SOURCE. */ # ifndef __FAVOR_BSD /* Set the process group ID of the calling process to its own PID. This is exactly the same as `setpgid (0, 0)'. */ extern int setpgrp (void) __THROW; # else /* Another name for `setpgid' (above). */ # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (setpgrp, (__pid_t __pid, __pid_t __pgrp), setpgid); # else # define setpgrp setpgid # endif # endif /* Favor BSD. */ #endif /* Use SVID or BSD. */ /* Create a new session with the calling process as its leader. The process group IDs of the session and the calling process are set to the process ID of the calling process, which is returned. */ extern __pid_t setsid (void) __THROW; #ifdef __USE_XOPEN_EXTENDED /* Return the session ID of the given process. */ extern __pid_t getsid (__pid_t __pid) __THROW; #endif /* Get the real user ID of the calling process. */ extern __uid_t getuid (void) __THROW; /* Get the effective user ID of the calling process. */ extern __uid_t geteuid (void) __THROW; /* Get the real group ID of the calling process. */ extern __gid_t getgid (void) __THROW; /* Get the effective group ID of the calling process. */ extern __gid_t getegid (void) __THROW; /* If SIZE is zero, return the number of supplementary groups the calling process is in. Otherwise, fill in the group IDs of its supplementary groups in LIST and return the number written. */ extern int getgroups (int __size, __gid_t __list[]) __THROW __wur; #ifdef __USE_GNU /* Return nonzero iff the calling process is in group GID. */ extern int group_member (__gid_t __gid) __THROW; #endif /* Set the user ID of the calling process to UID. If the calling process is the super-user, set the real and effective user IDs, and the saved set-user-ID to UID; if not, the effective user ID is set to UID. */ extern int setuid (__uid_t __uid) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Set the real user ID of the calling process to RUID, and the effective user ID of the calling process to EUID. */ extern int setreuid (__uid_t __ruid, __uid_t __euid) __THROW; #endif #if defined __USE_BSD || defined __USE_XOPEN2K /* Set the effective user ID of the calling process to UID. */ extern int seteuid (__uid_t __uid) __THROW; #endif /* Use BSD. */ /* Set the group ID of the calling process to GID. If the calling process is the super-user, set the real and effective group IDs, and the saved set-group-ID to GID; if not, the effective group ID is set to GID. */ extern int setgid (__gid_t __gid) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Set the real group ID of the calling process to RGID, and the effective group ID of the calling process to EGID. */ extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW; #endif #if defined __USE_BSD || defined __USE_XOPEN2K /* Set the effective group ID of the calling process to GID. */ extern int setegid (__gid_t __gid) __THROW; #endif /* Use BSD. */ #ifdef __USE_GNU /* Fetch the real user ID, effective user ID, and saved-set user ID, of the calling process. */ extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) __THROW; /* Fetch the real group ID, effective group ID, and saved-set group ID, of the calling process. */ extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) __THROW; /* Set the real user ID, effective user ID, and saved-set user ID, of the calling process to RUID, EUID, and SUID, respectively. */ extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) __THROW; /* Set the real group ID, effective group ID, and saved-set group ID, of the calling process to RGID, EGID, and SGID, respectively. */ extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) __THROW; #endif /* Clone the calling process, creating an exact copy. Return -1 for errors, 0 to the new process, and the process ID of the new process to the old process. */ extern __pid_t fork (void) __THROW; #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Clone the calling process, but without copying the whole address space. The calling process is suspended until the new process exits or is replaced by a call to `execve'. Return -1 for errors, 0 to the new process, and the process ID of the new process to the old process. */ extern __pid_t vfork (void) __THROW; #endif /* Use BSD. */ /* Return the pathname of the terminal FD is open on, or NULL on errors. The returned storage is good only until the next call to this function. */ extern char *ttyname (int __fd) __THROW; /* Store at most BUFLEN characters of the pathname of the terminal FD is open on in BUF. Return 0 on success, otherwise an error number. */ extern int ttyname_r (int __fd, char *__buf, size_t __buflen) __THROW __nonnull ((2)) __wur; /* Return 1 if FD is a valid descriptor associated with a terminal, zero if not. */ extern int isatty (int __fd) __THROW; #if defined __USE_BSD \ || (defined __USE_XOPEN_EXTENDED && !defined __USE_UNIX98) /* Return the index into the active-logins file (utmp) for the controlling terminal. */ extern int ttyslot (void) __THROW; #endif /* Make a link to FROM named TO. */ extern int link (__const char *__from, __const char *__to) __THROW __nonnull ((1, 2)) __wur; #ifdef __USE_ATFILE /* Like link but relative paths in TO and FROM are interpreted relative to FROMFD and TOFD respectively. */ extern int linkat (int __fromfd, __const char *__from, int __tofd, __const char *__to, int __flags) __THROW __nonnull ((2, 4)) __wur; #endif #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K /* Make a symbolic link to FROM named TO. */ extern int symlink (__const char *__from, __const char *__to) __THROW __nonnull ((1, 2)) __wur; /* Read the contents of the symbolic link PATH into no more than LEN bytes of BUF. The contents are not null-terminated. Returns the number of characters read, or -1 for errors. */ extern int readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len) __THROW __nonnull ((1, 2)) __wur; #endif /* Use BSD. */ #ifdef __USE_ATFILE /* Like symlink but a relative path in TO is interpreted relative to TOFD. */ extern int symlinkat (__const char *__from, int __tofd, __const char *__to) __THROW __nonnull ((1, 3)) __wur; /* Like readlink but a relative PATH is interpreted relative to FD. */ extern int readlinkat (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __THROW __nonnull ((2, 3)) __wur; #endif /* Remove the link NAME. */ extern int unlink (__const char *__name) __THROW __nonnull ((1)); #ifdef __USE_ATFILE /* Remove the link NAME relative to FD. */ extern int unlinkat (int __fd, __const char *__name, int __flag) __THROW __nonnull ((2)); #endif /* Remove the directory PATH. */ extern int rmdir (__const char *__path) __THROW __nonnull ((1)); /* Return the foreground process group ID of FD. */ extern __pid_t tcgetpgrp (int __fd) __THROW; /* Set the foreground process group ID of FD set PGRP_ID. */ extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __THROW; /* Return the login name of the user. This function is a possible cancellation points and therefore not marked with __THROW. */ extern char *getlogin (void); #if defined __USE_REENTRANT || defined __USE_UNIX98 /* Return at most NAME_LEN characters of the login name of the user in NAME. If it cannot be determined or some other error occurred, return the error code. Otherwise return 0. This function is a possible cancellation points and therefore not marked with __THROW. */ extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1)); #endif #ifdef __USE_BSD /* Set the login name returned by `getlogin'. */ extern int setlogin (__const char *__name) __THROW __nonnull ((1)); #endif #ifdef __USE_POSIX2 /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. */ # define __need_getopt # include #endif #if defined __USE_BSD || defined __USE_UNIX98 /* Put the name of the current host in no more than LEN bytes of NAME. The result is null-terminated if LEN is large enough for the full name and the terminator. */ extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1)); #endif #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_UNIX98) /* Set the name of the current host to NAME, which is LEN bytes long. This call is restricted to the super-user. */ extern int sethostname (__const char *__name, size_t __len) __THROW __nonnull ((1)) __wur; /* Set the current machine's Internet number to ID. This call is restricted to the super-user. */ extern int sethostid (long int __id) __THROW __wur; /* Get and set the NIS (aka YP) domain name, if any. Called just like `gethostname' and `sethostname'. The NIS domain name is usually the empty string when not using NIS. */ extern int getdomainname (char *__name, size_t __len) __THROW __nonnull ((1)) __wur; extern int setdomainname (__const char *__name, size_t __len) __THROW __nonnull ((1)) __wur; /* Revoke access permissions to all processes currently communicating with the control terminal, and then send a SIGHUP signal to the process group of the control terminal. */ extern int vhangup (void) __THROW; /* Revoke the access of all descriptors currently open on FILE. */ extern int revoke (__const char *__file) __THROW __nonnull ((1)) __wur; /* Enable statistical profiling, writing samples of the PC into at most SIZE bytes of SAMPLE_BUFFER; every processor clock tick while profiling is enabled, the system examines the user PC and increments SAMPLE_BUFFER[((PC - OFFSET) / 2) * SCALE / 65536]. If SCALE is zero, disable profiling. Returns zero on success, -1 on error. */ extern int profil (unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) __THROW __nonnull ((1)); /* Turn accounting on if NAME is an existing file. The system will then write a record for each process as it terminates, to this file. If NAME is NULL, turn accounting off. This call is restricted to the super-user. */ extern int acct (__const char *__name) __THROW; /* Successive calls return the shells listed in `/etc/shells'. */ extern char *getusershell (void) __THROW; extern void endusershell (void) __THROW; /* Discard cached info. */ extern void setusershell (void) __THROW; /* Rewind and re-read the file. */ /* Put the program in the background, and dissociate from the controlling terminal. If NOCHDIR is zero, do `chdir ("/")'. If NOCLOSE is zero, redirects stdin, stdout, and stderr to /dev/null. */ extern int daemon (int __nochdir, int __noclose) __THROW __wur; #endif /* Use BSD || X/Open. */ #if defined __USE_BSD || (defined __USE_XOPEN && !defined __USE_XOPEN2K) /* Make PATH be the root directory (the starting point for absolute paths). This call is restricted to the super-user. */ extern int chroot (__const char *__path) __THROW __nonnull ((1)) __wur; /* Prompt with PROMPT and read a string from the terminal without echoing. Uses /dev/tty if possible; otherwise stderr and stdin. */ extern char *getpass (__const char *__prompt) __nonnull ((1)); #endif /* Use BSD || X/Open. */ #if defined __USE_BSD || defined __USE_XOPEN /* Make all changes done to FD actually appear on disk. This function is a cancellation point and therefore not marked with __THROW. */ extern int fsync (int __fd); #endif /* Use BSD || X/Open. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Return identifier for the current host. */ extern long int gethostid (void); /* Make all changes done to all files actually appear on disk. */ extern void sync (void) __THROW; /* Return the number of bytes in a page. This is the system's page size, which is not necessarily the same as the hardware page size. */ extern int getpagesize (void) __THROW __attribute__ ((__const__)); /* Return the maximum number of file descriptors the current process could possibly have. */ extern int getdtablesize (void) __THROW; /* Truncate FILE to LENGTH bytes. */ # ifndef __USE_FILE_OFFSET64 extern int truncate (__const char *__file, __off_t __length) __THROW __nonnull ((1)) __wur; # else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (truncate, (__const char *__file, __off64_t __length), truncate64) __nonnull ((1)) __wur; # else # define truncate truncate64 # endif # endif # ifdef __USE_LARGEFILE64 extern int truncate64 (__const char *__file, __off64_t __length) __THROW __nonnull ((1)) __wur; # endif #endif /* Use BSD || X/Open Unix. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K /* Truncate the file FD is open on to LENGTH bytes. */ # ifndef __USE_FILE_OFFSET64 extern int ftruncate (int __fd, __off_t __length) __THROW __wur; # else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (ftruncate, (int __fd, __off64_t __length), ftruncate64) __wur; # else # define ftruncate ftruncate64 # endif # endif # ifdef __USE_LARGEFILE64 extern int ftruncate64 (int __fd, __off64_t __length) __THROW __wur; # endif #endif /* Use BSD || X/Open Unix || POSIX 2003. */ #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED /* Set the end of accessible data space (aka "the break") to ADDR. Returns zero on success and -1 for errors (with errno set). */ extern int brk (void *__addr) __THROW __wur; /* Increase or decrease the end of accessible data space by DELTA bytes. If successful, returns the address the previous end of data space (i.e. the beginning of the new space, if DELTA > 0); returns (void *) -1 for errors (with errno set). */ extern void *sbrk (intptr_t __delta) __THROW; #endif #ifdef __USE_MISC /* Invoke `system call' number SYSNO, passing it the remaining arguments. This is completely system-dependent, and not often useful. In Unix, `syscall' sets `errno' for all errors and most calls return -1 for errors; in many systems you cannot pass arguments or get return values for all system calls (`pipe', `fork', and `getppid' typically among them). In Mach, all system calls take normal arguments and always return an error code (zero for success). */ extern long int syscall (long int __sysno, ...) __THROW; #endif /* Use misc. */ #if (defined __USE_MISC || defined __USE_XOPEN_EXTENDED) && !defined F_LOCK /* NOTE: These declarations also appear in ; be sure to keep both files consistent. Some systems have them there and some here, and some software depends on the macros being defined without including both. */ /* `lockf' is a simpler interface to the locking facilities of `fcntl'. LEN is always relative to the current file position. The CMD argument is one of the following. This function is a cancellation point and therefore not marked with __THROW. */ # define F_ULOCK 0 /* Unlock a previously locked region. */ # define F_LOCK 1 /* Lock a region for exclusive use. */ # define F_TLOCK 2 /* Test and lock a region for exclusive use. */ # define F_TEST 3 /* Test a region for other processes locks. */ # ifndef __USE_FILE_OFFSET64 extern int lockf (int __fd, int __cmd, __off_t __len) __wur; # else # ifdef __REDIRECT extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len), lockf64) __wur; # else # define lockf lockf64 # endif # endif # ifdef __USE_LARGEFILE64 extern int lockf64 (int __fd, int __cmd, __off64_t __len) __wur; # endif #endif /* Use misc and F_LOCK not already defined. */ #ifdef __USE_GNU /* Evaluate EXPRESSION, and repeat as long as it returns -1 with `errno' set to EINTR. */ # define TEMP_FAILURE_RETRY(expression) \ (__extension__ \ ({ long int __result; \ do __result = (long int) (expression); \ while (__result == -1L && errno == EINTR); \ __result; })) #endif #if defined __USE_POSIX199309 || defined __USE_UNIX98 /* Synchronize at least the data part of a file with the underlying media. */ extern int fdatasync (int __fildes) __THROW; #endif /* Use POSIX199309 */ /* XPG4.2 specifies that prototypes for the encryption functions must be defined here. */ #ifdef __USE_XOPEN /* Encrypt at most 8 characters from KEY using salt to perturb DES. */ extern char *crypt (__const char *__key, __const char *__salt) __THROW __nonnull ((1, 2)); /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt block in place. */ extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1)); /* Swab pairs bytes in the first N bytes of the area pointed to by FROM and copy the result to TO. The value of TO must not be in the range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM is without partner. */ extern void swab (__const void *__restrict __from, void *__restrict __to, ssize_t __n) __THROW __nonnull ((1, 2)); #endif /* The Single Unix specification demands this prototype to be here. It is also found in . */ #ifdef __USE_XOPEN /* Return the name of the controlling terminal. */ extern char *ctermid (char *__s) __THROW; #endif /* Define some macros helping to catch buffer overflows. */ #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus # include #endif __END_DECLS #endif /* unistd.h */ Convert-Binary-C-0.76/tests/include/include/linux/0000755000175000001440000000000011550665107020560 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/linux/compiler.h0000644000175000001440000001072011550664626022550 0ustar mhxusers#ifndef __LINUX_COMPILER_H #define __LINUX_COMPILER_H #ifndef __ASSEMBLY__ #ifdef __CHECKER__ # define __user __attribute__((noderef, address_space(1))) # define __kernel /* default address space */ # define __safe __attribute__((safe)) # define __force __attribute__((force)) # define __nocast __attribute__((nocast)) # define __iomem __attribute__((noderef, address_space(2))) # define __acquires(x) __attribute__((context(0,1))) # define __releases(x) __attribute__((context(1,0))) # define __acquire(x) __context__(1) # define __release(x) __context__(-1) # define __cond_lock(x) ((x) ? ({ __context__(1); 1; }) : 0) extern void __chk_user_ptr(void __user *); extern void __chk_io_ptr(void __iomem *); #else # define __user # define __kernel # define __safe # define __force # define __nocast # define __iomem # define __chk_user_ptr(x) (void)0 # define __chk_io_ptr(x) (void)0 # define __acquires(x) # define __releases(x) # define __acquire(x) (void)0 # define __release(x) (void)0 # define __cond_lock(x) (x) #endif #if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) #ifndef asm # define asm __asm__ #endif #ifndef volatile # define volatile __volatile__ #endif #endif #ifdef __KERNEL__ #if __GNUC__ > 4 #error no compiler-gcc.h file for this gcc version #elif __GNUC__ == 4 # include #elif __GNUC__ == 3 # include #else # error Sorry, your compiler is too old/not recognized. #endif /* Intel compiler defines __GNUC__. So we will overwrite implementations * coming from above header files here */ #ifdef __INTEL_COMPILER # include #endif /* * Generic compiler-dependent macros required for kernel * build go below this comment. Actual compiler/compiler version * specific implementations come from the above header files */ #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) /* Optimization barrier */ #ifndef barrier # define barrier() __memory_barrier() #endif #ifndef RELOC_HIDE # define RELOC_HIDE(ptr, off) \ ({ unsigned long __ptr; \ __ptr = (unsigned long) (ptr); \ (typeof(ptr)) (__ptr + (off)); }) #endif #endif /* __KERNEL__ */ #endif /* __ASSEMBLY__ */ /* * Allow us to mark functions as 'deprecated' and have gcc emit a nice * warning for each use, in hopes of speeding the functions removal. * Usage is: * int __deprecated foo(void) */ #ifndef __deprecated # define __deprecated /* unimplemented */ #endif #ifdef MODULE #define __deprecated_for_modules __deprecated #else #define __deprecated_for_modules #endif #ifndef __must_check #define __must_check #endif /* * Allow us to avoid 'defined but not used' warnings on functions and data, * as well as force them to be emitted to the assembly file. * * As of gcc 3.3, static functions that are not marked with attribute((used)) * may be elided from the assembly file. As of gcc 3.3, static data not so * marked will not be elided, but this may change in a future gcc version. * * In prior versions of gcc, such functions and data would be emitted, but * would be warned about except with attribute((unused)). */ #ifndef __attribute_used__ # define __attribute_used__ /* unimplemented */ #endif /* * From the GCC manual: * * Many functions have no effects except the return value and their * return value depends only on the parameters and/or global * variables. Such a function can be subject to common subexpression * elimination and loop optimization just as an arithmetic operator * would be. * [...] */ #ifndef __attribute_pure__ # define __attribute_pure__ /* unimplemented */ #endif /* * From the GCC manual: * * Many functions do not examine any values except their arguments, * and have no effects except the return value. Basically this is * just slightly more strict class than the `pure' attribute above, * since function is not allowed to read global memory. * * Note that a function that has pointer arguments and examines the * data pointed to must _not_ be declared `const'. Likewise, a * function that calls a non-`const' function usually must not be * `const'. It does not make sense for a `const' function to return * `void'. */ #ifndef __attribute_const__ # define __attribute_const__ /* unimplemented */ #endif #ifndef noinline #define noinline #endif #ifndef __always_inline #define __always_inline __inline__ #endif #ifdef __cplusplus #define __cast__(_to) (_to) #else #define __cast__(_to) #endif #endif /* __LINUX_COMPILER_H */ Convert-Binary-C-0.76/tests/include/include/linux/errno.h0000644000175000001440000000200311550664626022056 0ustar mhxusers#ifndef _LINUX_ERRNO_H #define _LINUX_ERRNO_H #include #ifdef __KERNEL__ /* Should never be seen by user programs */ #define ERESTARTSYS 512 #define ERESTARTNOINTR 513 #define ERESTARTNOHAND 514 /* restart if no handler.. */ #define ENOIOCTLCMD 515 /* No ioctl command */ #define ERESTART_RESTARTBLOCK 516 /* restart by calling sys_restart_syscall */ /* Defined for the NFSv3 protocol */ #define EBADHANDLE 521 /* Illegal NFS file handle */ #define ENOTSYNC 522 /* Update synchronization mismatch */ #define EBADCOOKIE 523 /* Cookie is stale */ #define ENOTSUPP 524 /* Operation is not supported */ #define ETOOSMALL 525 /* Buffer or request is too small */ #define ESERVERFAULT 526 /* An untranslatable error occurred */ #define EBADTYPE 527 /* Type not supported by server */ #define EJUKEBOX 528 /* Request initiated, but will not complete before timeout */ #define EIOCBQUEUED 529 /* iocb queued, will get completion event */ #define EIOCBRETRY 530 /* iocb queued, will trigger a retry */ #endif #endif Convert-Binary-C-0.76/tests/include/include/linux/param.h0000644000175000001440000000011611550664626022034 0ustar mhxusers#ifndef _LINUX_PARAM_H #define _LINUX_PARAM_H #include #endif Convert-Binary-C-0.76/tests/include/include/linux/limits.h0000644000175000001440000000174011550664626022241 0ustar mhxusers#ifndef _LINUX_LIMITS_H #define _LINUX_LIMITS_H #define NR_OPEN 1024 #define NGROUPS_MAX 65536 /* supplemental group IDs are available */ #define ARG_MAX 131072 /* # bytes of args + environ for exec() */ #define CHILD_MAX 999 /* no limit :-) */ #define OPEN_MAX 256 /* # open files a process may have */ #define LINK_MAX 127 /* # links a file may have */ #define MAX_CANON 255 /* size of the canonical input queue */ #define MAX_INPUT 255 /* size of the type-ahead buffer */ #define NAME_MAX 255 /* # chars in a file name */ #define PATH_MAX 4096 /* # chars in a path name including nul */ #define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */ #define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */ #define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */ #define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */ #define RTSIG_MAX 32 #endif Convert-Binary-C-0.76/tests/include/include/signal.h0000644000175000001440000003200011550664627021050 0ustar mhxusers/* Copyright (C) 1991-2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.14 Signal handling */ #ifndef _SIGNAL_H #if !defined __need_sig_atomic_t && !defined __need_sigset_t # define _SIGNAL_H #endif #include __BEGIN_DECLS #include /* __sigset_t, __sig_atomic_t. */ /* An integral type that can be modified atomically, without the possibility of a signal arriving in the middle of the operation. */ #if defined __need_sig_atomic_t || defined _SIGNAL_H # ifndef __sig_atomic_t_defined # define __sig_atomic_t_defined __BEGIN_NAMESPACE_STD typedef __sig_atomic_t sig_atomic_t; __END_NAMESPACE_STD # endif # undef __need_sig_atomic_t #endif #if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX) # ifndef __sigset_t_defined # define __sigset_t_defined typedef __sigset_t sigset_t; # endif # undef __need_sigset_t #endif #ifdef _SIGNAL_H #include #include #if defined __USE_XOPEN || defined __USE_XOPEN2K # ifndef __pid_t_defined typedef __pid_t pid_t; # define __pid_t_defined #endif #ifdef __USE_XOPEN # endif # ifndef __uid_t_defined typedef __uid_t uid_t; # define __uid_t_defined # endif #endif /* Unix98 */ /* Type of a signal handler. */ typedef void (*__sighandler_t) (int); /* The X/Open definition of `signal' specifies the SVID semantic. Use the additional function `sysv_signal' when X/Open compatibility is requested. */ extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) __THROW; #ifdef __USE_GNU extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) __THROW; #endif /* Set the handler for the signal SIG to HANDLER, returning the old handler, or SIG_ERR on error. By default `signal' has the BSD semantic. */ __BEGIN_NAMESPACE_STD #ifdef __USE_BSD extern __sighandler_t signal (int __sig, __sighandler_t __handler) __THROW; #else /* Make sure the used `signal' implementation is the SVID version. */ # ifdef __REDIRECT_NTH extern __sighandler_t __REDIRECT_NTH (signal, (int __sig, __sighandler_t __handler), __sysv_signal); # else # define signal __sysv_signal # endif #endif __END_NAMESPACE_STD #ifdef __USE_XOPEN /* The X/Open definition of `signal' conflicts with the BSD version. So they defined another function `bsd_signal'. */ extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) __THROW; #endif /* Send signal SIG to process number PID. If PID is zero, send SIG to all processes in the current process's process group. If PID is < -1, send SIG to all processes in process group - PID. */ #ifdef __USE_POSIX extern int kill (__pid_t __pid, int __sig) __THROW; #endif /* Use POSIX. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Send SIG to all processes in process group PGRP. If PGRP is zero, send SIG to all processes in the current process's process group. */ extern int killpg (__pid_t __pgrp, int __sig) __THROW; #endif /* Use BSD || X/Open Unix. */ __BEGIN_NAMESPACE_STD /* Raise signal SIG, i.e., send SIG to yourself. */ extern int raise (int __sig) __THROW; __END_NAMESPACE_STD #ifdef __USE_SVID /* SVID names for the same things. */ extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) __THROW; extern int gsignal (int __sig) __THROW; #endif /* Use SVID. */ #ifdef __USE_MISC /* Print a message describing the meaning of the given signal number. */ extern void psignal (int __sig, __const char *__s); #endif /* Use misc. */ /* The `sigpause' function has two different interfaces. The original BSD definition defines the argument as a mask of the signal, while the more modern interface in X/Open defines it as the signal number. We go with the BSD version unless the user explicitly selects the X/Open version. This function is a cancellation point and therefore not marked with __THROW. */ extern int __sigpause (int __sig_or_mask, int __is_sig); #ifdef __FAVOR_BSD /* Set the mask of blocked signals to MASK, wait for a signal to arrive, and then restore the mask. */ extern int sigpause (int __mask) __THROW __attribute_deprecated__; #else # ifdef __USE_XOPEN # ifdef __GNUC__ extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); # else /* Remove a signal from the signal mask and suspend the process. */ # define sigpause(sig) __sigpause ((sig), 1) # endif # endif #endif #ifdef __USE_BSD /* None of the following functions should be used anymore. They are here only for compatibility. A single word (`int') is not guaranteed to be enough to hold a complete signal mask and therefore these functions simply do not work in many situations. Use `sigprocmask' instead. */ /* Compute mask for signal SIG. */ # define sigmask(sig) __sigmask(sig) /* Block signals in MASK, returning the old mask. */ extern int sigblock (int __mask) __THROW __attribute_deprecated__; /* Set the mask of blocked signals to MASK, returning the old mask. */ extern int sigsetmask (int __mask) __THROW __attribute_deprecated__; /* Return currently selected signal mask. */ extern int siggetmask (void) __THROW __attribute_deprecated__; #endif /* Use BSD. */ #ifdef __USE_MISC # define NSIG _NSIG #endif #ifdef __USE_GNU typedef __sighandler_t sighandler_t; #endif /* 4.4 BSD uses the name `sig_t' for this. */ #ifdef __USE_BSD typedef __sighandler_t sig_t; #endif #ifdef __USE_POSIX # ifdef __USE_POSIX199309 /* We need `struct timespec' later on. */ # define __need_timespec # include /* Get the `siginfo_t' type plus the needed symbols. */ # include # endif /* Clear all signals from SET. */ extern int sigemptyset (sigset_t *__set) __THROW __nonnull ((1)); /* Set all signals in SET. */ extern int sigfillset (sigset_t *__set) __THROW __nonnull ((1)); /* Add SIGNO to SET. */ extern int sigaddset (sigset_t *__set, int __signo) __THROW __nonnull ((1)); /* Remove SIGNO from SET. */ extern int sigdelset (sigset_t *__set, int __signo) __THROW __nonnull ((1)); /* Return 1 if SIGNO is in SET, 0 if not. */ extern int sigismember (__const sigset_t *__set, int __signo) __THROW __nonnull ((1)); # ifdef __USE_GNU /* Return non-empty value is SET is not empty. */ extern int sigisemptyset (__const sigset_t *__set) __THROW __nonnull ((1)); /* Build new signal set by combining the two inputs set using logical AND. */ extern int sigandset (sigset_t *__set, __const sigset_t *__left, __const sigset_t *__right) __THROW __nonnull ((1, 2, 3)); /* Build new signal set by combining the two inputs set using logical OR. */ extern int sigorset (sigset_t *__set, __const sigset_t *__left, __const sigset_t *__right) __THROW __nonnull ((1, 2, 3)); # endif /* GNU */ /* Get the system-specific definitions of `struct sigaction' and the `SA_*' and `SIG_*'. constants. */ # include /* Get and/or change the set of blocked signals. */ extern int sigprocmask (int __how, __const sigset_t *__restrict __set, sigset_t *__restrict __oset) __THROW; /* Change the set of blocked signals to SET, wait until a signal arrives, and restore the set of blocked signals. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigsuspend (__const sigset_t *__set) __nonnull ((1)); /* Get and/or set the action for signal SIG. */ extern int sigaction (int __sig, __const struct sigaction *__restrict __act, struct sigaction *__restrict __oact) __THROW; /* Put in SET all signals that are blocked and waiting to be delivered. */ extern int sigpending (sigset_t *__set) __THROW __nonnull ((1)); /* Select any of pending signals from SET or wait for any to arrive. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) __nonnull ((1, 2)); # ifdef __USE_POSIX199309 /* Select any of pending signals from SET and place information in INFO. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigwaitinfo (__const sigset_t *__restrict __set, siginfo_t *__restrict __info) __nonnull ((1)); /* Select any of pending signals from SET and place information in INFO. Wait the time specified by TIMEOUT if no signal is pending. This function is a cancellation point and therefore not marked with __THROW. */ extern int sigtimedwait (__const sigset_t *__restrict __set, siginfo_t *__restrict __info, __const struct timespec *__restrict __timeout) __nonnull ((1)); /* Send signal SIG to the process PID. Associate data in VAL with the signal. */ extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) __THROW; # endif /* Use POSIX 199306. */ #endif /* Use POSIX. */ #ifdef __USE_BSD /* Names of the signals. This variable exists only for compatibility. Use `strsignal' instead (see ). */ extern __const char *__const _sys_siglist[_NSIG]; extern __const char *__const sys_siglist[_NSIG]; /* Structure passed to `sigvec'. */ struct sigvec { __sighandler_t sv_handler; /* Signal handler. */ int sv_mask; /* Mask of signals to be blocked. */ int sv_flags; /* Flags (see below). */ # define sv_onstack sv_flags /* 4.2 BSD compatibility. */ }; /* Bits in `sv_flags'. */ # define SV_ONSTACK (1 << 0)/* Take the signal on the signal stack. */ # define SV_INTERRUPT (1 << 1)/* Do not restart system calls. */ # define SV_RESETHAND (1 << 2)/* Reset handler to SIG_DFL on receipt. */ /* If VEC is non-NULL, set the handler for SIG to the `sv_handler' member of VEC. The signals in `sv_mask' will be blocked while the handler runs. If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be reset to SIG_DFL before `sv_handler' is entered. If OVEC is non-NULL, it is filled in with the old information for SIG. */ extern int sigvec (int __sig, __const struct sigvec *__vec, struct sigvec *__ovec) __THROW; /* Get machine-dependent `struct sigcontext' and signal subcodes. */ # include /* Restore the state saved in SCP. */ extern int sigreturn (struct sigcontext *__scp) __THROW; #endif /* use BSD. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* If INTERRUPT is nonzero, make signal SIG interrupt system calls (causing them to fail with EINTR); if INTERRUPT is zero, make system calls be restarted after signal SIG. */ extern int siginterrupt (int __sig, int __interrupt) __THROW; # include # ifdef __USE_XOPEN /* This will define `ucontext_t' and `mcontext_t'. */ # include # endif /* Run signals handlers on the stack specified by SS (if not NULL). If OSS is not NULL, it is filled in with the old signal stack status. This interface is obsolete and on many platform not implemented. */ extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) __THROW __attribute_deprecated__; /* Alternate signal handler stack interface. This interface should always be preferred over `sigstack'. */ extern int sigaltstack (__const struct sigaltstack *__restrict __ss, struct sigaltstack *__restrict __oss) __THROW; #endif /* use BSD or X/Open Unix. */ #ifdef __USE_XOPEN_EXTENDED /* Simplified interface for signal management. */ /* Add SIG to the calling process' signal mask. */ extern int sighold (int __sig) __THROW; /* Remove SIG from the calling process' signal mask. */ extern int sigrelse (int __sig) __THROW; /* Set the disposition of SIG to SIG_IGN. */ extern int sigignore (int __sig) __THROW; /* Set the disposition of SIG. */ extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW; #endif #if defined __USE_POSIX199506 || defined __USE_UNIX98 /* Some of the functions for handling signals in threaded programs must be defined here. */ # include # include #endif /* use Unix98 */ /* The following functions are used internally in the C library and in other code which need deep insights. */ /* Return number of available real-time signal with highest priority. */ extern int __libc_current_sigrtmin (void) __THROW; /* Return number of available real-time signal with lowest priority. */ extern int __libc_current_sigrtmax (void) __THROW; #endif /* signal.h */ __END_DECLS #endif /* not signal.h */ Convert-Binary-C-0.76/tests/include/include/dirent.h0000644000175000001440000002521011550664626021064 0ustar mhxusers/* Copyright (C) 1991-2000, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * POSIX Standard: 5.1.2 Directory Operations */ #ifndef _DIRENT_H #define _DIRENT_H 1 #include __BEGIN_DECLS #include #ifdef __USE_XOPEN # ifndef __ino_t_defined # ifndef __USE_FILE_OFFSET64 typedef __ino_t ino_t; # else typedef __ino64_t ino_t; # endif # define __ino_t_defined # endif # if defined __USE_LARGEFILE64 && !defined __ino64_t_defined typedef __ino64_t ino64_t; # define __ino64_t_defined # endif #endif /* This file defines `struct dirent'. It defines the macro `_DIRENT_HAVE_D_NAMLEN' iff there is a `d_namlen' member that gives the length of `d_name'. It defines the macro `_DIRENT_HAVE_D_RECLEN' iff there is a `d_reclen' member that gives the size of the entire directory entry. It defines the macro `_DIRENT_HAVE_D_OFF' iff there is a `d_off' member that gives the file offset of the next directory entry. It defines the macro `_DIRENT_HAVE_D_TYPE' iff there is a `d_type' member that gives the type of the file. */ #include #if (defined __USE_BSD || defined __USE_MISC) && !defined d_fileno # define d_ino d_fileno /* Backward compatibility. */ #endif /* These macros extract size information from a `struct dirent *'. They may evaluate their argument multiple times, so it must not have side effects. Each of these may involve a relatively costly call to `strlen' on some systems, so these values should be cached. _D_EXACT_NAMLEN (DP) returns the length of DP->d_name, not including its terminating null character. _D_ALLOC_NAMLEN (DP) returns a size at least (_D_EXACT_NAMLEN (DP) + 1); that is, the allocation size needed to hold the DP->d_name string. Use this macro when you don't need the exact length, just an upper bound. This macro is less likely to require calling `strlen' than _D_EXACT_NAMLEN. */ #ifdef _DIRENT_HAVE_D_NAMLEN # define _D_EXACT_NAMLEN(d) ((d)->d_namlen) # define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1) #else # define _D_EXACT_NAMLEN(d) (strlen ((d)->d_name)) # ifdef _DIRENT_HAVE_D_RECLEN # define _D_ALLOC_NAMLEN(d) (((char *) (d) + (d)->d_reclen) - &(d)->d_name[0]) # else # define _D_ALLOC_NAMLEN(d) (sizeof (d)->d_name > 1 ? sizeof (d)->d_name : \ _D_EXACT_NAMLEN (d) + 1) # endif #endif #ifdef __USE_BSD /* File types for `d_type'. */ enum { DT_UNKNOWN = 0, # define DT_UNKNOWN DT_UNKNOWN DT_FIFO = 1, # define DT_FIFO DT_FIFO DT_CHR = 2, # define DT_CHR DT_CHR DT_DIR = 4, # define DT_DIR DT_DIR DT_BLK = 6, # define DT_BLK DT_BLK DT_REG = 8, # define DT_REG DT_REG DT_LNK = 10, # define DT_LNK DT_LNK DT_SOCK = 12, # define DT_SOCK DT_SOCK DT_WHT = 14 # define DT_WHT DT_WHT }; /* Convert between stat structure types and directory types. */ # define IFTODT(mode) (((mode) & 0170000) >> 12) # define DTTOIF(dirtype) ((dirtype) << 12) #endif /* This is the data type of directory stream objects. The actual structure is opaque to users. */ typedef struct __dirstream DIR; /* Open a directory stream on NAME. Return a DIR stream on the directory, or NULL if it could not be opened. This function is a possible cancellation point and therefore not marked with __THROW. */ extern DIR *opendir (__const char *__name) __nonnull ((1)); #ifdef __USE_GNU /* Same as opendir, but open the stream on the file descriptor FD. This function is a possible cancellation point and therefore not marked with __THROW. */ extern DIR *fdopendir (int __fd); #endif /* Close the directory stream DIRP. Return 0 if successful, -1 if not. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int closedir (DIR *__dirp) __nonnull ((1)); /* Read a directory entry from DIRP. Return a pointer to a `struct dirent' describing the entry, or NULL for EOF or error. The storage returned may be overwritten by a later readdir call on the same DIR stream. If the Large File Support API is selected we have to use the appropriate interface. This function is a possible cancellation point and therefore not marked with __THROW. */ #ifndef __USE_FILE_OFFSET64 extern struct dirent *readdir (DIR *__dirp) __nonnull ((1)); #else # ifdef __REDIRECT extern struct dirent *__REDIRECT (readdir, (DIR *__dirp), readdir64) __nonnull ((1)); # else # define readdir readdir64 # endif #endif #ifdef __USE_LARGEFILE64 extern struct dirent64 *readdir64 (DIR *__dirp) __nonnull ((1)); #endif #if defined __USE_POSIX || defined __USE_MISC /* Reentrant version of `readdir'. Return in RESULT a pointer to the next entry. This function is a possible cancellation point and therefore not marked with __THROW. */ # ifndef __USE_FILE_OFFSET64 extern int readdir_r (DIR *__restrict __dirp, struct dirent *__restrict __entry, struct dirent **__restrict __result) __nonnull ((1, 2, 3)); # else # ifdef __REDIRECT extern int __REDIRECT (readdir_r, (DIR *__restrict __dirp, struct dirent *__restrict __entry, struct dirent **__restrict __result), readdir64_r) __nonnull ((1, 2, 3)); # else # define readdir_r readdir64_r # endif # endif # ifdef __USE_LARGEFILE64 extern int readdir64_r (DIR *__restrict __dirp, struct dirent64 *__restrict __entry, struct dirent64 **__restrict __result) __nonnull ((1, 2, 3)); # endif #endif /* POSIX or misc */ /* Rewind DIRP to the beginning of the directory. */ extern void rewinddir (DIR *__dirp) __THROW __nonnull ((1)); #if defined __USE_BSD || defined __USE_MISC || defined __USE_XOPEN # include /* Seek to position POS on DIRP. */ extern void seekdir (DIR *__dirp, long int __pos) __THROW __nonnull ((1)); /* Return the current position of DIRP. */ extern long int telldir (DIR *__dirp) __THROW __nonnull ((1)); #endif #if defined __USE_BSD || defined __USE_MISC /* Return the file descriptor used by DIRP. */ extern int dirfd (DIR *__dirp) __THROW __nonnull ((1)); # if defined __OPTIMIZE__ && defined _DIR_dirfd # define dirfd(dirp) _DIR_dirfd (dirp) # endif # ifndef MAXNAMLEN /* Get the definitions of the POSIX.1 limits. */ # include /* `MAXNAMLEN' is the BSD name for what POSIX calls `NAME_MAX'. */ # ifdef NAME_MAX # define MAXNAMLEN NAME_MAX # else # define MAXNAMLEN 255 # endif # endif # define __need_size_t # include /* Scan the directory DIR, calling SELECTOR on each directory entry. Entries for which SELECT returns nonzero are individually malloc'd, sorted using qsort with CMP, and collected in a malloc'd array in *NAMELIST. Returns the number of entries selected, or -1 on error. */ # ifndef __USE_FILE_OFFSET64 extern int scandir (__const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (__const struct dirent *), int (*__cmp) (__const void *, __const void *)) __nonnull ((1, 2)); # else # ifdef __REDIRECT extern int __REDIRECT (scandir, (__const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (__const struct dirent *), int (*__cmp) (__const void *, __const void *)), scandir64) __nonnull ((1, 2)); # else # define scandir scandir64 # endif # endif # if defined __USE_GNU && defined __USE_LARGEFILE64 /* This function is like `scandir' but it uses the 64bit dirent structure. Please note that the CMP function must now work with struct dirent64 **. */ extern int scandir64 (__const char *__restrict __dir, struct dirent64 ***__restrict __namelist, int (*__selector) (__const struct dirent64 *), int (*__cmp) (__const void *, __const void *)) __nonnull ((1, 2)); # endif /* Function to compare two `struct dirent's alphabetically. */ # ifndef __USE_FILE_OFFSET64 extern int alphasort (__const void *__e1, __const void *__e2) __THROW __attribute_pure__ __nonnull ((1, 2)); # else # ifdef __REDIRECT extern int __REDIRECT_NTH (alphasort, (__const void *__e1, __const void *__e2), alphasort64) __attribute_pure__ __nonnull ((1, 2)); # else # define alphasort alphasort64 # endif # endif # if defined __USE_GNU && defined __USE_LARGEFILE64 extern int alphasort64 (__const void *__e1, __const void *__e2) __THROW __attribute_pure__ __nonnull ((1, 2)); # endif # ifdef __USE_GNU /* Function to compare two `struct dirent's by name & version. */ # ifndef __USE_FILE_OFFSET64 extern int versionsort (__const void *__e1, __const void *__e2) __THROW __attribute_pure__ __nonnull ((1, 2)); # else # ifdef __REDIRECT extern int __REDIRECT_NTH (versionsort, (__const void *__e1, __const void *__e2), versionsort64) __attribute_pure__ __nonnull ((1, 2)); # else # define versionsort versionsort64 # endif # endif # ifdef __USE_LARGEFILE64 extern int versionsort64 (__const void *__e1, __const void *__e2) __THROW __attribute_pure__ __nonnull ((1, 2)); # endif # endif /* Read directory entries from FD into BUF, reading at most NBYTES. Reading starts at offset *BASEP, and *BASEP is updated with the new position after reading. Returns the number of bytes read; zero when at end of directory; or -1 for errors. */ # ifndef __USE_FILE_OFFSET64 extern __ssize_t getdirentries (int __fd, char *__restrict __buf, size_t __nbytes, __off_t *__restrict __basep) __THROW __nonnull ((2, 4)); # else # ifdef __REDIRECT extern __ssize_t __REDIRECT_NTH (getdirentries, (int __fd, char *__restrict __buf, size_t __nbytes, __off64_t *__restrict __basep), getdirentries64) __nonnull ((2, 4)); # else # define getdirentries getdirentries64 # endif # endif # ifdef __USE_LARGEFILE64 extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf, size_t __nbytes, __off64_t *__restrict __basep) __THROW __nonnull ((2, 4)); # endif #endif /* Use BSD or misc. */ __END_DECLS #endif /* dirent.h */ Convert-Binary-C-0.76/tests/include/include/libio.h0000644000175000001440000004230711550664626020703 0ustar mhxusers/* Copyright (C) 1991-1995,1997-2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Per Bothner . The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. As a special exception, if you link the code in this file with files compiled with a GNU compiler to produce an executable, that does not cause the resulting executable to be covered by the GNU Lesser General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU Lesser General Public License. This exception applies to code released by its copyright holders in files containing the exception. */ #ifndef _IO_STDIO_H #define _IO_STDIO_H #include <_G_config.h> /* ALL of these should be defined in _G_config.h */ #define _IO_pos_t _G_fpos_t /* obsolete */ #define _IO_fpos_t _G_fpos_t #define _IO_fpos64_t _G_fpos64_t #define _IO_size_t _G_size_t #define _IO_ssize_t _G_ssize_t #define _IO_off_t _G_off_t #define _IO_off64_t _G_off64_t #define _IO_pid_t _G_pid_t #define _IO_uid_t _G_uid_t #define _IO_iconv_t _G_iconv_t #define _IO_HAVE_SYS_WAIT _G_HAVE_SYS_WAIT #define _IO_HAVE_ST_BLKSIZE _G_HAVE_ST_BLKSIZE #define _IO_BUFSIZ _G_BUFSIZ #define _IO_va_list _G_va_list #define _IO_wint_t _G_wint_t #ifdef _G_NEED_STDARG_H /* This define avoids name pollution if we're using GNU stdarg.h */ # define __need___va_list # include # ifdef __GNUC_VA_LIST # undef _IO_va_list # define _IO_va_list __gnuc_va_list # endif /* __GNUC_VA_LIST */ #endif #ifndef __P # if _G_HAVE_SYS_CDEFS # include # else # ifdef __STDC__ # define __P(p) p # define __PMT(p) p # else # define __P(p) () # define __PMT(p) () # endif # endif #endif /*!__P*/ /* For backward compatibility */ #ifndef _PARAMS # define _PARAMS(protos) __P(protos) #endif /*!_PARAMS*/ #ifndef __STDC__ # ifndef const # define const # endif #endif #define _IO_UNIFIED_JUMPTABLES 1 #ifndef _G_HAVE_PRINTF_FP # define _IO_USE_DTOA 1 #endif #ifndef EOF # define EOF (-1) #endif #ifndef NULL # if defined __GNUG__ && \ (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) # define NULL (__null) # else # if !defined(__cplusplus) # define NULL ((void*)0) # else # define NULL (0) # endif # endif #endif #define _IOS_INPUT 1 #define _IOS_OUTPUT 2 #define _IOS_ATEND 4 #define _IOS_APPEND 8 #define _IOS_TRUNC 16 #define _IOS_NOCREATE 32 #define _IOS_NOREPLACE 64 #define _IOS_BIN 128 /* Magic numbers and bits for the _flags field. The magic numbers use the high-order bits of _flags; the remaining bits are available for variable flags. Note: The magic numbers must all be negative if stdio emulation is desired. */ #define _IO_MAGIC 0xFBAD0000 /* Magic number */ #define _OLD_STDIO_MAGIC 0xFABC0000 /* Emulate old stdio. */ #define _IO_MAGIC_MASK 0xFFFF0000 #define _IO_USER_BUF 1 /* User owns buffer; don't delete it on close. */ #define _IO_UNBUFFERED 2 #define _IO_NO_READS 4 /* Reading not allowed */ #define _IO_NO_WRITES 8 /* Writing not allowd */ #define _IO_EOF_SEEN 0x10 #define _IO_ERR_SEEN 0x20 #define _IO_DELETE_DONT_CLOSE 0x40 /* Don't call close(_fileno) on cleanup. */ #define _IO_LINKED 0x80 /* Set if linked (using _chain) to streambuf::_list_all.*/ #define _IO_IN_BACKUP 0x100 #define _IO_LINE_BUF 0x200 #define _IO_TIED_PUT_GET 0x400 /* Set if put and get pointer logicly tied. */ #define _IO_CURRENTLY_PUTTING 0x800 #define _IO_IS_APPENDING 0x1000 #define _IO_IS_FILEBUF 0x2000 #define _IO_BAD_SEEN 0x4000 #define _IO_USER_LOCK 0x8000 #define _IO_FLAGS2_MMAP 1 #define _IO_FLAGS2_NOTCANCEL 2 #ifdef _LIBC # define _IO_FLAGS2_FORTIFY 4 #endif /* These are "formatting flags" matching the iostream fmtflags enum values. */ #define _IO_SKIPWS 01 #define _IO_LEFT 02 #define _IO_RIGHT 04 #define _IO_INTERNAL 010 #define _IO_DEC 020 #define _IO_OCT 040 #define _IO_HEX 0100 #define _IO_SHOWBASE 0200 #define _IO_SHOWPOINT 0400 #define _IO_UPPERCASE 01000 #define _IO_SHOWPOS 02000 #define _IO_SCIENTIFIC 04000 #define _IO_FIXED 010000 #define _IO_UNITBUF 020000 #define _IO_STDIO 040000 #define _IO_DONT_CLOSE 0100000 #define _IO_BOOLALPHA 0200000 struct _IO_jump_t; struct _IO_FILE; /* Handle lock. */ #ifdef _IO_MTSAFE_IO # if defined __GLIBC__ && __GLIBC__ >= 2 # include # else /*# include */ # endif #else typedef void _IO_lock_t; #endif /* A streammarker remembers a position in a buffer. */ struct _IO_marker { struct _IO_marker *_next; struct _IO_FILE *_sbuf; /* If _pos >= 0 it points to _buf->Gbase()+_pos. FIXME comment */ /* if _pos < 0, it points to _buf->eBptr()+_pos. FIXME comment */ int _pos; #if 0 void set_streampos(streampos sp) { _spos = sp; } void set_offset(int offset) { _pos = offset; _spos = (streampos)(-2); } public: streammarker(streambuf *sb); ~streammarker(); int saving() { return _spos == -2; } int delta(streammarker&); int delta(); #endif }; /* This is the structure from the libstdc++ codecvt class. */ enum __codecvt_result { __codecvt_ok, __codecvt_partial, __codecvt_error, __codecvt_noconv }; #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T /* The order of the elements in the following struct must match the order of the virtual functions in the libstdc++ codecvt class. */ struct _IO_codecvt { void (*__codecvt_destr) (struct _IO_codecvt *); enum __codecvt_result (*__codecvt_do_out) (struct _IO_codecvt *, __mbstate_t *, const wchar_t *, const wchar_t *, const wchar_t **, char *, char *, char **); enum __codecvt_result (*__codecvt_do_unshift) (struct _IO_codecvt *, __mbstate_t *, char *, char *, char **); enum __codecvt_result (*__codecvt_do_in) (struct _IO_codecvt *, __mbstate_t *, const char *, const char *, const char **, wchar_t *, wchar_t *, wchar_t **); int (*__codecvt_do_encoding) (struct _IO_codecvt *); int (*__codecvt_do_always_noconv) (struct _IO_codecvt *); int (*__codecvt_do_length) (struct _IO_codecvt *, __mbstate_t *, const char *, const char *, _IO_size_t); int (*__codecvt_do_max_length) (struct _IO_codecvt *); _IO_iconv_t __cd_in; _IO_iconv_t __cd_out; }; /* Extra data for wide character streams. */ struct _IO_wide_data { wchar_t *_IO_read_ptr; /* Current read pointer */ wchar_t *_IO_read_end; /* End of get area. */ wchar_t *_IO_read_base; /* Start of putback+get area. */ wchar_t *_IO_write_base; /* Start of put area. */ wchar_t *_IO_write_ptr; /* Current put pointer. */ wchar_t *_IO_write_end; /* End of put area. */ wchar_t *_IO_buf_base; /* Start of reserve area. */ wchar_t *_IO_buf_end; /* End of reserve area. */ /* The following fields are used to support backing up and undo. */ wchar_t *_IO_save_base; /* Pointer to start of non-current get area. */ wchar_t *_IO_backup_base; /* Pointer to first valid character of backup area */ wchar_t *_IO_save_end; /* Pointer to end of non-current get area. */ __mbstate_t _IO_state; __mbstate_t _IO_last_state; struct _IO_codecvt _codecvt; wchar_t _shortbuf[1]; const struct _IO_jump_t *_wide_vtable; }; #endif struct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC; rest is flags. */ #define _IO_file_flags _flags /* The following pointers correspond to the C++ streambuf protocol. */ /* Note: Tk uses the _IO_read_ptr and _IO_read_end fields directly. */ char* _IO_read_ptr; /* Current read pointer */ char* _IO_read_end; /* End of get area. */ char* _IO_read_base; /* Start of putback+get area. */ char* _IO_write_base; /* Start of put area. */ char* _IO_write_ptr; /* Current put pointer. */ char* _IO_write_end; /* End of put area. */ char* _IO_buf_base; /* Start of reserve area. */ char* _IO_buf_end; /* End of reserve area. */ /* The following fields are used to support backing up and undo. */ char *_IO_save_base; /* Pointer to start of non-current get area. */ char *_IO_backup_base; /* Pointer to first valid character of backup area */ char *_IO_save_end; /* Pointer to end of non-current get area. */ struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; #if 0 int _blksize; #else int _flags2; #endif _IO_off_t _old_offset; /* This used to be _offset but it's too small. */ #define __HAVE_COLUMN /* temporary */ /* 1+column number of pbase(); 0 is unknown. */ unsigned short _cur_column; signed char _vtable_offset; char _shortbuf[1]; /* char* _save_gptr; char* _save_egptr; */ _IO_lock_t *_lock; #ifdef _IO_USE_OLD_IO_FILE }; struct _IO_FILE_complete { struct _IO_FILE _file; #endif #if defined _G_IO_IO_FILE_VERSION && _G_IO_IO_FILE_VERSION == 0x20001 _IO_off64_t _offset; # if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T /* Wide character stream stuff. */ struct _IO_codecvt *_codecvt; struct _IO_wide_data *_wide_data; struct _IO_FILE *_freeres_list; void *_freeres_buf; size_t _freeres_size; # else void *__pad1; void *__pad2; void *__pad3; void *__pad4; size_t __pad5; # endif int _mode; /* Make sure we don't get into trouble again. */ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; #endif }; #ifndef __cplusplus typedef struct _IO_FILE _IO_FILE; #endif struct _IO_FILE_plus; extern struct _IO_FILE_plus _IO_2_1_stdin_; extern struct _IO_FILE_plus _IO_2_1_stdout_; extern struct _IO_FILE_plus _IO_2_1_stderr_; #ifndef _LIBC #define _IO_stdin ((_IO_FILE*)(&_IO_2_1_stdin_)) #define _IO_stdout ((_IO_FILE*)(&_IO_2_1_stdout_)) #define _IO_stderr ((_IO_FILE*)(&_IO_2_1_stderr_)) #else extern _IO_FILE *_IO_stdin attribute_hidden; extern _IO_FILE *_IO_stdout attribute_hidden; extern _IO_FILE *_IO_stderr attribute_hidden; #endif /* Functions to do I/O and file management for a stream. */ /* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF. Return number of bytes read. */ typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); /* Write N bytes pointed to by BUF to COOKIE. Write all N bytes unless there is an error. Return number of bytes written, or -1 if there is an error without writing anything. If the file has been opened for append (__mode.__append set), then set the file pointer to the end of the file and then do the write; if not, just write at the current file pointer. */ typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, size_t __n); /* Move COOKIE's file position to *POS bytes from the beginning of the file (if W is SEEK_SET), the current position (if W is SEEK_CUR), or the end of the file (if W is SEEK_END). Set *POS to the new file position. Returns zero if successful, nonzero if not. */ typedef int __io_seek_fn (void *__cookie, _IO_off64_t *__pos, int __w); /* Close COOKIE. */ typedef int __io_close_fn (void *__cookie); #ifdef _GNU_SOURCE /* User-visible names for the above. */ typedef __io_read_fn cookie_read_function_t; typedef __io_write_fn cookie_write_function_t; typedef __io_seek_fn cookie_seek_function_t; typedef __io_close_fn cookie_close_function_t; /* The structure with the cookie function pointers. */ typedef struct { __io_read_fn *read; /* Read bytes. */ __io_write_fn *write; /* Write bytes. */ __io_seek_fn *seek; /* Seek/tell file position. */ __io_close_fn *close; /* Close file. */ } _IO_cookie_io_functions_t; typedef _IO_cookie_io_functions_t cookie_io_functions_t; struct _IO_cookie_file; /* Initialize one of those. */ extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, void *__cookie, _IO_cookie_io_functions_t __fns); #endif #ifdef __cplusplus extern "C" { #endif extern int __underflow (_IO_FILE *) __THROW; extern int __uflow (_IO_FILE *) __THROW; extern int __overflow (_IO_FILE *, int) __THROW; extern _IO_wint_t __wunderflow (_IO_FILE *) __THROW; extern _IO_wint_t __wuflow (_IO_FILE *) __THROW; extern _IO_wint_t __woverflow (_IO_FILE *, _IO_wint_t) __THROW; #if __GNUC__ >= 3 # define _IO_BE(expr, res) __builtin_expect ((expr), res) #else # define _IO_BE(expr, res) (expr) #endif #define _IO_getc_unlocked(_fp) \ (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) \ ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++) #define _IO_peekc_unlocked(_fp) \ (_IO_BE ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end, 0) \ && __underflow (_fp) == EOF ? EOF \ : *(unsigned char *) (_fp)->_IO_read_ptr) #define _IO_putc_unlocked(_ch, _fp) \ (_IO_BE ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end, 0) \ ? __overflow (_fp, (unsigned char) (_ch)) \ : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch))) #define _IO_getwc_unlocked(_fp) \ (_IO_BE ((_fp)->_wide_data->_IO_read_ptr >= (_fp)->_wide_data->_IO_read_end,\ 0) \ ? __wuflow (_fp) : (_IO_wint_t) *(_fp)->_wide_data->_IO_read_ptr++) #define _IO_putwc_unlocked(_wch, _fp) \ (_IO_BE ((_fp)->_wide_data->_IO_write_ptr \ >= (_fp)->_wide_data->_IO_write_end, 0) \ ? __woverflow (_fp, _wch) \ : (_IO_wint_t) (*(_fp)->_wide_data->_IO_write_ptr++ = (_wch))) #define _IO_feof_unlocked(__fp) (((__fp)->_flags & _IO_EOF_SEEN) != 0) #define _IO_ferror_unlocked(__fp) (((__fp)->_flags & _IO_ERR_SEEN) != 0) extern int _IO_getc (_IO_FILE *__fp) __THROW; extern int _IO_putc (int __c, _IO_FILE *__fp) __THROW; extern int _IO_feof (_IO_FILE *__fp) __THROW; extern int _IO_ferror (_IO_FILE *__fp) __THROW; extern int _IO_peekc_locked (_IO_FILE *__fp) __THROW; /* This one is for Emacs. */ #define _IO_PENDING_OUTPUT_COUNT(_fp) \ ((_fp)->_IO_write_ptr - (_fp)->_IO_write_base) extern void _IO_flockfile (_IO_FILE *) __THROW; extern void _IO_funlockfile (_IO_FILE *) __THROW; extern int _IO_ftrylockfile (_IO_FILE *) __THROW; #ifdef _IO_MTSAFE_IO # define _IO_peekc(_fp) _IO_peekc_locked (_fp) # define _IO_flockfile(_fp) \ if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_flockfile (_fp) # define _IO_funlockfile(_fp) \ if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_funlockfile (_fp) #else # define _IO_peekc(_fp) _IO_peekc_unlocked (_fp) # define _IO_flockfile(_fp) /**/ # define _IO_funlockfile(_fp) /**/ # define _IO_ftrylockfile(_fp) /**/ # define _IO_cleanup_region_start(_fct, _fp) /**/ # define _IO_cleanup_region_end(_Doit) /**/ #endif /* !_IO_MTSAFE_IO */ extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, _IO_va_list, int *__restrict); extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, _IO_va_list); extern _IO_ssize_t _IO_padn (_IO_FILE *, int, _IO_ssize_t) __THROW; extern _IO_size_t _IO_sgetn (_IO_FILE *, void *, _IO_size_t) __THROW; extern _IO_off64_t _IO_seekoff (_IO_FILE *, _IO_off64_t, int, int) __THROW; extern _IO_off64_t _IO_seekpos (_IO_FILE *, _IO_off64_t, int) __THROW; extern void _IO_free_backup_area (_IO_FILE *) __THROW; #if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T extern _IO_wint_t _IO_getwc (_IO_FILE *__fp) __THROW; extern _IO_wint_t _IO_putwc (wchar_t __wc, _IO_FILE *__fp) __THROW; extern int _IO_fwide (_IO_FILE *__fp, int __mode) __THROW; # if __GNUC__ >= 2 /* While compiling glibc we have to handle compatibility with very old versions. */ # if defined _LIBC && defined SHARED # include # if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) # define _IO_fwide_maybe_incompatible \ (__builtin_expect (&_IO_stdin_used == NULL, 0)) extern const int _IO_stdin_used; weak_extern (_IO_stdin_used); # endif # endif # ifndef _IO_fwide_maybe_incompatible # define _IO_fwide_maybe_incompatible (0) # endif /* A special optimized version of the function above. It optimizes the case of initializing an unoriented byte stream. */ # define _IO_fwide(__fp, __mode) \ ({ int __result = (__mode); \ if (__result < 0 && ! _IO_fwide_maybe_incompatible) \ { \ if ((__fp)->_mode == 0) \ /* We know that all we have to do is to set the flag. */ \ (__fp)->_mode = -1; \ __result = (__fp)->_mode; \ } \ else if (__builtin_constant_p (__mode) && (__mode) == 0) \ __result = _IO_fwide_maybe_incompatible ? -1 : (__fp)->_mode; \ else \ __result = _IO_fwide (__fp, __result); \ __result; }) # endif extern int _IO_vfwscanf (_IO_FILE * __restrict, const wchar_t * __restrict, _IO_va_list, int *__restrict); extern int _IO_vfwprintf (_IO_FILE *__restrict, const wchar_t *__restrict, _IO_va_list); extern _IO_ssize_t _IO_wpadn (_IO_FILE *, wint_t, _IO_ssize_t) __THROW; extern void _IO_free_wbackup_area (_IO_FILE *) __THROW; #endif #ifdef __LDBL_COMPAT # include #endif #ifdef __cplusplus } #endif #endif /* _IO_STDIO_H */ Convert-Binary-C-0.76/tests/include/include/_G_config.h0000644000175000001440000000516011550664623021450 0ustar mhxusers/* This file is needed by libio to define various configuration parameters. These are always the same in the GNU C library. */ #ifndef _G_config_h #define _G_config_h 1 /* Define types for libio in terms of the standard internal type names. */ #include #define __need_size_t #define __need_wchar_t #define __need_wint_t #define __need_NULL #include #ifndef _WINT_T /* Integral type unchanged by default argument promotions that can hold any value corresponding to members of the extended character set, as well as at least one value that does not correspond to any member of the extended character set. */ # define _WINT_T typedef unsigned int wint_t; #endif #define __need_mbstate_t #include #define _G_size_t size_t typedef struct { __off_t __pos; __mbstate_t __state; } _G_fpos_t; typedef struct { __off64_t __pos; __mbstate_t __state; } _G_fpos64_t; #define _G_ssize_t __ssize_t #define _G_off_t __off_t #define _G_off64_t __off64_t #define _G_pid_t __pid_t #define _G_uid_t __uid_t #define _G_wchar_t wchar_t #define _G_wint_t wint_t #define _G_stat64 stat64 #include typedef union { struct __gconv_info __cd; struct { struct __gconv_info __cd; struct __gconv_step_data __data; } __combined; } _G_iconv_t; typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); #define _G_HAVE_BOOL 1 /* These library features are always available in the GNU C library. */ #define _G_HAVE_ATEXIT 1 #define _G_HAVE_SYS_CDEFS 1 #define _G_HAVE_SYS_WAIT 1 #define _G_NEED_STDARG_H 1 #define _G_va_list __gnuc_va_list #define _G_HAVE_PRINTF_FP 1 #define _G_HAVE_MMAP 1 #define _G_HAVE_MREMAP 1 #define _G_HAVE_LONG_DOUBLE_IO 1 #define _G_HAVE_IO_FILE_OPEN 1 #define _G_HAVE_IO_GETLINE_INFO 1 #define _G_IO_IO_FILE_VERSION 0x20001 #define _G_OPEN64 __open64 #define _G_LSEEK64 __lseek64 #define _G_MMAP64 __mmap64 #define _G_FSTAT64(fd,buf) __fxstat64 (_STAT_VER, fd, buf) /* This is defined by if `st_blksize' exists. */ #define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE) #define _G_BUFSIZ 8192 /* These are the vtbl details for ELF. */ #define _G_NAMES_HAVE_UNDERSCORE 0 #define _G_VTABLE_LABEL_HAS_LENGTH 1 #define _G_USING_THUNKS 1 #define _G_VTABLE_LABEL_PREFIX "__vt_" #define _G_VTABLE_LABEL_PREFIX_ID __vt_ #if defined __cplusplus || defined __STDC__ # define _G_ARGS(ARGLIST) ARGLIST #else # define _G_ARGS(ARGLIST) () #endif #endif /* _G_config.h */ Convert-Binary-C-0.76/tests/include/include/inttypes.h0000644000175000001440000003062511550664626021464 0ustar mhxusers/* Copyright (C) 1997-2001, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99: 7.8 Format conversion of integer types */ #ifndef _INTTYPES_H #define _INTTYPES_H 1 #include /* Get the type definitions. */ #include /* Get a definition for wchar_t. But we must not define wchar_t itself. */ #ifndef ____gwchar_t_defined # ifdef __cplusplus # define __gwchar_t wchar_t # elif defined __WCHAR_TYPE__ typedef __WCHAR_TYPE__ __gwchar_t; # else # define __need_wchar_t # include typedef wchar_t __gwchar_t; # endif # define ____gwchar_t_defined 1 #endif /* The ISO C99 standard specifies that these macros must only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_FORMAT_MACROS # if __WORDSIZE == 64 # define __PRI64_PREFIX "l" # define __PRIPTR_PREFIX "l" # else # define __PRI64_PREFIX "ll" # define __PRIPTR_PREFIX # endif /* Macros for printing format specifiers. */ /* Decimal notation. */ # define PRId8 "d" # define PRId16 "d" # define PRId32 "d" # define PRId64 __PRI64_PREFIX "d" # define PRIdLEAST8 "d" # define PRIdLEAST16 "d" # define PRIdLEAST32 "d" # define PRIdLEAST64 __PRI64_PREFIX "d" # define PRIdFAST8 "d" # define PRIdFAST16 __PRIPTR_PREFIX "d" # define PRIdFAST32 __PRIPTR_PREFIX "d" # define PRIdFAST64 __PRI64_PREFIX "d" # define PRIi8 "i" # define PRIi16 "i" # define PRIi32 "i" # define PRIi64 __PRI64_PREFIX "i" # define PRIiLEAST8 "i" # define PRIiLEAST16 "i" # define PRIiLEAST32 "i" # define PRIiLEAST64 __PRI64_PREFIX "i" # define PRIiFAST8 "i" # define PRIiFAST16 __PRIPTR_PREFIX "i" # define PRIiFAST32 __PRIPTR_PREFIX "i" # define PRIiFAST64 __PRI64_PREFIX "i" /* Octal notation. */ # define PRIo8 "o" # define PRIo16 "o" # define PRIo32 "o" # define PRIo64 __PRI64_PREFIX "o" # define PRIoLEAST8 "o" # define PRIoLEAST16 "o" # define PRIoLEAST32 "o" # define PRIoLEAST64 __PRI64_PREFIX "o" # define PRIoFAST8 "o" # define PRIoFAST16 __PRIPTR_PREFIX "o" # define PRIoFAST32 __PRIPTR_PREFIX "o" # define PRIoFAST64 __PRI64_PREFIX "o" /* Unsigned integers. */ # define PRIu8 "u" # define PRIu16 "u" # define PRIu32 "u" # define PRIu64 __PRI64_PREFIX "u" # define PRIuLEAST8 "u" # define PRIuLEAST16 "u" # define PRIuLEAST32 "u" # define PRIuLEAST64 __PRI64_PREFIX "u" # define PRIuFAST8 "u" # define PRIuFAST16 __PRIPTR_PREFIX "u" # define PRIuFAST32 __PRIPTR_PREFIX "u" # define PRIuFAST64 __PRI64_PREFIX "u" /* lowercase hexadecimal notation. */ # define PRIx8 "x" # define PRIx16 "x" # define PRIx32 "x" # define PRIx64 __PRI64_PREFIX "x" # define PRIxLEAST8 "x" # define PRIxLEAST16 "x" # define PRIxLEAST32 "x" # define PRIxLEAST64 __PRI64_PREFIX "x" # define PRIxFAST8 "x" # define PRIxFAST16 __PRIPTR_PREFIX "x" # define PRIxFAST32 __PRIPTR_PREFIX "x" # define PRIxFAST64 __PRI64_PREFIX "x" /* UPPERCASE hexadecimal notation. */ # define PRIX8 "X" # define PRIX16 "X" # define PRIX32 "X" # define PRIX64 __PRI64_PREFIX "X" # define PRIXLEAST8 "X" # define PRIXLEAST16 "X" # define PRIXLEAST32 "X" # define PRIXLEAST64 __PRI64_PREFIX "X" # define PRIXFAST8 "X" # define PRIXFAST16 __PRIPTR_PREFIX "X" # define PRIXFAST32 __PRIPTR_PREFIX "X" # define PRIXFAST64 __PRI64_PREFIX "X" /* Macros for printing `intmax_t' and `uintmax_t'. */ # define PRIdMAX __PRI64_PREFIX "d" # define PRIiMAX __PRI64_PREFIX "i" # define PRIoMAX __PRI64_PREFIX "o" # define PRIuMAX __PRI64_PREFIX "u" # define PRIxMAX __PRI64_PREFIX "x" # define PRIXMAX __PRI64_PREFIX "X" /* Macros for printing `intptr_t' and `uintptr_t'. */ # define PRIdPTR __PRIPTR_PREFIX "d" # define PRIiPTR __PRIPTR_PREFIX "i" # define PRIoPTR __PRIPTR_PREFIX "o" # define PRIuPTR __PRIPTR_PREFIX "u" # define PRIxPTR __PRIPTR_PREFIX "x" # define PRIXPTR __PRIPTR_PREFIX "X" /* Macros for scanning format specifiers. */ /* Signed decimal notation. */ # define SCNd8 "hhd" # define SCNd16 "hd" # define SCNd32 "d" # define SCNd64 __PRI64_PREFIX "d" # define SCNdLEAST8 "hhd" # define SCNdLEAST16 "hd" # define SCNdLEAST32 "d" # define SCNdLEAST64 __PRI64_PREFIX "d" # define SCNdFAST8 "hhd" # define SCNdFAST16 __PRIPTR_PREFIX "d" # define SCNdFAST32 __PRIPTR_PREFIX "d" # define SCNdFAST64 __PRI64_PREFIX "d" /* Signed decimal notation. */ # define SCNi8 "hhi" # define SCNi16 "hi" # define SCNi32 "i" # define SCNi64 __PRI64_PREFIX "i" # define SCNiLEAST8 "hhi" # define SCNiLEAST16 "hi" # define SCNiLEAST32 "i" # define SCNiLEAST64 __PRI64_PREFIX "i" # define SCNiFAST8 "hhi" # define SCNiFAST16 __PRIPTR_PREFIX "i" # define SCNiFAST32 __PRIPTR_PREFIX "i" # define SCNiFAST64 __PRI64_PREFIX "i" /* Unsigned decimal notation. */ # define SCNu8 "hhu" # define SCNu16 "hu" # define SCNu32 "u" # define SCNu64 __PRI64_PREFIX "u" # define SCNuLEAST8 "hhu" # define SCNuLEAST16 "hu" # define SCNuLEAST32 "u" # define SCNuLEAST64 __PRI64_PREFIX "u" # define SCNuFAST8 "hhu" # define SCNuFAST16 __PRIPTR_PREFIX "u" # define SCNuFAST32 __PRIPTR_PREFIX "u" # define SCNuFAST64 __PRI64_PREFIX "u" /* Octal notation. */ # define SCNo8 "hho" # define SCNo16 "ho" # define SCNo32 "o" # define SCNo64 __PRI64_PREFIX "o" # define SCNoLEAST8 "hho" # define SCNoLEAST16 "ho" # define SCNoLEAST32 "o" # define SCNoLEAST64 __PRI64_PREFIX "o" # define SCNoFAST8 "hho" # define SCNoFAST16 __PRIPTR_PREFIX "o" # define SCNoFAST32 __PRIPTR_PREFIX "o" # define SCNoFAST64 __PRI64_PREFIX "o" /* Hexadecimal notation. */ # define SCNx8 "hhx" # define SCNx16 "hx" # define SCNx32 "x" # define SCNx64 __PRI64_PREFIX "x" # define SCNxLEAST8 "hhx" # define SCNxLEAST16 "hx" # define SCNxLEAST32 "x" # define SCNxLEAST64 __PRI64_PREFIX "x" # define SCNxFAST8 "hhx" # define SCNxFAST16 __PRIPTR_PREFIX "x" # define SCNxFAST32 __PRIPTR_PREFIX "x" # define SCNxFAST64 __PRI64_PREFIX "x" /* Macros for scanning `intmax_t' and `uintmax_t'. */ # define SCNdMAX __PRI64_PREFIX "d" # define SCNiMAX __PRI64_PREFIX "i" # define SCNoMAX __PRI64_PREFIX "o" # define SCNuMAX __PRI64_PREFIX "u" # define SCNxMAX __PRI64_PREFIX "x" /* Macros for scaning `intptr_t' and `uintptr_t'. */ # define SCNdPTR __PRIPTR_PREFIX "d" # define SCNiPTR __PRIPTR_PREFIX "i" # define SCNoPTR __PRIPTR_PREFIX "o" # define SCNuPTR __PRIPTR_PREFIX "u" # define SCNxPTR __PRIPTR_PREFIX "x" #endif /* C++ && format macros */ __BEGIN_DECLS #if __WORDSIZE == 64 /* We have to define the `uintmax_t' type using `ldiv_t'. */ typedef struct { long int quot; /* Quotient. */ long int rem; /* Remainder. */ } imaxdiv_t; #else /* We have to define the `uintmax_t' type using `lldiv_t'. */ typedef struct { long long int quot; /* Quotient. */ long long int rem; /* Remainder. */ } imaxdiv_t; #endif /* Compute absolute value of N. */ extern intmax_t imaxabs (intmax_t __n) __THROW __attribute__ ((__const__)); /* Return the `imaxdiv_t' representation of the value of NUMER over DENOM. */ extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom) __THROW __attribute__ ((__const__)); /* Like `strtol' but convert to `intmax_t'. */ extern intmax_t strtoimax (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW; /* Like `strtoul' but convert to `uintmax_t'. */ extern uintmax_t strtoumax (__const char *__restrict __nptr, char ** __restrict __endptr, int __base) __THROW; /* Like `wcstol' but convert to `intmax_t'. */ extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) __THROW; /* Like `wcstoul' but convert to `uintmax_t'. */ extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr, __gwchar_t ** __restrict __endptr, int __base) __THROW; #ifdef __USE_EXTERN_INLINES # if __WORDSIZE == 64 /* Like `strtol' but convert to `intmax_t'. */ # ifndef __strtol_internal_defined extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW; # define __strtol_internal_defined 1 # endif extern __inline intmax_t __NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)) { return __strtol_internal (nptr, endptr, base, 0); } /* Like `strtoul' but convert to `uintmax_t'. */ # ifndef __strtoul_internal_defined extern unsigned long int __strtoul_internal (__const char * __restrict __nptr, char ** __restrict __endptr, int __base, int __group) __THROW; # define __strtoul_internal_defined 1 # endif extern __inline uintmax_t __NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)) { return __strtoul_internal (nptr, endptr, base, 0); } /* Like `wcstol' but convert to `intmax_t'. */ # ifndef __wcstol_internal_defined extern long int __wcstol_internal (__const __gwchar_t * __restrict __nptr, __gwchar_t **__restrict __endptr, int __base, int __group) __THROW; # define __wcstol_internal_defined 1 # endif extern __inline intmax_t __NTH (wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)) { return __wcstol_internal (nptr, endptr, base, 0); } /* Like `wcstoul' but convert to `uintmax_t'. */ # ifndef __wcstoul_internal_defined extern unsigned long int __wcstoul_internal (__const __gwchar_t * __restrict __nptr, __gwchar_t ** __restrict __endptr, int __base, int __group) __THROW; # define __wcstoul_internal_defined 1 # endif extern __inline uintmax_t __NTH (wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)) { return __wcstoul_internal (nptr, endptr, base, 0); } # else /* __WORDSIZE == 32 */ /* Like `strtol' but convert to `intmax_t'. */ # ifndef __strtoll_internal_defined __extension__ extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW; # define __strtoll_internal_defined 1 # endif extern __inline intmax_t __NTH (strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)) { return __strtoll_internal (nptr, endptr, base, 0); } /* Like `strtoul' but convert to `uintmax_t'. */ # ifndef __strtoull_internal_defined __extension__ extern unsigned long long int __strtoull_internal (__const char * __restrict __nptr, char ** __restrict __endptr, int __base, int __group) __THROW; # define __strtoull_internal_defined 1 # endif extern __inline uintmax_t __NTH (strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)) { return __strtoull_internal (nptr, endptr, base, 0); } /* Like `wcstol' but convert to `intmax_t'. */ # ifndef __wcstoll_internal_defined __extension__ extern long long int __wcstoll_internal (__const __gwchar_t * __restrict __nptr, __gwchar_t **__restrict __endptr, int __base, int __group) __THROW; # define __wcstoll_internal_defined 1 # endif extern __inline intmax_t __NTH (wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)) { return __wcstoll_internal (nptr, endptr, base, 0); } /* Like `wcstoul' but convert to `uintmax_t'. */ # ifndef __wcstoull_internal_defined __extension__ extern unsigned long long int __wcstoull_internal (__const __gwchar_t * __restrict __nptr, __gwchar_t ** __restrict __endptr, int __base, int __group) __THROW; # define __wcstoull_internal_defined 1 # endif extern __inline uintmax_t __NTH (wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)) { return __wcstoull_internal (nptr, endptr, base, 0); } # endif /* __WORDSIZE == 32 */ #endif /* Use extern inlines. */ __END_DECLS #endif /* inttypes.h */ Convert-Binary-C-0.76/tests/include/include/fcntl.h0000644000175000001440000001613211550664626020710 0ustar mhxusers/* Copyright (C) 1991,1992,1994-2001,2003,2004,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * POSIX Standard: 6.5 File Control Operations */ #ifndef _FCNTL_H #define _FCNTL_H 1 #include /* This must be early so can define types winningly. */ __BEGIN_DECLS /* Get the definitions of O_*, F_*, FD_*: all the numbers and flag bits for `open', `fcntl', et al. */ #include /* For XPG all symbols from should also be available. */ #ifdef __USE_XOPEN # include #endif #ifdef __USE_MISC # ifndef R_OK /* Verbatim from . Ugh. */ /* Values for the second argument to access. These may be OR'd together. */ # define R_OK 4 /* Test for read permission. */ # define W_OK 2 /* Test for write permission. */ # define X_OK 1 /* Test for execute permission. */ # define F_OK 0 /* Test for existence. */ # endif #endif /* Use misc. */ /* XPG wants the following symbols. */ #ifdef __USE_XOPEN /* has the same definitions. */ # define SEEK_SET 0 /* Seek from beginning of file. */ # define SEEK_CUR 1 /* Seek from current position. */ # define SEEK_END 2 /* Seek from end of file. */ #endif /* XPG */ #ifdef __USE_ATFILE # define AT_FDCWD -100 /* Special value used to indicate the *at functions should use the current working directory. */ # define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */ # define AT_REMOVEDIR 0x200 /* Remove directory instead of unlinking file. */ # define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */ # define AT_EACCESS 0x200 /* Test access permitted for effective IDs, not real IDs. */ #endif /* Do the file control operation described by CMD on FD. The remaining arguments are interpreted depending on CMD. This function is a cancellation point and therefore not marked with __THROW. */ extern int fcntl (int __fd, int __cmd, ...); /* Open FILE and return a new file descriptor for it, or -1 on error. OFLAG determines the type of access used. If O_CREAT is on OFLAG, the third argument is taken as a `mode_t', the mode of the created file. This function is a cancellation point and therefore not marked with __THROW. */ #ifndef __USE_FILE_OFFSET64 extern int open (__const char *__file, int __oflag, ...) __nonnull ((1)); #else # ifdef __REDIRECT extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64) __nonnull ((1)); # else # define open open64 # endif #endif #ifdef __USE_LARGEFILE64 extern int open64 (__const char *__file, int __oflag, ...) __nonnull ((1)); #endif #ifdef __USE_ATFILE /* Similar to `open' but a relative path name is interpreted relative to the directory for which FD is a descriptor. NOTE: some other `openat' implementation support additional functionality through this interface, especially using the O_XATTR flag. This is not yet supported here. This function is a cancellation point and therefore not marked with __THROW. */ # ifndef __USE_FILE_OFFSET64 extern int openat (int __fd, __const char *__file, int __oflag, ...) __nonnull ((2)); # else # ifdef __REDIRECT extern int __REDIRECT (openat, (int __fd, __const char *__file, int __oflag, ...), openat64) __nonnull ((2)); # else # define openat openat64 # endif # endif extern int openat64 (int __fd, __const char *__file, int __oflag, ...) __nonnull ((2)); #endif /* Create and open FILE, with mode MODE. This takes an `int' MODE argument because that is what `mode_t' will be widened to. This function is a cancellation point and therefore not marked with __THROW. */ #ifndef __USE_FILE_OFFSET64 extern int creat (__const char *__file, __mode_t __mode) __nonnull ((1)); #else # ifdef __REDIRECT extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode), creat64) __nonnull ((1)); # else # define creat creat64 # endif #endif #ifdef __USE_LARGEFILE64 extern int creat64 (__const char *__file, __mode_t __mode) __nonnull ((1)); #endif #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \ && !defined __USE_POSIX)) /* NOTE: These declarations also appear in ; be sure to keep both files consistent. Some systems have them there and some here, and some software depends on the macros being defined without including both. */ /* `lockf' is a simpler interface to the locking facilities of `fcntl'. LEN is always relative to the current file position. The CMD argument is one of the following. */ # define F_ULOCK 0 /* Unlock a previously locked region. */ # define F_LOCK 1 /* Lock a region for exclusive use. */ # define F_TLOCK 2 /* Test and lock a region for exclusive use. */ # define F_TEST 3 /* Test a region for other processes locks. */ # ifndef __USE_FILE_OFFSET64 extern int lockf (int __fd, int __cmd, __off_t __len); # else # ifdef __REDIRECT extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len), lockf64); # else # define lockf lockf64 # endif # endif # ifdef __USE_LARGEFILE64 extern int lockf64 (int __fd, int __cmd, __off64_t __len); # endif #endif #ifdef __USE_XOPEN2K /* Advice the system about the expected behaviour of the application with respect to the file associated with FD. */ # ifndef __USE_FILE_OFFSET64 extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len, int __advise) __THROW; # else # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (posix_fadvise, (int __fd, __off64_t __offset, __off64_t __len, int __advise), posix_fadvise64); # else # define posix_fadvise posix_fadvise64 # endif # endif # ifdef __USE_LARGEFILE64 extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len, int __advise) __THROW; # endif /* Reserve storage for the data of the file associated with FD. This function is a possible cancellation points and therefore not marked with __THROW. */ # ifndef __USE_FILE_OFFSET64 extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len); # else # ifdef __REDIRECT extern int __REDIRECT (posix_fallocate, (int __fd, __off64_t __offset, __off64_t __len), posix_fallocate64); # else # define posix_fallocate posix_fallocate64 # endif # endif # ifdef __USE_LARGEFILE64 extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len); # endif #endif __END_DECLS #endif /* fcntl.h */ Convert-Binary-C-0.76/tests/include/include/errno.h0000644000175000001440000000462411550664626020732 0ustar mhxusers/* Copyright (C) 1991,92,93,94,95,96,97,2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.5 Errors */ #ifndef _ERRNO_H /* The includer defined __need_Emath if he wants only the definitions of EDOM and ERANGE, and not everything else. */ #ifndef __need_Emath # define _ERRNO_H 1 # include #endif __BEGIN_DECLS /* Get the error number constants from the system-specific file. This file will test __need_Emath and _ERRNO_H. */ #include #undef __need_Emath #ifdef _ERRNO_H /* Declare the `errno' variable, unless it's defined as a macro by bits/errno.h. This is the case in GNU, where it is a per-thread variable. This redeclaration using the macro still works, but it will be a function declaration without a prototype and may trigger a -Wstrict-prototypes warning. */ #ifndef errno extern int errno; #endif #ifdef __USE_GNU /* The full and simple forms of the name with which the program was invoked. These variables are set up automatically at startup based on the value of ARGV[0] (this works only if you use GNU ld). */ extern char *program_invocation_name, *program_invocation_short_name; #endif /* __USE_GNU */ #endif /* _ERRNO_H */ __END_DECLS #endif /* _ERRNO_H */ /* The Hurd defines `error_t' as an enumerated type so that printing `error_t' values in the debugger shows the names. We might need this definition sometimes even if this file was included before. */ #if defined __USE_GNU || defined __need_error_t # ifndef __error_t_defined typedef int error_t; # define __error_t_defined 1 # endif # undef __need_error_t #endif Convert-Binary-C-0.76/tests/include/include/endian.h0000644000175000001440000000410011550664626021030 0ustar mhxusers/* Copyright (C) 1992, 1996, 1997, 2000 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _ENDIAN_H #define _ENDIAN_H 1 #include /* Definitions for byte order, according to significance of bytes, from low addresses to high addresses. The value is what you get by putting '4' in the most significant byte, '3' in the second most significant byte, '2' in the second least significant byte, and '1' in the least significant byte, and then writing down one digit for each byte, starting with the byte at the lowest address at the left, and proceeding to the byte with the highest address at the right. */ #define __LITTLE_ENDIAN 1234 #define __BIG_ENDIAN 4321 #define __PDP_ENDIAN 3412 /* This file defines `__BYTE_ORDER' for the particular machine. */ #include /* Some machines may need to use a different endianness for floating point values. */ #ifndef __FLOAT_WORD_ORDER # define __FLOAT_WORD_ORDER __BYTE_ORDER #endif #ifdef __USE_BSD # define LITTLE_ENDIAN __LITTLE_ENDIAN # define BIG_ENDIAN __BIG_ENDIAN # define PDP_ENDIAN __PDP_ENDIAN # define BYTE_ORDER __BYTE_ORDER #endif #if __BYTE_ORDER == __LITTLE_ENDIAN # define __LONG_LONG_PAIR(HI, LO) LO, HI #elif __BYTE_ORDER == __BIG_ENDIAN # define __LONG_LONG_PAIR(HI, LO) HI, LO #endif #endif /* endian.h */ Convert-Binary-C-0.76/tests/include/include/stdio.h0000644000175000001440000006761711550664627020743 0ustar mhxusers/* Define ISO C stdio on top of C++ iostreams. Copyright (C) 1991,1994-2004,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.19 Input/output */ #ifndef _STDIO_H #if !defined __need_FILE && !defined __need___FILE # define _STDIO_H 1 # include __BEGIN_DECLS # define __need_size_t # define __need_NULL # include # include # define __need_FILE # define __need___FILE #endif /* Don't need FILE. */ #if !defined __FILE_defined && defined __need_FILE __BEGIN_NAMESPACE_STD /* The opaque type of streams. This is the definition used elsewhere. */ typedef struct _IO_FILE FILE; __END_NAMESPACE_STD #if defined __USE_LARGEFILE64 || defined __USE_SVID || defined __USE_POSIX \ || defined __USE_BSD || defined __USE_ISOC99 || defined __USE_XOPEN \ || defined __USE_POSIX2 __USING_NAMESPACE_STD(FILE) #endif # define __FILE_defined 1 #endif /* FILE not defined. */ #undef __need_FILE #if !defined ____FILE_defined && defined __need___FILE /* The opaque type of streams. This is the definition used elsewhere. */ typedef struct _IO_FILE __FILE; # define ____FILE_defined 1 #endif /* __FILE not defined. */ #undef __need___FILE #ifdef _STDIO_H #define _STDIO_USES_IOSTREAM #include #ifdef __USE_XOPEN # ifdef __GNUC__ # ifndef _VA_LIST_DEFINED typedef _G_va_list va_list; # define _VA_LIST_DEFINED # endif # else # include # endif #endif /* The type of the second argument to `fgetpos' and `fsetpos'. */ __BEGIN_NAMESPACE_STD #ifndef __USE_FILE_OFFSET64 typedef _G_fpos_t fpos_t; #else typedef _G_fpos64_t fpos_t; #endif __END_NAMESPACE_STD #ifdef __USE_LARGEFILE64 typedef _G_fpos64_t fpos64_t; #endif /* The possibilities for the third argument to `setvbuf'. */ #define _IOFBF 0 /* Fully buffered. */ #define _IOLBF 1 /* Line buffered. */ #define _IONBF 2 /* No buffering. */ /* Default buffer size. */ #ifndef BUFSIZ # define BUFSIZ _IO_BUFSIZ #endif /* End of file character. Some things throughout the library rely on this being -1. */ #ifndef EOF # define EOF (-1) #endif /* The possibilities for the third argument to `fseek'. These values should not be changed. */ #define SEEK_SET 0 /* Seek from beginning of file. */ #define SEEK_CUR 1 /* Seek from current position. */ #define SEEK_END 2 /* Seek from end of file. */ #if defined __USE_SVID || defined __USE_XOPEN /* Default path prefix for `tempnam' and `tmpnam'. */ # define P_tmpdir "/tmp" #endif /* Get the values: L_tmpnam How long an array of chars must be to be passed to `tmpnam'. TMP_MAX The minimum number of unique filenames generated by tmpnam (and tempnam when it uses tmpnam's name space), or tempnam (the two are separate). L_ctermid How long an array to pass to `ctermid'. L_cuserid How long an array to pass to `cuserid'. FOPEN_MAX Minimum number of files that can be open at once. FILENAME_MAX Maximum length of a filename. */ #include /* Standard streams. */ extern struct _IO_FILE *stdin; /* Standard input stream. */ extern struct _IO_FILE *stdout; /* Standard output stream. */ extern struct _IO_FILE *stderr; /* Standard error output stream. */ /* C89/C99 say they're macros. Make them happy. */ #define stdin stdin #define stdout stdout #define stderr stderr __BEGIN_NAMESPACE_STD /* Remove file FILENAME. */ extern int remove (__const char *__filename) __THROW; /* Rename file OLD to NEW. */ extern int rename (__const char *__old, __const char *__new) __THROW; __END_NAMESPACE_STD #ifdef __USE_ATFILE /* Rename file OLD relative to OLDFD to NEW relative to NEWFD. */ extern int renameat (int __oldfd, __const char *__old, int __newfd, __const char *__new) __THROW; #endif __BEGIN_NAMESPACE_STD /* Create a temporary file and open it read/write. This function is a possible cancellation points and therefore not marked with __THROW. */ #ifndef __USE_FILE_OFFSET64 extern FILE *tmpfile (void); #else # ifdef __REDIRECT extern FILE *__REDIRECT (tmpfile, (void), tmpfile64); # else # define tmpfile tmpfile64 # endif #endif #ifdef __USE_LARGEFILE64 extern FILE *tmpfile64 (void); #endif /* Generate a temporary filename. */ extern char *tmpnam (char *__s) __THROW; __END_NAMESPACE_STD #ifdef __USE_MISC /* This is the reentrant variant of `tmpnam'. The only difference is that it does not allow S to be NULL. */ extern char *tmpnam_r (char *__s) __THROW; #endif #if defined __USE_SVID || defined __USE_XOPEN /* Generate a unique temporary filename using up to five characters of PFX if it is not NULL. The directory to put this file in is searched for as follows: First the environment variable "TMPDIR" is checked. If it contains the name of a writable directory, that directory is used. If not and if DIR is not NULL, that value is checked. If that fails, P_tmpdir is tried and finally "/tmp". The storage for the filename is allocated by `malloc'. */ extern char *tempnam (__const char *__dir, __const char *__pfx) __THROW __attribute_malloc__; #endif __BEGIN_NAMESPACE_STD /* Close STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fclose (FILE *__stream); /* Flush STREAM, or all streams if STREAM is NULL. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fflush (FILE *__stream); __END_NAMESPACE_STD #ifdef __USE_MISC /* Faster versions when locking is not required. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int fflush_unlocked (FILE *__stream); #endif #ifdef __USE_GNU /* Close all streams. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int fcloseall (void); #endif __BEGIN_NAMESPACE_STD #ifndef __USE_FILE_OFFSET64 /* Open a file and create a new stream for it. This function is a possible cancellation point and therefore not marked with __THROW. */ extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes); /* Open a file, replacing an existing stream with it. This function is a possible cancellation point and therefore not marked with __THROW. */ extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream); #else # ifdef __REDIRECT extern FILE *__REDIRECT (fopen, (__const char *__restrict __filename, __const char *__restrict __modes), fopen64); extern FILE *__REDIRECT (freopen, (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream), freopen64); # else # define fopen fopen64 # define freopen freopen64 # endif #endif __END_NAMESPACE_STD #ifdef __USE_LARGEFILE64 extern FILE *fopen64 (__const char *__restrict __filename, __const char *__restrict __modes); extern FILE *freopen64 (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream); #endif #ifdef __USE_POSIX /* Create a new stream that refers to an existing system file descriptor. */ extern FILE *fdopen (int __fd, __const char *__modes) __THROW; #endif #ifdef __USE_GNU /* Create a new stream that refers to the given magic cookie, and uses the given functions for input and output. */ extern FILE *fopencookie (void *__restrict __magic_cookie, __const char *__restrict __modes, _IO_cookie_io_functions_t __io_funcs) __THROW; /* Create a new stream that refers to a memory buffer. */ extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) __THROW; /* Open a stream that writes into a malloc'd buffer that is expanded as necessary. *BUFLOC and *SIZELOC are updated with the buffer's location and the number of characters written on fflush or fclose. */ extern FILE *open_memstream (char **__restrict __bufloc, size_t *__restrict __sizeloc) __THROW; /* Like OPEN_MEMSTREAM, but the stream is wide oriented and produces a wide character string. */ extern FILE *open_wmemstream (wchar_t **__restrict __bufloc, size_t *__restrict __sizeloc) __THROW; #endif __BEGIN_NAMESPACE_STD /* If BUF is NULL, make STREAM unbuffered. Else make it use buffer BUF, of size BUFSIZ. */ extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW; /* Make STREAM use buffering mode MODE. If BUF is not NULL, use N bytes of it for buffering; else allocate an internal buffer N bytes long. */ extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) __THROW; __END_NAMESPACE_STD #ifdef __USE_BSD /* If BUF is NULL, make STREAM unbuffered. Else make it use SIZE bytes of BUF for buffering. */ extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) __THROW; /* Make STREAM line-buffered. */ extern void setlinebuf (FILE *__stream) __THROW; #endif __BEGIN_NAMESPACE_STD /* Write formatted output to STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...); /* Write formatted output to stdout. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int printf (__const char *__restrict __format, ...); /* Write formatted output to S. */ extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) __THROW; /* Write formatted output to S from argument list ARG. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, _G_va_list __arg); /* Write formatted output to stdout from argument list ARG. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int vprintf (__const char *__restrict __format, _G_va_list __arg); /* Write formatted output to S from argument list ARG. */ extern int vsprintf (char *__restrict __s, __const char *__restrict __format, _G_va_list __arg) __THROW; __END_NAMESPACE_STD #if defined __USE_BSD || defined __USE_ISOC99 || defined __USE_UNIX98 __BEGIN_NAMESPACE_C99 /* Maximum chars of output to write in MAXLEN. */ extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) __THROW __attribute__ ((__format__ (__printf__, 3, 4))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, _G_va_list __arg) __THROW __attribute__ ((__format__ (__printf__, 3, 0))); __END_NAMESPACE_C99 #endif #ifdef __USE_GNU /* Write formatted output to a string dynamically allocated with `malloc'. Store the address of the string in *PTR. */ extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, _G_va_list __arg) __THROW __attribute__ ((__format__ (__printf__, 2, 0))); extern int __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) __THROW __attribute__ ((__format__ (__printf__, 2, 3))); extern int asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) __THROW __attribute__ ((__format__ (__printf__, 2, 3))); /* Write formatted output to a file descriptor. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern int vdprintf (int __fd, __const char *__restrict __fmt, _G_va_list __arg) __attribute__ ((__format__ (__printf__, 2, 0))); extern int dprintf (int __fd, __const char *__restrict __fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3))); #endif __BEGIN_NAMESPACE_STD /* Read formatted input from STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) __wur; /* Read formatted input from stdin. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int scanf (__const char *__restrict __format, ...) __wur; /* Read formatted input from S. */ extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) __THROW; __END_NAMESPACE_STD #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Read formatted input from S into argument list ARG. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, _G_va_list __arg) __attribute__ ((__format__ (__scanf__, 2, 0))) __wur; /* Read formatted input from stdin into argument list ARG. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int vscanf (__const char *__restrict __format, _G_va_list __arg) __attribute__ ((__format__ (__scanf__, 1, 0))) __wur; /* Read formatted input from S into argument list ARG. */ extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, _G_va_list __arg) __THROW __attribute__ ((__format__ (__scanf__, 2, 0))); __END_NAMESPACE_C99 #endif /* Use ISO C9x. */ __BEGIN_NAMESPACE_STD /* Read a character from STREAM. These functions are possible cancellation points and therefore not marked with __THROW. */ extern int fgetc (FILE *__stream); extern int getc (FILE *__stream); /* Read a character from stdin. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int getchar (void); __END_NAMESPACE_STD /* The C standard explicitly says this is a macro, so we always do the optimization for it. */ #define getc(_fp) _IO_getc (_fp) #if defined __USE_POSIX || defined __USE_MISC /* These are defined in POSIX.1:1996. These functions are possible cancellation points and therefore not marked with __THROW. */ extern int getc_unlocked (FILE *__stream); extern int getchar_unlocked (void); #endif /* Use POSIX or MISC. */ #ifdef __USE_MISC /* Faster version when locking is not necessary. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int fgetc_unlocked (FILE *__stream); #endif /* Use MISC. */ __BEGIN_NAMESPACE_STD /* Write a character to STREAM. These functions are possible cancellation points and therefore not marked with __THROW. These functions is a possible cancellation point and therefore not marked with __THROW. */ extern int fputc (int __c, FILE *__stream); extern int putc (int __c, FILE *__stream); /* Write a character to stdout. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int putchar (int __c); __END_NAMESPACE_STD /* The C standard explicitly says this can be a macro, so we always do the optimization for it. */ #define putc(_ch, _fp) _IO_putc (_ch, _fp) #ifdef __USE_MISC /* Faster version when locking is not necessary. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int fputc_unlocked (int __c, FILE *__stream); #endif /* Use MISC. */ #if defined __USE_POSIX || defined __USE_MISC /* These are defined in POSIX.1:1996. These functions are possible cancellation points and therefore not marked with __THROW. */ extern int putc_unlocked (int __c, FILE *__stream); extern int putchar_unlocked (int __c); #endif /* Use POSIX or MISC. */ #if defined __USE_SVID || defined __USE_MISC \ || (defined __USE_XOPEN && !defined __USE_XOPEN2K) /* Get a word (int) from STREAM. */ extern int getw (FILE *__stream); /* Write a word (int) to STREAM. */ extern int putw (int __w, FILE *__stream); #endif __BEGIN_NAMESPACE_STD /* Get a newline-terminated string of finite length from STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) __wur; /* Get a newline-terminated string from stdin, removing the newline. DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. This function is a possible cancellation point and therefore not marked with __THROW. */ extern char *gets (char *__s) __wur; __END_NAMESPACE_STD #ifdef __USE_GNU /* This function does the same as `fgets' but does not lock the stream. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern char *fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) __wur; #endif #ifdef __USE_GNU /* Read up to (and including) a DELIMITER from STREAM into *LINEPTR (and null-terminate it). *LINEPTR is a pointer returned from malloc (or NULL), pointing to *N characters of space. It is realloc'd as necessary. Returns the number of characters read (not including the null terminator), or -1 on error or EOF. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern _IO_ssize_t __getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __wur; extern _IO_ssize_t getdelim (char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __wur; /* Like `getdelim', but reads up to a newline. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern _IO_ssize_t getline (char **__restrict __lineptr, size_t *__restrict __n, FILE *__restrict __stream) __wur; #endif __BEGIN_NAMESPACE_STD /* Write a string to STREAM. This function is a possible cancellation points and therefore not marked with __THROW. */ extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); /* Write a string, followed by a newline, to stdout. This function is a possible cancellation points and therefore not marked with __THROW. */ extern int puts (__const char *__s); /* Push a character back onto the input buffer of STREAM. This function is a possible cancellation points and therefore not marked with __THROW. */ extern int ungetc (int __c, FILE *__stream); /* Read chunks of generic data from STREAM. This function is a possible cancellation points and therefore not marked with __THROW. */ extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __wur; /* Write chunks of generic data to STREAM. This function is a possible cancellation points and therefore not marked with __THROW. */ extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) __wur; __END_NAMESPACE_STD #ifdef __USE_GNU /* This function does the same as `fputs' but does not lock the stream. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int fputs_unlocked (__const char *__restrict __s, FILE *__restrict __stream); #endif #ifdef __USE_MISC /* Faster versions when locking is not necessary. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __wur; extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __wur; #endif __BEGIN_NAMESPACE_STD /* Seek to a certain position on STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fseek (FILE *__stream, long int __off, int __whence); /* Return the current position of STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern long int ftell (FILE *__stream) __wur; /* Rewind to the beginning of STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void rewind (FILE *__stream); __END_NAMESPACE_STD /* The Single Unix Specification, Version 2, specifies an alternative, more adequate interface for the two functions above which deal with file offset. `long int' is not the right type. These definitions are originally defined in the Large File Support API. */ #if defined __USE_LARGEFILE || defined __USE_XOPEN2K # ifndef __USE_FILE_OFFSET64 /* Seek to a certain position on STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fseeko (FILE *__stream, __off_t __off, int __whence); /* Return the current position of STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern __off_t ftello (FILE *__stream) __wur; # else # ifdef __REDIRECT extern int __REDIRECT (fseeko, (FILE *__stream, __off64_t __off, int __whence), fseeko64); extern __off64_t __REDIRECT (ftello, (FILE *__stream), ftello64); # else # define fseeko fseeko64 # define ftello ftello64 # endif # endif #endif __BEGIN_NAMESPACE_STD #ifndef __USE_FILE_OFFSET64 /* Get STREAM's position. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); /* Set STREAM's position. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fsetpos (FILE *__stream, __const fpos_t *__pos); #else # ifdef __REDIRECT extern int __REDIRECT (fgetpos, (FILE *__restrict __stream, fpos_t *__restrict __pos), fgetpos64); extern int __REDIRECT (fsetpos, (FILE *__stream, __const fpos_t *__pos), fsetpos64); # else # define fgetpos fgetpos64 # define fsetpos fsetpos64 # endif #endif __END_NAMESPACE_STD #ifdef __USE_LARGEFILE64 extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); extern __off64_t ftello64 (FILE *__stream) __wur; extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos); #endif __BEGIN_NAMESPACE_STD /* Clear the error and EOF indicators for STREAM. */ extern void clearerr (FILE *__stream) __THROW; /* Return the EOF indicator for STREAM. */ extern int feof (FILE *__stream) __THROW __wur; /* Return the error indicator for STREAM. */ extern int ferror (FILE *__stream) __THROW __wur; __END_NAMESPACE_STD #ifdef __USE_MISC /* Faster versions when locking is not required. */ extern void clearerr_unlocked (FILE *__stream) __THROW; extern int feof_unlocked (FILE *__stream) __THROW __wur; extern int ferror_unlocked (FILE *__stream) __THROW __wur; #endif __BEGIN_NAMESPACE_STD /* Print a message describing the meaning of the value of errno. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void perror (__const char *__s); __END_NAMESPACE_STD /* Provide the declarations for `sys_errlist' and `sys_nerr' if they are available on this system. Even if available, these variables should not be used directly. The `strerror' function provides all the necessary functionality. */ #include #ifdef __USE_POSIX /* Return the system file descriptor for STREAM. */ extern int fileno (FILE *__stream) __THROW __wur; #endif /* Use POSIX. */ #ifdef __USE_MISC /* Faster version when locking is not required. */ extern int fileno_unlocked (FILE *__stream) __THROW __wur; #endif #if (defined __USE_POSIX2 || defined __USE_SVID || defined __USE_BSD || \ defined __USE_MISC) /* Create a new stream connected to a pipe running the given command. This function is a possible cancellation point and therefore not marked with __THROW. */ extern FILE *popen (__const char *__command, __const char *__modes) __wur; /* Close a stream opened by popen and return the status of its child. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int pclose (FILE *__stream); #endif #ifdef __USE_POSIX /* Return the name of the controlling terminal. */ extern char *ctermid (char *__s) __THROW; #endif /* Use POSIX. */ #ifdef __USE_XOPEN /* Return the name of the current user. */ extern char *cuserid (char *__s); #endif /* Use X/Open, but not issue 6. */ #ifdef __USE_GNU struct obstack; /* See . */ /* Write formatted output to an obstack. */ extern int obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __format, ...) __THROW __attribute__ ((__format__ (__printf__, 2, 3))); extern int obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __format, _G_va_list __args) __THROW __attribute__ ((__format__ (__printf__, 2, 0))); #endif /* Use GNU. */ #if defined __USE_POSIX || defined __USE_MISC /* These are defined in POSIX.1:1996. */ /* Acquire ownership of STREAM. */ extern void flockfile (FILE *__stream) __THROW; /* Try to acquire ownership of STREAM but do not block if it is not possible. */ extern int ftrylockfile (FILE *__stream) __THROW __wur; /* Relinquish the ownership granted for STREAM. */ extern void funlockfile (FILE *__stream) __THROW; #endif /* POSIX || misc */ #if defined __USE_XOPEN && !defined __USE_XOPEN2K && !defined __USE_GNU /* The X/Open standard requires some functions and variables to be declared here which do not belong into this header. But we have to follow. In GNU mode we don't do this nonsense. */ # define __need_getopt # include #endif /* X/Open, but not issue 6 and not for GNU. */ /* If we are compiling with optimizing read this file. It contains several optimizing inline functions and macros. */ #ifdef __USE_EXTERN_INLINES # include #endif #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus # include #endif #ifdef __LDBL_COMPAT # include #endif __END_DECLS #endif /* included. */ #endif /* !_STDIO_H */ Convert-Binary-C-0.76/tests/include/include/gconv.h0000644000175000001440000001227711550664626020724 0ustar mhxusers/* Copyright (C) 1997-1999, 2000-2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* This header provides no interface for a user to the internals of the gconv implementation in the libc. Therefore there is no use for these definitions beside for writing additional gconv modules. */ #ifndef _GCONV_H #define _GCONV_H 1 #include #define __need_mbstate_t #include #define __need_size_t #define __need_wchar_t #include /* ISO 10646 value used to signal invalid value. */ #define __UNKNOWN_10646_CHAR ((wchar_t) 0xfffd) /* Error codes for gconv functions. */ enum { __GCONV_OK = 0, __GCONV_NOCONV, __GCONV_NODB, __GCONV_NOMEM, __GCONV_EMPTY_INPUT, __GCONV_FULL_OUTPUT, __GCONV_ILLEGAL_INPUT, __GCONV_INCOMPLETE_INPUT, __GCONV_ILLEGAL_DESCRIPTOR, __GCONV_INTERNAL_ERROR }; /* Flags the `__gconv_open' function can set. */ enum { __GCONV_IS_LAST = 0x0001, __GCONV_IGNORE_ERRORS = 0x0002 }; /* Forward declarations. */ struct __gconv_step; struct __gconv_step_data; struct __gconv_loaded_object; struct __gconv_trans_data; /* Type of a conversion function. */ typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *, int, int); /* Type of a specialized conversion function for a single byte to INTERNAL. */ typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char); /* Constructor and destructor for local data for conversion step. */ typedef int (*__gconv_init_fct) (struct __gconv_step *); typedef void (*__gconv_end_fct) (struct __gconv_step *); /* Type of a transliteration/transscription function. */ typedef int (*__gconv_trans_fct) (struct __gconv_step *, struct __gconv_step_data *, void *, __const unsigned char *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *); /* Function to call to provide transliteration module with context. */ typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *, __const unsigned char *, unsigned char *, unsigned char *); /* Function to query module about supported encoded character sets. */ typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***, size_t *); /* Constructor and destructor for local data for transliteration. */ typedef int (*__gconv_trans_init_fct) (void **, const char *); typedef void (*__gconv_trans_end_fct) (void *); struct __gconv_trans_data { /* Transliteration/Transscription function. */ __gconv_trans_fct __trans_fct; __gconv_trans_context_fct __trans_context_fct; __gconv_trans_end_fct __trans_end_fct; void *__data; struct __gconv_trans_data *__next; }; /* Description of a conversion step. */ struct __gconv_step { struct __gconv_loaded_object *__shlib_handle; __const char *__modname; int __counter; char *__from_name; char *__to_name; __gconv_fct __fct; __gconv_btowc_fct __btowc_fct; __gconv_init_fct __init_fct; __gconv_end_fct __end_fct; /* Information about the number of bytes needed or produced in this step. This helps optimizing the buffer sizes. */ int __min_needed_from; int __max_needed_from; int __min_needed_to; int __max_needed_to; /* Flag whether this is a stateful encoding or not. */ int __stateful; void *__data; /* Pointer to step-local data. */ }; /* Additional data for steps in use of conversion descriptor. This is allocated by the `init' function. */ struct __gconv_step_data { unsigned char *__outbuf; /* Output buffer for this step. */ unsigned char *__outbufend; /* Address of first byte after the output buffer. */ /* Is this the last module in the chain. */ int __flags; /* Counter for number of invocations of the module function for this descriptor. */ int __invocation_counter; /* Flag whether this is an internal use of the module (in the mb*towc* and wc*tomb* functions) or regular with iconv(3). */ int __internal_use; __mbstate_t *__statep; __mbstate_t __state; /* This element must not be used directly by any module; always use STATEP! */ /* Transliteration information. */ struct __gconv_trans_data *__trans; }; /* Combine conversion step description with data. */ typedef struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; __extension__ struct __gconv_step_data __data __flexarr; } *__gconv_t; #endif /* gconv.h */ Convert-Binary-C-0.76/tests/include/include/getopt.h0000644000175000001440000001375511550664626021114 0ustar mhxusers/* Declarations for getopt. Copyright (C) 1989-1994,1996-1999,2001,2003,2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _GETOPT_H #ifndef __need_getopt # define _GETOPT_H 1 #endif /* If __GNU_LIBRARY__ is not already defined, either we are being used standalone, or this is the first header included in the source file. If we are being used with glibc, we need to include , but that does not exist if we are standalone. So: if __GNU_LIBRARY__ is not defined, include , which will pull in for us if it's from glibc. (Why ctype.h? It's guaranteed to exist and it doesn't flood the namespace with stuff the way some other headers do.) */ #if !defined __GNU_LIBRARY__ # include #endif #ifndef __THROW # ifndef __GNUC_PREREQ # define __GNUC_PREREQ(maj, min) (0) # endif # if defined __cplusplus && __GNUC_PREREQ (2,8) # define __THROW throw () # else # define __THROW # endif #endif #ifdef __cplusplus extern "C" { #endif /* For communication from `getopt' to the caller. When `getopt' finds an option that takes an argument, the argument value is returned here. Also, when `ordering' is RETURN_IN_ORDER, each non-option ARGV-element is returned here. */ extern char *optarg; /* Index in ARGV of the next element to be scanned. This is used for communication to and from the caller and for communication between successive calls to `getopt'. On entry to `getopt', zero means this is the first call; initialize. When `getopt' returns -1, this is the index of the first of the non-option elements that the caller should itself scan. Otherwise, `optind' communicates from one call to the next how much of ARGV has been scanned so far. */ extern int optind; /* Callers store zero here to inhibit the error message `getopt' prints for unrecognized options. */ extern int opterr; /* Set to an option character which was unrecognized. */ extern int optopt; #ifndef __need_getopt /* Describe the long-named options requested by the application. The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector of `struct option' terminated by an element containing a name which is zero. The field `has_arg' is: no_argument (or 0) if the option does not take an argument, required_argument (or 1) if the option requires an argument, optional_argument (or 2) if the option takes an optional argument. If the field `flag' is not NULL, it points to a variable that is set to the value given in the field `val' when the option is found, but left unchanged if the option is not found. To have a long-named option do something other than set an `int' to a compiled-in constant, such as set a value from `optarg', set the option's `flag' field to zero and its `val' field to a nonzero value (the equivalent single-letter option character, if there is one). For long options that have a zero `flag' field, `getopt' returns the contents of the `val' field. */ struct option { const char *name; /* has_arg can't be an enum because some compilers complain about type mismatches in all the code that assumes it is an int. */ int has_arg; int *flag; int val; }; /* Names for the values of the `has_arg' field of `struct option'. */ # define no_argument 0 # define required_argument 1 # define optional_argument 2 #endif /* need getopt */ /* Get definitions and prototypes for functions to process the arguments in ARGV (ARGC of them, minus the program name) for options given in OPTS. Return the option character from OPTS just read. Return -1 when there are no more options. For unrecognized options, or options missing arguments, `optopt' is set to the option letter, and '?' is returned. The OPTS string is a list of characters which are recognized option letters, optionally followed by colons, specifying that that letter takes an argument, to be placed in `optarg'. If a letter in OPTS is followed by two colons, its argument is optional. This behavior is specific to the GNU `getopt'. The argument `--' causes premature termination of argument scanning, explicitly telling `getopt' that there are no more options. If OPTS begins with `--', then non-option arguments are treated as arguments to the option '\0'. This behavior is specific to the GNU `getopt'. */ #ifdef __GNU_LIBRARY__ /* Many other libraries have conflicting prototypes for getopt, with differences in the consts, in stdlib.h. To avoid compilation errors, only prototype getopt for the GNU C library. */ extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) __THROW; #else /* not __GNU_LIBRARY__ */ extern int getopt (); #endif /* __GNU_LIBRARY__ */ #ifndef __need_getopt extern int getopt_long (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW; extern int getopt_long_only (int ___argc, char *const *___argv, const char *__shortopts, const struct option *__longopts, int *__longind) __THROW; #endif #ifdef __cplusplus } #endif /* Make sure we later can get all the definitions and declarations. */ #undef __need_getopt #endif /* getopt.h */ Convert-Binary-C-0.76/tests/include/include/netdb.h0000644000175000001440000006444111550664626020704 0ustar mhxusers /* Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* All data returned by the network data base library are supplied in host order and returned in network order (suitable for use in system calls). */ #ifndef _NETDB_H #define _NETDB_H 1 #include #include #include #ifdef __USE_MISC /* This is necessary to make this include file properly replace the Sun version. */ # include #endif #ifdef __USE_GNU # define __need_sigevent_t # include # define __need_timespec # include #endif #include /* Absolute file name for network data base files. */ #define _PATH_HEQUIV "/etc/hosts.equiv" #define _PATH_HOSTS "/etc/hosts" #define _PATH_NETWORKS "/etc/networks" #define _PATH_NSSWITCH_CONF "/etc/nsswitch.conf" #define _PATH_PROTOCOLS "/etc/protocols" #define _PATH_SERVICES "/etc/services" __BEGIN_DECLS /* Error status for non-reentrant lookup functions. We use a macro to access always the thread-specific `h_errno' variable. */ #define h_errno (*__h_errno_location ()) /* Function to get address of global `h_errno' variable. */ extern int *__h_errno_location (void) __THROW __attribute__ ((__const__)); /* Possible values left in `h_errno'. */ #define NETDB_INTERNAL -1 /* See errno. */ #define NETDB_SUCCESS 0 /* No problem. */ #define HOST_NOT_FOUND 1 /* Authoritative Answer Host not found. */ #define TRY_AGAIN 2 /* Non-Authoritative Host not found, or SERVERFAIL. */ #define NO_RECOVERY 3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP. */ #define NO_DATA 4 /* Valid name, no data record of requested type. */ #define NO_ADDRESS NO_DATA /* No address, look for MX record. */ #ifdef __USE_XOPEN2K /* Highest reserved Internet port number. */ # define IPPORT_RESERVED 1024 #endif #ifdef __USE_GNU /* Scope delimiter for getaddrinfo(), getnameinfo(). */ # define SCOPE_DELIMITER '%' #endif /* Print error indicated by `h_errno' variable on standard error. STR if non-null is printed before the error string. */ extern void herror (__const char *__str) __THROW; /* Return string associated with error ERR_NUM. */ extern __const char *hstrerror (int __err_num) __THROW; /* Description of data base entry for a single host. */ struct hostent { char *h_name; /* Official name of host. */ char **h_aliases; /* Alias list. */ int h_addrtype; /* Host address type. */ int h_length; /* Length of address. */ char **h_addr_list; /* List of addresses from name server. */ #define h_addr h_addr_list[0] /* Address, for backward compatibility. */ }; /* Open host data base files and mark them as staying open even after a later search if STAY_OPEN is non-zero. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void sethostent (int __stay_open); /* Close host data base files and clear `stay open' flag. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void endhostent (void); /* Get next entry from host data base file. Open data base if necessary. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct hostent *gethostent (void); /* Return entry from host data base which address match ADDR with length LEN and type TYPE. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct hostent *gethostbyaddr (__const void *__addr, __socklen_t __len, int __type); /* Return entry from host data base for host with NAME. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct hostent *gethostbyname (__const char *__name); #ifdef __USE_MISC /* Return entry from host data base for host with NAME. AF must be set to the address type which is `AF_INET' for IPv4 or `AF_INET6' for IPv6. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern struct hostent *gethostbyname2 (__const char *__name, int __af); /* Reentrant versions of the functions above. The additional arguments specify a buffer of BUFLEN starting at BUF. The last argument is a pointer to a variable which gets the value which would be stored in the global variable `herrno' by the non-reentrant functions. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern int gethostent_r (struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop); extern int gethostbyaddr_r (__const void *__restrict __addr, __socklen_t __len, int __type, struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop); extern int gethostbyname_r (__const char *__restrict __name, struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop); extern int gethostbyname2_r (__const char *__restrict __name, int __af, struct hostent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct hostent **__restrict __result, int *__restrict __h_errnop); #endif /* misc */ /* Open network data base files and mark them as staying open even after a later search if STAY_OPEN is non-zero. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void setnetent (int __stay_open); /* Close network data base files and clear `stay open' flag. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void endnetent (void); /* Get next entry from network data base file. Open data base if necessary. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct netent *getnetent (void); /* Return entry from network data base which address match NET and type TYPE. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct netent *getnetbyaddr (uint32_t __net, int __type); /* Return entry from network data base for network with NAME. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct netent *getnetbyname (__const char *__name); #ifdef __USE_MISC /* Reentrant versions of the functions above. The additional arguments specify a buffer of BUFLEN starting at BUF. The last argument is a pointer to a variable which gets the value which would be stored in the global variable `herrno' by the non-reentrant functions. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern int getnetent_r (struct netent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct netent **__restrict __result, int *__restrict __h_errnop); extern int getnetbyaddr_r (uint32_t __net, int __type, struct netent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct netent **__restrict __result, int *__restrict __h_errnop); extern int getnetbyname_r (__const char *__restrict __name, struct netent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct netent **__restrict __result, int *__restrict __h_errnop); #endif /* misc */ /* Description of data base entry for a single service. */ struct servent { char *s_name; /* Official service name. */ char **s_aliases; /* Alias list. */ int s_port; /* Port number. */ char *s_proto; /* Protocol to use. */ }; /* Open service data base files and mark them as staying open even after a later search if STAY_OPEN is non-zero. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void setservent (int __stay_open); /* Close service data base files and clear `stay open' flag. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void endservent (void); /* Get next entry from service data base file. Open data base if necessary. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct servent *getservent (void); /* Return entry from network data base for network with NAME and protocol PROTO. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct servent *getservbyname (__const char *__name, __const char *__proto); /* Return entry from service data base which matches port PORT and protocol PROTO. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct servent *getservbyport (int __port, __const char *__proto); #ifdef __USE_MISC /* Reentrant versions of the functions above. The additional arguments specify a buffer of BUFLEN starting at BUF. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern int getservent_r (struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result); extern int getservbyname_r (__const char *__restrict __name, __const char *__restrict __proto, struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result); extern int getservbyport_r (int __port, __const char *__restrict __proto, struct servent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct servent **__restrict __result); #endif /* misc */ /* Description of data base entry for a single service. */ struct protoent { char *p_name; /* Official protocol name. */ char **p_aliases; /* Alias list. */ int p_proto; /* Protocol number. */ }; /* Open protocol data base files and mark them as staying open even after a later search if STAY_OPEN is non-zero. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void setprotoent (int __stay_open); /* Close protocol data base files and clear `stay open' flag. This function is a possible cancellation point and therefore not marked with __THROW. */ extern void endprotoent (void); /* Get next entry from protocol data base file. Open data base if necessary. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct protoent *getprotoent (void); /* Return entry from protocol data base for network with NAME. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct protoent *getprotobyname (__const char *__name); /* Return entry from protocol data base which number is PROTO. This function is a possible cancellation point and therefore not marked with __THROW. */ extern struct protoent *getprotobynumber (int __proto); #ifdef __USE_MISC /* Reentrant versions of the functions above. The additional arguments specify a buffer of BUFLEN starting at BUF. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern int getprotoent_r (struct protoent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result); extern int getprotobyname_r (__const char *__restrict __name, struct protoent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result); extern int getprotobynumber_r (int __proto, struct protoent *__restrict __result_buf, char *__restrict __buf, size_t __buflen, struct protoent **__restrict __result); /* Establish network group NETGROUP for enumeration. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int setnetgrent (__const char *__netgroup); /* Free all space allocated by previous `setnetgrent' call. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern void endnetgrent (void); /* Get next member of netgroup established by last `setnetgrent' call and return pointers to elements in HOSTP, USERP, and DOMAINP. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int getnetgrent (char **__restrict __hostp, char **__restrict __userp, char **__restrict __domainp); /* Test whether NETGROUP contains the triple (HOST,USER,DOMAIN). This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int innetgr (__const char *__netgroup, __const char *__host, __const char *__user, __const char *domain); /* Reentrant version of `getnetgrent' where result is placed in BUFFER. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int getnetgrent_r (char **__restrict __hostp, char **__restrict __userp, char **__restrict __domainp, char *__restrict __buffer, size_t __buflen); #endif /* misc */ #ifdef __USE_BSD /* Call `rshd' at port RPORT on remote machine *AHOST to execute CMD. The local user is LOCUSER, on the remote machine the command is executed as REMUSER. In *FD2P the descriptor to the socket for the connection is returned. The caller must have the right to use a reserved port. When the function returns *AHOST contains the official host name. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int rcmd (char **__restrict __ahost, unsigned short int __rport, __const char *__restrict __locuser, __const char *__restrict __remuser, __const char *__restrict __cmd, int *__restrict __fd2p); /* This is the equivalent function where the protocol can be selected and which therefore can be used for IPv6. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport, __const char *__restrict __locuser, __const char *__restrict __remuser, __const char *__restrict __cmd, int *__restrict __fd2p, sa_family_t __af); /* Call `rexecd' at port RPORT on remote machine *AHOST to execute CMD. The process runs at the remote machine using the ID of user NAME whose cleartext password is PASSWD. In *FD2P the descriptor to the socket for the connection is returned. When the function returns *AHOST contains the official host name. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int rexec (char **__restrict __ahost, int __rport, __const char *__restrict __name, __const char *__restrict __pass, __const char *__restrict __cmd, int *__restrict __fd2p); /* This is the equivalent function where the protocol can be selected and which therefore can be used for IPv6. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int rexec_af (char **__restrict __ahost, int __rport, __const char *__restrict __name, __const char *__restrict __pass, __const char *__restrict __cmd, int *__restrict __fd2p, sa_family_t __af); /* Check whether user REMUSER on system RHOST is allowed to login as LOCUSER. If SUSER is not zero the user tries to become superuser. Return 0 if it is possible. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int ruserok (__const char *__rhost, int __suser, __const char *__remuser, __const char *__locuser); /* This is the equivalent function where the protocol can be selected and which therefore can be used for IPv6. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int ruserok_af (__const char *__rhost, int __suser, __const char *__remuser, __const char *__locuser, sa_family_t __af); /* Try to allocate reserved port, returning a descriptor for a socket opened at this port or -1 if unsuccessful. The search for an available port will start at ALPORT and continues with lower numbers. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int rresvport (int *__alport); /* This is the equivalent function where the protocol can be selected and which therefore can be used for IPv6. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int rresvport_af (int *__alport, sa_family_t __af); #endif /* Extension from POSIX.1g. */ #ifdef __USE_POSIX /* Structure to contain information about address of a service provider. */ struct addrinfo { int ai_flags; /* Input flags. */ int ai_family; /* Protocol family for socket. */ int ai_socktype; /* Socket type. */ int ai_protocol; /* Protocol for socket. */ socklen_t ai_addrlen; /* Length of socket address. */ struct sockaddr *ai_addr; /* Socket address for socket. */ char *ai_canonname; /* Canonical name for service location. */ struct addrinfo *ai_next; /* Pointer to next in list. */ }; # ifdef __USE_GNU /* Structure used as control block for asynchronous lookup. */ struct gaicb { const char *ar_name; /* Name to look up. */ const char *ar_service; /* Service name. */ const struct addrinfo *ar_request; /* Additional request specification. */ struct addrinfo *ar_result; /* Pointer to result. */ /* The following are internal elements. */ int __return; int __unused[5]; }; /* Lookup mode. */ # define GAI_WAIT 0 # define GAI_NOWAIT 1 # endif /* Possible values for `ai_flags' field in `addrinfo' structure. */ # define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */ # define AI_CANONNAME 0x0002 /* Request for canonical name. */ # define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */ # define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */ # define AI_ALL 0x0010 /* Return IPv4 mapped and IPv6 addresses. */ # define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose returned address type.. */ # ifdef __USE_GNU # define AI_IDN 0x0040 /* IDN encode input (assuming it is encoded in the current locale's character set) before looking it up. */ # define AI_CANONIDN 0x0080 /* Translate canonical name from IDN format. */ # define AI_IDN_ALLOW_UNASSIGNED 0x0100 /* Don't reject unassigned Unicode code points. */ # define AI_IDN_USE_STD3_ASCII_RULES 0x0200 /* Validate strings according to STD3 rules. */ # endif # define AI_NUMERICSERV 0x0400 /* Don't use name resolution. */ /* Error values for `getaddrinfo' function. */ # define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */ # define EAI_NONAME -2 /* NAME or SERVICE is unknown. */ # define EAI_AGAIN -3 /* Temporary failure in name resolution. */ # define EAI_FAIL -4 /* Non-recoverable failure in name res. */ # define EAI_NODATA -5 /* No address associated with NAME. */ # define EAI_FAMILY -6 /* `ai_family' not supported. */ # define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */ # define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */ # define EAI_ADDRFAMILY -9 /* Address family for NAME not supported. */ # define EAI_MEMORY -10 /* Memory allocation failure. */ # define EAI_SYSTEM -11 /* System error returned in `errno'. */ # define EAI_OVERFLOW -12 /* Argument buffer overflow. */ # ifdef __USE_GNU # define EAI_INPROGRESS -100 /* Processing request in progress. */ # define EAI_CANCELED -101 /* Request canceled. */ # define EAI_NOTCANCELED -102 /* Request not canceled. */ # define EAI_ALLDONE -103 /* All requests done. */ # define EAI_INTR -104 /* Interrupted by a signal. */ # define EAI_IDN_ENCODE -105 /* IDN encoding failed. */ # endif # define NI_MAXHOST 1025 # define NI_MAXSERV 32 # define NI_NUMERICHOST 1 /* Don't try to look up hostname. */ # define NI_NUMERICSERV 2 /* Don't convert port number to name. */ # define NI_NOFQDN 4 /* Only return nodename portion. */ # define NI_NAMEREQD 8 /* Don't return numeric addresses. */ # define NI_DGRAM 16 /* Look up UDP service rather than TCP. */ # ifdef __USE_GNU # define NI_IDN 32 /* Convert name from IDN format. */ # define NI_IDN_ALLOW_UNASSIGNED 64 /* Don't reject unassigned Unicode code points. */ # define NI_IDN_USE_STD3_ASCII_RULES 128 /* Validate strings according to STD3 rules. */ # endif /* Translate name of a service location and/or a service name to set of socket addresses. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int getaddrinfo (__const char *__restrict __name, __const char *__restrict __service, __const struct addrinfo *__restrict __req, struct addrinfo **__restrict __pai); /* Free `addrinfo' structure AI including associated storage. */ extern void freeaddrinfo (struct addrinfo *__ai) __THROW; /* Convert error return from getaddrinfo() to a string. */ extern __const char *gai_strerror (int __ecode) __THROW; /* Translate a socket address to a location and service name. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int getnameinfo (__const struct sockaddr *__restrict __sa, socklen_t __salen, char *__restrict __host, socklen_t __hostlen, char *__restrict __serv, socklen_t __servlen, unsigned int __flags); #endif /* POSIX */ #ifdef __USE_GNU /* Enqueue ENT requests from the LIST. If MODE is GAI_WAIT wait until all requests are handled. If WAIT is GAI_NOWAIT return immediately after queueing the requests and signal completion according to SIG. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict_arr], int __ent, struct sigevent *__restrict __sig); /* Suspend execution of the thread until at least one of the ENT requests in LIST is handled. If TIMEOUT is not a null pointer it specifies the longest time the function keeps waiting before returning with an error. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int gai_suspend (__const struct gaicb *__const __list[], int __ent, __const struct timespec *__timeout); /* Get the error status of the request REQ. */ extern int gai_error (struct gaicb *__req) __THROW; /* Cancel the requests associated with GAICBP. */ extern int gai_cancel (struct gaicb *__gaicbp) __THROW; #endif /* GNU */ __END_DECLS #endif /* netdb.h */ Convert-Binary-C-0.76/tests/include/include/netinet/0000755000175000001440000000000011550665107021067 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/netinet/in.h0000644000175000001440000004002711550664626021656 0ustar mhxusers/* Copyright (C) 1991-2001, 2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _NETINET_IN_H #define _NETINET_IN_H 1 #include #include #include #include __BEGIN_DECLS /* Standard well-defined IP protocols. */ enum { IPPROTO_IP = 0, /* Dummy protocol for TCP. */ #define IPPROTO_IP IPPROTO_IP IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */ #define IPPROTO_HOPOPTS IPPROTO_HOPOPTS IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */ #define IPPROTO_ICMP IPPROTO_ICMP IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */ #define IPPROTO_IGMP IPPROTO_IGMP IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94). */ #define IPPROTO_IPIP IPPROTO_IPIP IPPROTO_TCP = 6, /* Transmission Control Protocol. */ #define IPPROTO_TCP IPPROTO_TCP IPPROTO_EGP = 8, /* Exterior Gateway Protocol. */ #define IPPROTO_EGP IPPROTO_EGP IPPROTO_PUP = 12, /* PUP protocol. */ #define IPPROTO_PUP IPPROTO_PUP IPPROTO_UDP = 17, /* User Datagram Protocol. */ #define IPPROTO_UDP IPPROTO_UDP IPPROTO_IDP = 22, /* XNS IDP protocol. */ #define IPPROTO_IDP IPPROTO_IDP IPPROTO_TP = 29, /* SO Transport Protocol Class 4. */ #define IPPROTO_TP IPPROTO_TP IPPROTO_IPV6 = 41, /* IPv6 header. */ #define IPPROTO_IPV6 IPPROTO_IPV6 IPPROTO_ROUTING = 43, /* IPv6 routing header. */ #define IPPROTO_ROUTING IPPROTO_ROUTING IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */ #define IPPROTO_FRAGMENT IPPROTO_FRAGMENT IPPROTO_RSVP = 46, /* Reservation Protocol. */ #define IPPROTO_RSVP IPPROTO_RSVP IPPROTO_GRE = 47, /* General Routing Encapsulation. */ #define IPPROTO_GRE IPPROTO_GRE IPPROTO_ESP = 50, /* encapsulating security payload. */ #define IPPROTO_ESP IPPROTO_ESP IPPROTO_AH = 51, /* authentication header. */ #define IPPROTO_AH IPPROTO_AH IPPROTO_ICMPV6 = 58, /* ICMPv6. */ #define IPPROTO_ICMPV6 IPPROTO_ICMPV6 IPPROTO_NONE = 59, /* IPv6 no next header. */ #define IPPROTO_NONE IPPROTO_NONE IPPROTO_DSTOPTS = 60, /* IPv6 destination options. */ #define IPPROTO_DSTOPTS IPPROTO_DSTOPTS IPPROTO_MTP = 92, /* Multicast Transport Protocol. */ #define IPPROTO_MTP IPPROTO_MTP IPPROTO_ENCAP = 98, /* Encapsulation Header. */ #define IPPROTO_ENCAP IPPROTO_ENCAP IPPROTO_PIM = 103, /* Protocol Independent Multicast. */ #define IPPROTO_PIM IPPROTO_PIM IPPROTO_COMP = 108, /* Compression Header Protocol. */ #define IPPROTO_COMP IPPROTO_COMP IPPROTO_SCTP = 132, /* Stream Control Transmission Protocol. */ #define IPPROTO_SCTP IPPROTO_SCTP IPPROTO_RAW = 255, /* Raw IP packets. */ #define IPPROTO_RAW IPPROTO_RAW IPPROTO_MAX }; /* Type to represent a port. */ typedef uint16_t in_port_t; /* Standard well-known ports. */ enum { IPPORT_ECHO = 7, /* Echo service. */ IPPORT_DISCARD = 9, /* Discard transmissions service. */ IPPORT_SYSTAT = 11, /* System status service. */ IPPORT_DAYTIME = 13, /* Time of day service. */ IPPORT_NETSTAT = 15, /* Network status service. */ IPPORT_FTP = 21, /* File Transfer Protocol. */ IPPORT_TELNET = 23, /* Telnet protocol. */ IPPORT_SMTP = 25, /* Simple Mail Transfer Protocol. */ IPPORT_TIMESERVER = 37, /* Timeserver service. */ IPPORT_NAMESERVER = 42, /* Domain Name Service. */ IPPORT_WHOIS = 43, /* Internet Whois service. */ IPPORT_MTP = 57, IPPORT_TFTP = 69, /* Trivial File Transfer Protocol. */ IPPORT_RJE = 77, IPPORT_FINGER = 79, /* Finger service. */ IPPORT_TTYLINK = 87, IPPORT_SUPDUP = 95, /* SUPDUP protocol. */ IPPORT_EXECSERVER = 512, /* execd service. */ IPPORT_LOGINSERVER = 513, /* rlogind service. */ IPPORT_CMDSERVER = 514, IPPORT_EFSSERVER = 520, /* UDP ports. */ IPPORT_BIFFUDP = 512, IPPORT_WHOSERVER = 513, IPPORT_ROUTESERVER = 520, /* Ports less than this value are reserved for privileged processes. */ IPPORT_RESERVED = 1024, /* Ports greater this value are reserved for (non-privileged) servers. */ IPPORT_USERRESERVED = 5000 }; /* Internet address. */ typedef uint32_t in_addr_t; struct in_addr { in_addr_t s_addr; }; /* Definitions of the bits in an Internet address integer. On subnets, host and network parts are found according to the subnet mask, not these masks. */ #define IN_CLASSA(a) ((((in_addr_t)(a)) & 0x80000000) == 0) #define IN_CLASSA_NET 0xff000000 #define IN_CLASSA_NSHIFT 24 #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) #define IN_CLASSA_MAX 128 #define IN_CLASSB(a) ((((in_addr_t)(a)) & 0xc0000000) == 0x80000000) #define IN_CLASSB_NET 0xffff0000 #define IN_CLASSB_NSHIFT 16 #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) #define IN_CLASSB_MAX 65536 #define IN_CLASSC(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000) #define IN_CLASSC_NET 0xffffff00 #define IN_CLASSC_NSHIFT 8 #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) #define IN_CLASSD(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000) #define IN_MULTICAST(a) IN_CLASSD(a) #define IN_EXPERIMENTAL(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000) #define IN_BADCLASS(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000) /* Address to accept any incoming messages. */ #define INADDR_ANY ((in_addr_t) 0x00000000) /* Address to send to all hosts. */ #define INADDR_BROADCAST ((in_addr_t) 0xffffffff) /* Address indicating an error return. */ #define INADDR_NONE ((in_addr_t) 0xffffffff) /* Network number for local host loopback. */ #define IN_LOOPBACKNET 127 /* Address to loopback in software to local host. */ #ifndef INADDR_LOOPBACK # define INADDR_LOOPBACK ((in_addr_t) 0x7f000001) /* Inet 127.0.0.1. */ #endif /* Defines for Multicast INADDR. */ #define INADDR_UNSPEC_GROUP ((in_addr_t) 0xe0000000) /* 224.0.0.0 */ #define INADDR_ALLHOSTS_GROUP ((in_addr_t) 0xe0000001) /* 224.0.0.1 */ #define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002) /* 224.0.0.2 */ #define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */ /* IPv6 address */ struct in6_addr { union { uint8_t u6_addr8[16]; uint16_t u6_addr16[8]; uint32_t u6_addr32[4]; } in6_u; #define s6_addr in6_u.u6_addr8 #define s6_addr16 in6_u.u6_addr16 #define s6_addr32 in6_u.u6_addr32 }; extern const struct in6_addr in6addr_any; /* :: */ extern const struct in6_addr in6addr_loopback; /* ::1 */ #define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } #define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } #define INET_ADDRSTRLEN 16 #define INET6_ADDRSTRLEN 46 /* Get the definition of the macro to define the common sockaddr members. */ #include /* Structure describing an Internet socket address. */ struct sockaddr_in { __SOCKADDR_COMMON (sin_); in_port_t sin_port; /* Port number. */ struct in_addr sin_addr; /* Internet address. */ /* Pad to size of `struct sockaddr'. */ unsigned char sin_zero[sizeof (struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof (in_port_t) - sizeof (struct in_addr)]; }; /* Ditto, for IPv6. */ struct sockaddr_in6 { __SOCKADDR_COMMON (sin6_); in_port_t sin6_port; /* Transport layer port # */ uint32_t sin6_flowinfo; /* IPv6 flow information */ struct in6_addr sin6_addr; /* IPv6 address */ uint32_t sin6_scope_id; /* IPv6 scope-id */ }; /* IPv4 multicast request. */ struct ip_mreq { /* IP multicast address of group. */ struct in_addr imr_multiaddr; /* Local IP address of interface. */ struct in_addr imr_interface; }; struct ip_mreq_source { /* IP multicast address of group. */ struct in_addr imr_multiaddr; /* IP address of source. */ struct in_addr imr_interface; /* IP address of interface. */ struct in_addr imr_sourceaddr; }; /* Likewise, for IPv6. */ struct ipv6_mreq { /* IPv6 multicast address of group */ struct in6_addr ipv6mr_multiaddr; /* local interface */ unsigned int ipv6mr_interface; }; /* Multicast group request. */ struct group_req { /* Interface index. */ uint32_t gr_interface; /* Group address. */ struct sockaddr_storage gr_group; }; struct group_source_req { /* Interface index. */ uint32_t gsr_interface; /* Group address. */ struct sockaddr_storage gsr_group; /* Source address. */ struct sockaddr_storage gsr_source; }; /* Full-state filter operations. */ struct ip_msfilter { /* IP multicast address of group. */ struct in_addr imsf_multiaddr; /* Local IP address of interface. */ struct in_addr imsf_interface; /* Filter mode. */ uint32_t imsf_fmode; /* Number of source addresses. */ uint32_t imsf_numsrc; /* Source addresses. */ struct in_addr imsf_slist[1]; }; #define IP_MSFILTER_SIZE(numsrc) (sizeof (struct ip_msfilter) \ - sizeof (struct in_addr) \ + (numsrc) * sizeof (struct in_addr)) struct group_filter { /* Interface index. */ uint32_t gf_interface; /* Group address. */ struct sockaddr_storage gf_group; /* Filter mode. */ uint32_t gf_fmode; /* Number of source addresses. */ uint32_t gf_numsrc; /* Source addresses. */ struct sockaddr_storage gf_slist[1]; }; #define GROUP_FILTER_SIZE(numsrc) (sizeof (struct group_filter) \ - sizeof (struct sockaddr_storage) \ + ((numsrc) \ * sizeof (struct sockaddr_storage))) /* Get system-specific definitions. */ #include /* Functions to convert between host and network byte order. Please note that these functions normally take `unsigned long int' or `unsigned short int' values as arguments and also return them. But this was a short-sighted decision since on different systems the types may have different representations but the values are always the same. */ extern uint32_t ntohl (uint32_t __netlong) __THROW __attribute__ ((__const__)); extern uint16_t ntohs (uint16_t __netshort) __THROW __attribute__ ((__const__)); extern uint32_t htonl (uint32_t __hostlong) __THROW __attribute__ ((__const__)); extern uint16_t htons (uint16_t __hostshort) __THROW __attribute__ ((__const__)); #include /* Get machine dependent optimized versions of byte swapping functions. */ #include #ifdef __OPTIMIZE__ /* We can optimize calls to the conversion functions. Either nothing has to be done or we are using directly the byte-swapping functions which often can be inlined. */ # if __BYTE_ORDER == __BIG_ENDIAN /* The host byte order is the same as network byte order, so these functions are all just identity. */ # define ntohl(x) (x) # define ntohs(x) (x) # define htonl(x) (x) # define htons(x) (x) # else # if __BYTE_ORDER == __LITTLE_ENDIAN # define ntohl(x) __bswap_32 (x) # define ntohs(x) __bswap_16 (x) # define htonl(x) __bswap_32 (x) # define htons(x) __bswap_16 (x) # endif # endif #endif #define IN6_IS_ADDR_UNSPECIFIED(a) \ (((__const uint32_t *) (a))[0] == 0 \ && ((__const uint32_t *) (a))[1] == 0 \ && ((__const uint32_t *) (a))[2] == 0 \ && ((__const uint32_t *) (a))[3] == 0) #define IN6_IS_ADDR_LOOPBACK(a) \ (((__const uint32_t *) (a))[0] == 0 \ && ((__const uint32_t *) (a))[1] == 0 \ && ((__const uint32_t *) (a))[2] == 0 \ && ((__const uint32_t *) (a))[3] == htonl (1)) #define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff) #define IN6_IS_ADDR_LINKLOCAL(a) \ ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \ == htonl (0xfe800000)) #define IN6_IS_ADDR_SITELOCAL(a) \ ((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \ == htonl (0xfec00000)) #define IN6_IS_ADDR_V4MAPPED(a) \ ((((__const uint32_t *) (a))[0] == 0) \ && (((__const uint32_t *) (a))[1] == 0) \ && (((__const uint32_t *) (a))[2] == htonl (0xffff))) #define IN6_IS_ADDR_V4COMPAT(a) \ ((((__const uint32_t *) (a))[0] == 0) \ && (((__const uint32_t *) (a))[1] == 0) \ && (((__const uint32_t *) (a))[2] == 0) \ && (ntohl (((__const uint32_t *) (a))[3]) > 1)) #define IN6_ARE_ADDR_EQUAL(a,b) \ ((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0]) \ && (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1]) \ && (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \ && (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3])) /* Bind socket to a privileged IP port. */ extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __THROW; /* The IPv6 version of this function. */ extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in) __THROW; #define IN6_IS_ADDR_MC_NODELOCAL(a) \ (IN6_IS_ADDR_MULTICAST(a) \ && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1)) #define IN6_IS_ADDR_MC_LINKLOCAL(a) \ (IN6_IS_ADDR_MULTICAST(a) \ && ((((__const uint8_t *) (a))[1] & 0xf) == 0x2)) #define IN6_IS_ADDR_MC_SITELOCAL(a) \ (IN6_IS_ADDR_MULTICAST(a) \ && ((((__const uint8_t *) (a))[1] & 0xf) == 0x5)) #define IN6_IS_ADDR_MC_ORGLOCAL(a) \ (IN6_IS_ADDR_MULTICAST(a) \ && ((((__const uint8_t *) (a))[1] & 0xf) == 0x8)) #define IN6_IS_ADDR_MC_GLOBAL(a) \ (IN6_IS_ADDR_MULTICAST(a) \ && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe)) /* IPv6 packet information. */ struct in6_pktinfo { struct in6_addr ipi6_addr; /* src/dst IPv6 address */ unsigned int ipi6_ifindex; /* send/recv interface index */ }; #ifdef __USE_GNU /* Hop-by-Hop and Destination Options Processing. */ extern int inet6_option_space (int __nbytes) __THROW; extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp, int __type) __THROW; extern int inet6_option_append (struct cmsghdr *__cmsg, __const uint8_t *__typep, int __multx, int __plusy) __THROW; extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen, int __multx, int __plusy) __THROW; extern int inet6_option_next (__const struct cmsghdr *__cmsg, uint8_t **__tptrp) __THROW; extern int inet6_option_find (__const struct cmsghdr *__cmsg, uint8_t **__tptrp, int __type) __THROW; /* Multicast source filter support. */ /* Get IPv4 source filter. */ extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr, struct in_addr __group, uint32_t *__fmode, uint32_t *__numsrc, struct in_addr *__slist) __THROW; /* Set IPv4 source filter. */ extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr, struct in_addr __group, uint32_t __fmode, uint32_t __numsrc, __const struct in_addr *__slist) __THROW; /* Get source filter. */ extern int getsourcefilter (int __s, uint32_t __interface_addr, __const struct sockaddr *__group, socklen_t __grouplen, uint32_t *__fmode, uint32_t *__numsrc, struct sockaddr_storage *__slist) __THROW; /* Set source filter. */ extern int setsourcefilter (int __s, uint32_t __interface_addr, __const struct sockaddr *__group, socklen_t __grouplen, uint32_t __fmode, uint32_t __numsrc, __const struct sockaddr_storage *__slist) __THROW; #endif /* use GNU */ __END_DECLS #endif /* netinet/in.h */ Convert-Binary-C-0.76/tests/include/include/xlocale.h0000644000175000001440000000322411550664627021230 0ustar mhxusers/* Definition of locale datatype. Copyright (C) 1997,2000,02 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1997. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _XLOCALE_H #define _XLOCALE_H 1 /* Structure for reentrant locale using functions. This is an (almost) opaque type for the user level programs. The file and this data structure is not standardized. Don't rely on it. It can go away without warning. */ typedef struct __locale_struct { /* Note: LC_ALL is not a valid index into this array. */ struct locale_data *__locales[13]; /* 13 = __LC_LAST. */ /* To increase the speed of this solution we add some special members. */ const unsigned short int *__ctype_b; const int *__ctype_tolower; const int *__ctype_toupper; /* Note: LC_ALL is not a valid index into this array. */ const char *__names[13]; } *__locale_t; #endif /* xlocale.h */ Convert-Binary-C-0.76/tests/include/include/math.h0000644000175000001440000003656011550664626020542 0ustar mhxusers/* Declarations for math functions. Copyright (C) 1991-1993, 1995-1999, 2001, 2002, 2004, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.12 Mathematics */ #ifndef _MATH_H #define _MATH_H 1 #include __BEGIN_DECLS /* Get machine-dependent HUGE_VAL value (returned on overflow). On all IEEE754 machines, this is +Infinity. */ #include #ifdef __USE_ISOC99 # include # include /* Get machine-dependent INFINITY value. */ # include /* Get machine-dependent NAN value (returned for some domain errors). */ # include #endif /* __USE_ISOC99 */ /* Get general and ISO C99 specific information. */ #include /* The file contains the prototypes for all the actual math functions. These macros are used for those prototypes, so we can easily declare each function as both `name' and `__name', and can declare the float versions `namef' and `__namef'. */ #define __MATHCALL(function,suffix, args) \ __MATHDECL (_Mdouble_,function,suffix, args) #define __MATHDECL(type, function,suffix, args) \ __MATHDECL_1(type, function,suffix, args); \ __MATHDECL_1(type, __CONCAT(__,function),suffix, args) #define __MATHCALLX(function,suffix, args, attrib) \ __MATHDECLX (_Mdouble_,function,suffix, args, attrib) #define __MATHDECLX(type, function,suffix, args, attrib) \ __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); \ __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib) #define __MATHDECL_1(type, function,suffix, args) \ extern type __MATH_PRECNAME(function,suffix) args __THROW #define _Mdouble_ double #define __MATH_PRECNAME(name,r) __CONCAT(name,r) # define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_STD # define _Mdouble_END_NAMESPACE __END_NAMESPACE_STD #include #undef _Mdouble_ #undef _Mdouble_BEGIN_NAMESPACE #undef _Mdouble_END_NAMESPACE #undef __MATH_PRECNAME #if defined __USE_MISC || defined __USE_ISOC99 /* Include the file of declarations again, this time using `float' instead of `double' and appending f to each function name. */ # ifndef _Mfloat_ # define _Mfloat_ float # endif # define _Mdouble_ _Mfloat_ # ifdef __STDC__ # define __MATH_PRECNAME(name,r) name##f##r # else # define __MATH_PRECNAME(name,r) name/**/f/**/r # endif # define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99 # define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99 # include # undef _Mdouble_ # undef _Mdouble_BEGIN_NAMESPACE # undef _Mdouble_END_NAMESPACE # undef __MATH_PRECNAME # if (__STDC__ - 0 || __GNUC__ - 0) \ && (!defined __NO_LONG_DOUBLE_MATH || defined __LDBL_COMPAT) # ifdef __LDBL_COMPAT # ifdef __USE_ISOC99 extern float __nldbl_nexttowardf (float __x, long double __y) __THROW __attribute__ ((__const__)); # ifdef __REDIRECT_NTH extern float __REDIRECT_NTH (nexttowardf, (float __x, long double __y), __nldbl_nexttowardf) __attribute__ ((__const__)); extern double __REDIRECT_NTH (nexttoward, (double __x, long double __y), nextafter) __attribute__ ((__const__)); extern long double __REDIRECT_NTH (nexttowardl, (long double __x, long double __y), nextafter) __attribute__ ((__const__)); # endif # endif /* Include the file of declarations again, this time using `long double' instead of `double' and appending l to each function name. */ # undef __MATHDECL_1 # define __MATHDECL_2(type, function,suffix, args, alias) \ extern type __REDIRECT_NTH(__MATH_PRECNAME(function,suffix), \ args, alias) # define __MATHDECL_1(type, function,suffix, args) \ __MATHDECL_2(type, function,suffix, args, __CONCAT(function,suffix)) # endif # ifndef _Mlong_double_ # define _Mlong_double_ long double # endif # define _Mdouble_ _Mlong_double_ # ifdef __STDC__ # define __MATH_PRECNAME(name,r) name##l##r # else # define __MATH_PRECNAME(name,r) name/**/l/**/r # endif # define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99 # define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99 # include # undef _Mdouble_ # undef _Mdouble_BEGIN_NAMESPACE # undef _Mdouble_END_NAMESPACE # undef __MATH_PRECNAME # endif /* __STDC__ || __GNUC__ */ #endif /* Use misc or ISO C99. */ #undef __MATHDECL_1 #undef __MATHDECL #undef __MATHCALL #if defined __USE_MISC || defined __USE_XOPEN /* This variable is used by `gamma' and `lgamma'. */ extern int signgam; #endif /* ISO C99 defines some generic macros which work on any data type. */ #ifdef __USE_ISOC99 /* Get the architecture specific values describing the floating-point evaluation. The following symbols will get defined: float_t floating-point type at least as wide as `float' used to evaluate `float' expressions double_t floating-point type at least as wide as `double' used to evaluate `double' expressions FLT_EVAL_METHOD Defined to 0 if `float_t' is `float' and `double_t' is `double' 1 if `float_t' and `double_t' are `double' 2 if `float_t' and `double_t' are `long double' else `float_t' and `double_t' are unspecified INFINITY representation of the infinity value of type `float' FP_FAST_FMA FP_FAST_FMAF FP_FAST_FMAL If defined it indicates that the `fma' function generally executes about as fast as a multiply and an add. This macro is defined only iff the `fma' function is implemented directly with a hardware multiply-add instructions. FP_ILOGB0 Expands to a value returned by `ilogb (0.0)'. FP_ILOGBNAN Expands to a value returned by `ilogb (NAN)'. DECIMAL_DIG Number of decimal digits supported by conversion between decimal and all internal floating-point formats. */ /* All floating-point numbers can be put in one of these categories. */ enum { FP_NAN, # define FP_NAN FP_NAN FP_INFINITE, # define FP_INFINITE FP_INFINITE FP_ZERO, # define FP_ZERO FP_ZERO FP_SUBNORMAL, # define FP_SUBNORMAL FP_SUBNORMAL FP_NORMAL # define FP_NORMAL FP_NORMAL }; /* Return number of classification appropriate for X. */ # ifdef __NO_LONG_DOUBLE_MATH # define fpclassify(x) \ (sizeof (x) == sizeof (float) ? __fpclassifyf (x) : __fpclassify (x)) # else # define fpclassify(x) \ (sizeof (x) == sizeof (float) \ ? __fpclassifyf (x) \ : sizeof (x) == sizeof (double) \ ? __fpclassify (x) : __fpclassifyl (x)) # endif /* Return nonzero value if sign of X is negative. */ # ifdef __NO_LONG_DOUBLE_MATH # define signbit(x) \ (sizeof (x) == sizeof (float) ? __signbitf (x) : __signbit (x)) # else # define signbit(x) \ (sizeof (x) == sizeof (float) \ ? __signbitf (x) \ : sizeof (x) == sizeof (double) \ ? __signbit (x) : __signbitl (x)) # endif /* Return nonzero value if X is not +-Inf or NaN. */ # ifdef __NO_LONG_DOUBLE_MATH # define isfinite(x) \ (sizeof (x) == sizeof (float) ? __finitef (x) : __finite (x)) # else # define isfinite(x) \ (sizeof (x) == sizeof (float) \ ? __finitef (x) \ : sizeof (x) == sizeof (double) \ ? __finite (x) : __finitel (x)) # endif /* Return nonzero value if X is neither zero, subnormal, Inf, nor NaN. */ # define isnormal(x) (fpclassify (x) == FP_NORMAL) /* Return nonzero value if X is a NaN. We could use `fpclassify' but we already have this functions `__isnan' and it is faster. */ # ifdef __NO_LONG_DOUBLE_MATH # define isnan(x) \ (sizeof (x) == sizeof (float) ? __isnanf (x) : __isnan (x)) # else # define isnan(x) \ (sizeof (x) == sizeof (float) \ ? __isnanf (x) \ : sizeof (x) == sizeof (double) \ ? __isnan (x) : __isnanl (x)) # endif /* Return nonzero value is X is positive or negative infinity. */ # ifdef __NO_LONG_DOUBLE_MATH # define isinf(x) \ (sizeof (x) == sizeof (float) ? __isinff (x) : __isinf (x)) # else # define isinf(x) \ (sizeof (x) == sizeof (float) \ ? __isinff (x) \ : sizeof (x) == sizeof (double) \ ? __isinf (x) : __isinfl (x)) # endif /* Bitmasks for the math_errhandling macro. */ # define MATH_ERRNO 1 /* errno set by math functions. */ # define MATH_ERREXCEPT 2 /* Exceptions raised by math functions. */ #endif /* Use ISO C99. */ #ifdef __USE_MISC /* Support for various different standard error handling behaviors. */ typedef enum { _IEEE_ = -1, /* According to IEEE 754/IEEE 854. */ _SVID_, /* According to System V, release 4. */ _XOPEN_, /* Nowadays also Unix98. */ _POSIX_, _ISOC_ /* Actually this is ISO C99. */ } _LIB_VERSION_TYPE; /* This variable can be changed at run-time to any of the values above to affect floating point error handling behavior (it may also be necessary to change the hardware FPU exception settings). */ extern _LIB_VERSION_TYPE _LIB_VERSION; #endif #ifdef __USE_SVID /* In SVID error handling, `matherr' is called with this description of the exceptional condition. We have a problem when using C++ since `exception' is a reserved name in C++. */ # ifdef __cplusplus struct __exception # else struct exception # endif { int type; char *name; double arg1; double arg2; double retval; }; # ifdef __cplusplus extern int matherr (struct __exception *__exc) throw (); # else extern int matherr (struct exception *__exc); # endif # define X_TLOSS 1.41484755040568800000e+16 /* Types of exceptions in the `type' field. */ # define DOMAIN 1 # define SING 2 # define OVERFLOW 3 # define UNDERFLOW 4 # define TLOSS 5 # define PLOSS 6 /* SVID mode specifies returning this large value instead of infinity. */ # define HUGE 3.40282347e+38F #else /* !SVID */ # ifdef __USE_XOPEN /* X/Open wants another strange constant. */ # define MAXFLOAT 3.40282347e+38F # endif #endif /* SVID */ /* Some useful constants. */ #if defined __USE_BSD || defined __USE_XOPEN # define M_E 2.7182818284590452354 /* e */ # define M_LOG2E 1.4426950408889634074 /* log_2 e */ # define M_LOG10E 0.43429448190325182765 /* log_10 e */ # define M_LN2 0.69314718055994530942 /* log_e 2 */ # define M_LN10 2.30258509299404568402 /* log_e 10 */ # define M_PI 3.14159265358979323846 /* pi */ # define M_PI_2 1.57079632679489661923 /* pi/2 */ # define M_PI_4 0.78539816339744830962 /* pi/4 */ # define M_1_PI 0.31830988618379067154 /* 1/pi */ # define M_2_PI 0.63661977236758134308 /* 2/pi */ # define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ # define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ # define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ #endif /* The above constants are not adequate for computation using `long double's. Therefore we provide as an extension constants with similar names as a GNU extension. Provide enough digits for the 128-bit IEEE quad. */ #ifdef __USE_GNU # define M_El 2.7182818284590452353602874713526625L /* e */ # define M_LOG2El 1.4426950408889634073599246810018921L /* log_2 e */ # define M_LOG10El 0.4342944819032518276511289189166051L /* log_10 e */ # define M_LN2l 0.6931471805599453094172321214581766L /* log_e 2 */ # define M_LN10l 2.3025850929940456840179914546843642L /* log_e 10 */ # define M_PIl 3.1415926535897932384626433832795029L /* pi */ # define M_PI_2l 1.5707963267948966192313216916397514L /* pi/2 */ # define M_PI_4l 0.7853981633974483096156608458198757L /* pi/4 */ # define M_1_PIl 0.3183098861837906715377675267450287L /* 1/pi */ # define M_2_PIl 0.6366197723675813430755350534900574L /* 2/pi */ # define M_2_SQRTPIl 1.1283791670955125738961589031215452L /* 2/sqrt(pi) */ # define M_SQRT2l 1.4142135623730950488016887242096981L /* sqrt(2) */ # define M_SQRT1_2l 0.7071067811865475244008443621048490L /* 1/sqrt(2) */ #endif /* When compiling in strict ISO C compatible mode we must not use the inline functions since they, among other things, do not set the `errno' variable correctly. */ #if defined __STRICT_ANSI__ && !defined __NO_MATH_INLINES # define __NO_MATH_INLINES 1 #endif #if defined __USE_ISOC99 && __GNUC_PREREQ(2,97) /* ISO C99 defines some macros to compare number while taking care for unordered numbers. Many FPUs provide special instructions to support these operations. Generic support in GCC for these as builtins went in before 3.0.0, but not all cpus added their patterns. We define versions that use the builtins here, and will undef/redefine as appropriate for the specific GCC version in use. */ # define isgreater(x, y) __builtin_isgreater(x, y) # define isgreaterequal(x, y) __builtin_isgreaterequal(x, y) # define isless(x, y) __builtin_isless(x, y) # define islessequal(x, y) __builtin_islessequal(x, y) # define islessgreater(x, y) __builtin_islessgreater(x, y) # define isunordered(u, v) __builtin_isunordered(u, v) #endif /* Get machine-dependent inline versions (if there are any). */ #ifdef __USE_EXTERN_INLINES # include #endif #ifdef __USE_ISOC99 /* If we've still got undefined comparison macros, provide defaults. */ /* Return nonzero value if X is greater than Y. */ # ifndef isgreater # define isgreater(x, y) \ (__extension__ \ ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered (__x, __y) && __x > __y; })) # endif /* Return nonzero value if X is greater than or equal to Y. */ # ifndef isgreaterequal # define isgreaterequal(x, y) \ (__extension__ \ ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered (__x, __y) && __x >= __y; })) # endif /* Return nonzero value if X is less than Y. */ # ifndef isless # define isless(x, y) \ (__extension__ \ ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered (__x, __y) && __x < __y; })) # endif /* Return nonzero value if X is less than or equal to Y. */ # ifndef islessequal # define islessequal(x, y) \ (__extension__ \ ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered (__x, __y) && __x <= __y; })) # endif /* Return nonzero value if either X is less than Y or Y is less than X. */ # ifndef islessgreater # define islessgreater(x, y) \ (__extension__ \ ({ __typeof__(x) __x = (x); __typeof__(y) __y = (y); \ !isunordered (__x, __y) && (__x < __y || __y < __x); })) # endif /* Return nonzero value if arguments are unordered. */ # ifndef isunordered # define isunordered(u, v) \ (__extension__ \ ({ __typeof__(u) __u = (u); __typeof__(v) __v = (v); \ fpclassify (__u) == FP_NAN || fpclassify (__v) == FP_NAN; })) # endif #endif __END_DECLS #endif /* math.h */ Convert-Binary-C-0.76/tests/include/include/time.h0000644000175000001440000003231711550664627020544 0ustar mhxusers/* Copyright (C) 1991-1999,2000,2001,2002,2003,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.23 Date and time */ #ifndef _TIME_H #if (! defined __need_time_t && !defined __need_clock_t && \ ! defined __need_timespec) # define _TIME_H 1 # include __BEGIN_DECLS #endif #ifdef _TIME_H /* Get size_t and NULL from . */ # define __need_size_t # define __need_NULL # include /* This defines CLOCKS_PER_SEC, which is the number of processor clock ticks per second. */ # include /* This is the obsolete POSIX.1-1988 name for the same constant. */ # if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K # ifndef CLK_TCK # define CLK_TCK CLOCKS_PER_SEC # endif # endif #endif /* included. */ #if !defined __clock_t_defined && (defined _TIME_H || defined __need_clock_t) # define __clock_t_defined 1 # include __BEGIN_NAMESPACE_STD /* Returned by `clock'. */ typedef __clock_t clock_t; __END_NAMESPACE_STD #if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC __USING_NAMESPACE_STD(clock_t) #endif #endif /* clock_t not defined and or need clock_t. */ #undef __need_clock_t #if !defined __time_t_defined && (defined _TIME_H || defined __need_time_t) # define __time_t_defined 1 # include __BEGIN_NAMESPACE_STD /* Returned by `time'. */ typedef __time_t time_t; __END_NAMESPACE_STD #if defined __USE_POSIX || defined __USE_MISC || defined __USE_SVID __USING_NAMESPACE_STD(time_t) #endif #endif /* time_t not defined and or need time_t. */ #undef __need_time_t #if !defined __clockid_t_defined && \ ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_clockid_t) # define __clockid_t_defined 1 # include /* Clock ID used in clock and timer functions. */ typedef __clockid_t clockid_t; #endif /* clockid_t not defined and or need clockid_t. */ #undef __clockid_time_t #if !defined __timer_t_defined && \ ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t) # define __timer_t_defined 1 # include /* Timer ID returned by `timer_create'. */ typedef __timer_t timer_t; #endif /* timer_t not defined and or need timer_t. */ #undef __need_timer_t #if !defined __timespec_defined && \ ((defined _TIME_H && \ (defined __USE_POSIX199309 || defined __USE_MISC)) || \ defined __need_timespec) # define __timespec_defined 1 # include /* This defines __time_t for us. */ /* POSIX.1b structure for a time value. This is like a `struct timeval' but has nanoseconds instead of microseconds. */ struct timespec { __time_t tv_sec; /* Seconds. */ long int tv_nsec; /* Nanoseconds. */ }; #endif /* timespec not defined and or need timespec. */ #undef __need_timespec #ifdef _TIME_H __BEGIN_NAMESPACE_STD /* Used by other time functions. */ struct tm { int tm_sec; /* Seconds. [0-60] (1 leap second) */ int tm_min; /* Minutes. [0-59] */ int tm_hour; /* Hours. [0-23] */ int tm_mday; /* Day. [1-31] */ int tm_mon; /* Month. [0-11] */ int tm_year; /* Year - 1900. */ int tm_wday; /* Day of week. [0-6] */ int tm_yday; /* Days in year.[0-365] */ int tm_isdst; /* DST. [-1/0/1]*/ #ifdef __USE_BSD long int tm_gmtoff; /* Seconds east of UTC. */ __const char *tm_zone; /* Timezone abbreviation. */ #else long int __tm_gmtoff; /* Seconds east of UTC. */ __const char *__tm_zone; /* Timezone abbreviation. */ #endif }; __END_NAMESPACE_STD #if defined __USE_XOPEN || defined __USE_POSIX || defined __USE_MISC __USING_NAMESPACE_STD(tm) #endif #ifdef __USE_POSIX199309 /* POSIX.1b structure for timer start values and intervals. */ struct itimerspec { struct timespec it_interval; struct timespec it_value; }; /* We can use a simple forward declaration. */ struct sigevent; #endif /* POSIX.1b */ #ifdef __USE_XOPEN2K # ifndef __pid_t_defined typedef __pid_t pid_t; # define __pid_t_defined # endif #endif __BEGIN_NAMESPACE_STD /* Time used by the program so far (user time + system time). The result / CLOCKS_PER_SECOND is program time in seconds. */ extern clock_t clock (void) __THROW; /* Return the current time and put it in *TIMER if TIMER is not NULL. */ extern time_t time (time_t *__timer) __THROW; /* Return the difference between TIME1 and TIME0. */ extern double difftime (time_t __time1, time_t __time0) __THROW __attribute__ ((__const__)); /* Return the `time_t' representation of TP and normalize TP. */ extern time_t mktime (struct tm *__tp) __THROW; /* Format TP into S according to FORMAT. Write no more than MAXSIZE characters and return the number of characters written, or 0 if it would exceed MAXSIZE. */ extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) __THROW; __END_NAMESPACE_STD # ifdef __USE_XOPEN /* Parse S according to FORMAT and store binary time information in TP. The return value is a pointer to the first unparsed character in S. */ extern char *strptime (__const char *__restrict __s, __const char *__restrict __fmt, struct tm *__tp) __THROW; # endif # ifdef __USE_GNU /* Similar to the two functions above but take the information from the provided locale and not the global locale. */ # include extern size_t strftime_l (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp, __locale_t __loc) __THROW; extern char *strptime_l (__const char *__restrict __s, __const char *__restrict __fmt, struct tm *__tp, __locale_t __loc) __THROW; # endif __BEGIN_NAMESPACE_STD /* Return the `struct tm' representation of *TIMER in Universal Coordinated Time (aka Greenwich Mean Time). */ extern struct tm *gmtime (__const time_t *__timer) __THROW; /* Return the `struct tm' representation of *TIMER in the local timezone. */ extern struct tm *localtime (__const time_t *__timer) __THROW; __END_NAMESPACE_STD # if defined __USE_POSIX || defined __USE_MISC /* Return the `struct tm' representation of *TIMER in UTC, using *TP to store the result. */ extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) __THROW; /* Return the `struct tm' representation of *TIMER in local time, using *TP to store the result. */ extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) __THROW; # endif /* POSIX or misc */ __BEGIN_NAMESPACE_STD /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n" that is the representation of TP in this format. */ extern char *asctime (__const struct tm *__tp) __THROW; /* Equivalent to `asctime (localtime (timer))'. */ extern char *ctime (__const time_t *__timer) __THROW; __END_NAMESPACE_STD # if defined __USE_POSIX || defined __USE_MISC /* Reentrant versions of the above functions. */ /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n" that is the representation of TP in this format. */ extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) __THROW; /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */ extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) __THROW; # endif /* POSIX or misc */ /* Defined in localtime.c. */ extern char *__tzname[2]; /* Current timezone names. */ extern int __daylight; /* If daylight-saving time is ever in use. */ extern long int __timezone; /* Seconds west of UTC. */ # ifdef __USE_POSIX /* Same as above. */ extern char *tzname[2]; /* Set time conversion information from the TZ environment variable. If TZ is not defined, a locale-dependent default is used. */ extern void tzset (void) __THROW; # endif # if defined __USE_SVID || defined __USE_XOPEN extern int daylight; extern long int timezone; # endif # ifdef __USE_SVID /* Set the system time to *WHEN. This call is restricted to the superuser. */ extern int stime (__const time_t *__when) __THROW; # endif /* Nonzero if YEAR is a leap year (every 4 years, except every 100th isn't, and every 400th is). */ # define __isleap(year) \ ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) # ifdef __USE_MISC /* Miscellaneous functions many Unices inherited from the public domain localtime package. These are included only for compatibility. */ /* Like `mktime', but for TP represents Universal Time, not local time. */ extern time_t timegm (struct tm *__tp) __THROW; /* Another name for `mktime'. */ extern time_t timelocal (struct tm *__tp) __THROW; /* Return the number of days in YEAR. */ extern int dysize (int __year) __THROW __attribute__ ((__const__)); # endif # ifdef __USE_POSIX199309 /* Pause execution for a number of nanoseconds. This function is a cancellation point and therefore not marked with __THROW. */ extern int nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining); /* Get resolution of clock CLOCK_ID. */ extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW; /* Get current value of clock CLOCK_ID and store it in TP. */ extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW; /* Set clock CLOCK_ID to value TP. */ extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) __THROW; # ifdef __USE_XOPEN2K /* High-resolution sleep with the specified clock. This function is a cancellation point and therefore not marked with __THROW. */ extern int clock_nanosleep (clockid_t __clock_id, int __flags, __const struct timespec *__req, struct timespec *__rem); /* Return clock ID for CPU-time clock. */ extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW; # endif /* Create new per-process timer using CLOCK_ID. */ extern int timer_create (clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t *__restrict __timerid) __THROW; /* Delete timer TIMERID. */ extern int timer_delete (timer_t __timerid) __THROW; /* Set timer TIMERID to VALUE, returning old value in OVLAUE. */ extern int timer_settime (timer_t __timerid, int __flags, __const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) __THROW; /* Get current value of timer TIMERID and store it in VLAUE. */ extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) __THROW; /* Get expiration overrun for timer TIMERID. */ extern int timer_getoverrun (timer_t __timerid) __THROW; # endif # ifdef __USE_XOPEN_EXTENDED /* Set to one of the following values to indicate an error. 1 the DATEMSK environment variable is null or undefined, 2 the template file cannot be opened for reading, 3 failed to get file status information, 4 the template file is not a regular file, 5 an error is encountered while reading the template file, 6 memory allication failed (not enough memory available), 7 there is no line in the template that matches the input, 8 invalid input specification Example: February 31 or a time is specified that can not be represented in a time_t (representing the time in seconds since 00:00:00 UTC, January 1, 1970) */ extern int getdate_err; /* Parse the given string as a date specification and return a value representing the value. The templates from the file identified by the environment variable DATEMSK are used. In case of an error `getdate_err' is set. This function is a possible cancellation points and therefore not marked with __THROW. */ extern struct tm *getdate (__const char *__string); # endif # ifdef __USE_GNU /* Since `getdate' is not reentrant because of the use of `getdate_err' and the static buffer to return the result in, we provide a thread-safe variant. The functionality is the same. The result is returned in the buffer pointed to by RESBUFP and in case of an error the return value is != 0 with the same values as given above for `getdate_err'. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int getdate_r (__const char *__restrict __string, struct tm *__restrict __resbufp); # endif __END_DECLS #endif /* included. */ #endif /* not already included. */ Convert-Binary-C-0.76/tests/include/include/locale.h0000644000175000001440000001756411550664626021053 0ustar mhxusers/* Copyright (C) 1991,92,95-99,2000,01,02 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.11 Localization */ #ifndef _LOCALE_H #define _LOCALE_H 1 #include #define __need_NULL #include #include __BEGIN_DECLS /* These are the possibilities for the first argument to setlocale. The code assumes that the lowest LC_* symbol has the value zero. */ #define LC_CTYPE __LC_CTYPE #define LC_NUMERIC __LC_NUMERIC #define LC_TIME __LC_TIME #define LC_COLLATE __LC_COLLATE #define LC_MONETARY __LC_MONETARY #define LC_MESSAGES __LC_MESSAGES #define LC_ALL __LC_ALL #define LC_PAPER __LC_PAPER #define LC_NAME __LC_NAME #define LC_ADDRESS __LC_ADDRESS #define LC_TELEPHONE __LC_TELEPHONE #define LC_MEASUREMENT __LC_MEASUREMENT #define LC_IDENTIFICATION __LC_IDENTIFICATION /* Structure giving information about numeric and monetary notation. */ struct lconv { /* Numeric (non-monetary) information. */ char *decimal_point; /* Decimal point character. */ char *thousands_sep; /* Thousands separator. */ /* Each element is the number of digits in each group; elements with higher indices are farther left. An element with value CHAR_MAX means that no further grouping is done. An element with value 0 means that the previous element is used for all groups farther left. */ char *grouping; /* Monetary information. */ /* First three chars are a currency symbol from ISO 4217. Fourth char is the separator. Fifth char is '\0'. */ char *int_curr_symbol; char *currency_symbol; /* Local currency symbol. */ char *mon_decimal_point; /* Decimal point character. */ char *mon_thousands_sep; /* Thousands separator. */ char *mon_grouping; /* Like `grouping' element (above). */ char *positive_sign; /* Sign for positive values. */ char *negative_sign; /* Sign for negative values. */ char int_frac_digits; /* Int'l fractional digits. */ char frac_digits; /* Local fractional digits. */ /* 1 if currency_symbol precedes a positive value, 0 if succeeds. */ char p_cs_precedes; /* 1 iff a space separates currency_symbol from a positive value. */ char p_sep_by_space; /* 1 if currency_symbol precedes a negative value, 0 if succeeds. */ char n_cs_precedes; /* 1 iff a space separates currency_symbol from a negative value. */ char n_sep_by_space; /* Positive and negative sign positions: 0 Parentheses surround the quantity and currency_symbol. 1 The sign string precedes the quantity and currency_symbol. 2 The sign string follows the quantity and currency_symbol. 3 The sign string immediately precedes the currency_symbol. 4 The sign string immediately follows the currency_symbol. */ char p_sign_posn; char n_sign_posn; #ifdef __USE_ISOC99 /* 1 if int_curr_symbol precedes a positive value, 0 if succeeds. */ char int_p_cs_precedes; /* 1 iff a space separates int_curr_symbol from a positive value. */ char int_p_sep_by_space; /* 1 if int_curr_symbol precedes a negative value, 0 if succeeds. */ char int_n_cs_precedes; /* 1 iff a space separates int_curr_symbol from a negative value. */ char int_n_sep_by_space; /* Positive and negative sign positions: 0 Parentheses surround the quantity and int_curr_symbol. 1 The sign string precedes the quantity and int_curr_symbol. 2 The sign string follows the quantity and int_curr_symbol. 3 The sign string immediately precedes the int_curr_symbol. 4 The sign string immediately follows the int_curr_symbol. */ char int_p_sign_posn; char int_n_sign_posn; #else char __int_p_cs_precedes; char __int_p_sep_by_space; char __int_n_cs_precedes; char __int_n_sep_by_space; char __int_p_sign_posn; char __int_n_sign_posn; #endif }; __BEGIN_NAMESPACE_STD /* Set and/or return the current locale. */ extern char *setlocale (int __category, __const char *__locale) __THROW; /* Return the numeric/monetary information for the current locale. */ extern struct lconv *localeconv (void) __THROW; __END_NAMESPACE_STD #ifdef __USE_GNU /* The concept of one static locale per category is not very well thought out. Many applications will need to process its data using information from several different locales. Another application is the implementation of the internationalization handling in the upcoming ISO C++ standard library. To support this another set of the functions using locale data exist which have an additional argument. Attention: all these functions are *not* standardized in any form. This is a proof-of-concept implementation. */ /* Get locale datatype definition. */ # include typedef __locale_t locale_t; /* Return a reference to a data structure representing a set of locale datasets. Unlike for the CATEGORY parameter for `setlocale' the CATEGORY_MASK parameter here uses a single bit for each category, made by OR'ing together LC_*_MASK bits above. */ extern __locale_t newlocale (int __category_mask, __const char *__locale, __locale_t __base) __THROW; /* These are the bits that can be set in the CATEGORY_MASK argument to `newlocale'. In the GNU implementation, LC_FOO_MASK has the value of (1 << LC_FOO), but this is not a part of the interface that callers can assume will be true. */ # define LC_CTYPE_MASK (1 << __LC_CTYPE) # define LC_NUMERIC_MASK (1 << __LC_NUMERIC) # define LC_TIME_MASK (1 << __LC_TIME) # define LC_COLLATE_MASK (1 << __LC_COLLATE) # define LC_MONETARY_MASK (1 << __LC_MONETARY) # define LC_MESSAGES_MASK (1 << __LC_MESSAGES) # define LC_PAPER_MASK (1 << __LC_PAPER) # define LC_NAME_MASK (1 << __LC_NAME) # define LC_ADDRESS_MASK (1 << __LC_ADDRESS) # define LC_TELEPHONE_MASK (1 << __LC_TELEPHONE) # define LC_MEASUREMENT_MASK (1 << __LC_MEASUREMENT) # define LC_IDENTIFICATION_MASK (1 << __LC_IDENTIFICATION) # define LC_ALL_MASK (LC_CTYPE_MASK \ | LC_NUMERIC_MASK \ | LC_TIME_MASK \ | LC_COLLATE_MASK \ | LC_MONETARY_MASK \ | LC_MESSAGES_MASK \ | LC_PAPER_MASK \ | LC_NAME_MASK \ | LC_ADDRESS_MASK \ | LC_TELEPHONE_MASK \ | LC_MEASUREMENT_MASK \ | LC_IDENTIFICATION_MASK \ ) /* Return a duplicate of the set of locale in DATASET. All usage counters are increased if necessary. */ extern __locale_t duplocale (__locale_t __dataset) __THROW; /* Free the data associated with a locale dataset previously returned by a call to `setlocale_r'. */ extern void freelocale (__locale_t __dataset) __THROW; /* Switch the current thread's locale to DATASET. If DATASET is null, instead just return the current setting. The special value LC_GLOBAL_LOCALE is the initial setting for all threads and can also be installed any time, meaning the thread uses the global settings controlled by `setlocale'. */ extern __locale_t uselocale (__locale_t __dataset) __THROW; /* This value can be passed to `uselocale' and may be returned by it. Passing this value to any other function has undefined behavior. */ # define LC_GLOBAL_LOCALE ((__locale_t) -1L) #endif __END_DECLS #endif /* locale.h */ Convert-Binary-C-0.76/tests/include/include/stdint.h0000644000175000001440000002054111550664627021107 0ustar mhxusers/* Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99: 7.18 Integer types */ #ifndef _STDINT_H #define _STDINT_H 1 #include #include #include /* Exact integral types. */ /* Signed. */ /* There is some amount of overlap with as known by inet code */ #ifndef __int8_t_defined # define __int8_t_defined typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; # if __WORDSIZE == 64 typedef long int int64_t; # else __extension__ typedef long long int int64_t; # endif #endif /* Unsigned. */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; #ifndef __uint32_t_defined typedef unsigned int uint32_t; # define __uint32_t_defined #endif #if __WORDSIZE == 64 typedef unsigned long int uint64_t; #else __extension__ typedef unsigned long long int uint64_t; #endif /* Small types. */ /* Signed. */ typedef signed char int_least8_t; typedef short int int_least16_t; typedef int int_least32_t; #if __WORDSIZE == 64 typedef long int int_least64_t; #else __extension__ typedef long long int int_least64_t; #endif /* Unsigned. */ typedef unsigned char uint_least8_t; typedef unsigned short int uint_least16_t; typedef unsigned int uint_least32_t; #if __WORDSIZE == 64 typedef unsigned long int uint_least64_t; #else __extension__ typedef unsigned long long int uint_least64_t; #endif /* Fast types. */ /* Signed. */ typedef signed char int_fast8_t; #if __WORDSIZE == 64 typedef long int int_fast16_t; typedef long int int_fast32_t; typedef long int int_fast64_t; #else typedef int int_fast16_t; typedef int int_fast32_t; __extension__ typedef long long int int_fast64_t; #endif /* Unsigned. */ typedef unsigned char uint_fast8_t; #if __WORDSIZE == 64 typedef unsigned long int uint_fast16_t; typedef unsigned long int uint_fast32_t; typedef unsigned long int uint_fast64_t; #else typedef unsigned int uint_fast16_t; typedef unsigned int uint_fast32_t; __extension__ typedef unsigned long long int uint_fast64_t; #endif /* Types for `void *' pointers. */ #if __WORDSIZE == 64 # ifndef __intptr_t_defined typedef long int intptr_t; # define __intptr_t_defined # endif typedef unsigned long int uintptr_t; #else # ifndef __intptr_t_defined typedef int intptr_t; # define __intptr_t_defined # endif typedef unsigned int uintptr_t; #endif /* Largest integral types. */ #if __WORDSIZE == 64 typedef long int intmax_t; typedef unsigned long int uintmax_t; #else __extension__ typedef long long int intmax_t; __extension__ typedef unsigned long long int uintmax_t; #endif /* The ISO C99 standard specifies that in C++ implementations these macros should only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_LIMIT_MACROS # if __WORDSIZE == 64 # define __INT64_C(c) c ## L # define __UINT64_C(c) c ## UL # else # define __INT64_C(c) c ## LL # define __UINT64_C(c) c ## ULL # endif /* Limits of integral types. */ /* Minimum of signed integral types. */ # define INT8_MIN (-128) # define INT16_MIN (-32767-1) # define INT32_MIN (-2147483647-1) # define INT64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of signed integral types. */ # define INT8_MAX (127) # define INT16_MAX (32767) # define INT32_MAX (2147483647) # define INT64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types. */ # define UINT8_MAX (255) # define UINT16_MAX (65535) # define UINT32_MAX (4294967295U) # define UINT64_MAX (__UINT64_C(18446744073709551615)) /* Minimum of signed integral types having a minimum size. */ # define INT_LEAST8_MIN (-128) # define INT_LEAST16_MIN (-32767-1) # define INT_LEAST32_MIN (-2147483647-1) # define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of signed integral types having a minimum size. */ # define INT_LEAST8_MAX (127) # define INT_LEAST16_MAX (32767) # define INT_LEAST32_MAX (2147483647) # define INT_LEAST64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types having a minimum size. */ # define UINT_LEAST8_MAX (255) # define UINT_LEAST16_MAX (65535) # define UINT_LEAST32_MAX (4294967295U) # define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615)) /* Minimum of fast signed integral types having a minimum size. */ # define INT_FAST8_MIN (-128) # if __WORDSIZE == 64 # define INT_FAST16_MIN (-9223372036854775807L-1) # define INT_FAST32_MIN (-9223372036854775807L-1) # else # define INT_FAST16_MIN (-2147483647-1) # define INT_FAST32_MIN (-2147483647-1) # endif # define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of fast signed integral types having a minimum size. */ # define INT_FAST8_MAX (127) # if __WORDSIZE == 64 # define INT_FAST16_MAX (9223372036854775807L) # define INT_FAST32_MAX (9223372036854775807L) # else # define INT_FAST16_MAX (2147483647) # define INT_FAST32_MAX (2147483647) # endif # define INT_FAST64_MAX (__INT64_C(9223372036854775807)) /* Maximum of fast unsigned integral types having a minimum size. */ # define UINT_FAST8_MAX (255) # if __WORDSIZE == 64 # define UINT_FAST16_MAX (18446744073709551615UL) # define UINT_FAST32_MAX (18446744073709551615UL) # else # define UINT_FAST16_MAX (4294967295U) # define UINT_FAST32_MAX (4294967295U) # endif # define UINT_FAST64_MAX (__UINT64_C(18446744073709551615)) /* Values to test for integral types holding `void *' pointer. */ # if __WORDSIZE == 64 # define INTPTR_MIN (-9223372036854775807L-1) # define INTPTR_MAX (9223372036854775807L) # define UINTPTR_MAX (18446744073709551615UL) # else # define INTPTR_MIN (-2147483647-1) # define INTPTR_MAX (2147483647) # define UINTPTR_MAX (4294967295U) # endif /* Minimum for largest signed integral type. */ # define INTMAX_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum for largest signed integral type. */ # define INTMAX_MAX (__INT64_C(9223372036854775807)) /* Maximum for largest unsigned integral type. */ # define UINTMAX_MAX (__UINT64_C(18446744073709551615)) /* Limits of other integer types. */ /* Limits of `ptrdiff_t' type. */ # if __WORDSIZE == 64 # define PTRDIFF_MIN (-9223372036854775807L-1) # define PTRDIFF_MAX (9223372036854775807L) # else # define PTRDIFF_MIN (-2147483647-1) # define PTRDIFF_MAX (2147483647) # endif /* Limits of `sig_atomic_t'. */ # define SIG_ATOMIC_MIN (-2147483647-1) # define SIG_ATOMIC_MAX (2147483647) /* Limit of `size_t' type. */ # if __WORDSIZE == 64 # define SIZE_MAX (18446744073709551615UL) # else # define SIZE_MAX (4294967295U) # endif /* Limits of `wchar_t'. */ # ifndef WCHAR_MIN /* These constants might also be defined in . */ # define WCHAR_MIN __WCHAR_MIN # define WCHAR_MAX __WCHAR_MAX # endif /* Limits of `wint_t'. */ # define WINT_MIN (0u) # define WINT_MAX (4294967295u) #endif /* C++ && limit macros */ /* The ISO C99 standard specifies that in C++ implementations these should only be defined if explicitly requested. */ #if !defined __cplusplus || defined __STDC_CONSTANT_MACROS /* Signed. */ # define INT8_C(c) c # define INT16_C(c) c # define INT32_C(c) c # if __WORDSIZE == 64 # define INT64_C(c) c ## L # else # define INT64_C(c) c ## LL # endif /* Unsigned. */ # define UINT8_C(c) c ## U # define UINT16_C(c) c ## U # define UINT32_C(c) c ## U # if __WORDSIZE == 64 # define UINT64_C(c) c ## UL # else # define UINT64_C(c) c ## ULL # endif /* Maximal type. */ # if __WORDSIZE == 64 # define INTMAX_C(c) c ## L # define UINTMAX_C(c) c ## UL # else # define INTMAX_C(c) c ## LL # define UINTMAX_C(c) c ## ULL # endif #endif /* C++ && constant macros */ #endif /* stdint.h */ Convert-Binary-C-0.76/tests/include/include/stdlib.h0000644000175000001440000010340211550664627021061 0ustar mhxusers/* Copyright (C) 1991-2003,2004,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.20 General utilities */ #ifndef _STDLIB_H #include /* Get size_t, wchar_t and NULL from . */ #define __need_size_t #ifndef __need_malloc_and_calloc # define __need_wchar_t # define __need_NULL #endif #include __BEGIN_DECLS #ifndef __need_malloc_and_calloc #define _STDLIB_H 1 #if defined __USE_XOPEN && !defined _SYS_WAIT_H /* XPG requires a few symbols from being defined. */ # include # include # ifdef __USE_BSD /* Lots of hair to allow traditional BSD use of `union wait' as well as POSIX.1 use of `int' for the status word. */ # if defined __GNUC__ && !defined __cplusplus # define __WAIT_INT(status) \ (__extension__ ({ union { __typeof(status) __in; int __i; } __u; \ __u.__in = (status); __u.__i; })) # else # define __WAIT_INT(status) (*(int *) &(status)) # endif /* This is the type of the argument to `wait'. The funky union causes redeclarations with ether `int *' or `union wait *' to be allowed without complaint. __WAIT_STATUS_DEFN is the type used in the actual function definitions. */ # if !defined __GNUC__ || __GNUC__ < 2 || defined __cplusplus # define __WAIT_STATUS void * # define __WAIT_STATUS_DEFN void * # else /* This works in GCC 2.6.1 and later. */ typedef union { union wait *__uptr; int *__iptr; } __WAIT_STATUS __attribute__ ((__transparent_union__)); # define __WAIT_STATUS_DEFN int * # endif # else /* Don't use BSD. */ # define __WAIT_INT(status) (status) # define __WAIT_STATUS int * # define __WAIT_STATUS_DEFN int * # endif /* Use BSD. */ /* Define the macros also would define this way. */ # define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status)) # define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status)) # define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status)) # define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status)) # define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status)) # define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status)) # ifdef __WIFCONTINUED # define WIFCONTINUED(status) __WIFCONTINUED(__WAIT_INT(status)) # endif #endif /* X/Open and not included. */ __BEGIN_NAMESPACE_STD /* Returned by `div'. */ typedef struct { int quot; /* Quotient. */ int rem; /* Remainder. */ } div_t; /* Returned by `ldiv'. */ #ifndef __ldiv_t_defined typedef struct { long int quot; /* Quotient. */ long int rem; /* Remainder. */ } ldiv_t; # define __ldiv_t_defined 1 #endif __END_NAMESPACE_STD #if defined __USE_ISOC99 && !defined __lldiv_t_defined __BEGIN_NAMESPACE_C99 /* Returned by `lldiv'. */ __extension__ typedef struct { long long int quot; /* Quotient. */ long long int rem; /* Remainder. */ } lldiv_t; # define __lldiv_t_defined 1 __END_NAMESPACE_C99 #endif /* The largest number rand will return (same as INT_MAX). */ #define RAND_MAX 2147483647 /* We define these the same for all machines. Changes from this to the outside world should be done in `_exit'. */ #define EXIT_FAILURE 1 /* Failing exit status. */ #define EXIT_SUCCESS 0 /* Successful exit status. */ /* Maximum length of a multibyte character in the current locale. */ #define MB_CUR_MAX (__ctype_get_mb_cur_max ()) extern size_t __ctype_get_mb_cur_max (void) __THROW __wur; __BEGIN_NAMESPACE_STD /* Convert a string to a floating-point number. */ extern double atof (__const char *__nptr) __THROW __attribute_pure__ __nonnull ((1)) __wur; /* Convert a string to an integer. */ extern int atoi (__const char *__nptr) __THROW __attribute_pure__ __nonnull ((1)) __wur; /* Convert a string to a long integer. */ extern long int atol (__const char *__nptr) __THROW __attribute_pure__ __nonnull ((1)) __wur; __END_NAMESPACE_STD #if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC) __BEGIN_NAMESPACE_C99 /* Convert a string to a long long integer. */ __extension__ extern long long int atoll (__const char *__nptr) __THROW __attribute_pure__ __nonnull ((1)) __wur; __END_NAMESPACE_C99 #endif __BEGIN_NAMESPACE_STD /* Convert a string to a floating-point number. */ extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)) __wur; __END_NAMESPACE_STD #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Likewise for `float' and `long double' sizes of floating-point numbers. */ extern float strtof (__const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)) __wur; extern long double strtold (__const char *__restrict __nptr, char **__restrict __endptr) __THROW __nonnull ((1)) __wur; __END_NAMESPACE_C99 #endif __BEGIN_NAMESPACE_STD /* Convert a string to a long integer. */ extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)) __wur; /* Convert a string to an unsigned long integer. */ extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)) __wur; __END_NAMESPACE_STD #if defined __GLIBC_HAVE_LONG_LONG && defined __USE_BSD /* Convert a string to a quadword integer. */ __extension__ extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)) __wur; /* Convert a string to an unsigned quadword integer. */ __extension__ extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)) __wur; #endif /* GCC and use BSD. */ #if defined __USE_ISOC99 || (defined __GLIBC_HAVE_LONG_LONG && defined __USE_MISC) __BEGIN_NAMESPACE_C99 /* Convert a string to a quadword integer. */ __extension__ extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)) __wur; /* Convert a string to an unsigned quadword integer. */ __extension__ extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) __THROW __nonnull ((1)) __wur; __END_NAMESPACE_C99 #endif /* ISO C99 or GCC and use MISC. */ #ifdef __USE_GNU /* The concept of one static locale per category is not very well thought out. Many applications will need to process its data using information from several different locales. Another application is the implementation of the internationalization handling in the upcoming ISO C++ standard library. To support this another set of the functions using locale data exist which have an additional argument. Attention: all these functions are *not* standardized in any form. This is a proof-of-concept implementation. */ /* Structure for reentrant locale using functions. This is an (almost) opaque type for the user level programs. */ # include /* Special versions of the functions above which take the locale to use as an additional parameter. */ extern long int strtol_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) __THROW __nonnull ((1, 4)) __wur; extern unsigned long int strtoul_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) __THROW __nonnull ((1, 4)) __wur; __extension__ extern long long int strtoll_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) __THROW __nonnull ((1, 4)) __wur; __extension__ extern unsigned long long int strtoull_l (__const char *__restrict __nptr, char **__restrict __endptr, int __base, __locale_t __loc) __THROW __nonnull ((1, 4)) __wur; extern double strtod_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) __THROW __nonnull ((1, 3)) __wur; extern float strtof_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) __THROW __nonnull ((1, 3)) __wur; extern long double strtold_l (__const char *__restrict __nptr, char **__restrict __endptr, __locale_t __loc) __THROW __nonnull ((1, 3)) __wur; #endif /* GNU */ /* The internal entry points for `strtoX' take an extra flag argument saying whether or not to parse locale-dependent number grouping. */ extern double __strtod_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) __THROW __nonnull ((1)) __wur; extern float __strtof_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) __THROW __nonnull ((1)) __wur; extern long double __strtold_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) __THROW __nonnull ((1)) __wur; #ifndef __strtol_internal_defined extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW __nonnull ((1)) __wur; # define __strtol_internal_defined 1 #endif #ifndef __strtoul_internal_defined extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW __nonnull ((1)) __wur; # define __strtoul_internal_defined 1 #endif #if defined __GNUC__ || defined __USE_ISOC99 # ifndef __strtoll_internal_defined __extension__ extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW __nonnull ((1)) __wur; # define __strtoll_internal_defined 1 # endif # ifndef __strtoull_internal_defined __extension__ extern unsigned long long int __strtoull_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group) __THROW __nonnull ((1)) __wur; # define __strtoull_internal_defined 1 # endif #endif /* GCC */ #ifdef __USE_EXTERN_INLINES /* Define inline functions which call the internal entry points. */ __BEGIN_NAMESPACE_STD extern __inline double __NTH (strtod (__const char *__restrict __nptr, char **__restrict __endptr)) { return __strtod_internal (__nptr, __endptr, 0); } extern __inline long int __NTH (strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base)) { return __strtol_internal (__nptr, __endptr, __base, 0); } extern __inline unsigned long int __NTH (strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base)) { return __strtoul_internal (__nptr, __endptr, __base, 0); } __END_NAMESPACE_STD # ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 extern __inline float __NTH (strtof (__const char *__restrict __nptr, char **__restrict __endptr)) { return __strtof_internal (__nptr, __endptr, 0); } # ifndef __LDBL_COMPAT extern __inline long double __NTH (strtold (__const char *__restrict __nptr, char **__restrict __endptr)) { return __strtold_internal (__nptr, __endptr, 0); } # endif __END_NAMESPACE_C99 # endif # ifdef __USE_BSD __extension__ extern __inline long long int __NTH (strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int __NTH (strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base)) { return __strtoull_internal (__nptr, __endptr, __base, 0); } # endif # if defined __USE_MISC || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 __extension__ extern __inline long long int __NTH (strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base)) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int __NTH (strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base)) { return __strtoull_internal (__nptr, __endptr, __base, 0); } __END_NAMESPACE_C99 # endif __BEGIN_NAMESPACE_STD extern __inline double __NTH (atof (__const char *__nptr)) { return strtod (__nptr, (char **) NULL); } extern __inline int __NTH (atoi (__const char *__nptr)) { return (int) strtol (__nptr, (char **) NULL, 10); } extern __inline long int __NTH (atol (__const char *__nptr)) { return strtol (__nptr, (char **) NULL, 10); } __END_NAMESPACE_STD # if defined __USE_MISC || defined __USE_ISOC99 __BEGIN_NAMESPACE_C99 __extension__ extern __inline long long int __NTH (atoll (__const char *__nptr)) { return strtoll (__nptr, (char **) NULL, 10); } __END_NAMESPACE_C99 # endif #endif /* Optimizing and Inlining. */ #if defined __USE_SVID || defined __USE_XOPEN_EXTENDED /* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant digit first. Returns a pointer to static storage overwritten by the next call. */ extern char *l64a (long int __n) __THROW __wur; /* Read a number from a string S in base 64 as above. */ extern long int a64l (__const char *__s) __THROW __attribute_pure__ __nonnull ((1)) __wur; #endif /* Use SVID || extended X/Open. */ #if defined __USE_SVID || defined __USE_XOPEN_EXTENDED || defined __USE_BSD # include /* we need int32_t... */ /* These are the functions that actually do things. The `random', `srandom', `initstate' and `setstate' functions are those from BSD Unices. The `rand' and `srand' functions are required by the ANSI standard. We provide both interfaces to the same random number generator. */ /* Return a random long integer between 0 and RAND_MAX inclusive. */ extern long int random (void) __THROW; /* Seed the random number generator with the given number. */ extern void srandom (unsigned int __seed) __THROW; /* Initialize the random number generator to use state buffer STATEBUF, of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16, 32, 64, 128 and 256, the bigger the better; values less than 8 will cause an error and values greater than 256 will be rounded down. */ extern char *initstate (unsigned int __seed, char *__statebuf, size_t __statelen) __THROW __nonnull ((2)); /* Switch the random number generator to state buffer STATEBUF, which should have been previously initialized by `initstate'. */ extern char *setstate (char *__statebuf) __THROW __nonnull ((1)); # ifdef __USE_MISC /* Reentrant versions of the `random' family of functions. These functions all use the following data structure to contain state, rather than global state variables. */ struct random_data { int32_t *fptr; /* Front pointer. */ int32_t *rptr; /* Rear pointer. */ int32_t *state; /* Array of state values. */ int rand_type; /* Type of random number generator. */ int rand_deg; /* Degree of random number generator. */ int rand_sep; /* Distance between front and rear. */ int32_t *end_ptr; /* Pointer behind state table. */ }; extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) __THROW __nonnull ((1, 2)); extern int srandom_r (unsigned int __seed, struct random_data *__buf) __THROW __nonnull ((2)); extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) __THROW __nonnull ((2, 4)); extern int setstate_r (char *__restrict __statebuf, struct random_data *__restrict __buf) __THROW __nonnull ((1, 2)); # endif /* Use misc. */ #endif /* Use SVID || extended X/Open || BSD. */ __BEGIN_NAMESPACE_STD /* Return a random integer between 0 and RAND_MAX inclusive. */ extern int rand (void) __THROW; /* Seed the random number generator with the given number. */ extern void srand (unsigned int __seed) __THROW; __END_NAMESPACE_STD #ifdef __USE_POSIX /* Reentrant interface according to POSIX.1. */ extern int rand_r (unsigned int *__seed) __THROW; #endif #if defined __USE_SVID || defined __USE_XOPEN /* System V style 48-bit random number generator functions. */ /* Return non-negative, double-precision floating-point value in [0.0,1.0). */ extern double drand48 (void) __THROW; extern double erand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1)); /* Return non-negative, long integer in [0,2^31). */ extern long int lrand48 (void) __THROW; extern long int nrand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1)); /* Return signed, long integers in [-2^31,2^31). */ extern long int mrand48 (void) __THROW; extern long int jrand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1)); /* Seed random number generator. */ extern void srand48 (long int __seedval) __THROW; extern unsigned short int *seed48 (unsigned short int __seed16v[3]) __THROW __nonnull ((1)); extern void lcong48 (unsigned short int __param[7]) __THROW __nonnull ((1)); # ifdef __USE_MISC /* Data structure for communication with thread safe versions. This type is to be regarded as opaque. It's only exported because users have to allocate objects of this type. */ struct drand48_data { unsigned short int __x[3]; /* Current state. */ unsigned short int __old_x[3]; /* Old state. */ unsigned short int __c; /* Additive const. in congruential formula. */ unsigned short int __init; /* Flag for initializing. */ unsigned long long int __a; /* Factor in congruential formula. */ }; /* Return non-negative, double-precision floating-point value in [0.0,1.0). */ extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) __THROW __nonnull ((1, 2)); extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) __THROW __nonnull ((1, 2)); /* Return non-negative, long integer in [0,2^31). */ extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) __THROW __nonnull ((1, 2)); extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __THROW __nonnull ((1, 2)); /* Return signed, long integers in [-2^31,2^31). */ extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) __THROW __nonnull ((1, 2)); extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __THROW __nonnull ((1, 2)); /* Seed random number generator. */ extern int srand48_r (long int __seedval, struct drand48_data *__buffer) __THROW __nonnull ((2)); extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) __THROW __nonnull ((1, 2)); extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) __THROW __nonnull ((1, 2)); # endif /* Use misc. */ #endif /* Use SVID or X/Open. */ #endif /* don't just need malloc and calloc */ #ifndef __malloc_and_calloc_defined # define __malloc_and_calloc_defined __BEGIN_NAMESPACE_STD /* Allocate SIZE bytes of memory. */ extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur; /* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */ extern void *calloc (size_t __nmemb, size_t __size) __THROW __attribute_malloc__ __wur; __END_NAMESPACE_STD #endif #ifndef __need_malloc_and_calloc __BEGIN_NAMESPACE_STD /* Re-allocate the previously allocated block in PTR, making the new block SIZE bytes long. */ extern void *realloc (void *__ptr, size_t __size) __THROW __attribute_malloc__ __attribute_warn_unused_result__; /* Free a block allocated by `malloc', `realloc' or `calloc'. */ extern void free (void *__ptr) __THROW; __END_NAMESPACE_STD #ifdef __USE_MISC /* Free a block. An alias for `free'. (Sun Unices). */ extern void cfree (void *__ptr) __THROW; #endif /* Use misc. */ #if defined __USE_GNU || defined __USE_BSD || defined __USE_MISC # include #endif /* Use GNU, BSD, or misc. */ #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */ extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur; #endif #ifdef __USE_XOPEN2K /* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */ extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) __THROW __nonnull ((1)) __wur; #endif __BEGIN_NAMESPACE_STD /* Abort execution and generate a core-dump. */ extern void abort (void) __THROW __attribute__ ((__noreturn__)); /* Register a function to be called when `exit' is called. */ extern int atexit (void (*__func) (void)) __THROW __nonnull ((1)); __END_NAMESPACE_STD #ifdef __USE_MISC /* Register a function to be called with the status given to `exit' and the given argument. */ extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) __THROW __nonnull ((1)); #endif __BEGIN_NAMESPACE_STD /* Call all functions registered with `atexit' and `on_exit', in the reverse of the order in which they were registered perform stdio cleanup, and terminate program execution with STATUS. */ extern void exit (int __status) __THROW __attribute__ ((__noreturn__)); __END_NAMESPACE_STD #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Terminate the program with STATUS without calling any of the functions registered with `atexit' or `on_exit'. */ extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__)); __END_NAMESPACE_C99 #endif __BEGIN_NAMESPACE_STD /* Return the value of envariable NAME, or NULL if it doesn't exist. */ extern char *getenv (__const char *__name) __THROW __nonnull ((1)) __wur; __END_NAMESPACE_STD /* This function is similar to the above but returns NULL if the programs is running with SUID or SGID enabled. */ extern char *__secure_getenv (__const char *__name) __THROW __nonnull ((1)) __wur; #if defined __USE_SVID || defined __USE_XOPEN /* The SVID says this is in , but this seems a better place. */ /* Put STRING, which is of the form "NAME=VALUE", in the environment. If there is no `=', remove NAME from the environment. */ extern int putenv (char *__string) __THROW __nonnull ((1)); #endif #if defined __USE_BSD || defined __USE_XOPEN2K /* Set NAME to VALUE in the environment. If REPLACE is nonzero, overwrite an existing value. */ extern int setenv (__const char *__name, __const char *__value, int __replace) __THROW __nonnull ((2)); /* Remove the variable NAME from the environment. */ extern int unsetenv (__const char *__name) __THROW; #endif #ifdef __USE_MISC /* The `clearenv' was planned to be added to POSIX.1 but probably never made it. Nevertheless the POSIX.9 standard (POSIX bindings for Fortran 77) requires this function. */ extern int clearenv (void) __THROW; #endif #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED /* Generate a unique temporary file name from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the file name unique. Returns TEMPLATE, or a null pointer if it cannot get a unique file name. */ extern char *mktemp (char *__template) __THROW __nonnull ((1)) __wur; /* Generate a unique temporary file name from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the filename unique. Returns a file descriptor open on the file for reading and writing, or -1 if it cannot create a uniquely-named file. This function is a possible cancellation points and therefore not marked with __THROW. */ # ifndef __USE_FILE_OFFSET64 extern int mkstemp (char *__template) __nonnull ((1)) __wur; # else # ifdef __REDIRECT extern int __REDIRECT (mkstemp, (char *__template), mkstemp64) __nonnull ((1)) __wur; # else # define mkstemp mkstemp64 # endif # endif # ifdef __USE_LARGEFILE64 extern int mkstemp64 (char *__template) __nonnull ((1)) __wur; # endif #endif #ifdef __USE_BSD /* Create a unique temporary directory from TEMPLATE. The last six characters of TEMPLATE must be "XXXXXX"; they are replaced with a string that makes the directory name unique. Returns TEMPLATE, or a null pointer if it cannot get a unique name. The directory is created mode 700. */ extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur; #endif __BEGIN_NAMESPACE_STD /* Execute the given line as a shell command. This function is a cancellation point and therefore not marked with __THROW. */ extern int system (__const char *__command) __wur; __END_NAMESPACE_STD #ifdef __USE_GNU /* Return a malloc'd string containing the canonical absolute name of the named file. The last file name component need not exist, and may be a symlink to a nonexistent file. */ extern char *canonicalize_file_name (__const char *__name) __THROW __nonnull ((1)) __wur; #endif #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Return the canonical absolute name of file NAME. The last file name component need not exist, and may be a symlink to a nonexistent file. If RESOLVED is null, the result is malloc'd; otherwise, if the canonical name is PATH_MAX chars or more, returns null with `errno' set to ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, returns the name in RESOLVED. */ extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) __THROW __wur; #endif /* Shorthand for type of comparison functions. */ #ifndef __COMPAR_FN_T # define __COMPAR_FN_T typedef int (*__compar_fn_t) (__const void *, __const void *); # ifdef __USE_GNU typedef __compar_fn_t comparison_fn_t; # endif #endif __BEGIN_NAMESPACE_STD /* Do a binary search for KEY in BASE, which consists of NMEMB elements of SIZE bytes each, using COMPAR to perform the comparisons. */ extern void *bsearch (__const void *__key, __const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __nonnull ((1, 2, 5)) __wur; /* Sort NMEMB elements of BASE, of SIZE bytes each, using COMPAR to perform the comparisons. */ extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __nonnull ((1, 4)); /* Return the absolute value of X. */ extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur; extern long int labs (long int __x) __THROW __attribute__ ((__const__)) __wur; __END_NAMESPACE_STD #ifdef __USE_ISOC99 __extension__ extern long long int llabs (long long int __x) __THROW __attribute__ ((__const__)) __wur; #endif __BEGIN_NAMESPACE_STD /* Return the `div_t', `ldiv_t' or `lldiv_t' representation of the value of NUMER over DENOM. */ /* GCC may have built-ins for these someday. */ extern div_t div (int __numer, int __denom) __THROW __attribute__ ((__const__)) __wur; extern ldiv_t ldiv (long int __numer, long int __denom) __THROW __attribute__ ((__const__)) __wur; __END_NAMESPACE_STD #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 __extension__ extern lldiv_t lldiv (long long int __numer, long long int __denom) __THROW __attribute__ ((__const__)) __wur; __END_NAMESPACE_C99 #endif #if defined __USE_SVID || defined __USE_XOPEN_EXTENDED /* Convert floating point numbers to strings. The returned values are valid only until another call to the same function. */ /* Convert VALUE to a string with NDIGIT digits and return a pointer to this. Set *DECPT with the position of the decimal character and *SIGN with the sign of the number. */ extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; /* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT with the position of the decimal character and *SIGN with the sign of the number. */ extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; /* If possible convert VALUE to a string with NDIGIT significant digits. Otherwise use exponential representation. The resulting string will be written to BUF. */ extern char *gcvt (double __value, int __ndigit, char *__buf) __THROW __nonnull ((3)) __wur; # ifdef __USE_MISC /* Long double versions of above functions. */ extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; extern char *qgcvt (long double __value, int __ndigit, char *__buf) __THROW __nonnull ((3)) __wur; /* Reentrant version of the functions above which provide their own buffers. */ extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __THROW __nonnull ((3, 4, 5)); extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __THROW __nonnull ((3, 4, 5)); extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __THROW __nonnull ((3, 4, 5)); extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __THROW __nonnull ((3, 4, 5)); # endif /* misc */ #endif /* use MISC || use X/Open Unix */ __BEGIN_NAMESPACE_STD /* Return the length of the multibyte character in S, which is no longer than N. */ extern int mblen (__const char *__s, size_t __n) __THROW __wur; /* Return the length of the given multibyte character, putting its `wchar_t' representation in *PWC. */ extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) __THROW __wur; /* Put the multibyte character represented by WCHAR in S, returning its length. */ extern int wctomb (char *__s, wchar_t __wchar) __THROW __wur; /* Convert a multibyte string to a wide char string. */ extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) __THROW; /* Convert a wide char string to multibyte string. */ extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) __THROW; __END_NAMESPACE_STD #ifdef __USE_SVID /* Determine whether the string value of RESPONSE matches the affirmation or negative response expression as specified by the LC_MESSAGES category in the program's current locale. Returns 1 if affirmative, 0 if negative, and -1 if not matching. */ extern int rpmatch (__const char *__response) __THROW __nonnull ((1)) __wur; #endif #ifdef __USE_XOPEN_EXTENDED /* Parse comma separated suboption from *OPTIONP and match against strings in TOKENS. If found return index and set *VALUEP to optional value introduced by an equal sign. If the suboption is not part of TOKENS return in *VALUEP beginning of unknown suboption. On exit *OPTIONP is set to the beginning of the next token or at the terminating NUL character. */ extern int getsubopt (char **__restrict __optionp, char *__const *__restrict __tokens, char **__restrict __valuep) __THROW __nonnull ((1, 2, 3)) __wur; #endif #ifdef __USE_XOPEN /* Setup DES tables according KEY. */ extern void setkey (__const char *__key) __THROW __nonnull ((1)); #endif /* X/Open pseudo terminal handling. */ #ifdef __USE_XOPEN2K /* Return a master pseudo-terminal handle. */ extern int posix_openpt (int __oflag) __wur; #endif #ifdef __USE_XOPEN /* The next four functions all take a master pseudo-tty fd and perform an operation on the associated slave: */ /* Chown the slave to the calling user. */ extern int grantpt (int __fd) __THROW; /* Release an internal lock so the slave can be opened. Call after grantpt(). */ extern int unlockpt (int __fd) __THROW; /* Return the pathname of the pseudo terminal slave assoicated with the master FD is open on, or NULL on errors. The returned storage is good until the next call to this function. */ extern char *ptsname (int __fd) __THROW __wur; #endif #ifdef __USE_GNU /* Store at most BUFLEN characters of the pathname of the slave pseudo terminal associated with the master FD is open on in BUF. Return 0 on success, otherwise an error number. */ extern int ptsname_r (int __fd, char *__buf, size_t __buflen) __THROW __nonnull ((2)); /* Open a master pseudo terminal and return its file descriptor. */ extern int getpt (void); #endif #ifdef __USE_BSD /* Put the 1 minute, 5 minute and 15 minute load averages into the first NELEM elements of LOADAVG. Return the number written (never more than three, but may be less than NELEM), or -1 if an error occurred. */ extern int getloadavg (double __loadavg[], int __nelem) __THROW __nonnull ((1)); #endif /* Define some macros helping to catch buffer overflows. */ #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus # include #endif #ifdef __LDBL_COMPAT # include #endif #endif /* don't just need malloc and calloc */ #undef __need_malloc_and_calloc __END_DECLS #endif /* stdlib.h */ Convert-Binary-C-0.76/tests/include/include/setjmp.h0000644000175000001440000000771111550664626021107 0ustar mhxusers/* Copyright (C) 1991-1999, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.13 Nonlocal jumps */ #ifndef _SETJMP_H #define _SETJMP_H 1 #include __BEGIN_DECLS #include /* Get `__jmp_buf'. */ #include /* Get `__sigset_t'. */ __BEGIN_NAMESPACE_STD /* Calling environment, plus possibly a saved signal mask. */ typedef struct __jmp_buf_tag /* C++ doesn't like tagless structs. */ { /* NOTE: The machine-dependent definitions of `__sigsetjmp' assume that a `jmp_buf' begins with a `__jmp_buf' and that `__mask_was_saved' follows it. Do not move these members or add others before it. */ __jmp_buf __jmpbuf; /* Calling environment. */ int __mask_was_saved; /* Saved the signal mask? */ __sigset_t __saved_mask; /* Saved signal mask. */ } jmp_buf[1]; /* Store the calling environment in ENV, also saving the signal mask. Return 0. */ extern int setjmp (jmp_buf __env) __THROW; __END_NAMESPACE_STD __USING_NAMESPACE_STD(__jmp_buf_tag) /* Store the calling environment in ENV, also saving the signal mask if SAVEMASK is nonzero. Return 0. This is the internal name for `sigsetjmp'. */ extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __THROW; #ifndef __FAVOR_BSD /* Store the calling environment in ENV, not saving the signal mask. Return 0. */ extern int _setjmp (struct __jmp_buf_tag __env[1]) __THROW; /* Do not save the signal mask. This is equivalent to the `_setjmp' BSD function. */ # define setjmp(env) _setjmp (env) #else /* We are in 4.3 BSD-compatibility mode in which `setjmp' saves the signal mask like `sigsetjmp (ENV, 1)'. We have to define a macro since ISO C says `setjmp' is one. */ # define setjmp(env) setjmp (env) #endif /* Favor BSD. */ __BEGIN_NAMESPACE_STD /* Jump to the environment saved in ENV, making the `setjmp' call there return VAL, or 1 if VAL is 0. */ extern void longjmp (struct __jmp_buf_tag __env[1], int __val) __THROW __attribute__ ((__noreturn__)); __END_NAMESPACE_STD #if defined __USE_BSD || defined __USE_XOPEN /* Same. Usually `_longjmp' is used with `_setjmp', which does not save the signal mask. But it is how ENV was saved that determines whether `longjmp' restores the mask; `_longjmp' is just an alias. */ extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) __THROW __attribute__ ((__noreturn__)); #endif #ifdef __USE_POSIX /* Use the same type for `jmp_buf' and `sigjmp_buf'. The `__mask_was_saved' flag determines whether or not `longjmp' will restore the signal mask. */ typedef struct __jmp_buf_tag sigjmp_buf[1]; /* Store the calling environment in ENV, also saving the signal mask if SAVEMASK is nonzero. Return 0. */ # define sigsetjmp(env, savemask) __sigsetjmp (env, savemask) /* Jump to the environment saved in ENV, making the sigsetjmp call there return VAL, or 1 if VAL is 0. Restore the signal mask if that sigsetjmp call saved it. This is just an alias `longjmp'. */ extern void siglongjmp (sigjmp_buf __env, int __val) __THROW __attribute__ ((__noreturn__)); #endif /* Use POSIX. */ __END_DECLS #endif /* setjmp.h */ Convert-Binary-C-0.76/tests/include/include/wchar.h0000644000175000001440000007237011550664627020715 0ustar mhxusers/* Copyright (C) 1995-2004,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.24 * Extended multibyte and wide character utilities */ #ifndef _WCHAR_H #ifndef __need_mbstate_t # define _WCHAR_H 1 # include #endif #ifdef _WCHAR_H /* Get FILE definition. */ # define __need___FILE # ifdef __USE_UNIX98 # define __need_FILE # endif # include /* Get va_list definition. */ # define __need___va_list # include /* Get size_t, wchar_t, wint_t and NULL from . */ # define __need_size_t # define __need_wchar_t # define __need_NULL #endif #define __need_wint_t #include #include /* We try to get wint_t from , but not all GCC versions define it there. So define it ourselves if it remains undefined. */ #ifndef _WINT_T /* Integral type unchanged by default argument promotions that can hold any value corresponding to members of the extended character set, as well as at least one value that does not correspond to any member of the extended character set. */ # define _WINT_T typedef unsigned int wint_t; #else /* Work around problems with the file which doesn't put wint_t in the std namespace. */ # if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES \ && defined __WINT_TYPE__ __BEGIN_NAMESPACE_STD typedef __WINT_TYPE__ wint_t; __END_NAMESPACE_STD # endif #endif #ifndef __mbstate_t_defined # define __mbstate_t_defined 1 /* Conversion state information. */ typedef struct { int __count; union { wint_t __wch; char __wchb[4]; } __value; /* Value so far. */ } __mbstate_t; #endif #undef __need_mbstate_t /* The rest of the file is only used if used if __need_mbstate_t is not defined. */ #ifdef _WCHAR_H __BEGIN_NAMESPACE_C99 /* Public type. */ typedef __mbstate_t mbstate_t; __END_NAMESPACE_C99 #ifdef __USE_GNU __USING_NAMESPACE_C99(mbstate_t) #endif #ifndef WCHAR_MIN /* These constants might also be defined in . */ # define WCHAR_MIN __WCHAR_MIN # define WCHAR_MAX __WCHAR_MAX #endif #ifndef WEOF # define WEOF (0xffffffffu) #endif /* For XPG4 compliance we have to define the stuff from here as well. */ #if defined __USE_XOPEN && !defined __USE_UNIX98 # include #endif __BEGIN_DECLS __BEGIN_NAMESPACE_STD /* This incomplete type is defined in but needed here because of `wcsftime'. */ struct tm; /* XXX We have to clean this up at some point. Since tm is in the std namespace but wcsftime is in __c99 the type wouldn't be found without inserting it in the global namespace. */ __USING_NAMESPACE_STD(tm) __END_NAMESPACE_STD __BEGIN_NAMESPACE_C99 /* Copy SRC to DEST. */ extern wchar_t *wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) __THROW; /* Copy no more than N wide-characters of SRC to DEST. */ extern wchar_t *wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) __THROW; /* Append SRC onto DEST. */ extern wchar_t *wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src) __THROW; /* Append no more than N wide-characters of SRC onto DEST. */ extern wchar_t *wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, size_t __n) __THROW; /* Compare S1 and S2. */ extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2) __THROW __attribute_pure__; /* Compare N wide-characters of S1 and S2. */ extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) __THROW __attribute_pure__; __END_NAMESPACE_C99 #ifdef __USE_GNU /* Compare S1 and S2, ignoring case. */ extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) __THROW; /* Compare no more than N chars of S1 and S2, ignoring case. */ extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n) __THROW; /* Similar to the two functions above but take the information from the provided locale and not the global locale. */ # include extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) __THROW; extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) __THROW; #endif __BEGIN_NAMESPACE_C99 /* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE category of the current locale. */ extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) __THROW; /* Transform S2 into array pointed to by S1 such that if wcscmp is applied to two transformed strings the result is the as applying `wcscoll' to the original strings. */ extern size_t wcsxfrm (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) __THROW; __END_NAMESPACE_C99 #ifdef __USE_GNU /* Similar to the two functions above but take the information from the provided locale and not the global locale. */ /* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE category of the given locale. */ extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2, __locale_t __loc) __THROW; /* Transform S2 into array pointed to by S1 such that if wcscmp is applied to two transformed strings the result is the as applying `wcscoll' to the original strings. */ extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2, size_t __n, __locale_t __loc) __THROW; /* Duplicate S, returning an identical malloc'd string. */ extern wchar_t *wcsdup (__const wchar_t *__s) __THROW __attribute_malloc__; #endif __BEGIN_NAMESPACE_C99 /* Find the first occurrence of WC in WCS. */ extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc) __THROW __attribute_pure__; /* Find the last occurrence of WC in WCS. */ extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc) __THROW __attribute_pure__; __END_NAMESPACE_C99 #ifdef __USE_GNU /* This function is similar to `wcschr'. But it returns a pointer to the closing NUL wide character in case C is not found in S. */ extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc) __THROW __attribute_pure__; #endif __BEGIN_NAMESPACE_C99 /* Return the length of the initial segmet of WCS which consists entirely of wide characters not in REJECT. */ extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject) __THROW __attribute_pure__; /* Return the length of the initial segmet of WCS which consists entirely of wide characters in ACCEPT. */ extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept) __THROW __attribute_pure__; /* Find the first occurrence in WCS of any character in ACCEPT. */ extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept) __THROW __attribute_pure__; /* Find the first occurrence of NEEDLE in HAYSTACK. */ extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle) __THROW __attribute_pure__; /* Divide WCS into tokens separated by characters in DELIM. */ extern wchar_t *wcstok (wchar_t *__restrict __s, __const wchar_t *__restrict __delim, wchar_t **__restrict __ptr) __THROW; /* Return the number of wide characters in S. */ extern size_t wcslen (__const wchar_t *__s) __THROW __attribute_pure__; __END_NAMESPACE_C99 #ifdef __USE_XOPEN /* Another name for `wcsstr' from XPG4. */ extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle) __THROW __attribute_pure__; #endif #ifdef __USE_GNU /* Return the number of wide characters in S, but at most MAXLEN. */ extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen) __THROW __attribute_pure__; #endif __BEGIN_NAMESPACE_C99 /* Search N wide characters of S for C. */ extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n) __THROW __attribute_pure__; /* Compare N wide characters of S1 and S2. */ extern int wmemcmp (__const wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) __THROW __attribute_pure__; /* Copy N wide characters of SRC to DEST. */ extern wchar_t *wmemcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) __THROW; /* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for overlapping strings. */ extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n) __THROW; /* Set N wide characters of S to C. */ extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW; __END_NAMESPACE_C99 #ifdef __USE_GNU /* Copy N wide characters of SRC to DEST and return pointer to following wide character. */ extern wchar_t *wmempcpy (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, size_t __n) __THROW; #endif __BEGIN_NAMESPACE_C99 /* Determine whether C constitutes a valid (one-byte) multibyte character. */ extern wint_t btowc (int __c) __THROW; /* Determine whether C corresponds to a member of the extended character set whose multibyte representation is a single byte. */ extern int wctob (wint_t __c) __THROW; /* Determine whether PS points to an object representing the initial state. */ extern int mbsinit (__const mbstate_t *__ps) __THROW __attribute_pure__; /* Write wide character representation of multibyte character pointed to by S to PWC. */ extern size_t mbrtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n, mbstate_t *__p) __THROW; /* Write multibyte representation of wide character WC to S. */ extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, mbstate_t *__restrict __ps) __THROW; /* Return number of bytes in multibyte character pointed to by S. */ extern size_t __mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) __THROW; extern size_t mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps) __THROW; __END_NAMESPACE_C99 #ifdef __USE_EXTERN_INLINES /* Define inline function as optimization. */ /* We can use the BTOWC and WCTOB optimizations since we know that all locales must use ASCII encoding for the values in the ASCII range and because the wchar_t encoding is always ISO 10646. */ extern wint_t __btowc_alias (int __c) __asm ("btowc"); extern __inline wint_t __NTH (btowc (int __c)) { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' ? (wint_t) __c : __btowc_alias (__c)); } extern int __wctob_alias (wint_t __c) __asm ("wctob"); extern __inline int __NTH (wctob (wint_t __wc)) { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' ? (int) __wc : __wctob_alias (__wc)); } extern __inline size_t __NTH (mbrlen (__const char *__restrict __s, size_t __n, mbstate_t *__restrict __ps)) { return (__ps != NULL ? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); } #endif __BEGIN_NAMESPACE_C99 /* Write wide character representation of multibyte character string SRC to DST. */ extern size_t mbsrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __len, mbstate_t *__restrict __ps) __THROW; /* Write multibyte character representation of wide character string SRC to DST. */ extern size_t wcsrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __len, mbstate_t *__restrict __ps) __THROW; __END_NAMESPACE_C99 #ifdef __USE_GNU /* Write wide character representation of at most NMC bytes of the multibyte character string SRC to DST. */ extern size_t mbsnrtowcs (wchar_t *__restrict __dst, __const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t *__restrict __ps) __THROW; /* Write multibyte character representation of at most NWC characters from the wide character string SRC to DST. */ extern size_t wcsnrtombs (char *__restrict __dst, __const wchar_t **__restrict __src, size_t __nwc, size_t __len, mbstate_t *__restrict __ps) __THROW; #endif /* use GNU */ /* The following functions are extensions found in X/Open CAE. */ #ifdef __USE_XOPEN /* Determine number of column positions required for C. */ extern int wcwidth (wchar_t __c) __THROW; /* Determine number of column positions required for first N wide characters (or fewer if S ends before this) in S. */ extern int wcswidth (__const wchar_t *__s, size_t __n) __THROW; #endif /* Use X/Open. */ __BEGIN_NAMESPACE_C99 /* Convert initial portion of the wide string NPTR to `double' representation. */ extern double wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) __THROW; #ifdef __USE_ISOC99 /* Likewise for `float' and `long double' sizes of floating-point numbers. */ extern float wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) __THROW; extern long double wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr) __THROW; #endif /* C99 */ /* Convert initial portion of wide string NPTR to `long int' representation. */ extern long int wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW; /* Convert initial portion of wide string NPTR to `unsigned long int' representation. */ extern unsigned long int wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW; #if defined __USE_ISOC99 || (defined __GNUC__ && defined __USE_GNU) /* Convert initial portion of wide string NPTR to `long int' representation. */ __extension__ extern long long int wcstoll (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW; /* Convert initial portion of wide string NPTR to `unsigned long long int' representation. */ __extension__ extern unsigned long long int wcstoull (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW; #endif /* ISO C99 or GCC and GNU. */ __END_NAMESPACE_C99 #if defined __GNUC__ && defined __USE_GNU /* Convert initial portion of wide string NPTR to `long int' representation. */ __extension__ extern long long int wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW; /* Convert initial portion of wide string NPTR to `unsigned long long int' representation. */ __extension__ extern unsigned long long int wcstouq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base) __THROW; #endif /* GCC and use GNU. */ #ifdef __USE_GNU /* The concept of one static locale per category is not very well thought out. Many applications will need to process its data using information from several different locales. Another application is the implementation of the internationalization handling in the upcoming ISO C++ standard library. To support this another set of the functions using locale data exist which have an additional argument. Attention: all these functions are *not* standardized in any form. This is a proof-of-concept implementation. */ /* Structure for reentrant locale using functions. This is an (almost) opaque type for the user level programs. */ # include /* Special versions of the functions above which take the locale to use as an additional parameter. */ extern long int wcstol_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) __THROW; extern unsigned long int wcstoul_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) __THROW; __extension__ extern long long int wcstoll_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) __THROW; __extension__ extern unsigned long long int wcstoull_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, __locale_t __loc) __THROW; extern double wcstod_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) __THROW; extern float wcstof_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) __THROW; extern long double wcstold_l (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, __locale_t __loc) __THROW; #endif /* GNU */ /* The internal entry points for `wcstoX' take an extra flag argument saying whether or not to parse locale-dependent number grouping. */ extern double __wcstod_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) __THROW; extern float __wcstof_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) __THROW; extern long double __wcstold_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __group) __THROW; #ifndef __wcstol_internal_defined extern long int __wcstol_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, int __group) __THROW; # define __wcstol_internal_defined 1 #endif #ifndef __wcstoul_internal_defined extern unsigned long int __wcstoul_internal (__const wchar_t *__restrict __npt, wchar_t **__restrict __endptr, int __base, int __group) __THROW; # define __wcstoul_internal_defined 1 #endif #ifndef __wcstoll_internal_defined __extension__ extern long long int __wcstoll_internal (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base, int __group) __THROW; # define __wcstoll_internal_defined 1 #endif #ifndef __wcstoull_internal_defined __extension__ extern unsigned long long int __wcstoull_internal (__const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, int __group) __THROW; # define __wcstoull_internal_defined 1 #endif #if defined __OPTIMIZE__ && __GNUC__ >= 2 /* Define inline functions which call the internal entry points. */ __BEGIN_NAMESPACE_C99 extern __inline double __NTH (wcstod (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)) { return __wcstod_internal (__nptr, __endptr, 0); } extern __inline long int __NTH (wcstol (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)) { return __wcstol_internal (__nptr, __endptr, __base, 0); } extern __inline unsigned long int __NTH (wcstoul (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)) { return __wcstoul_internal (__nptr, __endptr, __base, 0); } __END_NAMESPACE_C99 # ifdef __USE_GNU extern __inline float __NTH (wcstof (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)) { return __wcstof_internal (__nptr, __endptr, 0); } # ifndef __LDBL_COMPAT extern __inline long double __NTH (wcstold (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr)) { return __wcstold_internal (__nptr, __endptr, 0); } # endif __extension__ extern __inline long long int __NTH (wcstoq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)) { return __wcstoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int __NTH (wcstouq (__const wchar_t *__restrict __nptr, wchar_t **__restrict __endptr, int __base)) { return __wcstoull_internal (__nptr, __endptr, __base, 0); } # endif /* Use GNU. */ #endif /* Optimizing GCC >=2. */ #ifdef __USE_GNU /* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */ extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW; /* Copy no more than N characters of SRC to DEST, returning the address of the last character written into DEST. */ extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) __THROW; #endif /* use GNU */ /* Wide character I/O functions. */ #if defined __USE_ISOC99 || defined __USE_UNIX98 __BEGIN_NAMESPACE_C99 /* Select orientation for stream. */ extern int fwide (__FILE *__fp, int __mode) __THROW; /* Write formatted output to STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fwprintf (__FILE *__restrict __stream, __const wchar_t *__restrict __format, ...) /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */; /* Write formatted output to stdout. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int wprintf (__const wchar_t *__restrict __format, ...) /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */; /* Write formatted output of at most N characters to S. */ extern int swprintf (wchar_t *__restrict __s, size_t __n, __const wchar_t *__restrict __format, ...) __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */; /* Write formatted output to S from argument list ARG. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int vfwprintf (__FILE *__restrict __s, __const wchar_t *__restrict __format, __gnuc_va_list __arg) /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */; /* Write formatted output to stdout from argument list ARG. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int vwprintf (__const wchar_t *__restrict __format, __gnuc_va_list __arg) /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */; /* Write formatted output of at most N character to S from argument list ARG. */ extern int vswprintf (wchar_t *__restrict __s, size_t __n, __const wchar_t *__restrict __format, __gnuc_va_list __arg) __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */; /* Read formatted input from STREAM. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int fwscanf (__FILE *__restrict __stream, __const wchar_t *__restrict __format, ...) /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; /* Read formatted input from stdin. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int wscanf (__const wchar_t *__restrict __format, ...) /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */; /* Read formatted input from S. */ extern int swscanf (__const wchar_t *__restrict __s, __const wchar_t *__restrict __format, ...) __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; __END_NAMESPACE_C99 #endif /* Use ISO C99 and Unix98. */ #ifdef __USE_ISOC99 __BEGIN_NAMESPACE_C99 /* Read formatted input from S into argument list ARG. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int vfwscanf (__FILE *__restrict __s, __const wchar_t *__restrict __format, __gnuc_va_list __arg) /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; /* Read formatted input from stdin into argument list ARG. This function is a possible cancellation point and therefore not marked with __THROW. */ extern int vwscanf (__const wchar_t *__restrict __format, __gnuc_va_list __arg) /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */; /* Read formatted input from S into argument list ARG. */ extern int vswscanf (__const wchar_t *__restrict __s, __const wchar_t *__restrict __format, __gnuc_va_list __arg) __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; __END_NAMESPACE_C99 #endif /* Use ISO C99. */ __BEGIN_NAMESPACE_C99 /* Read a character from STREAM. These functions are possible cancellation points and therefore not marked with __THROW. */ extern wint_t fgetwc (__FILE *__stream); extern wint_t getwc (__FILE *__stream); /* Read a character from stdin. This function is a possible cancellation point and therefore not marked with __THROW. */ extern wint_t getwchar (void); /* Write a character to STREAM. These functions are possible cancellation points and therefore not marked with __THROW. */ extern wint_t fputwc (wchar_t __wc, __FILE *__stream); extern wint_t putwc (wchar_t __wc, __FILE *__stream); /* Write a character to stdout. This function is a possible cancellation points and therefore not marked with __THROW. */ extern wint_t putwchar (wchar_t __wc); /* Get a newline-terminated wide character string of finite length from STREAM. This function is a possible cancellation points and therefore not marked with __THROW. */ extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, __FILE *__restrict __stream); /* Write a string to STREAM. This function is a possible cancellation points and therefore not marked with __THROW. */ extern int fputws (__const wchar_t *__restrict __ws, __FILE *__restrict __stream); /* Push a character back onto the input buffer of STREAM. This function is a possible cancellation points and therefore not marked with __THROW. */ extern wint_t ungetwc (wint_t __wc, __FILE *__stream); __END_NAMESPACE_C99 #ifdef __USE_GNU /* These are defined to be equivalent to the `char' functions defined in POSIX.1:1996. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern wint_t getwc_unlocked (__FILE *__stream); extern wint_t getwchar_unlocked (void); /* This is the wide character version of a GNU extension. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern wint_t fgetwc_unlocked (__FILE *__stream); /* Faster version when locking is not necessary. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); /* These are defined to be equivalent to the `char' functions defined in POSIX.1:1996. These functions are not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation they are cancellation points and therefore not marked with __THROW. */ extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); extern wint_t putwchar_unlocked (wchar_t __wc); /* This function does the same as `fgetws' but does not lock the stream. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, __FILE *__restrict __stream); /* This function does the same as `fputws' but does not lock the stream. This function is not part of POSIX and therefore no official cancellation point. But due to similarity with an POSIX interface or due to the implementation it is a cancellation point and therefore not marked with __THROW. */ extern int fputws_unlocked (__const wchar_t *__restrict __ws, __FILE *__restrict __stream); #endif __BEGIN_NAMESPACE_C99 /* Format TP into S according to FORMAT. Write no more than MAXSIZE wide characters and return the number of wide characters written, or 0 if it would exceed MAXSIZE. */ extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, __const wchar_t *__restrict __format, __const struct tm *__restrict __tp) __THROW; __END_NAMESPACE_C99 # ifdef __USE_GNU # include /* Similar to `wcsftime' but takes the information from the provided locale and not the global locale. */ extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, __const wchar_t *__restrict __format, __const struct tm *__restrict __tp, __locale_t __loc) __THROW; # endif /* The X/Open standard demands that most of the functions defined in the header must also appear here. This is probably because some X/Open members wrote their implementation before the ISO C standard was published and introduced the better solution. We have to provide these definitions for compliance reasons but we do this nonsense only if really necessary. */ #if defined __USE_UNIX98 && !defined __USE_GNU # define __need_iswxxx # include #endif /* Define some macros helping to catch buffer overflows. */ #if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus # include #endif #ifdef __LDBL_COMPAT # include #endif __END_DECLS #endif /* _WCHAR_H defined */ #endif /* wchar.h */ Convert-Binary-C-0.76/tests/include/include/alloca.h0000644000175000001440000000241111550664623021025 0ustar mhxusers/* Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _ALLOCA_H #define _ALLOCA_H 1 #include #define __need_size_t #include __BEGIN_DECLS /* Remove any previous definitions. */ #undef alloca /* Allocate a block that will be freed when the calling function exits. */ extern void *alloca (size_t __size) __THROW; #ifdef __GNUC__ # define alloca(size) __builtin_alloca (size) #endif /* GCC. */ __END_DECLS #endif /* alloca.h */ Convert-Binary-C-0.76/tests/include/include/string.h0000644000175000001440000003763111550664627021120 0ustar mhxusers/* Copyright (C) 1991-1993, 1995-2003, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.21 String handling */ #ifndef _STRING_H #define _STRING_H 1 #include __BEGIN_DECLS /* Get size_t and NULL from . */ #define __need_size_t #define __need_NULL #include __BEGIN_NAMESPACE_STD /* Copy N bytes of SRC to DEST. */ extern void *memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Copy N bytes of SRC to DEST, guaranteeing correct behavior for overlapping strings. */ extern void *memmove (void *__dest, __const void *__src, size_t __n) __THROW __nonnull ((1, 2)); __END_NAMESPACE_STD /* Copy no more than N bytes of SRC to DEST, stopping when C is found. Return the position in DEST one byte past where C was copied, or NULL if C was not found in the first N bytes of SRC. */ #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n) __THROW __nonnull ((1, 2)); #endif /* SVID. */ __BEGIN_NAMESPACE_STD /* Set N bytes of S to C. */ extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1)); /* Compare N bytes of S1 and S2. */ extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Search N bytes of S for C. */ extern void *memchr (__const void *__s, int __c, size_t __n) __THROW __attribute_pure__ __nonnull ((1)); __END_NAMESPACE_STD #ifdef __USE_GNU /* Search in S for C. This is similar to `memchr' but there is no length limit. */ extern void *rawmemchr (__const void *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Search N bytes of S for the final occurrence of C. */ extern void *memrchr (__const void *__s, int __c, size_t __n) __THROW __attribute_pure__ __nonnull ((1)); #endif __BEGIN_NAMESPACE_STD /* Copy SRC to DEST. */ extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) __THROW __nonnull ((1, 2)); /* Copy no more than N characters of SRC to DEST. */ extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Append SRC onto DEST. */ extern char *strcat (char *__restrict __dest, __const char *__restrict __src) __THROW __nonnull ((1, 2)); /* Append no more than N characters from SRC onto DEST. */ extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Compare S1 and S2. */ extern int strcmp (__const char *__s1, __const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Compare N characters of S1 and S2. */ extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Compare the collated forms of S1 and S2. */ extern int strcoll (__const char *__s1, __const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Put a transformation of SRC into no more than N bytes of DEST. */ extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) __THROW __nonnull ((2)); __END_NAMESPACE_STD #ifdef __USE_GNU /* The following functions are equivalent to the both above but they take the locale they use for the collation as an extra argument. This is not standardsized but something like will come. */ # include /* Compare the collated forms of S1 and S2 using rules from L. */ extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) __THROW __attribute_pure__ __nonnull ((1, 2, 3)); /* Put a transformation of SRC into no more than N bytes of DEST. */ extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, __locale_t __l) __THROW __nonnull ((2, 4)); #endif #if defined __USE_SVID || defined __USE_BSD || defined __USE_XOPEN_EXTENDED /* Duplicate S, returning an identical malloc'd string. */ extern char *strdup (__const char *__s) __THROW __attribute_malloc__ __nonnull ((1)); #endif /* Return a malloc'd copy of at most N bytes of STRING. The resultant string is terminated even if no null terminator appears before STRING[N]. */ #if defined __USE_GNU extern char *strndup (__const char *__string, size_t __n) __THROW __attribute_malloc__ __nonnull ((1)); #endif #if defined __USE_GNU && defined __GNUC__ /* Duplicate S, returning an identical alloca'd string. */ # define strdupa(s) \ (__extension__ \ ({ \ __const char *__old = (s); \ size_t __len = strlen (__old) + 1; \ char *__new = (char *) __builtin_alloca (__len); \ (char *) memcpy (__new, __old, __len); \ })) /* Return an alloca'd copy of at most N bytes of string. */ # define strndupa(s, n) \ (__extension__ \ ({ \ __const char *__old = (s); \ size_t __len = strnlen (__old, (n)); \ char *__new = (char *) __builtin_alloca (__len + 1); \ __new[__len] = '\0'; \ (char *) memcpy (__new, __old, __len); \ })) #endif __BEGIN_NAMESPACE_STD /* Find the first occurrence of C in S. */ extern char *strchr (__const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Find the last occurrence of C in S. */ extern char *strrchr (__const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); __END_NAMESPACE_STD #ifdef __USE_GNU /* This function is similar to `strchr'. But it returns a pointer to the closing NUL byte in case C is not found in S. */ extern char *strchrnul (__const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); #endif __BEGIN_NAMESPACE_STD /* Return the length of the initial segment of S which consists entirely of characters not in REJECT. */ extern size_t strcspn (__const char *__s, __const char *__reject) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Return the length of the initial segment of S which consists entirely of characters in ACCEPT. */ extern size_t strspn (__const char *__s, __const char *__accept) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Find the first occurrence in S of any character in ACCEPT. */ extern char *strpbrk (__const char *__s, __const char *__accept) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Find the first occurrence of NEEDLE in HAYSTACK. */ extern char *strstr (__const char *__haystack, __const char *__needle) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Divide S into tokens separated by characters in DELIM. */ extern char *strtok (char *__restrict __s, __const char *__restrict __delim) __THROW __nonnull ((2)); __END_NAMESPACE_STD /* Divide S into tokens separated by characters in DELIM. Information passed between calls are stored in SAVE_PTR. */ extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) __THROW __nonnull ((2, 3)); #if defined __USE_POSIX || defined __USE_MISC extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) __THROW __nonnull ((2, 3)); #endif #ifdef __USE_GNU /* Similar to `strstr' but this function ignores the case of both strings. */ extern char *strcasestr (__const char *__haystack, __const char *__needle) __THROW __attribute_pure__ __nonnull ((1, 2)); #endif #ifdef __USE_GNU /* Find the first occurrence of NEEDLE in HAYSTACK. NEEDLE is NEEDLELEN bytes long; HAYSTACK is HAYSTACKLEN bytes long. */ extern void *memmem (__const void *__haystack, size_t __haystacklen, __const void *__needle, size_t __needlelen) __THROW __attribute_pure__ __nonnull ((1, 3)); /* Copy N bytes of SRC to DEST, return pointer to bytes after the last written byte. */ extern void *__mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); extern void *mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); #endif __BEGIN_NAMESPACE_STD /* Return the length of S. */ extern size_t strlen (__const char *__s) __THROW __attribute_pure__ __nonnull ((1)); __END_NAMESPACE_STD #ifdef __USE_GNU /* Find the length of STRING, but scan at most MAXLEN characters. If no '\0' terminator is found in that many characters, return MAXLEN. */ extern size_t strnlen (__const char *__string, size_t __maxlen) __THROW __attribute_pure__ __nonnull ((1)); #endif __BEGIN_NAMESPACE_STD /* Return a string describing the meaning of the `errno' code in ERRNUM. */ extern char *strerror (int __errnum) __THROW; __END_NAMESPACE_STD #if defined __USE_XOPEN2K || defined __USE_MISC /* Reentrant version of `strerror'. There are 2 flavors of `strerror_r', GNU which returns the string and may or may not use the supplied temporary buffer and POSIX one which fills the string into the buffer. To use the POSIX version, -D_XOPEN_SOURCE=600 or -D_POSIX_C_SOURCE=200112L without -D_GNU_SOURCE is needed, otherwise the GNU version is preferred. */ # if defined __USE_XOPEN2K && !defined __USE_GNU /* Fill BUF with a string describing the meaning of the `errno' code in ERRNUM. */ # ifdef __REDIRECT_NTH extern int __REDIRECT_NTH (strerror_r, (int __errnum, char *__buf, size_t __buflen), __xpg_strerror_r) __nonnull ((2)); # else extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW __nonnull ((2)); # define strerror_r __xpg_strerror_r # endif # else /* If a temporary buffer is required, at most BUFLEN bytes of BUF will be used. */ extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW __nonnull ((2)); # endif #endif /* We define this function always since `bzero' is sometimes needed when the namespace rules does not allow this. */ extern void __bzero (void *__s, size_t __n) __THROW __nonnull ((1)); #ifdef __USE_BSD /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ extern void bcopy (__const void *__src, void *__dest, size_t __n) __THROW __nonnull ((1, 2)); /* Set N bytes of S to 0. */ extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1)); /* Compare N bytes of S1 and S2 (same as memcmp). */ extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Find the first occurrence of C in S (same as strchr). */ extern char *index (__const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Find the last occurrence of C in S (same as strrchr). */ extern char *rindex (__const char *__s, int __c) __THROW __attribute_pure__ __nonnull ((1)); /* Return the position of the first bit set in I, or 0 if none are set. The least-significant bit is position 1, the most-significant 32. */ extern int ffs (int __i) __THROW __attribute__ ((__const__)); /* The following two functions are non-standard but necessary for non-32 bit platforms. */ # ifdef __USE_GNU extern int ffsl (long int __l) __THROW __attribute__ ((__const__)); # ifdef __GNUC__ __extension__ extern int ffsll (long long int __ll) __THROW __attribute__ ((__const__)); # endif # endif /* Compare S1 and S2, ignoring case. */ extern int strcasecmp (__const char *__s1, __const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Compare no more than N chars of S1 and S2, ignoring case. */ extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) __THROW __attribute_pure__ __nonnull ((1, 2)); #endif /* Use BSD. */ #ifdef __USE_GNU /* Again versions of a few functions which use the given locale instead of the global one. */ extern int strcasecmp_l (__const char *__s1, __const char *__s2, __locale_t __loc) __THROW __attribute_pure__ __nonnull ((1, 2, 3)); extern int strncasecmp_l (__const char *__s1, __const char *__s2, size_t __n, __locale_t __loc) __THROW __attribute_pure__ __nonnull ((1, 2, 4)); #endif #ifdef __USE_BSD /* Return the next DELIM-delimited token from *STRINGP, terminating it with a '\0', and update *STRINGP to point past it. */ extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) __THROW __nonnull ((1, 2)); #endif #ifdef __USE_GNU /* Compare S1 and S2 as strings holding name & indices/version numbers. */ extern int strverscmp (__const char *__s1, __const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); /* Return a string describing the meaning of the signal number in SIG. */ extern char *strsignal (int __sig) __THROW; /* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) __THROW __nonnull ((1, 2)); extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) __THROW __nonnull ((1, 2)); /* Copy no more than N characters of SRC to DEST, returning the address of the last character written into DEST. */ extern char *__stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); extern char *stpncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) __THROW __nonnull ((1, 2)); /* Sautee STRING briskly. */ extern char *strfry (char *__string) __THROW __nonnull ((1)); /* Frobnicate N bytes of S. */ extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1)); # ifndef basename /* Return the file name within directory of FILENAME. We don't declare the function if the `basename' macro is available (defined in ) which makes the XPG version of this function available. */ extern char *basename (__const char *__filename) __THROW __nonnull ((1)); # endif #endif #if defined __GNUC__ && __GNUC__ >= 2 # if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \ && !defined __NO_INLINE__ && !defined __cplusplus /* When using GNU CC we provide some optimized versions of selected functions from this header. There are two kinds of optimizations: - machine-dependent optimizations, most probably using inline assembler code; these might be quite expensive since the code size can increase significantly. These optimizations are not used unless the symbol __USE_STRING_INLINES is defined before including this header. - machine-independent optimizations which do not increase the code size significantly and which optimize mainly situations where one or more arguments are compile-time constants. These optimizations are used always when the compiler is taught to optimize. One can inhibit all optimizations by defining __NO_STRING_INLINES. */ /* Get the machine-dependent optimizations (if any). */ # include /* These are generic optimizations which do not add too much inline code. */ # include # endif # if __USE_FORTIFY_LEVEL > 0 && !defined __cplusplus /* Functions with security checks. */ # include # endif #endif __END_DECLS #endif /* string.h */ Convert-Binary-C-0.76/tests/include/include/asm-generic/0000755000175000001440000000000011550665107021613 5ustar mhxusersConvert-Binary-C-0.76/tests/include/include/asm-generic/errno-base.h0000644000175000001440000000301511550664623024022 0ustar mhxusers#ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERIC_ERRNO_BASE_H #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #define ESRCH 3 /* No such process */ #define EINTR 4 /* Interrupted system call */ #define EIO 5 /* I/O error */ #define ENXIO 6 /* No such device or address */ #define E2BIG 7 /* Argument list too long */ #define ENOEXEC 8 /* Exec format error */ #define EBADF 9 /* Bad file number */ #define ECHILD 10 /* No child processes */ #define EAGAIN 11 /* Try again */ #define ENOMEM 12 /* Out of memory */ #define EACCES 13 /* Permission denied */ #define EFAULT 14 /* Bad address */ #define ENOTBLK 15 /* Block device required */ #define EBUSY 16 /* Device or resource busy */ #define EEXIST 17 /* File exists */ #define EXDEV 18 /* Cross-device link */ #define ENODEV 19 /* No such device */ #define ENOTDIR 20 /* Not a directory */ #define EISDIR 21 /* Is a directory */ #define EINVAL 22 /* Invalid argument */ #define ENFILE 23 /* File table overflow */ #define EMFILE 24 /* Too many open files */ #define ENOTTY 25 /* Not a typewriter */ #define ETXTBSY 26 /* Text file busy */ #define EFBIG 27 /* File too large */ #define ENOSPC 28 /* No space left on device */ #define ESPIPE 29 /* Illegal seek */ #define EROFS 30 /* Read-only file system */ #define EMLINK 31 /* Too many links */ #define EPIPE 32 /* Broken pipe */ #define EDOM 33 /* Math argument out of domain of func */ #define ERANGE 34 /* Math result not representable */ #endif Convert-Binary-C-0.76/tests/include/include/asm-generic/errno.h0000644000175000001440000001200411550664623023110 0ustar mhxusers#ifndef _ASM_GENERIC_ERRNO_H #define _ASM_GENERIC_ERRNO_H #include #define EDEADLK 35 /* Resource deadlock would occur */ #define ENAMETOOLONG 36 /* File name too long */ #define ENOLCK 37 /* No record locks available */ #define ENOSYS 38 /* Function not implemented */ #define ENOTEMPTY 39 /* Directory not empty */ #define ELOOP 40 /* Too many symbolic links encountered */ #define EWOULDBLOCK EAGAIN /* Operation would block */ #define ENOMSG 42 /* No message of desired type */ #define EIDRM 43 /* Identifier removed */ #define ECHRNG 44 /* Channel number out of range */ #define EL2NSYNC 45 /* Level 2 not synchronized */ #define EL3HLT 46 /* Level 3 halted */ #define EL3RST 47 /* Level 3 reset */ #define ELNRNG 48 /* Link number out of range */ #define EUNATCH 49 /* Protocol driver not attached */ #define ENOCSI 50 /* No CSI structure available */ #define EL2HLT 51 /* Level 2 halted */ #define EBADE 52 /* Invalid exchange */ #define EBADR 53 /* Invalid request descriptor */ #define EXFULL 54 /* Exchange full */ #define ENOANO 55 /* No anode */ #define EBADRQC 56 /* Invalid request code */ #define EBADSLT 57 /* Invalid slot */ #define EDEADLOCK EDEADLK #define EBFONT 59 /* Bad font file format */ #define ENOSTR 60 /* Device not a stream */ #define ENODATA 61 /* No data available */ #define ETIME 62 /* Timer expired */ #define ENOSR 63 /* Out of streams resources */ #define ENONET 64 /* Machine is not on the network */ #define ENOPKG 65 /* Package not installed */ #define EREMOTE 66 /* Object is remote */ #define ENOLINK 67 /* Link has been severed */ #define EADV 68 /* Advertise error */ #define ESRMNT 69 /* Srmount error */ #define ECOMM 70 /* Communication error on send */ #define EPROTO 71 /* Protocol error */ #define EMULTIHOP 72 /* Multihop attempted */ #define EDOTDOT 73 /* RFS specific error */ #define EBADMSG 74 /* Not a data message */ #define EOVERFLOW 75 /* Value too large for defined data type */ #define ENOTUNIQ 76 /* Name not unique on network */ #define EBADFD 77 /* File descriptor in bad state */ #define EREMCHG 78 /* Remote address changed */ #define ELIBACC 79 /* Can not access a needed shared library */ #define ELIBBAD 80 /* Accessing a corrupted shared library */ #define ELIBSCN 81 /* .lib section in a.out corrupted */ #define ELIBMAX 82 /* Attempting to link in too many shared libraries */ #define ELIBEXEC 83 /* Cannot exec a shared library directly */ #define EILSEQ 84 /* Illegal byte sequence */ #define ERESTART 85 /* Interrupted system call should be restarted */ #define ESTRPIPE 86 /* Streams pipe error */ #define EUSERS 87 /* Too many users */ #define ENOTSOCK 88 /* Socket operation on non-socket */ #define EDESTADDRREQ 89 /* Destination address required */ #define EMSGSIZE 90 /* Message too long */ #define EPROTOTYPE 91 /* Protocol wrong type for socket */ #define ENOPROTOOPT 92 /* Protocol not available */ #define EPROTONOSUPPORT 93 /* Protocol not supported */ #define ESOCKTNOSUPPORT 94 /* Socket type not supported */ #define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ #define EPFNOSUPPORT 96 /* Protocol family not supported */ #define EAFNOSUPPORT 97 /* Address family not supported by protocol */ #define EADDRINUSE 98 /* Address already in use */ #define EADDRNOTAVAIL 99 /* Cannot assign requested address */ #define ENETDOWN 100 /* Network is down */ #define ENETUNREACH 101 /* Network is unreachable */ #define ENETRESET 102 /* Network dropped connection because of reset */ #define ECONNABORTED 103 /* Software caused connection abort */ #define ECONNRESET 104 /* Connection reset by peer */ #define ENOBUFS 105 /* No buffer space available */ #define EISCONN 106 /* Transport endpoint is already connected */ #define ENOTCONN 107 /* Transport endpoint is not connected */ #define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ #define ETOOMANYREFS 109 /* Too many references: cannot splice */ #define ETIMEDOUT 110 /* Connection timed out */ #define ECONNREFUSED 111 /* Connection refused */ #define EHOSTDOWN 112 /* Host is down */ #define EHOSTUNREACH 113 /* No route to host */ #define EALREADY 114 /* Operation already in progress */ #define EINPROGRESS 115 /* Operation now in progress */ #define ESTALE 116 /* Stale NFS file handle */ #define EUCLEAN 117 /* Structure needs cleaning */ #define ENOTNAM 118 /* Not a XENIX named type file */ #define ENAVAIL 119 /* No XENIX semaphores available */ #define EISNAM 120 /* Is a named type file */ #define EREMOTEIO 121 /* Remote I/O error */ #define EDQUOT 122 /* Quota exceeded */ #define ENOMEDIUM 123 /* No medium found */ #define EMEDIUMTYPE 124 /* Wrong medium type */ #define ECANCELED 125 /* Operation Canceled */ #define ENOKEY 126 /* Required key not available */ #define EKEYEXPIRED 127 /* Key has expired */ #define EKEYREVOKED 128 /* Key has been revoked */ #define EKEYREJECTED 129 /* Key was rejected by service */ /* for robust mutexes */ #define EOWNERDEAD 130 /* Owner died */ #define ENOTRECOVERABLE 131 /* State not recoverable */ #endif Convert-Binary-C-0.76/tests/include/include/asm-generic/ioctl.h0000644000175000001440000000577111550664623023112 0ustar mhxusers#ifndef _ASM_GENERIC_IOCTL_H #define _ASM_GENERIC_IOCTL_H /* ioctl command encoding: 32 bits total, command in lower 16 bits, * size of the parameter structure in the lower 14 bits of the * upper 16 bits. * Encoding the size of the parameter structure in the ioctl request * is useful for catching programs compiled with old versions * and to avoid overwriting user space outside the user buffer area. * The highest 2 bits are reserved for indicating the ``access mode''. * NOTE: This limits the max parameter size to 16kB -1 ! */ /* * The following is for compatibility across the various Linux * platforms. The generic ioctl numbering scheme doesn't really enforce * a type field. De facto, however, the top 8 bits of the lower 16 * bits are indeed used as a type field, so we might just as well make * this explicit here. Please be sure to use the decoding macros * below from now on. */ #define _IOC_NRBITS 8 #define _IOC_TYPEBITS 8 #define _IOC_SIZEBITS 14 #define _IOC_DIRBITS 2 #define _IOC_NRMASK ((1 << _IOC_NRBITS)-1) #define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1) #define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1) #define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1) #define _IOC_NRSHIFT 0 #define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) #define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) #define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) /* * Direction bits. */ #define _IOC_NONE 0U #define _IOC_WRITE 1U #define _IOC_READ 2U #define _IOC(dir,type,nr,size) \ (((dir) << _IOC_DIRSHIFT) | \ ((type) << _IOC_TYPESHIFT) | \ ((nr) << _IOC_NRSHIFT) | \ ((size) << _IOC_SIZESHIFT)) /* provoke compile error for invalid uses of size argument */ extern unsigned int __invalid_size_argument_for_IOC; #define _IOC_TYPECHECK(t) \ ((sizeof(t) == sizeof(t[1]) && \ sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ sizeof(t) : __invalid_size_argument_for_IOC) /* used to create numbers */ #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) #define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) #define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) #define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) #define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) #define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) /* used to decode ioctl numbers.. */ #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) #define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK) #define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK) #define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK) /* ...and for the drivers/sound files... */ #define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT) #define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT) #define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT) #define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT) #define IOCSIZE_SHIFT (_IOC_SIZESHIFT) #endif /* _ASM_GENERIC_IOCTL_H */ Convert-Binary-C-0.76/tests/include/include/features.h0000644000175000001440000002672611550664626021432 0ustar mhxusers/* Copyright (C) 1991,1992,1993,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #ifndef _FEATURES_H #define _FEATURES_H 1 /* These are defined by the user (or the compiler) to specify the desired environment: __STRICT_ANSI__ ISO Standard C. _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. _POSIX_SOURCE IEEE Std 1003.1. _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; if >=199309L, add IEEE Std 1003.1b-1993; if >=199506L, add IEEE Std 1003.1c-1995; if >=200112L, all of IEEE 1003.1-2004 _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if Single Unix conformance is wanted, to 600 for the upcoming sixth revision. _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. _LARGEFILE_SOURCE Some more functions for correct standard I/O. _LARGEFILE64_SOURCE Additional functionality from LFS for large files. _FILE_OFFSET_BITS=N Select default filesystem interface. _BSD_SOURCE ISO C, POSIX, and 4.3BSD things. _SVID_SOURCE ISO C, POSIX, and SVID things. _ATFILE_SOURCE Additional *at interfaces. _GNU_SOURCE All of the above, plus GNU extensions. _REENTRANT Select additionally reentrant object. _THREAD_SAFE Same as _REENTRANT, often used by other systems. _FORTIFY_SOURCE If set to numeric value > 0 additional security measures are defined, according to level. The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__. If none of these are defined, the default is to have _SVID_SOURCE, _BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to 199506L. If more than one of these are defined, they accumulate. For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together give you ISO C, 1003.1, and 1003.2, but nothing else. These are defined by this file and are used by the header files to decide what to declare or define: __USE_ISOC99 Define ISO C99 things. __USE_POSIX Define IEEE Std 1003.1 things. __USE_POSIX2 Define IEEE Std 1003.2 things. __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. __USE_XOPEN Define XPG things. __USE_XOPEN_EXTENDED Define X/Open Unix things. __USE_UNIX98 Define Single Unix V2 things. __USE_XOPEN2K Define XPG6 things. __USE_LARGEFILE Define correct standard I/O things. __USE_LARGEFILE64 Define LFS things with separate names. __USE_FILE_OFFSET64 Define 64bit interface as default. __USE_BSD Define 4.3BSD things. __USE_SVID Define SVID things. __USE_MISC Define things common to BSD and System V Unix. __USE_ATFILE Define *at interfaces and AT_* constants for them. __USE_GNU Define GNU extensions. __USE_REENTRANT Define reentrant/thread-safe *_r functions. __USE_FORTIFY_LEVEL Additional security measures used, according to level. __FAVOR_BSD Favor 4.3BSD things in cases of conflict. The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are defined by this file unconditionally. `__GNU_LIBRARY__' is provided only for compatibility. All new code should use the other symbols to test for features. All macros listed above as possibly being defined by this file are explicitly undefined if they are not explicitly defined. Feature-test macros that are not defined by the user or compiler but are implied by the other feature-test macros defined (or by the lack of any definitions) are defined by the file. */ /* Undefine everything, so we get a clean slate. */ #undef __USE_ISOC99 #undef __USE_POSIX #undef __USE_POSIX2 #undef __USE_POSIX199309 #undef __USE_POSIX199506 #undef __USE_XOPEN #undef __USE_XOPEN_EXTENDED #undef __USE_UNIX98 #undef __USE_XOPEN2K #undef __USE_LARGEFILE #undef __USE_LARGEFILE64 #undef __USE_FILE_OFFSET64 #undef __USE_BSD #undef __USE_SVID #undef __USE_MISC #undef __USE_ATFILE #undef __USE_GNU #undef __USE_REENTRANT #undef __USE_FORTIFY_LEVEL #undef __FAVOR_BSD #undef __KERNEL_STRICT_NAMES /* Suppress kernel-name space pollution unless user expressedly asks for it. */ #ifndef _LOOSE_KERNEL_NAMES # define __KERNEL_STRICT_NAMES #endif /* Always use ISO C things. */ #define __USE_ANSI 1 /* Convenience macros to test the versions of glibc and gcc. Use them like this: #if __GNUC_PREREQ (2,8) ... code requiring gcc 2.8 or later ... #endif Note - they won't work for gcc1 or glibc1, since the _MINOR macros were not defined then. */ #if defined __GNUC__ && defined __GNUC_MINOR__ # define __GNUC_PREREQ(maj, min) \ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) #else # define __GNUC_PREREQ(maj, min) 0 #endif /* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */ #if defined _BSD_SOURCE && \ !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \ defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \ defined _GNU_SOURCE || defined _SVID_SOURCE) # define __FAVOR_BSD 1 #endif /* If _GNU_SOURCE was defined by the user, turn on all the other features. */ #ifdef _GNU_SOURCE # undef _ISOC99_SOURCE # define _ISOC99_SOURCE 1 # undef _POSIX_SOURCE # define _POSIX_SOURCE 1 # undef _POSIX_C_SOURCE # define _POSIX_C_SOURCE 199506L # undef _XOPEN_SOURCE # define _XOPEN_SOURCE 600 # undef _XOPEN_SOURCE_EXTENDED # define _XOPEN_SOURCE_EXTENDED 1 # undef _LARGEFILE64_SOURCE # define _LARGEFILE64_SOURCE 1 # undef _BSD_SOURCE # define _BSD_SOURCE 1 # undef _SVID_SOURCE # define _SVID_SOURCE 1 # undef _ATFILE_SOURCE # define _ATFILE_SOURCE 1 #endif /* If nothing (other than _GNU_SOURCE) is defined, define _BSD_SOURCE and _SVID_SOURCE. */ #if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \ !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \ !defined _XOPEN_SOURCE && !defined _XOPEN_SOURCE_EXTENDED && \ !defined _BSD_SOURCE && !defined _SVID_SOURCE) # define _BSD_SOURCE 1 # define _SVID_SOURCE 1 #endif /* This is to enable the ISO C99 extension. Also recognize the old macro which was used prior to the standard acceptance. This macro will eventually go away and the features enabled by default once the ISO C99 standard is widely adopted. */ #if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) # define __USE_ISOC99 1 #endif /* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2 (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */ #if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE - 0) >= 500) && \ !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE) # define _POSIX_SOURCE 1 # if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500 # define _POSIX_C_SOURCE 2 # elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600 # define _POSIX_C_SOURCE 199506L # else # define _POSIX_C_SOURCE 200112L # endif #endif #if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE # define __USE_POSIX 1 #endif #if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE # define __USE_POSIX2 1 #endif #if (_POSIX_C_SOURCE - 0) >= 199309L # define __USE_POSIX199309 1 #endif #if (_POSIX_C_SOURCE - 0) >= 199506L # define __USE_POSIX199506 1 #endif #if (_POSIX_C_SOURCE - 0) >= 200112L # define __USE_XOPEN2K 1 #endif #ifdef _XOPEN_SOURCE # define __USE_XOPEN 1 # if (_XOPEN_SOURCE - 0) >= 500 # define __USE_XOPEN_EXTENDED 1 # define __USE_UNIX98 1 # undef _LARGEFILE_SOURCE # define _LARGEFILE_SOURCE 1 # if (_XOPEN_SOURCE - 0) >= 600 # define __USE_XOPEN2K 1 # undef __USE_ISOC99 # define __USE_ISOC99 1 # endif # else # ifdef _XOPEN_SOURCE_EXTENDED # define __USE_XOPEN_EXTENDED 1 # endif # endif #endif #ifdef _LARGEFILE_SOURCE # define __USE_LARGEFILE 1 #endif #ifdef _LARGEFILE64_SOURCE # define __USE_LARGEFILE64 1 #endif #if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 # define __USE_FILE_OFFSET64 1 #endif #if defined _BSD_SOURCE || defined _SVID_SOURCE # define __USE_MISC 1 #endif #ifdef _BSD_SOURCE # define __USE_BSD 1 #endif #ifdef _SVID_SOURCE # define __USE_SVID 1 #endif #ifdef _ATFILE_SOURCE # define __USE_ATFILE 1 #endif #ifdef _GNU_SOURCE # define __USE_GNU 1 #endif #if defined _REENTRANT || defined _THREAD_SAFE # define __USE_REENTRANT 1 #endif #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \ && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 # if _FORTIFY_SOURCE > 1 # define __USE_FORTIFY_LEVEL 2 # else # define __USE_FORTIFY_LEVEL 1 # endif #else # define __USE_FORTIFY_LEVEL 0 #endif /* We do support the IEC 559 math functionality, real and complex. */ #define __STDC_IEC_559__ 1 #define __STDC_IEC_559_COMPLEX__ 1 /* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1. */ #define __STDC_ISO_10646__ 200009L /* This macro indicates that the installed library is the GNU C Library. For historic reasons the value now is 6 and this will stay from now on. The use of this variable is deprecated. Use __GLIBC__ and __GLIBC_MINOR__ now (see below) when you want to test for a specific GNU C library version and use the values in to get the sonames of the shared libraries. */ #undef __GNU_LIBRARY__ #define __GNU_LIBRARY__ 6 /* Major and minor version number of the GNU C library package. Use these macros to test for features in specific releases. */ #define __GLIBC__ 2 #define __GLIBC_MINOR__ 4 #define __GLIBC_PREREQ(maj, min) \ ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) /* Decide whether a compiler supports the long long datatypes. */ #if defined __GNUC__ \ || (defined __PGI && defined __i386__ ) \ || (defined __INTEL_COMPILER && (defined __i386__ || defined __ia64__)) \ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) # define __GLIBC_HAVE_LONG_LONG 1 #endif /* This is here only because every header file already includes this one. */ #ifndef __ASSEMBLER__ # ifndef _SYS_CDEFS_H # include # endif /* If we don't have __REDIRECT, prototypes will be missing if __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */ # if defined __USE_FILE_OFFSET64 && !defined __REDIRECT # define __USE_LARGEFILE 1 # define __USE_LARGEFILE64 1 # endif #endif /* !ASSEMBLER */ /* Decide whether we can define 'extern inline' functions in headers. */ #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ # define __USE_EXTERN_INLINES 1 #endif /* This is here only because every header file already includes this one. Get the definitions of all the appropriate `__stub_FUNCTION' symbols. contains `#define __stub_FUNCTION' when FUNCTION is a stub that will always return failure (and set errno to ENOSYS). */ #include #endif /* features.h */ Convert-Binary-C-0.76/tests/include/include/limits.h0000644000175000001440000001076411550664626021110 0ustar mhxusers/* Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The GNU C Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU C Library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ /* * ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types */ #ifndef _LIBC_LIMITS_H_ #define _LIBC_LIMITS_H_ 1 #include /* Maximum length of any multibyte character in any locale. We define this value here since the gcc header does not define the correct value. */ #define MB_LEN_MAX 16 /* If we are not using GNU CC we have to define all the symbols ourself. Otherwise use gcc's definitions (see below). */ #if !defined __GNUC__ || __GNUC__ < 2 /* We only protect from multiple inclusion here, because all the other #include's protect themselves, and in GCC 2 we may #include_next through multiple copies of this file before we get to GCC's. */ # ifndef _LIMITS_H # define _LIMITS_H 1 #include /* We don't have #include_next. Define ANSI for standard 32-bit words. */ /* These assume 8-bit `char's, 16-bit `short int's, and 32-bit `int's and `long int's. */ /* Number of bits in a `char'. */ # define CHAR_BIT 8 /* Minimum and maximum values a `signed char' can hold. */ # define SCHAR_MIN (-128) # define SCHAR_MAX 127 /* Maximum value an `unsigned char' can hold. (Minimum is 0.) */ # define UCHAR_MAX 255 /* Minimum and maximum values a `char' can hold. */ # ifdef __CHAR_UNSIGNED__ # define CHAR_MIN 0 # define CHAR_MAX UCHAR_MAX # else # define CHAR_MIN SCHAR_MIN # define CHAR_MAX SCHAR_MAX # endif /* Minimum and maximum values a `signed short int' can hold. */ # define SHRT_MIN (-32768) # define SHRT_MAX 32767 /* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */ # define USHRT_MAX 65535 /* Minimum and maximum values a `signed int' can hold. */ # define INT_MIN (-INT_MAX - 1) # define INT_MAX 2147483647 /* Maximum value an `unsigned int' can hold. (Minimum is 0.) */ # define UINT_MAX 4294967295U /* Minimum and maximum values a `signed long int' can hold. */ # if __WORDSIZE == 64 # define LONG_MAX 9223372036854775807L # else # define LONG_MAX 2147483647L # endif # define LONG_MIN (-LONG_MAX - 1L) /* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */ # if __WORDSIZE == 64 # define ULONG_MAX 18446744073709551615UL # else # define ULONG_MAX 4294967295UL # endif # ifdef __USE_ISOC99 /* Minimum and maximum values a `signed long long int' can hold. */ # define LLONG_MAX 9223372036854775807LL # define LLONG_MIN (-LLONG_MAX - 1LL) /* Maximum value an `unsigned long long int' can hold. (Minimum is 0.) */ # define ULLONG_MAX 18446744073709551615ULL # endif /* ISO C99 */ # endif /* limits.h */ #endif /* GCC 2. */ #endif /* !_LIBC_LIMITS_H_ */ /* Get the compiler's limits.h, which defines almost all the ISO constants. We put this #include_next outside the double inclusion check because it should be possible to include this file more than once and still get the definitions from gcc's header. */ #if defined __GNUC__ && !defined _GCC_LIMITS_H_ /* `_GCC_LIMITS_H_' is what GCC's file defines. */ # include_next #endif /* The files in some gcc versions don't define LLONG_MIN, LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for ages are available. */ #if defined __USE_ISOC99 && defined __GNUC__ # ifndef LLONG_MIN # define LLONG_MIN (-LLONG_MAX-1) # endif # ifndef LLONG_MAX # define LLONG_MAX __LONG_LONG_MAX__ # endif # ifndef ULLONG_MAX # define ULLONG_MAX (LLONG_MAX * 2ULL + 1) # endif #endif #ifdef __USE_POSIX /* POSIX adds things to . */ # include #endif #ifdef __USE_POSIX2 # include #endif #ifdef __USE_XOPEN # include #endif Convert-Binary-C-0.76/tests/222_ieee.t0000644000175000001440000000621011550664620016032 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:24 +0200 $ # $Revision: 16 $ # $Source: /tests/222_ieee.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 50; } $reason = Convert::Binary::C::feature('ieeefp') ? '' : 'no IEEE floating point'; $SIG{__WARN__} = sub { push @warn, $_[0] }; my $c = eval { new Convert::Binary::C }; skip($reason,$@,''); # check with reference data while( ) { s/^\s*//; s/\s*$//; s/#.*//; /\S/ or next; my($value, $double, $single) = split /\s*\|\s*/; my $sb = hex2str( $single ); my $db = hex2str( $double ); my $sl = reverse $sb; my $dl = reverse $db; my($u,$p); print "# checking $value\n"; # Single Precision, BigEndian $c->FloatSize( length $sb )->ByteOrder( 'BigEndian' ); $p = $c->pack('float', $value); printf "# pack(\$value) => %s\n", hexdump($p); skip( $reason, $p, $sb ); $u = $c->unpack('float', $sb); print "# unpack(\$sb) => $u\n"; skip( $reason, delta_ok( $value, $u, 1e-7 ) ); # Double Precision, BigEndian $c->FloatSize( length $db )->ByteOrder( 'BigEndian' ); $p = $c->pack('float', $value); printf "# pack(\$value) => %s\n", hexdump($p); skip( $reason, $p, $db ); $u = $c->unpack('float', $db); print "# unpack(\$db) => $u\n"; skip( $reason, delta_ok( $value, $u, 1e-15 ) ); # Single Precision, LittleEndian $c->FloatSize( length $sl )->ByteOrder( 'LittleEndian' ); $p = $c->pack('float', $value); printf "# pack(\$value) => %s\n", hexdump($p); skip( $reason, $p, $sl ); $u = $c->unpack('float', $sl); print "# unpack(\$sl) => $u\n"; skip( $reason, delta_ok( $value, $u, 1e-7 ) ); # Double Precision, LittleEndian $c->FloatSize( length $dl )->ByteOrder( 'LittleEndian' ); $p = $c->pack('float', $value); printf "# pack(\$value) => %s\n", hexdump($p); skip( $reason, $p, $dl ); $u = $c->unpack('float', $dl); print "# unpack(\$dl) => $u\n"; skip( $reason, delta_ok( $value, $u, 1e-15 ) ); } skip( $reason, scalar @warn, 0, "unexpected warnings" ); sub delta_ok { my($ref, $val, $delta) = @_; abs($val-$ref) <= $delta * abs($ref) and return 1; # catch the different cases of 'infinity' $ref > 1e10 and $val !~ /^[+-]?\d*(?:\.\d*)(?:[eE][+-]?\d+)?$/ and return 1; return 0; } sub hex2str { pack 'C*', map hex, split ' ', $_[0] } sub hexdump { join ' ', map { sprintf '%02X', $_ } unpack 'C*', $_[0] } __DATA__ -1.0 | BF F0 00 00 00 00 00 00 | BF 80 00 00 0.0 | 00 00 00 00 00 00 00 00 | 00 00 00 00 0.4 | 3F D9 99 99 99 99 99 9A | 3E CC CC CD 1.0 | 3F F0 00 00 00 00 00 00 | 3F 80 00 00 3.1415926535 | 40 09 21 FB 54 41 17 44 | 40 49 0F DB 1.220703125e-4 | 3F 20 00 00 00 00 00 00 | 39 00 00 00 Convert-Binary-C-0.76/tests/204_enum.t0000644000175000001440000001061011550664620016066 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:21 +0200 $ # $Revision: 19 $ # $Source: /tests/204_enum.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 182 } eval { $p = new Convert::Binary::C ByteOrder => 'BigEndian', EnumSize => 4, EnumType => 'Integer'; }; ok($@,'',"failed to create Convert::Binary::C object"); eval { $p->parse(<<'EOF'); enum ubyte_u { ZERO, ONE, TWO, THREE, ANOTHER_ONE = 1, BIGGEST = 255 }; enum sbyte_u { MINUS_TWO = -2, MINUS_ONE, Z_E_R_O, PLUS_ONE, NEG = -1, NOTHING, POS, MIN = -128, MAX = 127 }; enum uword_u { W_BIGGEST = 65535 }; enum sword_u { W_MIN = -32768, W_MAX = 32767 }; enum ulong_u { WHATEVER = 65536 }; enum slong_u { NEGATIVE = -32769 }; enum sword_s { SWS = -129 }; enum uword_s { UWS = 128 }; enum slong_s { SLS = -32769 }; enum ulong_s { ULS = 32768 }; EOF }; ok($@,'',"parse() failed"); # catch all warnings for further checks $SIG{__WARN__} = sub { push @warn, $_[0] }; sub chkwarn { ok( scalar @warn, scalar @_, "wrong number of warnings" ); ok( shift @warn, $_ ) for @_; @warn = (); } #----------------------------------------------------- # check sizeof() #----------------------------------------------------- ok($p->sizeof('ubyte_u'),4,"ubyte_u size"); ok($p->sizeof('sbyte_u'),4,"sbyte_u size"); ok($p->sizeof('uword_u'),4,"uword_u size"); ok($p->sizeof('sword_u'),4,"sword_u size"); ok($p->sizeof('ulong_u'),4,"ulong_u size"); ok($p->sizeof('slong_u'),4,"slong_u size"); eval { $p->EnumSize( -1 ) }; ok($@,'',"failed in configure"); chkwarn; ok($p->sizeof('ubyte_u'),2,"ubyte_u size"); ok($p->sizeof('sbyte_u'),1,"sbyte_u size"); ok($p->sizeof('uword_u'),4,"uword_u size"); ok($p->sizeof('sword_u'),2,"sword_u size"); ok($p->sizeof('ulong_u'),4,"ulong_u size"); ok($p->sizeof('slong_u'),4,"slong_u size"); ok($p->sizeof('uword_s'),2,"uword_u size"); ok($p->sizeof('sword_s'),2,"sword_u size"); ok($p->sizeof('ulong_s'),4,"ulong_u size"); ok($p->sizeof('slong_s'),4,"slong_u size"); eval { $p->EnumSize( 0 ) }; ok($@,'',"failed in configure"); chkwarn; ok($p->sizeof('ubyte_u'),1,"ubyte_u size"); ok($p->sizeof('sbyte_u'),1,"sbyte_u size"); ok($p->sizeof('uword_u'),2,"uword_u size"); ok($p->sizeof('sword_u'),2,"sword_u size"); ok($p->sizeof('ulong_u'),4,"ulong_u size"); ok($p->sizeof('slong_u'),4,"slong_u size"); #----------------------------------------------------- # check enum types #----------------------------------------------------- @ubyte = ( [ 0, 'ZERO' ], [ 1, 'ONE' ], [ 2, 'TWO' ], [ 3, 'THREE' ], [ 42, ''], [255, 'BIGGEST' ], ); for( @ubyte ) { eval { $pk = $p->unpack( 'ubyte_u', pack('C', $_->[0]) ) }; ok($@,'',"failed for (@$_)"); chkwarn; ok($_->[0] == $pk); chkwarn; ok($_->[1] ne $pk); chkwarn; } eval { $p->EnumType( 'String' ) }; ok($@,'',"failed in configure"); chkwarn; for( @ubyte ) { eval { $pk = $p->unpack( 'ubyte_u', pack('C', $_->[0]) ) }; ok($@,'',"failed for (@$_)"); chkwarn; ok($_->[0] != $pk ? 1 : $_->[0] == 0); chkwarn( qr/Argument "$pk" isn't numeric/ ); ok($_->[1] eq $pk); chkwarn; } eval { $p->EnumType( 'Both' ) }; ok($@,'',"failed in configure"); chkwarn; for( @ubyte ) { eval { $pk = $p->unpack( 'ubyte_u', pack('C', $_->[0]) ) }; ok($@,'',"failed for (@$_)"); chkwarn; ok($_->[0] == $pk); chkwarn; ok($_->[1] eq $pk); chkwarn; } #----------------------------------------------------- # check pack/unpack # (some of these may issue warnings in the future) #----------------------------------------------------- @sbyte = ( ['ZERO', 0, 'Z_E_R_O' ], ['NOTHING', 0, 'Z_E_R_O' ], [-2, -2, 'MINUS_TWO'], ['-2', -2, 'MINUS_TWO'], ['POS', 1, 'PLUS_ONE' ], ['THREE', 3, '' ], ); for( @sbyte ) { eval { $pk = $p->unpack( 'sbyte_u', $p->pack( 'sbyte_u', $_->[0] ) ) }; ok($@,'',"failed for (@$_)"); chkwarn; ok($_->[1] == $pk); chkwarn; ok($_->[2] eq $pk); chkwarn; } Convert-Binary-C-0.76/tests/803_pod_coverage.t0000644000175000001440000000210511550664622017566 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:28 +0200 $ # $Revision: 7 $ # $Source: /tests/803_pod_coverage.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More; eval 'use Pod::Coverage 0.10'; plan skip_all => "testing pod coverage requires Pod::Coverage 0.10" if $@; eval 'use Test::Pod::Coverage 1.08'; plan skip_all => "testing pod coverage requires Test::Pod::Coverage 1.08" if $@; plan tests => 2; my $trust_parents = { coverage_class => 'Pod::Coverage::CountParents' }; pod_coverage_ok("Convert::Binary::C"); pod_coverage_ok("Convert::Binary::C::Cached", $trust_parents); # Convert::Binary::C::Cached simply inherits Convert::Binary::C documentation Convert-Binary-C-0.76/tests/503_bfgeneric.t0000644000175000001440000616601211550664621017067 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:27 +0200 $ # $Revision: 9 $ # $Source: /tests/503_bfgeneric.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 9031; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $BIN = $] < 5.006 ? '%x' : '%08b'; my @compiler = ( { 'name' => 'cygwin/gcc32_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'decosf_alpha/cc_plain', 'config' => { 'LongSize' => 8, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 8, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 16, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'freebsd_alpha/gcc_plain', 'config' => { 'LongSize' => 8, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 8, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'hpux11_ia64/cc_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'BigEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 16, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'linux/armgcc34_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'CompoundAlignment' => 4 } }, { 'name' => 'linux/gcc41_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 12, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'linux/hppagcc33_plain', 'config' => { 'LongSize' => 8, 'IntSize' => 4, 'ByteOrder' => 'BigEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 8, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 16, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'linux/vaxgcc33_plain', 'config' => { 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'CompoundAlignment' => 1 } }, { 'name' => 'linux_parisc64/gcc_plain', 'config' => { 'ByteOrder' => 'BigEndian', 'LongSize' => '4', 'IntSize' => '4', 'ShortSize' => '2', 'DoubleSize' => '8', 'CharSize' => '1', 'PointerSize' => '4', 'EnumSize' => '4', 'FloatSize' => '4', 'LongLongSize' => '8', 'Alignment' => '8', 'LongDoubleSize' => '8', 'HasCPPComments' => 1, 'CompoundAlignment' => '1' } } ); my @c = eval { map { Convert::Binary::C->new(Bitfields => {Engine => 'Generic'}, EnumType => 'String', %{$_->{config}}) } @compiler }; is($@, '', "failed to create Convert::Binary::C objects"); sub debug { $ENV{CBC_TEST_DEBUG} and diag(@_); } sub showbits { join ' ', map { sprintf $BIN, $_ } unpack "C*", shift; } sub get_data { my $want = shift || 'list'; my $term = shift || '[-=]'; local $_; my @lines; while () { if (/^($term)$/) { $term = $1; last; } push @lines, $_ } if ($want eq 'list') { chomp @lines; return $term, @lines; } return $term, join('', @lines); } sub reccmp { my($ref, $val) = @_; unless (defined $ref and defined $val) { return defined($ref) == defined($val); } ref $ref or return $ref eq $val; if (ref $ref eq 'ARRAY') { @$ref == @$val or return 0; for (0..$#$ref) { reccmp($ref->[$_], $val->[$_]) or return 0; } } elsif (ref $ref eq 'HASH') { @{[keys %$ref]} == @{[keys %$val]} or return 0; for (keys %$ref) { reccmp($ref->{$_}, $val->{$_}) or return 0; } } else { return 0 } return 1; } while (1) { my(undef, $code) = get_data('block'); last if $code !~ /\S/; debug("Code:\n$code"); eval { $_->clean->parse($code) for @c }; is($@, '', "parse code") or diag($code); is(scalar $c[0]->compound_names, 1, join(', ', $c[0]->compound_names)); my($type) = $c[0]->compound_names; while (1) { my($term, $init, @packed) = get_data; debug("Init: $init"); my $data = eval $init; my $succ = 0; for (@packed) { $_ = pack "H*", $_ } for my $i (0 .. $#packed) { debug("Compiler: [$i] $compiler[$i]{name}"); $c[$i]->sizeof($type) == length($packed[$i]) and $succ++; my $p = $c[$i]->pack($type, $data); if ($p eq $packed[$i]) { $succ++; } else { diag("[$i] $compiler[$i]{name}\n", $code, "data = $init\n", "expected: ", showbits($packed[$i]), "\n", " got: ", showbits($p), "\n"); } my $u = $c[$i]->unpack($type, $packed[$i]); if (reccmp($data, $u)) { $succ++; } else { diag("[$i] $compiler[$i]{name}\n", $code, "data = $init\n"); eval { require Data::Dumper; diag(Data::Dumper->Dump([$data, $u], [qw(*expected *got)])); }; } } is($succ, 3*@packed, "$type ($init)"); last if $term eq '='; } } __DATA__ struct basic { unsigned int a:9; }; - {a=>509} fd010000 fd010000 fd010000 fe800000 fd010000 fd010000 fe800000 fd010000 fe800000 - {a=>352} 60010000 60010000 60010000 b0000000 60010000 60010000 b0000000 60010000 b0000000 - {a=>349} 5d010000 5d010000 5d010000 ae800000 5d010000 5d010000 ae800000 5d010000 ae800000 - {a=>398} 8e010000 8e010000 8e010000 c7000000 8e010000 8e010000 c7000000 8e010000 c7000000 - {a=>453} c5010000 c5010000 c5010000 e2800000 c5010000 c5010000 e2800000 c5010000 e2800000 = struct basic { unsigned int a:9; unsigned int b:2; }; - {a=>228,b=>3} e4060000 e4060000 e4060000 72600000 e4060000 e4060000 72600000 e4060000 72600000 - {a=>163,b=>0} a3000000 a3000000 a3000000 51800000 a3000000 a3000000 51800000 a3000000 51800000 - {a=>333,b=>3} 4d070000 4d070000 4d070000 a6e00000 4d070000 4d070000 a6e00000 4d070000 a6e00000 - {a=>495,b=>3} ef070000 ef070000 ef070000 f7e00000 ef070000 ef070000 f7e00000 ef070000 f7e00000 - {a=>193,b=>3} c1060000 c1060000 c1060000 60e00000 c1060000 c1060000 60e00000 c1060000 60e00000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; }; - {a=>115,b=>1} 73020000 73020000 73020000 39a00000 73020000 73020000 39a00000 73020000 39a00000 - {a=>283,b=>0} 1b010000 1b010000 1b010000 8d800000 1b010000 1b010000 8d800000 1b010000 8d800000 - {a=>12,b=>1} 0c020000 0c020000 0c020000 06200000 0c020000 0c020000 06200000 0c020000 06200000 - {a=>417,b=>3} a1070000 a1070000 a1070000 d0e00000 a1070000 a1070000 d0e00000 a1070000 d0e00000 - {a=>129,b=>2} 81040000 81040000 81040000 40c00000 81040000 81040000 40c00000 81040000 40c00000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; unsigned int c:2; }; - {c=>1,a=>473,b=>1} d9430000 d9430000 d9430000 eca10000 d9430000 d9430000 eca10000 d9430000 eca10000 - {c=>2,a=>149,b=>2} 95840000 95840000 95840000 4ac20000 95840000 95840000 4ac20000 95840000 4ac20000 - {c=>3,a=>227,b=>2} e3c40000 e3c40000 e3c40000 71c30000 e3c40000 e3c40000 71c30000 e3c40000 71c30000 - {c=>0,a=>114,b=>0} 72000000 72000000 72000000 39000000 72000000 72000000 39000000 72000000 39000000 - {c=>2,a=>83,b=>3} 53860000 53860000 53860000 29e20000 53860000 53860000 29e20000 53860000 29e20000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; unsigned int c:2; unsigned int d; }; - {c=>0,a=>134,b=>3,d=>231} 86060000e7000000 86060000e7000000 86060000e7000000 43600000000000e7 86060000e7000000 86060000e7000000 43600000000000e7 86060000e7000000 43600000000000e7 - {c=>0,a=>60,b=>0,d=>10} 3c0000000a000000 3c0000000a000000 3c0000000a000000 1e0000000000000a 3c0000000a000000 3c0000000a000000 1e0000000000000a 3c0000000a000000 1e0000000000000a - {c=>2,a=>170,b=>2,d=>252} aa840000fc000000 aa840000fc000000 aa840000fc000000 55420000000000fc aa840000fc000000 aa840000fc000000 55420000000000fc aa840000fc000000 55420000000000fc - {c=>3,a=>53,b=>1,d=>248} 35c20000f8000000 35c20000f8000000 35c20000f8000000 1aa30000000000f8 35c20000f8000000 35c20000f8000000 1aa30000000000f8 35c20000f8000000 1aa30000000000f8 - {c=>3,a=>74,b=>3,d=>85} 4ac6000055000000 4ac6000055000000 4ac6000055000000 2563000000000055 4ac6000055000000 4ac6000055000000 2563000000000055 4ac6000055000000 2563000000000055 = struct basic { char a; unsigned int b:9; }; - {a=>95,b=>334} 5f4e0100 5f4e0100 5f4e0100 5fa70000 5f4e0100 5f4e0100 5fa70000 5f4e0100 5fa70000 - {a=>43,b=>139} 2b8b0000 2b8b0000 2b8b0000 2b458000 2b8b0000 2b8b0000 2b458000 2b8b0000 2b458000 - {a=>103,b=>500} 67f40100 67f40100 67f40100 67fa0000 67f40100 67f40100 67fa0000 67f40100 67fa0000 - {a=>-82,b=>491} aeeb0100 aeeb0100 aeeb0100 aef58000 aeeb0100 aeeb0100 aef58000 aeeb0100 aef58000 - {a=>-81,b=>456} afc80100 afc80100 afc80100 afe40000 afc80100 afc80100 afe40000 afc80100 afe40000 = struct basic { char a; unsigned int b:9; unsigned int c:2; }; - {c=>1,a=>62,b=>455} 3ec70300 3ec70300 3ec70300 3ee3a000 3ec70300 3ec70300 3ee3a000 3ec70300 3ee3a000 - {c=>0,a=>-46,b=>32} d2200000 d2200000 d2200000 d2100000 d2200000 d2200000 d2100000 d2200000 d2100000 - {c=>0,a=>55,b=>501} 37f50100 37f50100 37f50100 37fa8000 37f50100 37f50100 37fa8000 37f50100 37fa8000 - {c=>3,a=>72,b=>97} 48610600 48610600 48610600 4830e000 48610600 48610600 4830e000 48610600 4830e000 - {c=>3,a=>91,b=>180} 5bb40600 5bb40600 5bb40600 5b5a6000 5bb40600 5bb40600 5b5a6000 5bb40600 5b5a6000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-64,b=>1} c0010200 c0010200 c0010200 c000a000 c0010200 c0010200 c000a000 c0010200 c000a000 - {c=>3,a=>43,b=>409} 2b990700 2b990700 2b990700 2bcce000 2b990700 2b990700 2bcce000 2b990700 2bcce000 - {c=>1,a=>-30,b=>413} e29d0300 e29d0300 e29d0300 e2cea000 e29d0300 e29d0300 e2cea000 e29d0300 e2cea000 - {c=>3,a=>107,b=>399} 6b8f0700 6b8f0700 6b8f0700 6bc7e000 6b8f0700 6b8f0700 6bc7e000 6b8f0700 6bc7e000 - {c=>2,a=>-59,b=>474} c5da0500 c5da0500 c5da0500 c5ed4000 c5da0500 c5da0500 c5ed4000 c5da0500 c5ed4000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>0,a=>-60,b=>352,d=>2} c4608100 c4608100 c4608100 c4b00200 c4608100 c4608100 c4b00200 c4608100 c4b00200 - {c=>1,a=>89,b=>103,d=>2} 59678200 59678200 59678200 5933a200 59678200 59678200 5933a200 59678200 5933a200 - {c=>0,a=>31,b=>136,d=>2} 1f888000 1f888000 1f888000 1f440200 1f888000 1f888000 1f440200 1f888000 1f440200 - {c=>0,a=>-103,b=>343,d=>0} 99570100 99570100 99570100 99ab8000 99570100 99570100 99ab8000 99570100 99ab8000 - {c=>2,a=>-102,b=>358,d=>0} 9a660500 9a660500 9a660500 9ab34000 9a660500 9a660500 9ab34000 9a660500 9ab34000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>205,c=>0,a=>57,b=>85,d=>3} 3955c000cd000000 3955c000cd000000 3955c000cd000000 392a8300000000cd 3955c000cd000000 3955c000cd000000 392a8300000000cd 3955c000cd000000 392a8300000000cd - {e=>218,c=>2,a=>-89,b=>129,d=>1} a7814400da000000 a7814400da000000 a7814400da000000 a740c100000000da a7814400da000000 a7814400da000000 a740c100000000da a7814400da000000 a740c100000000da - {e=>90,c=>3,a=>105,b=>77,d=>1} 694d46005a000000 694d46005a000000 694d46005a000000 6926e1000000005a 694d46005a000000 694d46005a000000 6926e1000000005a 694d46005a000000 6926e1000000005a - {e=>82,c=>3,a=>89,b=>507,d=>0} 59fb070052000000 59fb070052000000 59fb070052000000 59fde00000000052 59fb070052000000 59fb070052000000 59fde00000000052 59fb070052000000 59fde00000000052 - {e=>10,c=>1,a=>-7,b=>126,d=>0} f97e02000a000000 f97e02000a000000 f97e02000a000000 f93f20000000000a f97e02000a000000 f97e02000a000000 f93f20000000000a f97e02000a000000 f93f20000000000a = struct basic { short a; unsigned int b:9; }; - {a=>44,b=>211} 2c00d300 2c00d300 2c00d300 002c6980 2c00d300 2c00d300 002c6980 2c00d300 002c6980 - {a=>106,b=>55} 6a003700 6a003700 6a003700 006a1b80 6a003700 6a003700 006a1b80 6a003700 006a1b80 - {a=>-99,b=>100} 9dff6400 9dff6400 9dff6400 ff9d3200 9dff6400 9dff6400 ff9d3200 9dff6400 ff9d3200 - {a=>-25,b=>17} e7ff1100 e7ff1100 e7ff1100 ffe70880 e7ff1100 e7ff1100 ffe70880 e7ff1100 ffe70880 - {a=>-60,b=>31} c4ff1f00 c4ff1f00 c4ff1f00 ffc40f80 c4ff1f00 c4ff1f00 ffc40f80 c4ff1f00 ffc40f80 = struct basic { short a; unsigned int b:9; unsigned int c:2; }; - {c=>0,a=>-3,b=>65} fdff4100 fdff4100 fdff4100 fffd2080 fdff4100 fdff4100 fffd2080 fdff4100 fffd2080 - {c=>3,a=>127,b=>141} 7f008d06 7f008d06 7f008d06 007f46e0 7f008d06 7f008d06 007f46e0 7f008d06 007f46e0 - {c=>1,a=>-53,b=>123} cbff7b02 cbff7b02 cbff7b02 ffcb3da0 cbff7b02 cbff7b02 ffcb3da0 cbff7b02 ffcb3da0 - {c=>3,a=>-110,b=>69} 92ff4506 92ff4506 92ff4506 ff9222e0 92ff4506 92ff4506 ff9222e0 92ff4506 ff9222e0 - {c=>1,a=>-63,b=>183} c1ffb702 c1ffb702 c1ffb702 ffc15ba0 c1ffb702 c1ffb702 ffc15ba0 c1ffb702 ffc15ba0 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-32,b=>280} e0ff1803 e0ff1803 e0ff1803 ffe08c20 e0ff1803 e0ff1803 ffe08c20 e0ff1803 ffe08c20 - {c=>0,a=>-76,b=>473} b4ffd901 b4ffd901 b4ffd901 ffb4ec80 b4ffd901 b4ffd901 ffb4ec80 b4ffd901 ffb4ec80 - {c=>2,a=>-60,b=>271} c4ff0f05 c4ff0f05 c4ff0f05 ffc487c0 c4ff0f05 c4ff0f05 ffc487c0 c4ff0f05 ffc487c0 - {c=>1,a=>72,b=>50} 48003202 48003202 48003202 00481920 48003202 48003202 00481920 48003202 00481920 - {c=>1,a=>-97,b=>440} 9fffb803 9fffb803 9fffb803 ff9fdc20 9fffb803 9fffb803 ff9fdc20 9fffb803 ff9fdc20 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>3,a=>-78,b=>286,d=>1} b2ff1e47 b2ff1e47 b2ff1e47 ffb28f61 b2ff1e47 b2ff1e47 ffb28f61 b2ff1e47 ffb28f61 - {c=>2,a=>-105,b=>330,d=>3} 97ff4ac5 97ff4ac5 97ff4ac5 ff97a543 97ff4ac5 97ff4ac5 ff97a543 97ff4ac5 ff97a543 - {c=>0,a=>73,b=>33,d=>1} 49002140 49002140 49002140 00491081 49002140 49002140 00491081 49002140 00491081 - {c=>0,a=>-67,b=>463,d=>2} bdffcf81 bdffcf81 bdffcf81 ffbde782 bdffcf81 bdffcf81 ffbde782 bdffcf81 ffbde782 - {c=>0,a=>87,b=>452,d=>2} 5700c481 5700c481 5700c481 0057e202 5700c481 5700c481 0057e202 5700c481 0057e202 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>78,c=>2,a=>-39,b=>178,d=>3} d9ffb2c44e000000 d9ffb2c44e000000 d9ffb2c44e000000 ffd959430000004e d9ffb2c44e000000 d9ffb2c44e000000 ffd959430000004e d9ffb2c44e000000 ffd959430000004e - {e=>4,c=>2,a=>51,b=>65,d=>2} 3300418404000000 3300418404000000 3300418404000000 003320c200000004 3300418404000000 3300418404000000 003320c200000004 3300418404000000 003320c200000004 - {e=>225,c=>1,a=>-16,b=>99,d=>1} f0ff6342e1000000 f0ff6342e1000000 f0ff6342e1000000 fff031a1000000e1 f0ff6342e1000000 f0ff6342e1000000 fff031a1000000e1 f0ff6342e1000000 fff031a1000000e1 - {e=>23,c=>0,a=>-1,b=>254,d=>0} fffffe0017000000 fffffe0017000000 fffffe0017000000 ffff7f0000000017 fffffe0017000000 fffffe0017000000 ffff7f0000000017 fffffe0017000000 ffff7f0000000017 - {e=>75,c=>0,a=>7,b=>128,d=>1} 070080404b000000 070080404b000000 070080404b000000 000740010000004b 070080404b000000 070080404b000000 000740010000004b 070080404b000000 000740010000004b = struct basic { int a; unsigned int b:9; }; - {a=>26,b=>294} 1a00000026010000 1a00000026010000 1a00000026010000 0000001a93000000 1a00000026010000 1a00000026010000 0000001a93000000 1a00000026010000 0000001a93000000 - {a=>120,b=>54} 7800000036000000 7800000036000000 7800000036000000 000000781b000000 7800000036000000 7800000036000000 000000781b000000 7800000036000000 000000781b000000 - {a=>-16,b=>377} f0ffffff79010000 f0ffffff79010000 f0ffffff79010000 fffffff0bc800000 f0ffffff79010000 f0ffffff79010000 fffffff0bc800000 f0ffffff79010000 fffffff0bc800000 - {a=>38,b=>179} 26000000b3000000 26000000b3000000 26000000b3000000 0000002659800000 26000000b3000000 26000000b3000000 0000002659800000 26000000b3000000 0000002659800000 - {a=>116,b=>289} 7400000021010000 7400000021010000 7400000021010000 0000007490800000 7400000021010000 7400000021010000 0000007490800000 7400000021010000 0000007490800000 = struct basic { int a; unsigned int b:9; unsigned int c:2; }; - {c=>1,a=>49,b=>430} 31000000ae030000 31000000ae030000 31000000ae030000 00000031d7200000 31000000ae030000 31000000ae030000 00000031d7200000 31000000ae030000 00000031d7200000 - {c=>3,a=>118,b=>459} 76000000cb070000 76000000cb070000 76000000cb070000 00000076e5e00000 76000000cb070000 76000000cb070000 00000076e5e00000 76000000cb070000 00000076e5e00000 - {c=>0,a=>1,b=>148} 0100000094000000 0100000094000000 0100000094000000 000000014a000000 0100000094000000 0100000094000000 000000014a000000 0100000094000000 000000014a000000 - {c=>0,a=>-80,b=>164} b0ffffffa4000000 b0ffffffa4000000 b0ffffffa4000000 ffffffb052000000 b0ffffffa4000000 b0ffffffa4000000 ffffffb052000000 b0ffffffa4000000 ffffffb052000000 - {c=>3,a=>-5,b=>38} fbffffff26060000 fbffffff26060000 fbffffff26060000 fffffffb13600000 fbffffff26060000 fbffffff26060000 fffffffb13600000 fbffffff26060000 fffffffb13600000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>0,a=>73,b=>253} 49000000fd000000 49000000fd000000 49000000fd000000 000000497e800000 49000000fd000000 49000000fd000000 000000497e800000 49000000fd000000 000000497e800000 - {c=>3,a=>91,b=>302} 5b0000002e070000 5b0000002e070000 5b0000002e070000 0000005b97600000 5b0000002e070000 5b0000002e070000 0000005b97600000 5b0000002e070000 0000005b97600000 - {c=>3,a=>30,b=>58} 1e0000003a060000 1e0000003a060000 1e0000003a060000 0000001e1d600000 1e0000003a060000 1e0000003a060000 0000001e1d600000 1e0000003a060000 0000001e1d600000 - {c=>0,a=>-109,b=>436} 93ffffffb4010000 93ffffffb4010000 93ffffffb4010000 ffffff93da000000 93ffffffb4010000 93ffffffb4010000 ffffff93da000000 93ffffffb4010000 ffffff93da000000 - {c=>3,a=>-89,b=>300} a7ffffff2c070000 a7ffffff2c070000 a7ffffff2c070000 ffffffa796600000 a7ffffff2c070000 a7ffffff2c070000 ffffffa796600000 a7ffffff2c070000 ffffffa796600000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>2,a=>-81,b=>332,d=>0} afffffff4c050000 afffffff4c050000 afffffff4c050000 ffffffafa6400000 afffffff4c050000 afffffff4c050000 ffffffafa6400000 afffffff4c050000 ffffffafa6400000 - {c=>0,a=>-118,b=>311,d=>3} 8affffff37c10000 8affffff37c10000 8affffff37c10000 ffffff8a9b830000 8affffff37c10000 8affffff37c10000 ffffff8a9b830000 8affffff37c10000 ffffff8a9b830000 - {c=>2,a=>93,b=>362,d=>1} 5d0000006a450000 5d0000006a450000 5d0000006a450000 0000005db5410000 5d0000006a450000 5d0000006a450000 0000005db5410000 5d0000006a450000 0000005db5410000 - {c=>0,a=>122,b=>370,d=>0} 7a00000072010000 7a00000072010000 7a00000072010000 0000007ab9000000 7a00000072010000 7a00000072010000 0000007ab9000000 7a00000072010000 0000007ab9000000 - {c=>2,a=>87,b=>107,d=>2} 570000006b840000 570000006b840000 570000006b840000 0000005735c20000 570000006b840000 570000006b840000 0000005735c20000 570000006b840000 0000005735c20000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>246,c=>1,a=>109,b=>275,d=>1} 6d00000013430000f6000000 6d00000013430000f6000000 6d00000013430000f6000000 0000006d89a10000000000f6 6d00000013430000f6000000 6d00000013430000f6000000 0000006d89a10000000000f6 6d00000013430000f6000000 0000006d89a10000000000f6 - {e=>120,c=>3,a=>80,b=>215,d=>2} 50000000d786000078000000 50000000d786000078000000 50000000d786000078000000 000000506be2000000000078 50000000d786000078000000 50000000d786000078000000 000000506be2000000000078 50000000d786000078000000 000000506be2000000000078 - {e=>236,c=>0,a=>88,b=>484,d=>2} 58000000e4810000ec000000 58000000e4810000ec000000 58000000e4810000ec000000 00000058f2020000000000ec 58000000e4810000ec000000 58000000e4810000ec000000 00000058f2020000000000ec 58000000e4810000ec000000 00000058f2020000000000ec - {e=>9,c=>1,a=>-20,b=>117,d=>2} ecffffff7582000009000000 ecffffff7582000009000000 ecffffff7582000009000000 ffffffec3aa2000000000009 ecffffff7582000009000000 ecffffff7582000009000000 ffffffec3aa2000000000009 ecffffff7582000009000000 ffffffec3aa2000000000009 - {e=>135,c=>3,a=>126,b=>333,d=>1} 7e0000004d47000087000000 7e0000004d47000087000000 7e0000004d47000087000000 0000007ea6e1000000000087 7e0000004d47000087000000 7e0000004d47000087000000 0000007ea6e1000000000087 7e0000004d47000087000000 0000007ea6e1000000000087 = struct basic { long a; unsigned int b:9; }; - {a=>-90,b=>99} a6ffffff63000000 a6ffffffffffffff6300000000000000 a6ffffffffffffff6300000000000000 ffffffa631800000 a6ffffff63000000 a6ffffff63000000 ffffffffffffffa63180000000000000 a6ffffff63000000 ffffffa631800000 - {a=>18,b=>50} 1200000032000000 12000000000000003200000000000000 12000000000000003200000000000000 0000001219000000 1200000032000000 1200000032000000 00000000000000121900000000000000 1200000032000000 0000001219000000 - {a=>-120,b=>264} 88ffffff08010000 88ffffffffffffff0801000000000000 88ffffffffffffff0801000000000000 ffffff8884000000 88ffffff08010000 88ffffff08010000 ffffffffffffff888400000000000000 88ffffff08010000 ffffff8884000000 - {a=>23,b=>32} 1700000020000000 17000000000000002000000000000000 17000000000000002000000000000000 0000001710000000 1700000020000000 1700000020000000 00000000000000171000000000000000 1700000020000000 0000001710000000 - {a=>42,b=>321} 2a00000041010000 2a000000000000004101000000000000 2a000000000000004101000000000000 0000002aa0800000 2a00000041010000 2a00000041010000 000000000000002aa080000000000000 2a00000041010000 0000002aa0800000 = struct basic { long a; unsigned int b:9; unsigned int c:2; }; - {c=>3,a=>37,b=>303} 250000002f070000 25000000000000002f07000000000000 25000000000000002f07000000000000 0000002597e00000 250000002f070000 250000002f070000 000000000000002597e0000000000000 250000002f070000 0000002597e00000 - {c=>3,a=>-87,b=>458} a9ffffffca070000 a9ffffffffffffffca07000000000000 a9ffffffffffffffca07000000000000 ffffffa9e5600000 a9ffffffca070000 a9ffffffca070000 ffffffffffffffa9e560000000000000 a9ffffffca070000 ffffffa9e5600000 - {c=>3,a=>-86,b=>453} aaffffffc5070000 aaffffffffffffffc507000000000000 aaffffffffffffffc507000000000000 ffffffaae2e00000 aaffffffc5070000 aaffffffc5070000 ffffffffffffffaae2e0000000000000 aaffffffc5070000 ffffffaae2e00000 - {c=>0,a=>96,b=>71} 6000000047000000 60000000000000004700000000000000 60000000000000004700000000000000 0000006023800000 6000000047000000 6000000047000000 00000000000000602380000000000000 6000000047000000 0000006023800000 - {c=>0,a=>-46,b=>254} d2fffffffe000000 d2fffffffffffffffe00000000000000 d2fffffffffffffffe00000000000000 ffffffd27f000000 d2fffffffe000000 d2fffffffe000000 ffffffffffffffd27f00000000000000 d2fffffffe000000 ffffffd27f000000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-123,b=>56} 85ffffff38020000 85ffffffffffffff3802000000000000 85ffffffffffffff3802000000000000 ffffff851c200000 85ffffff38020000 85ffffff38020000 ffffffffffffff851c20000000000000 85ffffff38020000 ffffff851c200000 - {c=>1,a=>-36,b=>276} dcffffff14030000 dcffffffffffffff1403000000000000 dcffffffffffffff1403000000000000 ffffffdc8a200000 dcffffff14030000 dcffffff14030000 ffffffffffffffdc8a20000000000000 dcffffff14030000 ffffffdc8a200000 - {c=>2,a=>26,b=>453} 1a000000c5050000 1a00000000000000c505000000000000 1a00000000000000c505000000000000 0000001ae2c00000 1a000000c5050000 1a000000c5050000 000000000000001ae2c0000000000000 1a000000c5050000 0000001ae2c00000 - {c=>0,a=>95,b=>479} 5f000000df010000 5f00000000000000df01000000000000 5f00000000000000df01000000000000 0000005fef800000 5f000000df010000 5f000000df010000 000000000000005fef80000000000000 5f000000df010000 0000005fef800000 - {c=>1,a=>28,b=>16} 1c00000010020000 1c000000000000001002000000000000 1c000000000000001002000000000000 0000001c08200000 1c00000010020000 1c00000010020000 000000000000001c0820000000000000 1c00000010020000 0000001c08200000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>3,a=>-75,b=>292,d=>0} b5ffffff24070000 b5ffffffffffffff2407000000000000 b5ffffffffffffff2407000000000000 ffffffb592600000 b5ffffff24070000 b5ffffff24070000 ffffffffffffffb59260000000000000 b5ffffff24070000 ffffffb592600000 - {c=>0,a=>24,b=>330,d=>0} 180000004a010000 18000000000000004a01000000000000 18000000000000004a01000000000000 00000018a5000000 180000004a010000 180000004a010000 0000000000000018a500000000000000 180000004a010000 00000018a5000000 - {c=>3,a=>2,b=>332,d=>1} 020000004c470000 02000000000000004c47000000000000 02000000000000004c47000000000000 00000002a6610000 020000004c470000 020000004c470000 0000000000000002a661000000000000 020000004c470000 00000002a6610000 - {c=>2,a=>74,b=>257,d=>1} 4a00000001450000 4a000000000000000145000000000000 4a000000000000000145000000000000 0000004a80c10000 4a00000001450000 4a00000001450000 000000000000004a80c1000000000000 4a00000001450000 0000004a80c10000 - {c=>2,a=>106,b=>208,d=>3} 6a000000d0c40000 6a00000000000000d0c4000000000000 6a00000000000000d0c4000000000000 0000006a68430000 6a000000d0c40000 6a000000d0c40000 000000000000006a6843000000000000 6a000000d0c40000 0000006a68430000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>118,c=>0,a=>26,b=>490,d=>2} 1a000000ea81000076000000 1a00000000000000ea81000076000000 1a00000000000000ea81000076000000 0000001af502000000000076 1a000000ea81000076000000 1a000000ea81000076000000 000000000000001af502000000000076 1a000000ea81000076000000 0000001af502000000000076 - {e=>200,c=>0,a=>6,b=>418,d=>1} 06000000a2410000c8000000 0600000000000000a2410000c8000000 0600000000000000a2410000c8000000 00000006d1010000000000c8 06000000a2410000c8000000 06000000a2410000c8000000 0000000000000006d1010000000000c8 06000000a2410000c8000000 00000006d1010000000000c8 - {e=>40,c=>1,a=>41,b=>444,d=>2} 29000000bc83000028000000 2900000000000000bc83000028000000 2900000000000000bc83000028000000 00000029de22000000000028 29000000bc83000028000000 29000000bc83000028000000 0000000000000029de22000000000028 29000000bc83000028000000 00000029de22000000000028 - {e=>154,c=>0,a=>0,b=>88,d=>3} 0000000058c000009a000000 000000000000000058c000009a000000 000000000000000058c000009a000000 000000002c0300000000009a 0000000058c000009a000000 0000000058c000009a000000 00000000000000002c0300000000009a 0000000058c000009a000000 000000002c0300000000009a - {e=>163,c=>3,a=>-5,b=>393,d=>0} fbffffff89070000a3000000 fbffffffffffffff89070000a3000000 fbffffffffffffff89070000a3000000 fffffffbc4e00000000000a3 fbffffff89070000a3000000 fbffffff89070000a3000000 fffffffffffffffbc4e00000000000a3 fbffffff89070000a3000000 fffffffbc4e00000000000a3 = struct uchar { unsigned char a:1; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 = struct uchar { unsigned char a:1; unsigned char b:1; }; - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>0,b=>1} 02 02 02 40 02000000 02 40 02 40 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>1,b=>1} 07 07 07 e0 07000000 07 e0 07 e0 - {c=>1,a=>0,b=>0} 04 04 04 20 04000000 04 20 04 20 - {c=>0,a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {c=>1,a=>1,b=>1} 07 07 07 e0 07000000 07 e0 07 e0 - {c=>1,a=>1,b=>0} 05 05 05 a0 05000000 05 a0 05 a0 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>0,b=>1,d=>1} 0e 0e 0e 70 0e000000 0e 70 0e 70 - {c=>0,a=>1,b=>0,d=>0} 01 01 01 80 01000000 01 80 01 80 - {c=>0,a=>0,b=>1,d=>1} 0a 0a 0a 50 0a000000 0a 50 0a 50 - {c=>1,a=>0,b=>0,d=>1} 0c 0c 0c 30 0c000000 0c 30 0c 30 - {c=>0,a=>1,b=>0,d=>0} 01 01 01 80 01000000 01 80 01 80 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned int e; }; - {e=>111,c=>1,a=>1,b=>1,d=>1} 0f0000006f000000 0f0000006f000000 0f0000006f000000 f00000000000006f 0f0000006f000000 0f0000006f000000 f00000000000006f 0f0000006f000000 f00000000000006f - {e=>24,c=>0,a=>0,b=>1,d=>0} 0200000018000000 0200000018000000 0200000018000000 4000000000000018 0200000018000000 0200000018000000 4000000000000018 0200000018000000 4000000000000018 - {e=>185,c=>0,a=>0,b=>1,d=>0} 02000000b9000000 02000000b9000000 02000000b9000000 40000000000000b9 02000000b9000000 02000000b9000000 40000000000000b9 02000000b9000000 40000000000000b9 - {e=>229,c=>1,a=>0,b=>1,d=>1} 0e000000e5000000 0e000000e5000000 0e000000e5000000 70000000000000e5 0e000000e5000000 0e000000e5000000 70000000000000e5 0e000000e5000000 70000000000000e5 - {e=>255,c=>0,a=>1,b=>0,d=>1} 09000000ff000000 09000000ff000000 09000000ff000000 90000000000000ff 09000000ff000000 09000000ff000000 90000000000000ff 09000000ff000000 90000000000000ff = struct uchar { char a; unsigned char b:1; }; - {a=>-120,b=>1} 8801 8801 8801 8880 88010000 8801 8880 8801 8880 - {a=>70,b=>0} 4600 4600 4600 4600 46000000 4600 4600 4600 4600 - {a=>81,b=>0} 5100 5100 5100 5100 51000000 5100 5100 5100 5100 - {a=>56,b=>1} 3801 3801 3801 3880 38010000 3801 3880 3801 3880 - {a=>126,b=>0} 7e00 7e00 7e00 7e00 7e000000 7e00 7e00 7e00 7e00 = struct uchar { char a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>16,b=>1} 1003 1003 1003 10c0 10030000 1003 10c0 1003 10c0 - {c=>0,a=>90,b=>1} 5a01 5a01 5a01 5a80 5a010000 5a01 5a80 5a01 5a80 - {c=>0,a=>-85,b=>0} ab00 ab00 ab00 ab00 ab000000 ab00 ab00 ab00 ab00 - {c=>0,a=>74,b=>1} 4a01 4a01 4a01 4a80 4a010000 4a01 4a80 4a01 4a80 - {c=>0,a=>-127,b=>0} 8100 8100 8100 8100 81000000 8100 8100 8100 8100 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>-84,b=>0,d=>1} ac06 ac06 ac06 ac60 ac060000 ac06 ac60 ac06 ac60 - {c=>1,a=>-93,b=>1,d=>0} a303 a303 a303 a3c0 a3030000 a303 a3c0 a303 a3c0 - {c=>1,a=>-94,b=>1,d=>1} a207 a207 a207 a2e0 a2070000 a207 a2e0 a207 a2e0 - {c=>1,a=>116,b=>0,d=>0} 7402 7402 7402 7440 74020000 7402 7440 7402 7440 - {c=>1,a=>92,b=>0,d=>1} 5c06 5c06 5c06 5c60 5c060000 5c06 5c60 5c06 5c60 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>1,c=>0,a=>-104,b=>1,d=>0} 9809 9809 9809 9890 98090000 9809 9890 9809 9890 - {e=>0,c=>1,a=>-94,b=>0,d=>0} a202 a202 a202 a240 a2020000 a202 a240 a202 a240 - {e=>0,c=>0,a=>113,b=>1,d=>0} 7101 7101 7101 7180 71010000 7101 7180 7101 7180 - {e=>1,c=>0,a=>25,b=>1,d=>1} 190d 190d 190d 19b0 190d0000 190d 19b0 190d 19b0 - {e=>0,c=>0,a=>-21,b=>1,d=>1} eb05 eb05 eb05 eba0 eb050000 eb05 eba0 eb05 eba0 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>1,c=>1,a=>58,b=>1,d=>0,f=>7} 3a0b000007000000 3a0b000007000000 3a0b000007000000 3ad0000000000007 3a0b000007000000 3a0b000007000000 3ad0000000000007 3a0b000007000000 3ad0000000000007 - {e=>0,c=>0,a=>9,b=>0,d=>1,f=>220} 09040000dc000000 09040000dc000000 09040000dc000000 09200000000000dc 09040000dc000000 09040000dc000000 09200000000000dc 09040000dc000000 09200000000000dc - {e=>0,c=>1,a=>123,b=>1,d=>0,f=>59} 7b0300003b000000 7b0300003b000000 7b0300003b000000 7bc000000000003b 7b0300003b000000 7b0300003b000000 7bc000000000003b 7b0300003b000000 7bc000000000003b - {e=>0,c=>1,a=>-113,b=>1,d=>1,f=>172} 8f070000ac000000 8f070000ac000000 8f070000ac000000 8fe00000000000ac 8f070000ac000000 8f070000ac000000 8fe00000000000ac 8f070000ac000000 8fe00000000000ac - {e=>0,c=>1,a=>75,b=>0,d=>1,f=>175} 4b060000af000000 4b060000af000000 4b060000af000000 4b600000000000af 4b060000af000000 4b060000af000000 4b600000000000af 4b060000af000000 4b600000000000af = struct uchar { short a; unsigned char b:1; }; - {a=>-46,b=>1} d2ff0100 d2ff0100 d2ff0100 ffd28000 d2ff0100 d2ff0100 ffd28000 d2ff0100 ffd28000 - {a=>32,b=>1} 20000100 20000100 20000100 00208000 20000100 20000100 00208000 20000100 00208000 - {a=>-26,b=>0} e6ff0000 e6ff0000 e6ff0000 ffe60000 e6ff0000 e6ff0000 ffe60000 e6ff0000 ffe60000 - {a=>122,b=>0} 7a000000 7a000000 7a000000 007a0000 7a000000 7a000000 007a0000 7a000000 007a0000 - {a=>-51,b=>0} cdff0000 cdff0000 cdff0000 ffcd0000 cdff0000 cdff0000 ffcd0000 cdff0000 ffcd0000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>14,b=>0} 0e000200 0e000200 0e000200 000e4000 0e000200 0e000200 000e4000 0e000200 000e4000 - {c=>1,a=>-41,b=>0} d7ff0200 d7ff0200 d7ff0200 ffd74000 d7ff0200 d7ff0200 ffd74000 d7ff0200 ffd74000 - {c=>1,a=>-93,b=>1} a3ff0300 a3ff0300 a3ff0300 ffa3c000 a3ff0300 a3ff0300 ffa3c000 a3ff0300 ffa3c000 - {c=>0,a=>-76,b=>1} b4ff0100 b4ff0100 b4ff0100 ffb48000 b4ff0100 b4ff0100 ffb48000 b4ff0100 ffb48000 - {c=>0,a=>-111,b=>0} 91ff0000 91ff0000 91ff0000 ff910000 91ff0000 91ff0000 ff910000 91ff0000 ff910000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>0,a=>7,b=>1,d=>0} 07000100 07000100 07000100 00078000 07000100 07000100 00078000 07000100 00078000 - {c=>0,a=>64,b=>0,d=>0} 40000000 40000000 40000000 00400000 40000000 40000000 00400000 40000000 00400000 - {c=>1,a=>7,b=>0,d=>0} 07000200 07000200 07000200 00074000 07000200 07000200 00074000 07000200 00074000 - {c=>1,a=>-72,b=>1,d=>1} b8ff0700 b8ff0700 b8ff0700 ffb8e000 b8ff0700 b8ff0700 ffb8e000 b8ff0700 ffb8e000 - {c=>1,a=>62,b=>0,d=>1} 3e000600 3e000600 3e000600 003e6000 3e000600 3e000600 003e6000 3e000600 003e6000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>1,a=>-108,b=>1,d=>0} 94ff0300 94ff0300 94ff0300 ff94c000 94ff0300 94ff0300 ff94c000 94ff0300 ff94c000 - {e=>1,c=>0,a=>-125,b=>1,d=>0} 83ff0900 83ff0900 83ff0900 ff839000 83ff0900 83ff0900 ff839000 83ff0900 ff839000 - {e=>0,c=>1,a=>52,b=>1,d=>0} 34000300 34000300 34000300 0034c000 34000300 34000300 0034c000 34000300 0034c000 - {e=>0,c=>0,a=>-93,b=>0,d=>0} a3ff0000 a3ff0000 a3ff0000 ffa30000 a3ff0000 a3ff0000 ffa30000 a3ff0000 ffa30000 - {e=>1,c=>0,a=>-128,b=>0,d=>1} 80ff0c00 80ff0c00 80ff0c00 ff803000 80ff0c00 80ff0c00 ff803000 80ff0c00 ff803000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>0,a=>72,b=>1,d=>1,f=>111} 480005006f000000 480005006f000000 480005006f000000 0048a0000000006f 480005006f000000 480005006f000000 0048a0000000006f 480005006f000000 0048a0000000006f - {e=>0,c=>1,a=>-44,b=>0,d=>0,f=>40} d4ff020028000000 d4ff020028000000 d4ff020028000000 ffd4400000000028 d4ff020028000000 d4ff020028000000 ffd4400000000028 d4ff020028000000 ffd4400000000028 - {e=>1,c=>1,a=>121,b=>1,d=>0,f=>41} 79000b0029000000 79000b0029000000 79000b0029000000 0079d00000000029 79000b0029000000 79000b0029000000 0079d00000000029 79000b0029000000 0079d00000000029 - {e=>0,c=>1,a=>-68,b=>1,d=>0,f=>136} bcff030088000000 bcff030088000000 bcff030088000000 ffbcc00000000088 bcff030088000000 bcff030088000000 ffbcc00000000088 bcff030088000000 ffbcc00000000088 - {e=>0,c=>0,a=>-73,b=>1,d=>0,f=>25} b7ff010019000000 b7ff010019000000 b7ff010019000000 ffb7800000000019 b7ff010019000000 b7ff010019000000 ffb7800000000019 b7ff010019000000 ffb7800000000019 = struct uchar { int a; unsigned char b:1; }; - {a=>-57,b=>0} c7ffffff00000000 c7ffffff00000000 c7ffffff00000000 ffffffc700000000 c7ffffff00000000 c7ffffff00000000 ffffffc700000000 c7ffffff00000000 ffffffc700000000 - {a=>-29,b=>0} e3ffffff00000000 e3ffffff00000000 e3ffffff00000000 ffffffe300000000 e3ffffff00000000 e3ffffff00000000 ffffffe300000000 e3ffffff00000000 ffffffe300000000 - {a=>-23,b=>0} e9ffffff00000000 e9ffffff00000000 e9ffffff00000000 ffffffe900000000 e9ffffff00000000 e9ffffff00000000 ffffffe900000000 e9ffffff00000000 ffffffe900000000 - {a=>-128,b=>1} 80ffffff01000000 80ffffff01000000 80ffffff01000000 ffffff8080000000 80ffffff01000000 80ffffff01000000 ffffff8080000000 80ffffff01000000 ffffff8080000000 - {a=>-58,b=>0} c6ffffff00000000 c6ffffff00000000 c6ffffff00000000 ffffffc600000000 c6ffffff00000000 c6ffffff00000000 ffffffc600000000 c6ffffff00000000 ffffffc600000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-78,b=>1} b2ffffff03000000 b2ffffff03000000 b2ffffff03000000 ffffffb2c0000000 b2ffffff03000000 b2ffffff03000000 ffffffb2c0000000 b2ffffff03000000 ffffffb2c0000000 - {c=>0,a=>-100,b=>1} 9cffffff01000000 9cffffff01000000 9cffffff01000000 ffffff9c80000000 9cffffff01000000 9cffffff01000000 ffffff9c80000000 9cffffff01000000 ffffff9c80000000 - {c=>0,a=>-27,b=>0} e5ffffff00000000 e5ffffff00000000 e5ffffff00000000 ffffffe500000000 e5ffffff00000000 e5ffffff00000000 ffffffe500000000 e5ffffff00000000 ffffffe500000000 - {c=>1,a=>-123,b=>1} 85ffffff03000000 85ffffff03000000 85ffffff03000000 ffffff85c0000000 85ffffff03000000 85ffffff03000000 ffffff85c0000000 85ffffff03000000 ffffff85c0000000 - {c=>0,a=>-84,b=>0} acffffff00000000 acffffff00000000 acffffff00000000 ffffffac00000000 acffffff00000000 acffffff00000000 ffffffac00000000 acffffff00000000 ffffffac00000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>82,b=>0,d=>0} 5200000002000000 5200000002000000 5200000002000000 0000005240000000 5200000002000000 5200000002000000 0000005240000000 5200000002000000 0000005240000000 - {c=>0,a=>20,b=>0,d=>1} 1400000004000000 1400000004000000 1400000004000000 0000001420000000 1400000004000000 1400000004000000 0000001420000000 1400000004000000 0000001420000000 - {c=>1,a=>95,b=>0,d=>0} 5f00000002000000 5f00000002000000 5f00000002000000 0000005f40000000 5f00000002000000 5f00000002000000 0000005f40000000 5f00000002000000 0000005f40000000 - {c=>0,a=>71,b=>0,d=>0} 4700000000000000 4700000000000000 4700000000000000 0000004700000000 4700000000000000 4700000000000000 0000004700000000 4700000000000000 0000004700000000 - {c=>1,a=>-38,b=>0,d=>0} daffffff02000000 daffffff02000000 daffffff02000000 ffffffda40000000 daffffff02000000 daffffff02000000 ffffffda40000000 daffffff02000000 ffffffda40000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>0,a=>-32,b=>1,d=>1} e0ffffff05000000 e0ffffff05000000 e0ffffff05000000 ffffffe0a0000000 e0ffffff05000000 e0ffffff05000000 ffffffe0a0000000 e0ffffff05000000 ffffffe0a0000000 - {e=>0,c=>1,a=>-34,b=>1,d=>1} deffffff07000000 deffffff07000000 deffffff07000000 ffffffdee0000000 deffffff07000000 deffffff07000000 ffffffdee0000000 deffffff07000000 ffffffdee0000000 - {e=>1,c=>1,a=>70,b=>1,d=>1} 460000000f000000 460000000f000000 460000000f000000 00000046f0000000 460000000f000000 460000000f000000 00000046f0000000 460000000f000000 00000046f0000000 - {e=>0,c=>1,a=>127,b=>1,d=>1} 7f00000007000000 7f00000007000000 7f00000007000000 0000007fe0000000 7f00000007000000 7f00000007000000 0000007fe0000000 7f00000007000000 0000007fe0000000 - {e=>1,c=>0,a=>54,b=>1,d=>1} 360000000d000000 360000000d000000 360000000d000000 00000036b0000000 360000000d000000 360000000d000000 00000036b0000000 360000000d000000 00000036b0000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>0,a=>-63,b=>1,d=>1,f=>112} c1ffffff0500000070000000 c1ffffff0500000070000000 c1ffffff0500000070000000 ffffffc1a000000000000070 c1ffffff0500000070000000 c1ffffff0500000070000000 ffffffc1a000000000000070 c1ffffff0500000070000000 ffffffc1a000000000000070 - {e=>0,c=>1,a=>-107,b=>0,d=>0,f=>190} 95ffffff02000000be000000 95ffffff02000000be000000 95ffffff02000000be000000 ffffff9540000000000000be 95ffffff02000000be000000 95ffffff02000000be000000 ffffff9540000000000000be 95ffffff02000000be000000 ffffff9540000000000000be - {e=>0,c=>0,a=>-47,b=>1,d=>1,f=>78} d1ffffff050000004e000000 d1ffffff050000004e000000 d1ffffff050000004e000000 ffffffd1a00000000000004e d1ffffff050000004e000000 d1ffffff050000004e000000 ffffffd1a00000000000004e d1ffffff050000004e000000 ffffffd1a00000000000004e - {e=>1,c=>0,a=>65,b=>1,d=>1,f=>14} 410000000d0000000e000000 410000000d0000000e000000 410000000d0000000e000000 00000041b00000000000000e 410000000d0000000e000000 410000000d0000000e000000 00000041b00000000000000e 410000000d0000000e000000 00000041b00000000000000e - {e=>1,c=>0,a=>52,b=>0,d=>1,f=>169} 340000000c000000a9000000 340000000c000000a9000000 340000000c000000a9000000 0000003430000000000000a9 340000000c000000a9000000 340000000c000000a9000000 0000003430000000000000a9 340000000c000000a9000000 0000003430000000000000a9 = struct uchar { long a; unsigned char b:1; }; - {a=>118,b=>0} 7600000000000000 76000000000000000000000000000000 76000000000000000000000000000000 0000007600000000 7600000000000000 7600000000000000 00000000000000760000000000000000 7600000000000000 0000007600000000 - {a=>-95,b=>1} a1ffffff01000000 a1ffffffffffffff0100000000000000 a1ffffffffffffff0100000000000000 ffffffa180000000 a1ffffff01000000 a1ffffff01000000 ffffffffffffffa18000000000000000 a1ffffff01000000 ffffffa180000000 - {a=>38,b=>0} 2600000000000000 26000000000000000000000000000000 26000000000000000000000000000000 0000002600000000 2600000000000000 2600000000000000 00000000000000260000000000000000 2600000000000000 0000002600000000 - {a=>50,b=>0} 3200000000000000 32000000000000000000000000000000 32000000000000000000000000000000 0000003200000000 3200000000000000 3200000000000000 00000000000000320000000000000000 3200000000000000 0000003200000000 - {a=>81,b=>0} 5100000000000000 51000000000000000000000000000000 51000000000000000000000000000000 0000005100000000 5100000000000000 5100000000000000 00000000000000510000000000000000 5100000000000000 0000005100000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>97,b=>0} 6100000000000000 61000000000000000000000000000000 61000000000000000000000000000000 0000006100000000 6100000000000000 6100000000000000 00000000000000610000000000000000 6100000000000000 0000006100000000 - {c=>0,a=>-20,b=>0} ecffffff00000000 ecffffffffffffff0000000000000000 ecffffffffffffff0000000000000000 ffffffec00000000 ecffffff00000000 ecffffff00000000 ffffffffffffffec0000000000000000 ecffffff00000000 ffffffec00000000 - {c=>0,a=>-81,b=>0} afffffff00000000 afffffffffffffff0000000000000000 afffffffffffffff0000000000000000 ffffffaf00000000 afffffff00000000 afffffff00000000 ffffffffffffffaf0000000000000000 afffffff00000000 ffffffaf00000000 - {c=>0,a=>75,b=>0} 4b00000000000000 4b000000000000000000000000000000 4b000000000000000000000000000000 0000004b00000000 4b00000000000000 4b00000000000000 000000000000004b0000000000000000 4b00000000000000 0000004b00000000 - {c=>0,a=>-108,b=>1} 94ffffff01000000 94ffffffffffffff0100000000000000 94ffffffffffffff0100000000000000 ffffff9480000000 94ffffff01000000 94ffffff01000000 ffffffffffffff948000000000000000 94ffffff01000000 ffffff9480000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>101,b=>1,d=>0} 6500000003000000 65000000000000000300000000000000 65000000000000000300000000000000 00000065c0000000 6500000003000000 6500000003000000 0000000000000065c000000000000000 6500000003000000 00000065c0000000 - {c=>0,a=>-71,b=>0,d=>1} b9ffffff04000000 b9ffffffffffffff0400000000000000 b9ffffffffffffff0400000000000000 ffffffb920000000 b9ffffff04000000 b9ffffff04000000 ffffffffffffffb92000000000000000 b9ffffff04000000 ffffffb920000000 - {c=>1,a=>-61,b=>0,d=>1} c3ffffff06000000 c3ffffffffffffff0600000000000000 c3ffffffffffffff0600000000000000 ffffffc360000000 c3ffffff06000000 c3ffffff06000000 ffffffffffffffc36000000000000000 c3ffffff06000000 ffffffc360000000 - {c=>1,a=>-98,b=>0,d=>1} 9effffff06000000 9effffffffffffff0600000000000000 9effffffffffffff0600000000000000 ffffff9e60000000 9effffff06000000 9effffff06000000 ffffffffffffff9e6000000000000000 9effffff06000000 ffffff9e60000000 - {c=>0,a=>86,b=>0,d=>0} 5600000000000000 56000000000000000000000000000000 56000000000000000000000000000000 0000005600000000 5600000000000000 5600000000000000 00000000000000560000000000000000 5600000000000000 0000005600000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>1,a=>-117,b=>1,d=>1} 8bffffff07000000 8bffffffffffffff0700000000000000 8bffffffffffffff0700000000000000 ffffff8be0000000 8bffffff07000000 8bffffff07000000 ffffffffffffff8be000000000000000 8bffffff07000000 ffffff8be0000000 - {e=>1,c=>0,a=>47,b=>1,d=>1} 2f0000000d000000 2f000000000000000d00000000000000 2f000000000000000d00000000000000 0000002fb0000000 2f0000000d000000 2f0000000d000000 000000000000002fb000000000000000 2f0000000d000000 0000002fb0000000 - {e=>1,c=>1,a=>-116,b=>0,d=>0} 8cffffff0a000000 8cffffffffffffff0a00000000000000 8cffffffffffffff0a00000000000000 ffffff8c50000000 8cffffff0a000000 8cffffff0a000000 ffffffffffffff8c5000000000000000 8cffffff0a000000 ffffff8c50000000 - {e=>1,c=>1,a=>-118,b=>0,d=>1} 8affffff0e000000 8affffffffffffff0e00000000000000 8affffffffffffff0e00000000000000 ffffff8a70000000 8affffff0e000000 8affffff0e000000 ffffffffffffff8a7000000000000000 8affffff0e000000 ffffff8a70000000 - {e=>1,c=>1,a=>-38,b=>0,d=>1} daffffff0e000000 daffffffffffffff0e00000000000000 daffffffffffffff0e00000000000000 ffffffda70000000 daffffff0e000000 daffffff0e000000 ffffffffffffffda7000000000000000 daffffff0e000000 ffffffda70000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>1,a=>-47,b=>0,d=>1,f=>41} d1ffffff0600000029000000 d1ffffffffffffff0600000029000000 d1ffffffffffffff0600000029000000 ffffffd16000000000000029 d1ffffff0600000029000000 d1ffffff0600000029000000 ffffffffffffffd16000000000000029 d1ffffff0600000029000000 ffffffd16000000000000029 - {e=>0,c=>1,a=>-89,b=>1,d=>0,f=>152} a7ffffff0300000098000000 a7ffffffffffffff0300000098000000 a7ffffffffffffff0300000098000000 ffffffa7c000000000000098 a7ffffff0300000098000000 a7ffffff0300000098000000 ffffffffffffffa7c000000000000098 a7ffffff0300000098000000 ffffffa7c000000000000098 - {e=>1,c=>1,a=>114,b=>1,d=>1,f=>37} 720000000f00000025000000 72000000000000000f00000025000000 72000000000000000f00000025000000 00000072f000000000000025 720000000f00000025000000 720000000f00000025000000 0000000000000072f000000000000025 720000000f00000025000000 00000072f000000000000025 - {e=>1,c=>1,a=>127,b=>1,d=>1,f=>22} 7f0000000f00000016000000 7f000000000000000f00000016000000 7f000000000000000f00000016000000 0000007ff000000000000016 7f0000000f00000016000000 7f0000000f00000016000000 000000000000007ff000000000000016 7f0000000f00000016000000 0000007ff000000000000016 - {e=>0,c=>0,a=>-95,b=>1,d=>0,f=>125} a1ffffff010000007d000000 a1ffffffffffffff010000007d000000 a1ffffffffffffff010000007d000000 ffffffa1800000000000007d a1ffffff010000007d000000 a1ffffff010000007d000000 ffffffffffffffa1800000000000007d a1ffffff010000007d000000 ffffffa1800000000000007d = struct ushort { unsigned short a:1; }; - {a=>1} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 - {a=>1} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 - {a=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 = struct ushort { unsigned short a:1; unsigned short b:1; }; - {a=>1,b=>1} 0300 0300 0300 c000 03000000 0300 c000 0300 c000 - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>1,b=>0} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0,b=>1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; }; - {c=>1,a=>0,b=>1} 0600 0600 0600 6000 06000000 0600 6000 0600 6000 - {c=>0,a=>1,b=>1} 0300 0300 0300 c000 03000000 0300 c000 0300 c000 - {c=>1,a=>0,b=>1} 0600 0600 0600 6000 06000000 0600 6000 0600 6000 - {c=>0,a=>0,b=>1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {c=>1,a=>0,b=>1} 0600 0600 0600 6000 06000000 0600 6000 0600 6000 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>0,b=>0,d=>1} 0800 0800 0800 1000 08000000 0800 1000 0800 1000 - {c=>1,a=>1,b=>1,d=>0} 0700 0700 0700 e000 07000000 0700 e000 0700 e000 - {c=>1,a=>1,b=>1,d=>1} 0f00 0f00 0f00 f000 0f000000 0f00 f000 0f00 f000 - {c=>1,a=>1,b=>0,d=>0} 0500 0500 0500 a000 05000000 0500 a000 0500 a000 - {c=>1,a=>0,b=>0,d=>0} 0400 0400 0400 2000 04000000 0400 2000 0400 2000 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned int e; }; - {e=>78,c=>1,a=>0,b=>0,d=>1} 0c0000004e000000 0c0000004e000000 0c0000004e000000 300000000000004e 0c0000004e000000 0c0000004e000000 300000000000004e 0c0000004e000000 300000000000004e - {e=>118,c=>1,a=>1,b=>0,d=>0} 0500000076000000 0500000076000000 0500000076000000 a000000000000076 0500000076000000 0500000076000000 a000000000000076 0500000076000000 a000000000000076 - {e=>65,c=>0,a=>0,b=>1,d=>1} 0a00000041000000 0a00000041000000 0a00000041000000 5000000000000041 0a00000041000000 0a00000041000000 5000000000000041 0a00000041000000 5000000000000041 - {e=>216,c=>0,a=>0,b=>1,d=>1} 0a000000d8000000 0a000000d8000000 0a000000d8000000 50000000000000d8 0a000000d8000000 0a000000d8000000 50000000000000d8 0a000000d8000000 50000000000000d8 - {e=>98,c=>0,a=>0,b=>1,d=>1} 0a00000062000000 0a00000062000000 0a00000062000000 5000000000000062 0a00000062000000 0a00000062000000 5000000000000062 0a00000062000000 5000000000000062 = struct ushort { char a; unsigned short b:1; }; - {a=>22,b=>1} 1601 1601 1601 1680 16010000 1601 1680 1601 1680 - {a=>-76,b=>0} b400 b400 b400 b400 b4000000 b400 b400 b400 b400 - {a=>101,b=>1} 6501 6501 6501 6580 65010000 6501 6580 6501 6580 - {a=>110,b=>0} 6e00 6e00 6e00 6e00 6e000000 6e00 6e00 6e00 6e00 - {a=>19,b=>1} 1301 1301 1301 1380 13010000 1301 1380 1301 1380 = struct ushort { char a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>103,b=>1} 6701 6701 6701 6780 67010000 6701 6780 6701 6780 - {c=>1,a=>-109,b=>1} 9303 9303 9303 93c0 93030000 9303 93c0 9303 93c0 - {c=>1,a=>-16,b=>0} f002 f002 f002 f040 f0020000 f002 f040 f002 f040 - {c=>1,a=>124,b=>1} 7c03 7c03 7c03 7cc0 7c030000 7c03 7cc0 7c03 7cc0 - {c=>1,a=>109,b=>0} 6d02 6d02 6d02 6d40 6d020000 6d02 6d40 6d02 6d40 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>-25,b=>1,d=>0} e701 e701 e701 e780 e7010000 e701 e780 e701 e780 - {c=>1,a=>-79,b=>0,d=>0} b102 b102 b102 b140 b1020000 b102 b140 b102 b140 - {c=>1,a=>102,b=>0,d=>1} 6606 6606 6606 6660 66060000 6606 6660 6606 6660 - {c=>0,a=>125,b=>1,d=>1} 7d05 7d05 7d05 7da0 7d050000 7d05 7da0 7d05 7da0 - {c=>0,a=>5,b=>1,d=>1} 0505 0505 0505 05a0 05050000 0505 05a0 0505 05a0 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>1,c=>0,a=>9,b=>1,d=>0} 0909 0909 0909 0990 09090000 0909 0990 0909 0990 - {e=>1,c=>0,a=>44,b=>1,d=>1} 2c0d 2c0d 2c0d 2cb0 2c0d0000 2c0d 2cb0 2c0d 2cb0 - {e=>0,c=>0,a=>44,b=>0,d=>0} 2c00 2c00 2c00 2c00 2c000000 2c00 2c00 2c00 2c00 - {e=>1,c=>1,a=>-13,b=>0,d=>1} f30e f30e f30e f370 f30e0000 f30e f370 f30e f370 - {e=>0,c=>1,a=>-2,b=>0,d=>0} fe02 fe02 fe02 fe40 fe020000 fe02 fe40 fe02 fe40 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>1,c=>1,a=>107,b=>1,d=>0,f=>112} 6b0b000070000000 6b0b000070000000 6b0b000070000000 6bd0000000000070 6b0b000070000000 6b0b000070000000 6bd0000000000070 6b0b000070000000 6bd0000000000070 - {e=>0,c=>1,a=>-68,b=>1,d=>1,f=>129} bc07000081000000 bc07000081000000 bc07000081000000 bce0000000000081 bc07000081000000 bc07000081000000 bce0000000000081 bc07000081000000 bce0000000000081 - {e=>0,c=>0,a=>72,b=>1,d=>1,f=>226} 48050000e2000000 48050000e2000000 48050000e2000000 48a00000000000e2 48050000e2000000 48050000e2000000 48a00000000000e2 48050000e2000000 48a00000000000e2 - {e=>0,c=>0,a=>-102,b=>0,d=>1,f=>147} 9a04000093000000 9a04000093000000 9a04000093000000 9a20000000000093 9a04000093000000 9a04000093000000 9a20000000000093 9a04000093000000 9a20000000000093 - {e=>1,c=>1,a=>-25,b=>1,d=>1,f=>7} e70f000007000000 e70f000007000000 e70f000007000000 e7f0000000000007 e70f000007000000 e70f000007000000 e7f0000000000007 e70f000007000000 e7f0000000000007 = struct ushort { short a; unsigned short b:1; }; - {a=>89,b=>1} 59000100 59000100 59000100 00598000 59000100 59000100 00598000 59000100 00598000 - {a=>-24,b=>0} e8ff0000 e8ff0000 e8ff0000 ffe80000 e8ff0000 e8ff0000 ffe80000 e8ff0000 ffe80000 - {a=>53,b=>1} 35000100 35000100 35000100 00358000 35000100 35000100 00358000 35000100 00358000 - {a=>60,b=>1} 3c000100 3c000100 3c000100 003c8000 3c000100 3c000100 003c8000 3c000100 003c8000 - {a=>-33,b=>1} dfff0100 dfff0100 dfff0100 ffdf8000 dfff0100 dfff0100 ffdf8000 dfff0100 ffdf8000 = struct ushort { short a; unsigned short b:1; unsigned short c:1; }; - {c=>1,a=>-21,b=>0} ebff0200 ebff0200 ebff0200 ffeb4000 ebff0200 ebff0200 ffeb4000 ebff0200 ffeb4000 - {c=>0,a=>65,b=>0} 41000000 41000000 41000000 00410000 41000000 41000000 00410000 41000000 00410000 - {c=>0,a=>-82,b=>0} aeff0000 aeff0000 aeff0000 ffae0000 aeff0000 aeff0000 ffae0000 aeff0000 ffae0000 - {c=>1,a=>-45,b=>0} d3ff0200 d3ff0200 d3ff0200 ffd34000 d3ff0200 d3ff0200 ffd34000 d3ff0200 ffd34000 - {c=>1,a=>-105,b=>0} 97ff0200 97ff0200 97ff0200 ff974000 97ff0200 97ff0200 ff974000 97ff0200 ff974000 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>5,b=>1,d=>1} 05000500 05000500 05000500 0005a000 05000500 05000500 0005a000 05000500 0005a000 - {c=>1,a=>-68,b=>1,d=>0} bcff0300 bcff0300 bcff0300 ffbcc000 bcff0300 bcff0300 ffbcc000 bcff0300 ffbcc000 - {c=>1,a=>-4,b=>0,d=>0} fcff0200 fcff0200 fcff0200 fffc4000 fcff0200 fcff0200 fffc4000 fcff0200 fffc4000 - {c=>1,a=>122,b=>1,d=>1} 7a000700 7a000700 7a000700 007ae000 7a000700 7a000700 007ae000 7a000700 007ae000 - {c=>1,a=>-64,b=>1,d=>0} c0ff0300 c0ff0300 c0ff0300 ffc0c000 c0ff0300 c0ff0300 ffc0c000 c0ff0300 ffc0c000 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>1,c=>1,a=>96,b=>1,d=>1} 60000f00 60000f00 60000f00 0060f000 60000f00 60000f00 0060f000 60000f00 0060f000 - {e=>0,c=>0,a=>-110,b=>1,d=>0} 92ff0100 92ff0100 92ff0100 ff928000 92ff0100 92ff0100 ff928000 92ff0100 ff928000 - {e=>1,c=>1,a=>-47,b=>1,d=>0} d1ff0b00 d1ff0b00 d1ff0b00 ffd1d000 d1ff0b00 d1ff0b00 ffd1d000 d1ff0b00 ffd1d000 - {e=>0,c=>1,a=>71,b=>1,d=>0} 47000300 47000300 47000300 0047c000 47000300 47000300 0047c000 47000300 0047c000 - {e=>1,c=>1,a=>-110,b=>1,d=>1} 92ff0f00 92ff0f00 92ff0f00 ff92f000 92ff0f00 92ff0f00 ff92f000 92ff0f00 ff92f000 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>-77,b=>1,d=>0,f=>56} b3ff030038000000 b3ff030038000000 b3ff030038000000 ffb3c00000000038 b3ff030038000000 b3ff030038000000 ffb3c00000000038 b3ff030038000000 ffb3c00000000038 - {e=>0,c=>0,a=>108,b=>1,d=>1,f=>82} 6c00050052000000 6c00050052000000 6c00050052000000 006ca00000000052 6c00050052000000 6c00050052000000 006ca00000000052 6c00050052000000 006ca00000000052 - {e=>0,c=>0,a=>4,b=>1,d=>1,f=>96} 0400050060000000 0400050060000000 0400050060000000 0004a00000000060 0400050060000000 0400050060000000 0004a00000000060 0400050060000000 0004a00000000060 - {e=>0,c=>0,a=>93,b=>1,d=>1,f=>28} 5d0005001c000000 5d0005001c000000 5d0005001c000000 005da0000000001c 5d0005001c000000 5d0005001c000000 005da0000000001c 5d0005001c000000 005da0000000001c - {e=>1,c=>0,a=>40,b=>1,d=>1,f=>174} 28000d00ae000000 28000d00ae000000 28000d00ae000000 0028b000000000ae 28000d00ae000000 28000d00ae000000 0028b000000000ae 28000d00ae000000 0028b000000000ae = struct ushort { int a; unsigned short b:1; }; - {a=>88,b=>1} 5800000001000000 5800000001000000 5800000001000000 0000005880000000 5800000001000000 5800000001000000 0000005880000000 5800000001000000 0000005880000000 - {a=>-118,b=>1} 8affffff01000000 8affffff01000000 8affffff01000000 ffffff8a80000000 8affffff01000000 8affffff01000000 ffffff8a80000000 8affffff01000000 ffffff8a80000000 - {a=>122,b=>1} 7a00000001000000 7a00000001000000 7a00000001000000 0000007a80000000 7a00000001000000 7a00000001000000 0000007a80000000 7a00000001000000 0000007a80000000 - {a=>-125,b=>0} 83ffffff00000000 83ffffff00000000 83ffffff00000000 ffffff8300000000 83ffffff00000000 83ffffff00000000 ffffff8300000000 83ffffff00000000 ffffff8300000000 - {a=>-83,b=>0} adffffff00000000 adffffff00000000 adffffff00000000 ffffffad00000000 adffffff00000000 adffffff00000000 ffffffad00000000 adffffff00000000 ffffffad00000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>-73,b=>1} b7ffffff01000000 b7ffffff01000000 b7ffffff01000000 ffffffb780000000 b7ffffff01000000 b7ffffff01000000 ffffffb780000000 b7ffffff01000000 ffffffb780000000 - {c=>1,a=>41,b=>0} 2900000002000000 2900000002000000 2900000002000000 0000002940000000 2900000002000000 2900000002000000 0000002940000000 2900000002000000 0000002940000000 - {c=>0,a=>-10,b=>0} f6ffffff00000000 f6ffffff00000000 f6ffffff00000000 fffffff600000000 f6ffffff00000000 f6ffffff00000000 fffffff600000000 f6ffffff00000000 fffffff600000000 - {c=>1,a=>46,b=>1} 2e00000003000000 2e00000003000000 2e00000003000000 0000002ec0000000 2e00000003000000 2e00000003000000 0000002ec0000000 2e00000003000000 0000002ec0000000 - {c=>0,a=>91,b=>1} 5b00000001000000 5b00000001000000 5b00000001000000 0000005b80000000 5b00000001000000 5b00000001000000 0000005b80000000 5b00000001000000 0000005b80000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>62,b=>1,d=>1} 3e00000005000000 3e00000005000000 3e00000005000000 0000003ea0000000 3e00000005000000 3e00000005000000 0000003ea0000000 3e00000005000000 0000003ea0000000 - {c=>1,a=>-98,b=>1,d=>1} 9effffff07000000 9effffff07000000 9effffff07000000 ffffff9ee0000000 9effffff07000000 9effffff07000000 ffffff9ee0000000 9effffff07000000 ffffff9ee0000000 - {c=>0,a=>-94,b=>0,d=>0} a2ffffff00000000 a2ffffff00000000 a2ffffff00000000 ffffffa200000000 a2ffffff00000000 a2ffffff00000000 ffffffa200000000 a2ffffff00000000 ffffffa200000000 - {c=>0,a=>36,b=>1,d=>0} 2400000001000000 2400000001000000 2400000001000000 0000002480000000 2400000001000000 2400000001000000 0000002480000000 2400000001000000 0000002480000000 - {c=>1,a=>-4,b=>0,d=>1} fcffffff06000000 fcffffff06000000 fcffffff06000000 fffffffc60000000 fcffffff06000000 fcffffff06000000 fffffffc60000000 fcffffff06000000 fffffffc60000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>0,c=>0,a=>96,b=>0,d=>0} 6000000000000000 6000000000000000 6000000000000000 0000006000000000 6000000000000000 6000000000000000 0000006000000000 6000000000000000 0000006000000000 - {e=>1,c=>0,a=>127,b=>1,d=>0} 7f00000009000000 7f00000009000000 7f00000009000000 0000007f90000000 7f00000009000000 7f00000009000000 0000007f90000000 7f00000009000000 0000007f90000000 - {e=>1,c=>0,a=>40,b=>0,d=>0} 2800000008000000 2800000008000000 2800000008000000 0000002810000000 2800000008000000 2800000008000000 0000002810000000 2800000008000000 0000002810000000 - {e=>1,c=>0,a=>96,b=>0,d=>1} 600000000c000000 600000000c000000 600000000c000000 0000006030000000 600000000c000000 600000000c000000 0000006030000000 600000000c000000 0000006030000000 - {e=>0,c=>0,a=>-42,b=>0,d=>1} d6ffffff04000000 d6ffffff04000000 d6ffffff04000000 ffffffd620000000 d6ffffff04000000 d6ffffff04000000 ffffffd620000000 d6ffffff04000000 ffffffd620000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>15,b=>0,d=>0,f=>0} 0f0000000200000000000000 0f0000000200000000000000 0f0000000200000000000000 0000000f4000000000000000 0f0000000200000000000000 0f0000000200000000000000 0000000f4000000000000000 0f0000000200000000000000 0000000f4000000000000000 - {e=>1,c=>0,a=>-90,b=>1,d=>1,f=>104} a6ffffff0d00000068000000 a6ffffff0d00000068000000 a6ffffff0d00000068000000 ffffffa6b000000000000068 a6ffffff0d00000068000000 a6ffffff0d00000068000000 ffffffa6b000000000000068 a6ffffff0d00000068000000 ffffffa6b000000000000068 - {e=>1,c=>0,a=>-53,b=>1,d=>0,f=>14} cbffffff090000000e000000 cbffffff090000000e000000 cbffffff090000000e000000 ffffffcb900000000000000e cbffffff090000000e000000 cbffffff090000000e000000 ffffffcb900000000000000e cbffffff090000000e000000 ffffffcb900000000000000e - {e=>0,c=>1,a=>41,b=>0,d=>1,f=>247} 2900000006000000f7000000 2900000006000000f7000000 2900000006000000f7000000 0000002960000000000000f7 2900000006000000f7000000 2900000006000000f7000000 0000002960000000000000f7 2900000006000000f7000000 0000002960000000000000f7 - {e=>1,c=>1,a=>-21,b=>0,d=>0,f=>111} ebffffff0a0000006f000000 ebffffff0a0000006f000000 ebffffff0a0000006f000000 ffffffeb500000000000006f ebffffff0a0000006f000000 ebffffff0a0000006f000000 ffffffeb500000000000006f ebffffff0a0000006f000000 ffffffeb500000000000006f = struct ushort { long a; unsigned short b:1; }; - {a=>-109,b=>0} 93ffffff00000000 93ffffffffffffff0000000000000000 93ffffffffffffff0000000000000000 ffffff9300000000 93ffffff00000000 93ffffff00000000 ffffffffffffff930000000000000000 93ffffff00000000 ffffff9300000000 - {a=>68,b=>1} 4400000001000000 44000000000000000100000000000000 44000000000000000100000000000000 0000004480000000 4400000001000000 4400000001000000 00000000000000448000000000000000 4400000001000000 0000004480000000 - {a=>-127,b=>0} 81ffffff00000000 81ffffffffffffff0000000000000000 81ffffffffffffff0000000000000000 ffffff8100000000 81ffffff00000000 81ffffff00000000 ffffffffffffff810000000000000000 81ffffff00000000 ffffff8100000000 - {a=>-101,b=>1} 9bffffff01000000 9bffffffffffffff0100000000000000 9bffffffffffffff0100000000000000 ffffff9b80000000 9bffffff01000000 9bffffff01000000 ffffffffffffff9b8000000000000000 9bffffff01000000 ffffff9b80000000 - {a=>65,b=>1} 4100000001000000 41000000000000000100000000000000 41000000000000000100000000000000 0000004180000000 4100000001000000 4100000001000000 00000000000000418000000000000000 4100000001000000 0000004180000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>-118,b=>0} 8affffff00000000 8affffffffffffff0000000000000000 8affffffffffffff0000000000000000 ffffff8a00000000 8affffff00000000 8affffff00000000 ffffffffffffff8a0000000000000000 8affffff00000000 ffffff8a00000000 - {c=>0,a=>98,b=>1} 6200000001000000 62000000000000000100000000000000 62000000000000000100000000000000 0000006280000000 6200000001000000 6200000001000000 00000000000000628000000000000000 6200000001000000 0000006280000000 - {c=>0,a=>20,b=>0} 1400000000000000 14000000000000000000000000000000 14000000000000000000000000000000 0000001400000000 1400000000000000 1400000000000000 00000000000000140000000000000000 1400000000000000 0000001400000000 - {c=>0,a=>-71,b=>0} b9ffffff00000000 b9ffffffffffffff0000000000000000 b9ffffffffffffff0000000000000000 ffffffb900000000 b9ffffff00000000 b9ffffff00000000 ffffffffffffffb90000000000000000 b9ffffff00000000 ffffffb900000000 - {c=>0,a=>-104,b=>1} 98ffffff01000000 98ffffffffffffff0100000000000000 98ffffffffffffff0100000000000000 ffffff9880000000 98ffffff01000000 98ffffff01000000 ffffffffffffff988000000000000000 98ffffff01000000 ffffff9880000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>31,b=>1,d=>1} 1f00000005000000 1f000000000000000500000000000000 1f000000000000000500000000000000 0000001fa0000000 1f00000005000000 1f00000005000000 000000000000001fa000000000000000 1f00000005000000 0000001fa0000000 - {c=>1,a=>105,b=>0,d=>1} 6900000006000000 69000000000000000600000000000000 69000000000000000600000000000000 0000006960000000 6900000006000000 6900000006000000 00000000000000696000000000000000 6900000006000000 0000006960000000 - {c=>1,a=>-124,b=>1,d=>0} 84ffffff03000000 84ffffffffffffff0300000000000000 84ffffffffffffff0300000000000000 ffffff84c0000000 84ffffff03000000 84ffffff03000000 ffffffffffffff84c000000000000000 84ffffff03000000 ffffff84c0000000 - {c=>1,a=>11,b=>1,d=>1} 0b00000007000000 0b000000000000000700000000000000 0b000000000000000700000000000000 0000000be0000000 0b00000007000000 0b00000007000000 000000000000000be000000000000000 0b00000007000000 0000000be0000000 - {c=>1,a=>21,b=>0,d=>1} 1500000006000000 15000000000000000600000000000000 15000000000000000600000000000000 0000001560000000 1500000006000000 1500000006000000 00000000000000156000000000000000 1500000006000000 0000001560000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>0,c=>0,a=>51,b=>0,d=>0} 3300000000000000 33000000000000000000000000000000 33000000000000000000000000000000 0000003300000000 3300000000000000 3300000000000000 00000000000000330000000000000000 3300000000000000 0000003300000000 - {e=>1,c=>1,a=>16,b=>1,d=>1} 100000000f000000 10000000000000000f00000000000000 10000000000000000f00000000000000 00000010f0000000 100000000f000000 100000000f000000 0000000000000010f000000000000000 100000000f000000 00000010f0000000 - {e=>1,c=>1,a=>-30,b=>1,d=>1} e2ffffff0f000000 e2ffffffffffffff0f00000000000000 e2ffffffffffffff0f00000000000000 ffffffe2f0000000 e2ffffff0f000000 e2ffffff0f000000 ffffffffffffffe2f000000000000000 e2ffffff0f000000 ffffffe2f0000000 - {e=>1,c=>0,a=>-27,b=>1,d=>0} e5ffffff09000000 e5ffffffffffffff0900000000000000 e5ffffffffffffff0900000000000000 ffffffe590000000 e5ffffff09000000 e5ffffff09000000 ffffffffffffffe59000000000000000 e5ffffff09000000 ffffffe590000000 - {e=>0,c=>0,a=>44,b=>1,d=>1} 2c00000005000000 2c000000000000000500000000000000 2c000000000000000500000000000000 0000002ca0000000 2c00000005000000 2c00000005000000 000000000000002ca000000000000000 2c00000005000000 0000002ca0000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>-43,b=>1,d=>0,f=>98} d5ffffff0300000062000000 d5ffffffffffffff0300000062000000 d5ffffffffffffff0300000062000000 ffffffd5c000000000000062 d5ffffff0300000062000000 d5ffffff0300000062000000 ffffffffffffffd5c000000000000062 d5ffffff0300000062000000 ffffffd5c000000000000062 - {e=>1,c=>0,a=>-40,b=>1,d=>1,f=>138} d8ffffff0d0000008a000000 d8ffffffffffffff0d0000008a000000 d8ffffffffffffff0d0000008a000000 ffffffd8b00000000000008a d8ffffff0d0000008a000000 d8ffffff0d0000008a000000 ffffffffffffffd8b00000000000008a d8ffffff0d0000008a000000 ffffffd8b00000000000008a - {e=>1,c=>0,a=>14,b=>1,d=>1,f=>44} 0e0000000d0000002c000000 0e000000000000000d0000002c000000 0e000000000000000d0000002c000000 0000000eb00000000000002c 0e0000000d0000002c000000 0e0000000d0000002c000000 000000000000000eb00000000000002c 0e0000000d0000002c000000 0000000eb00000000000002c - {e=>1,c=>1,a=>-30,b=>1,d=>0,f=>32} e2ffffff0b00000020000000 e2ffffffffffffff0b00000020000000 e2ffffffffffffff0b00000020000000 ffffffe2d000000000000020 e2ffffff0b00000020000000 e2ffffff0b00000020000000 ffffffffffffffe2d000000000000020 e2ffffff0b00000020000000 ffffffe2d000000000000020 - {e=>0,c=>1,a=>87,b=>0,d=>1,f=>216} 5700000006000000d8000000 570000000000000006000000d8000000 570000000000000006000000d8000000 0000005760000000000000d8 5700000006000000d8000000 5700000006000000d8000000 000000000000005760000000000000d8 5700000006000000d8000000 0000005760000000000000d8 = struct uint { unsigned int a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 = struct uint { unsigned int a:1; unsigned int b:1; }; - {a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {c=>1,a=>1,b=>0} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {c=>1,a=>0,b=>0} 04000000 04000000 04000000 20000000 04000000 04000000 20000000 04000000 20000000 - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>1,b=>1,d=>0} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {c=>0,a=>0,b=>0,d=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {c=>1,a=>0,b=>0,d=>1} 0c000000 0c000000 0c000000 30000000 0c000000 0c000000 30000000 0c000000 30000000 - {c=>0,a=>0,b=>1,d=>0} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {c=>1,a=>0,b=>1,d=>0} 06000000 06000000 06000000 60000000 06000000 06000000 60000000 06000000 60000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned char e; }; - {e=>191,c=>1,a=>1,b=>1,d=>1} 0fbf0000 0fbf0000 0fbf0000 f0bf0000 0fbf0000 0fbf0000 f0bf0000 0fbf0000 f0bf0000 - {e=>169,c=>0,a=>1,b=>0,d=>0} 01a90000 01a90000 01a90000 80a90000 01a90000 01a90000 80a90000 01a90000 80a90000 - {e=>146,c=>0,a=>1,b=>1,d=>0} 03920000 03920000 03920000 c0920000 03920000 03920000 c0920000 03920000 c0920000 - {e=>101,c=>1,a=>1,b=>0,d=>0} 05650000 05650000 05650000 a0650000 05650000 05650000 a0650000 05650000 a0650000 - {e=>214,c=>0,a=>0,b=>1,d=>0} 02d60000 02d60000 02d60000 40d60000 02d60000 02d60000 40d60000 02d60000 40d60000 = struct uint { char a; unsigned int b:1; }; - {a=>75,b=>1} 4b010000 4b010000 4b010000 4b800000 4b010000 4b010000 4b800000 4b010000 4b800000 - {a=>-108,b=>1} 94010000 94010000 94010000 94800000 94010000 94010000 94800000 94010000 94800000 - {a=>-66,b=>0} be000000 be000000 be000000 be000000 be000000 be000000 be000000 be000000 be000000 - {a=>70,b=>0} 46000000 46000000 46000000 46000000 46000000 46000000 46000000 46000000 46000000 - {a=>42,b=>0} 2a000000 2a000000 2a000000 2a000000 2a000000 2a000000 2a000000 2a000000 2a000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-100,b=>1} 9c030000 9c030000 9c030000 9cc00000 9c030000 9c030000 9cc00000 9c030000 9cc00000 - {c=>1,a=>93,b=>0} 5d020000 5d020000 5d020000 5d400000 5d020000 5d020000 5d400000 5d020000 5d400000 - {c=>1,a=>40,b=>0} 28020000 28020000 28020000 28400000 28020000 28020000 28400000 28020000 28400000 - {c=>1,a=>-20,b=>1} ec030000 ec030000 ec030000 ecc00000 ec030000 ec030000 ecc00000 ec030000 ecc00000 - {c=>1,a=>5,b=>0} 05020000 05020000 05020000 05400000 05020000 05020000 05400000 05020000 05400000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>-26,b=>0,d=>0} e6000000 e6000000 e6000000 e6000000 e6000000 e6000000 e6000000 e6000000 e6000000 - {c=>0,a=>-121,b=>0,d=>0} 87000000 87000000 87000000 87000000 87000000 87000000 87000000 87000000 87000000 - {c=>1,a=>2,b=>0,d=>1} 02060000 02060000 02060000 02600000 02060000 02060000 02600000 02060000 02600000 - {c=>1,a=>-54,b=>1,d=>0} ca030000 ca030000 ca030000 cac00000 ca030000 ca030000 cac00000 ca030000 cac00000 - {c=>1,a=>79,b=>0,d=>0} 4f020000 4f020000 4f020000 4f400000 4f020000 4f020000 4f400000 4f020000 4f400000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>0,c=>1,a=>123,b=>0,d=>1} 7b060000 7b060000 7b060000 7b600000 7b060000 7b060000 7b600000 7b060000 7b600000 - {e=>0,c=>0,a=>-85,b=>1,d=>0} ab010000 ab010000 ab010000 ab800000 ab010000 ab010000 ab800000 ab010000 ab800000 - {e=>0,c=>1,a=>108,b=>1,d=>0} 6c030000 6c030000 6c030000 6cc00000 6c030000 6c030000 6cc00000 6c030000 6cc00000 - {e=>0,c=>0,a=>5,b=>1,d=>0} 05010000 05010000 05010000 05800000 05010000 05010000 05800000 05010000 05800000 - {e=>1,c=>0,a=>37,b=>0,d=>0} 25080000 25080000 25080000 25100000 25080000 25080000 25100000 25080000 25100000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>1,c=>1,a=>-3,b=>0,d=>0,f=>33} fd0a2100 fd0a2100 fd0a2100 fd502100 fd0a2100 fd0a2100 fd502100 fd0a2100 fd502100 - {e=>1,c=>0,a=>-54,b=>1,d=>1,f=>25} ca0d1900 ca0d1900 ca0d1900 cab01900 ca0d1900 ca0d1900 cab01900 ca0d1900 cab01900 - {e=>1,c=>1,a=>99,b=>0,d=>0,f=>1} 630a0100 630a0100 630a0100 63500100 630a0100 630a0100 63500100 630a0100 63500100 - {e=>0,c=>0,a=>36,b=>0,d=>1,f=>171} 2404ab00 2404ab00 2404ab00 2420ab00 2404ab00 2404ab00 2420ab00 2404ab00 2420ab00 - {e=>0,c=>0,a=>-112,b=>0,d=>1,f=>44} 90042c00 90042c00 90042c00 90202c00 90042c00 90042c00 90202c00 90042c00 90202c00 = struct uint { short a; unsigned int b:1; }; - {a=>17,b=>1} 11000100 11000100 11000100 00118000 11000100 11000100 00118000 11000100 00118000 - {a=>-109,b=>0} 93ff0000 93ff0000 93ff0000 ff930000 93ff0000 93ff0000 ff930000 93ff0000 ff930000 - {a=>66,b=>1} 42000100 42000100 42000100 00428000 42000100 42000100 00428000 42000100 00428000 - {a=>15,b=>0} 0f000000 0f000000 0f000000 000f0000 0f000000 0f000000 000f0000 0f000000 000f0000 - {a=>67,b=>1} 43000100 43000100 43000100 00438000 43000100 43000100 00438000 43000100 00438000 = struct uint { short a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-17,b=>0} efff0200 efff0200 efff0200 ffef4000 efff0200 efff0200 ffef4000 efff0200 ffef4000 - {c=>0,a=>-96,b=>0} a0ff0000 a0ff0000 a0ff0000 ffa00000 a0ff0000 a0ff0000 ffa00000 a0ff0000 ffa00000 - {c=>0,a=>19,b=>0} 13000000 13000000 13000000 00130000 13000000 13000000 00130000 13000000 00130000 - {c=>1,a=>-75,b=>1} b5ff0300 b5ff0300 b5ff0300 ffb5c000 b5ff0300 b5ff0300 ffb5c000 b5ff0300 ffb5c000 - {c=>0,a=>-26,b=>1} e6ff0100 e6ff0100 e6ff0100 ffe68000 e6ff0100 e6ff0100 ffe68000 e6ff0100 ffe68000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>-128,b=>0,d=>1} 80ff0400 80ff0400 80ff0400 ff802000 80ff0400 80ff0400 ff802000 80ff0400 ff802000 - {c=>0,a=>6,b=>0,d=>1} 06000400 06000400 06000400 00062000 06000400 06000400 00062000 06000400 00062000 - {c=>1,a=>-76,b=>1,d=>0} b4ff0300 b4ff0300 b4ff0300 ffb4c000 b4ff0300 b4ff0300 ffb4c000 b4ff0300 ffb4c000 - {c=>0,a=>-60,b=>1,d=>0} c4ff0100 c4ff0100 c4ff0100 ffc48000 c4ff0100 c4ff0100 ffc48000 c4ff0100 ffc48000 - {c=>1,a=>-102,b=>1,d=>1} 9aff0700 9aff0700 9aff0700 ff9ae000 9aff0700 9aff0700 ff9ae000 9aff0700 ff9ae000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>0,c=>0,a=>-11,b=>0,d=>1} f5ff0400 f5ff0400 f5ff0400 fff52000 f5ff0400 f5ff0400 fff52000 f5ff0400 fff52000 - {e=>1,c=>0,a=>-23,b=>1,d=>1} e9ff0d00 e9ff0d00 e9ff0d00 ffe9b000 e9ff0d00 e9ff0d00 ffe9b000 e9ff0d00 ffe9b000 - {e=>1,c=>1,a=>81,b=>0,d=>0} 51000a00 51000a00 51000a00 00515000 51000a00 51000a00 00515000 51000a00 00515000 - {e=>0,c=>0,a=>16,b=>0,d=>0} 10000000 10000000 10000000 00100000 10000000 10000000 00100000 10000000 00100000 - {e=>1,c=>1,a=>90,b=>1,d=>0} 5a000b00 5a000b00 5a000b00 005ad000 5a000b00 5a000b00 005ad000 5a000b00 005ad000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>0,c=>1,a=>108,b=>0,d=>1,f=>91} 6c00065b 6c00065b 6c00065b 006c605b 6c00065b 6c00065b 006c605b 6c00065b 006c605b - {e=>0,c=>0,a=>113,b=>1,d=>0,f=>123} 7100017b 7100017b 7100017b 0071807b 7100017b 7100017b 0071807b 7100017b 0071807b - {e=>0,c=>0,a=>-118,b=>1,d=>1,f=>27} 8aff051b 8aff051b 8aff051b ff8aa01b 8aff051b 8aff051b ff8aa01b 8aff051b ff8aa01b - {e=>0,c=>0,a=>105,b=>1,d=>1,f=>227} 690005e3 690005e3 690005e3 0069a0e3 690005e3 690005e3 0069a0e3 690005e3 0069a0e3 - {e=>0,c=>1,a=>58,b=>0,d=>0,f=>37} 3a000225 3a000225 3a000225 003a4025 3a000225 3a000225 003a4025 3a000225 003a4025 = struct uint { int a; unsigned int b:1; }; - {a=>123,b=>0} 7b00000000000000 7b00000000000000 7b00000000000000 0000007b00000000 7b00000000000000 7b00000000000000 0000007b00000000 7b00000000000000 0000007b00000000 - {a=>-82,b=>1} aeffffff01000000 aeffffff01000000 aeffffff01000000 ffffffae80000000 aeffffff01000000 aeffffff01000000 ffffffae80000000 aeffffff01000000 ffffffae80000000 - {a=>-71,b=>0} b9ffffff00000000 b9ffffff00000000 b9ffffff00000000 ffffffb900000000 b9ffffff00000000 b9ffffff00000000 ffffffb900000000 b9ffffff00000000 ffffffb900000000 - {a=>-16,b=>0} f0ffffff00000000 f0ffffff00000000 f0ffffff00000000 fffffff000000000 f0ffffff00000000 f0ffffff00000000 fffffff000000000 f0ffffff00000000 fffffff000000000 - {a=>82,b=>0} 5200000000000000 5200000000000000 5200000000000000 0000005200000000 5200000000000000 5200000000000000 0000005200000000 5200000000000000 0000005200000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>-82,b=>1} aeffffff01000000 aeffffff01000000 aeffffff01000000 ffffffae80000000 aeffffff01000000 aeffffff01000000 ffffffae80000000 aeffffff01000000 ffffffae80000000 - {c=>1,a=>76,b=>1} 4c00000003000000 4c00000003000000 4c00000003000000 0000004cc0000000 4c00000003000000 4c00000003000000 0000004cc0000000 4c00000003000000 0000004cc0000000 - {c=>0,a=>90,b=>1} 5a00000001000000 5a00000001000000 5a00000001000000 0000005a80000000 5a00000001000000 5a00000001000000 0000005a80000000 5a00000001000000 0000005a80000000 - {c=>0,a=>-87,b=>1} a9ffffff01000000 a9ffffff01000000 a9ffffff01000000 ffffffa980000000 a9ffffff01000000 a9ffffff01000000 ffffffa980000000 a9ffffff01000000 ffffffa980000000 - {c=>1,a=>-70,b=>0} baffffff02000000 baffffff02000000 baffffff02000000 ffffffba40000000 baffffff02000000 baffffff02000000 ffffffba40000000 baffffff02000000 ffffffba40000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>103,b=>1,d=>1} 6700000005000000 6700000005000000 6700000005000000 00000067a0000000 6700000005000000 6700000005000000 00000067a0000000 6700000005000000 00000067a0000000 - {c=>0,a=>-102,b=>1,d=>0} 9affffff01000000 9affffff01000000 9affffff01000000 ffffff9a80000000 9affffff01000000 9affffff01000000 ffffff9a80000000 9affffff01000000 ffffff9a80000000 - {c=>1,a=>8,b=>1,d=>1} 0800000007000000 0800000007000000 0800000007000000 00000008e0000000 0800000007000000 0800000007000000 00000008e0000000 0800000007000000 00000008e0000000 - {c=>1,a=>24,b=>0,d=>1} 1800000006000000 1800000006000000 1800000006000000 0000001860000000 1800000006000000 1800000006000000 0000001860000000 1800000006000000 0000001860000000 - {c=>0,a=>-37,b=>1,d=>1} dbffffff05000000 dbffffff05000000 dbffffff05000000 ffffffdba0000000 dbffffff05000000 dbffffff05000000 ffffffdba0000000 dbffffff05000000 ffffffdba0000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>73,b=>0,d=>0} 490000000a000000 490000000a000000 490000000a000000 0000004950000000 490000000a000000 490000000a000000 0000004950000000 490000000a000000 0000004950000000 - {e=>0,c=>0,a=>-47,b=>1,d=>1} d1ffffff05000000 d1ffffff05000000 d1ffffff05000000 ffffffd1a0000000 d1ffffff05000000 d1ffffff05000000 ffffffd1a0000000 d1ffffff05000000 ffffffd1a0000000 - {e=>1,c=>1,a=>105,b=>0,d=>1} 690000000e000000 690000000e000000 690000000e000000 0000006970000000 690000000e000000 690000000e000000 0000006970000000 690000000e000000 0000006970000000 - {e=>1,c=>0,a=>39,b=>1,d=>1} 270000000d000000 270000000d000000 270000000d000000 00000027b0000000 270000000d000000 270000000d000000 00000027b0000000 270000000d000000 00000027b0000000 - {e=>0,c=>1,a=>-19,b=>0,d=>0} edffffff02000000 edffffff02000000 edffffff02000000 ffffffed40000000 edffffff02000000 edffffff02000000 ffffffed40000000 edffffff02000000 ffffffed40000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>0,c=>1,a=>-13,b=>0,d=>0,f=>179} f3ffffff02b30000 f3ffffff02b30000 f3ffffff02b30000 fffffff340b30000 f3ffffff02b30000 f3ffffff02b30000 fffffff340b30000 f3ffffff02b30000 fffffff340b30000 - {e=>0,c=>1,a=>-50,b=>0,d=>1,f=>86} ceffffff06560000 ceffffff06560000 ceffffff06560000 ffffffce60560000 ceffffff06560000 ceffffff06560000 ffffffce60560000 ceffffff06560000 ffffffce60560000 - {e=>1,c=>1,a=>127,b=>0,d=>1,f=>197} 7f0000000ec50000 7f0000000ec50000 7f0000000ec50000 0000007f70c50000 7f0000000ec50000 7f0000000ec50000 0000007f70c50000 7f0000000ec50000 0000007f70c50000 - {e=>0,c=>1,a=>22,b=>0,d=>1,f=>205} 1600000006cd0000 1600000006cd0000 1600000006cd0000 0000001660cd0000 1600000006cd0000 1600000006cd0000 0000001660cd0000 1600000006cd0000 0000001660cd0000 - {e=>1,c=>1,a=>-24,b=>1,d=>0,f=>208} e8ffffff0bd00000 e8ffffff0bd00000 e8ffffff0bd00000 ffffffe8d0d00000 e8ffffff0bd00000 e8ffffff0bd00000 ffffffe8d0d00000 e8ffffff0bd00000 ffffffe8d0d00000 = struct uint { long a; unsigned int b:1; }; - {a=>125,b=>0} 7d00000000000000 7d000000000000000000000000000000 7d000000000000000000000000000000 0000007d00000000 7d00000000000000 7d00000000000000 000000000000007d0000000000000000 7d00000000000000 0000007d00000000 - {a=>76,b=>0} 4c00000000000000 4c000000000000000000000000000000 4c000000000000000000000000000000 0000004c00000000 4c00000000000000 4c00000000000000 000000000000004c0000000000000000 4c00000000000000 0000004c00000000 - {a=>118,b=>1} 7600000001000000 76000000000000000100000000000000 76000000000000000100000000000000 0000007680000000 7600000001000000 7600000001000000 00000000000000768000000000000000 7600000001000000 0000007680000000 - {a=>39,b=>1} 2700000001000000 27000000000000000100000000000000 27000000000000000100000000000000 0000002780000000 2700000001000000 2700000001000000 00000000000000278000000000000000 2700000001000000 0000002780000000 - {a=>117,b=>0} 7500000000000000 75000000000000000000000000000000 75000000000000000000000000000000 0000007500000000 7500000000000000 7500000000000000 00000000000000750000000000000000 7500000000000000 0000007500000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>96,b=>1} 6000000001000000 60000000000000000100000000000000 60000000000000000100000000000000 0000006080000000 6000000001000000 6000000001000000 00000000000000608000000000000000 6000000001000000 0000006080000000 - {c=>0,a=>85,b=>0} 5500000000000000 55000000000000000000000000000000 55000000000000000000000000000000 0000005500000000 5500000000000000 5500000000000000 00000000000000550000000000000000 5500000000000000 0000005500000000 - {c=>0,a=>-120,b=>1} 88ffffff01000000 88ffffffffffffff0100000000000000 88ffffffffffffff0100000000000000 ffffff8880000000 88ffffff01000000 88ffffff01000000 ffffffffffffff888000000000000000 88ffffff01000000 ffffff8880000000 - {c=>1,a=>46,b=>1} 2e00000003000000 2e000000000000000300000000000000 2e000000000000000300000000000000 0000002ec0000000 2e00000003000000 2e00000003000000 000000000000002ec000000000000000 2e00000003000000 0000002ec0000000 - {c=>1,a=>-15,b=>1} f1ffffff03000000 f1ffffffffffffff0300000000000000 f1ffffffffffffff0300000000000000 fffffff1c0000000 f1ffffff03000000 f1ffffff03000000 fffffffffffffff1c000000000000000 f1ffffff03000000 fffffff1c0000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>1,a=>86,b=>0,d=>0} 5600000002000000 56000000000000000200000000000000 56000000000000000200000000000000 0000005640000000 5600000002000000 5600000002000000 00000000000000564000000000000000 5600000002000000 0000005640000000 - {c=>0,a=>-29,b=>1,d=>1} e3ffffff05000000 e3ffffffffffffff0500000000000000 e3ffffffffffffff0500000000000000 ffffffe3a0000000 e3ffffff05000000 e3ffffff05000000 ffffffffffffffe3a000000000000000 e3ffffff05000000 ffffffe3a0000000 - {c=>0,a=>97,b=>1,d=>0} 6100000001000000 61000000000000000100000000000000 61000000000000000100000000000000 0000006180000000 6100000001000000 6100000001000000 00000000000000618000000000000000 6100000001000000 0000006180000000 - {c=>1,a=>92,b=>1,d=>0} 5c00000003000000 5c000000000000000300000000000000 5c000000000000000300000000000000 0000005cc0000000 5c00000003000000 5c00000003000000 000000000000005cc000000000000000 5c00000003000000 0000005cc0000000 - {c=>1,a=>-52,b=>0,d=>1} ccffffff06000000 ccffffffffffffff0600000000000000 ccffffffffffffff0600000000000000 ffffffcc60000000 ccffffff06000000 ccffffff06000000 ffffffffffffffcc6000000000000000 ccffffff06000000 ffffffcc60000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>46,b=>1,d=>0} 2e0000000b000000 2e000000000000000b00000000000000 2e000000000000000b00000000000000 0000002ed0000000 2e0000000b000000 2e0000000b000000 000000000000002ed000000000000000 2e0000000b000000 0000002ed0000000 - {e=>0,c=>1,a=>6,b=>0,d=>1} 0600000006000000 06000000000000000600000000000000 06000000000000000600000000000000 0000000660000000 0600000006000000 0600000006000000 00000000000000066000000000000000 0600000006000000 0000000660000000 - {e=>0,c=>1,a=>-88,b=>1,d=>0} a8ffffff03000000 a8ffffffffffffff0300000000000000 a8ffffffffffffff0300000000000000 ffffffa8c0000000 a8ffffff03000000 a8ffffff03000000 ffffffffffffffa8c000000000000000 a8ffffff03000000 ffffffa8c0000000 - {e=>1,c=>1,a=>61,b=>0,d=>0} 3d0000000a000000 3d000000000000000a00000000000000 3d000000000000000a00000000000000 0000003d50000000 3d0000000a000000 3d0000000a000000 000000000000003d5000000000000000 3d0000000a000000 0000003d50000000 - {e=>1,c=>1,a=>-91,b=>0,d=>1} a5ffffff0e000000 a5ffffffffffffff0e00000000000000 a5ffffffffffffff0e00000000000000 ffffffa570000000 a5ffffff0e000000 a5ffffff0e000000 ffffffffffffffa57000000000000000 a5ffffff0e000000 ffffffa570000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>1,c=>0,a=>0,b=>0,d=>0,f=>3} 0000000008030000 00000000000000000803000000000000 00000000000000000803000000000000 0000000010030000 0000000008030000 0000000008030000 00000000000000001003000000000000 0000000008030000 0000000010030000 - {e=>1,c=>0,a=>-78,b=>1,d=>0,f=>176} b2ffffff09b00000 b2ffffffffffffff09b0000000000000 b2ffffffffffffff09b0000000000000 ffffffb290b00000 b2ffffff09b00000 b2ffffff09b00000 ffffffffffffffb290b0000000000000 b2ffffff09b00000 ffffffb290b00000 - {e=>0,c=>1,a=>-121,b=>1,d=>1,f=>153} 87ffffff07990000 87ffffffffffffff0799000000000000 87ffffffffffffff0799000000000000 ffffff87e0990000 87ffffff07990000 87ffffff07990000 ffffffffffffff87e099000000000000 87ffffff07990000 ffffff87e0990000 - {e=>0,c=>1,a=>-50,b=>1,d=>0,f=>143} ceffffff038f0000 ceffffffffffffff038f000000000000 ceffffffffffffff038f000000000000 ffffffcec08f0000 ceffffff038f0000 ceffffff038f0000 ffffffffffffffcec08f000000000000 ceffffff038f0000 ffffffcec08f0000 - {e=>0,c=>1,a=>-106,b=>0,d=>0,f=>229} 96ffffff02e50000 96ffffffffffffff02e5000000000000 96ffffffffffffff02e5000000000000 ffffff9640e50000 96ffffff02e50000 96ffffff02e50000 ffffffffffffff9640e5000000000000 96ffffff02e50000 ffffff9640e50000 = struct ulong { unsigned long a:1; }; - {a=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {a=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {a=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {a=>1} 01000000 0100000000000000 0100000000000000 80000000 01000000 01000000 8000000000000000 01000000 80000000 - {a=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 = struct ulong { unsigned long a:1; unsigned long b:1; }; - {a=>0,b=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {a=>1,b=>1} 03000000 0300000000000000 0300000000000000 c0000000 03000000 03000000 c000000000000000 03000000 c0000000 - {a=>1,b=>0} 01000000 0100000000000000 0100000000000000 80000000 01000000 01000000 8000000000000000 01000000 80000000 - {a=>1,b=>1} 03000000 0300000000000000 0300000000000000 c0000000 03000000 03000000 c000000000000000 03000000 c0000000 - {a=>0,b=>1} 02000000 0200000000000000 0200000000000000 40000000 02000000 02000000 4000000000000000 02000000 40000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; }; - {c=>0,a=>0,b=>0} 00000000 0000000000000000 0000000000000000 00000000 00000000 00000000 0000000000000000 00000000 00000000 - {c=>0,a=>1,b=>1} 03000000 0300000000000000 0300000000000000 c0000000 03000000 03000000 c000000000000000 03000000 c0000000 - {c=>0,a=>0,b=>1} 02000000 0200000000000000 0200000000000000 40000000 02000000 02000000 4000000000000000 02000000 40000000 - {c=>1,a=>0,b=>1} 06000000 0600000000000000 0600000000000000 60000000 06000000 06000000 6000000000000000 06000000 60000000 - {c=>1,a=>0,b=>0} 04000000 0400000000000000 0400000000000000 20000000 04000000 04000000 2000000000000000 04000000 20000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>1,a=>1,b=>1,d=>0} 07000000 0700000000000000 0700000000000000 e0000000 07000000 07000000 e000000000000000 07000000 e0000000 - {c=>1,a=>0,b=>0,d=>0} 04000000 0400000000000000 0400000000000000 20000000 04000000 04000000 2000000000000000 04000000 20000000 - {c=>0,a=>1,b=>1,d=>1} 0b000000 0b00000000000000 0b00000000000000 d0000000 0b000000 0b000000 d000000000000000 0b000000 d0000000 - {c=>0,a=>1,b=>0,d=>0} 01000000 0100000000000000 0100000000000000 80000000 01000000 01000000 8000000000000000 01000000 80000000 - {c=>1,a=>0,b=>1,d=>0} 06000000 0600000000000000 0600000000000000 60000000 06000000 06000000 6000000000000000 06000000 60000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned char e; }; - {e=>171,c=>0,a=>1,b=>0,d=>0} 01ab0000 01ab000000000000 01ab000000000000 80ab0000 01ab0000 01ab0000 80ab000000000000 01ab0000 80ab0000 - {e=>112,c=>0,a=>0,b=>0,d=>0} 00700000 0070000000000000 0070000000000000 00700000 00700000 00700000 0070000000000000 00700000 00700000 - {e=>62,c=>0,a=>0,b=>0,d=>1} 083e0000 083e000000000000 083e000000000000 103e0000 083e0000 083e0000 103e000000000000 083e0000 103e0000 - {e=>210,c=>0,a=>0,b=>1,d=>1} 0ad20000 0ad2000000000000 0ad2000000000000 50d20000 0ad20000 0ad20000 50d2000000000000 0ad20000 50d20000 - {e=>159,c=>1,a=>0,b=>1,d=>1} 0e9f0000 0e9f000000000000 0e9f000000000000 709f0000 0e9f0000 0e9f0000 709f000000000000 0e9f0000 709f0000 = struct ulong { char a; unsigned long b:1; }; - {a=>-121,b=>1} 87010000 8701000000000000 8701000000000000 87800000 87010000 87010000 8780000000000000 87010000 87800000 - {a=>50,b=>1} 32010000 3201000000000000 3201000000000000 32800000 32010000 32010000 3280000000000000 32010000 32800000 - {a=>-89,b=>1} a7010000 a701000000000000 a701000000000000 a7800000 a7010000 a7010000 a780000000000000 a7010000 a7800000 - {a=>92,b=>0} 5c000000 5c00000000000000 5c00000000000000 5c000000 5c000000 5c000000 5c00000000000000 5c000000 5c000000 - {a=>-41,b=>0} d7000000 d700000000000000 d700000000000000 d7000000 d7000000 d7000000 d700000000000000 d7000000 d7000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>-46,b=>1} d2030000 d203000000000000 d203000000000000 d2c00000 d2030000 d2030000 d2c0000000000000 d2030000 d2c00000 - {c=>0,a=>-85,b=>0} ab000000 ab00000000000000 ab00000000000000 ab000000 ab000000 ab000000 ab00000000000000 ab000000 ab000000 - {c=>0,a=>78,b=>0} 4e000000 4e00000000000000 4e00000000000000 4e000000 4e000000 4e000000 4e00000000000000 4e000000 4e000000 - {c=>0,a=>-50,b=>0} ce000000 ce00000000000000 ce00000000000000 ce000000 ce000000 ce000000 ce00000000000000 ce000000 ce000000 - {c=>1,a=>-57,b=>1} c7030000 c703000000000000 c703000000000000 c7c00000 c7030000 c7030000 c7c0000000000000 c7030000 c7c00000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-7,b=>0,d=>1} f9040000 f904000000000000 f904000000000000 f9200000 f9040000 f9040000 f920000000000000 f9040000 f9200000 - {c=>0,a=>69,b=>0,d=>0} 45000000 4500000000000000 4500000000000000 45000000 45000000 45000000 4500000000000000 45000000 45000000 - {c=>1,a=>78,b=>1,d=>1} 4e070000 4e07000000000000 4e07000000000000 4ee00000 4e070000 4e070000 4ee0000000000000 4e070000 4ee00000 - {c=>1,a=>19,b=>0,d=>0} 13020000 1302000000000000 1302000000000000 13400000 13020000 13020000 1340000000000000 13020000 13400000 - {c=>1,a=>-18,b=>1,d=>0} ee030000 ee03000000000000 ee03000000000000 eec00000 ee030000 ee030000 eec0000000000000 ee030000 eec00000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>0,a=>-82,b=>1,d=>1} ae0d0000 ae0d000000000000 ae0d000000000000 aeb00000 ae0d0000 ae0d0000 aeb0000000000000 ae0d0000 aeb00000 - {e=>1,c=>1,a=>125,b=>0,d=>1} 7d0e0000 7d0e000000000000 7d0e000000000000 7d700000 7d0e0000 7d0e0000 7d70000000000000 7d0e0000 7d700000 - {e=>1,c=>1,a=>-119,b=>0,d=>1} 890e0000 890e000000000000 890e000000000000 89700000 890e0000 890e0000 8970000000000000 890e0000 89700000 - {e=>1,c=>1,a=>39,b=>0,d=>1} 270e0000 270e000000000000 270e000000000000 27700000 270e0000 270e0000 2770000000000000 270e0000 27700000 - {e=>0,c=>1,a=>14,b=>0,d=>0} 0e020000 0e02000000000000 0e02000000000000 0e400000 0e020000 0e020000 0e40000000000000 0e020000 0e400000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>-3,b=>1,d=>0,f=>197} fd09c500 fd09c50000000000 fd09c50000000000 fd90c500 fd09c500 fd09c500 fd90c50000000000 fd09c500 fd90c500 - {e=>0,c=>1,a=>87,b=>0,d=>0,f=>225} 5702e100 5702e10000000000 5702e10000000000 5740e100 5702e100 5702e100 5740e10000000000 5702e100 5740e100 - {e=>0,c=>1,a=>-120,b=>1,d=>1,f=>123} 88077b00 88077b0000000000 88077b0000000000 88e07b00 88077b00 88077b00 88e07b0000000000 88077b00 88e07b00 - {e=>1,c=>0,a=>-101,b=>0,d=>0,f=>120} 9b087800 9b08780000000000 9b08780000000000 9b107800 9b087800 9b087800 9b10780000000000 9b087800 9b107800 - {e=>1,c=>1,a=>13,b=>0,d=>1,f=>245} 0d0ef500 0d0ef50000000000 0d0ef50000000000 0d70f500 0d0ef500 0d0ef500 0d70f50000000000 0d0ef500 0d70f500 = struct ulong { short a; unsigned long b:1; }; - {a=>-34,b=>1} deff0100 deff010000000000 deff010000000000 ffde8000 deff0100 deff0100 ffde800000000000 deff0100 ffde8000 - {a=>-97,b=>1} 9fff0100 9fff010000000000 9fff010000000000 ff9f8000 9fff0100 9fff0100 ff9f800000000000 9fff0100 ff9f8000 - {a=>125,b=>0} 7d000000 7d00000000000000 7d00000000000000 007d0000 7d000000 7d000000 007d000000000000 7d000000 007d0000 - {a=>-4,b=>1} fcff0100 fcff010000000000 fcff010000000000 fffc8000 fcff0100 fcff0100 fffc800000000000 fcff0100 fffc8000 - {a=>-46,b=>0} d2ff0000 d2ff000000000000 d2ff000000000000 ffd20000 d2ff0000 d2ff0000 ffd2000000000000 d2ff0000 ffd20000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; }; - {c=>0,a=>54,b=>1} 36000100 3600010000000000 3600010000000000 00368000 36000100 36000100 0036800000000000 36000100 00368000 - {c=>1,a=>25,b=>1} 19000300 1900030000000000 1900030000000000 0019c000 19000300 19000300 0019c00000000000 19000300 0019c000 - {c=>1,a=>-112,b=>1} 90ff0300 90ff030000000000 90ff030000000000 ff90c000 90ff0300 90ff0300 ff90c00000000000 90ff0300 ff90c000 - {c=>0,a=>53,b=>1} 35000100 3500010000000000 3500010000000000 00358000 35000100 35000100 0035800000000000 35000100 00358000 - {c=>0,a=>-72,b=>0} b8ff0000 b8ff000000000000 b8ff000000000000 ffb80000 b8ff0000 b8ff0000 ffb8000000000000 b8ff0000 ffb80000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-37,b=>0,d=>1} dbff0400 dbff040000000000 dbff040000000000 ffdb2000 dbff0400 dbff0400 ffdb200000000000 dbff0400 ffdb2000 - {c=>1,a=>59,b=>0,d=>1} 3b000600 3b00060000000000 3b00060000000000 003b6000 3b000600 3b000600 003b600000000000 3b000600 003b6000 - {c=>1,a=>-10,b=>1,d=>1} f6ff0700 f6ff070000000000 f6ff070000000000 fff6e000 f6ff0700 f6ff0700 fff6e00000000000 f6ff0700 fff6e000 - {c=>0,a=>-39,b=>1,d=>0} d9ff0100 d9ff010000000000 d9ff010000000000 ffd98000 d9ff0100 d9ff0100 ffd9800000000000 d9ff0100 ffd98000 - {c=>0,a=>26,b=>0,d=>1} 1a000400 1a00040000000000 1a00040000000000 001a2000 1a000400 1a000400 001a200000000000 1a000400 001a2000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>77,b=>1,d=>0} 4d000b00 4d000b0000000000 4d000b0000000000 004dd000 4d000b00 4d000b00 004dd00000000000 4d000b00 004dd000 - {e=>0,c=>0,a=>71,b=>1,d=>1} 47000500 4700050000000000 4700050000000000 0047a000 47000500 47000500 0047a00000000000 47000500 0047a000 - {e=>1,c=>0,a=>12,b=>1,d=>0} 0c000900 0c00090000000000 0c00090000000000 000c9000 0c000900 0c000900 000c900000000000 0c000900 000c9000 - {e=>1,c=>1,a=>-120,b=>1,d=>1} 88ff0f00 88ff0f0000000000 88ff0f0000000000 ff88f000 88ff0f00 88ff0f00 ff88f00000000000 88ff0f00 ff88f000 - {e=>0,c=>0,a=>-106,b=>0,d=>1} 96ff0400 96ff040000000000 96ff040000000000 ff962000 96ff0400 96ff0400 ff96200000000000 96ff0400 ff962000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>93,b=>1,d=>0,f=>203} 5d000bcb 5d000bcb00000000 5d000bcb00000000 005dd0cb 5d000bcb 5d000bcb 005dd0cb00000000 5d000bcb 005dd0cb - {e=>1,c=>1,a=>-61,b=>1,d=>0,f=>222} c3ff0bde c3ff0bde00000000 c3ff0bde00000000 ffc3d0de c3ff0bde c3ff0bde ffc3d0de00000000 c3ff0bde ffc3d0de - {e=>0,c=>1,a=>-4,b=>0,d=>0,f=>177} fcff02b1 fcff02b100000000 fcff02b100000000 fffc40b1 fcff02b1 fcff02b1 fffc40b100000000 fcff02b1 fffc40b1 - {e=>0,c=>1,a=>-34,b=>1,d=>1,f=>92} deff075c deff075c00000000 deff075c00000000 ffdee05c deff075c deff075c ffdee05c00000000 deff075c ffdee05c - {e=>0,c=>1,a=>6,b=>0,d=>1,f=>117} 06000675 0600067500000000 0600067500000000 00066075 06000675 06000675 0006607500000000 06000675 00066075 = struct ulong { int a; unsigned long b:1; }; - {a=>20,b=>1} 1400000001000000 1400000001000000 1400000001000000 0000001480000000 1400000001000000 1400000001000000 0000001480000000 1400000001000000 0000001480000000 - {a=>-70,b=>1} baffffff01000000 baffffff01000000 baffffff01000000 ffffffba80000000 baffffff01000000 baffffff01000000 ffffffba80000000 baffffff01000000 ffffffba80000000 - {a=>-124,b=>0} 84ffffff00000000 84ffffff00000000 84ffffff00000000 ffffff8400000000 84ffffff00000000 84ffffff00000000 ffffff8400000000 84ffffff00000000 ffffff8400000000 - {a=>-106,b=>0} 96ffffff00000000 96ffffff00000000 96ffffff00000000 ffffff9600000000 96ffffff00000000 96ffffff00000000 ffffff9600000000 96ffffff00000000 ffffff9600000000 - {a=>25,b=>1} 1900000001000000 1900000001000000 1900000001000000 0000001980000000 1900000001000000 1900000001000000 0000001980000000 1900000001000000 0000001980000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>42,b=>0} 2a00000002000000 2a00000002000000 2a00000002000000 0000002a40000000 2a00000002000000 2a00000002000000 0000002a40000000 2a00000002000000 0000002a40000000 - {c=>1,a=>-120,b=>1} 88ffffff03000000 88ffffff03000000 88ffffff03000000 ffffff88c0000000 88ffffff03000000 88ffffff03000000 ffffff88c0000000 88ffffff03000000 ffffff88c0000000 - {c=>1,a=>-122,b=>1} 86ffffff03000000 86ffffff03000000 86ffffff03000000 ffffff86c0000000 86ffffff03000000 86ffffff03000000 ffffff86c0000000 86ffffff03000000 ffffff86c0000000 - {c=>0,a=>-34,b=>0} deffffff00000000 deffffff00000000 deffffff00000000 ffffffde00000000 deffffff00000000 deffffff00000000 ffffffde00000000 deffffff00000000 ffffffde00000000 - {c=>0,a=>-40,b=>0} d8ffffff00000000 d8ffffff00000000 d8ffffff00000000 ffffffd800000000 d8ffffff00000000 d8ffffff00000000 ffffffd800000000 d8ffffff00000000 ffffffd800000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>44,b=>1,d=>0} 2c00000001000000 2c00000001000000 2c00000001000000 0000002c80000000 2c00000001000000 2c00000001000000 0000002c80000000 2c00000001000000 0000002c80000000 - {c=>1,a=>119,b=>1,d=>0} 7700000003000000 7700000003000000 7700000003000000 00000077c0000000 7700000003000000 7700000003000000 00000077c0000000 7700000003000000 00000077c0000000 - {c=>1,a=>30,b=>1,d=>0} 1e00000003000000 1e00000003000000 1e00000003000000 0000001ec0000000 1e00000003000000 1e00000003000000 0000001ec0000000 1e00000003000000 0000001ec0000000 - {c=>0,a=>-76,b=>0,d=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 ffffffb400000000 - {c=>1,a=>71,b=>0,d=>1} 4700000006000000 4700000006000000 4700000006000000 0000004760000000 4700000006000000 4700000006000000 0000004760000000 4700000006000000 0000004760000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>0,c=>0,a=>-96,b=>1,d=>0} a0ffffff01000000 a0ffffff01000000 a0ffffff01000000 ffffffa080000000 a0ffffff01000000 a0ffffff01000000 ffffffa080000000 a0ffffff01000000 ffffffa080000000 - {e=>0,c=>0,a=>112,b=>1,d=>0} 7000000001000000 7000000001000000 7000000001000000 0000007080000000 7000000001000000 7000000001000000 0000007080000000 7000000001000000 0000007080000000 - {e=>1,c=>0,a=>-48,b=>1,d=>0} d0ffffff09000000 d0ffffff09000000 d0ffffff09000000 ffffffd090000000 d0ffffff09000000 d0ffffff09000000 ffffffd090000000 d0ffffff09000000 ffffffd090000000 - {e=>0,c=>0,a=>101,b=>0,d=>0} 6500000000000000 6500000000000000 6500000000000000 0000006500000000 6500000000000000 6500000000000000 0000006500000000 6500000000000000 0000006500000000 - {e=>0,c=>0,a=>113,b=>1,d=>1} 7100000005000000 7100000005000000 7100000005000000 00000071a0000000 7100000005000000 7100000005000000 00000071a0000000 7100000005000000 00000071a0000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>53,b=>0,d=>1,f=>237} 350000000eed0000 350000000eed0000 350000000eed0000 0000003570ed0000 350000000eed0000 350000000eed0000 0000003570ed0000 350000000eed0000 0000003570ed0000 - {e=>1,c=>0,a=>-64,b=>1,d=>0,f=>197} c0ffffff09c50000 c0ffffff09c50000 c0ffffff09c50000 ffffffc090c50000 c0ffffff09c50000 c0ffffff09c50000 ffffffc090c50000 c0ffffff09c50000 ffffffc090c50000 - {e=>0,c=>1,a=>-88,b=>1,d=>0,f=>178} a8ffffff03b20000 a8ffffff03b20000 a8ffffff03b20000 ffffffa8c0b20000 a8ffffff03b20000 a8ffffff03b20000 ffffffa8c0b20000 a8ffffff03b20000 ffffffa8c0b20000 - {e=>1,c=>1,a=>-104,b=>0,d=>1,f=>185} 98ffffff0eb90000 98ffffff0eb90000 98ffffff0eb90000 ffffff9870b90000 98ffffff0eb90000 98ffffff0eb90000 ffffff9870b90000 98ffffff0eb90000 ffffff9870b90000 - {e=>1,c=>1,a=>121,b=>0,d=>1,f=>176} 790000000eb00000 790000000eb00000 790000000eb00000 0000007970b00000 790000000eb00000 790000000eb00000 0000007970b00000 790000000eb00000 0000007970b00000 = struct ulong { long a; unsigned long b:1; }; - {a=>123,b=>0} 7b00000000000000 7b000000000000000000000000000000 7b000000000000000000000000000000 0000007b00000000 7b00000000000000 7b00000000000000 000000000000007b0000000000000000 7b00000000000000 0000007b00000000 - {a=>-51,b=>1} cdffffff01000000 cdffffffffffffff0100000000000000 cdffffffffffffff0100000000000000 ffffffcd80000000 cdffffff01000000 cdffffff01000000 ffffffffffffffcd8000000000000000 cdffffff01000000 ffffffcd80000000 - {a=>123,b=>0} 7b00000000000000 7b000000000000000000000000000000 7b000000000000000000000000000000 0000007b00000000 7b00000000000000 7b00000000000000 000000000000007b0000000000000000 7b00000000000000 0000007b00000000 - {a=>-16,b=>1} f0ffffff01000000 f0ffffffffffffff0100000000000000 f0ffffffffffffff0100000000000000 fffffff080000000 f0ffffff01000000 f0ffffff01000000 fffffffffffffff08000000000000000 f0ffffff01000000 fffffff080000000 - {a=>-33,b=>1} dfffffff01000000 dfffffffffffffff0100000000000000 dfffffffffffffff0100000000000000 ffffffdf80000000 dfffffff01000000 dfffffff01000000 ffffffffffffffdf8000000000000000 dfffffff01000000 ffffffdf80000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>65,b=>1} 4100000003000000 41000000000000000300000000000000 41000000000000000300000000000000 00000041c0000000 4100000003000000 4100000003000000 0000000000000041c000000000000000 4100000003000000 00000041c0000000 - {c=>1,a=>108,b=>0} 6c00000002000000 6c000000000000000200000000000000 6c000000000000000200000000000000 0000006c40000000 6c00000002000000 6c00000002000000 000000000000006c4000000000000000 6c00000002000000 0000006c40000000 - {c=>1,a=>-3,b=>1} fdffffff03000000 fdffffffffffffff0300000000000000 fdffffffffffffff0300000000000000 fffffffdc0000000 fdffffff03000000 fdffffff03000000 fffffffffffffffdc000000000000000 fdffffff03000000 fffffffdc0000000 - {c=>0,a=>48,b=>1} 3000000001000000 30000000000000000100000000000000 30000000000000000100000000000000 0000003080000000 3000000001000000 3000000001000000 00000000000000308000000000000000 3000000001000000 0000003080000000 - {c=>0,a=>39,b=>0} 2700000000000000 27000000000000000000000000000000 27000000000000000000000000000000 0000002700000000 2700000000000000 2700000000000000 00000000000000270000000000000000 2700000000000000 0000002700000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-118,b=>0,d=>1} 8affffff04000000 8affffffffffffff0400000000000000 8affffffffffffff0400000000000000 ffffff8a20000000 8affffff04000000 8affffff04000000 ffffffffffffff8a2000000000000000 8affffff04000000 ffffff8a20000000 - {c=>1,a=>-68,b=>1,d=>1} bcffffff07000000 bcffffffffffffff0700000000000000 bcffffffffffffff0700000000000000 ffffffbce0000000 bcffffff07000000 bcffffff07000000 ffffffffffffffbce000000000000000 bcffffff07000000 ffffffbce0000000 - {c=>0,a=>-88,b=>1,d=>1} a8ffffff05000000 a8ffffffffffffff0500000000000000 a8ffffffffffffff0500000000000000 ffffffa8a0000000 a8ffffff05000000 a8ffffff05000000 ffffffffffffffa8a000000000000000 a8ffffff05000000 ffffffa8a0000000 - {c=>0,a=>-79,b=>0,d=>1} b1ffffff04000000 b1ffffffffffffff0400000000000000 b1ffffffffffffff0400000000000000 ffffffb120000000 b1ffffff04000000 b1ffffff04000000 ffffffffffffffb12000000000000000 b1ffffff04000000 ffffffb120000000 - {c=>1,a=>-62,b=>0,d=>0} c2ffffff02000000 c2ffffffffffffff0200000000000000 c2ffffffffffffff0200000000000000 ffffffc240000000 c2ffffff02000000 c2ffffff02000000 ffffffffffffffc24000000000000000 c2ffffff02000000 ffffffc240000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-102,b=>1,d=>0} 9affffff0b000000 9affffffffffffff0b00000000000000 9affffffffffffff0b00000000000000 ffffff9ad0000000 9affffff0b000000 9affffff0b000000 ffffffffffffff9ad000000000000000 9affffff0b000000 ffffff9ad0000000 - {e=>1,c=>0,a=>-99,b=>1,d=>0} 9dffffff09000000 9dffffffffffffff0900000000000000 9dffffffffffffff0900000000000000 ffffff9d90000000 9dffffff09000000 9dffffff09000000 ffffffffffffff9d9000000000000000 9dffffff09000000 ffffff9d90000000 - {e=>0,c=>0,a=>3,b=>0,d=>0} 0300000000000000 03000000000000000000000000000000 03000000000000000000000000000000 0000000300000000 0300000000000000 0300000000000000 00000000000000030000000000000000 0300000000000000 0000000300000000 - {e=>1,c=>0,a=>6,b=>1,d=>0} 0600000009000000 06000000000000000900000000000000 06000000000000000900000000000000 0000000690000000 0600000009000000 0600000009000000 00000000000000069000000000000000 0600000009000000 0000000690000000 - {e=>0,c=>1,a=>105,b=>0,d=>0} 6900000002000000 69000000000000000200000000000000 69000000000000000200000000000000 0000006940000000 6900000002000000 6900000002000000 00000000000000694000000000000000 6900000002000000 0000006940000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>73,b=>1,d=>1,f=>147} 490000000d930000 49000000000000000d93000000000000 49000000000000000d93000000000000 00000049b0930000 490000000d930000 490000000d930000 0000000000000049b093000000000000 490000000d930000 00000049b0930000 - {e=>0,c=>1,a=>9,b=>0,d=>0,f=>160} 0900000002a00000 090000000000000002a0000000000000 090000000000000002a0000000000000 0000000940a00000 0900000002a00000 0900000002a00000 000000000000000940a0000000000000 0900000002a00000 0000000940a00000 - {e=>0,c=>1,a=>78,b=>1,d=>1,f=>51} 4e00000007330000 4e000000000000000733000000000000 4e000000000000000733000000000000 0000004ee0330000 4e00000007330000 4e00000007330000 000000000000004ee033000000000000 4e00000007330000 0000004ee0330000 - {e=>1,c=>0,a=>96,b=>1,d=>1,f=>245} 600000000df50000 60000000000000000df5000000000000 60000000000000000df5000000000000 00000060b0f50000 600000000df50000 600000000df50000 0000000000000060b0f5000000000000 600000000df50000 00000060b0f50000 - {e=>0,c=>0,a=>101,b=>1,d=>1,f=>35} 6500000005230000 65000000000000000523000000000000 65000000000000000523000000000000 00000065a0230000 6500000005230000 6500000005230000 0000000000000065a023000000000000 6500000005230000 00000065a0230000 = struct umixed { unsigned char a:1; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 = struct umixed { unsigned char a:1; unsigned short b:1; }; - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0,b=>1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>0,b=>1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {a=>1,b=>0} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; }; - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {c=>1,a=>0,b=>0} 04000000 04000000 04000000 20000000 04000000 04000000 20000000 04000000 20000000 - {c=>1,a=>0,b=>1} 06000000 06000000 06000000 60000000 06000000 06000000 60000000 06000000 60000000 - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {c=>0,a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; unsigned long d:1; }; - {c=>1,a=>1,b=>0,d=>1} 0d000000 0d00000000000000 0d00000000000000 b0000000 0d000000 0d000000 b000000000000000 0d000000 b0000000 - {c=>0,a=>0,b=>0,d=>1} 08000000 0800000000000000 0800000000000000 10000000 08000000 08000000 1000000000000000 08000000 10000000 - {c=>1,a=>1,b=>0,d=>1} 0d000000 0d00000000000000 0d00000000000000 b0000000 0d000000 0d000000 b000000000000000 0d000000 b0000000 - {c=>0,a=>0,b=>1,d=>0} 02000000 0200000000000000 0200000000000000 40000000 02000000 02000000 4000000000000000 02000000 40000000 - {c=>0,a=>0,b=>1,d=>1} 0a000000 0a00000000000000 0a00000000000000 50000000 0a000000 0a000000 5000000000000000 0a000000 50000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; unsigned long d:1; unsigned char e; }; - {e=>216,c=>0,a=>1,b=>0,d=>1} 09d80000 09d8000000000000 09d8000000000000 90d80000 09d80000 09d80000 90d8000000000000 09d80000 90d80000 - {e=>111,c=>0,a=>0,b=>1,d=>0} 026f0000 026f000000000000 026f000000000000 406f0000 026f0000 026f0000 406f000000000000 026f0000 406f0000 - {e=>156,c=>1,a=>0,b=>0,d=>0} 049c0000 049c000000000000 049c000000000000 209c0000 049c0000 049c0000 209c000000000000 049c0000 209c0000 - {e=>93,c=>0,a=>0,b=>1,d=>0} 025d0000 025d000000000000 025d000000000000 405d0000 025d0000 025d0000 405d000000000000 025d0000 405d0000 - {e=>187,c=>0,a=>0,b=>1,d=>0} 02bb0000 02bb000000000000 02bb000000000000 40bb0000 02bb0000 02bb0000 40bb000000000000 02bb0000 40bb0000 = struct umixed { char a; unsigned char b:1; }; - {a=>122,b=>0} 7a00 7a00 7a00 7a00 7a000000 7a00 7a00 7a00 7a00 - {a=>102,b=>0} 6600 6600 6600 6600 66000000 6600 6600 6600 6600 - {a=>105,b=>0} 6900 6900 6900 6900 69000000 6900 6900 6900 6900 - {a=>6,b=>1} 0601 0601 0601 0680 06010000 0601 0680 0601 0680 - {a=>110,b=>0} 6e00 6e00 6e00 6e00 6e000000 6e00 6e00 6e00 6e00 = struct umixed { char a; unsigned char b:1; unsigned short c:1; }; - {c=>0,a=>-64,b=>0} c000 c000 c000 c000 c0000000 c000 c000 c000 c000 - {c=>0,a=>92,b=>1} 5c01 5c01 5c01 5c80 5c010000 5c01 5c80 5c01 5c80 - {c=>1,a=>-60,b=>1} c403 c403 c403 c4c0 c4030000 c403 c4c0 c403 c4c0 - {c=>0,a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {c=>0,a=>-90,b=>1} a601 a601 a601 a680 a6010000 a601 a680 a601 a680 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>43,b=>0,d=>1} 2b060000 2b060000 2b060000 2b600000 2b060000 2b060000 2b600000 2b060000 2b600000 - {c=>0,a=>65,b=>1,d=>1} 41050000 41050000 41050000 41a00000 41050000 41050000 41a00000 41050000 41a00000 - {c=>1,a=>-28,b=>0,d=>1} e4060000 e4060000 e4060000 e4600000 e4060000 e4060000 e4600000 e4060000 e4600000 - {c=>1,a=>-67,b=>1,d=>0} bd030000 bd030000 bd030000 bdc00000 bd030000 bd030000 bdc00000 bd030000 bdc00000 - {c=>1,a=>-56,b=>0,d=>1} c8060000 c8060000 c8060000 c8600000 c8060000 c8060000 c8600000 c8060000 c8600000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-36,b=>0,d=>0} dc0a0000 dc0a000000000000 dc0a000000000000 dc500000 dc0a0000 dc0a0000 dc50000000000000 dc0a0000 dc500000 - {e=>1,c=>1,a=>-40,b=>1,d=>1} d80f0000 d80f000000000000 d80f000000000000 d8f00000 d80f0000 d80f0000 d8f0000000000000 d80f0000 d8f00000 - {e=>0,c=>1,a=>56,b=>0,d=>1} 38060000 3806000000000000 3806000000000000 38600000 38060000 38060000 3860000000000000 38060000 38600000 - {e=>0,c=>1,a=>18,b=>1,d=>0} 12030000 1203000000000000 1203000000000000 12c00000 12030000 12030000 12c0000000000000 12030000 12c00000 - {e=>1,c=>0,a=>-68,b=>1,d=>0} bc090000 bc09000000000000 bc09000000000000 bc900000 bc090000 bc090000 bc90000000000000 bc090000 bc900000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>77,b=>0,d=>0,f=>112} 4d0a7000 4d0a700000000000 4d0a700000000000 4d507000 4d0a7000 4d0a7000 4d50700000000000 4d0a7000 4d507000 - {e=>1,c=>0,a=>115,b=>0,d=>1,f=>9} 730c0900 730c090000000000 730c090000000000 73300900 730c0900 730c0900 7330090000000000 730c0900 73300900 - {e=>0,c=>0,a=>-25,b=>0,d=>0,f=>91} e7005b00 e7005b0000000000 e7005b0000000000 e7005b00 e7005b00 e7005b00 e7005b0000000000 e7005b00 e7005b00 - {e=>0,c=>0,a=>-68,b=>1,d=>0,f=>5} bc010500 bc01050000000000 bc01050000000000 bc800500 bc010500 bc010500 bc80050000000000 bc010500 bc800500 - {e=>0,c=>1,a=>86,b=>0,d=>0,f=>30} 56021e00 56021e0000000000 56021e0000000000 56401e00 56021e00 56021e00 56401e0000000000 56021e00 56401e00 = struct umixed { short a; unsigned char b:1; }; - {a=>49,b=>0} 31000000 31000000 31000000 00310000 31000000 31000000 00310000 31000000 00310000 - {a=>84,b=>1} 54000100 54000100 54000100 00548000 54000100 54000100 00548000 54000100 00548000 - {a=>-73,b=>0} b7ff0000 b7ff0000 b7ff0000 ffb70000 b7ff0000 b7ff0000 ffb70000 b7ff0000 ffb70000 - {a=>92,b=>0} 5c000000 5c000000 5c000000 005c0000 5c000000 5c000000 005c0000 5c000000 005c0000 - {a=>76,b=>0} 4c000000 4c000000 4c000000 004c0000 4c000000 4c000000 004c0000 4c000000 004c0000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; }; - {c=>1,a=>-69,b=>0} bbff0200 bbff0200 bbff0200 ffbb4000 bbff0200 bbff0200 ffbb4000 bbff0200 ffbb4000 - {c=>1,a=>103,b=>0} 67000200 67000200 67000200 00674000 67000200 67000200 00674000 67000200 00674000 - {c=>0,a=>-68,b=>0} bcff0000 bcff0000 bcff0000 ffbc0000 bcff0000 bcff0000 ffbc0000 bcff0000 ffbc0000 - {c=>0,a=>-31,b=>0} e1ff0000 e1ff0000 e1ff0000 ffe10000 e1ff0000 e1ff0000 ffe10000 e1ff0000 ffe10000 - {c=>0,a=>87,b=>1} 57000100 57000100 57000100 00578000 57000100 57000100 00578000 57000100 00578000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>0,a=>-26,b=>1,d=>0} e6ff0100 e6ff0100 e6ff0100 ffe68000 e6ff0100 e6ff0100 ffe68000 e6ff0100 ffe68000 - {c=>1,a=>41,b=>0,d=>1} 29000600 29000600 29000600 00296000 29000600 29000600 00296000 29000600 00296000 - {c=>0,a=>47,b=>1,d=>1} 2f000500 2f000500 2f000500 002fa000 2f000500 2f000500 002fa000 2f000500 002fa000 - {c=>0,a=>-115,b=>0,d=>0} 8dff0000 8dff0000 8dff0000 ff8d0000 8dff0000 8dff0000 ff8d0000 8dff0000 ff8d0000 - {c=>1,a=>16,b=>1,d=>0} 10000300 10000300 10000300 0010c000 10000300 10000300 0010c000 10000300 0010c000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-24,b=>0,d=>0} e8ff0a00 e8ff0a0000000000 e8ff0a0000000000 ffe85000 e8ff0a00 e8ff0a00 ffe8500000000000 e8ff0a00 ffe85000 - {e=>1,c=>1,a=>-4,b=>1,d=>0} fcff0b00 fcff0b0000000000 fcff0b0000000000 fffcd000 fcff0b00 fcff0b00 fffcd00000000000 fcff0b00 fffcd000 - {e=>0,c=>0,a=>-80,b=>1,d=>0} b0ff0100 b0ff010000000000 b0ff010000000000 ffb08000 b0ff0100 b0ff0100 ffb0800000000000 b0ff0100 ffb08000 - {e=>0,c=>0,a=>18,b=>1,d=>0} 12000100 1200010000000000 1200010000000000 00128000 12000100 12000100 0012800000000000 12000100 00128000 - {e=>0,c=>0,a=>-46,b=>1,d=>0} d2ff0100 d2ff010000000000 d2ff010000000000 ffd28000 d2ff0100 d2ff0100 ffd2800000000000 d2ff0100 ffd28000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>5,b=>0,d=>0,f=>113} 05000a71 05000a7100000000 05000a7100000000 00055071 05000a71 05000a71 0005507100000000 05000a71 00055071 - {e=>0,c=>0,a=>67,b=>1,d=>1,f=>126} 4300057e 4300057e00000000 4300057e00000000 0043a07e 4300057e 4300057e 0043a07e00000000 4300057e 0043a07e - {e=>0,c=>0,a=>49,b=>0,d=>1,f=>165} 310004a5 310004a500000000 310004a500000000 003120a5 310004a5 310004a5 003120a500000000 310004a5 003120a5 - {e=>1,c=>0,a=>0,b=>0,d=>1,f=>40} 00000c28 00000c2800000000 00000c2800000000 00003028 00000c28 00000c28 0000302800000000 00000c28 00003028 - {e=>0,c=>1,a=>66,b=>0,d=>1,f=>177} 420006b1 420006b100000000 420006b100000000 004260b1 420006b1 420006b1 004260b100000000 420006b1 004260b1 = struct umixed { int a; unsigned char b:1; }; - {a=>-94,b=>0} a2ffffff00000000 a2ffffff00000000 a2ffffff00000000 ffffffa200000000 a2ffffff00000000 a2ffffff00000000 ffffffa200000000 a2ffffff00000000 ffffffa200000000 - {a=>-14,b=>0} f2ffffff00000000 f2ffffff00000000 f2ffffff00000000 fffffff200000000 f2ffffff00000000 f2ffffff00000000 fffffff200000000 f2ffffff00000000 fffffff200000000 - {a=>-40,b=>0} d8ffffff00000000 d8ffffff00000000 d8ffffff00000000 ffffffd800000000 d8ffffff00000000 d8ffffff00000000 ffffffd800000000 d8ffffff00000000 ffffffd800000000 - {a=>89,b=>0} 5900000000000000 5900000000000000 5900000000000000 0000005900000000 5900000000000000 5900000000000000 0000005900000000 5900000000000000 0000005900000000 - {a=>-2,b=>1} feffffff01000000 feffffff01000000 feffffff01000000 fffffffe80000000 feffffff01000000 feffffff01000000 fffffffe80000000 feffffff01000000 fffffffe80000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; }; - {c=>0,a=>114,b=>1} 7200000001000000 7200000001000000 7200000001000000 0000007280000000 7200000001000000 7200000001000000 0000007280000000 7200000001000000 0000007280000000 - {c=>1,a=>-68,b=>1} bcffffff03000000 bcffffff03000000 bcffffff03000000 ffffffbcc0000000 bcffffff03000000 bcffffff03000000 ffffffbcc0000000 bcffffff03000000 ffffffbcc0000000 - {c=>0,a=>60,b=>1} 3c00000001000000 3c00000001000000 3c00000001000000 0000003c80000000 3c00000001000000 3c00000001000000 0000003c80000000 3c00000001000000 0000003c80000000 - {c=>0,a=>-105,b=>1} 97ffffff01000000 97ffffff01000000 97ffffff01000000 ffffff9780000000 97ffffff01000000 97ffffff01000000 ffffff9780000000 97ffffff01000000 ffffff9780000000 - {c=>1,a=>-90,b=>0} a6ffffff02000000 a6ffffff02000000 a6ffffff02000000 ffffffa640000000 a6ffffff02000000 a6ffffff02000000 ffffffa640000000 a6ffffff02000000 ffffffa640000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>44,b=>0,d=>1} 2c00000006000000 2c00000006000000 2c00000006000000 0000002c60000000 2c00000006000000 2c00000006000000 0000002c60000000 2c00000006000000 0000002c60000000 - {c=>1,a=>-90,b=>0,d=>0} a6ffffff02000000 a6ffffff02000000 a6ffffff02000000 ffffffa640000000 a6ffffff02000000 a6ffffff02000000 ffffffa640000000 a6ffffff02000000 ffffffa640000000 - {c=>1,a=>-11,b=>0,d=>0} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 fffffff540000000 f5ffffff02000000 f5ffffff02000000 fffffff540000000 f5ffffff02000000 fffffff540000000 - {c=>1,a=>18,b=>1,d=>1} 1200000007000000 1200000007000000 1200000007000000 00000012e0000000 1200000007000000 1200000007000000 00000012e0000000 1200000007000000 00000012e0000000 - {c=>0,a=>-25,b=>0,d=>0} e7ffffff00000000 e7ffffff00000000 e7ffffff00000000 ffffffe700000000 e7ffffff00000000 e7ffffff00000000 ffffffe700000000 e7ffffff00000000 ffffffe700000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>0,c=>0,a=>-47,b=>1,d=>0} d1ffffff01000000 d1ffffff01000000 d1ffffff01000000 ffffffd180000000 d1ffffff01000000 d1ffffff01000000 ffffffd180000000 d1ffffff01000000 ffffffd180000000 - {e=>0,c=>1,a=>-12,b=>0,d=>1} f4ffffff06000000 f4ffffff06000000 f4ffffff06000000 fffffff460000000 f4ffffff06000000 f4ffffff06000000 fffffff460000000 f4ffffff06000000 fffffff460000000 - {e=>1,c=>1,a=>-74,b=>1,d=>0} b6ffffff0b000000 b6ffffff0b000000 b6ffffff0b000000 ffffffb6d0000000 b6ffffff0b000000 b6ffffff0b000000 ffffffb6d0000000 b6ffffff0b000000 ffffffb6d0000000 - {e=>1,c=>1,a=>-49,b=>1,d=>0} cfffffff0b000000 cfffffff0b000000 cfffffff0b000000 ffffffcfd0000000 cfffffff0b000000 cfffffff0b000000 ffffffcfd0000000 cfffffff0b000000 ffffffcfd0000000 - {e=>1,c=>1,a=>61,b=>1,d=>0} 3d0000000b000000 3d0000000b000000 3d0000000b000000 0000003dd0000000 3d0000000b000000 3d0000000b000000 0000003dd0000000 3d0000000b000000 0000003dd0000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>-19,b=>0,d=>0,f=>112} edffffff0a700000 edffffff0a700000 edffffff0a700000 ffffffed50700000 edffffff0a700000 edffffff0a700000 ffffffed50700000 edffffff0a700000 ffffffed50700000 - {e=>1,c=>0,a=>-74,b=>1,d=>0,f=>149} b6ffffff09950000 b6ffffff09950000 b6ffffff09950000 ffffffb690950000 b6ffffff09950000 b6ffffff09950000 ffffffb690950000 b6ffffff09950000 ffffffb690950000 - {e=>0,c=>1,a=>-124,b=>1,d=>1,f=>78} 84ffffff074e0000 84ffffff074e0000 84ffffff074e0000 ffffff84e04e0000 84ffffff074e0000 84ffffff074e0000 ffffff84e04e0000 84ffffff074e0000 ffffff84e04e0000 - {e=>1,c=>0,a=>-25,b=>0,d=>0,f=>222} e7ffffff08de0000 e7ffffff08de0000 e7ffffff08de0000 ffffffe710de0000 e7ffffff08de0000 e7ffffff08de0000 ffffffe710de0000 e7ffffff08de0000 ffffffe710de0000 - {e=>0,c=>0,a=>127,b=>1,d=>0,f=>81} 7f00000001510000 7f00000001510000 7f00000001510000 0000007f80510000 7f00000001510000 7f00000001510000 0000007f80510000 7f00000001510000 0000007f80510000 = struct umixed { long a; unsigned char b:1; }; - {a=>127,b=>0} 7f00000000000000 7f000000000000000000000000000000 7f000000000000000000000000000000 0000007f00000000 7f00000000000000 7f00000000000000 000000000000007f0000000000000000 7f00000000000000 0000007f00000000 - {a=>66,b=>1} 4200000001000000 42000000000000000100000000000000 42000000000000000100000000000000 0000004280000000 4200000001000000 4200000001000000 00000000000000428000000000000000 4200000001000000 0000004280000000 - {a=>13,b=>1} 0d00000001000000 0d000000000000000100000000000000 0d000000000000000100000000000000 0000000d80000000 0d00000001000000 0d00000001000000 000000000000000d8000000000000000 0d00000001000000 0000000d80000000 - {a=>114,b=>0} 7200000000000000 72000000000000000000000000000000 72000000000000000000000000000000 0000007200000000 7200000000000000 7200000000000000 00000000000000720000000000000000 7200000000000000 0000007200000000 - {a=>-73,b=>1} b7ffffff01000000 b7ffffffffffffff0100000000000000 b7ffffffffffffff0100000000000000 ffffffb780000000 b7ffffff01000000 b7ffffff01000000 ffffffffffffffb78000000000000000 b7ffffff01000000 ffffffb780000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; }; - {c=>1,a=>105,b=>0} 6900000002000000 69000000000000000200000000000000 69000000000000000200000000000000 0000006940000000 6900000002000000 6900000002000000 00000000000000694000000000000000 6900000002000000 0000006940000000 - {c=>1,a=>-8,b=>0} f8ffffff02000000 f8ffffffffffffff0200000000000000 f8ffffffffffffff0200000000000000 fffffff840000000 f8ffffff02000000 f8ffffff02000000 fffffffffffffff84000000000000000 f8ffffff02000000 fffffff840000000 - {c=>0,a=>5,b=>0} 0500000000000000 05000000000000000000000000000000 05000000000000000000000000000000 0000000500000000 0500000000000000 0500000000000000 00000000000000050000000000000000 0500000000000000 0000000500000000 - {c=>1,a=>-123,b=>0} 85ffffff02000000 85ffffffffffffff0200000000000000 85ffffffffffffff0200000000000000 ffffff8540000000 85ffffff02000000 85ffffff02000000 ffffffffffffff854000000000000000 85ffffff02000000 ffffff8540000000 - {c=>1,a=>103,b=>1} 6700000003000000 67000000000000000300000000000000 67000000000000000300000000000000 00000067c0000000 6700000003000000 6700000003000000 0000000000000067c000000000000000 6700000003000000 00000067c0000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>-17,b=>1,d=>0} efffffff03000000 efffffffffffffff0300000000000000 efffffffffffffff0300000000000000 ffffffefc0000000 efffffff03000000 efffffff03000000 ffffffffffffffefc000000000000000 efffffff03000000 ffffffefc0000000 - {c=>1,a=>-127,b=>1,d=>0} 81ffffff03000000 81ffffffffffffff0300000000000000 81ffffffffffffff0300000000000000 ffffff81c0000000 81ffffff03000000 81ffffff03000000 ffffffffffffff81c000000000000000 81ffffff03000000 ffffff81c0000000 - {c=>1,a=>102,b=>1,d=>1} 6600000007000000 66000000000000000700000000000000 66000000000000000700000000000000 00000066e0000000 6600000007000000 6600000007000000 0000000000000066e000000000000000 6600000007000000 00000066e0000000 - {c=>1,a=>-88,b=>1,d=>1} a8ffffff07000000 a8ffffffffffffff0700000000000000 a8ffffffffffffff0700000000000000 ffffffa8e0000000 a8ffffff07000000 a8ffffff07000000 ffffffffffffffa8e000000000000000 a8ffffff07000000 ffffffa8e0000000 - {c=>1,a=>15,b=>1,d=>1} 0f00000007000000 0f000000000000000700000000000000 0f000000000000000700000000000000 0000000fe0000000 0f00000007000000 0f00000007000000 000000000000000fe000000000000000 0f00000007000000 0000000fe0000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>118,b=>1,d=>1} 760000000f000000 76000000000000000f00000000000000 76000000000000000f00000000000000 00000076f0000000 760000000f000000 760000000f000000 0000000000000076f000000000000000 760000000f000000 00000076f0000000 - {e=>1,c=>0,a=>-90,b=>0,d=>1} a6ffffff0c000000 a6ffffffffffffff0c00000000000000 a6ffffffffffffff0c00000000000000 ffffffa630000000 a6ffffff0c000000 a6ffffff0c000000 ffffffffffffffa63000000000000000 a6ffffff0c000000 ffffffa630000000 - {e=>0,c=>0,a=>103,b=>0,d=>0} 6700000000000000 67000000000000000000000000000000 67000000000000000000000000000000 0000006700000000 6700000000000000 6700000000000000 00000000000000670000000000000000 6700000000000000 0000006700000000 - {e=>0,c=>1,a=>-84,b=>0,d=>1} acffffff06000000 acffffffffffffff0600000000000000 acffffffffffffff0600000000000000 ffffffac60000000 acffffff06000000 acffffff06000000 ffffffffffffffac6000000000000000 acffffff06000000 ffffffac60000000 - {e=>1,c=>1,a=>92,b=>0,d=>0} 5c0000000a000000 5c000000000000000a00000000000000 5c000000000000000a00000000000000 0000005c50000000 5c0000000a000000 5c0000000a000000 000000000000005c5000000000000000 5c0000000a000000 0000005c50000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>51,b=>0,d=>0,f=>187} 3300000008bb0000 330000000000000008bb000000000000 330000000000000008bb000000000000 0000003310bb0000 3300000008bb0000 3300000008bb0000 000000000000003310bb000000000000 3300000008bb0000 0000003310bb0000 - {e=>0,c=>1,a=>-115,b=>1,d=>1,f=>46} 8dffffff072e0000 8dffffffffffffff072e000000000000 8dffffffffffffff072e000000000000 ffffff8de02e0000 8dffffff072e0000 8dffffff072e0000 ffffffffffffff8de02e000000000000 8dffffff072e0000 ffffff8de02e0000 - {e=>1,c=>0,a=>105,b=>0,d=>0,f=>59} 69000000083b0000 6900000000000000083b000000000000 6900000000000000083b000000000000 00000069103b0000 69000000083b0000 69000000083b0000 0000000000000069103b000000000000 69000000083b0000 00000069103b0000 - {e=>1,c=>1,a=>-128,b=>0,d=>1,f=>86} 80ffffff0e560000 80ffffffffffffff0e56000000000000 80ffffffffffffff0e56000000000000 ffffff8070560000 80ffffff0e560000 80ffffff0e560000 ffffffffffffff807056000000000000 80ffffff0e560000 ffffff8070560000 - {e=>1,c=>1,a=>24,b=>1,d=>1,f=>117} 180000000f750000 18000000000000000f75000000000000 18000000000000000f75000000000000 00000018f0750000 180000000f750000 180000000f750000 0000000000000018f075000000000000 180000000f750000 00000018f0750000 = struct smixed { signed char a:1; }; - {a=>-1} 01 01 01 80 01000000 01 80 01 80 - {a=>-1} 01 01 01 80 01000000 01 80 01 80 - {a=>-1} 01 01 01 80 01000000 01 80 01 80 - {a=>-1} 01 01 01 80 01000000 01 80 01 80 - {a=>-1} 01 01 01 80 01000000 01 80 01 80 = struct smixed { signed char a:1; signed short b:1; }; - {a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {a=>-1,b=>0} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 - {a=>0,b=>-1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {a=>0,b=>-1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 - {a=>0,b=>-1} 0200 0200 0200 4000 02000000 0200 4000 0200 4000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; }; - {c=>0,a=>0,b=>-1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {c=>-1,a=>-1,b=>0} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {c=>0,a=>0,b=>-1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {c=>-1,a=>0,b=>0} 04000000 04000000 04000000 20000000 04000000 04000000 20000000 04000000 20000000 - {c=>0,a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; signed long d:1; }; - {c=>-1,a=>-1,b=>-1,d=>-1} 0f000000 0f00000000000000 0f00000000000000 f0000000 0f000000 0f000000 f000000000000000 0f000000 f0000000 - {c=>0,a=>-1,b=>0,d=>0} 01000000 0100000000000000 0100000000000000 80000000 01000000 01000000 8000000000000000 01000000 80000000 - {c=>-1,a=>0,b=>-1,d=>-1} 0e000000 0e00000000000000 0e00000000000000 70000000 0e000000 0e000000 7000000000000000 0e000000 70000000 - {c=>-1,a=>-1,b=>0,d=>0} 05000000 0500000000000000 0500000000000000 a0000000 05000000 05000000 a000000000000000 05000000 a0000000 - {c=>0,a=>-1,b=>0,d=>-1} 09000000 0900000000000000 0900000000000000 90000000 09000000 09000000 9000000000000000 09000000 90000000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; signed long d:1; signed int e; }; - {e=>-8,c=>0,a=>-1,b=>0,d=>-1} 09000000f8ffffff 09000000f8ffffff 09000000f8ffffff 90000000fffffff8 09000000f8ffffff 09000000f8ffffff 90000000fffffff8 09000000f8ffffff 90000000fffffff8 - {e=>93,c=>-1,a=>0,b=>-1,d=>0} 060000005d000000 060000005d000000 060000005d000000 600000000000005d 060000005d000000 060000005d000000 600000000000005d 060000005d000000 600000000000005d - {e=>98,c=>-1,a=>-1,b=>-1,d=>-1} 0f00000062000000 0f00000062000000 0f00000062000000 f000000000000062 0f00000062000000 0f00000062000000 f000000000000062 0f00000062000000 f000000000000062 - {e=>-79,c=>0,a=>0,b=>-1,d=>-1} 0a000000b1ffffff 0a000000b1ffffff 0a000000b1ffffff 50000000ffffffb1 0a000000b1ffffff 0a000000b1ffffff 50000000ffffffb1 0a000000b1ffffff 50000000ffffffb1 - {e=>-60,c=>-1,a=>0,b=>0,d=>-1} 0c000000c4ffffff 0c000000c4ffffff 0c000000c4ffffff 30000000ffffffc4 0c000000c4ffffff 0c000000c4ffffff 30000000ffffffc4 0c000000c4ffffff 30000000ffffffc4 = struct smixed { char a; signed char b:1; }; - {a=>28,b=>0} 1c00 1c00 1c00 1c00 1c000000 1c00 1c00 1c00 1c00 - {a=>-89,b=>-1} a701 a701 a701 a780 a7010000 a701 a780 a701 a780 - {a=>52,b=>-1} 3401 3401 3401 3480 34010000 3401 3480 3401 3480 - {a=>91,b=>0} 5b00 5b00 5b00 5b00 5b000000 5b00 5b00 5b00 5b00 - {a=>-106,b=>0} 9600 9600 9600 9600 96000000 9600 9600 9600 9600 = struct smixed { char a; signed char b:1; signed short c:1; }; - {c=>-1,a=>-38,b=>0} da02 da02 da02 da40 da020000 da02 da40 da02 da40 - {c=>0,a=>-57,b=>-1} c701 c701 c701 c780 c7010000 c701 c780 c701 c780 - {c=>-1,a=>-94,b=>-1} a203 a203 a203 a2c0 a2030000 a203 a2c0 a203 a2c0 - {c=>-1,a=>107,b=>-1} 6b03 6b03 6b03 6bc0 6b030000 6b03 6bc0 6b03 6bc0 - {c=>0,a=>-95,b=>0} a100 a100 a100 a100 a1000000 a100 a100 a100 a100 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>35,b=>-1,d=>0} 23010000 23010000 23010000 23800000 23010000 23010000 23800000 23010000 23800000 - {c=>-1,a=>-97,b=>-1,d=>0} 9f030000 9f030000 9f030000 9fc00000 9f030000 9f030000 9fc00000 9f030000 9fc00000 - {c=>0,a=>79,b=>-1,d=>-1} 4f050000 4f050000 4f050000 4fa00000 4f050000 4f050000 4fa00000 4f050000 4fa00000 - {c=>0,a=>-2,b=>0,d=>-1} fe040000 fe040000 fe040000 fe200000 fe040000 fe040000 fe200000 fe040000 fe200000 - {c=>-1,a=>52,b=>-1,d=>0} 34030000 34030000 34030000 34c00000 34030000 34030000 34c00000 34030000 34c00000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>0,c=>0,a=>63,b=>-1,d=>-1} 3f050000 3f05000000000000 3f05000000000000 3fa00000 3f050000 3f050000 3fa0000000000000 3f050000 3fa00000 - {e=>-1,c=>0,a=>105,b=>0,d=>-1} 690c0000 690c000000000000 690c000000000000 69300000 690c0000 690c0000 6930000000000000 690c0000 69300000 - {e=>0,c=>-1,a=>84,b=>0,d=>-1} 54060000 5406000000000000 5406000000000000 54600000 54060000 54060000 5460000000000000 54060000 54600000 - {e=>-1,c=>0,a=>40,b=>-1,d=>-1} 280d0000 280d000000000000 280d000000000000 28b00000 280d0000 280d0000 28b0000000000000 280d0000 28b00000 - {e=>0,c=>0,a=>114,b=>-1,d=>0} 72010000 7201000000000000 7201000000000000 72800000 72010000 72010000 7280000000000000 72010000 72800000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>-50,b=>-1,d=>-1,f=>37} ce0f000025000000 ce0f000025000000 ce0f000025000000 cef0000000000025 ce0f000025000000 ce0f000025000000 cef0000000000025 ce0f000025000000 cef0000000000025 - {e=>-1,c=>-1,a=>-111,b=>-1,d=>-1,f=>-13} 910f0000f3ffffff 910f0000f3ffffff 910f0000f3ffffff 91f00000fffffff3 910f0000f3ffffff 910f0000f3ffffff 91f00000fffffff3 910f0000f3ffffff 91f00000fffffff3 - {e=>0,c=>0,a=>-7,b=>0,d=>-1,f=>-107} f904000095ffffff f904000095ffffff f904000095ffffff f9200000ffffff95 f904000095ffffff f904000095ffffff f9200000ffffff95 f904000095ffffff f9200000ffffff95 - {e=>0,c=>-1,a=>8,b=>0,d=>-1,f=>-10} 08060000f6ffffff 08060000f6ffffff 08060000f6ffffff 08600000fffffff6 08060000f6ffffff 08060000f6ffffff 08600000fffffff6 08060000f6ffffff 08600000fffffff6 - {e=>-1,c=>-1,a=>-89,b=>0,d=>-1,f=>127} a70e00007f000000 a70e00007f000000 a70e00007f000000 a77000000000007f a70e00007f000000 a70e00007f000000 a77000000000007f a70e00007f000000 a77000000000007f = struct smixed { short a; signed char b:1; }; - {a=>-94,b=>-1} a2ff0100 a2ff0100 a2ff0100 ffa28000 a2ff0100 a2ff0100 ffa28000 a2ff0100 ffa28000 - {a=>19,b=>-1} 13000100 13000100 13000100 00138000 13000100 13000100 00138000 13000100 00138000 - {a=>-68,b=>-1} bcff0100 bcff0100 bcff0100 ffbc8000 bcff0100 bcff0100 ffbc8000 bcff0100 ffbc8000 - {a=>-102,b=>-1} 9aff0100 9aff0100 9aff0100 ff9a8000 9aff0100 9aff0100 ff9a8000 9aff0100 ff9a8000 - {a=>-111,b=>-1} 91ff0100 91ff0100 91ff0100 ff918000 91ff0100 91ff0100 ff918000 91ff0100 ff918000 = struct smixed { short a; signed char b:1; signed short c:1; }; - {c=>-1,a=>41,b=>0} 29000200 29000200 29000200 00294000 29000200 29000200 00294000 29000200 00294000 - {c=>-1,a=>99,b=>0} 63000200 63000200 63000200 00634000 63000200 63000200 00634000 63000200 00634000 - {c=>-1,a=>-58,b=>0} c6ff0200 c6ff0200 c6ff0200 ffc64000 c6ff0200 c6ff0200 ffc64000 c6ff0200 ffc64000 - {c=>-1,a=>28,b=>0} 1c000200 1c000200 1c000200 001c4000 1c000200 1c000200 001c4000 1c000200 001c4000 - {c=>-1,a=>-117,b=>0} 8bff0200 8bff0200 8bff0200 ff8b4000 8bff0200 8bff0200 ff8b4000 8bff0200 ff8b4000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>-1,a=>114,b=>-1,d=>-1} 72000700 72000700 72000700 0072e000 72000700 72000700 0072e000 72000700 0072e000 - {c=>0,a=>-58,b=>-1,d=>-1} c6ff0500 c6ff0500 c6ff0500 ffc6a000 c6ff0500 c6ff0500 ffc6a000 c6ff0500 ffc6a000 - {c=>-1,a=>15,b=>-1,d=>0} 0f000300 0f000300 0f000300 000fc000 0f000300 0f000300 000fc000 0f000300 000fc000 - {c=>0,a=>-98,b=>0,d=>0} 9eff0000 9eff0000 9eff0000 ff9e0000 9eff0000 9eff0000 ff9e0000 9eff0000 ff9e0000 - {c=>-1,a=>26,b=>0,d=>0} 1a000200 1a000200 1a000200 001a4000 1a000200 1a000200 001a4000 1a000200 001a4000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>-1,c=>0,a=>-4,b=>0,d=>0} fcff0800 fcff080000000000 fcff080000000000 fffc1000 fcff0800 fcff0800 fffc100000000000 fcff0800 fffc1000 - {e=>-1,c=>0,a=>6,b=>0,d=>-1} 06000c00 06000c0000000000 06000c0000000000 00063000 06000c00 06000c00 0006300000000000 06000c00 00063000 - {e=>0,c=>-1,a=>40,b=>-1,d=>-1} 28000700 2800070000000000 2800070000000000 0028e000 28000700 28000700 0028e00000000000 28000700 0028e000 - {e=>-1,c=>0,a=>32,b=>-1,d=>0} 20000900 2000090000000000 2000090000000000 00209000 20000900 20000900 0020900000000000 20000900 00209000 - {e=>0,c=>-1,a=>-119,b=>0,d=>-1} 89ff0600 89ff060000000000 89ff060000000000 ff896000 89ff0600 89ff0600 ff89600000000000 89ff0600 ff896000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>0,c=>0,a=>-8,b=>-1,d=>-1,f=>-2} f8ff0500feffffff f8ff0500feffffff f8ff0500feffffff fff8a000fffffffe f8ff0500feffffff f8ff0500feffffff fff8a000fffffffe f8ff0500feffffff fff8a000fffffffe - {e=>-1,c=>0,a=>-61,b=>-1,d=>0,f=>-61} c3ff0900c3ffffff c3ff0900c3ffffff c3ff0900c3ffffff ffc39000ffffffc3 c3ff0900c3ffffff c3ff0900c3ffffff ffc39000ffffffc3 c3ff0900c3ffffff ffc39000ffffffc3 - {e=>0,c=>0,a=>63,b=>-1,d=>-1,f=>-95} 3f000500a1ffffff 3f000500a1ffffff 3f000500a1ffffff 003fa000ffffffa1 3f000500a1ffffff 3f000500a1ffffff 003fa000ffffffa1 3f000500a1ffffff 003fa000ffffffa1 - {e=>0,c=>0,a=>60,b=>0,d=>0,f=>92} 3c0000005c000000 3c0000005c000000 3c0000005c000000 003c00000000005c 3c0000005c000000 3c0000005c000000 003c00000000005c 3c0000005c000000 003c00000000005c - {e=>0,c=>-1,a=>-67,b=>0,d=>-1,f=>19} bdff060013000000 bdff060013000000 bdff060013000000 ffbd600000000013 bdff060013000000 bdff060013000000 ffbd600000000013 bdff060013000000 ffbd600000000013 = struct smixed { int a; signed char b:1; }; - {a=>95,b=>-1} 5f00000001000000 5f00000001000000 5f00000001000000 0000005f80000000 5f00000001000000 5f00000001000000 0000005f80000000 5f00000001000000 0000005f80000000 - {a=>50,b=>0} 3200000000000000 3200000000000000 3200000000000000 0000003200000000 3200000000000000 3200000000000000 0000003200000000 3200000000000000 0000003200000000 - {a=>-64,b=>-1} c0ffffff01000000 c0ffffff01000000 c0ffffff01000000 ffffffc080000000 c0ffffff01000000 c0ffffff01000000 ffffffc080000000 c0ffffff01000000 ffffffc080000000 - {a=>-33,b=>-1} dfffffff01000000 dfffffff01000000 dfffffff01000000 ffffffdf80000000 dfffffff01000000 dfffffff01000000 ffffffdf80000000 dfffffff01000000 ffffffdf80000000 - {a=>-44,b=>-1} d4ffffff01000000 d4ffffff01000000 d4ffffff01000000 ffffffd480000000 d4ffffff01000000 d4ffffff01000000 ffffffd480000000 d4ffffff01000000 ffffffd480000000 = struct smixed { int a; signed char b:1; signed short c:1; }; - {c=>0,a=>-115,b=>0} 8dffffff00000000 8dffffff00000000 8dffffff00000000 ffffff8d00000000 8dffffff00000000 8dffffff00000000 ffffff8d00000000 8dffffff00000000 ffffff8d00000000 - {c=>-1,a=>-6,b=>0} faffffff02000000 faffffff02000000 faffffff02000000 fffffffa40000000 faffffff02000000 faffffff02000000 fffffffa40000000 faffffff02000000 fffffffa40000000 - {c=>0,a=>40,b=>-1} 2800000001000000 2800000001000000 2800000001000000 0000002880000000 2800000001000000 2800000001000000 0000002880000000 2800000001000000 0000002880000000 - {c=>-1,a=>-100,b=>-1} 9cffffff03000000 9cffffff03000000 9cffffff03000000 ffffff9cc0000000 9cffffff03000000 9cffffff03000000 ffffff9cc0000000 9cffffff03000000 ffffff9cc0000000 - {c=>-1,a=>-26,b=>-1} e6ffffff03000000 e6ffffff03000000 e6ffffff03000000 ffffffe6c0000000 e6ffffff03000000 e6ffffff03000000 ffffffe6c0000000 e6ffffff03000000 ffffffe6c0000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>111,b=>-1,d=>0} 6f00000001000000 6f00000001000000 6f00000001000000 0000006f80000000 6f00000001000000 6f00000001000000 0000006f80000000 6f00000001000000 0000006f80000000 - {c=>-1,a=>-15,b=>-1,d=>0} f1ffffff03000000 f1ffffff03000000 f1ffffff03000000 fffffff1c0000000 f1ffffff03000000 f1ffffff03000000 fffffff1c0000000 f1ffffff03000000 fffffff1c0000000 - {c=>-1,a=>27,b=>-1,d=>0} 1b00000003000000 1b00000003000000 1b00000003000000 0000001bc0000000 1b00000003000000 1b00000003000000 0000001bc0000000 1b00000003000000 0000001bc0000000 - {c=>0,a=>95,b=>-1,d=>0} 5f00000001000000 5f00000001000000 5f00000001000000 0000005f80000000 5f00000001000000 5f00000001000000 0000005f80000000 5f00000001000000 0000005f80000000 - {c=>0,a=>40,b=>0,d=>0} 2800000000000000 2800000000000000 2800000000000000 0000002800000000 2800000000000000 2800000000000000 0000002800000000 2800000000000000 0000002800000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>0,c=>0,a=>106,b=>0,d=>-1} 6a00000004000000 6a00000004000000 6a00000004000000 0000006a20000000 6a00000004000000 6a00000004000000 0000006a20000000 6a00000004000000 0000006a20000000 - {e=>0,c=>0,a=>-60,b=>-1,d=>-1} c4ffffff05000000 c4ffffff05000000 c4ffffff05000000 ffffffc4a0000000 c4ffffff05000000 c4ffffff05000000 ffffffc4a0000000 c4ffffff05000000 ffffffc4a0000000 - {e=>-1,c=>-1,a=>21,b=>0,d=>-1} 150000000e000000 150000000e000000 150000000e000000 0000001570000000 150000000e000000 150000000e000000 0000001570000000 150000000e000000 0000001570000000 - {e=>-1,c=>-1,a=>12,b=>0,d=>0} 0c0000000a000000 0c0000000a000000 0c0000000a000000 0000000c50000000 0c0000000a000000 0c0000000a000000 0000000c50000000 0c0000000a000000 0000000c50000000 - {e=>0,c=>-1,a=>-11,b=>-1,d=>-1} f5ffffff07000000 f5ffffff07000000 f5ffffff07000000 fffffff5e0000000 f5ffffff07000000 f5ffffff07000000 fffffff5e0000000 f5ffffff07000000 fffffff5e0000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>1,b=>-1,d=>-1,f=>-92} 010000000f000000a4ffffff 010000000f000000a4ffffff00000000 010000000f000000a4ffffff00000000 00000001f0000000ffffffa4 010000000f000000a4ffffff 010000000f000000a4ffffff 00000001f0000000ffffffa400000000 010000000f000000a4ffffff 00000001f0000000ffffffa4 - {e=>-1,c=>-1,a=>-79,b=>0,d=>0,f=>47} b1ffffff0a0000002f000000 b1ffffff0a0000002f00000000000000 b1ffffff0a0000002f00000000000000 ffffffb1500000000000002f b1ffffff0a0000002f000000 b1ffffff0a0000002f000000 ffffffb1500000000000002f00000000 b1ffffff0a0000002f000000 ffffffb1500000000000002f - {e=>-1,c=>-1,a=>81,b=>-1,d=>0,f=>-106} 510000000b00000096ffffff 510000000b00000096ffffff00000000 510000000b00000096ffffff00000000 00000051d0000000ffffff96 510000000b00000096ffffff 510000000b00000096ffffff 00000051d0000000ffffff9600000000 510000000b00000096ffffff 00000051d0000000ffffff96 - {e=>0,c=>0,a=>15,b=>0,d=>-1,f=>2} 0f0000000400000002000000 0f000000040000000200000000000000 0f000000040000000200000000000000 0000000f2000000000000002 0f0000000400000002000000 0f0000000400000002000000 0000000f200000000000000200000000 0f0000000400000002000000 0000000f2000000000000002 - {e=>0,c=>0,a=>91,b=>-1,d=>0,f=>98} 5b0000000100000062000000 5b000000010000006200000000000000 5b000000010000006200000000000000 0000005b8000000000000062 5b0000000100000062000000 5b0000000100000062000000 0000005b800000000000006200000000 5b0000000100000062000000 0000005b8000000000000062 = struct smixed { long a; signed char b:1; }; - {a=>60,b=>-1} 3c00000001000000 3c000000000000000100000000000000 3c000000000000000100000000000000 0000003c80000000 3c00000001000000 3c00000001000000 000000000000003c8000000000000000 3c00000001000000 0000003c80000000 - {a=>125,b=>-1} 7d00000001000000 7d000000000000000100000000000000 7d000000000000000100000000000000 0000007d80000000 7d00000001000000 7d00000001000000 000000000000007d8000000000000000 7d00000001000000 0000007d80000000 - {a=>-23,b=>-1} e9ffffff01000000 e9ffffffffffffff0100000000000000 e9ffffffffffffff0100000000000000 ffffffe980000000 e9ffffff01000000 e9ffffff01000000 ffffffffffffffe98000000000000000 e9ffffff01000000 ffffffe980000000 - {a=>-14,b=>-1} f2ffffff01000000 f2ffffffffffffff0100000000000000 f2ffffffffffffff0100000000000000 fffffff280000000 f2ffffff01000000 f2ffffff01000000 fffffffffffffff28000000000000000 f2ffffff01000000 fffffff280000000 - {a=>51,b=>0} 3300000000000000 33000000000000000000000000000000 33000000000000000000000000000000 0000003300000000 3300000000000000 3300000000000000 00000000000000330000000000000000 3300000000000000 0000003300000000 = struct smixed { long a; signed char b:1; signed short c:1; }; - {c=>-1,a=>-105,b=>-1} 97ffffff03000000 97ffffffffffffff0300000000000000 97ffffffffffffff0300000000000000 ffffff97c0000000 97ffffff03000000 97ffffff03000000 ffffffffffffff97c000000000000000 97ffffff03000000 ffffff97c0000000 - {c=>0,a=>31,b=>0} 1f00000000000000 1f000000000000000000000000000000 1f000000000000000000000000000000 0000001f00000000 1f00000000000000 1f00000000000000 000000000000001f0000000000000000 1f00000000000000 0000001f00000000 - {c=>0,a=>43,b=>0} 2b00000000000000 2b000000000000000000000000000000 2b000000000000000000000000000000 0000002b00000000 2b00000000000000 2b00000000000000 000000000000002b0000000000000000 2b00000000000000 0000002b00000000 - {c=>0,a=>-128,b=>0} 80ffffff00000000 80ffffffffffffff0000000000000000 80ffffffffffffff0000000000000000 ffffff8000000000 80ffffff00000000 80ffffff00000000 ffffffffffffff800000000000000000 80ffffff00000000 ffffff8000000000 - {c=>-1,a=>101,b=>0} 6500000002000000 65000000000000000200000000000000 65000000000000000200000000000000 0000006540000000 6500000002000000 6500000002000000 00000000000000654000000000000000 6500000002000000 0000006540000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>18,b=>0,d=>-1} 1200000004000000 12000000000000000400000000000000 12000000000000000400000000000000 0000001220000000 1200000004000000 1200000004000000 00000000000000122000000000000000 1200000004000000 0000001220000000 - {c=>-1,a=>-93,b=>-1,d=>0} a3ffffff03000000 a3ffffffffffffff0300000000000000 a3ffffffffffffff0300000000000000 ffffffa3c0000000 a3ffffff03000000 a3ffffff03000000 ffffffffffffffa3c000000000000000 a3ffffff03000000 ffffffa3c0000000 - {c=>-1,a=>-110,b=>-1,d=>-1} 92ffffff07000000 92ffffffffffffff0700000000000000 92ffffffffffffff0700000000000000 ffffff92e0000000 92ffffff07000000 92ffffff07000000 ffffffffffffff92e000000000000000 92ffffff07000000 ffffff92e0000000 - {c=>-1,a=>-52,b=>0,d=>-1} ccffffff06000000 ccffffffffffffff0600000000000000 ccffffffffffffff0600000000000000 ffffffcc60000000 ccffffff06000000 ccffffff06000000 ffffffffffffffcc6000000000000000 ccffffff06000000 ffffffcc60000000 - {c=>0,a=>120,b=>-1,d=>-1} 7800000005000000 78000000000000000500000000000000 78000000000000000500000000000000 00000078a0000000 7800000005000000 7800000005000000 0000000000000078a000000000000000 7800000005000000 00000078a0000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>-1,c=>-1,a=>-121,b=>0,d=>-1} 87ffffff0e000000 87ffffffffffffff0e00000000000000 87ffffffffffffff0e00000000000000 ffffff8770000000 87ffffff0e000000 87ffffff0e000000 ffffffffffffff877000000000000000 87ffffff0e000000 ffffff8770000000 - {e=>0,c=>0,a=>-86,b=>0,d=>-1} aaffffff04000000 aaffffffffffffff0400000000000000 aaffffffffffffff0400000000000000 ffffffaa20000000 aaffffff04000000 aaffffff04000000 ffffffffffffffaa2000000000000000 aaffffff04000000 ffffffaa20000000 - {e=>-1,c=>0,a=>115,b=>-1,d=>0} 7300000009000000 73000000000000000900000000000000 73000000000000000900000000000000 0000007390000000 7300000009000000 7300000009000000 00000000000000739000000000000000 7300000009000000 0000007390000000 - {e=>-1,c=>-1,a=>26,b=>-1,d=>-1} 1a0000000f000000 1a000000000000000f00000000000000 1a000000000000000f00000000000000 0000001af0000000 1a0000000f000000 1a0000000f000000 000000000000001af000000000000000 1a0000000f000000 0000001af0000000 - {e=>-1,c=>-1,a=>-108,b=>-1,d=>-1} 94ffffff0f000000 94ffffffffffffff0f00000000000000 94ffffffffffffff0f00000000000000 ffffff94f0000000 94ffffff0f000000 94ffffff0f000000 ffffffffffffff94f000000000000000 94ffffff0f000000 ffffff94f0000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>26,b=>0,d=>-1,f=>-117} 1a0000000e0000008bffffff 1a000000000000000e0000008bffffff 1a000000000000000e0000008bffffff 0000001a70000000ffffff8b 1a0000000e0000008bffffff 1a0000000e0000008bffffff 000000000000001a70000000ffffff8b 1a0000000e0000008bffffff 0000001a70000000ffffff8b - {e=>-1,c=>0,a=>-97,b=>0,d=>-1,f=>99} 9fffffff0c00000063000000 9fffffffffffffff0c00000063000000 9fffffffffffffff0c00000063000000 ffffff9f3000000000000063 9fffffff0c00000063000000 9fffffff0c00000063000000 ffffffffffffff9f3000000000000063 9fffffff0c00000063000000 ffffff9f3000000000000063 - {e=>0,c=>-1,a=>-23,b=>-1,d=>0,f=>63} e9ffffff030000003f000000 e9ffffffffffffff030000003f000000 e9ffffffffffffff030000003f000000 ffffffe9c00000000000003f e9ffffff030000003f000000 e9ffffff030000003f000000 ffffffffffffffe9c00000000000003f e9ffffff030000003f000000 ffffffe9c00000000000003f - {e=>0,c=>-1,a=>95,b=>0,d=>-1,f=>108} 5f000000060000006c000000 5f00000000000000060000006c000000 5f00000000000000060000006c000000 0000005f600000000000006c 5f000000060000006c000000 5f000000060000006c000000 000000000000005f600000000000006c 5f000000060000006c000000 0000005f600000000000006c - {e=>-1,c=>0,a=>-97,b=>0,d=>0,f=>86} 9fffffff0800000056000000 9fffffffffffffff0800000056000000 9fffffffffffffff0800000056000000 ffffff9f1000000000000056 9fffffff0800000056000000 9fffffff0800000056000000 ffffffffffffff9f1000000000000056 9fffffff0800000056000000 ffffff9f1000000000000056 = struct mixed { unsigned char a:1; }; - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>0} 00 00 00 00 00000000 00 00 00 00 = struct mixed { unsigned char a:1; signed char b:1; }; - {a=>0,b=>-1} 02 02 02 40 02000000 02 40 02 40 - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; }; - {c=>1,a=>0,b=>0} 0400 0400 0400 2000 04000000 0400 2000 0400 2000 - {c=>1,a=>1,b=>-1} 0700 0700 0700 e000 07000000 0700 e000 0700 e000 - {c=>1,a=>0,b=>0} 0400 0400 0400 2000 04000000 0400 2000 0400 2000 - {c=>1,a=>1,b=>-1} 0700 0700 0700 e000 07000000 0700 e000 0700 e000 - {c=>1,a=>0,b=>-1} 0600 0600 0600 6000 06000000 0600 6000 0600 6000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; }; - {c=>0,a=>1,b=>0,d=>-1} 0900 0900 0900 9000 09000000 0900 9000 0900 9000 - {c=>0,a=>1,b=>0,d=>-1} 0900 0900 0900 9000 09000000 0900 9000 0900 9000 - {c=>0,a=>1,b=>-1,d=>0} 0300 0300 0300 c000 03000000 0300 c000 0300 c000 - {c=>1,a=>1,b=>-1,d=>0} 0700 0700 0700 e000 07000000 0700 e000 0700 e000 - {c=>1,a=>0,b=>-1,d=>-1} 0e00 0e00 0e00 7000 0e000000 0e00 7000 0e00 7000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>0,b=>-1,d=>-1} 1e000000 1e000000 1e000000 78000000 1e000000 1e000000 78000000 1e000000 78000000 - {e=>0,c=>1,a=>1,b=>-1,d=>-1} 0f000000 0f000000 0f000000 f0000000 0f000000 0f000000 f0000000 0f000000 f0000000 - {e=>1,c=>1,a=>0,b=>0,d=>0} 14000000 14000000 14000000 28000000 14000000 14000000 28000000 14000000 28000000 - {e=>0,c=>1,a=>1,b=>0,d=>-1} 0d000000 0d000000 0d000000 b0000000 0d000000 0d000000 b0000000 0d000000 b0000000 - {e=>0,c=>0,a=>1,b=>0,d=>-1} 09000000 09000000 09000000 90000000 09000000 09000000 90000000 09000000 90000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; }; - {e=>0,c=>0,a=>0,b=>0,d=>-1,f=>-1} 28000000 28000000 28000000 14000000 28000000 28000000 14000000 28000000 14000000 - {e=>0,c=>0,a=>1,b=>0,d=>-1,f=>-1} 29000000 29000000 29000000 94000000 29000000 29000000 94000000 29000000 94000000 - {e=>0,c=>1,a=>0,b=>-1,d=>-1,f=>-1} 2e000000 2e000000 2e000000 74000000 2e000000 2e000000 74000000 2e000000 74000000 - {e=>1,c=>0,a=>0,b=>-1,d=>-1,f=>0} 1a000000 1a000000 1a000000 58000000 1a000000 1a000000 58000000 1a000000 58000000 - {e=>0,c=>0,a=>0,b=>0,d=>0,f=>-1} 20000000 20000000 20000000 04000000 20000000 20000000 04000000 20000000 04000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; }; - {e=>0,c=>0,a=>0,g=>0,b=>-1,d=>0,f=>0} 02000000 0200000000000000 0200000000000000 40000000 02000000 02000000 4000000000000000 02000000 40000000 - {e=>1,c=>0,a=>1,g=>0,b=>0,d=>-1,f=>-1} 39000000 3900000000000000 3900000000000000 9c000000 39000000 39000000 9c00000000000000 39000000 9c000000 - {e=>1,c=>0,a=>1,g=>1,b=>0,d=>0,f=>0} 51000000 5100000000000000 5100000000000000 8a000000 51000000 51000000 8a00000000000000 51000000 8a000000 - {e=>0,c=>0,a=>1,g=>0,b=>-1,d=>-1,f=>0} 0b000000 0b00000000000000 0b00000000000000 d0000000 0b000000 0b000000 d000000000000000 0b000000 d0000000 - {e=>0,c=>1,a=>0,g=>1,b=>-1,d=>0,f=>0} 46000000 4600000000000000 4600000000000000 62000000 46000000 46000000 6200000000000000 46000000 62000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; signed long h:1; }; - {e=>1,a=>1,d=>-1,c=>1,h=>0,b=>-1,g=>1,f=>-1} 7f000000 7f00000000000000 7f00000000000000 fe000000 7f000000 7f000000 fe00000000000000 7f000000 fe000000 - {e=>0,a=>0,d=>-1,c=>1,h=>0,b=>0,g=>0,f=>0} 0c000000 0c00000000000000 0c00000000000000 30000000 0c000000 0c000000 3000000000000000 0c000000 30000000 - {e=>1,a=>0,d=>-1,c=>0,h=>-1,b=>0,g=>1,f=>0} d8000000 d800000000000000 d800000000000000 1b000000 d8000000 d8000000 1b00000000000000 d8000000 1b000000 - {e=>1,a=>0,d=>-1,c=>0,h=>-1,b=>0,g=>0,f=>0} 98000000 9800000000000000 9800000000000000 19000000 98000000 98000000 1900000000000000 98000000 19000000 - {e=>1,a=>1,d=>0,c=>1,h=>0,b=>-1,g=>0,f=>0} 17000000 1700000000000000 1700000000000000 e8000000 17000000 17000000 e800000000000000 17000000 e8000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; signed long h:1; unsigned char i; }; - {e=>1,a=>0,d=>-1,c=>1,h=>-1,b=>-1,g=>0,f=>-1,i=>162} bea20000 bea2000000000000 bea2000000000000 7da20000 bea20000 bea20000 7da2000000000000 bea20000 7da20000 - {e=>1,a=>1,d=>0,c=>0,h=>0,b=>-1,g=>0,f=>0,i=>113} 13710000 1371000000000000 1371000000000000 c8710000 13710000 13710000 c871000000000000 13710000 c8710000 - {e=>0,a=>1,d=>0,c=>1,h=>0,b=>0,g=>1,f=>-1,i=>177} 65b10000 65b1000000000000 65b1000000000000 a6b10000 65b10000 65b10000 a6b1000000000000 65b10000 a6b10000 - {e=>0,a=>1,d=>-1,c=>1,h=>0,b=>0,g=>1,f=>-1,i=>254} 6dfe0000 6dfe000000000000 6dfe000000000000 b6fe0000 6dfe0000 6dfe0000 b6fe000000000000 6dfe0000 b6fe0000 - {e=>1,a=>0,d=>-1,c=>0,h=>0,b=>0,g=>0,f=>-1,i=>196} 38c40000 38c4000000000000 38c4000000000000 1cc40000 38c40000 38c40000 1cc4000000000000 38c40000 1cc40000 = struct mixed { char a; unsigned char b:1; }; - {a=>59,b=>1} 3b01 3b01 3b01 3b80 3b010000 3b01 3b80 3b01 3b80 - {a=>126,b=>1} 7e01 7e01 7e01 7e80 7e010000 7e01 7e80 7e01 7e80 - {a=>58,b=>1} 3a01 3a01 3a01 3a80 3a010000 3a01 3a80 3a01 3a80 - {a=>84,b=>0} 5400 5400 5400 5400 54000000 5400 5400 5400 5400 - {a=>-59,b=>1} c501 c501 c501 c580 c5010000 c501 c580 c501 c580 = struct mixed { char a; unsigned char b:1; signed char c:1; }; - {c=>0,a=>-8,b=>1} f801 f801 f801 f880 f8010000 f801 f880 f801 f880 - {c=>-1,a=>-61,b=>1} c303 c303 c303 c3c0 c3030000 c303 c3c0 c303 c3c0 - {c=>0,a=>38,b=>0} 2600 2600 2600 2600 26000000 2600 2600 2600 2600 - {c=>0,a=>103,b=>1} 6701 6701 6701 6780 67010000 6701 6780 6701 6780 - {c=>0,a=>-74,b=>0} b600 b600 b600 b600 b6000000 b600 b600 b600 b600 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>-1,a=>-94,b=>0,d=>0} a202 a202 a202 a240 a2020000 a202 a240 a202 a240 - {c=>0,a=>18,b=>1,d=>0} 1201 1201 1201 1280 12010000 1201 1280 1201 1280 - {c=>0,a=>83,b=>1,d=>1} 5305 5305 5305 53a0 53050000 5305 53a0 5305 53a0 - {c=>-1,a=>41,b=>1,d=>1} 2907 2907 2907 29e0 29070000 2907 29e0 2907 29e0 - {c=>-1,a=>28,b=>0,d=>1} 1c06 1c06 1c06 1c60 1c060000 1c06 1c60 1c06 1c60 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>-1,a=>112,b=>1,d=>0} 7003 7003 7003 70c0 70030000 7003 70c0 7003 70c0 - {e=>-1,c=>0,a=>72,b=>1,d=>1} 480d 480d 480d 48b0 480d0000 480d 48b0 480d 48b0 - {e=>-1,c=>0,a=>33,b=>0,d=>1} 210c 210c 210c 2130 210c0000 210c 2130 210c 2130 - {e=>-1,c=>-1,a=>57,b=>1,d=>0} 390b 390b 390b 39d0 390b0000 390b 39d0 390b 39d0 - {e=>0,c=>0,a=>99,b=>1,d=>1} 6305 6305 6305 63a0 63050000 6305 63a0 6305 63a0 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>0,a=>-16,b=>0,d=>0,f=>1} f0100000 f0100000 f0100000 f0080000 f0100000 f0100000 f0080000 f0100000 f0080000 - {e=>0,c=>0,a=>35,b=>0,d=>1,f=>1} 23140000 23140000 23140000 23280000 23140000 23140000 23280000 23140000 23280000 - {e=>0,c=>-1,a=>24,b=>1,d=>0,f=>1} 18130000 18130000 18130000 18c80000 18130000 18130000 18c80000 18130000 18c80000 - {e=>-1,c=>0,a=>-56,b=>0,d=>1,f=>1} c81c0000 c81c0000 c81c0000 c8380000 c81c0000 c81c0000 c8380000 c81c0000 c8380000 - {e=>0,c=>0,a=>-67,b=>1,d=>0,f=>0} bd010000 bd010000 bd010000 bd800000 bd010000 bd010000 bd800000 bd010000 bd800000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>0,a=>-105,g=>0,b=>0,d=>0,f=>0} 97080000 97080000 97080000 97100000 97080000 97080000 97100000 97080000 97100000 - {e=>0,c=>-1,a=>101,g=>-1,b=>0,d=>0,f=>0} 65220000 65220000 65220000 65440000 65220000 65220000 65440000 65220000 65440000 - {e=>0,c=>0,a=>-86,g=>-1,b=>0,d=>1,f=>0} aa240000 aa240000 aa240000 aa240000 aa240000 aa240000 aa240000 aa240000 aa240000 - {e=>0,c=>-1,a=>-47,g=>-1,b=>0,d=>0,f=>0} d1220000 d1220000 d1220000 d1440000 d1220000 d1220000 d1440000 d1220000 d1440000 - {e=>0,c=>0,a=>117,g=>-1,b=>1,d=>0,f=>0} 75210000 75210000 75210000 75840000 75210000 75210000 75840000 75210000 75840000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>77,d=>0,c=>0,h=>0,b=>1,g=>0,f=>1} 4d190000 4d19000000000000 4d19000000000000 4d980000 4d190000 4d190000 4d98000000000000 4d190000 4d980000 - {e=>-1,a=>-38,d=>1,c=>-1,h=>1,b=>0,g=>0,f=>0} da4e0000 da4e000000000000 da4e000000000000 da720000 da4e0000 da4e0000 da72000000000000 da4e0000 da720000 - {e=>-1,a=>-89,d=>0,c=>0,h=>1,b=>1,g=>-1,f=>1} a7790000 a779000000000000 a779000000000000 a79e0000 a7790000 a7790000 a79e000000000000 a7790000 a79e0000 - {e=>0,a=>-55,d=>1,c=>-1,h=>1,b=>1,g=>-1,f=>1} c9770000 c977000000000000 c977000000000000 c9ee0000 c9770000 c9770000 c9ee000000000000 c9770000 c9ee0000 - {e=>0,a=>76,d=>0,c=>-1,h=>0,b=>0,g=>-1,f=>1} 4c320000 4c32000000000000 4c32000000000000 4c4c0000 4c320000 4c320000 4c4c000000000000 4c320000 4c4c0000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>0,a=>51,d=>1,c=>0,h=>1,b=>1,g=>-1,f=>0,i=>-1} 33e50000 33e5000000000000 33e5000000000000 33a70000 33e50000 33e50000 33a7000000000000 33e50000 33a70000 - {e=>0,a=>101,d=>0,c=>-1,h=>1,b=>0,g=>-1,f=>0,i=>-1} 65e20000 65e2000000000000 65e2000000000000 65470000 65e20000 65e20000 6547000000000000 65e20000 65470000 - {e=>0,a=>-74,d=>1,c=>-1,h=>0,b=>0,g=>0,f=>0,i=>0} b6060000 b606000000000000 b606000000000000 b6600000 b6060000 b6060000 b660000000000000 b6060000 b6600000 - {e=>0,a=>124,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 7c970000 7c97000000000000 7c97000000000000 7ce90000 7c970000 7c970000 7ce9000000000000 7c970000 7ce90000 - {e=>-1,a=>24,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} 181b0000 181b000000000000 181b000000000000 18d80000 181b0000 181b0000 18d8000000000000 181b0000 18d80000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-115,d=>0,j=>73,c=>-1,h=>1,b=>0,g=>0,f=>0,i=>-1} 8dca4900 8dca490000000000 8dca490000000000 8d534900 8dca4900 8dca4900 8d53490000000000 8dca4900 8d534900 - {e=>0,a=>112,d=>0,j=>186,c=>0,h=>1,b=>0,g=>0,f=>1,i=>0} 7050ba00 7050ba0000000000 7050ba0000000000 700aba00 7050ba00 7050ba00 700aba0000000000 7050ba00 700aba00 - {e=>0,a=>27,d=>0,j=>247,c=>-1,h=>1,b=>1,g=>0,f=>1,i=>0} 1b53f700 1b53f70000000000 1b53f70000000000 1bcaf700 1b53f700 1b53f700 1bcaf70000000000 1b53f700 1bcaf700 - {e=>-1,a=>0,d=>1,j=>68,c=>-1,h=>1,b=>0,g=>0,f=>0,i=>0} 004e4400 004e440000000000 004e440000000000 00724400 004e4400 004e4400 0072440000000000 004e4400 00724400 - {e=>-1,a=>116,d=>0,j=>30,c=>-1,h=>1,b=>0,g=>-1,f=>1,i=>0} 747a1e00 747a1e0000000000 747a1e0000000000 745e1e00 747a1e00 747a1e00 745e1e0000000000 747a1e00 745e1e00 = struct mixed { short a; unsigned char b:1; }; - {a=>43,b=>0} 2b000000 2b000000 2b000000 002b0000 2b000000 2b000000 002b0000 2b000000 002b0000 - {a=>-77,b=>0} b3ff0000 b3ff0000 b3ff0000 ffb30000 b3ff0000 b3ff0000 ffb30000 b3ff0000 ffb30000 - {a=>-127,b=>0} 81ff0000 81ff0000 81ff0000 ff810000 81ff0000 81ff0000 ff810000 81ff0000 ff810000 - {a=>-70,b=>0} baff0000 baff0000 baff0000 ffba0000 baff0000 baff0000 ffba0000 baff0000 ffba0000 - {a=>-21,b=>0} ebff0000 ebff0000 ebff0000 ffeb0000 ebff0000 ebff0000 ffeb0000 ebff0000 ffeb0000 = struct mixed { short a; unsigned char b:1; signed char c:1; }; - {c=>0,a=>1,b=>1} 01000100 01000100 01000100 00018000 01000100 01000100 00018000 01000100 00018000 - {c=>-1,a=>-65,b=>0} bfff0200 bfff0200 bfff0200 ffbf4000 bfff0200 bfff0200 ffbf4000 bfff0200 ffbf4000 - {c=>0,a=>-122,b=>0} 86ff0000 86ff0000 86ff0000 ff860000 86ff0000 86ff0000 ff860000 86ff0000 ff860000 - {c=>-1,a=>-8,b=>1} f8ff0300 f8ff0300 f8ff0300 fff8c000 f8ff0300 f8ff0300 fff8c000 f8ff0300 fff8c000 - {c=>-1,a=>50,b=>1} 32000300 32000300 32000300 0032c000 32000300 32000300 0032c000 32000300 0032c000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>0,a=>24,b=>1,d=>1} 18000500 18000500 18000500 0018a000 18000500 18000500 0018a000 18000500 0018a000 - {c=>0,a=>-41,b=>0,d=>1} d7ff0400 d7ff0400 d7ff0400 ffd72000 d7ff0400 d7ff0400 ffd72000 d7ff0400 ffd72000 - {c=>-1,a=>-82,b=>0,d=>0} aeff0200 aeff0200 aeff0200 ffae4000 aeff0200 aeff0200 ffae4000 aeff0200 ffae4000 - {c=>0,a=>124,b=>1,d=>0} 7c000100 7c000100 7c000100 007c8000 7c000100 7c000100 007c8000 7c000100 007c8000 - {c=>0,a=>-85,b=>0,d=>1} abff0400 abff0400 abff0400 ffab2000 abff0400 abff0400 ffab2000 abff0400 ffab2000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>-1,c=>0,a=>92,b=>1,d=>0} 5c000900 5c000900 5c000900 005c9000 5c000900 5c000900 005c9000 5c000900 005c9000 - {e=>0,c=>0,a=>104,b=>1,d=>0} 68000100 68000100 68000100 00688000 68000100 68000100 00688000 68000100 00688000 - {e=>-1,c=>-1,a=>-96,b=>1,d=>0} a0ff0b00 a0ff0b00 a0ff0b00 ffa0d000 a0ff0b00 a0ff0b00 ffa0d000 a0ff0b00 ffa0d000 - {e=>0,c=>0,a=>-66,b=>0,d=>1} beff0400 beff0400 beff0400 ffbe2000 beff0400 beff0400 ffbe2000 beff0400 ffbe2000 - {e=>0,c=>0,a=>126,b=>0,d=>0} 7e000000 7e000000 7e000000 007e0000 7e000000 7e000000 007e0000 7e000000 007e0000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>0,a=>-15,b=>1,d=>1,f=>1} f1ff1500 f1ff1500 f1ff1500 fff1a800 f1ff1500 f1ff1500 fff1a800 f1ff1500 fff1a800 - {e=>-1,c=>-1,a=>15,b=>0,d=>0,f=>1} 0f001a00 0f001a00 0f001a00 000f5800 0f001a00 0f001a00 000f5800 0f001a00 000f5800 - {e=>-1,c=>-1,a=>75,b=>1,d=>1,f=>1} 4b001f00 4b001f00 4b001f00 004bf800 4b001f00 4b001f00 004bf800 4b001f00 004bf800 - {e=>0,c=>0,a=>127,b=>0,d=>0,f=>1} 7f001000 7f001000 7f001000 007f0800 7f001000 7f001000 007f0800 7f001000 007f0800 - {e=>-1,c=>-1,a=>0,b=>0,d=>0,f=>0} 00000a00 00000a00 00000a00 00005000 00000a00 00000a00 00005000 00000a00 00005000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>0,a=>-96,g=>0,b=>0,d=>1,f=>0} a0ff0c00 a0ff0c00 a0ff0c00 ffa03000 a0ff0c00 a0ff0c00 ffa03000 a0ff0c00 ffa03000 - {e=>-1,c=>-1,a=>-116,g=>-1,b=>0,d=>1,f=>1} 8cff3e00 8cff3e00 8cff3e00 ff8c7c00 8cff3e00 8cff3e00 ff8c7c00 8cff3e00 ff8c7c00 - {e=>0,c=>0,a=>16,g=>0,b=>1,d=>0,f=>1} 10001100 10001100 10001100 00108800 10001100 10001100 00108800 10001100 00108800 - {e=>-1,c=>0,a=>108,g=>-1,b=>1,d=>0,f=>1} 6c003900 6c003900 6c003900 006c9c00 6c003900 6c003900 006c9c00 6c003900 006c9c00 - {e=>-1,c=>0,a=>89,g=>0,b=>1,d=>1,f=>0} 59000d00 59000d00 59000d00 0059b000 59000d00 59000d00 0059b000 59000d00 0059b000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>0,a=>-94,d=>1,c=>0,h=>1,b=>0,g=>0,f=>0} a2ff4400 a2ff440000000000 a2ff440000000000 ffa22200 a2ff4400 a2ff4400 ffa2220000000000 a2ff4400 ffa22200 - {e=>-1,a=>-38,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>1} daff3d00 daff3d0000000000 daff3d0000000000 ffdabc00 daff3d00 daff3d00 ffdabc0000000000 daff3d00 ffdabc00 - {e=>0,a=>-42,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>0} d6ff2000 d6ff200000000000 d6ff200000000000 ffd60400 d6ff2000 d6ff2000 ffd6040000000000 d6ff2000 ffd60400 - {e=>0,a=>-80,d=>0,c=>0,h=>1,b=>0,g=>0,f=>0} b0ff4000 b0ff400000000000 b0ff400000000000 ffb00200 b0ff4000 b0ff4000 ffb0020000000000 b0ff4000 ffb00200 - {e=>0,a=>-7,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1} f9ff5100 f9ff510000000000 f9ff510000000000 fff98a00 f9ff5100 f9ff5100 fff98a0000000000 f9ff5100 fff98a00 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>-1,a=>106,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} 6a001f00 6a001f0000000000 6a001f0000000000 006af800 6a001f00 6a001f00 006af80000000000 6a001f00 006af800 - {e=>0,a=>10,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>-1} 0a00e000 0a00e00000000000 0a00e00000000000 000a0700 0a00e000 0a00e000 000a070000000000 0a00e000 000a0700 - {e=>-1,a=>93,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0,i=>0} 5d000c00 5d000c0000000000 5d000c0000000000 005d3000 5d000c00 5d000c00 005d300000000000 5d000c00 005d3000 - {e=>-1,a=>-24,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1,i=>0} e8ff5900 e8ff590000000000 e8ff590000000000 ffe89a00 e8ff5900 e8ff5900 ffe89a0000000000 e8ff5900 ffe89a00 - {e=>0,a=>-98,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>1,i=>-1} 9efff000 9efff00000000000 9efff00000000000 ff9e0f00 9efff000 9efff000 ff9e0f0000000000 9efff000 ff9e0f00 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-30,d=>0,j=>167,c=>0,h=>1,b=>1,g=>0,f=>0,i=>0} e2ff49a7 e2ff49a700000000 e2ff49a700000000 ffe292a7 e2ff49a7 e2ff49a7 ffe292a700000000 e2ff49a7 ffe292a7 - {e=>0,a=>34,d=>1,j=>13,c=>0,h=>1,b=>1,g=>0,f=>0,i=>-1} 2200c50d 2200c50d00000000 2200c50d00000000 0022a30d 2200c50d 2200c50d 0022a30d00000000 2200c50d 0022a30d - {e=>-1,a=>-125,d=>0,j=>209,c=>0,h=>0,b=>0,g=>0,f=>0,i=>0} 83ff08d1 83ff08d100000000 83ff08d100000000 ff8310d1 83ff08d1 83ff08d1 ff8310d100000000 83ff08d1 ff8310d1 - {e=>0,a=>57,d=>0,j=>197,c=>0,h=>0,b=>0,g=>-1,f=>1,i=>-1} 3900b0c5 3900b0c500000000 3900b0c500000000 00390dc5 3900b0c5 3900b0c5 00390dc500000000 3900b0c5 00390dc5 - {e=>-1,a=>101,d=>1,j=>141,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 65009f8d 65009f8d00000000 65009f8d00000000 0065f98d 65009f8d 65009f8d 0065f98d00000000 65009f8d 0065f98d = struct mixed { int a; unsigned char b:1; }; - {a=>59,b=>1} 3b00000001000000 3b00000001000000 3b00000001000000 0000003b80000000 3b00000001000000 3b00000001000000 0000003b80000000 3b00000001000000 0000003b80000000 - {a=>25,b=>0} 1900000000000000 1900000000000000 1900000000000000 0000001900000000 1900000000000000 1900000000000000 0000001900000000 1900000000000000 0000001900000000 - {a=>-69,b=>1} bbffffff01000000 bbffffff01000000 bbffffff01000000 ffffffbb80000000 bbffffff01000000 bbffffff01000000 ffffffbb80000000 bbffffff01000000 ffffffbb80000000 - {a=>106,b=>0} 6a00000000000000 6a00000000000000 6a00000000000000 0000006a00000000 6a00000000000000 6a00000000000000 0000006a00000000 6a00000000000000 0000006a00000000 - {a=>112,b=>1} 7000000001000000 7000000001000000 7000000001000000 0000007080000000 7000000001000000 7000000001000000 0000007080000000 7000000001000000 0000007080000000 = struct mixed { int a; unsigned char b:1; signed char c:1; }; - {c=>-1,a=>17,b=>0} 1100000002000000 1100000002000000 1100000002000000 0000001140000000 1100000002000000 1100000002000000 0000001140000000 1100000002000000 0000001140000000 - {c=>-1,a=>-75,b=>1} b5ffffff03000000 b5ffffff03000000 b5ffffff03000000 ffffffb5c0000000 b5ffffff03000000 b5ffffff03000000 ffffffb5c0000000 b5ffffff03000000 ffffffb5c0000000 - {c=>-1,a=>86,b=>0} 5600000002000000 5600000002000000 5600000002000000 0000005640000000 5600000002000000 5600000002000000 0000005640000000 5600000002000000 0000005640000000 - {c=>0,a=>-126,b=>1} 82ffffff01000000 82ffffff01000000 82ffffff01000000 ffffff8280000000 82ffffff01000000 82ffffff01000000 ffffff8280000000 82ffffff01000000 ffffff8280000000 - {c=>-1,a=>49,b=>1} 3100000003000000 3100000003000000 3100000003000000 00000031c0000000 3100000003000000 3100000003000000 00000031c0000000 3100000003000000 00000031c0000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>-1,a=>-126,b=>0,d=>0} 82ffffff02000000 82ffffff02000000 82ffffff02000000 ffffff8240000000 82ffffff02000000 82ffffff02000000 ffffff8240000000 82ffffff02000000 ffffff8240000000 - {c=>0,a=>-97,b=>0,d=>1} 9fffffff04000000 9fffffff04000000 9fffffff04000000 ffffff9f20000000 9fffffff04000000 9fffffff04000000 ffffff9f20000000 9fffffff04000000 ffffff9f20000000 - {c=>0,a=>25,b=>0,d=>0} 1900000000000000 1900000000000000 1900000000000000 0000001900000000 1900000000000000 1900000000000000 0000001900000000 1900000000000000 0000001900000000 - {c=>0,a=>-28,b=>1,d=>1} e4ffffff05000000 e4ffffff05000000 e4ffffff05000000 ffffffe4a0000000 e4ffffff05000000 e4ffffff05000000 ffffffe4a0000000 e4ffffff05000000 ffffffe4a0000000 - {c=>-1,a=>112,b=>1,d=>0} 7000000003000000 7000000003000000 7000000003000000 00000070c0000000 7000000003000000 7000000003000000 00000070c0000000 7000000003000000 00000070c0000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>-1,a=>122,b=>0,d=>1} 7a00000006000000 7a00000006000000 7a00000006000000 0000007a60000000 7a00000006000000 7a00000006000000 0000007a60000000 7a00000006000000 0000007a60000000 - {e=>-1,c=>-1,a=>-41,b=>1,d=>0} d7ffffff0b000000 d7ffffff0b000000 d7ffffff0b000000 ffffffd7d0000000 d7ffffff0b000000 d7ffffff0b000000 ffffffd7d0000000 d7ffffff0b000000 ffffffd7d0000000 - {e=>-1,c=>-1,a=>67,b=>0,d=>0} 430000000a000000 430000000a000000 430000000a000000 0000004350000000 430000000a000000 430000000a000000 0000004350000000 430000000a000000 0000004350000000 - {e=>0,c=>0,a=>-109,b=>0,d=>1} 93ffffff04000000 93ffffff04000000 93ffffff04000000 ffffff9320000000 93ffffff04000000 93ffffff04000000 ffffff9320000000 93ffffff04000000 ffffff9320000000 - {e=>0,c=>0,a=>-80,b=>1,d=>0} b0ffffff01000000 b0ffffff01000000 b0ffffff01000000 ffffffb080000000 b0ffffff01000000 b0ffffff01000000 ffffffb080000000 b0ffffff01000000 ffffffb080000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>-1,a=>-35,b=>1,d=>0,f=>0} ddffffff03000000 ddffffff03000000 ddffffff03000000 ffffffddc0000000 ddffffff03000000 ddffffff03000000 ffffffddc0000000 ddffffff03000000 ffffffddc0000000 - {e=>-1,c=>-1,a=>-61,b=>0,d=>0,f=>0} c3ffffff0a000000 c3ffffff0a000000 c3ffffff0a000000 ffffffc350000000 c3ffffff0a000000 c3ffffff0a000000 ffffffc350000000 c3ffffff0a000000 ffffffc350000000 - {e=>0,c=>0,a=>94,b=>0,d=>0,f=>1} 5e00000010000000 5e00000010000000 5e00000010000000 0000005e08000000 5e00000010000000 5e00000010000000 0000005e08000000 5e00000010000000 0000005e08000000 - {e=>0,c=>-1,a=>-17,b=>0,d=>0,f=>0} efffffff02000000 efffffff02000000 efffffff02000000 ffffffef40000000 efffffff02000000 efffffff02000000 ffffffef40000000 efffffff02000000 ffffffef40000000 - {e=>-1,c=>-1,a=>-4,b=>0,d=>1,f=>0} fcffffff0e000000 fcffffff0e000000 fcffffff0e000000 fffffffc70000000 fcffffff0e000000 fcffffff0e000000 fffffffc70000000 fcffffff0e000000 fffffffc70000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>-1,a=>66,g=>0,b=>0,d=>0,f=>1} 420000001a000000 420000001a000000 420000001a000000 0000004258000000 420000001a000000 420000001a000000 0000004258000000 420000001a000000 0000004258000000 - {e=>0,c=>-1,a=>88,g=>-1,b=>0,d=>1,f=>1} 5800000036000000 5800000036000000 5800000036000000 000000586c000000 5800000036000000 5800000036000000 000000586c000000 5800000036000000 000000586c000000 - {e=>-1,c=>0,a=>22,g=>0,b=>0,d=>0,f=>0} 1600000008000000 1600000008000000 1600000008000000 0000001610000000 1600000008000000 1600000008000000 0000001610000000 1600000008000000 0000001610000000 - {e=>0,c=>-1,a=>54,g=>-1,b=>0,d=>0,f=>1} 3600000032000000 3600000032000000 3600000032000000 000000364c000000 3600000032000000 3600000032000000 000000364c000000 3600000032000000 000000364c000000 - {e=>-1,c=>-1,a=>98,g=>-1,b=>0,d=>0,f=>0} 620000002a000000 620000002a000000 620000002a000000 0000006254000000 620000002a000000 620000002a000000 0000006254000000 620000002a000000 0000006254000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>-102,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>0} 9affffff2d000000 9affffff2d000000 9affffff2d000000 ffffff9ab4000000 9affffff2d000000 9affffff2d000000 ffffff9ab4000000 9affffff2d000000 ffffff9ab4000000 - {e=>-1,a=>84,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0} 540000000c000000 540000000c000000 540000000c000000 0000005430000000 540000000c000000 540000000c000000 0000005430000000 540000000c000000 0000005430000000 - {e=>-1,a=>-63,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>0} c1ffffff0f000000 c1ffffff0f000000 c1ffffff0f000000 ffffffc1f0000000 c1ffffff0f000000 c1ffffff0f000000 ffffffc1f0000000 c1ffffff0f000000 ffffffc1f0000000 - {e=>0,a=>-36,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>1} dcffffff31000000 dcffffff31000000 dcffffff31000000 ffffffdc8c000000 dcffffff31000000 dcffffff31000000 ffffffdc8c000000 dcffffff31000000 ffffffdc8c000000 - {e=>0,a=>17,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>0} 1100000021000000 1100000021000000 1100000021000000 0000001184000000 1100000021000000 1100000021000000 0000001184000000 1100000021000000 0000001184000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>0,a=>98,d=>1,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>-1} 62000000e4000000 62000000e4000000 62000000e4000000 0000006227000000 62000000e4000000 62000000e4000000 0000006227000000 62000000e4000000 0000006227000000 - {e=>0,a=>-97,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 9fffffff93000000 9fffffff93000000 9fffffff93000000 ffffff9fc9000000 9fffffff93000000 9fffffff93000000 ffffff9fc9000000 9fffffff93000000 ffffff9fc9000000 - {e=>-1,a=>15,d=>1,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>0} 0f0000001e000000 0f0000001e000000 0f0000001e000000 0000000f78000000 0f0000001e000000 0f0000001e000000 0000000f78000000 0f0000001e000000 0000000f78000000 - {e=>-1,a=>-3,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} fdffffff1b000000 fdffffff1b000000 fdffffff1b000000 fffffffdd8000000 fdffffff1b000000 fdffffff1b000000 fffffffdd8000000 fdffffff1b000000 fffffffdd8000000 - {e=>0,a=>101,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>1,i=>-1} 65000000b4000000 65000000b4000000 65000000b4000000 000000652d000000 65000000b4000000 65000000b4000000 000000652d000000 65000000b4000000 000000652d000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-121,d=>1,j=>162,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>0} 87ffffff6ca20000 87ffffff6ca20000 87ffffff6ca20000 ffffff8736a20000 87ffffff6ca20000 87ffffff6ca20000 ffffff8736a20000 87ffffff6ca20000 ffffff8736a20000 - {e=>0,a=>-14,d=>1,j=>104,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>-1} f2ffffff96680000 f2ffffff96680000 f2ffffff96680000 fffffff269680000 f2ffffff96680000 f2ffffff96680000 fffffff269680000 f2ffffff96680000 fffffff269680000 - {e=>-1,a=>4,d=>0,j=>93,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>0} 040000001a5d0000 040000001a5d0000 040000001a5d0000 00000004585d0000 040000001a5d0000 040000001a5d0000 00000004585d0000 040000001a5d0000 00000004585d0000 - {e=>-1,a=>17,d=>0,j=>133,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} 1100000009850000 1100000009850000 1100000009850000 0000001190850000 1100000009850000 1100000009850000 0000001190850000 1100000009850000 0000001190850000 - {e=>0,a=>56,d=>0,j=>65,c=>-1,h=>0,b=>0,g=>-1,f=>0,i=>-1} 38000000a2410000 38000000a2410000 38000000a2410000 0000003845410000 38000000a2410000 38000000a2410000 0000003845410000 38000000a2410000 0000003845410000 = struct mixed { long a; unsigned char b:1; }; - {a=>99,b=>1} 6300000001000000 63000000000000000100000000000000 63000000000000000100000000000000 0000006380000000 6300000001000000 6300000001000000 00000000000000638000000000000000 6300000001000000 0000006380000000 - {a=>8,b=>0} 0800000000000000 08000000000000000000000000000000 08000000000000000000000000000000 0000000800000000 0800000000000000 0800000000000000 00000000000000080000000000000000 0800000000000000 0000000800000000 - {a=>-122,b=>0} 86ffffff00000000 86ffffffffffffff0000000000000000 86ffffffffffffff0000000000000000 ffffff8600000000 86ffffff00000000 86ffffff00000000 ffffffffffffff860000000000000000 86ffffff00000000 ffffff8600000000 - {a=>-2,b=>1} feffffff01000000 feffffffffffffff0100000000000000 feffffffffffffff0100000000000000 fffffffe80000000 feffffff01000000 feffffff01000000 fffffffffffffffe8000000000000000 feffffff01000000 fffffffe80000000 - {a=>102,b=>0} 6600000000000000 66000000000000000000000000000000 66000000000000000000000000000000 0000006600000000 6600000000000000 6600000000000000 00000000000000660000000000000000 6600000000000000 0000006600000000 = struct mixed { long a; unsigned char b:1; signed char c:1; }; - {c=>-1,a=>96,b=>0} 6000000002000000 60000000000000000200000000000000 60000000000000000200000000000000 0000006040000000 6000000002000000 6000000002000000 00000000000000604000000000000000 6000000002000000 0000006040000000 - {c=>-1,a=>59,b=>0} 3b00000002000000 3b000000000000000200000000000000 3b000000000000000200000000000000 0000003b40000000 3b00000002000000 3b00000002000000 000000000000003b4000000000000000 3b00000002000000 0000003b40000000 - {c=>-1,a=>120,b=>1} 7800000003000000 78000000000000000300000000000000 78000000000000000300000000000000 00000078c0000000 7800000003000000 7800000003000000 0000000000000078c000000000000000 7800000003000000 00000078c0000000 - {c=>0,a=>-13,b=>1} f3ffffff01000000 f3ffffffffffffff0100000000000000 f3ffffffffffffff0100000000000000 fffffff380000000 f3ffffff01000000 f3ffffff01000000 fffffffffffffff38000000000000000 f3ffffff01000000 fffffff380000000 - {c=>0,a=>-28,b=>0} e4ffffff00000000 e4ffffffffffffff0000000000000000 e4ffffffffffffff0000000000000000 ffffffe400000000 e4ffffff00000000 e4ffffff00000000 ffffffffffffffe40000000000000000 e4ffffff00000000 ffffffe400000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>0,a=>109,b=>1,d=>0} 6d00000001000000 6d000000000000000100000000000000 6d000000000000000100000000000000 0000006d80000000 6d00000001000000 6d00000001000000 000000000000006d8000000000000000 6d00000001000000 0000006d80000000 - {c=>0,a=>107,b=>0,d=>0} 6b00000000000000 6b000000000000000000000000000000 6b000000000000000000000000000000 0000006b00000000 6b00000000000000 6b00000000000000 000000000000006b0000000000000000 6b00000000000000 0000006b00000000 - {c=>0,a=>28,b=>1,d=>1} 1c00000005000000 1c000000000000000500000000000000 1c000000000000000500000000000000 0000001ca0000000 1c00000005000000 1c00000005000000 000000000000001ca000000000000000 1c00000005000000 0000001ca0000000 - {c=>0,a=>72,b=>0,d=>1} 4800000004000000 48000000000000000400000000000000 48000000000000000400000000000000 0000004820000000 4800000004000000 4800000004000000 00000000000000482000000000000000 4800000004000000 0000004820000000 - {c=>0,a=>-52,b=>0,d=>1} ccffffff04000000 ccffffffffffffff0400000000000000 ccffffffffffffff0400000000000000 ffffffcc20000000 ccffffff04000000 ccffffff04000000 ffffffffffffffcc2000000000000000 ccffffff04000000 ffffffcc20000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>0,a=>25,b=>0,d=>1} 1900000004000000 19000000000000000400000000000000 19000000000000000400000000000000 0000001920000000 1900000004000000 1900000004000000 00000000000000192000000000000000 1900000004000000 0000001920000000 - {e=>-1,c=>-1,a=>59,b=>1,d=>1} 3b0000000f000000 3b000000000000000f00000000000000 3b000000000000000f00000000000000 0000003bf0000000 3b0000000f000000 3b0000000f000000 000000000000003bf000000000000000 3b0000000f000000 0000003bf0000000 - {e=>-1,c=>0,a=>124,b=>0,d=>1} 7c0000000c000000 7c000000000000000c00000000000000 7c000000000000000c00000000000000 0000007c30000000 7c0000000c000000 7c0000000c000000 000000000000007c3000000000000000 7c0000000c000000 0000007c30000000 - {e=>-1,c=>0,a=>74,b=>0,d=>0} 4a00000008000000 4a000000000000000800000000000000 4a000000000000000800000000000000 0000004a10000000 4a00000008000000 4a00000008000000 000000000000004a1000000000000000 4a00000008000000 0000004a10000000 - {e=>-1,c=>0,a=>-39,b=>0,d=>1} d9ffffff0c000000 d9ffffffffffffff0c00000000000000 d9ffffffffffffff0c00000000000000 ffffffd930000000 d9ffffff0c000000 d9ffffff0c000000 ffffffffffffffd93000000000000000 d9ffffff0c000000 ffffffd930000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>-1,c=>-1,a=>-33,b=>0,d=>0,f=>0} dfffffff0a000000 dfffffffffffffff0a00000000000000 dfffffffffffffff0a00000000000000 ffffffdf50000000 dfffffff0a000000 dfffffff0a000000 ffffffffffffffdf5000000000000000 dfffffff0a000000 ffffffdf50000000 - {e=>0,c=>0,a=>-57,b=>1,d=>0,f=>0} c7ffffff01000000 c7ffffffffffffff0100000000000000 c7ffffffffffffff0100000000000000 ffffffc780000000 c7ffffff01000000 c7ffffff01000000 ffffffffffffffc78000000000000000 c7ffffff01000000 ffffffc780000000 - {e=>0,c=>-1,a=>-10,b=>0,d=>1,f=>0} f6ffffff06000000 f6ffffffffffffff0600000000000000 f6ffffffffffffff0600000000000000 fffffff660000000 f6ffffff06000000 f6ffffff06000000 fffffffffffffff66000000000000000 f6ffffff06000000 fffffff660000000 - {e=>0,c=>-1,a=>52,b=>0,d=>0,f=>1} 3400000012000000 34000000000000001200000000000000 34000000000000001200000000000000 0000003448000000 3400000012000000 3400000012000000 00000000000000344800000000000000 3400000012000000 0000003448000000 - {e=>-1,c=>0,a=>127,b=>0,d=>0,f=>0} 7f00000008000000 7f000000000000000800000000000000 7f000000000000000800000000000000 0000007f10000000 7f00000008000000 7f00000008000000 000000000000007f1000000000000000 7f00000008000000 0000007f10000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>0,c=>-1,a=>-7,g=>0,b=>0,d=>0,f=>1} f9ffffff12000000 f9ffffffffffffff1200000000000000 f9ffffffffffffff1200000000000000 fffffff948000000 f9ffffff12000000 f9ffffff12000000 fffffffffffffff94800000000000000 f9ffffff12000000 fffffff948000000 - {e=>0,c=>0,a=>18,g=>-1,b=>1,d=>0,f=>1} 1200000031000000 12000000000000003100000000000000 12000000000000003100000000000000 000000128c000000 1200000031000000 1200000031000000 00000000000000128c00000000000000 1200000031000000 000000128c000000 - {e=>-1,c=>-1,a=>84,g=>0,b=>0,d=>1,f=>1} 540000001e000000 54000000000000001e00000000000000 54000000000000001e00000000000000 0000005478000000 540000001e000000 540000001e000000 00000000000000547800000000000000 540000001e000000 0000005478000000 - {e=>0,c=>-1,a=>21,g=>0,b=>0,d=>1,f=>0} 1500000006000000 15000000000000000600000000000000 15000000000000000600000000000000 0000001560000000 1500000006000000 1500000006000000 00000000000000156000000000000000 1500000006000000 0000001560000000 - {e=>-1,c=>-1,a=>-2,g=>-1,b=>1,d=>0,f=>1} feffffff3b000000 feffffffffffffff3b00000000000000 feffffffffffffff3b00000000000000 fffffffedc000000 feffffff3b000000 feffffff3b000000 fffffffffffffffedc00000000000000 feffffff3b000000 fffffffedc000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>11,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1} 0b00000059000000 0b000000000000005900000000000000 0b000000000000005900000000000000 0000000b9a000000 0b00000059000000 0b00000059000000 000000000000000b9a00000000000000 0b00000059000000 0000000b9a000000 - {e=>0,a=>-17,d=>0,c=>0,h=>1,b=>0,g=>0,f=>0} efffffff40000000 efffffffffffffff4000000000000000 efffffffffffffff4000000000000000 ffffffef02000000 efffffff40000000 efffffff40000000 ffffffffffffffef0200000000000000 efffffff40000000 ffffffef02000000 - {e=>-1,a=>2,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>0} 020000000f000000 02000000000000000f00000000000000 02000000000000000f00000000000000 00000002f0000000 020000000f000000 020000000f000000 0000000000000002f000000000000000 020000000f000000 00000002f0000000 - {e=>0,a=>6,d=>1,c=>-1,h=>0,b=>1,g=>-1,f=>1} 0600000037000000 06000000000000003700000000000000 06000000000000003700000000000000 00000006ec000000 0600000037000000 0600000037000000 0000000000000006ec00000000000000 0600000037000000 00000006ec000000 - {e=>0,a=>103,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>0} 6700000021000000 67000000000000002100000000000000 67000000000000002100000000000000 0000006784000000 6700000021000000 6700000021000000 00000000000000678400000000000000 6700000021000000 0000006784000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>-1,a=>-66,d=>0,c=>0,h=>0,b=>1,g=>0,f=>1,i=>-1} beffffff99000000 beffffffffffffff9900000000000000 beffffffffffffff9900000000000000 ffffffbe99000000 beffffff99000000 beffffff99000000 ffffffffffffffbe9900000000000000 beffffff99000000 ffffffbe99000000 - {e=>0,a=>-106,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>0} 96ffffff60000000 96ffffffffffffff6000000000000000 96ffffffffffffff6000000000000000 ffffff9606000000 96ffffff60000000 96ffffff60000000 ffffffffffffff960600000000000000 96ffffff60000000 ffffff9606000000 - {e=>-1,a=>-86,d=>0,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} aaffffff09000000 aaffffffffffffff0900000000000000 aaffffffffffffff0900000000000000 ffffffaa90000000 aaffffff09000000 aaffffff09000000 ffffffffffffffaa9000000000000000 aaffffff09000000 ffffffaa90000000 - {e=>-1,a=>-98,d=>0,c=>0,h=>0,b=>0,g=>0,f=>1,i=>0} 9effffff18000000 9effffffffffffff1800000000000000 9effffffffffffff1800000000000000 ffffff9e18000000 9effffff18000000 9effffff18000000 ffffffffffffff9e1800000000000000 9effffff18000000 ffffff9e18000000 - {e=>0,a=>40,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1,i=>0} 2800000051000000 28000000000000005100000000000000 28000000000000005100000000000000 000000288a000000 2800000051000000 2800000051000000 00000000000000288a00000000000000 2800000051000000 000000288a000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-49,d=>1,j=>205,c=>0,h=>0,b=>1,g=>0,f=>1,i=>-1} cfffffff9dcd0000 cfffffffffffffff9dcd000000000000 cfffffffffffffff9dcd000000000000 ffffffcfb9cd0000 cfffffff9dcd0000 cfffffff9dcd0000 ffffffffffffffcfb9cd000000000000 cfffffff9dcd0000 ffffffcfb9cd0000 - {e=>-1,a=>126,d=>0,j=>0,c=>-1,h=>1,b=>1,g=>-1,f=>0,i=>0} 7e0000006b000000 7e000000000000006b00000000000000 7e000000000000006b00000000000000 0000007ed6000000 7e0000006b000000 7e0000006b000000 000000000000007ed600000000000000 7e0000006b000000 0000007ed6000000 - {e=>0,a=>-31,d=>0,j=>105,c=>-1,h=>0,b=>1,g=>0,f=>0,i=>-1} e1ffffff83690000 e1ffffffffffffff8369000000000000 e1ffffffffffffff8369000000000000 ffffffe1c1690000 e1ffffff83690000 e1ffffff83690000 ffffffffffffffe1c169000000000000 e1ffffff83690000 ffffffe1c1690000 - {e=>-1,a=>-1,d=>1,j=>21,c=>-1,h=>0,b=>1,g=>-1,f=>0,i=>0} ffffffff2f150000 ffffffffffffffff2f15000000000000 ffffffffffffffff2f15000000000000 fffffffff4150000 ffffffff2f150000 ffffffff2f150000 fffffffffffffffff415000000000000 ffffffff2f150000 fffffffff4150000 - {e=>-1,a=>99,d=>0,j=>132,c=>0,h=>0,b=>0,g=>0,f=>1,i=>0} 6300000018840000 63000000000000001884000000000000 63000000000000001884000000000000 0000006318840000 6300000018840000 6300000018840000 00000000000000631884000000000000 6300000018840000 0000006318840000 = struct force_align1 { unsigned char a:1; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 - {a=>1} 01 01 01 80 01000000 01 80 01 80 = struct force_align1 { unsigned char a:1; unsigned char b:1; }; - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>0,b=>1} 02 02 02 40 02000000 02 40 02 40 - {a=>0,b=>1} 02 02 02 40 02000000 02 40 02 40 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; }; - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0,b=>1} 02 02 02 40 02000000 02 40 02 40 - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1,b=>1} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>1,b=>0} 01 01 01 80 01000000 01 80 01 80 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; unsigned char c:1; }; - {c=>1,a=>1,b=>0} 0101 0101 0101 8080 01010000 0101 8080 0101 8080 - {c=>1,a=>1,b=>1} 0301 0301 0301 c080 03010000 0301 c080 0301 c080 - {c=>0,a=>1,b=>1} 0300 0300 0300 c000 03000000 0300 c000 0300 c000 - {c=>0,a=>0,b=>0} 0000 0000 0000 0000 00000000 0000 0000 0000 0000 - {c=>0,a=>1,b=>0} 0100 0100 0100 8000 01000000 0100 8000 0100 8000 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; unsigned char c:1; unsigned int d; }; - {c=>0,a=>0,b=>1,d=>114} 0200000072000000 0200000072000000 0200000072000000 4000000000000072 0200000072000000 0200000072000000 4000000000000072 0200000072000000 4000000000000072 - {c=>0,a=>1,b=>0,d=>177} 01000000b1000000 01000000b1000000 01000000b1000000 80000000000000b1 01000000b1000000 01000000b1000000 80000000000000b1 01000000b1000000 80000000000000b1 - {c=>1,a=>1,b=>1,d=>163} 03010000a3000000 03010000a3000000 03010000a3000000 c0800000000000a3 03010000a3000000 03010000a3000000 c0800000000000a3 03010000a3000000 c0800000000000a3 - {c=>0,a=>0,b=>1,d=>180} 02000000b4000000 02000000b4000000 02000000b4000000 40000000000000b4 02000000b4000000 02000000b4000000 40000000000000b4 02000000b4000000 40000000000000b4 - {c=>0,a=>1,b=>0,d=>131} 0100000083000000 0100000083000000 0100000083000000 8000000000000083 0100000083000000 0100000083000000 8000000000000083 0100000083000000 8000000000000083 = struct force_align1 { char a; unsigned char b:1; }; - {a=>105,b=>1} 6901 6901 6901 6980 69010000 6901 6980 6901 6980 - {a=>-17,b=>1} ef01 ef01 ef01 ef80 ef010000 ef01 ef80 ef01 ef80 - {a=>-128,b=>1} 8001 8001 8001 8080 80010000 8001 8080 8001 8080 - {a=>35,b=>0} 2300 2300 2300 2300 23000000 2300 2300 2300 2300 - {a=>-120,b=>0} 8800 8800 8800 8800 88000000 8800 8800 8800 8800 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>87,b=>0} 5700 5700 5700 5700 57000000 5700 5700 5700 5700 - {c=>0,a=>12,b=>1} 0c01 0c01 0c01 0c80 0c010000 0c01 0c80 0c01 0c80 - {c=>0,a=>107,b=>0} 6b00 6b00 6b00 6b00 6b000000 6b00 6b00 6b00 6b00 - {c=>1,a=>-100,b=>0} 9c02 9c02 9c02 9c40 9c020000 9c02 9c40 9c02 9c40 - {c=>1,a=>-61,b=>0} c302 c302 c302 c340 c3020000 c302 c340 c302 c340 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>0,a=>-59,b=>0} c500 c500 c500 c500 c5000000 c500 c500 c500 c500 - {c=>0,a=>-128,b=>0} 8000 8000 8000 8000 80000000 8000 8000 8000 8000 - {c=>0,a=>-43,b=>1} d501 d501 d501 d580 d5010000 d501 d580 d501 d580 - {c=>0,a=>55,b=>0} 3700 3700 3700 3700 37000000 3700 3700 3700 3700 - {c=>0,a=>-27,b=>1} e501 e501 e501 e580 e5010000 e501 e580 e501 e580 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>-22,b=>1,d=>0} ea0300 ea0300 ea0300 eac000 ea030000 ea0300 eac000 ea0300 eac000 - {c=>1,a=>115,b=>1,d=>0} 730300 730300 730300 73c000 73030000 730300 73c000 730300 73c000 - {c=>1,a=>-2,b=>0,d=>0} fe0200 fe0200 fe0200 fe4000 fe020000 fe0200 fe4000 fe0200 fe4000 - {c=>0,a=>-40,b=>1,d=>0} d80100 d80100 d80100 d88000 d8010000 d80100 d88000 d80100 d88000 - {c=>1,a=>52,b=>0,d=>0} 340200 340200 340200 344000 34020000 340200 344000 340200 344000 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>84,c=>0,a=>-2,b=>1,d=>1} fe01010054000000 fe01010054000000 fe01010054000000 fe80800000000054 fe01010054000000 fe01010054000000 fe80800000000054 fe01010054000000 fe80800000000054 - {e=>26,c=>1,a=>-22,b=>0,d=>1} ea0201001a000000 ea0201001a000000 ea0201001a000000 ea4080000000001a ea0201001a000000 ea0201001a000000 ea4080000000001a ea0201001a000000 ea4080000000001a - {e=>229,c=>0,a=>-4,b=>1,d=>0} fc010000e5000000 fc010000e5000000 fc010000e5000000 fc800000000000e5 fc010000e5000000 fc010000e5000000 fc800000000000e5 fc010000e5000000 fc800000000000e5 - {e=>140,c=>0,a=>-121,b=>0,d=>1} 870001008c000000 870001008c000000 870001008c000000 870080000000008c 870001008c000000 870001008c000000 870080000000008c 870001008c000000 870080000000008c - {e=>135,c=>0,a=>23,b=>0,d=>0} 1700000087000000 1700000087000000 1700000087000000 1700000000000087 1700000087000000 1700000087000000 1700000000000087 1700000087000000 1700000000000087 = struct force_align1 { short a; unsigned char b:1; }; - {a=>108,b=>1} 6c000100 6c000100 6c000100 006c8000 6c000100 6c000100 006c8000 6c000100 006c8000 - {a=>-114,b=>0} 8eff0000 8eff0000 8eff0000 ff8e0000 8eff0000 8eff0000 ff8e0000 8eff0000 ff8e0000 - {a=>64,b=>1} 40000100 40000100 40000100 00408000 40000100 40000100 00408000 40000100 00408000 - {a=>19,b=>1} 13000100 13000100 13000100 00138000 13000100 13000100 00138000 13000100 00138000 - {a=>-123,b=>0} 85ff0000 85ff0000 85ff0000 ff850000 85ff0000 85ff0000 ff850000 85ff0000 ff850000 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>-11,b=>1} f5ff0100 f5ff0100 f5ff0100 fff58000 f5ff0100 f5ff0100 fff58000 f5ff0100 fff58000 - {c=>1,a=>90,b=>0} 5a000200 5a000200 5a000200 005a4000 5a000200 5a000200 005a4000 5a000200 005a4000 - {c=>0,a=>107,b=>0} 6b000000 6b000000 6b000000 006b0000 6b000000 6b000000 006b0000 6b000000 006b0000 - {c=>0,a=>-75,b=>1} b5ff0100 b5ff0100 b5ff0100 ffb58000 b5ff0100 b5ff0100 ffb58000 b5ff0100 ffb58000 - {c=>1,a=>-80,b=>0} b0ff0200 b0ff0200 b0ff0200 ffb04000 b0ff0200 b0ff0200 ffb04000 b0ff0200 ffb04000 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>1,a=>105,b=>1} 69000300 69000300 69000300 0069c000 69000300 69000300 0069c000 69000300 0069c000 - {c=>0,a=>49,b=>1} 31000100 31000100 31000100 00318000 31000100 31000100 00318000 31000100 00318000 - {c=>1,a=>37,b=>0} 25000200 25000200 25000200 00254000 25000200 25000200 00254000 25000200 00254000 - {c=>0,a=>-82,b=>0} aeff0000 aeff0000 aeff0000 ffae0000 aeff0000 aeff0000 ffae0000 aeff0000 ffae0000 - {c=>1,a=>-88,b=>1} a8ff0300 a8ff0300 a8ff0300 ffa8c000 a8ff0300 a8ff0300 ffa8c000 a8ff0300 ffa8c000 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>0,a=>-121,b=>1,d=>0} 87ff0100 87ff0100 87ff0100 ff878000 87ff0100 87ff0100 ff878000 87ff0100 ff878000 - {c=>1,a=>80,b=>0,d=>1} 50000201 50000201 50000201 00504080 50000201 50000201 00504080 50000201 00504080 - {c=>0,a=>-79,b=>1,d=>1} b1ff0101 b1ff0101 b1ff0101 ffb18080 b1ff0101 b1ff0101 ffb18080 b1ff0101 ffb18080 - {c=>0,a=>106,b=>1,d=>0} 6a000100 6a000100 6a000100 006a8000 6a000100 6a000100 006a8000 6a000100 006a8000 - {c=>1,a=>113,b=>0,d=>1} 71000201 71000201 71000201 00714080 71000201 71000201 00714080 71000201 00714080 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>56,c=>0,a=>80,b=>0,d=>0} 5000000038000000 5000000038000000 5000000038000000 0050000000000038 5000000038000000 5000000038000000 0050000000000038 5000000038000000 0050000000000038 - {e=>189,c=>1,a=>6,b=>1,d=>1} 06000301bd000000 06000301bd000000 06000301bd000000 0006c080000000bd 06000301bd000000 06000301bd000000 0006c080000000bd 06000301bd000000 0006c080000000bd - {e=>198,c=>1,a=>-106,b=>0,d=>0} 96ff0200c6000000 96ff0200c6000000 96ff0200c6000000 ff964000000000c6 96ff0200c6000000 96ff0200c6000000 ff964000000000c6 96ff0200c6000000 ff964000000000c6 - {e=>167,c=>1,a=>-17,b=>1,d=>0} efff0300a7000000 efff0300a7000000 efff0300a7000000 ffefc000000000a7 efff0300a7000000 efff0300a7000000 ffefc000000000a7 efff0300a7000000 ffefc000000000a7 - {e=>89,c=>0,a=>-78,b=>1,d=>0} b2ff010059000000 b2ff010059000000 b2ff010059000000 ffb2800000000059 b2ff010059000000 b2ff010059000000 ffb2800000000059 b2ff010059000000 ffb2800000000059 = struct force_align1 { int a; unsigned char b:1; }; - {a=>19,b=>1} 1300000001000000 1300000001000000 1300000001000000 0000001380000000 1300000001000000 1300000001000000 0000001380000000 1300000001000000 0000001380000000 - {a=>79,b=>0} 4f00000000000000 4f00000000000000 4f00000000000000 0000004f00000000 4f00000000000000 4f00000000000000 0000004f00000000 4f00000000000000 0000004f00000000 - {a=>-101,b=>1} 9bffffff01000000 9bffffff01000000 9bffffff01000000 ffffff9b80000000 9bffffff01000000 9bffffff01000000 ffffff9b80000000 9bffffff01000000 ffffff9b80000000 - {a=>11,b=>1} 0b00000001000000 0b00000001000000 0b00000001000000 0000000b80000000 0b00000001000000 0b00000001000000 0000000b80000000 0b00000001000000 0000000b80000000 - {a=>79,b=>0} 4f00000000000000 4f00000000000000 4f00000000000000 0000004f00000000 4f00000000000000 4f00000000000000 0000004f00000000 4f00000000000000 0000004f00000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-25,b=>0} e7ffffff02000000 e7ffffff02000000 e7ffffff02000000 ffffffe740000000 e7ffffff02000000 e7ffffff02000000 ffffffe740000000 e7ffffff02000000 ffffffe740000000 - {c=>1,a=>-98,b=>0} 9effffff02000000 9effffff02000000 9effffff02000000 ffffff9e40000000 9effffff02000000 9effffff02000000 ffffff9e40000000 9effffff02000000 ffffff9e40000000 - {c=>0,a=>-118,b=>0} 8affffff00000000 8affffff00000000 8affffff00000000 ffffff8a00000000 8affffff00000000 8affffff00000000 ffffff8a00000000 8affffff00000000 ffffff8a00000000 - {c=>1,a=>-46,b=>1} d2ffffff03000000 d2ffffff03000000 d2ffffff03000000 ffffffd2c0000000 d2ffffff03000000 d2ffffff03000000 ffffffd2c0000000 d2ffffff03000000 ffffffd2c0000000 - {c=>0,a=>92,b=>0} 5c00000000000000 5c00000000000000 5c00000000000000 0000005c00000000 5c00000000000000 5c00000000000000 0000005c00000000 5c00000000000000 0000005c00000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>0,a=>27,b=>1} 1b00000001000000 1b00000001000000 1b00000001000000 0000001b80000000 1b00000001000000 1b00000001000000 0000001b80000000 1b00000001000000 0000001b80000000 - {c=>1,a=>71,b=>1} 4700000003000000 4700000003000000 4700000003000000 00000047c0000000 4700000003000000 4700000003000000 00000047c0000000 4700000003000000 00000047c0000000 - {c=>0,a=>53,b=>0} 3500000000000000 3500000000000000 3500000000000000 0000003500000000 3500000000000000 3500000000000000 0000003500000000 3500000000000000 0000003500000000 - {c=>0,a=>-126,b=>1} 82ffffff01000000 82ffffff01000000 82ffffff01000000 ffffff8280000000 82ffffff01000000 82ffffff01000000 ffffff8280000000 82ffffff01000000 ffffff8280000000 - {c=>0,a=>-59,b=>1} c5ffffff01000000 c5ffffff01000000 c5ffffff01000000 ffffffc580000000 c5ffffff01000000 c5ffffff01000000 ffffffc580000000 c5ffffff01000000 ffffffc580000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>49,b=>1,d=>0} 3100000003000000 3100000003000000 3100000003000000 00000031c0000000 3100000003000000 3100000003000000 00000031c0000000 3100000003000000 00000031c0000000 - {c=>1,a=>-97,b=>0,d=>0} 9fffffff02000000 9fffffff02000000 9fffffff02000000 ffffff9f40000000 9fffffff02000000 9fffffff02000000 ffffff9f40000000 9fffffff02000000 ffffff9f40000000 - {c=>1,a=>114,b=>1,d=>1} 7200000003010000 7200000003010000 7200000003010000 00000072c0800000 7200000003010000 7200000003010000 00000072c0800000 7200000003010000 00000072c0800000 - {c=>0,a=>-38,b=>1,d=>0} daffffff01000000 daffffff01000000 daffffff01000000 ffffffda80000000 daffffff01000000 daffffff01000000 ffffffda80000000 daffffff01000000 ffffffda80000000 - {c=>0,a=>-74,b=>0,d=>0} b6ffffff00000000 b6ffffff00000000 b6ffffff00000000 ffffffb600000000 b6ffffff00000000 b6ffffff00000000 ffffffb600000000 b6ffffff00000000 ffffffb600000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>174,c=>0,a=>102,b=>0,d=>1} 6600000000010000ae000000 6600000000010000ae000000 6600000000010000ae000000 0000006600800000000000ae 6600000000010000ae000000 6600000000010000ae000000 0000006600800000000000ae 6600000000010000ae000000 0000006600800000000000ae - {e=>77,c=>1,a=>85,b=>0,d=>0} 55000000020000004d000000 55000000020000004d000000 55000000020000004d000000 00000055400000000000004d 55000000020000004d000000 55000000020000004d000000 00000055400000000000004d 55000000020000004d000000 00000055400000000000004d - {e=>97,c=>1,a=>-95,b=>0,d=>1} a1ffffff0201000061000000 a1ffffff0201000061000000 a1ffffff0201000061000000 ffffffa14080000000000061 a1ffffff0201000061000000 a1ffffff0201000061000000 ffffffa14080000000000061 a1ffffff0201000061000000 ffffffa14080000000000061 - {e=>21,c=>1,a=>-30,b=>0,d=>1} e2ffffff0201000015000000 e2ffffff0201000015000000 e2ffffff0201000015000000 ffffffe24080000000000015 e2ffffff0201000015000000 e2ffffff0201000015000000 ffffffe24080000000000015 e2ffffff0201000015000000 ffffffe24080000000000015 - {e=>169,c=>0,a=>-9,b=>1,d=>0} f7ffffff01000000a9000000 f7ffffff01000000a9000000 f7ffffff01000000a9000000 fffffff780000000000000a9 f7ffffff01000000a9000000 f7ffffff01000000a9000000 fffffff780000000000000a9 f7ffffff01000000a9000000 fffffff780000000000000a9 = struct force_align1 { long a; unsigned char b:1; }; - {a=>67,b=>0} 4300000000000000 43000000000000000000000000000000 43000000000000000000000000000000 0000004300000000 4300000000000000 4300000000000000 00000000000000430000000000000000 4300000000000000 0000004300000000 - {a=>122,b=>0} 7a00000000000000 7a000000000000000000000000000000 7a000000000000000000000000000000 0000007a00000000 7a00000000000000 7a00000000000000 000000000000007a0000000000000000 7a00000000000000 0000007a00000000 - {a=>104,b=>0} 6800000000000000 68000000000000000000000000000000 68000000000000000000000000000000 0000006800000000 6800000000000000 6800000000000000 00000000000000680000000000000000 6800000000000000 0000006800000000 - {a=>-99,b=>0} 9dffffff00000000 9dffffffffffffff0000000000000000 9dffffffffffffff0000000000000000 ffffff9d00000000 9dffffff00000000 9dffffff00000000 ffffffffffffff9d0000000000000000 9dffffff00000000 ffffff9d00000000 - {a=>-11,b=>1} f5ffffff01000000 f5ffffffffffffff0100000000000000 f5ffffffffffffff0100000000000000 fffffff580000000 f5ffffff01000000 f5ffffff01000000 fffffffffffffff58000000000000000 f5ffffff01000000 fffffff580000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-95,b=>0} a1ffffff02000000 a1ffffffffffffff0200000000000000 a1ffffffffffffff0200000000000000 ffffffa140000000 a1ffffff02000000 a1ffffff02000000 ffffffffffffffa14000000000000000 a1ffffff02000000 ffffffa140000000 - {c=>0,a=>74,b=>1} 4a00000001000000 4a000000000000000100000000000000 4a000000000000000100000000000000 0000004a80000000 4a00000001000000 4a00000001000000 000000000000004a8000000000000000 4a00000001000000 0000004a80000000 - {c=>0,a=>31,b=>1} 1f00000001000000 1f000000000000000100000000000000 1f000000000000000100000000000000 0000001f80000000 1f00000001000000 1f00000001000000 000000000000001f8000000000000000 1f00000001000000 0000001f80000000 - {c=>0,a=>-31,b=>1} e1ffffff01000000 e1ffffffffffffff0100000000000000 e1ffffffffffffff0100000000000000 ffffffe180000000 e1ffffff01000000 e1ffffff01000000 ffffffffffffffe18000000000000000 e1ffffff01000000 ffffffe180000000 - {c=>0,a=>47,b=>1} 2f00000001000000 2f000000000000000100000000000000 2f000000000000000100000000000000 0000002f80000000 2f00000001000000 2f00000001000000 000000000000002f8000000000000000 2f00000001000000 0000002f80000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>1,a=>-52,b=>0} ccffffff02000000 ccffffffffffffff0200000000000000 ccffffffffffffff0200000000000000 ffffffcc40000000 ccffffff02000000 ccffffff02000000 ffffffffffffffcc4000000000000000 ccffffff02000000 ffffffcc40000000 - {c=>1,a=>9,b=>0} 0900000002000000 09000000000000000200000000000000 09000000000000000200000000000000 0000000940000000 0900000002000000 0900000002000000 00000000000000094000000000000000 0900000002000000 0000000940000000 - {c=>1,a=>9,b=>1} 0900000003000000 09000000000000000300000000000000 09000000000000000300000000000000 00000009c0000000 0900000003000000 0900000003000000 0000000000000009c000000000000000 0900000003000000 00000009c0000000 - {c=>1,a=>32,b=>1} 2000000003000000 20000000000000000300000000000000 20000000000000000300000000000000 00000020c0000000 2000000003000000 2000000003000000 0000000000000020c000000000000000 2000000003000000 00000020c0000000 - {c=>1,a=>-30,b=>0} e2ffffff02000000 e2ffffffffffffff0200000000000000 e2ffffffffffffff0200000000000000 ffffffe240000000 e2ffffff02000000 e2ffffff02000000 ffffffffffffffe24000000000000000 e2ffffff02000000 ffffffe240000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>-45,b=>1,d=>0} d3ffffff03000000 d3ffffffffffffff0300000000000000 d3ffffffffffffff0300000000000000 ffffffd3c0000000 d3ffffff03000000 d3ffffff03000000 ffffffffffffffd3c000000000000000 d3ffffff03000000 ffffffd3c0000000 - {c=>0,a=>44,b=>0,d=>0} 2c00000000000000 2c000000000000000000000000000000 2c000000000000000000000000000000 0000002c00000000 2c00000000000000 2c00000000000000 000000000000002c0000000000000000 2c00000000000000 0000002c00000000 - {c=>1,a=>88,b=>1,d=>1} 5800000003010000 58000000000000000301000000000000 58000000000000000301000000000000 00000058c0800000 5800000003010000 5800000003010000 0000000000000058c080000000000000 5800000003010000 00000058c0800000 - {c=>1,a=>99,b=>0,d=>0} 6300000002000000 63000000000000000200000000000000 63000000000000000200000000000000 0000006340000000 6300000002000000 6300000002000000 00000000000000634000000000000000 6300000002000000 0000006340000000 - {c=>1,a=>94,b=>1,d=>0} 5e00000003000000 5e000000000000000300000000000000 5e000000000000000300000000000000 0000005ec0000000 5e00000003000000 5e00000003000000 000000000000005ec000000000000000 5e00000003000000 0000005ec0000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>84,c=>1,a=>-57,b=>0,d=>1} c7ffffff0201000054000000 c7ffffffffffffff0201000054000000 c7ffffffffffffff0201000054000000 ffffffc74080000000000054 c7ffffff0201000054000000 c7ffffff0201000054000000 ffffffffffffffc74080000000000054 c7ffffff0201000054000000 ffffffc74080000000000054 - {e=>202,c=>0,a=>-67,b=>0,d=>1} bdffffff00010000ca000000 bdffffffffffffff00010000ca000000 bdffffffffffffff00010000ca000000 ffffffbd00800000000000ca bdffffff00010000ca000000 bdffffff00010000ca000000 ffffffffffffffbd00800000000000ca bdffffff00010000ca000000 ffffffbd00800000000000ca - {e=>108,c=>0,a=>108,b=>1,d=>0} 6c000000010000006c000000 6c00000000000000010000006c000000 6c00000000000000010000006c000000 0000006c800000000000006c 6c000000010000006c000000 6c000000010000006c000000 000000000000006c800000000000006c 6c000000010000006c000000 0000006c800000000000006c - {e=>5,c=>0,a=>51,b=>1,d=>0} 330000000100000005000000 33000000000000000100000005000000 33000000000000000100000005000000 000000338000000000000005 330000000100000005000000 330000000100000005000000 00000000000000338000000000000005 330000000100000005000000 000000338000000000000005 - {e=>228,c=>0,a=>-15,b=>0,d=>0} f1ffffff00000000e4000000 f1ffffffffffffff00000000e4000000 f1ffffffffffffff00000000e4000000 fffffff100000000000000e4 f1ffffff00000000e4000000 f1ffffff00000000e4000000 fffffffffffffff100000000000000e4 f1ffffff00000000e4000000 fffffff100000000000000e4 = struct force_align2 { unsigned char a:2; }; - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 = struct force_align2 { unsigned char a:2; unsigned char b:2; }; - {a=>0,b=>3} 0c 0c 0c 30 0c000000 0c 30 0c 30 - {a=>0,b=>1} 04 04 04 10 04000000 04 10 04 10 - {a=>2,b=>3} 0e 0e 0e b0 0e000000 0e b0 0e b0 - {a=>2,b=>1} 06 06 06 90 06000000 06 90 06 90 - {a=>3,b=>3} 0f 0f 0f f0 0f000000 0f f0 0f f0 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; }; - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0,b=>1} 04 04 04 10 04000000 04 10 04 10 - {a=>1,b=>3} 0d 0d 0d 70 0d000000 0d 70 0d 70 - {a=>2,b=>0} 02 02 02 80 02000000 02 80 02 80 - {a=>0,b=>2} 08 08 08 20 08000000 08 20 08 20 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; unsigned char c:2; }; - {c=>1,a=>1,b=>3} 0d01 0d01 0d01 7040 0d010000 0d01 7040 0d01 7040 - {c=>2,a=>2,b=>1} 0602 0602 0602 9080 06020000 0602 9080 0602 9080 - {c=>1,a=>2,b=>0} 0201 0201 0201 8040 02010000 0201 8040 0201 8040 - {c=>2,a=>3,b=>3} 0f02 0f02 0f02 f080 0f020000 0f02 f080 0f02 f080 - {c=>0,a=>1,b=>3} 0d00 0d00 0d00 7000 0d000000 0d00 7000 0d00 7000 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; unsigned char c:2; unsigned short d; }; - {c=>0,a=>1,b=>0,d=>112} 01007000 01007000 01007000 40000070 01007000 01007000 40000070 01007000 40000070 - {c=>0,a=>3,b=>3,d=>128} 0f008000 0f008000 0f008000 f0000080 0f008000 0f008000 f0000080 0f008000 f0000080 - {c=>1,a=>2,b=>0,d=>190} 0201be00 0201be00 0201be00 804000be 0201be00 0201be00 804000be 0201be00 804000be - {c=>0,a=>3,b=>2,d=>63} 0b003f00 0b003f00 0b003f00 e000003f 0b003f00 0b003f00 e000003f 0b003f00 e000003f - {c=>2,a=>2,b=>2,d=>241} 0a02f100 0a02f100 0a02f100 a08000f1 0a02f100 0a02f100 a08000f1 0a02f100 a08000f1 = struct force_align2 { char a; unsigned char b:2; }; - {a=>74,b=>1} 4a01 4a01 4a01 4a40 4a010000 4a01 4a40 4a01 4a40 - {a=>-7,b=>1} f901 f901 f901 f940 f9010000 f901 f940 f901 f940 - {a=>102,b=>1} 6601 6601 6601 6640 66010000 6601 6640 6601 6640 - {a=>10,b=>3} 0a03 0a03 0a03 0ac0 0a030000 0a03 0ac0 0a03 0ac0 - {a=>-7,b=>2} f902 f902 f902 f980 f9020000 f902 f980 f902 f980 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; }; - {c=>3,a=>7,b=>1} 070d 070d 070d 0770 070d0000 070d 0770 070d 0770 - {c=>3,a=>50,b=>0} 320c 320c 320c 3230 320c0000 320c 3230 320c 3230 - {c=>2,a=>-125,b=>0} 8308 8308 8308 8320 83080000 8308 8320 8308 8320 - {c=>2,a=>-32,b=>0} e008 e008 e008 e020 e0080000 e008 e020 e008 e020 - {c=>1,a=>68,b=>0} 4404 4404 4404 4410 44040000 4404 4410 4404 4410 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>2,a=>-127,b=>0} 8108 8108 8108 8120 81080000 8108 8120 8108 8120 - {c=>1,a=>-27,b=>0} e504 e504 e504 e510 e5040000 e504 e510 e504 e510 - {c=>2,a=>30,b=>1} 1e09 1e09 1e09 1e60 1e090000 1e09 1e60 1e09 1e60 - {c=>0,a=>-25,b=>1} e701 e701 e701 e740 e7010000 e701 e740 e701 e740 - {c=>2,a=>-15,b=>1} f109 f109 f109 f160 f1090000 f109 f160 f109 f160 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>1,a=>75,b=>1,d=>2} 4b0502 4b0502 4b0502 4b5080 4b050200 4b0502 4b5080 4b0502 4b5080 - {c=>1,a=>18,b=>1,d=>3} 120503 120503 120503 1250c0 12050300 120503 1250c0 120503 1250c0 - {c=>2,a=>-39,b=>2,d=>0} d90a00 d90a00 d90a00 d9a000 d90a0000 d90a00 d9a000 d90a00 d9a000 - {c=>3,a=>-91,b=>2,d=>0} a50e00 a50e00 a50e00 a5b000 a50e0000 a50e00 a5b000 a50e00 a5b000 - {c=>1,a=>60,b=>1,d=>0} 3c0500 3c0500 3c0500 3c5000 3c050000 3c0500 3c5000 3c0500 3c5000 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>11,c=>2,a=>39,b=>0,d=>2} 270802000b00 270802000b00 270802000b00 27208000000b 270802000b000000 270802000b00 27208000000b 270802000b00 27208000000b - {e=>219,c=>0,a=>42,b=>3,d=>1} 2a030100db00 2a030100db00 2a030100db00 2ac0400000db 2a030100db000000 2a030100db00 2ac0400000db 2a030100db00 2ac0400000db - {e=>154,c=>0,a=>-14,b=>1,d=>1} f20101009a00 f20101009a00 f20101009a00 f2404000009a f20101009a000000 f20101009a00 f2404000009a f20101009a00 f2404000009a - {e=>86,c=>1,a=>20,b=>3,d=>1} 140701005600 140701005600 140701005600 14d040000056 1407010056000000 140701005600 14d040000056 140701005600 14d040000056 - {e=>7,c=>0,a=>-109,b=>1,d=>1} 930101000700 930101000700 930101000700 934040000007 9301010007000000 930101000700 934040000007 930101000700 934040000007 = struct force_align2 { short a; unsigned char b:2; }; - {a=>-77,b=>0} b3ff0000 b3ff0000 b3ff0000 ffb30000 b3ff0000 b3ff0000 ffb30000 b3ff0000 ffb30000 - {a=>32,b=>1} 20000100 20000100 20000100 00204000 20000100 20000100 00204000 20000100 00204000 - {a=>-116,b=>3} 8cff0300 8cff0300 8cff0300 ff8cc000 8cff0300 8cff0300 ff8cc000 8cff0300 ff8cc000 - {a=>127,b=>2} 7f000200 7f000200 7f000200 007f8000 7f000200 7f000200 007f8000 7f000200 007f8000 - {a=>47,b=>2} 2f000200 2f000200 2f000200 002f8000 2f000200 2f000200 002f8000 2f000200 002f8000 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; }; - {c=>1,a=>-56,b=>2} c8ff0600 c8ff0600 c8ff0600 ffc89000 c8ff0600 c8ff0600 ffc89000 c8ff0600 ffc89000 - {c=>1,a=>96,b=>0} 60000400 60000400 60000400 00601000 60000400 60000400 00601000 60000400 00601000 - {c=>1,a=>-89,b=>1} a7ff0500 a7ff0500 a7ff0500 ffa75000 a7ff0500 a7ff0500 ffa75000 a7ff0500 ffa75000 - {c=>1,a=>-121,b=>1} 87ff0500 87ff0500 87ff0500 ff875000 87ff0500 87ff0500 ff875000 87ff0500 ff875000 - {c=>2,a=>80,b=>3} 50000b00 50000b00 50000b00 0050e000 50000b00 50000b00 0050e000 50000b00 0050e000 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>0,a=>-50,b=>1} ceff0100 ceff0100 ceff0100 ffce4000 ceff0100 ceff0100 ffce4000 ceff0100 ffce4000 - {c=>3,a=>26,b=>0} 1a000c00 1a000c00 1a000c00 001a3000 1a000c00 1a000c00 001a3000 1a000c00 001a3000 - {c=>2,a=>-116,b=>2} 8cff0a00 8cff0a00 8cff0a00 ff8ca000 8cff0a00 8cff0a00 ff8ca000 8cff0a00 ff8ca000 - {c=>3,a=>-72,b=>2} b8ff0e00 b8ff0e00 b8ff0e00 ffb8b000 b8ff0e00 b8ff0e00 ffb8b000 b8ff0e00 ffb8b000 - {c=>1,a=>87,b=>2} 57000600 57000600 57000600 00579000 57000600 57000600 00579000 57000600 00579000 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>0,a=>-94,b=>1,d=>3} a2ff0103 a2ff0103 a2ff0103 ffa240c0 a2ff0103 a2ff0103 ffa240c0 a2ff0103 ffa240c0 - {c=>0,a=>-117,b=>0,d=>1} 8bff0001 8bff0001 8bff0001 ff8b0040 8bff0001 8bff0001 ff8b0040 8bff0001 ff8b0040 - {c=>2,a=>18,b=>2,d=>2} 12000a02 12000a02 12000a02 0012a080 12000a02 12000a02 0012a080 12000a02 0012a080 - {c=>3,a=>-15,b=>0,d=>0} f1ff0c00 f1ff0c00 f1ff0c00 fff13000 f1ff0c00 f1ff0c00 fff13000 f1ff0c00 fff13000 - {c=>0,a=>-39,b=>2,d=>3} d9ff0203 d9ff0203 d9ff0203 ffd980c0 d9ff0203 d9ff0203 ffd980c0 d9ff0203 ffd980c0 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>213,c=>2,a=>98,b=>3,d=>0} 62000b00d500 62000b00d500 62000b00d500 0062e00000d5 62000b00d5000000 62000b00d500 0062e00000d5 62000b00d500 0062e00000d5 - {e=>183,c=>3,a=>104,b=>2,d=>0} 68000e00b700 68000e00b700 68000e00b700 0068b00000b7 68000e00b7000000 68000e00b700 0068b00000b7 68000e00b700 0068b00000b7 - {e=>152,c=>3,a=>68,b=>3,d=>1} 44000f019800 44000f019800 44000f019800 0044f0400098 44000f0198000000 44000f019800 0044f0400098 44000f019800 0044f0400098 - {e=>117,c=>0,a=>83,b=>2,d=>1} 530002017500 530002017500 530002017500 005380400075 5300020175000000 530002017500 005380400075 530002017500 005380400075 - {e=>183,c=>0,a=>-82,b=>3,d=>3} aeff0303b700 aeff0303b700 aeff0303b700 ffaec0c000b7 aeff0303b7000000 aeff0303b700 ffaec0c000b7 aeff0303b700 ffaec0c000b7 = struct force_align2 { int a; unsigned char b:2; }; - {a=>-20,b=>3} ecffffff03000000 ecffffff03000000 ecffffff03000000 ffffffecc0000000 ecffffff03000000 ecffffff03000000 ffffffecc0000000 ecffffff03000000 ffffffecc0000000 - {a=>123,b=>1} 7b00000001000000 7b00000001000000 7b00000001000000 0000007b40000000 7b00000001000000 7b00000001000000 0000007b40000000 7b00000001000000 0000007b40000000 - {a=>-106,b=>0} 96ffffff00000000 96ffffff00000000 96ffffff00000000 ffffff9600000000 96ffffff00000000 96ffffff00000000 ffffff9600000000 96ffffff00000000 ffffff9600000000 - {a=>6,b=>3} 0600000003000000 0600000003000000 0600000003000000 00000006c0000000 0600000003000000 0600000003000000 00000006c0000000 0600000003000000 00000006c0000000 - {a=>60,b=>0} 3c00000000000000 3c00000000000000 3c00000000000000 0000003c00000000 3c00000000000000 3c00000000000000 0000003c00000000 3c00000000000000 0000003c00000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; }; - {c=>2,a=>55,b=>0} 3700000008000000 3700000008000000 3700000008000000 0000003720000000 3700000008000000 3700000008000000 0000003720000000 3700000008000000 0000003720000000 - {c=>2,a=>-128,b=>3} 80ffffff0b000000 80ffffff0b000000 80ffffff0b000000 ffffff80e0000000 80ffffff0b000000 80ffffff0b000000 ffffff80e0000000 80ffffff0b000000 ffffff80e0000000 - {c=>3,a=>-119,b=>3} 89ffffff0f000000 89ffffff0f000000 89ffffff0f000000 ffffff89f0000000 89ffffff0f000000 89ffffff0f000000 ffffff89f0000000 89ffffff0f000000 ffffff89f0000000 - {c=>2,a=>46,b=>0} 2e00000008000000 2e00000008000000 2e00000008000000 0000002e20000000 2e00000008000000 2e00000008000000 0000002e20000000 2e00000008000000 0000002e20000000 - {c=>2,a=>-13,b=>2} f3ffffff0a000000 f3ffffff0a000000 f3ffffff0a000000 fffffff3a0000000 f3ffffff0a000000 f3ffffff0a000000 fffffff3a0000000 f3ffffff0a000000 fffffff3a0000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>3,a=>-72,b=>3} b8ffffff0f000000 b8ffffff0f000000 b8ffffff0f000000 ffffffb8f0000000 b8ffffff0f000000 b8ffffff0f000000 ffffffb8f0000000 b8ffffff0f000000 ffffffb8f0000000 - {c=>3,a=>31,b=>0} 1f0000000c000000 1f0000000c000000 1f0000000c000000 0000001f30000000 1f0000000c000000 1f0000000c000000 0000001f30000000 1f0000000c000000 0000001f30000000 - {c=>0,a=>105,b=>1} 6900000001000000 6900000001000000 6900000001000000 0000006940000000 6900000001000000 6900000001000000 0000006940000000 6900000001000000 0000006940000000 - {c=>2,a=>74,b=>1} 4a00000009000000 4a00000009000000 4a00000009000000 0000004a60000000 4a00000009000000 4a00000009000000 0000004a60000000 4a00000009000000 0000004a60000000 - {c=>0,a=>12,b=>1} 0c00000001000000 0c00000001000000 0c00000001000000 0000000c40000000 0c00000001000000 0c00000001000000 0000000c40000000 0c00000001000000 0000000c40000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>2,a=>-93,b=>0,d=>3} a3ffffff08030000 a3ffffff08030000 a3ffffff08030000 ffffffa320c00000 a3ffffff08030000 a3ffffff08030000 ffffffa320c00000 a3ffffff08030000 ffffffa320c00000 - {c=>0,a=>-88,b=>2,d=>0} a8ffffff02000000 a8ffffff02000000 a8ffffff02000000 ffffffa880000000 a8ffffff02000000 a8ffffff02000000 ffffffa880000000 a8ffffff02000000 ffffffa880000000 - {c=>0,a=>89,b=>3,d=>0} 5900000003000000 5900000003000000 5900000003000000 00000059c0000000 5900000003000000 5900000003000000 00000059c0000000 5900000003000000 00000059c0000000 - {c=>1,a=>-61,b=>2,d=>1} c3ffffff06010000 c3ffffff06010000 c3ffffff06010000 ffffffc390400000 c3ffffff06010000 c3ffffff06010000 ffffffc390400000 c3ffffff06010000 ffffffc390400000 - {c=>0,a=>-21,b=>0,d=>1} ebffffff00010000 ebffffff00010000 ebffffff00010000 ffffffeb00400000 ebffffff00010000 ebffffff00010000 ffffffeb00400000 ebffffff00010000 ffffffeb00400000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>23,c=>0,a=>-79,b=>1,d=>3} b1ffffff01031700 b1ffffff01031700 b1ffffff01031700 ffffffb140c00017 b1ffffff01031700 b1ffffff01031700 ffffffb140c00017 b1ffffff01031700 ffffffb140c00017 - {e=>106,c=>2,a=>-36,b=>0,d=>0} dcffffff08006a00 dcffffff08006a00 dcffffff08006a00 ffffffdc2000006a dcffffff08006a00 dcffffff08006a00 ffffffdc2000006a dcffffff08006a00 ffffffdc2000006a - {e=>139,c=>3,a=>114,b=>3,d=>3} 720000000f038b00 720000000f038b00 720000000f038b00 00000072f0c0008b 720000000f038b00 720000000f038b00 00000072f0c0008b 720000000f038b00 00000072f0c0008b - {e=>151,c=>2,a=>-110,b=>0,d=>3} 92ffffff08039700 92ffffff08039700 92ffffff08039700 ffffff9220c00097 92ffffff08039700 92ffffff08039700 ffffff9220c00097 92ffffff08039700 ffffff9220c00097 - {e=>15,c=>1,a=>-72,b=>0,d=>3} b8ffffff04030f00 b8ffffff04030f00 b8ffffff04030f00 ffffffb810c0000f b8ffffff04030f00 b8ffffff04030f00 ffffffb810c0000f b8ffffff04030f00 ffffffb810c0000f = struct force_align2 { long a; unsigned char b:2; }; - {a=>-86,b=>1} aaffffff01000000 aaffffffffffffff0100000000000000 aaffffffffffffff0100000000000000 ffffffaa40000000 aaffffff01000000 aaffffff01000000 ffffffffffffffaa4000000000000000 aaffffff01000000 ffffffaa40000000 - {a=>-16,b=>0} f0ffffff00000000 f0ffffffffffffff0000000000000000 f0ffffffffffffff0000000000000000 fffffff000000000 f0ffffff00000000 f0ffffff00000000 fffffffffffffff00000000000000000 f0ffffff00000000 fffffff000000000 - {a=>-65,b=>2} bfffffff02000000 bfffffffffffffff0200000000000000 bfffffffffffffff0200000000000000 ffffffbf80000000 bfffffff02000000 bfffffff02000000 ffffffffffffffbf8000000000000000 bfffffff02000000 ffffffbf80000000 - {a=>2,b=>2} 0200000002000000 02000000000000000200000000000000 02000000000000000200000000000000 0000000280000000 0200000002000000 0200000002000000 00000000000000028000000000000000 0200000002000000 0000000280000000 - {a=>-85,b=>2} abffffff02000000 abffffffffffffff0200000000000000 abffffffffffffff0200000000000000 ffffffab80000000 abffffff02000000 abffffff02000000 ffffffffffffffab8000000000000000 abffffff02000000 ffffffab80000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; }; - {c=>3,a=>-105,b=>2} 97ffffff0e000000 97ffffffffffffff0e00000000000000 97ffffffffffffff0e00000000000000 ffffff97b0000000 97ffffff0e000000 97ffffff0e000000 ffffffffffffff97b000000000000000 97ffffff0e000000 ffffff97b0000000 - {c=>1,a=>14,b=>1} 0e00000005000000 0e000000000000000500000000000000 0e000000000000000500000000000000 0000000e50000000 0e00000005000000 0e00000005000000 000000000000000e5000000000000000 0e00000005000000 0000000e50000000 - {c=>1,a=>-120,b=>2} 88ffffff06000000 88ffffffffffffff0600000000000000 88ffffffffffffff0600000000000000 ffffff8890000000 88ffffff06000000 88ffffff06000000 ffffffffffffff889000000000000000 88ffffff06000000 ffffff8890000000 - {c=>2,a=>67,b=>3} 430000000b000000 43000000000000000b00000000000000 43000000000000000b00000000000000 00000043e0000000 430000000b000000 430000000b000000 0000000000000043e000000000000000 430000000b000000 00000043e0000000 - {c=>1,a=>85,b=>0} 5500000004000000 55000000000000000400000000000000 55000000000000000400000000000000 0000005510000000 5500000004000000 5500000004000000 00000000000000551000000000000000 5500000004000000 0000005510000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>1,a=>113,b=>1} 7100000005000000 71000000000000000500000000000000 71000000000000000500000000000000 0000007150000000 7100000005000000 7100000005000000 00000000000000715000000000000000 7100000005000000 0000007150000000 - {c=>0,a=>-59,b=>2} c5ffffff02000000 c5ffffffffffffff0200000000000000 c5ffffffffffffff0200000000000000 ffffffc580000000 c5ffffff02000000 c5ffffff02000000 ffffffffffffffc58000000000000000 c5ffffff02000000 ffffffc580000000 - {c=>2,a=>115,b=>1} 7300000009000000 73000000000000000900000000000000 73000000000000000900000000000000 0000007360000000 7300000009000000 7300000009000000 00000000000000736000000000000000 7300000009000000 0000007360000000 - {c=>1,a=>-97,b=>3} 9fffffff07000000 9fffffffffffffff0700000000000000 9fffffffffffffff0700000000000000 ffffff9fd0000000 9fffffff07000000 9fffffff07000000 ffffffffffffff9fd000000000000000 9fffffff07000000 ffffff9fd0000000 - {c=>2,a=>38,b=>2} 260000000a000000 26000000000000000a00000000000000 26000000000000000a00000000000000 00000026a0000000 260000000a000000 260000000a000000 0000000000000026a000000000000000 260000000a000000 00000026a0000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>2,a=>14,b=>0,d=>0} 0e00000008000000 0e000000000000000800000000000000 0e000000000000000800000000000000 0000000e20000000 0e00000008000000 0e00000008000000 000000000000000e2000000000000000 0e00000008000000 0000000e20000000 - {c=>3,a=>-56,b=>0,d=>3} c8ffffff0c030000 c8ffffffffffffff0c03000000000000 c8ffffffffffffff0c03000000000000 ffffffc830c00000 c8ffffff0c030000 c8ffffff0c030000 ffffffffffffffc830c0000000000000 c8ffffff0c030000 ffffffc830c00000 - {c=>1,a=>84,b=>0,d=>2} 5400000004020000 54000000000000000402000000000000 54000000000000000402000000000000 0000005410800000 5400000004020000 5400000004020000 00000000000000541080000000000000 5400000004020000 0000005410800000 - {c=>1,a=>-54,b=>2,d=>0} caffffff06000000 caffffffffffffff0600000000000000 caffffffffffffff0600000000000000 ffffffca90000000 caffffff06000000 caffffff06000000 ffffffffffffffca9000000000000000 caffffff06000000 ffffffca90000000 - {c=>0,a=>61,b=>2,d=>0} 3d00000002000000 3d000000000000000200000000000000 3d000000000000000200000000000000 0000003d80000000 3d00000002000000 3d00000002000000 000000000000003d8000000000000000 3d00000002000000 0000003d80000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>109,c=>0,a=>66,b=>0,d=>1} 4200000000016d00 420000000000000000016d0000000000 420000000000000000016d0000000000 000000420040006d 4200000000016d00 4200000000016d00 00000000000000420040006d00000000 4200000000016d00 000000420040006d - {e=>167,c=>2,a=>-15,b=>2,d=>0} f1ffffff0a00a700 f1ffffffffffffff0a00a70000000000 f1ffffffffffffff0a00a70000000000 fffffff1a00000a7 f1ffffff0a00a700 f1ffffff0a00a700 fffffffffffffff1a00000a700000000 f1ffffff0a00a700 fffffff1a00000a7 - {e=>39,c=>1,a=>92,b=>1,d=>3} 5c00000005032700 5c000000000000000503270000000000 5c000000000000000503270000000000 0000005c50c00027 5c00000005032700 5c00000005032700 000000000000005c50c0002700000000 5c00000005032700 0000005c50c00027 - {e=>135,c=>3,a=>-67,b=>0,d=>2} bdffffff0c028700 bdffffffffffffff0c02870000000000 bdffffffffffffff0c02870000000000 ffffffbd30800087 bdffffff0c028700 bdffffff0c028700 ffffffffffffffbd3080008700000000 bdffffff0c028700 ffffffbd30800087 - {e=>180,c=>1,a=>38,b=>0,d=>0} 260000000400b400 26000000000000000400b40000000000 26000000000000000400b40000000000 00000026100000b4 260000000400b400 260000000400b400 0000000000000026100000b400000000 260000000400b400 00000026100000b4 = struct mixed1 { unsigned int a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>1} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; }; - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; }; - {a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>1,b=>0} 01000000 01000000 01000000 80000000 01000000 01000000 80000000 01000000 80000000 - {a=>0,b=>1} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>1,b=>1} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; }; - {c=>1,a=>0,b=>0} 0000000001000000 0000000001000000 0000000001000000 0000000080000000 0000000001000000 0000000001000000 0000000080000000 0000000001000000 0000000080000000 - {c=>1,a=>1,b=>1} 0300000001000000 0300000001000000 0300000001000000 c000000080000000 0300000001000000 0300000001000000 c000000080000000 0300000001000000 c000000080000000 - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 8000000000000000 - {c=>0,a=>0,b=>1} 0200000000000000 0200000000000000 0200000000000000 4000000000000000 0200000000000000 0200000000000000 4000000000000000 0200000000000000 4000000000000000 - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 8000000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; }; - {c=>0,a=>1,b=>1,d=>0} 0300000000000000 0300000000000000 0300000000000000 c000000000000000 0300000000000000 0300000000000000 c000000000000000 0300000000000000 c000000000000000 - {c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 c000000040000000 - {c=>1,a=>0,b=>0,d=>0} 0000000001000000 0000000001000000 0000000001000000 0000000080000000 0000000001000000 0000000001000000 0000000080000000 0000000001000000 0000000080000000 - {c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 c000000040000000 - {c=>0,a=>1,b=>0,d=>0} 0100000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 0100000000000000 8000000000000000 0100000000000000 8000000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; }; - {e=>0,c=>0,a=>0,b=>1,d=>0} 0200000000000000 0200000000000000 0200000000000000 4000000000000000 0200000000000000 0200000000000000 4000000000000000 0200000000000000 4000000000000000 - {e=>-1,c=>0,a=>0,b=>1,d=>-1} 0200000006000000 0200000006000000 0200000006000000 4000000060000000 0200000006000000 0200000006000000 4000000060000000 0200000006000000 4000000060000000 - {e=>0,c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 0300000002000000 c000000040000000 0300000002000000 c000000040000000 - {e=>-1,c=>1,a=>1,b=>0,d=>-1} 0100000007000000 0100000007000000 0100000007000000 80000000e0000000 0100000007000000 0100000007000000 80000000e0000000 0100000007000000 80000000e0000000 - {e=>0,c=>0,a=>0,b=>0,d=>0} 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; }; - {e=>-1,c=>0,a=>1,b=>0,d=>-1} 0100000006000000 0100000006000000 0100000006000000 8000000060000000 0100000006000000 0100000006000000 8000000060000000 0100000006000000 8000000060000000 - {e=>0,c=>1,a=>1,b=>0,d=>0} 0100000001000000 0100000001000000 0100000001000000 8000000080000000 0100000001000000 0100000001000000 8000000080000000 0100000001000000 8000000080000000 - {e=>-1,c=>0,a=>1,b=>0,d=>0} 0100000004000000 0100000004000000 0100000004000000 8000000020000000 0100000004000000 0100000004000000 8000000020000000 0100000004000000 8000000020000000 - {e=>0,c=>1,a=>0,b=>1,d=>-1} 0200000003000000 0200000003000000 0200000003000000 40000000c0000000 0200000003000000 0200000003000000 40000000c0000000 0200000003000000 40000000c0000000 - {e=>-1,c=>1,a=>1,b=>1,d=>-1} 0300000007000000 0300000007000000 0300000007000000 c0000000e0000000 0300000007000000 0300000007000000 c0000000e0000000 0300000007000000 c0000000e0000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; }; - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 40000000e000000080000000 - {e=>-1,c=>0,a=>0,b=>1,d=>0,f=>-1} 020000000400000001000000 020000000400000001000000 020000000400000001000000 400000002000000080000000 020000000400000001000000 020000000400000001000000 400000002000000080000000 020000000400000001000000 400000002000000080000000 - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 40000000e000000080000000 - {e=>0,c=>1,a=>0,b=>0,d=>0,f=>-1} 000000000100000001000000 000000000100000001000000 000000000100000001000000 000000008000000080000000 000000000100000001000000 000000000100000001000000 000000008000000080000000 000000000100000001000000 000000008000000080000000 - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 020000000700000001000000 40000000e000000080000000 020000000700000001000000 40000000e000000080000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; }; - {e=>0,c=>1,a=>1,g=>-1,b=>1,d=>-1,f=>-1} 030000000300000003000000 030000000300000003000000 030000000300000003000000 c0000000c0000000c0000000 030000000300000003000000 030000000300000003000000 c0000000c0000000c0000000 030000000300000003000000 c0000000c0000000c0000000 - {e=>0,c=>0,a=>1,g=>-1,b=>1,d=>0,f=>-1} 030000000000000003000000 030000000000000003000000 030000000000000003000000 c000000000000000c0000000 030000000000000003000000 030000000000000003000000 c000000000000000c0000000 030000000000000003000000 c000000000000000c0000000 - {e=>0,c=>0,a=>0,g=>-1,b=>0,d=>0,f=>-1} 000000000000000003000000 000000000000000003000000 000000000000000003000000 0000000000000000c0000000 000000000000000003000000 000000000000000003000000 0000000000000000c0000000 000000000000000003000000 0000000000000000c0000000 - {e=>0,c=>1,a=>1,g=>0,b=>1,d=>0,f=>0} 030000000100000000000000 030000000100000000000000 030000000100000000000000 c00000008000000000000000 030000000100000000000000 030000000100000000000000 c00000008000000000000000 030000000100000000000000 c00000008000000000000000 - {e=>0,c=>1,a=>0,g=>-1,b=>1,d=>0,f=>0} 020000000100000002000000 020000000100000002000000 020000000100000002000000 400000008000000040000000 020000000100000002000000 020000000100000002000000 400000008000000040000000 020000000100000002000000 400000008000000040000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; }; - {e=>0,a=>1,d=>-1,c=>0,h=>0,b=>1,g=>-1,f=>-1} 030000000200000003000000 030000000200000003000000 030000000200000003000000 c000000040000000c0000000 030000000200000003000000 030000000200000003000000 c000000040000000c0000000 030000000200000003000000 c000000040000000c0000000 - {e=>0,a=>0,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1} 020000000000000007000000 020000000000000007000000 020000000000000007000000 4000000000000000e0000000 020000000000000007000000 020000000000000007000000 4000000000000000e0000000 020000000000000007000000 4000000000000000e0000000 - {e=>0,a=>0,d=>-1,c=>1,h=>0,b=>1,g=>-1,f=>0} 020000000300000002000000 020000000300000002000000 020000000300000002000000 40000000c000000040000000 020000000300000002000000 020000000300000002000000 40000000c000000040000000 020000000300000002000000 40000000c000000040000000 - {e=>0,a=>0,d=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0} 000000000300000006000000 000000000300000006000000 000000000300000006000000 00000000c000000060000000 000000000300000006000000 000000000300000006000000 00000000c000000060000000 000000000300000006000000 00000000c000000060000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>1,g=>0,f=>-1} 030000000200000005000000 030000000200000005000000 030000000200000005000000 c000000040000000a0000000 030000000200000005000000 030000000200000005000000 c000000040000000a0000000 030000000200000005000000 c000000040000000a0000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; }; - {e=>0,a=>1,d=>0,c=>0,h=>-1,b=>0,g=>0,f=>-1} 010000000000000005000000 010000000000000005000000 010000000000000005000000 8000000000000000a0000000 010000000000000005000000 010000000000000005000000 8000000000000000a0000000 010000000000000005000000 8000000000000000a0000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>0,g=>0,f=>-1} 010000000200000005000000 010000000200000005000000 010000000200000005000000 8000000040000000a0000000 010000000200000005000000 010000000200000005000000 8000000040000000a0000000 010000000200000005000000 8000000040000000a0000000 - {e=>-1,a=>0,d=>0,c=>0,h=>0,b=>1,g=>0,f=>-1} 020000000400000001000000 020000000400000001000000 020000000400000001000000 400000002000000080000000 020000000400000001000000 020000000400000001000000 400000002000000080000000 020000000400000001000000 400000002000000080000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>1,g=>0,f=>-1} 030000000200000005000000 030000000200000005000000 030000000200000005000000 c000000040000000a0000000 030000000200000005000000 030000000200000005000000 c000000040000000a0000000 030000000200000005000000 c000000040000000a0000000 - {e=>-1,a=>1,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>-1} 010000000400000003000000 010000000400000003000000 010000000400000003000000 8000000020000000c0000000 010000000400000003000000 010000000400000003000000 8000000020000000c0000000 010000000400000003000000 8000000020000000c0000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; int i:1; }; - {e=>-1,a=>1,d=>0,c=>1,h=>-1,b=>0,g=>-1,f=>-1,i=>0} 01000000050000000700000000000000 01000000050000000700000000000000 01000000050000000700000000000000 80000000a0000000e000000000000000 01000000050000000700000000000000 01000000050000000700000000000000 80000000a0000000e000000000000000 01000000050000000700000000000000 80000000a0000000e000000000000000 - {e=>0,a=>1,d=>0,c=>0,h=>-1,b=>0,g=>0,f=>-1,i=>0} 01000000000000000500000000000000 01000000000000000500000000000000 01000000000000000500000000000000 8000000000000000a000000000000000 01000000000000000500000000000000 01000000000000000500000000000000 8000000000000000a000000000000000 01000000000000000500000000000000 8000000000000000a000000000000000 - {e=>0,a=>1,d=>-1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} 01000000030000000500000000000000 01000000030000000500000000000000 01000000030000000500000000000000 80000000c0000000a000000000000000 01000000030000000500000000000000 01000000030000000500000000000000 80000000c0000000a000000000000000 01000000030000000500000000000000 80000000c0000000a000000000000000 - {e=>0,a=>1,d=>-1,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 03000000030000000500000000000000 03000000030000000500000000000000 03000000030000000500000000000000 c0000000c0000000a000000000000000 03000000030000000500000000000000 03000000030000000500000000000000 c0000000c0000000a000000000000000 03000000030000000500000000000000 c0000000c0000000a000000000000000 - {e=>-1,a=>1,d=>-1,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 01000000060000000600000001000000 01000000060000000600000001000000 01000000060000000600000001000000 80000000600000006000000080000000 01000000060000000600000001000000 01000000060000000600000001000000 80000000600000006000000080000000 01000000060000000600000001000000 80000000600000006000000080000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; int i:1; long j; }; - {e=>-1,a=>0,d=>-1,j=>95,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 000000000600000006000000010000005f000000 000000000600000006000000010000005f00000000000000 000000000600000006000000010000005f00000000000000 000000006000000060000000800000000000005f 000000000600000006000000010000005f000000 000000000600000006000000010000005f000000 00000000600000006000000080000000000000000000005f 000000000600000006000000010000005f000000 000000006000000060000000800000000000005f - {e=>-1,a=>0,d=>0,j=>6,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 0200000005000000050000000000000006000000 020000000500000005000000000000000600000000000000 020000000500000005000000000000000600000000000000 40000000a0000000a00000000000000000000006 0200000005000000050000000000000006000000 0200000005000000050000000000000006000000 40000000a0000000a0000000000000000000000000000006 0200000005000000050000000000000006000000 40000000a0000000a00000000000000000000006 - {e=>0,a=>1,d=>-1,j=>2,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>-1} 0300000003000000010000000100000002000000 030000000300000001000000010000000200000000000000 030000000300000001000000010000000200000000000000 c0000000c0000000800000008000000000000002 0300000003000000010000000100000002000000 0300000003000000010000000100000002000000 c0000000c000000080000000800000000000000000000002 0300000003000000010000000100000002000000 c0000000c0000000800000008000000000000002 - {e=>0,a=>1,d=>0,j=>29,c=>0,h=>0,b=>1,g=>0,f=>0,i=>-1} 030000000000000000000000010000001d000000 030000000000000000000000010000001d00000000000000 030000000000000000000000010000001d00000000000000 c00000000000000000000000800000000000001d 030000000000000000000000010000001d000000 030000000000000000000000010000001d000000 c0000000000000000000000080000000000000000000001d 030000000000000000000000010000001d000000 c00000000000000000000000800000000000001d - {e=>0,a=>0,d=>-1,j=>-28,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffffffffffff 02000000020000000700000000000000e4ffffffffffffff 4000000040000000e000000000000000ffffffe4 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffff 4000000040000000e000000000000000ffffffffffffffe4 02000000020000000700000000000000e4ffffff 4000000040000000e000000000000000ffffffe4 = struct mixed1 { char a; unsigned int b:1; }; - {a=>110,b=>1} 6e010000 6e010000 6e010000 6e800000 6e010000 6e010000 6e800000 6e010000 6e800000 - {a=>-117,b=>1} 8b010000 8b010000 8b010000 8b800000 8b010000 8b010000 8b800000 8b010000 8b800000 - {a=>-103,b=>0} 99000000 99000000 99000000 99000000 99000000 99000000 99000000 99000000 99000000 - {a=>-42,b=>0} d6000000 d6000000 d6000000 d6000000 d6000000 d6000000 d6000000 d6000000 d6000000 - {a=>71,b=>1} 47010000 47010000 47010000 47800000 47010000 47010000 47800000 47010000 47800000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>53,b=>0} 35000000 35000000 35000000 35000000 35000000 35000000 35000000 35000000 35000000 - {c=>1,a=>5,b=>1} 05030000 05030000 05030000 05c00000 05030000 05030000 05c00000 05030000 05c00000 - {c=>0,a=>-80,b=>0} b0000000 b0000000 b0000000 b0000000 b0000000 b0000000 b0000000 b0000000 b0000000 - {c=>1,a=>100,b=>0} 64020000 64020000 64020000 64400000 64020000 64020000 64400000 64020000 64400000 - {c=>1,a=>-94,b=>1} a2030000 a2030000 a2030000 a2c00000 a2030000 a2030000 a2c00000 a2030000 a2c00000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>-121,b=>1} 87010000 87010000 87010000 87800000 87010000 87010000 87800000 87010000 87800000 - {c=>0,a=>-57,b=>1} c7010000 c7010000 c7010000 c7800000 c7010000 c7010000 c7800000 c7010000 c7800000 - {c=>0,a=>37,b=>1} 25010000 25010000 25010000 25800000 25010000 25010000 25800000 25010000 25800000 - {c=>1,a=>37,b=>1} 25030000 25030000 25030000 25c00000 25030000 25030000 25c00000 25030000 25c00000 - {c=>0,a=>-110,b=>0} 92000000 92000000 92000000 92000000 92000000 92000000 92000000 92000000 92000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>43,b=>0,d=>0} 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 2b00000000000000 - {c=>1,a=>72,b=>1,d=>0} 4803000000000000 4803000000000000 4803000000000000 48c0000000000000 4803000000000000 4803000000000000 48c0000000000000 4803000000000000 48c0000000000000 - {c=>1,a=>70,b=>0,d=>0} 4602000000000000 4602000000000000 4602000000000000 4640000000000000 4602000000000000 4602000000000000 4640000000000000 4602000000000000 4640000000000000 - {c=>1,a=>50,b=>1,d=>0} 3203000000000000 3203000000000000 3203000000000000 32c0000000000000 3203000000000000 3203000000000000 32c0000000000000 3203000000000000 32c0000000000000 - {c=>0,a=>104,b=>0,d=>0} 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 6800000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>0,c=>0,a=>48,b=>1,d=>1} 3001000001000000 3001000001000000 3001000001000000 3080000080000000 3001000001000000 3001000001000000 3080000080000000 3001000001000000 3080000080000000 - {e=>-1,c=>0,a=>-115,b=>1,d=>0} 8d01000002000000 8d01000002000000 8d01000002000000 8d80000040000000 8d01000002000000 8d01000002000000 8d80000040000000 8d01000002000000 8d80000040000000 - {e=>-1,c=>1,a=>-71,b=>0,d=>1} b902000003000000 b902000003000000 b902000003000000 b9400000c0000000 b902000003000000 b902000003000000 b9400000c0000000 b902000003000000 b9400000c0000000 - {e=>-1,c=>0,a=>38,b=>0,d=>0} 2600000002000000 2600000002000000 2600000002000000 2600000040000000 2600000002000000 2600000002000000 2600000040000000 2600000002000000 2600000040000000 - {e=>-1,c=>1,a=>110,b=>0,d=>0} 6e02000002000000 6e02000002000000 6e02000002000000 6e40000040000000 6e02000002000000 6e02000002000000 6e40000040000000 6e02000002000000 6e40000040000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>0,c=>0,a=>-12,b=>0,d=>1,f=>0} f400000001000000 f400000001000000 f400000001000000 f400000080000000 f400000001000000 f400000001000000 f400000080000000 f400000001000000 f400000080000000 - {e=>0,c=>0,a=>5,b=>0,d=>1,f=>0} 0500000001000000 0500000001000000 0500000001000000 0500000080000000 0500000001000000 0500000001000000 0500000080000000 0500000001000000 0500000080000000 - {e=>-1,c=>1,a=>47,b=>0,d=>0,f=>0} 2f02000002000000 2f02000002000000 2f02000002000000 2f40000040000000 2f02000002000000 2f02000002000000 2f40000040000000 2f02000002000000 2f40000040000000 - {e=>-1,c=>1,a=>87,b=>0,d=>0,f=>-1} 5702000006000000 5702000006000000 5702000006000000 5740000060000000 5702000006000000 5702000006000000 5740000060000000 5702000006000000 5740000060000000 - {e=>0,c=>0,a=>-26,b=>1,d=>1,f=>0} e601000001000000 e601000001000000 e601000001000000 e680000080000000 e601000001000000 e601000001000000 e680000080000000 e601000001000000 e680000080000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-46,b=>1,d=>1,f=>0} d201000001000000 d201000001000000 d201000001000000 d280000080000000 d201000001000000 d201000001000000 d280000080000000 d201000001000000 d280000080000000 - {e=>-1,c=>0,a=>-8,b=>1,d=>1,f=>0} f801000003000000 f801000003000000 f801000003000000 f8800000c0000000 f801000003000000 f801000003000000 f8800000c0000000 f801000003000000 f8800000c0000000 - {e=>-1,c=>1,a=>-104,b=>1,d=>0,f=>-1} 9803000006000000 9803000006000000 9803000006000000 98c0000060000000 9803000006000000 9803000006000000 98c0000060000000 9803000006000000 98c0000060000000 - {e=>0,c=>1,a=>111,b=>1,d=>1,f=>0} 6f03000001000000 6f03000001000000 6f03000001000000 6fc0000080000000 6f03000001000000 6f03000001000000 6fc0000080000000 6f03000001000000 6fc0000080000000 - {e=>-1,c=>1,a=>66,b=>1,d=>0,f=>-1} 4203000006000000 4203000006000000 4203000006000000 42c0000060000000 4203000006000000 4203000006000000 42c0000060000000 4203000006000000 42c0000060000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>0,a=>33,g=>0,b=>1,d=>1,f=>-1} 210100000500000000000000 210100000500000000000000 210100000500000000000000 21800000a000000000000000 210100000500000000000000 210100000500000000000000 21800000a000000000000000 210100000500000000000000 21800000a000000000000000 - {e=>0,c=>1,a=>-26,g=>0,b=>1,d=>1,f=>-1} e60300000500000000000000 e60300000500000000000000 e60300000500000000000000 e6c00000a000000000000000 e60300000500000000000000 e60300000500000000000000 e6c00000a000000000000000 e60300000500000000000000 e6c00000a000000000000000 - {e=>-1,c=>1,a=>-58,g=>0,b=>0,d=>1,f=>-1} c60200000700000000000000 c60200000700000000000000 c60200000700000000000000 c6400000e000000000000000 c60200000700000000000000 c60200000700000000000000 c6400000e000000000000000 c60200000700000000000000 c6400000e000000000000000 - {e=>0,c=>1,a=>-27,g=>-1,b=>0,d=>0,f=>-1} e50200000400000001000000 e50200000400000001000000 e50200000400000001000000 e54000002000000080000000 e50200000400000001000000 e50200000400000001000000 e54000002000000080000000 e50200000400000001000000 e54000002000000080000000 - {e=>-1,c=>1,a=>-33,g=>0,b=>0,d=>1,f=>0} df0200000300000000000000 df0200000300000000000000 df0200000300000000000000 df400000c000000000000000 df0200000300000000000000 df0200000300000000000000 df400000c000000000000000 df0200000300000000000000 df400000c000000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>40,d=>0,c=>1,h=>0,b=>1,g=>0,f=>0} 280300000200000000000000 280300000200000000000000 280300000200000000000000 28c000004000000000000000 280300000200000000000000 280300000200000000000000 28c000004000000000000000 280300000200000000000000 28c000004000000000000000 - {e=>-1,a=>123,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>-1} 7b0100000600000001000000 7b0100000600000001000000 7b0100000600000001000000 7b8000006000000080000000 7b0100000600000001000000 7b0100000600000001000000 7b8000006000000080000000 7b0100000600000001000000 7b8000006000000080000000 - {e=>-1,a=>102,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1} 660200000600000001000000 660200000600000001000000 660200000600000001000000 664000006000000080000000 660200000600000001000000 660200000600000001000000 664000006000000080000000 660200000600000001000000 664000006000000080000000 - {e=>0,a=>-10,d=>1,c=>1,h=>-1,b=>1,g=>0,f=>-1} f60300000500000002000000 f60300000500000002000000 f60300000500000002000000 f6c00000a000000040000000 f60300000500000002000000 f60300000500000002000000 f6c00000a000000040000000 f60300000500000002000000 f6c00000a000000040000000 - {e=>0,a=>49,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1} 310000000500000001000000 310000000500000001000000 310000000500000001000000 31000000a000000080000000 310000000500000001000000 310000000500000001000000 31000000a000000080000000 310000000500000001000000 31000000a000000080000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>-11,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>-1} f50300000300000007000000 f50300000300000007000000 f50300000300000007000000 f5c00000c0000000e0000000 f50300000300000007000000 f50300000300000007000000 f5c00000c0000000e0000000 f50300000300000007000000 f5c00000c0000000e0000000 - {e=>0,a=>-102,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>-1,i=>0} 9a0000000400000001000000 9a0000000400000001000000 9a0000000400000001000000 9a0000002000000080000000 9a0000000400000001000000 9a0000000400000001000000 9a0000002000000080000000 9a0000000400000001000000 9a0000002000000080000000 - {e=>0,a=>-33,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>0,i=>0} df0000000100000002000000 df0000000100000002000000 df0000000100000002000000 df0000008000000040000000 df0000000100000002000000 df0000000100000002000000 df0000008000000040000000 df0000000100000002000000 df0000008000000040000000 - {e=>-1,a=>-96,d=>1,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} a00100000300000000000000 a00100000300000000000000 a00100000300000000000000 a0800000c000000000000000 a00100000300000000000000 a00100000300000000000000 a0800000c000000000000000 a00100000300000000000000 a0800000c000000000000000 - {e=>-1,a=>125,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>-1} 7d0200000700000006000000 7d0200000700000006000000 7d0200000700000006000000 7d400000e000000060000000 7d0200000700000006000000 7d0200000700000006000000 7d400000e000000060000000 7d0200000700000006000000 7d400000e000000060000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>-1,a=>-41,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} d70100000600000007000000 d70100000600000007000000 d70100000600000007000000 d780000060000000e0000000 d70100000600000007000000 d70100000600000007000000 d780000060000000e0000000 d70100000600000007000000 d780000060000000e0000000 - {e=>-1,a=>51,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 330100000700000003000000 330100000700000003000000 330100000700000003000000 33800000e0000000c0000000 330100000700000003000000 330100000700000003000000 33800000e0000000c0000000 330100000700000003000000 33800000e0000000c0000000 - {e=>0,a=>43,d=>0,c=>0,h=>0,b=>1,g=>0,f=>-1,i=>-1} 2b0100000400000004000000 2b0100000400000004000000 2b0100000400000004000000 2b8000002000000020000000 2b0100000400000004000000 2b0100000400000004000000 2b8000002000000020000000 2b0100000400000004000000 2b8000002000000020000000 - {e=>0,a=>33,d=>0,c=>1,h=>-1,b=>0,g=>0,f=>0,i=>-1} 210200000000000006000000 210200000000000006000000 210200000000000006000000 214000000000000060000000 210200000000000006000000 210200000000000006000000 214000000000000060000000 210200000000000006000000 214000000000000060000000 - {e=>-1,a=>-111,d=>1,c=>1,h=>0,b=>0,g=>0,f=>-1,i=>0} 910200000700000000000000 910200000700000000000000 910200000700000000000000 91400000e000000000000000 910200000700000000000000 910200000700000000000000 91400000e000000000000000 910200000700000000000000 91400000e000000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>-1,a=>-32,d=>0,j=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>0} e0020000020000000300000001000000 e0020000020000000300000001000000 e0020000020000000300000001000000 e040000040000000c000000080000000 e0020000020000000300000001000000 e0020000020000000300000001000000 e040000040000000c000000080000000 e0020000020000000300000001000000 e040000040000000c000000080000000 - {e=>0,a=>-11,d=>0,j=>0,c=>1,h=>0,b=>1,g=>-1,f=>-1,i=>-1} f5030000040000000500000000000000 f5030000040000000500000000000000 f5030000040000000500000000000000 f5c0000020000000a000000000000000 f5030000040000000500000000000000 f5030000040000000500000000000000 f5c0000020000000a000000000000000 f5030000040000000500000000000000 f5c0000020000000a000000000000000 - {e=>0,a=>-110,d=>1,j=>-1,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>-1} 92030000010000000700000001000000 92030000010000000700000001000000 92030000010000000700000001000000 92c0000080000000e000000080000000 92030000010000000700000001000000 92030000010000000700000001000000 92c0000080000000e000000080000000 92030000010000000700000001000000 92c0000080000000e000000080000000 - {e=>-1,a=>-1,d=>0,j=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>-1} ff020000020000000700000001000000 ff020000020000000700000001000000 ff020000020000000700000001000000 ff40000040000000e000000080000000 ff020000020000000700000001000000 ff020000020000000700000001000000 ff40000040000000e000000080000000 ff020000020000000700000001000000 ff40000040000000e000000080000000 - {e=>0,a=>-47,d=>0,j=>-1,c=>1,h=>0,b=>1,g=>0,f=>0,i=>-1} d1030000000000000400000001000000 d1030000000000000400000001000000 d1030000000000000400000001000000 d1c00000000000002000000080000000 d1030000000000000400000001000000 d1030000000000000400000001000000 d1c00000000000002000000080000000 d1030000000000000400000001000000 d1c00000000000002000000080000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>0,a=>-103,d=>1,j=>0,c=>1,k=>81,h=>0,b=>1,g=>0,f=>0,i=>0} 9903000001000000000000000000000051000000 990300000100000000000000000000005100000000000000 990300000100000000000000000000005100000000000000 99c0000080000000000000000000000000000051 9903000001000000000000000000000051000000 9903000001000000000000000000000051000000 99c000008000000000000000000000000000000000000051 9903000001000000000000000000000051000000 99c0000080000000000000000000000000000051 - {e=>0,a=>5,d=>0,j=>0,c=>1,k=>-43,h=>0,b=>0,g=>0,f=>-1,i=>-1} 05020000040000000400000000000000d5ffffff 05020000040000000400000000000000d5ffffffffffffff 05020000040000000400000000000000d5ffffffffffffff 05400000200000002000000000000000ffffffd5 05020000040000000400000000000000d5ffffff 05020000040000000400000000000000d5ffffff 05400000200000002000000000000000ffffffffffffffd5 05020000040000000400000000000000d5ffffff 05400000200000002000000000000000ffffffd5 - {e=>0,a=>48,d=>0,j=>0,c=>1,k=>-96,h=>0,b=>0,g=>0,f=>-1,i=>0} 30020000040000000000000000000000a0ffffff 30020000040000000000000000000000a0ffffffffffffff 30020000040000000000000000000000a0ffffffffffffff 30400000200000000000000000000000ffffffa0 30020000040000000000000000000000a0ffffff 30020000040000000000000000000000a0ffffff 30400000200000000000000000000000ffffffffffffffa0 30020000040000000000000000000000a0ffffff 30400000200000000000000000000000ffffffa0 - {e=>-1,a=>113,d=>0,j=>-1,c=>1,k=>-112,h=>-1,b=>1,g=>0,f=>-1,i=>0} 7103000006000000020000000100000090ffffff 7103000006000000020000000100000090ffffffffffffff 7103000006000000020000000100000090ffffffffffffff 71c00000600000004000000080000000ffffff90 7103000006000000020000000100000090ffffff 7103000006000000020000000100000090ffffff 71c00000600000004000000080000000ffffffffffffff90 7103000006000000020000000100000090ffffff 71c00000600000004000000080000000ffffff90 - {e=>0,a=>124,d=>1,j=>-1,c=>1,k=>62,h=>0,b=>0,g=>0,f=>-1,i=>0} 7c0200000500000000000000010000003e000000 7c0200000500000000000000010000003e00000000000000 7c0200000500000000000000010000003e00000000000000 7c400000a000000000000000800000000000003e 7c0200000500000000000000010000003e000000 7c0200000500000000000000010000003e000000 7c400000a00000000000000080000000000000000000003e 7c0200000500000000000000010000003e000000 7c400000a000000000000000800000000000003e = struct mixed1 { short a; unsigned int b:1; }; - {a=>110,b=>1} 6e000100 6e000100 6e000100 006e8000 6e000100 6e000100 006e8000 6e000100 006e8000 - {a=>-33,b=>1} dfff0100 dfff0100 dfff0100 ffdf8000 dfff0100 dfff0100 ffdf8000 dfff0100 ffdf8000 - {a=>-68,b=>0} bcff0000 bcff0000 bcff0000 ffbc0000 bcff0000 bcff0000 ffbc0000 bcff0000 ffbc0000 - {a=>-44,b=>1} d4ff0100 d4ff0100 d4ff0100 ffd48000 d4ff0100 d4ff0100 ffd48000 d4ff0100 ffd48000 - {a=>94,b=>0} 5e000000 5e000000 5e000000 005e0000 5e000000 5e000000 005e0000 5e000000 005e0000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-20,b=>1} ecff0300 ecff0300 ecff0300 ffecc000 ecff0300 ecff0300 ffecc000 ecff0300 ffecc000 - {c=>1,a=>-53,b=>1} cbff0300 cbff0300 cbff0300 ffcbc000 cbff0300 cbff0300 ffcbc000 cbff0300 ffcbc000 - {c=>1,a=>123,b=>0} 7b000200 7b000200 7b000200 007b4000 7b000200 7b000200 007b4000 7b000200 007b4000 - {c=>1,a=>-52,b=>0} ccff0200 ccff0200 ccff0200 ffcc4000 ccff0200 ccff0200 ffcc4000 ccff0200 ffcc4000 - {c=>1,a=>93,b=>0} 5d000200 5d000200 5d000200 005d4000 5d000200 5d000200 005d4000 5d000200 005d4000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>1,a=>110,b=>0} 6e000200 6e000200 6e000200 006e4000 6e000200 6e000200 006e4000 6e000200 006e4000 - {c=>0,a=>51,b=>0} 33000000 33000000 33000000 00330000 33000000 33000000 00330000 33000000 00330000 - {c=>0,a=>118,b=>0} 76000000 76000000 76000000 00760000 76000000 76000000 00760000 76000000 00760000 - {c=>1,a=>27,b=>1} 1b000300 1b000300 1b000300 001bc000 1b000300 1b000300 001bc000 1b000300 001bc000 - {c=>0,a=>-97,b=>1} 9fff0100 9fff0100 9fff0100 ff9f8000 9fff0100 9fff0100 ff9f8000 9fff0100 ff9f8000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>1,a=>102,b=>1,d=>0} 6600030000000000 6600030000000000 6600030000000000 0066c00000000000 6600030000000000 6600030000000000 0066c00000000000 6600030000000000 0066c00000000000 - {c=>0,a=>-89,b=>1,d=>0} a7ff010000000000 a7ff010000000000 a7ff010000000000 ffa7800000000000 a7ff010000000000 a7ff010000000000 ffa7800000000000 a7ff010000000000 ffa7800000000000 - {c=>1,a=>37,b=>0,d=>0} 2500020000000000 2500020000000000 2500020000000000 0025400000000000 2500020000000000 2500020000000000 0025400000000000 2500020000000000 0025400000000000 - {c=>1,a=>111,b=>1,d=>0} 6f00030000000000 6f00030000000000 6f00030000000000 006fc00000000000 6f00030000000000 6f00030000000000 006fc00000000000 6f00030000000000 006fc00000000000 - {c=>0,a=>33,b=>0,d=>0} 2100000000000000 2100000000000000 2100000000000000 0021000000000000 2100000000000000 2100000000000000 0021000000000000 2100000000000000 0021000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>0,c=>1,a=>-77,b=>0,d=>0} b3ff020000000000 b3ff020000000000 b3ff020000000000 ffb3400000000000 b3ff020000000000 b3ff020000000000 ffb3400000000000 b3ff020000000000 ffb3400000000000 - {e=>-1,c=>0,a=>73,b=>1,d=>1} 4900010003000000 4900010003000000 4900010003000000 00498000c0000000 4900010003000000 4900010003000000 00498000c0000000 4900010003000000 00498000c0000000 - {e=>-1,c=>0,a=>50,b=>1,d=>0} 3200010002000000 3200010002000000 3200010002000000 0032800040000000 3200010002000000 3200010002000000 0032800040000000 3200010002000000 0032800040000000 - {e=>0,c=>1,a=>-125,b=>0,d=>1} 83ff020001000000 83ff020001000000 83ff020001000000 ff83400080000000 83ff020001000000 83ff020001000000 ff83400080000000 83ff020001000000 ff83400080000000 - {e=>0,c=>0,a=>55,b=>1,d=>0} 3700010000000000 3700010000000000 3700010000000000 0037800000000000 3700010000000000 3700010000000000 0037800000000000 3700010000000000 0037800000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>0,c=>1,a=>-25,b=>1,d=>1,f=>-1} e7ff030005000000 e7ff030005000000 e7ff030005000000 ffe7c000a0000000 e7ff030005000000 e7ff030005000000 ffe7c000a0000000 e7ff030005000000 ffe7c000a0000000 - {e=>0,c=>0,a=>110,b=>0,d=>0,f=>-1} 6e00000004000000 6e00000004000000 6e00000004000000 006e000020000000 6e00000004000000 6e00000004000000 006e000020000000 6e00000004000000 006e000020000000 - {e=>0,c=>0,a=>-28,b=>1,d=>0,f=>0} e4ff010000000000 e4ff010000000000 e4ff010000000000 ffe4800000000000 e4ff010000000000 e4ff010000000000 ffe4800000000000 e4ff010000000000 ffe4800000000000 - {e=>0,c=>1,a=>38,b=>1,d=>1,f=>0} 2600030001000000 2600030001000000 2600030001000000 0026c00080000000 2600030001000000 2600030001000000 0026c00080000000 2600030001000000 0026c00080000000 - {e=>-1,c=>0,a=>38,b=>0,d=>1,f=>-1} 2600000007000000 2600000007000000 2600000007000000 00260000e0000000 2600000007000000 2600000007000000 00260000e0000000 2600000007000000 00260000e0000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-35,b=>1,d=>1,f=>-1} ddff010005000000 ddff010005000000 ddff010005000000 ffdd8000a0000000 ddff010005000000 ddff010005000000 ffdd8000a0000000 ddff010005000000 ffdd8000a0000000 - {e=>0,c=>0,a=>-82,b=>0,d=>0,f=>0} aeff000000000000 aeff000000000000 aeff000000000000 ffae000000000000 aeff000000000000 aeff000000000000 ffae000000000000 aeff000000000000 ffae000000000000 - {e=>0,c=>0,a=>-124,b=>1,d=>0,f=>0} 84ff010000000000 84ff010000000000 84ff010000000000 ff84800000000000 84ff010000000000 84ff010000000000 ff84800000000000 84ff010000000000 ff84800000000000 - {e=>0,c=>0,a=>-50,b=>0,d=>1,f=>0} ceff000001000000 ceff000001000000 ceff000001000000 ffce000080000000 ceff000001000000 ceff000001000000 ffce000080000000 ceff000001000000 ffce000080000000 - {e=>-1,c=>1,a=>-121,b=>0,d=>0,f=>-1} 87ff020006000000 87ff020006000000 87ff020006000000 ff87400060000000 87ff020006000000 87ff020006000000 ff87400060000000 87ff020006000000 ff87400060000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>-1,c=>1,a=>39,g=>0,b=>1,d=>1,f=>0} 270003000300000000000000 270003000300000000000000 270003000300000000000000 0027c000c000000000000000 270003000300000000000000 270003000300000000000000 0027c000c000000000000000 270003000300000000000000 0027c000c000000000000000 - {e=>-1,c=>0,a=>-21,g=>0,b=>0,d=>0,f=>0} ebff00000200000000000000 ebff00000200000000000000 ebff00000200000000000000 ffeb00004000000000000000 ebff00000200000000000000 ebff00000200000000000000 ffeb00004000000000000000 ebff00000200000000000000 ffeb00004000000000000000 - {e=>-1,c=>1,a=>-9,g=>-1,b=>1,d=>0,f=>0} f7ff03000200000001000000 f7ff03000200000001000000 f7ff03000200000001000000 fff7c0004000000080000000 f7ff03000200000001000000 f7ff03000200000001000000 fff7c0004000000080000000 f7ff03000200000001000000 fff7c0004000000080000000 - {e=>0,c=>0,a=>39,g=>-1,b=>0,d=>1,f=>0} 270000000100000001000000 270000000100000001000000 270000000100000001000000 002700008000000080000000 270000000100000001000000 270000000100000001000000 002700008000000080000000 270000000100000001000000 002700008000000080000000 - {e=>0,c=>0,a=>-23,g=>0,b=>1,d=>1,f=>0} e9ff01000100000000000000 e9ff01000100000000000000 e9ff01000100000000000000 ffe980008000000000000000 e9ff01000100000000000000 e9ff01000100000000000000 ffe980008000000000000000 e9ff01000100000000000000 ffe980008000000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>-109,d=>1,c=>1,h=>0,b=>0,g=>0,f=>-1} 93ff02000700000000000000 93ff02000700000000000000 93ff02000700000000000000 ff934000e000000000000000 93ff02000700000000000000 93ff02000700000000000000 ff934000e000000000000000 93ff02000700000000000000 ff934000e000000000000000 - {e=>0,a=>113,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>-1} 710000000500000002000000 710000000500000002000000 710000000500000002000000 00710000a000000040000000 710000000500000002000000 710000000500000002000000 00710000a000000040000000 710000000500000002000000 00710000a000000040000000 - {e=>-1,a=>115,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>0} 730001000300000003000000 730001000300000003000000 730001000300000003000000 00738000c0000000c0000000 730001000300000003000000 730001000300000003000000 00738000c0000000c0000000 730001000300000003000000 00738000c0000000c0000000 - {e=>0,a=>86,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0} 560000000100000000000000 560000000100000000000000 560000000100000000000000 005600008000000000000000 560000000100000000000000 560000000100000000000000 005600008000000000000000 560000000100000000000000 005600008000000000000000 - {e=>-1,a=>-14,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>0} f2ff03000300000003000000 f2ff03000300000003000000 f2ff03000300000003000000 fff2c000c0000000c0000000 f2ff03000300000003000000 f2ff03000300000003000000 fff2c000c0000000c0000000 f2ff03000300000003000000 fff2c000c0000000c0000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>97,d=>1,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>0} 610000000300000003000000 610000000300000003000000 610000000300000003000000 00610000c0000000c0000000 610000000300000003000000 610000000300000003000000 00610000c0000000c0000000 610000000300000003000000 00610000c0000000c0000000 - {e=>0,a=>-1,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>0} ffff01000000000002000000 ffff01000000000002000000 ffff01000000000002000000 ffff80000000000040000000 ffff01000000000002000000 ffff01000000000002000000 ffff80000000000040000000 ffff01000000000002000000 ffff80000000000040000000 - {e=>-1,a=>62,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>0,i=>-1} 3e0000000300000005000000 3e0000000300000005000000 3e0000000300000005000000 003e0000c0000000a0000000 3e0000000300000005000000 3e0000000300000005000000 003e0000c0000000a0000000 3e0000000300000005000000 003e0000c0000000a0000000 - {e=>0,a=>-110,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>-1} 92ff01000000000006000000 92ff01000000000006000000 92ff01000000000006000000 ff9280000000000060000000 92ff01000000000006000000 92ff01000000000006000000 ff9280000000000060000000 92ff01000000000006000000 ff9280000000000060000000 - {e=>0,a=>-40,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>-1,i=>0} d8ff00000500000002000000 d8ff00000500000002000000 d8ff00000500000002000000 ffd80000a000000040000000 d8ff00000500000002000000 d8ff00000500000002000000 ffd80000a000000040000000 d8ff00000500000002000000 ffd80000a000000040000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>-1,a=>-48,d=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>0} d0ff02000200000000000000 d0ff02000200000000000000 d0ff02000200000000000000 ffd040004000000000000000 d0ff02000200000000000000 d0ff02000200000000000000 ffd040004000000000000000 d0ff02000200000000000000 ffd040004000000000000000 - {e=>0,a=>27,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 1b0000000500000005000000 1b0000000500000005000000 1b0000000500000005000000 001b0000a0000000a0000000 1b0000000500000005000000 1b0000000500000005000000 001b0000a0000000a0000000 1b0000000500000005000000 001b0000a0000000a0000000 - {e=>0,a=>47,d=>1,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>-1} 2f0001000100000006000000 2f0001000100000006000000 2f0001000100000006000000 002f80008000000060000000 2f0001000100000006000000 2f0001000100000006000000 002f80008000000060000000 2f0001000100000006000000 002f80008000000060000000 - {e=>-1,a=>24,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 180003000600000007000000 180003000600000007000000 180003000600000007000000 0018c00060000000e0000000 180003000600000007000000 180003000600000007000000 0018c00060000000e0000000 180003000600000007000000 0018c00060000000e0000000 - {e=>0,a=>-105,d=>1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>0} 97ff02000100000003000000 97ff02000100000003000000 97ff02000100000003000000 ff97400080000000c0000000 97ff02000100000003000000 97ff02000100000003000000 ff97400080000000c0000000 97ff02000100000003000000 ff97400080000000c0000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>-1,a=>-24,d=>0,j=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>0} e8ff0200020000000000000000000000 e8ff0200020000000000000000000000 e8ff0200020000000000000000000000 ffe84000400000000000000000000000 e8ff0200020000000000000000000000 e8ff0200020000000000000000000000 ffe84000400000000000000000000000 e8ff0200020000000000000000000000 ffe84000400000000000000000000000 - {e=>-1,a=>-22,d=>0,j=>0,c=>1,h=>0,b=>0,g=>-1,f=>0,i=>0} eaff0200020000000100000000000000 eaff0200020000000100000000000000 eaff0200020000000100000000000000 ffea4000400000008000000000000000 eaff0200020000000100000000000000 eaff0200020000000100000000000000 ffea4000400000008000000000000000 eaff0200020000000100000000000000 ffea4000400000008000000000000000 - {e=>0,a=>-38,d=>0,j=>-1,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} daff0100040000000300000001000000 daff0100040000000300000001000000 daff0100040000000300000001000000 ffda800020000000c000000080000000 daff0100040000000300000001000000 daff0100040000000300000001000000 ffda800020000000c000000080000000 daff0100040000000300000001000000 ffda800020000000c000000080000000 - {e=>0,a=>72,d=>1,j=>0,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 48000300050000000200000000000000 48000300050000000200000000000000 48000300050000000200000000000000 0048c000a00000004000000000000000 48000300050000000200000000000000 48000300050000000200000000000000 0048c000a00000004000000000000000 48000300050000000200000000000000 0048c000a00000004000000000000000 - {e=>0,a=>-62,d=>0,j=>0,c=>0,h=>0,b=>1,g=>-1,f=>-1,i=>0} c2ff0100040000000100000000000000 c2ff0100040000000100000000000000 c2ff0100040000000100000000000000 ffc28000200000008000000000000000 c2ff0100040000000100000000000000 c2ff0100040000000100000000000000 ffc28000200000008000000000000000 c2ff0100040000000100000000000000 ffc28000200000008000000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>-1,a=>29,d=>0,j=>-1,c=>1,k=>-52,h=>-1,b=>1,g=>0,f=>0,i=>0} 1d000300020000000200000001000000ccffffff 1d000300020000000200000001000000ccffffffffffffff 1d000300020000000200000001000000ccffffffffffffff 001dc000400000004000000080000000ffffffcc 1d000300020000000200000001000000ccffffff 1d000300020000000200000001000000ccffffff 001dc000400000004000000080000000ffffffffffffffcc 1d000300020000000200000001000000ccffffff 001dc000400000004000000080000000ffffffcc - {e=>0,a=>71,d=>0,j=>-1,c=>0,k=>11,h=>0,b=>0,g=>0,f=>0,i=>-1} 470000000000000004000000010000000b000000 470000000000000004000000010000000b00000000000000 470000000000000004000000010000000b00000000000000 004700000000000020000000800000000000000b 470000000000000004000000010000000b000000 470000000000000004000000010000000b000000 00470000000000002000000080000000000000000000000b 470000000000000004000000010000000b000000 004700000000000020000000800000000000000b - {e=>-1,a=>7,d=>0,j=>0,c=>0,k=>101,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 0700000002000000070000000000000065000000 070000000200000007000000000000006500000000000000 070000000200000007000000000000006500000000000000 0007000040000000e00000000000000000000065 0700000002000000070000000000000065000000 0700000002000000070000000000000065000000 0007000040000000e0000000000000000000000000000065 0700000002000000070000000000000065000000 0007000040000000e00000000000000000000065 - {e=>-1,a=>-19,d=>1,j=>0,c=>0,k=>8,h=>-1,b=>1,g=>0,f=>0,i=>-1} edff010003000000060000000000000008000000 edff01000300000006000000000000000800000000000000 edff01000300000006000000000000000800000000000000 ffed8000c0000000600000000000000000000008 edff010003000000060000000000000008000000 edff010003000000060000000000000008000000 ffed8000c000000060000000000000000000000000000008 edff010003000000060000000000000008000000 ffed8000c0000000600000000000000000000008 - {e=>-1,a=>71,d=>1,j=>0,c=>0,k=>-64,h=>0,b=>1,g=>-1,f=>-1,i=>-1} 47000100070000000500000000000000c0ffffff 47000100070000000500000000000000c0ffffffffffffff 47000100070000000500000000000000c0ffffffffffffff 00478000e0000000a000000000000000ffffffc0 47000100070000000500000000000000c0ffffff 47000100070000000500000000000000c0ffffff 00478000e0000000a000000000000000ffffffffffffffc0 47000100070000000500000000000000c0ffffff 00478000e0000000a000000000000000ffffffc0 = struct mixed1 { int a; unsigned int b:1; }; - {a=>-120,b=>0} 88ffffff00000000 88ffffff00000000 88ffffff00000000 ffffff8800000000 88ffffff00000000 88ffffff00000000 ffffff8800000000 88ffffff00000000 ffffff8800000000 - {a=>-74,b=>1} b6ffffff01000000 b6ffffff01000000 b6ffffff01000000 ffffffb680000000 b6ffffff01000000 b6ffffff01000000 ffffffb680000000 b6ffffff01000000 ffffffb680000000 - {a=>-4,b=>1} fcffffff01000000 fcffffff01000000 fcffffff01000000 fffffffc80000000 fcffffff01000000 fcffffff01000000 fffffffc80000000 fcffffff01000000 fffffffc80000000 - {a=>-89,b=>0} a7ffffff00000000 a7ffffff00000000 a7ffffff00000000 ffffffa700000000 a7ffffff00000000 a7ffffff00000000 ffffffa700000000 a7ffffff00000000 ffffffa700000000 - {a=>95,b=>0} 5f00000000000000 5f00000000000000 5f00000000000000 0000005f00000000 5f00000000000000 5f00000000000000 0000005f00000000 5f00000000000000 0000005f00000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>124,b=>1} 7c00000001000000 7c00000001000000 7c00000001000000 0000007c80000000 7c00000001000000 7c00000001000000 0000007c80000000 7c00000001000000 0000007c80000000 - {c=>0,a=>97,b=>1} 6100000001000000 6100000001000000 6100000001000000 0000006180000000 6100000001000000 6100000001000000 0000006180000000 6100000001000000 0000006180000000 - {c=>0,a=>-1,b=>0} ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 - {c=>0,a=>-59,b=>0} c5ffffff00000000 c5ffffff00000000 c5ffffff00000000 ffffffc500000000 c5ffffff00000000 c5ffffff00000000 ffffffc500000000 c5ffffff00000000 ffffffc500000000 - {c=>1,a=>23,b=>1} 1700000003000000 1700000003000000 1700000003000000 00000017c0000000 1700000003000000 1700000003000000 00000017c0000000 1700000003000000 00000017c0000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 0000000100000000 0100000000000000 0100000000000000 0000000100000000 0100000000000000 0000000100000000 - {c=>0,a=>-43,b=>1} d5ffffff01000000 d5ffffff01000000 d5ffffff01000000 ffffffd580000000 d5ffffff01000000 d5ffffff01000000 ffffffd580000000 d5ffffff01000000 ffffffd580000000 - {c=>0,a=>-32,b=>1} e0ffffff01000000 e0ffffff01000000 e0ffffff01000000 ffffffe080000000 e0ffffff01000000 e0ffffff01000000 ffffffe080000000 e0ffffff01000000 ffffffe080000000 - {c=>0,a=>-65,b=>1} bfffffff01000000 bfffffff01000000 bfffffff01000000 ffffffbf80000000 bfffffff01000000 bfffffff01000000 ffffffbf80000000 bfffffff01000000 ffffffbf80000000 - {c=>0,a=>-14,b=>0} f2ffffff00000000 f2ffffff00000000 f2ffffff00000000 fffffff200000000 f2ffffff00000000 f2ffffff00000000 fffffff200000000 f2ffffff00000000 fffffff200000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>89,b=>0,d=>0} 590000000000000000000000 590000000000000000000000 590000000000000000000000 000000590000000000000000 590000000000000000000000 590000000000000000000000 000000590000000000000000 590000000000000000000000 000000590000000000000000 - {c=>0,a=>-30,b=>0,d=>1} e2ffffff0000000001000000 e2ffffff0000000001000000 e2ffffff0000000001000000 ffffffe20000000080000000 e2ffffff0000000001000000 e2ffffff0000000001000000 ffffffe20000000080000000 e2ffffff0000000001000000 ffffffe20000000080000000 - {c=>1,a=>-6,b=>0,d=>0} faffffff0200000000000000 faffffff0200000000000000 faffffff0200000000000000 fffffffa4000000000000000 faffffff0200000000000000 faffffff0200000000000000 fffffffa4000000000000000 faffffff0200000000000000 fffffffa4000000000000000 - {c=>1,a=>-16,b=>1,d=>0} f0ffffff0300000000000000 f0ffffff0300000000000000 f0ffffff0300000000000000 fffffff0c000000000000000 f0ffffff0300000000000000 f0ffffff0300000000000000 fffffff0c000000000000000 f0ffffff0300000000000000 fffffff0c000000000000000 - {c=>0,a=>94,b=>1,d=>1} 5e0000000100000001000000 5e0000000100000001000000 5e0000000100000001000000 0000005e8000000080000000 5e0000000100000001000000 5e0000000100000001000000 0000005e8000000080000000 5e0000000100000001000000 0000005e8000000080000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>-1,c=>0,a=>-26,b=>1,d=>1} e6ffffff0100000003000000 e6ffffff0100000003000000 e6ffffff0100000003000000 ffffffe680000000c0000000 e6ffffff0100000003000000 e6ffffff0100000003000000 ffffffe680000000c0000000 e6ffffff0100000003000000 ffffffe680000000c0000000 - {e=>0,c=>0,a=>-38,b=>1,d=>0} daffffff0100000000000000 daffffff0100000000000000 daffffff0100000000000000 ffffffda8000000000000000 daffffff0100000000000000 daffffff0100000000000000 ffffffda8000000000000000 daffffff0100000000000000 ffffffda8000000000000000 - {e=>-1,c=>1,a=>82,b=>1,d=>1} 520000000300000003000000 520000000300000003000000 520000000300000003000000 00000052c0000000c0000000 520000000300000003000000 520000000300000003000000 00000052c0000000c0000000 520000000300000003000000 00000052c0000000c0000000 - {e=>-1,c=>1,a=>-3,b=>1,d=>0} fdffffff0300000002000000 fdffffff0300000002000000 fdffffff0300000002000000 fffffffdc000000040000000 fdffffff0300000002000000 fdffffff0300000002000000 fffffffdc000000040000000 fdffffff0300000002000000 fffffffdc000000040000000 - {e=>-1,c=>1,a=>104,b=>0,d=>1} 680000000200000003000000 680000000200000003000000 680000000200000003000000 0000006840000000c0000000 680000000200000003000000 680000000200000003000000 0000006840000000c0000000 680000000200000003000000 0000006840000000c0000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>-1,c=>0,a=>-49,b=>0,d=>1,f=>0} cfffffff0000000003000000 cfffffff0000000003000000 cfffffff0000000003000000 ffffffcf00000000c0000000 cfffffff0000000003000000 cfffffff0000000003000000 ffffffcf00000000c0000000 cfffffff0000000003000000 ffffffcf00000000c0000000 - {e=>-1,c=>1,a=>-85,b=>0,d=>1,f=>-1} abffffff0200000007000000 abffffff0200000007000000 abffffff0200000007000000 ffffffab40000000e0000000 abffffff0200000007000000 abffffff0200000007000000 ffffffab40000000e0000000 abffffff0200000007000000 ffffffab40000000e0000000 - {e=>0,c=>1,a=>-109,b=>0,d=>0,f=>0} 93ffffff0200000000000000 93ffffff0200000000000000 93ffffff0200000000000000 ffffff934000000000000000 93ffffff0200000000000000 93ffffff0200000000000000 ffffff934000000000000000 93ffffff0200000000000000 ffffff934000000000000000 - {e=>0,c=>0,a=>109,b=>0,d=>0,f=>0} 6d0000000000000000000000 6d0000000000000000000000 6d0000000000000000000000 0000006d0000000000000000 6d0000000000000000000000 6d0000000000000000000000 0000006d0000000000000000 6d0000000000000000000000 0000006d0000000000000000 - {e=>0,c=>1,a=>-3,b=>0,d=>0,f=>0} fdffffff0200000000000000 fdffffff0200000000000000 fdffffff0200000000000000 fffffffd4000000000000000 fdffffff0200000000000000 fdffffff0200000000000000 fffffffd4000000000000000 fdffffff0200000000000000 fffffffd4000000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-89,b=>0,d=>0,f=>-1} a7ffffff0000000004000000 a7ffffff0000000004000000 a7ffffff0000000004000000 ffffffa70000000020000000 a7ffffff0000000004000000 a7ffffff0000000004000000 ffffffa70000000020000000 a7ffffff0000000004000000 ffffffa70000000020000000 - {e=>-1,c=>0,a=>-6,b=>1,d=>1,f=>0} faffffff0100000003000000 faffffff0100000003000000 faffffff0100000003000000 fffffffa80000000c0000000 faffffff0100000003000000 faffffff0100000003000000 fffffffa80000000c0000000 faffffff0100000003000000 fffffffa80000000c0000000 - {e=>0,c=>0,a=>-60,b=>0,d=>1,f=>0} c4ffffff0000000001000000 c4ffffff0000000001000000 c4ffffff0000000001000000 ffffffc40000000080000000 c4ffffff0000000001000000 c4ffffff0000000001000000 ffffffc40000000080000000 c4ffffff0000000001000000 ffffffc40000000080000000 - {e=>-1,c=>1,a=>-65,b=>0,d=>1,f=>0} bfffffff0200000003000000 bfffffff0200000003000000 bfffffff0200000003000000 ffffffbf40000000c0000000 bfffffff0200000003000000 bfffffff0200000003000000 ffffffbf40000000c0000000 bfffffff0200000003000000 ffffffbf40000000c0000000 - {e=>0,c=>0,a=>-92,b=>0,d=>0,f=>-1} a4ffffff0000000004000000 a4ffffff0000000004000000 a4ffffff0000000004000000 ffffffa40000000020000000 a4ffffff0000000004000000 a4ffffff0000000004000000 ffffffa40000000020000000 a4ffffff0000000004000000 ffffffa40000000020000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>1,a=>23,g=>0,b=>0,d=>0,f=>0} 17000000020000000000000000000000 17000000020000000000000000000000 17000000020000000000000000000000 00000017400000000000000000000000 17000000020000000000000000000000 17000000020000000000000000000000 00000017400000000000000000000000 17000000020000000000000000000000 00000017400000000000000000000000 - {e=>0,c=>0,a=>-110,g=>-1,b=>1,d=>1,f=>0} 92ffffff010000000100000001000000 92ffffff010000000100000001000000 92ffffff010000000100000001000000 ffffff92800000008000000080000000 92ffffff010000000100000001000000 92ffffff010000000100000001000000 ffffff92800000008000000080000000 92ffffff010000000100000001000000 ffffff92800000008000000080000000 - {e=>0,c=>1,a=>6,g=>0,b=>0,d=>1,f=>-1} 06000000020000000500000000000000 06000000020000000500000000000000 06000000020000000500000000000000 0000000640000000a000000000000000 06000000020000000500000000000000 06000000020000000500000000000000 0000000640000000a000000000000000 06000000020000000500000000000000 0000000640000000a000000000000000 - {e=>-1,c=>0,a=>-15,g=>-1,b=>0,d=>1,f=>0} f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 fffffff100000000c000000080000000 f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 fffffff100000000c000000080000000 f1ffffff000000000300000001000000 fffffff100000000c000000080000000 - {e=>-1,c=>1,a=>-105,g=>-1,b=>1,d=>1,f=>-1} 97ffffff030000000700000001000000 97ffffff030000000700000001000000 97ffffff030000000700000001000000 ffffff97c0000000e000000080000000 97ffffff030000000700000001000000 97ffffff030000000700000001000000 ffffff97c0000000e000000080000000 97ffffff030000000700000001000000 ffffff97c0000000e000000080000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>-67,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1} bdffffff030000000600000003000000 bdffffff030000000600000003000000 bdffffff030000000600000003000000 ffffffbdc000000060000000c0000000 bdffffff030000000600000003000000 bdffffff030000000600000003000000 ffffffbdc000000060000000c0000000 bdffffff030000000600000003000000 ffffffbdc000000060000000c0000000 - {e=>0,a=>16,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1} 10000000020000000400000001000000 10000000020000000400000001000000 10000000020000000400000001000000 00000010400000002000000080000000 10000000020000000400000001000000 10000000020000000400000001000000 00000010400000002000000080000000 10000000020000000400000001000000 00000010400000002000000080000000 - {e=>0,a=>75,d=>0,c=>0,h=>0,b=>0,g=>0,f=>-1} 4b000000000000000400000000000000 4b000000000000000400000000000000 4b000000000000000400000000000000 0000004b000000002000000000000000 4b000000000000000400000000000000 4b000000000000000400000000000000 0000004b000000002000000000000000 4b000000000000000400000000000000 0000004b000000002000000000000000 - {e=>-1,a=>-78,d=>0,c=>1,h=>0,b=>1,g=>-1,f=>0} b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 ffffffb2c00000004000000080000000 b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 ffffffb2c00000004000000080000000 b2ffffff030000000200000001000000 ffffffb2c00000004000000080000000 - {e=>0,a=>50,d=>1,c=>1,h=>0,b=>1,g=>0,f=>0} 32000000030000000100000000000000 32000000030000000100000000000000 32000000030000000100000000000000 00000032c00000008000000000000000 32000000030000000100000000000000 32000000030000000100000000000000 00000032c00000008000000000000000 32000000030000000100000000000000 00000032c00000008000000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>0,a=>45,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 2d000000020000000400000005000000 2d000000020000000400000005000000 2d000000020000000400000005000000 0000002d4000000020000000a0000000 2d000000020000000400000005000000 2d000000020000000400000005000000 0000002d4000000020000000a0000000 2d000000020000000400000005000000 0000002d4000000020000000a0000000 - {e=>0,a=>-65,d=>1,c=>1,h=>-1,b=>0,g=>-1,f=>-1,i=>0} bfffffff020000000500000003000000 bfffffff020000000500000003000000 bfffffff020000000500000003000000 ffffffbf40000000a0000000c0000000 bfffffff020000000500000003000000 bfffffff020000000500000003000000 ffffffbf40000000a0000000c0000000 bfffffff020000000500000003000000 ffffffbf40000000a0000000c0000000 - {e=>-1,a=>5,d=>0,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>0} 05000000030000000600000000000000 05000000030000000600000000000000 05000000030000000600000000000000 00000005c00000006000000000000000 05000000030000000600000000000000 05000000030000000600000000000000 00000005c00000006000000000000000 05000000030000000600000000000000 00000005c00000006000000000000000 - {e=>-1,a=>53,d=>1,c=>0,h=>-1,b=>1,g=>0,f=>-1,i=>-1} 35000000010000000700000006000000 35000000010000000700000006000000 35000000010000000700000006000000 0000003580000000e000000060000000 35000000010000000700000006000000 35000000010000000700000006000000 0000003580000000e000000060000000 35000000010000000700000006000000 0000003580000000e000000060000000 - {e=>-1,a=>-98,d=>0,c=>1,h=>-1,b=>1,g=>0,f=>0,i=>-1} 9effffff030000000200000006000000 9effffff030000000200000006000000 9effffff030000000200000006000000 ffffff9ec00000004000000060000000 9effffff030000000200000006000000 9effffff030000000200000006000000 ffffff9ec00000004000000060000000 9effffff030000000200000006000000 ffffff9ec00000004000000060000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>0,a=>79,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} 4f000000010000000000000003000000 4f000000010000000000000003000000 4f000000010000000000000003000000 0000004f8000000000000000c0000000 4f000000010000000000000003000000 4f000000010000000000000003000000 0000004f8000000000000000c0000000 4f000000010000000000000003000000 0000004f8000000000000000c0000000 - {e=>0,a=>-115,d=>1,c=>0,h=>0,b=>1,g=>0,f=>-1,i=>-1} 8dffffff010000000500000004000000 8dffffff010000000500000004000000 8dffffff010000000500000004000000 ffffff8d80000000a000000020000000 8dffffff010000000500000004000000 8dffffff010000000500000004000000 ffffff8d80000000a000000020000000 8dffffff010000000500000004000000 ffffff8d80000000a000000020000000 - {e=>-1,a=>-69,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>0} bbffffff030000000200000003000000 bbffffff030000000200000003000000 bbffffff030000000200000003000000 ffffffbbc000000040000000c0000000 bbffffff030000000200000003000000 bbffffff030000000200000003000000 ffffffbbc000000040000000c0000000 bbffffff030000000200000003000000 ffffffbbc000000040000000c0000000 - {e=>-1,a=>0,d=>0,c=>1,h=>0,b=>1,g=>-1,f=>0,i=>-1} 00000000030000000200000005000000 00000000030000000200000005000000 00000000030000000200000005000000 00000000c000000040000000a0000000 00000000030000000200000005000000 00000000030000000200000005000000 00000000c000000040000000a0000000 00000000030000000200000005000000 00000000c000000040000000a0000000 - {e=>-1,a=>34,d=>1,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>-1} 22000000030000000700000004000000 22000000030000000700000004000000 22000000030000000700000004000000 00000022c0000000e000000020000000 22000000030000000700000004000000 22000000030000000700000004000000 00000022c0000000e000000020000000 22000000030000000700000004000000 00000022c0000000e000000020000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>0,a=>67,d=>0,j=>0,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>0} 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 00000043c0000000200000000000000000000000 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 00000043c0000000200000000000000000000000 4300000003000000040000000000000000000000 00000043c0000000200000000000000000000000 - {e=>0,a=>23,d=>0,j=>-1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 000000174000000020000000a000000080000000 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 000000174000000020000000a000000080000000 1700000002000000040000000500000001000000 000000174000000020000000a000000080000000 - {e=>0,a=>89,d=>0,j=>0,c=>0,h=>-1,b=>0,g=>-1,f=>-1,i=>0} 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 000000590000000020000000c000000000000000 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 000000590000000020000000c000000000000000 5900000000000000040000000300000000000000 000000590000000020000000c000000000000000 - {e=>0,a=>-97,d=>0,j=>0,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 ffffff9f4000000000000000e000000000000000 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 ffffff9f4000000000000000e000000000000000 9fffffff02000000000000000700000000000000 ffffff9f4000000000000000e000000000000000 - {e=>0,a=>-76,d=>1,j=>-1,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 ffffffb48000000080000000c000000080000000 b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 ffffffb48000000080000000c000000080000000 b4ffffff01000000010000000300000001000000 ffffffb48000000080000000c000000080000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>0,a=>-74,d=>1,j=>0,c=>1,k=>96,h=>0,b=>1,g=>-1,f=>0,i=>0} b6ffffff0300000001000000010000000000000060000000 b6ffffff03000000010000000100000000000000000000006000000000000000 b6ffffff03000000010000000100000000000000000000006000000000000000 ffffffb6c000000080000000800000000000000000000060 b6ffffff0300000001000000010000000000000060000000 b6ffffff0300000001000000010000000000000060000000 ffffffb6c0000000800000008000000000000000000000000000000000000060 b6ffffff0300000001000000010000000000000060000000 ffffffb6c000000080000000800000000000000000000060 - {e=>0,a=>89,d=>1,j=>0,c=>0,k=>-51,h=>0,b=>0,g=>-1,f=>0,i=>-1} 5900000000000000010000000500000000000000cdffffff 590000000000000001000000050000000000000000000000cdffffffffffffff 590000000000000001000000050000000000000000000000cdffffffffffffff 000000590000000080000000a000000000000000ffffffcd 5900000000000000010000000500000000000000cdffffff 5900000000000000010000000500000000000000cdffffff 000000590000000080000000a00000000000000000000000ffffffffffffffcd 5900000000000000010000000500000000000000cdffffff 000000590000000080000000a000000000000000ffffffcd - {e=>-1,a=>48,d=>0,j=>0,c=>0,k=>116,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 300000000000000002000000070000000000000074000000 3000000000000000020000000700000000000000000000007400000000000000 3000000000000000020000000700000000000000000000007400000000000000 000000300000000040000000e00000000000000000000074 300000000000000002000000070000000000000074000000 300000000000000002000000070000000000000074000000 000000300000000040000000e000000000000000000000000000000000000074 300000000000000002000000070000000000000074000000 000000300000000040000000e00000000000000000000074 - {e=>0,a=>-74,d=>0,j=>0,c=>1,k=>59,h=>0,b=>1,g=>0,f=>-1,i=>0} b6ffffff030000000400000000000000000000003b000000 b6ffffff03000000040000000000000000000000000000003b00000000000000 b6ffffff03000000040000000000000000000000000000003b00000000000000 ffffffb6c00000002000000000000000000000000000003b b6ffffff030000000400000000000000000000003b000000 b6ffffff030000000400000000000000000000003b000000 ffffffb6c000000020000000000000000000000000000000000000000000003b b6ffffff030000000400000000000000000000003b000000 ffffffb6c00000002000000000000000000000000000003b - {e=>-1,a=>63,d=>1,j=>-1,c=>0,k=>49,h=>0,b=>0,g=>-1,f=>0,i=>0} 3f0000000000000003000000010000000100000031000000 3f00000000000000030000000100000001000000000000003100000000000000 3f00000000000000030000000100000001000000000000003100000000000000 0000003f00000000c0000000800000008000000000000031 3f0000000000000003000000010000000100000031000000 3f0000000000000003000000010000000100000031000000 0000003f00000000c00000008000000080000000000000000000000000000031 3f0000000000000003000000010000000100000031000000 0000003f00000000c0000000800000008000000000000031 = struct mixed1 { long a; unsigned int b:1; }; - {a=>-77,b=>1} b3ffffff01000000 b3ffffffffffffff0100000000000000 b3ffffffffffffff0100000000000000 ffffffb380000000 b3ffffff01000000 b3ffffff01000000 ffffffffffffffb38000000000000000 b3ffffff01000000 ffffffb380000000 - {a=>-4,b=>0} fcffffff00000000 fcffffffffffffff0000000000000000 fcffffffffffffff0000000000000000 fffffffc00000000 fcffffff00000000 fcffffff00000000 fffffffffffffffc0000000000000000 fcffffff00000000 fffffffc00000000 - {a=>106,b=>1} 6a00000001000000 6a000000000000000100000000000000 6a000000000000000100000000000000 0000006a80000000 6a00000001000000 6a00000001000000 000000000000006a8000000000000000 6a00000001000000 0000006a80000000 - {a=>-44,b=>1} d4ffffff01000000 d4ffffffffffffff0100000000000000 d4ffffffffffffff0100000000000000 ffffffd480000000 d4ffffff01000000 d4ffffff01000000 ffffffffffffffd48000000000000000 d4ffffff01000000 ffffffd480000000 - {a=>-88,b=>1} a8ffffff01000000 a8ffffffffffffff0100000000000000 a8ffffffffffffff0100000000000000 ffffffa880000000 a8ffffff01000000 a8ffffff01000000 ffffffffffffffa88000000000000000 a8ffffff01000000 ffffffa880000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>-69,b=>1} bbffffff01000000 bbffffffffffffff0100000000000000 bbffffffffffffff0100000000000000 ffffffbb80000000 bbffffff01000000 bbffffff01000000 ffffffffffffffbb8000000000000000 bbffffff01000000 ffffffbb80000000 - {c=>0,a=>-85,b=>1} abffffff01000000 abffffffffffffff0100000000000000 abffffffffffffff0100000000000000 ffffffab80000000 abffffff01000000 abffffff01000000 ffffffffffffffab8000000000000000 abffffff01000000 ffffffab80000000 - {c=>0,a=>33,b=>1} 2100000001000000 21000000000000000100000000000000 21000000000000000100000000000000 0000002180000000 2100000001000000 2100000001000000 00000000000000218000000000000000 2100000001000000 0000002180000000 - {c=>1,a=>40,b=>1} 2800000003000000 28000000000000000300000000000000 28000000000000000300000000000000 00000028c0000000 2800000003000000 2800000003000000 0000000000000028c000000000000000 2800000003000000 00000028c0000000 - {c=>0,a=>-14,b=>1} f2ffffff01000000 f2ffffffffffffff0100000000000000 f2ffffffffffffff0100000000000000 fffffff280000000 f2ffffff01000000 f2ffffff01000000 fffffffffffffff28000000000000000 f2ffffff01000000 fffffff280000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>-30,b=>0} e2ffffff00000000 e2ffffffffffffff0000000000000000 e2ffffffffffffff0000000000000000 ffffffe200000000 e2ffffff00000000 e2ffffff00000000 ffffffffffffffe20000000000000000 e2ffffff00000000 ffffffe200000000 - {c=>0,a=>-60,b=>0} c4ffffff00000000 c4ffffffffffffff0000000000000000 c4ffffffffffffff0000000000000000 ffffffc400000000 c4ffffff00000000 c4ffffff00000000 ffffffffffffffc40000000000000000 c4ffffff00000000 ffffffc400000000 - {c=>1,a=>57,b=>0} 3900000002000000 39000000000000000200000000000000 39000000000000000200000000000000 0000003940000000 3900000002000000 3900000002000000 00000000000000394000000000000000 3900000002000000 0000003940000000 - {c=>1,a=>11,b=>0} 0b00000002000000 0b000000000000000200000000000000 0b000000000000000200000000000000 0000000b40000000 0b00000002000000 0b00000002000000 000000000000000b4000000000000000 0b00000002000000 0000000b40000000 - {c=>1,a=>-73,b=>1} b7ffffff03000000 b7ffffffffffffff0300000000000000 b7ffffffffffffff0300000000000000 ffffffb7c0000000 b7ffffff03000000 b7ffffff03000000 ffffffffffffffb7c000000000000000 b7ffffff03000000 ffffffb7c0000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>-46,b=>0,d=>1} d2ffffff0000000001000000 d2ffffffffffffff0000000001000000 d2ffffffffffffff0000000001000000 ffffffd20000000080000000 d2ffffff0000000001000000 d2ffffff0000000001000000 ffffffffffffffd20000000080000000 d2ffffff0000000001000000 ffffffd20000000080000000 - {c=>0,a=>27,b=>0,d=>0} 1b0000000000000000000000 1b000000000000000000000000000000 1b000000000000000000000000000000 0000001b0000000000000000 1b0000000000000000000000 1b0000000000000000000000 000000000000001b0000000000000000 1b0000000000000000000000 0000001b0000000000000000 - {c=>1,a=>1,b=>1,d=>0} 010000000300000000000000 01000000000000000300000000000000 01000000000000000300000000000000 00000001c000000000000000 010000000300000000000000 010000000300000000000000 0000000000000001c000000000000000 010000000300000000000000 00000001c000000000000000 - {c=>1,a=>71,b=>0,d=>0} 470000000200000000000000 47000000000000000200000000000000 47000000000000000200000000000000 000000474000000000000000 470000000200000000000000 470000000200000000000000 00000000000000474000000000000000 470000000200000000000000 000000474000000000000000 - {c=>0,a=>-14,b=>1,d=>1} f2ffffff0100000001000000 f2ffffffffffffff0100000001000000 f2ffffffffffffff0100000001000000 fffffff28000000080000000 f2ffffff0100000001000000 f2ffffff0100000001000000 fffffffffffffff28000000080000000 f2ffffff0100000001000000 fffffff28000000080000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>-1,c=>1,a=>19,b=>0,d=>0} 130000000200000002000000 13000000000000000200000002000000 13000000000000000200000002000000 000000134000000040000000 130000000200000002000000 130000000200000002000000 00000000000000134000000040000000 130000000200000002000000 000000134000000040000000 - {e=>-1,c=>1,a=>70,b=>0,d=>1} 460000000200000003000000 46000000000000000200000003000000 46000000000000000200000003000000 0000004640000000c0000000 460000000200000003000000 460000000200000003000000 000000000000004640000000c0000000 460000000200000003000000 0000004640000000c0000000 - {e=>-1,c=>1,a=>-112,b=>1,d=>0} 90ffffff0300000002000000 90ffffffffffffff0300000002000000 90ffffffffffffff0300000002000000 ffffff90c000000040000000 90ffffff0300000002000000 90ffffff0300000002000000 ffffffffffffff90c000000040000000 90ffffff0300000002000000 ffffff90c000000040000000 - {e=>0,c=>0,a=>90,b=>0,d=>1} 5a0000000000000001000000 5a000000000000000000000001000000 5a000000000000000000000001000000 0000005a0000000080000000 5a0000000000000001000000 5a0000000000000001000000 000000000000005a0000000080000000 5a0000000000000001000000 0000005a0000000080000000 - {e=>-1,c=>1,a=>-16,b=>1,d=>0} f0ffffff0300000002000000 f0ffffffffffffff0300000002000000 f0ffffffffffffff0300000002000000 fffffff0c000000040000000 f0ffffff0300000002000000 f0ffffff0300000002000000 fffffffffffffff0c000000040000000 f0ffffff0300000002000000 fffffff0c000000040000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>-1,c=>1,a=>92,b=>0,d=>0,f=>-1} 5c0000000200000006000000 5c000000000000000200000006000000 5c000000000000000200000006000000 0000005c4000000060000000 5c0000000200000006000000 5c0000000200000006000000 000000000000005c4000000060000000 5c0000000200000006000000 0000005c4000000060000000 - {e=>0,c=>1,a=>-112,b=>1,d=>0,f=>0} 90ffffff0300000000000000 90ffffffffffffff0300000000000000 90ffffffffffffff0300000000000000 ffffff90c000000000000000 90ffffff0300000000000000 90ffffff0300000000000000 ffffffffffffff90c000000000000000 90ffffff0300000000000000 ffffff90c000000000000000 - {e=>-1,c=>0,a=>-75,b=>1,d=>1,f=>0} b5ffffff0100000003000000 b5ffffffffffffff0100000003000000 b5ffffffffffffff0100000003000000 ffffffb580000000c0000000 b5ffffff0100000003000000 b5ffffff0100000003000000 ffffffffffffffb580000000c0000000 b5ffffff0100000003000000 ffffffb580000000c0000000 - {e=>0,c=>0,a=>-54,b=>1,d=>1,f=>-1} caffffff0100000005000000 caffffffffffffff0100000005000000 caffffffffffffff0100000005000000 ffffffca80000000a0000000 caffffff0100000005000000 caffffff0100000005000000 ffffffffffffffca80000000a0000000 caffffff0100000005000000 ffffffca80000000a0000000 - {e=>0,c=>0,a=>-3,b=>0,d=>0,f=>-1} fdffffff0000000004000000 fdffffffffffffff0000000004000000 fdffffffffffffff0000000004000000 fffffffd0000000020000000 fdffffff0000000004000000 fdffffff0000000004000000 fffffffffffffffd0000000020000000 fdffffff0000000004000000 fffffffd0000000020000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>1,a=>99,b=>1,d=>0,f=>0} 630000000300000000000000 63000000000000000300000000000000 63000000000000000300000000000000 00000063c000000000000000 630000000300000000000000 630000000300000000000000 0000000000000063c000000000000000 630000000300000000000000 00000063c000000000000000 - {e=>0,c=>1,a=>121,b=>1,d=>1,f=>0} 790000000300000001000000 79000000000000000300000001000000 79000000000000000300000001000000 00000079c000000080000000 790000000300000001000000 790000000300000001000000 0000000000000079c000000080000000 790000000300000001000000 00000079c000000080000000 - {e=>0,c=>1,a=>101,b=>0,d=>0,f=>-1} 650000000200000004000000 65000000000000000200000004000000 65000000000000000200000004000000 000000654000000020000000 650000000200000004000000 650000000200000004000000 00000000000000654000000020000000 650000000200000004000000 000000654000000020000000 - {e=>0,c=>1,a=>-100,b=>0,d=>0,f=>0} 9cffffff0200000000000000 9cffffffffffffff0200000000000000 9cffffffffffffff0200000000000000 ffffff9c4000000000000000 9cffffff0200000000000000 9cffffff0200000000000000 ffffffffffffff9c4000000000000000 9cffffff0200000000000000 ffffff9c4000000000000000 - {e=>0,c=>1,a=>-59,b=>0,d=>1,f=>0} c5ffffff0200000001000000 c5ffffffffffffff0200000001000000 c5ffffffffffffff0200000001000000 ffffffc54000000080000000 c5ffffff0200000001000000 c5ffffff0200000001000000 ffffffffffffffc54000000080000000 c5ffffff0200000001000000 ffffffc54000000080000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>0,a=>73,g=>-1,b=>1,d=>1,f=>-1} 49000000010000000500000001000000 490000000000000001000000050000000100000000000000 490000000000000001000000050000000100000000000000 0000004980000000a000000080000000 49000000010000000500000001000000 49000000010000000500000001000000 000000000000004980000000a00000008000000000000000 49000000010000000500000001000000 0000004980000000a000000080000000 - {e=>0,c=>0,a=>11,g=>0,b=>1,d=>0,f=>0} 0b000000010000000000000000000000 0b0000000000000001000000000000000000000000000000 0b0000000000000001000000000000000000000000000000 0000000b800000000000000000000000 0b000000010000000000000000000000 0b000000010000000000000000000000 000000000000000b80000000000000000000000000000000 0b000000010000000000000000000000 0000000b800000000000000000000000 - {e=>-1,c=>0,a=>-31,g=>-1,b=>1,d=>1,f=>0} e1ffffff010000000300000001000000 e1ffffffffffffff01000000030000000100000000000000 e1ffffffffffffff01000000030000000100000000000000 ffffffe180000000c000000080000000 e1ffffff010000000300000001000000 e1ffffff010000000300000001000000 ffffffffffffffe180000000c00000008000000000000000 e1ffffff010000000300000001000000 ffffffe180000000c000000080000000 - {e=>-1,c=>0,a=>-124,g=>-1,b=>1,d=>1,f=>-1} 84ffffff010000000700000001000000 84ffffffffffffff01000000070000000100000000000000 84ffffffffffffff01000000070000000100000000000000 ffffff8480000000e000000080000000 84ffffff010000000700000001000000 84ffffff010000000700000001000000 ffffffffffffff8480000000e00000008000000000000000 84ffffff010000000700000001000000 ffffff8480000000e000000080000000 - {e=>-1,c=>0,a=>-42,g=>0,b=>1,d=>0,f=>-1} d6ffffff010000000600000000000000 d6ffffffffffffff01000000060000000000000000000000 d6ffffffffffffff01000000060000000000000000000000 ffffffd6800000006000000000000000 d6ffffff010000000600000000000000 d6ffffff010000000600000000000000 ffffffffffffffd680000000600000000000000000000000 d6ffffff010000000600000000000000 ffffffd6800000006000000000000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>86,d=>0,c=>0,h=>0,b=>0,g=>0,f=>-1} 56000000000000000600000000000000 560000000000000000000000060000000000000000000000 560000000000000000000000060000000000000000000000 00000056000000006000000000000000 56000000000000000600000000000000 56000000000000000600000000000000 000000000000005600000000600000000000000000000000 56000000000000000600000000000000 00000056000000006000000000000000 - {e=>-1,a=>-97,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1} 9fffffff000000000700000001000000 9fffffffffffffff00000000070000000100000000000000 9fffffffffffffff00000000070000000100000000000000 ffffff9f00000000e000000080000000 9fffffff000000000700000001000000 9fffffff000000000700000001000000 ffffffffffffff9f00000000e00000008000000000000000 9fffffff000000000700000001000000 ffffff9f00000000e000000080000000 - {e=>0,a=>18,d=>0,c=>1,h=>-1,b=>0,g=>0,f=>0} 12000000020000000000000002000000 120000000000000002000000000000000200000000000000 120000000000000002000000000000000200000000000000 00000012400000000000000040000000 12000000020000000000000002000000 12000000020000000000000002000000 000000000000001240000000000000004000000000000000 12000000020000000000000002000000 00000012400000000000000040000000 - {e=>0,a=>-102,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>0} 9affffff010000000000000003000000 9affffffffffffff01000000000000000300000000000000 9affffffffffffff01000000000000000300000000000000 ffffff9a8000000000000000c0000000 9affffff010000000000000003000000 9affffff010000000000000003000000 ffffffffffffff9a8000000000000000c000000000000000 9affffff010000000000000003000000 ffffff9a8000000000000000c0000000 - {e=>0,a=>-36,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0} dcffffff010000000000000002000000 dcffffffffffffff01000000000000000200000000000000 dcffffffffffffff01000000000000000200000000000000 ffffffdc800000000000000040000000 dcffffff010000000000000002000000 dcffffff010000000000000002000000 ffffffffffffffdc80000000000000004000000000000000 dcffffff010000000000000002000000 ffffffdc800000000000000040000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>83,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 53000000030000000700000003000000 530000000000000003000000070000000300000000000000 530000000000000003000000070000000300000000000000 00000053c0000000e0000000c0000000 53000000030000000700000003000000 53000000030000000700000003000000 0000000000000053c0000000e0000000c000000000000000 53000000030000000700000003000000 00000053c0000000e0000000c0000000 - {e=>0,a=>35,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>0,i=>0} 23000000010000000100000001000000 230000000000000001000000010000000100000000000000 230000000000000001000000010000000100000000000000 00000023800000008000000080000000 23000000010000000100000001000000 23000000010000000100000001000000 000000000000002380000000800000008000000000000000 23000000010000000100000001000000 00000023800000008000000080000000 - {e=>-1,a=>-48,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} d0ffffff020000000700000002000000 d0ffffffffffffff02000000070000000200000000000000 d0ffffffffffffff02000000070000000200000000000000 ffffffd040000000e000000040000000 d0ffffff020000000700000002000000 d0ffffff020000000700000002000000 ffffffffffffffd040000000e00000004000000000000000 d0ffffff020000000700000002000000 ffffffd040000000e000000040000000 - {e=>-1,a=>47,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>0,i=>0} 2f000000020000000300000002000000 2f0000000000000002000000030000000200000000000000 2f0000000000000002000000030000000200000000000000 0000002f40000000c000000040000000 2f000000020000000300000002000000 2f000000020000000300000002000000 000000000000002f40000000c00000004000000000000000 2f000000020000000300000002000000 0000002f40000000c000000040000000 - {e=>-1,a=>-92,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} a4ffffff010000000300000003000000 a4ffffffffffffff01000000030000000300000000000000 a4ffffffffffffff01000000030000000300000000000000 ffffffa480000000c0000000c0000000 a4ffffff010000000300000003000000 a4ffffff010000000300000003000000 ffffffffffffffa480000000c0000000c000000000000000 a4ffffff010000000300000003000000 ffffffa480000000c0000000c0000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>0,a=>-32,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} e0ffffff010000000400000003000000 e0ffffffffffffff01000000040000000300000000000000 e0ffffffffffffff01000000040000000300000000000000 ffffffe08000000020000000c0000000 e0ffffff010000000400000003000000 e0ffffff010000000400000003000000 ffffffffffffffe08000000020000000c000000000000000 e0ffffff010000000400000003000000 ffffffe08000000020000000c0000000 - {e=>0,a=>-105,d=>1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 97ffffff020000000500000005000000 97ffffffffffffff02000000050000000500000000000000 97ffffffffffffff02000000050000000500000000000000 ffffff9740000000a0000000a0000000 97ffffff020000000500000005000000 97ffffff020000000500000005000000 ffffffffffffff9740000000a0000000a000000000000000 97ffffff020000000500000005000000 ffffff9740000000a0000000a0000000 - {e=>0,a=>95,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 5f000000030000000500000007000000 5f0000000000000003000000050000000700000000000000 5f0000000000000003000000050000000700000000000000 0000005fc0000000a0000000e0000000 5f000000030000000500000007000000 5f000000030000000500000007000000 000000000000005fc0000000a0000000e000000000000000 5f000000030000000500000007000000 0000005fc0000000a0000000e0000000 - {e=>-1,a=>-81,d=>0,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} afffffff010000000200000000000000 afffffffffffffff01000000020000000000000000000000 afffffffffffffff01000000020000000000000000000000 ffffffaf800000004000000000000000 afffffff010000000200000000000000 afffffff010000000200000000000000 ffffffffffffffaf80000000400000000000000000000000 afffffff010000000200000000000000 ffffffaf800000004000000000000000 - {e=>-1,a=>54,d=>0,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 36000000000000000200000007000000 360000000000000000000000020000000700000000000000 360000000000000000000000020000000700000000000000 000000360000000040000000e0000000 36000000000000000200000007000000 36000000000000000200000007000000 00000000000000360000000040000000e000000000000000 36000000000000000200000007000000 000000360000000040000000e0000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>0,a=>-112,d=>0,j=>0,c=>1,h=>0,b=>1,g=>-1,f=>0,i=>-1} 90ffffff03000000000000000500000000000000 90ffffffffffffff03000000000000000500000000000000 90ffffffffffffff03000000000000000500000000000000 ffffff90c000000000000000a000000000000000 90ffffff03000000000000000500000000000000 90ffffff03000000000000000500000000000000 ffffffffffffff90c000000000000000a000000000000000 90ffffff03000000000000000500000000000000 ffffff90c000000000000000a000000000000000 - {e=>0,a=>39,d=>0,j=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 2700000003000000040000000300000000000000 270000000000000003000000040000000300000000000000 270000000000000003000000040000000300000000000000 00000027c000000020000000c000000000000000 2700000003000000040000000300000000000000 2700000003000000040000000300000000000000 0000000000000027c000000020000000c000000000000000 2700000003000000040000000300000000000000 00000027c000000020000000c000000000000000 - {e=>-1,a=>113,d=>1,j=>-1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} 7100000002000000070000000200000001000000 710000000000000002000000070000000200000001000000 710000000000000002000000070000000200000001000000 0000007140000000e00000004000000080000000 7100000002000000070000000200000001000000 7100000002000000070000000200000001000000 000000000000007140000000e00000004000000080000000 7100000002000000070000000200000001000000 0000007140000000e00000004000000080000000 - {e=>0,a=>118,d=>1,j=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>-1} 7600000002000000010000000400000000000000 760000000000000002000000010000000400000000000000 760000000000000002000000010000000400000000000000 0000007640000000800000002000000000000000 7600000002000000010000000400000000000000 7600000002000000010000000400000000000000 000000000000007640000000800000002000000000000000 7600000002000000010000000400000000000000 0000007640000000800000002000000000000000 - {e=>-1,a=>80,d=>0,j=>-1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>0} 5000000002000000060000000100000001000000 500000000000000002000000060000000100000001000000 500000000000000002000000060000000100000001000000 0000005040000000600000008000000080000000 5000000002000000060000000100000001000000 5000000002000000060000000100000001000000 000000000000005040000000600000008000000080000000 5000000002000000060000000100000001000000 0000005040000000600000008000000080000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>-1,a=>2,d=>0,j=>0,c=>1,k=>-79,h=>0,b=>1,g=>0,f=>0,i=>0} 0200000003000000020000000000000000000000b1ffffff 020000000000000003000000020000000000000000000000b1ffffffffffffff 020000000000000003000000020000000000000000000000b1ffffffffffffff 00000002c0000000400000000000000000000000ffffffb1 0200000003000000020000000000000000000000b1ffffff 0200000003000000020000000000000000000000b1ffffff 0000000000000002c0000000400000000000000000000000ffffffffffffffb1 0200000003000000020000000000000000000000b1ffffff 00000002c0000000400000000000000000000000ffffffb1 - {e=>0,a=>-88,d=>1,j=>0,c=>1,k=>-90,h=>0,b=>0,g=>-1,f=>0,i=>0} a8ffffff02000000010000000100000000000000a6ffffff a8ffffffffffffff02000000010000000100000000000000a6ffffffffffffff a8ffffffffffffff02000000010000000100000000000000a6ffffffffffffff ffffffa840000000800000008000000000000000ffffffa6 a8ffffff02000000010000000100000000000000a6ffffff a8ffffff02000000010000000100000000000000a6ffffff ffffffffffffffa840000000800000008000000000000000ffffffffffffffa6 a8ffffff02000000010000000100000000000000a6ffffff ffffffa840000000800000008000000000000000ffffffa6 - {e=>0,a=>-63,d=>0,j=>-1,c=>1,k=>22,h=>-1,b=>0,g=>0,f=>-1,i=>0} c1ffffff0200000004000000020000000100000016000000 c1ffffffffffffff020000000400000002000000010000001600000000000000 c1ffffffffffffff020000000400000002000000010000001600000000000000 ffffffc14000000020000000400000008000000000000016 c1ffffff0200000004000000020000000100000016000000 c1ffffff0200000004000000020000000100000016000000 ffffffffffffffc1400000002000000040000000800000000000000000000016 c1ffffff0200000004000000020000000100000016000000 ffffffc14000000020000000400000008000000000000016 - {e=>0,a=>23,d=>1,j=>0,c=>1,k=>21,h=>0,b=>1,g=>-1,f=>-1,i=>0} 170000000300000005000000010000000000000015000000 1700000000000000030000000500000001000000000000001500000000000000 1700000000000000030000000500000001000000000000001500000000000000 00000017c0000000a0000000800000000000000000000015 170000000300000005000000010000000000000015000000 170000000300000005000000010000000000000015000000 0000000000000017c0000000a000000080000000000000000000000000000015 170000000300000005000000010000000000000015000000 00000017c0000000a0000000800000000000000000000015 - {e=>-1,a=>84,d=>1,j=>-1,c=>1,k=>47,h=>0,b=>1,g=>-1,f=>0,i=>-1} 54000000030000000300000005000000010000002f000000 5400000000000000030000000300000005000000010000002f00000000000000 5400000000000000030000000300000005000000010000002f00000000000000 00000054c0000000c0000000a0000000800000000000002f 54000000030000000300000005000000010000002f000000 54000000030000000300000005000000010000002f000000 0000000000000054c0000000c0000000a000000080000000000000000000002f 54000000030000000300000005000000010000002f000000 00000054c0000000c0000000a0000000800000000000002f = struct mixed2 { unsigned int a:2; }; - {a=>1} 01000000 01000000 01000000 40000000 01000000 01000000 40000000 01000000 40000000 - {a=>2} 02000000 02000000 02000000 80000000 02000000 02000000 80000000 02000000 80000000 - {a=>2} 02000000 02000000 02000000 80000000 02000000 02000000 80000000 02000000 80000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; }; - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>0,b=>2} 08000000 08000000 08000000 20000000 08000000 08000000 20000000 08000000 20000000 - {a=>3,b=>3} 0f000000 0f000000 0f000000 f0000000 0f000000 0f000000 f0000000 0f000000 f0000000 - {a=>2,b=>1} 06000000 06000000 06000000 90000000 06000000 06000000 90000000 06000000 90000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; }; - {a=>2,b=>1} 06000000 06000000 06000000 90000000 06000000 06000000 90000000 06000000 90000000 - {a=>0,b=>3} 0c000000 0c000000 0c000000 30000000 0c000000 0c000000 30000000 0c000000 30000000 - {a=>2,b=>2} 0a000000 0a000000 0a000000 a0000000 0a000000 0a000000 a0000000 0a000000 a0000000 - {a=>3,b=>0} 03000000 03000000 03000000 c0000000 03000000 03000000 c0000000 03000000 c0000000 - {a=>3,b=>1} 07000000 07000000 07000000 d0000000 07000000 07000000 d0000000 07000000 d0000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; }; - {c=>0,a=>3,b=>2} 0b00000000000000 0b00000000000000 0b00000000000000 e000000000000000 0b00000000000000 0b00000000000000 e000000000000000 0b00000000000000 e000000000000000 - {c=>2,a=>2,b=>3} 0e00000002000000 0e00000002000000 0e00000002000000 b000000080000000 0e00000002000000 0e00000002000000 b000000080000000 0e00000002000000 b000000080000000 - {c=>3,a=>2,b=>2} 0a00000003000000 0a00000003000000 0a00000003000000 a0000000c0000000 0a00000003000000 0a00000003000000 a0000000c0000000 0a00000003000000 a0000000c0000000 - {c=>1,a=>2,b=>3} 0e00000001000000 0e00000001000000 0e00000001000000 b000000040000000 0e00000001000000 0e00000001000000 b000000040000000 0e00000001000000 b000000040000000 - {c=>1,a=>0,b=>1} 0400000001000000 0400000001000000 0400000001000000 1000000040000000 0400000001000000 0400000001000000 1000000040000000 0400000001000000 1000000040000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; }; - {c=>0,a=>2,b=>2,d=>-1} 0a0000000c000000 0a0000000c000000 0a0000000c000000 a000000030000000 0a0000000c000000 0a0000000c000000 a000000030000000 0a0000000c000000 a000000030000000 - {c=>1,a=>0,b=>1,d=>0} 0400000001000000 0400000001000000 0400000001000000 1000000040000000 0400000001000000 0400000001000000 1000000040000000 0400000001000000 1000000040000000 - {c=>2,a=>2,b=>1,d=>0} 0600000002000000 0600000002000000 0600000002000000 9000000080000000 0600000002000000 0600000002000000 9000000080000000 0600000002000000 9000000080000000 - {c=>2,a=>0,b=>2,d=>0} 0800000002000000 0800000002000000 0800000002000000 2000000080000000 0800000002000000 0800000002000000 2000000080000000 0800000002000000 2000000080000000 - {c=>1,a=>1,b=>3,d=>0} 0d00000001000000 0d00000001000000 0d00000001000000 7000000040000000 0d00000001000000 0d00000001000000 7000000040000000 0d00000001000000 7000000040000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; }; - {e=>1,c=>0,a=>1,b=>2,d=>-2} 0900000018000000 0900000018000000 0900000018000000 6000000024000000 0900000018000000 0900000018000000 6000000024000000 0900000018000000 6000000024000000 - {e=>0,c=>1,a=>0,b=>2,d=>-1} 080000000d000000 080000000d000000 080000000d000000 2000000070000000 080000000d000000 080000000d000000 2000000070000000 080000000d000000 2000000070000000 - {e=>-2,c=>3,a=>3,b=>1,d=>1} 0700000027000000 0700000027000000 0700000027000000 d0000000d8000000 0700000027000000 0700000027000000 d0000000d8000000 0700000027000000 d0000000d8000000 - {e=>1,c=>3,a=>0,b=>1,d=>-1} 040000001f000000 040000001f000000 040000001f000000 10000000f4000000 040000001f000000 040000001f000000 10000000f4000000 040000001f000000 10000000f4000000 - {e=>-2,c=>0,a=>0,b=>3,d=>-2} 0c00000028000000 0c00000028000000 0c00000028000000 3000000028000000 0c00000028000000 0c00000028000000 3000000028000000 0c00000028000000 3000000028000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; }; - {e=>-1,c=>3,a=>2,b=>1,d=>1} 0600000037000000 0600000037000000 0600000037000000 90000000dc000000 0600000037000000 0600000037000000 90000000dc000000 0600000037000000 90000000dc000000 - {e=>-2,c=>0,a=>1,b=>2,d=>-2} 0900000028000000 0900000028000000 0900000028000000 6000000028000000 0900000028000000 0900000028000000 6000000028000000 0900000028000000 6000000028000000 - {e=>0,c=>3,a=>2,b=>2,d=>0} 0a00000003000000 0a00000003000000 0a00000003000000 a0000000c0000000 0a00000003000000 0a00000003000000 a0000000c0000000 0a00000003000000 a0000000c0000000 - {e=>1,c=>2,a=>1,b=>2,d=>-2} 090000001a000000 090000001a000000 090000001a000000 60000000a4000000 090000001a000000 090000001a000000 60000000a4000000 090000001a000000 60000000a4000000 - {e=>1,c=>2,a=>2,b=>3,d=>0} 0e00000012000000 0e00000012000000 0e00000012000000 b000000084000000 0e00000012000000 0e00000012000000 b000000084000000 0e00000012000000 b000000084000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; }; - {e=>0,c=>1,a=>2,b=>3,d=>0,f=>-1} 0e0000000100000003000000 0e0000000100000003000000 0e0000000100000003000000 b000000040000000c0000000 0e0000000100000003000000 0e0000000100000003000000 b000000040000000c0000000 0e0000000100000003000000 b000000040000000c0000000 - {e=>0,c=>0,a=>0,b=>2,d=>-1,f=>1} 080000000c00000001000000 080000000c00000001000000 080000000c00000001000000 200000003000000040000000 080000000c00000001000000 080000000c00000001000000 200000003000000040000000 080000000c00000001000000 200000003000000040000000 - {e=>0,c=>2,a=>0,b=>0,d=>0,f=>-2} 000000000200000002000000 000000000200000002000000 000000000200000002000000 000000008000000080000000 000000000200000002000000 000000000200000002000000 000000008000000080000000 000000000200000002000000 000000008000000080000000 - {e=>-2,c=>3,a=>2,b=>1,d=>-2,f=>-2} 060000002b00000002000000 060000002b00000002000000 060000002b00000002000000 90000000e800000080000000 060000002b00000002000000 060000002b00000002000000 90000000e800000080000000 060000002b00000002000000 90000000e800000080000000 - {e=>-2,c=>2,a=>0,b=>3,d=>-2,f=>-1} 0c0000002a00000003000000 0c0000002a00000003000000 0c0000002a00000003000000 30000000a8000000c0000000 0c0000002a00000003000000 0c0000002a00000003000000 30000000a8000000c0000000 0c0000002a00000003000000 30000000a8000000c0000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; }; - {e=>0,c=>2,a=>1,g=>-1,b=>3,d=>1,f=>-1} 0d000000060000000f000000 0d000000060000000f000000 0d000000060000000f000000 7000000090000000f0000000 0d000000060000000f000000 0d000000060000000f000000 7000000090000000f0000000 0d000000060000000f000000 7000000090000000f0000000 - {e=>1,c=>2,a=>2,g=>1,b=>2,d=>1,f=>1} 0a0000001600000005000000 0a0000001600000005000000 0a0000001600000005000000 a00000009400000050000000 0a0000001600000005000000 0a0000001600000005000000 a00000009400000050000000 0a0000001600000005000000 a00000009400000050000000 - {e=>0,c=>2,a=>2,g=>-1,b=>2,d=>-2,f=>-1} 0a0000000a0000000f000000 0a0000000a0000000f000000 0a0000000a0000000f000000 a0000000a0000000f0000000 0a0000000a0000000f000000 0a0000000a0000000f000000 a0000000a0000000f0000000 0a0000000a0000000f000000 a0000000a0000000f0000000 - {e=>-2,c=>0,a=>2,g=>-2,b=>1,d=>-1,f=>1} 060000002c00000009000000 060000002c00000009000000 060000002c00000009000000 900000003800000060000000 060000002c00000009000000 060000002c00000009000000 900000003800000060000000 060000002c00000009000000 900000003800000060000000 - {e=>-1,c=>3,a=>1,g=>-1,b=>0,d=>0,f=>0} 01000000330000000c000000 01000000330000000c000000 01000000330000000c000000 40000000cc00000030000000 01000000330000000c000000 01000000330000000c000000 40000000cc00000030000000 01000000330000000c000000 40000000cc00000030000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; }; - {e=>-2,a=>0,d=>1,c=>2,h=>-1,b=>1,g=>-2,f=>-2} 04000000260000003a000000 04000000260000003a000000 04000000260000003a000000 1000000098000000ac000000 04000000260000003a000000 04000000260000003a000000 1000000098000000ac000000 04000000260000003a000000 1000000098000000ac000000 - {e=>-2,a=>0,d=>1,c=>0,h=>0,b=>0,g=>1,f=>0} 000000002400000004000000 000000002400000004000000 000000002400000004000000 000000001800000010000000 000000002400000004000000 000000002400000004000000 000000001800000010000000 000000002400000004000000 000000001800000010000000 - {e=>1,a=>1,d=>1,c=>1,h=>0,b=>0,g=>-1,f=>-2} 01000000150000000e000000 01000000150000000e000000 01000000150000000e000000 4000000054000000b0000000 01000000150000000e000000 01000000150000000e000000 4000000054000000b0000000 01000000150000000e000000 4000000054000000b0000000 - {e=>0,a=>3,d=>0,c=>0,h=>1,b=>2,g=>0,f=>1} 0b0000000000000011000000 0b0000000000000011000000 0b0000000000000011000000 e00000000000000044000000 0b0000000000000011000000 0b0000000000000011000000 e00000000000000044000000 0b0000000000000011000000 e00000000000000044000000 - {e=>-1,a=>1,d=>0,c=>1,h=>0,b=>0,g=>0,f=>0} 010000003100000000000000 010000003100000000000000 010000003100000000000000 400000004c00000000000000 010000003100000000000000 010000003100000000000000 400000004c00000000000000 010000003100000000000000 400000004c00000000000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; }; - {e=>-2,a=>0,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>-2} 040000002000000032000000 040000002000000032000000 040000002000000032000000 10000000080000008c000000 040000002000000032000000 040000002000000032000000 10000000080000008c000000 040000002000000032000000 10000000080000008c000000 - {e=>0,a=>3,d=>-2,c=>2,h=>-1,b=>3,g=>-1,f=>-2} 0f0000000a0000003e000000 0f0000000a0000003e000000 0f0000000a0000003e000000 f0000000a0000000bc000000 0f0000000a0000003e000000 0f0000000a0000003e000000 f0000000a0000000bc000000 0f0000000a0000003e000000 f0000000a0000000bc000000 - {e=>-1,a=>0,d=>0,c=>1,h=>-1,b=>0,g=>-1,f=>0} 00000000310000003c000000 00000000310000003c000000 00000000310000003c000000 000000004c0000003c000000 00000000310000003c000000 00000000310000003c000000 000000004c0000003c000000 00000000310000003c000000 000000004c0000003c000000 - {e=>0,a=>3,d=>-2,c=>0,h=>1,b=>2,g=>-2,f=>1} 0b0000000800000019000000 0b0000000800000019000000 0b0000000800000019000000 e00000002000000064000000 0b0000000800000019000000 0b0000000800000019000000 e00000002000000064000000 0b0000000800000019000000 e00000002000000064000000 - {e=>-1,a=>2,d=>0,c=>1,h=>1,b=>0,g=>0,f=>1} 020000003100000011000000 020000003100000011000000 020000003100000011000000 800000004c00000044000000 020000003100000011000000 020000003100000011000000 800000004c00000044000000 020000003100000011000000 800000004c00000044000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; int i:2; }; - {e=>0,a=>0,d=>0,c=>2,h=>-1,b=>2,g=>1,f=>0,i=>1} 08000000020000003400000001000000 08000000020000003400000001000000 08000000020000003400000001000000 20000000800000001c00000040000000 08000000020000003400000001000000 08000000020000003400000001000000 20000000800000001c00000040000000 08000000020000003400000001000000 20000000800000001c00000040000000 - {e=>0,a=>0,d=>-2,c=>0,h=>-1,b=>0,g=>-2,f=>1,i=>1} 00000000080000003900000001000000 00000000080000003900000001000000 00000000080000003900000001000000 00000000200000006c00000040000000 00000000080000003900000001000000 00000000080000003900000001000000 00000000200000006c00000040000000 00000000080000003900000001000000 00000000200000006c00000040000000 - {e=>-1,a=>2,d=>0,c=>0,h=>0,b=>1,g=>-2,f=>0,i=>-1} 06000000300000000800000003000000 06000000300000000800000003000000 06000000300000000800000003000000 900000000c00000020000000c0000000 06000000300000000800000003000000 06000000300000000800000003000000 900000000c00000020000000c0000000 06000000300000000800000003000000 900000000c00000020000000c0000000 - {e=>1,a=>0,d=>0,c=>2,h=>0,b=>2,g=>1,f=>0,i=>1} 08000000120000000400000001000000 08000000120000000400000001000000 08000000120000000400000001000000 20000000840000001000000040000000 08000000120000000400000001000000 08000000120000000400000001000000 20000000840000001000000040000000 08000000120000000400000001000000 20000000840000001000000040000000 - {e=>0,a=>3,d=>-1,c=>0,h=>-1,b=>2,g=>-2,f=>0,i=>-2} 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 e0000000300000002c00000080000000 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 e0000000300000002c00000080000000 0b0000000c0000003800000002000000 e0000000300000002c00000080000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; int i:2; int j; }; - {e=>-2,a=>1,d=>0,j=>11,c=>0,h=>-2,b=>1,g=>1,f=>-1,i=>-1} 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 5000000008000000d8000000c00000000000000b 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 5000000008000000d8000000c00000000000000b 050000002000000027000000030000000b000000 5000000008000000d8000000c00000000000000b - {e=>1,a=>2,d=>-2,j=>76,c=>3,h=>-1,b=>1,g=>0,f=>-1,i=>1} 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 90000000e4000000cc000000400000000000004c 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 90000000e4000000cc000000400000000000004c 060000001b00000033000000010000004c000000 90000000e4000000cc000000400000000000004c - {e=>1,a=>3,d=>0,j=>-66,c=>0,h=>-2,b=>3,g=>-2,f=>-1,i=>-2} 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff f000000004000000e800000080000000ffffffbe 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff f000000004000000e800000080000000ffffffbe 0f000000100000002b00000002000000beffffff f000000004000000e800000080000000ffffffbe - {e=>-1,a=>0,d=>0,j=>-99,c=>1,h=>0,b=>1,g=>-2,f=>0,i=>1} 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 100000004c0000002000000040000000ffffff9d 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 100000004c0000002000000040000000ffffff9d 040000003100000008000000010000009dffffff 100000004c0000002000000040000000ffffff9d - {e=>-1,a=>2,d=>1,j=>94,c=>3,h=>-2,b=>3,g=>1,f=>-2,i=>-2} 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 b0000000dc00000098000000800000000000005e 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 b0000000dc00000098000000800000000000005e 0e0000003700000026000000020000005e000000 b0000000dc00000098000000800000000000005e = struct mixed2 { char a; unsigned int b:2; }; - {a=>-56,b=>3} c8030000 c8030000 c8030000 c8c00000 c8030000 c8030000 c8c00000 c8030000 c8c00000 - {a=>127,b=>0} 7f000000 7f000000 7f000000 7f000000 7f000000 7f000000 7f000000 7f000000 7f000000 - {a=>43,b=>2} 2b020000 2b020000 2b020000 2b800000 2b020000 2b020000 2b800000 2b020000 2b800000 - {a=>-28,b=>1} e4010000 e4010000 e4010000 e4400000 e4010000 e4010000 e4400000 e4010000 e4400000 - {a=>38,b=>0} 26000000 26000000 26000000 26000000 26000000 26000000 26000000 26000000 26000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; }; - {c=>0,a=>35,b=>1} 23010000 23010000 23010000 23400000 23010000 23010000 23400000 23010000 23400000 - {c=>0,a=>53,b=>3} 35030000 35030000 35030000 35c00000 35030000 35030000 35c00000 35030000 35c00000 - {c=>3,a=>120,b=>0} 780c0000 780c0000 780c0000 78300000 780c0000 780c0000 78300000 780c0000 78300000 - {c=>3,a=>-123,b=>1} 850d0000 850d0000 850d0000 85700000 850d0000 850d0000 85700000 850d0000 85700000 - {c=>1,a=>29,b=>3} 1d070000 1d070000 1d070000 1dd00000 1d070000 1d070000 1dd00000 1d070000 1dd00000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>2,a=>79,b=>2} 4f0a0000 4f0a0000 4f0a0000 4fa00000 4f0a0000 4f0a0000 4fa00000 4f0a0000 4fa00000 - {c=>1,a=>-102,b=>2} 9a060000 9a060000 9a060000 9a900000 9a060000 9a060000 9a900000 9a060000 9a900000 - {c=>0,a=>-112,b=>1} 90010000 90010000 90010000 90400000 90010000 90010000 90400000 90010000 90400000 - {c=>0,a=>86,b=>0} 56000000 56000000 56000000 56000000 56000000 56000000 56000000 56000000 56000000 - {c=>2,a=>-112,b=>2} 900a0000 900a0000 900a0000 90a00000 900a0000 900a0000 90a00000 900a0000 90a00000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>1,a=>9,b=>1,d=>2} 0905000002000000 0905000002000000 0905000002000000 0950000080000000 0905000002000000 0905000002000000 0950000080000000 0905000002000000 0950000080000000 - {c=>2,a=>-42,b=>0,d=>3} d608000003000000 d608000003000000 d608000003000000 d6200000c0000000 d608000003000000 d608000003000000 d6200000c0000000 d608000003000000 d6200000c0000000 - {c=>2,a=>65,b=>2,d=>2} 410a000002000000 410a000002000000 410a000002000000 41a0000080000000 410a000002000000 410a000002000000 41a0000080000000 410a000002000000 41a0000080000000 - {c=>1,a=>-14,b=>2,d=>0} f206000000000000 f206000000000000 f206000000000000 f290000000000000 f206000000000000 f206000000000000 f290000000000000 f206000000000000 f290000000000000 - {c=>3,a=>-69,b=>1,d=>1} bb0d000001000000 bb0d000001000000 bb0d000001000000 bb70000040000000 bb0d000001000000 bb0d000001000000 bb70000040000000 bb0d000001000000 bb70000040000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>0,c=>1,a=>-38,b=>2,d=>1} da06000001000000 da06000001000000 da06000001000000 da90000040000000 da06000001000000 da06000001000000 da90000040000000 da06000001000000 da90000040000000 - {e=>0,c=>0,a=>66,b=>2,d=>1} 4202000001000000 4202000001000000 4202000001000000 4280000040000000 4202000001000000 4202000001000000 4280000040000000 4202000001000000 4280000040000000 - {e=>1,c=>2,a=>-56,b=>1,d=>2} c809000006000000 c809000006000000 c809000006000000 c860000090000000 c809000006000000 c809000006000000 c860000090000000 c809000006000000 c860000090000000 - {e=>-1,c=>1,a=>120,b=>1,d=>2} 780500000e000000 780500000e000000 780500000e000000 78500000b0000000 780500000e000000 780500000e000000 78500000b0000000 780500000e000000 78500000b0000000 - {e=>0,c=>2,a=>62,b=>0,d=>3} 3e08000003000000 3e08000003000000 3e08000003000000 3e200000c0000000 3e08000003000000 3e08000003000000 3e200000c0000000 3e08000003000000 3e200000c0000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>1,c=>3,a=>-41,b=>1,d=>2,f=>0} d70d000006000000 d70d000006000000 d70d000006000000 d770000090000000 d70d000006000000 d70d000006000000 d770000090000000 d70d000006000000 d770000090000000 - {e=>-2,c=>2,a=>100,b=>2,d=>1,f=>1} 640a000019000000 640a000019000000 640a000019000000 64a0000064000000 640a000019000000 640a000019000000 64a0000064000000 640a000019000000 64a0000064000000 - {e=>1,c=>0,a=>86,b=>0,d=>3,f=>1} 5600000017000000 5600000017000000 5600000017000000 56000000d4000000 5600000017000000 5600000017000000 56000000d4000000 5600000017000000 56000000d4000000 - {e=>1,c=>3,a=>-89,b=>3,d=>2,f=>-2} a70f000026000000 a70f000026000000 a70f000026000000 a7f0000098000000 a70f000026000000 a70f000026000000 a7f0000098000000 a70f000026000000 a7f0000098000000 - {e=>-1,c=>3,a=>-109,b=>3,d=>0,f=>1} 930f00001c000000 930f00001c000000 930f00001c000000 93f0000034000000 930f00001c000000 930f00001c000000 93f0000034000000 930f00001c000000 93f0000034000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>-2,c=>0,a=>-11,b=>1,d=>3,f=>1} f50100001b000000 f50100001b000000 f50100001b000000 f5400000e4000000 f50100001b000000 f50100001b000000 f5400000e4000000 f50100001b000000 f5400000e4000000 - {e=>-2,c=>0,a=>11,b=>0,d=>0,f=>1} 0b00000018000000 0b00000018000000 0b00000018000000 0b00000024000000 0b00000018000000 0b00000018000000 0b00000024000000 0b00000018000000 0b00000024000000 - {e=>0,c=>3,a=>100,b=>1,d=>3,f=>0} 640d000003000000 640d000003000000 640d000003000000 64700000c0000000 640d000003000000 640d000003000000 64700000c0000000 640d000003000000 64700000c0000000 - {e=>0,c=>3,a=>-21,b=>2,d=>0,f=>-2} eb0e000020000000 eb0e000020000000 eb0e000020000000 ebb0000008000000 eb0e000020000000 eb0e000020000000 ebb0000008000000 eb0e000020000000 ebb0000008000000 - {e=>1,c=>0,a=>-82,b=>1,d=>1,f=>-1} ae01000035000000 ae01000035000000 ae01000035000000 ae4000005c000000 ae01000035000000 ae01000035000000 ae4000005c000000 ae01000035000000 ae4000005c000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>1,c=>1,a=>-87,g=>-2,b=>0,d=>0,f=>0} a90400000400000002000000 a90400000400000002000000 a90400000400000002000000 a91000001000000080000000 a90400000400000002000000 a90400000400000002000000 a91000001000000080000000 a90400000400000002000000 a91000001000000080000000 - {e=>-2,c=>1,a=>1,g=>-2,b=>0,d=>0,f=>-2} 010400002800000002000000 010400002800000002000000 010400002800000002000000 011000002800000080000000 010400002800000002000000 010400002800000002000000 011000002800000080000000 010400002800000002000000 011000002800000080000000 - {e=>-1,c=>2,a=>107,g=>-2,b=>3,d=>3,f=>-1} 6b0b00003f00000002000000 6b0b00003f00000002000000 6b0b00003f00000002000000 6be00000fc00000080000000 6b0b00003f00000002000000 6b0b00003f00000002000000 6be00000fc00000080000000 6b0b00003f00000002000000 6be00000fc00000080000000 - {e=>-1,c=>1,a=>-44,g=>0,b=>0,d=>0,f=>-1} d40400003c00000000000000 d40400003c00000000000000 d40400003c00000000000000 d41000003c00000000000000 d40400003c00000000000000 d40400003c00000000000000 d41000003c00000000000000 d40400003c00000000000000 d41000003c00000000000000 - {e=>-1,c=>2,a=>-40,g=>-1,b=>0,d=>3,f=>0} d80800000f00000003000000 d80800000f00000003000000 d80800000f00000003000000 d8200000f0000000c0000000 d80800000f00000003000000 d80800000f00000003000000 d8200000f0000000c0000000 d80800000f00000003000000 d8200000f0000000c0000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>-2,a=>30,d=>2,c=>0,h=>-1,b=>1,g=>-2,f=>-1} 1e0100003a0000000e000000 1e0100003a0000000e000000 1e0100003a0000000e000000 1e400000ac000000b0000000 1e0100003a0000000e000000 1e0100003a0000000e000000 1e400000ac000000b0000000 1e0100003a0000000e000000 1e400000ac000000b0000000 - {e=>1,a=>52,d=>3,c=>0,h=>-2,b=>2,g=>0,f=>0} 340200000700000008000000 340200000700000008000000 340200000700000008000000 34800000d000000020000000 340200000700000008000000 340200000700000008000000 34800000d000000020000000 340200000700000008000000 34800000d000000020000000 - {e=>1,a=>-125,d=>2,c=>2,h=>1,b=>0,g=>1,f=>-1} 830800003600000005000000 830800003600000005000000 830800003600000005000000 832000009c00000050000000 830800003600000005000000 830800003600000005000000 832000009c00000050000000 830800003600000005000000 832000009c00000050000000 - {e=>-1,a=>70,d=>0,c=>3,h=>-1,b=>3,g=>1,f=>-1} 460f00003c0000000d000000 460f00003c0000000d000000 460f00003c0000000d000000 46f000003c00000070000000 460f00003c0000000d000000 460f00003c0000000d000000 46f000003c00000070000000 460f00003c0000000d000000 46f000003c00000070000000 - {e=>0,a=>-57,d=>2,c=>3,h=>1,b=>0,g=>-1,f=>-1} c70c00003200000007000000 c70c00003200000007000000 c70c00003200000007000000 c73000008c000000d0000000 c70c00003200000007000000 c70c00003200000007000000 c73000008c000000d0000000 c70c00003200000007000000 c73000008c000000d0000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-2,a=>122,d=>0,c=>1,h=>0,b=>1,g=>0,f=>0,i=>-2} 7a0500000800000020000000 7a0500000800000020000000 7a0500000800000020000000 7a5000002000000008000000 7a0500000800000020000000 7a0500000800000020000000 7a5000002000000008000000 7a0500000800000020000000 7a5000002000000008000000 - {e=>-2,a=>76,d=>3,c=>3,h=>-1,b=>2,g=>0,f=>-1,i=>-1} 4c0e00003b0000003c000000 4c0e00003b0000003c000000 4c0e00003b0000003c000000 4cb00000ec0000003c000000 4c0e00003b0000003c000000 4c0e00003b0000003c000000 4cb00000ec0000003c000000 4c0e00003b0000003c000000 4cb00000ec0000003c000000 - {e=>1,a=>56,d=>3,c=>2,h=>-1,b=>3,g=>-1,f=>1,i=>0} 380b0000170000000f000000 380b0000170000000f000000 380b0000170000000f000000 38e00000d4000000f0000000 380b0000170000000f000000 380b0000170000000f000000 38e00000d4000000f0000000 380b0000170000000f000000 38e00000d4000000f0000000 - {e=>-2,a=>79,d=>0,c=>1,h=>1,b=>2,g=>-2,f=>0,i=>1} 4f0600000800000016000000 4f0600000800000016000000 4f0600000800000016000000 4f9000002000000094000000 4f0600000800000016000000 4f0600000800000016000000 4f9000002000000094000000 4f0600000800000016000000 4f9000002000000094000000 - {e=>1,a=>-87,d=>2,c=>1,h=>-1,b=>1,g=>0,f=>0,i=>0} a9050000060000000c000000 a9050000060000000c000000 a9050000060000000c000000 a95000009000000030000000 a9050000060000000c000000 a9050000060000000c000000 a95000009000000030000000 a9050000060000000c000000 a95000009000000030000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>-1,a=>-90,d=>0,c=>2,h=>1,b=>2,g=>0,f=>-2,i=>-2} a60a00002c00000024000000 a60a00002c00000024000000 a60a00002c00000024000000 a6a000003800000018000000 a60a00002c00000024000000 a60a00002c00000024000000 a6a000003800000018000000 a60a00002c00000024000000 a6a000003800000018000000 - {e=>-2,a=>-119,d=>1,c=>0,h=>0,b=>2,g=>-2,f=>-1,i=>1} 890200003900000012000000 890200003900000012000000 890200003900000012000000 898000006c00000084000000 890200003900000012000000 890200003900000012000000 898000006c00000084000000 890200003900000012000000 898000006c00000084000000 - {e=>1,a=>108,d=>3,c=>3,h=>0,b=>3,g=>-1,f=>-1,i=>1} 6c0f00003700000013000000 6c0f00003700000013000000 6c0f00003700000013000000 6cf00000dc000000c4000000 6c0f00003700000013000000 6c0f00003700000013000000 6cf00000dc000000c4000000 6c0f00003700000013000000 6cf00000dc000000c4000000 - {e=>0,a=>-126,d=>0,c=>3,h=>1,b=>2,g=>-2,f=>0,i=>-1} 820e00000000000036000000 820e00000000000036000000 820e00000000000036000000 82b00000000000009c000000 820e00000000000036000000 820e00000000000036000000 82b00000000000009c000000 820e00000000000036000000 82b00000000000009c000000 - {e=>1,a=>-120,d=>2,c=>2,h=>0,b=>1,g=>-2,f=>0,i=>-1} 880900000600000032000000 880900000600000032000000 880900000600000032000000 88600000900000008c000000 880900000600000032000000 880900000600000032000000 88600000900000008c000000 880900000600000032000000 88600000900000008c000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>1,a=>-105,d=>3,j=>1,c=>3,h=>0,b=>1,g=>-2,f=>-2,i=>0} 970d0000270000000200000001000000 970d0000270000000200000001000000 970d0000270000000200000001000000 97700000d80000008000000040000000 970d0000270000000200000001000000 970d0000270000000200000001000000 97700000d80000008000000040000000 970d0000270000000200000001000000 97700000d80000008000000040000000 - {e=>0,a=>32,d=>0,j=>0,c=>2,h=>1,b=>2,g=>1,f=>-1,i=>-1} 200a0000300000003500000000000000 200a0000300000003500000000000000 200a0000300000003500000000000000 20a000000c0000005c00000000000000 200a0000300000003500000000000000 200a0000300000003500000000000000 20a000000c0000005c00000000000000 200a0000300000003500000000000000 20a000000c0000005c00000000000000 - {e=>1,a=>57,d=>1,j=>-2,c=>2,h=>-1,b=>1,g=>-2,f=>-2,i=>1} 39090000250000001e00000002000000 39090000250000001e00000002000000 39090000250000001e00000002000000 3960000058000000b400000080000000 39090000250000001e00000002000000 39090000250000001e00000002000000 3960000058000000b400000080000000 39090000250000001e00000002000000 3960000058000000b400000080000000 - {e=>0,a=>59,d=>3,j=>-1,c=>0,h=>-2,b=>1,g=>0,f=>1,i=>-2} 3b010000130000002800000003000000 3b010000130000002800000003000000 3b010000130000002800000003000000 3b400000c400000028000000c0000000 3b010000130000002800000003000000 3b010000130000002800000003000000 3b400000c400000028000000c0000000 3b010000130000002800000003000000 3b400000c400000028000000c0000000 - {e=>-2,a=>68,d=>0,j=>1,c=>0,h=>1,b=>3,g=>0,f=>-2,i=>0} 44030000280000000400000001000000 44030000280000000400000001000000 44030000280000000400000001000000 44c00000280000001000000040000000 44030000280000000400000001000000 44030000280000000400000001000000 44c00000280000001000000040000000 44030000280000000400000001000000 44c00000280000001000000040000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>1,a=>-55,d=>1,j=>-2,c=>3,k=>111,h=>-1,b=>1,g=>-1,f=>0,i=>-1} c90d0000050000003f000000020000006f000000 c90d0000050000003f000000020000006f000000 c90d0000050000003f000000020000006f000000 c970000050000000fc000000800000000000006f c90d0000050000003f000000020000006f000000 c90d0000050000003f000000020000006f000000 c970000050000000fc000000800000000000006f c90d0000050000003f000000020000006f000000 c970000050000000fc000000800000000000006f - {e=>-2,a=>-69,d=>3,j=>0,c=>0,k=>-83,h=>0,b=>3,g=>0,f=>-1,i=>1} bb0300003b0000001000000000000000adffffff bb0300003b0000001000000000000000adffffff bb0300003b0000001000000000000000adffffff bbc00000ec0000000400000000000000ffffffad bb0300003b0000001000000000000000adffffff bb0300003b0000001000000000000000adffffff bbc00000ec0000000400000000000000ffffffad bb0300003b0000001000000000000000adffffff bbc00000ec0000000400000000000000ffffffad - {e=>0,a=>110,d=>0,j=>0,c=>3,k=>116,h=>-1,b=>3,g=>-2,f=>1,i=>-1} 6e0f0000100000003e0000000000000074000000 6e0f0000100000003e0000000000000074000000 6e0f0000100000003e0000000000000074000000 6ef0000004000000bc0000000000000000000074 6e0f0000100000003e0000000000000074000000 6e0f0000100000003e0000000000000074000000 6ef0000004000000bc0000000000000000000074 6e0f0000100000003e0000000000000074000000 6ef0000004000000bc0000000000000000000074 - {e=>0,a=>-42,d=>1,j=>-1,c=>0,k=>92,h=>-1,b=>2,g=>1,f=>-2,i=>-2} d6020000210000002d000000030000005c000000 d6020000210000002d000000030000005c000000 d6020000210000002d000000030000005c000000 d68000004800000078000000c00000000000005c d6020000210000002d000000030000005c000000 d6020000210000002d000000030000005c000000 d68000004800000078000000c00000000000005c d6020000210000002d000000030000005c000000 d68000004800000078000000c00000000000005c - {e=>-1,a=>-34,d=>0,j=>-2,c=>3,k=>22,h=>-2,b=>2,g=>-1,f=>0,i=>0} de0e00000c0000000b0000000200000016000000 de0e00000c0000000b0000000200000016000000 de0e00000c0000000b0000000200000016000000 deb0000030000000e00000008000000000000016 de0e00000c0000000b0000000200000016000000 de0e00000c0000000b0000000200000016000000 deb0000030000000e00000008000000000000016 de0e00000c0000000b0000000200000016000000 deb0000030000000e00000008000000000000016 = struct mixed2 { short a; unsigned int b:2; }; - {a=>-36,b=>3} dcff0300 dcff0300 dcff0300 ffdcc000 dcff0300 dcff0300 ffdcc000 dcff0300 ffdcc000 - {a=>77,b=>0} 4d000000 4d000000 4d000000 004d0000 4d000000 4d000000 004d0000 4d000000 004d0000 - {a=>-125,b=>0} 83ff0000 83ff0000 83ff0000 ff830000 83ff0000 83ff0000 ff830000 83ff0000 ff830000 - {a=>33,b=>0} 21000000 21000000 21000000 00210000 21000000 21000000 00210000 21000000 00210000 - {a=>18,b=>3} 12000300 12000300 12000300 0012c000 12000300 12000300 0012c000 12000300 0012c000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>39,b=>2} 27000a00 27000a00 27000a00 0027a000 27000a00 27000a00 0027a000 27000a00 0027a000 - {c=>2,a=>-73,b=>3} b7ff0b00 b7ff0b00 b7ff0b00 ffb7e000 b7ff0b00 b7ff0b00 ffb7e000 b7ff0b00 ffb7e000 - {c=>2,a=>12,b=>1} 0c000900 0c000900 0c000900 000c6000 0c000900 0c000900 000c6000 0c000900 000c6000 - {c=>1,a=>107,b=>2} 6b000600 6b000600 6b000600 006b9000 6b000600 6b000600 006b9000 6b000600 006b9000 - {c=>0,a=>-10,b=>2} f6ff0200 f6ff0200 f6ff0200 fff68000 f6ff0200 f6ff0200 fff68000 f6ff0200 fff68000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>0,a=>-15,b=>0} f1ff0000 f1ff0000 f1ff0000 fff10000 f1ff0000 f1ff0000 fff10000 f1ff0000 fff10000 - {c=>2,a=>-103,b=>1} 99ff0900 99ff0900 99ff0900 ff996000 99ff0900 99ff0900 ff996000 99ff0900 ff996000 - {c=>0,a=>106,b=>3} 6a000300 6a000300 6a000300 006ac000 6a000300 6a000300 006ac000 6a000300 006ac000 - {c=>0,a=>77,b=>3} 4d000300 4d000300 4d000300 004dc000 4d000300 4d000300 004dc000 4d000300 004dc000 - {c=>0,a=>-60,b=>2} c4ff0200 c4ff0200 c4ff0200 ffc48000 c4ff0200 c4ff0200 ffc48000 c4ff0200 ffc48000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>3,a=>-90,b=>2,d=>1} a6ff0e0001000000 a6ff0e0001000000 a6ff0e0001000000 ffa6b00040000000 a6ff0e0001000000 a6ff0e0001000000 ffa6b00040000000 a6ff0e0001000000 ffa6b00040000000 - {c=>1,a=>-112,b=>3,d=>1} 90ff070001000000 90ff070001000000 90ff070001000000 ff90d00040000000 90ff070001000000 90ff070001000000 ff90d00040000000 90ff070001000000 ff90d00040000000 - {c=>3,a=>-67,b=>0,d=>1} bdff0c0001000000 bdff0c0001000000 bdff0c0001000000 ffbd300040000000 bdff0c0001000000 bdff0c0001000000 ffbd300040000000 bdff0c0001000000 ffbd300040000000 - {c=>1,a=>-2,b=>0,d=>3} feff040003000000 feff040003000000 feff040003000000 fffe1000c0000000 feff040003000000 feff040003000000 fffe1000c0000000 feff040003000000 fffe1000c0000000 - {c=>0,a=>-45,b=>1,d=>1} d3ff010001000000 d3ff010001000000 d3ff010001000000 ffd3400040000000 d3ff010001000000 d3ff010001000000 ffd3400040000000 d3ff010001000000 ffd3400040000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>-1,c=>2,a=>-104,b=>2,d=>0} 98ff0a000c000000 98ff0a000c000000 98ff0a000c000000 ff98a00030000000 98ff0a000c000000 98ff0a000c000000 ff98a00030000000 98ff0a000c000000 ff98a00030000000 - {e=>-2,c=>1,a=>-128,b=>3,d=>2} 80ff07000a000000 80ff07000a000000 80ff07000a000000 ff80d000a0000000 80ff07000a000000 80ff07000a000000 ff80d000a0000000 80ff07000a000000 ff80d000a0000000 - {e=>1,c=>3,a=>-119,b=>2,d=>1} 89ff0e0005000000 89ff0e0005000000 89ff0e0005000000 ff89b00050000000 89ff0e0005000000 89ff0e0005000000 ff89b00050000000 89ff0e0005000000 ff89b00050000000 - {e=>-1,c=>3,a=>31,b=>1,d=>0} 1f000d000c000000 1f000d000c000000 1f000d000c000000 001f700030000000 1f000d000c000000 1f000d000c000000 001f700030000000 1f000d000c000000 001f700030000000 - {e=>-1,c=>0,a=>-28,b=>1,d=>0} e4ff01000c000000 e4ff01000c000000 e4ff01000c000000 ffe4400030000000 e4ff01000c000000 e4ff01000c000000 ffe4400030000000 e4ff01000c000000 ffe4400030000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>-1,c=>0,a=>15,b=>3,d=>0,f=>-2} 0f0003002c000000 0f0003002c000000 0f0003002c000000 000fc00038000000 0f0003002c000000 0f0003002c000000 000fc00038000000 0f0003002c000000 000fc00038000000 - {e=>-1,c=>2,a=>-51,b=>3,d=>1,f=>0} cdff0b000d000000 cdff0b000d000000 cdff0b000d000000 ffcde00070000000 cdff0b000d000000 cdff0b000d000000 ffcde00070000000 cdff0b000d000000 ffcde00070000000 - {e=>-1,c=>2,a=>-69,b=>1,d=>3,f=>1} bbff09001f000000 bbff09001f000000 bbff09001f000000 ffbb6000f4000000 bbff09001f000000 bbff09001f000000 ffbb6000f4000000 bbff09001f000000 ffbb6000f4000000 - {e=>1,c=>3,a=>121,b=>2,d=>1,f=>0} 79000e0005000000 79000e0005000000 79000e0005000000 0079b00050000000 79000e0005000000 79000e0005000000 0079b00050000000 79000e0005000000 0079b00050000000 - {e=>0,c=>2,a=>17,b=>3,d=>3,f=>-1} 11000b0033000000 11000b0033000000 11000b0033000000 0011e000cc000000 11000b0033000000 11000b0033000000 0011e000cc000000 11000b0033000000 0011e000cc000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>0,c=>1,a=>-102,b=>2,d=>2,f=>-1} 9aff060032000000 9aff060032000000 9aff060032000000 ff9a90008c000000 9aff060032000000 9aff060032000000 ff9a90008c000000 9aff060032000000 ff9a90008c000000 - {e=>-2,c=>2,a=>-45,b=>2,d=>2,f=>-2} d3ff0a002a000000 d3ff0a002a000000 d3ff0a002a000000 ffd3a000a8000000 d3ff0a002a000000 d3ff0a002a000000 ffd3a000a8000000 d3ff0a002a000000 ffd3a000a8000000 - {e=>-2,c=>3,a=>1,b=>0,d=>1,f=>-1} 01000c0039000000 01000c0039000000 01000c0039000000 000130006c000000 01000c0039000000 01000c0039000000 000130006c000000 01000c0039000000 000130006c000000 - {e=>1,c=>1,a=>-70,b=>0,d=>1,f=>0} baff040005000000 baff040005000000 baff040005000000 ffba100050000000 baff040005000000 baff040005000000 ffba100050000000 baff040005000000 ffba100050000000 - {e=>0,c=>3,a=>-67,b=>3,d=>2,f=>-2} bdff0f0022000000 bdff0f0022000000 bdff0f0022000000 ffbdf00088000000 bdff0f0022000000 bdff0f0022000000 ffbdf00088000000 bdff0f0022000000 ffbdf00088000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>-1,c=>1,a=>-14,g=>-2,b=>2,d=>3,f=>0} f2ff06000f00000002000000 f2ff06000f00000002000000 f2ff06000f00000002000000 fff29000f000000080000000 f2ff06000f00000002000000 f2ff06000f00000002000000 fff29000f000000080000000 f2ff06000f00000002000000 fff29000f000000080000000 - {e=>0,c=>2,a=>-82,g=>-2,b=>2,d=>0,f=>0} aeff0a000000000002000000 aeff0a000000000002000000 aeff0a000000000002000000 ffaea0000000000080000000 aeff0a000000000002000000 aeff0a000000000002000000 ffaea0000000000080000000 aeff0a000000000002000000 ffaea0000000000080000000 - {e=>1,c=>1,a=>-117,g=>-1,b=>0,d=>3,f=>0} 8bff04000700000003000000 8bff04000700000003000000 8bff04000700000003000000 ff8b1000d0000000c0000000 8bff04000700000003000000 8bff04000700000003000000 ff8b1000d0000000c0000000 8bff04000700000003000000 ff8b1000d0000000c0000000 - {e=>1,c=>3,a=>-88,g=>1,b=>3,d=>0,f=>0} a8ff0f000400000001000000 a8ff0f000400000001000000 a8ff0f000400000001000000 ffa8f0001000000040000000 a8ff0f000400000001000000 a8ff0f000400000001000000 ffa8f0001000000040000000 a8ff0f000400000001000000 ffa8f0001000000040000000 - {e=>0,c=>3,a=>38,g=>0,b=>3,d=>1,f=>-1} 26000f003100000000000000 26000f003100000000000000 26000f003100000000000000 0026f0004c00000000000000 26000f003100000000000000 26000f003100000000000000 0026f0004c00000000000000 26000f003100000000000000 0026f0004c00000000000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>0,a=>14,d=>3,c=>1,h=>-2,b=>2,g=>-2,f=>-2} 0e000600230000000a000000 0e000600230000000a000000 0e000600230000000a000000 000e9000c8000000a0000000 0e000600230000000a000000 0e000600230000000a000000 000e9000c8000000a0000000 0e000600230000000a000000 000e9000c8000000a0000000 - {e=>1,a=>73,d=>0,c=>0,h=>-1,b=>3,g=>0,f=>0} 49000300040000000c000000 49000300040000000c000000 49000300040000000c000000 0049c0001000000030000000 49000300040000000c000000 49000300040000000c000000 0049c0001000000030000000 49000300040000000c000000 0049c0001000000030000000 - {e=>-2,a=>5,d=>2,c=>1,h=>-1,b=>2,g=>1,f=>-2} 050006002a0000000d000000 050006002a0000000d000000 050006002a0000000d000000 00059000a800000070000000 050006002a0000000d000000 050006002a0000000d000000 00059000a800000070000000 050006002a0000000d000000 00059000a800000070000000 - {e=>0,a=>-57,d=>2,c=>0,h=>-1,b=>0,g=>0,f=>1} c7ff0000120000000c000000 c7ff0000120000000c000000 c7ff0000120000000c000000 ffc700008400000030000000 c7ff0000120000000c000000 c7ff0000120000000c000000 ffc700008400000030000000 c7ff0000120000000c000000 ffc700008400000030000000 - {e=>-1,a=>-21,d=>0,c=>3,h=>-1,b=>0,g=>-1,f=>1} ebff0c001c0000000f000000 ebff0c001c0000000f000000 ebff0c001c0000000f000000 ffeb300034000000f0000000 ebff0c001c0000000f000000 ebff0c001c0000000f000000 ffeb300034000000f0000000 ebff0c001c0000000f000000 ffeb300034000000f0000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-2,a=>64,d=>3,c=>1,h=>1,b=>0,g=>1,f=>0,i=>-2} 400004000b00000025000000 400004000b00000025000000 400004000b00000025000000 00401000e000000058000000 400004000b00000025000000 400004000b00000025000000 00401000e000000058000000 400004000b00000025000000 00401000e000000058000000 - {e=>-1,a=>-28,d=>2,c=>0,h=>-2,b=>3,g=>-1,f=>-1,i=>-1} e4ff03003e0000003b000000 e4ff03003e0000003b000000 e4ff03003e0000003b000000 ffe4c000bc000000ec000000 e4ff03003e0000003b000000 e4ff03003e0000003b000000 ffe4c000bc000000ec000000 e4ff03003e0000003b000000 ffe4c000bc000000ec000000 - {e=>-1,a=>16,d=>0,c=>1,h=>0,b=>2,g=>-1,f=>1,i=>-1} 100006001c00000033000000 100006001c00000033000000 100006001c00000033000000 0010900034000000cc000000 100006001c00000033000000 100006001c00000033000000 0010900034000000cc000000 100006001c00000033000000 0010900034000000cc000000 - {e=>1,a=>-116,d=>0,c=>2,h=>-1,b=>3,g=>0,f=>-2,i=>0} 8cff0b00240000000c000000 8cff0b00240000000c000000 8cff0b00240000000c000000 ff8ce0001800000030000000 8cff0b00240000000c000000 8cff0b00240000000c000000 ff8ce0001800000030000000 8cff0b00240000000c000000 ff8ce0001800000030000000 - {e=>0,a=>-24,d=>0,c=>0,h=>-1,b=>1,g=>1,f=>-2,i=>0} e8ff0100200000000d000000 e8ff0100200000000d000000 e8ff0100200000000d000000 ffe840000800000070000000 e8ff0100200000000d000000 e8ff0100200000000d000000 ffe840000800000070000000 e8ff0100200000000d000000 ffe840000800000070000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-98,d=>3,c=>1,h=>-2,b=>3,g=>-2,f=>1,i=>-1} 9eff0700130000003a000000 9eff0700130000003a000000 9eff0700130000003a000000 ff9ed000c4000000ac000000 9eff0700130000003a000000 9eff0700130000003a000000 ff9ed000c4000000ac000000 9eff0700130000003a000000 ff9ed000c4000000ac000000 - {e=>1,a=>87,d=>3,c=>2,h=>-1,b=>2,g=>-1,f=>-2,i=>-1} 57000a00270000003f000000 57000a00270000003f000000 57000a00270000003f000000 0057a000d8000000fc000000 57000a00270000003f000000 57000a00270000003f000000 0057a000d8000000fc000000 57000a00270000003f000000 0057a000d8000000fc000000 - {e=>1,a=>-69,d=>2,c=>1,h=>0,b=>3,g=>0,f=>-2,i=>-1} bbff07002600000030000000 bbff07002600000030000000 bbff07002600000030000000 ffbbd000980000000c000000 bbff07002600000030000000 bbff07002600000030000000 ffbbd000980000000c000000 bbff07002600000030000000 ffbbd000980000000c000000 - {e=>-1,a=>-28,d=>3,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>-2} e4ff01000f0000002f000000 e4ff01000f0000002f000000 e4ff01000f0000002f000000 ffe44000f0000000f8000000 e4ff01000f0000002f000000 e4ff01000f0000002f000000 ffe44000f0000000f8000000 e4ff01000f0000002f000000 ffe44000f0000000f8000000 - {e=>0,a=>58,d=>3,c=>3,h=>0,b=>3,g=>-2,f=>-1,i=>0} 3a000f003300000002000000 3a000f003300000002000000 3a000f003300000002000000 003af000cc00000080000000 3a000f003300000002000000 3a000f003300000002000000 003af000cc00000080000000 3a000f003300000002000000 003af000cc00000080000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>0,a=>-102,d=>3,j=>-2,c=>1,h=>0,b=>2,g=>0,f=>0,i=>-1} 9aff0600030000003000000002000000 9aff0600030000003000000002000000 9aff0600030000003000000002000000 ff9a9000c00000000c00000080000000 9aff0600030000003000000002000000 9aff0600030000003000000002000000 ff9a9000c00000000c00000080000000 9aff0600030000003000000002000000 ff9a9000c00000000c00000080000000 - {e=>-1,a=>-12,d=>1,j=>1,c=>1,h=>-2,b=>0,g=>-2,f=>1,i=>-2} f4ff04001d0000002a00000001000000 f4ff04001d0000002a00000001000000 f4ff04001d0000002a00000001000000 fff4100074000000a800000040000000 f4ff04001d0000002a00000001000000 f4ff04001d0000002a00000001000000 fff4100074000000a800000040000000 f4ff04001d0000002a00000001000000 fff4100074000000a800000040000000 - {e=>-2,a=>98,d=>3,j=>1,c=>0,h=>0,b=>0,g=>-1,f=>-2,i=>-2} 620000002b0000002300000001000000 620000002b0000002300000001000000 620000002b0000002300000001000000 00620000e8000000c800000040000000 620000002b0000002300000001000000 620000002b0000002300000001000000 00620000e8000000c800000040000000 620000002b0000002300000001000000 00620000e8000000c800000040000000 - {e=>-1,a=>-38,d=>3,j=>-1,c=>1,h=>-1,b=>1,g=>-2,f=>0,i=>1} daff05000f0000001e00000003000000 daff05000f0000001e00000003000000 daff05000f0000001e00000003000000 ffda5000f0000000b4000000c0000000 daff05000f0000001e00000003000000 daff05000f0000001e00000003000000 ffda5000f0000000b4000000c0000000 daff05000f0000001e00000003000000 ffda5000f0000000b4000000c0000000 - {e=>1,a=>0,d=>2,j=>-2,c=>1,h=>0,b=>2,g=>1,f=>-2,i=>0} 00000600260000000100000002000000 00000600260000000100000002000000 00000600260000000100000002000000 00009000980000004000000080000000 00000600260000000100000002000000 00000600260000000100000002000000 00009000980000004000000080000000 00000600260000000100000002000000 00009000980000004000000080000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>-1,a=>-67,d=>0,j=>-2,c=>2,k=>-19,h=>1,b=>0,g=>0,f=>-1,i=>1} bdff08003c0000001400000002000000edffffff bdff08003c0000001400000002000000edffffff bdff08003c0000001400000002000000edffffff ffbd20003c0000001400000080000000ffffffed bdff08003c0000001400000002000000edffffff bdff08003c0000001400000002000000edffffff ffbd20003c0000001400000080000000ffffffed bdff08003c0000001400000002000000edffffff ffbd20003c0000001400000080000000ffffffed - {e=>0,a=>-109,d=>2,j=>0,c=>1,k=>116,h=>0,b=>0,g=>1,f=>1,i=>-1} 93ff040012000000310000000000000074000000 93ff040012000000310000000000000074000000 93ff040012000000310000000000000074000000 ff931000840000004c0000000000000000000074 93ff040012000000310000000000000074000000 93ff040012000000310000000000000074000000 ff931000840000004c0000000000000000000074 93ff040012000000310000000000000074000000 ff931000840000004c0000000000000000000074 - {e=>0,a=>102,d=>0,j=>1,c=>3,k=>116,h=>1,b=>2,g=>0,f=>1,i=>1} 66000e0010000000140000000100000074000000 66000e0010000000140000000100000074000000 66000e0010000000140000000100000074000000 0066b00004000000140000004000000000000074 66000e0010000000140000000100000074000000 66000e0010000000140000000100000074000000 0066b00004000000140000004000000000000074 66000e0010000000140000000100000074000000 0066b00004000000140000004000000000000074 - {e=>0,a=>27,d=>1,j=>-1,c=>0,k=>-116,h=>-2,b=>2,g=>1,f=>-1,i=>-1} 1b0002003100000039000000030000008cffffff 1b0002003100000039000000030000008cffffff 1b0002003100000039000000030000008cffffff 001b80004c0000006c000000c0000000ffffff8c 1b0002003100000039000000030000008cffffff 1b0002003100000039000000030000008cffffff 001b80004c0000006c000000c0000000ffffff8c 1b0002003100000039000000030000008cffffff 001b80004c0000006c000000c0000000ffffff8c - {e=>1,a=>-68,d=>0,j=>-1,c=>3,k=>-47,h=>-1,b=>1,g=>0,f=>0,i=>-2} bcff0d00040000002c00000003000000d1ffffff bcff0d00040000002c00000003000000d1ffffff bcff0d00040000002c00000003000000d1ffffff ffbc70001000000038000000c0000000ffffffd1 bcff0d00040000002c00000003000000d1ffffff bcff0d00040000002c00000003000000d1ffffff ffbc70001000000038000000c0000000ffffffd1 bcff0d00040000002c00000003000000d1ffffff ffbc70001000000038000000c0000000ffffffd1 = struct mixed2 { int a; unsigned int b:2; }; - {a=>-99,b=>3} 9dffffff03000000 9dffffff03000000 9dffffff03000000 ffffff9dc0000000 9dffffff03000000 9dffffff03000000 ffffff9dc0000000 9dffffff03000000 ffffff9dc0000000 - {a=>-83,b=>3} adffffff03000000 adffffff03000000 adffffff03000000 ffffffadc0000000 adffffff03000000 adffffff03000000 ffffffadc0000000 adffffff03000000 ffffffadc0000000 - {a=>15,b=>2} 0f00000002000000 0f00000002000000 0f00000002000000 0000000f80000000 0f00000002000000 0f00000002000000 0000000f80000000 0f00000002000000 0000000f80000000 - {a=>60,b=>1} 3c00000001000000 3c00000001000000 3c00000001000000 0000003c40000000 3c00000001000000 3c00000001000000 0000003c40000000 3c00000001000000 0000003c40000000 - {a=>15,b=>2} 0f00000002000000 0f00000002000000 0f00000002000000 0000000f80000000 0f00000002000000 0f00000002000000 0000000f80000000 0f00000002000000 0000000f80000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>64,b=>2} 400000000a000000 400000000a000000 400000000a000000 00000040a0000000 400000000a000000 400000000a000000 00000040a0000000 400000000a000000 00000040a0000000 - {c=>3,a=>21,b=>3} 150000000f000000 150000000f000000 150000000f000000 00000015f0000000 150000000f000000 150000000f000000 00000015f0000000 150000000f000000 00000015f0000000 - {c=>1,a=>88,b=>1} 5800000005000000 5800000005000000 5800000005000000 0000005850000000 5800000005000000 5800000005000000 0000005850000000 5800000005000000 0000005850000000 - {c=>2,a=>-84,b=>2} acffffff0a000000 acffffff0a000000 acffffff0a000000 ffffffaca0000000 acffffff0a000000 acffffff0a000000 ffffffaca0000000 acffffff0a000000 ffffffaca0000000 - {c=>3,a=>127,b=>2} 7f0000000e000000 7f0000000e000000 7f0000000e000000 0000007fb0000000 7f0000000e000000 7f0000000e000000 0000007fb0000000 7f0000000e000000 0000007fb0000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>0,a=>-11,b=>2} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 fffffff580000000 f5ffffff02000000 f5ffffff02000000 fffffff580000000 f5ffffff02000000 fffffff580000000 - {c=>1,a=>-114,b=>1} 8effffff05000000 8effffff05000000 8effffff05000000 ffffff8e50000000 8effffff05000000 8effffff05000000 ffffff8e50000000 8effffff05000000 ffffff8e50000000 - {c=>3,a=>-66,b=>1} beffffff0d000000 beffffff0d000000 beffffff0d000000 ffffffbe70000000 beffffff0d000000 beffffff0d000000 ffffffbe70000000 beffffff0d000000 ffffffbe70000000 - {c=>2,a=>-101,b=>1} 9bffffff09000000 9bffffff09000000 9bffffff09000000 ffffff9b60000000 9bffffff09000000 9bffffff09000000 ffffff9b60000000 9bffffff09000000 ffffff9b60000000 - {c=>2,a=>51,b=>3} 330000000b000000 330000000b000000 330000000b000000 00000033e0000000 330000000b000000 330000000b000000 00000033e0000000 330000000b000000 00000033e0000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>3,a=>71,b=>3,d=>2} 470000000f00000002000000 470000000f00000002000000 470000000f00000002000000 00000047f000000080000000 470000000f00000002000000 470000000f00000002000000 00000047f000000080000000 470000000f00000002000000 00000047f000000080000000 - {c=>0,a=>-59,b=>3,d=>2} c5ffffff0300000002000000 c5ffffff0300000002000000 c5ffffff0300000002000000 ffffffc5c000000080000000 c5ffffff0300000002000000 c5ffffff0300000002000000 ffffffc5c000000080000000 c5ffffff0300000002000000 ffffffc5c000000080000000 - {c=>1,a=>-34,b=>1,d=>2} deffffff0500000002000000 deffffff0500000002000000 deffffff0500000002000000 ffffffde5000000080000000 deffffff0500000002000000 deffffff0500000002000000 ffffffde5000000080000000 deffffff0500000002000000 ffffffde5000000080000000 - {c=>1,a=>-50,b=>0,d=>2} ceffffff0400000002000000 ceffffff0400000002000000 ceffffff0400000002000000 ffffffce1000000080000000 ceffffff0400000002000000 ceffffff0400000002000000 ffffffce1000000080000000 ceffffff0400000002000000 ffffffce1000000080000000 - {c=>2,a=>98,b=>3,d=>1} 620000000b00000001000000 620000000b00000001000000 620000000b00000001000000 00000062e000000040000000 620000000b00000001000000 620000000b00000001000000 00000062e000000040000000 620000000b00000001000000 00000062e000000040000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>0,c=>2,a=>-115,b=>0,d=>3} 8dffffff0800000003000000 8dffffff0800000003000000 8dffffff0800000003000000 ffffff8d20000000c0000000 8dffffff0800000003000000 8dffffff0800000003000000 ffffff8d20000000c0000000 8dffffff0800000003000000 ffffff8d20000000c0000000 - {e=>0,c=>2,a=>120,b=>0,d=>1} 780000000800000001000000 780000000800000001000000 780000000800000001000000 000000782000000040000000 780000000800000001000000 780000000800000001000000 000000782000000040000000 780000000800000001000000 000000782000000040000000 - {e=>-1,c=>3,a=>-67,b=>0,d=>1} bdffffff0c0000000d000000 bdffffff0c0000000d000000 bdffffff0c0000000d000000 ffffffbd3000000070000000 bdffffff0c0000000d000000 bdffffff0c0000000d000000 ffffffbd3000000070000000 bdffffff0c0000000d000000 ffffffbd3000000070000000 - {e=>-2,c=>2,a=>52,b=>2,d=>0} 340000000a00000008000000 340000000a00000008000000 340000000a00000008000000 00000034a000000020000000 340000000a00000008000000 340000000a00000008000000 00000034a000000020000000 340000000a00000008000000 00000034a000000020000000 - {e=>-1,c=>2,a=>94,b=>3,d=>2} 5e0000000b0000000e000000 5e0000000b0000000e000000 5e0000000b0000000e000000 0000005ee0000000b0000000 5e0000000b0000000e000000 5e0000000b0000000e000000 0000005ee0000000b0000000 5e0000000b0000000e000000 0000005ee0000000b0000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>0,c=>3,a=>-74,b=>1,d=>1,f=>1} b6ffffff0d00000011000000 b6ffffff0d00000011000000 b6ffffff0d00000011000000 ffffffb67000000044000000 b6ffffff0d00000011000000 b6ffffff0d00000011000000 ffffffb67000000044000000 b6ffffff0d00000011000000 ffffffb67000000044000000 - {e=>-1,c=>3,a=>117,b=>2,d=>1,f=>1} 750000000e0000001d000000 750000000e0000001d000000 750000000e0000001d000000 00000075b000000074000000 750000000e0000001d000000 750000000e0000001d000000 00000075b000000074000000 750000000e0000001d000000 00000075b000000074000000 - {e=>1,c=>1,a=>-117,b=>0,d=>2,f=>-2} 8bffffff0400000026000000 8bffffff0400000026000000 8bffffff0400000026000000 ffffff8b1000000098000000 8bffffff0400000026000000 8bffffff0400000026000000 ffffff8b1000000098000000 8bffffff0400000026000000 ffffff8b1000000098000000 - {e=>-2,c=>1,a=>-90,b=>1,d=>0,f=>-2} a6ffffff0500000028000000 a6ffffff0500000028000000 a6ffffff0500000028000000 ffffffa65000000028000000 a6ffffff0500000028000000 a6ffffff0500000028000000 ffffffa65000000028000000 a6ffffff0500000028000000 ffffffa65000000028000000 - {e=>-1,c=>2,a=>41,b=>0,d=>3,f=>0} 29000000080000000f000000 29000000080000000f000000 29000000080000000f000000 0000002920000000f0000000 29000000080000000f000000 29000000080000000f000000 0000002920000000f0000000 29000000080000000f000000 0000002920000000f0000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>0,c=>3,a=>-75,b=>1,d=>1,f=>0} b5ffffff0d00000001000000 b5ffffff0d00000001000000 b5ffffff0d00000001000000 ffffffb57000000040000000 b5ffffff0d00000001000000 b5ffffff0d00000001000000 ffffffb57000000040000000 b5ffffff0d00000001000000 ffffffb57000000040000000 - {e=>1,c=>3,a=>-74,b=>1,d=>1,f=>0} b6ffffff0d00000005000000 b6ffffff0d00000005000000 b6ffffff0d00000005000000 ffffffb67000000050000000 b6ffffff0d00000005000000 b6ffffff0d00000005000000 ffffffb67000000050000000 b6ffffff0d00000005000000 ffffffb67000000050000000 - {e=>-2,c=>0,a=>7,b=>2,d=>2,f=>0} 07000000020000000a000000 07000000020000000a000000 07000000020000000a000000 0000000780000000a0000000 07000000020000000a000000 07000000020000000a000000 0000000780000000a0000000 07000000020000000a000000 0000000780000000a0000000 - {e=>-1,c=>0,a=>-14,b=>3,d=>2,f=>-1} f2ffffff030000003e000000 f2ffffff030000003e000000 f2ffffff030000003e000000 fffffff2c0000000bc000000 f2ffffff030000003e000000 f2ffffff030000003e000000 fffffff2c0000000bc000000 f2ffffff030000003e000000 fffffff2c0000000bc000000 - {e=>0,c=>2,a=>-68,b=>1,d=>3,f=>-2} bcffffff0900000023000000 bcffffff0900000023000000 bcffffff0900000023000000 ffffffbc60000000c8000000 bcffffff0900000023000000 bcffffff0900000023000000 ffffffbc60000000c8000000 bcffffff0900000023000000 ffffffbc60000000c8000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>-1,c=>0,a=>-121,g=>-2,b=>1,d=>0,f=>-2} 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 ffffff87400000003800000080000000 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 ffffff87400000003800000080000000 87ffffff010000002c00000002000000 ffffff87400000003800000080000000 - {e=>-2,c=>2,a=>125,g=>-2,b=>3,d=>3,f=>-2} 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 0000007de0000000e800000080000000 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 0000007de0000000e800000080000000 7d0000000b0000002b00000002000000 0000007de0000000e800000080000000 - {e=>-2,c=>0,a=>23,g=>-2,b=>0,d=>0,f=>1} 17000000000000001800000002000000 17000000000000001800000002000000 17000000000000001800000002000000 00000017000000002400000080000000 17000000000000001800000002000000 17000000000000001800000002000000 00000017000000002400000080000000 17000000000000001800000002000000 00000017000000002400000080000000 - {e=>-2,c=>0,a=>-89,g=>1,b=>2,d=>2,f=>-1} a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 ffffffa780000000ac00000040000000 a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 ffffffa780000000ac00000040000000 a7ffffff020000003a00000001000000 ffffffa780000000ac00000040000000 - {e=>-1,c=>3,a=>46,g=>1,b=>1,d=>1,f=>0} 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 0000002e700000007000000040000000 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 0000002e700000007000000040000000 2e0000000d0000000d00000001000000 0000002e700000007000000040000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>-2,a=>-37,d=>1,c=>1,h=>0,b=>0,g=>1,f=>-1} dbffffff040000003900000001000000 dbffffff040000003900000001000000 dbffffff040000003900000001000000 ffffffdb100000006c00000040000000 dbffffff040000003900000001000000 dbffffff040000003900000001000000 ffffffdb100000006c00000040000000 dbffffff040000003900000001000000 ffffffdb100000006c00000040000000 - {e=>0,a=>-96,d=>3,c=>3,h=>1,b=>0,g=>-2,f=>1} a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 ffffffa030000000c400000090000000 a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 ffffffa030000000c400000090000000 a0ffffff0c0000001300000006000000 ffffffa030000000c400000090000000 - {e=>-1,a=>-27,d=>1,c=>3,h=>-1,b=>1,g=>1,f=>-1} e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 ffffffe5700000007c00000070000000 e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 ffffffe5700000007c00000070000000 e5ffffff0d0000003d0000000d000000 ffffffe5700000007c00000070000000 - {e=>-2,a=>-117,d=>3,c=>2,h=>-2,b=>1,g=>-1,f=>-2} 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 ffffff8b60000000e8000000e0000000 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 ffffff8b60000000e8000000e0000000 8bffffff090000002b0000000b000000 ffffff8b60000000e8000000e0000000 - {e=>1,a=>-10,d=>0,c=>0,h=>-2,b=>0,g=>1,f=>1} f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 fffffff6000000001400000060000000 f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 fffffff6000000001400000060000000 f6ffffff000000001400000009000000 fffffff6000000001400000060000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>1,a=>-4,d=>3,c=>3,h=>-2,b=>0,g=>1,f=>-1,i=>-1} fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fffffffc30000000dc0000006c000000 fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fffffffc30000000dc0000006c000000 fcffffff0c0000003700000039000000 fffffffc30000000dc0000006c000000 - {e=>0,a=>98,d=>2,c=>2,h=>0,b=>2,g=>0,f=>1,i=>-2} 620000000a0000001200000020000000 620000000a0000001200000020000000 620000000a0000001200000020000000 00000062a00000008400000008000000 620000000a0000001200000020000000 620000000a0000001200000020000000 00000062a00000008400000008000000 620000000a0000001200000020000000 00000062a00000008400000008000000 - {e=>1,a=>40,d=>3,c=>2,h=>1,b=>3,g=>0,f=>-1,i=>1} 280000000b0000003700000014000000 280000000b0000003700000014000000 280000000b0000003700000014000000 00000028e0000000dc00000014000000 280000000b0000003700000014000000 280000000b0000003700000014000000 00000028e0000000dc00000014000000 280000000b0000003700000014000000 00000028e0000000dc00000014000000 - {e=>0,a=>-91,d=>0,c=>3,h=>0,b=>2,g=>-1,f=>-1,i=>-1} a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 ffffffa5b00000000c000000cc000000 a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 ffffffa5b00000000c000000cc000000 a5ffffff0e0000003000000033000000 ffffffa5b00000000c000000cc000000 - {e=>0,a=>111,d=>2,c=>1,h=>-1,b=>0,g=>-2,f=>-2,i=>-1} 6f00000004000000220000003e000000 6f00000004000000220000003e000000 6f00000004000000220000003e000000 0000006f1000000088000000bc000000 6f00000004000000220000003e000000 6f00000004000000220000003e000000 0000006f1000000088000000bc000000 6f00000004000000220000003e000000 0000006f1000000088000000bc000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-110,d=>2,c=>3,h=>-1,b=>1,g=>0,f=>-2,i=>0} 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 ffffff92700000008800000030000000 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 ffffff92700000008800000030000000 92ffffff0d000000220000000c000000 ffffff92700000008800000030000000 - {e=>-2,a=>-48,d=>1,c=>0,h=>-2,b=>3,g=>1,f=>0,i=>1} d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 ffffffd0c00000006000000064000000 d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 ffffffd0c00000006000000064000000 d0ffffff030000000900000019000000 ffffffd0c00000006000000064000000 - {e=>-1,a=>107,d=>3,c=>3,h=>0,b=>3,g=>1,f=>1,i=>0} 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 0000006bf0000000f400000040000000 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 0000006bf0000000f400000040000000 6b0000000f0000001f00000001000000 0000006bf0000000f400000040000000 - {e=>-1,a=>23,d=>3,c=>0,h=>-2,b=>0,g=>0,f=>0,i=>1} 17000000000000000f00000018000000 17000000000000000f00000018000000 17000000000000000f00000018000000 0000001700000000f000000024000000 17000000000000000f00000018000000 17000000000000000f00000018000000 0000001700000000f000000024000000 17000000000000000f00000018000000 0000001700000000f000000024000000 - {e=>-2,a=>-85,d=>3,c=>2,h=>0,b=>1,g=>0,f=>-1,i=>1} abffffff090000003b00000010000000 abffffff090000003b00000010000000 abffffff090000003b00000010000000 ffffffab60000000ec00000004000000 abffffff090000003b00000010000000 abffffff090000003b00000010000000 ffffffab60000000ec00000004000000 abffffff090000003b00000010000000 ffffffab60000000ec00000004000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>0,a=>-100,d=>3,j=>-1,c=>2,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 ffffff9c60000000cc000000fc000000c0000000 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 ffffff9c60000000cc000000fc000000c0000000 9cffffff09000000330000003f00000003000000 ffffff9c60000000cc000000fc000000c0000000 - {e=>1,a=>18,d=>0,j=>1,c=>2,h=>-2,b=>2,g=>1,f=>-2,i=>0} 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 00000012a0000000180000006000000040000000 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 00000012a0000000180000006000000040000000 120000000a000000240000000900000001000000 00000012a0000000180000006000000040000000 - {e=>-2,a=>-36,d=>1,j=>0,c=>0,h=>-2,b=>2,g=>-1,f=>0,i=>-1} dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 ffffffdc8000000060000000ec00000000000000 dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 ffffffdc8000000060000000ec00000000000000 dcffffff02000000090000003b00000000000000 ffffffdc8000000060000000ec00000000000000 - {e=>1,a=>-45,d=>0,j=>0,c=>0,h=>0,b=>0,g=>1,f=>0,i=>-1} d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 ffffffd300000000100000004c00000000000000 d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 ffffffd300000000100000004c00000000000000 d3ffffff00000000040000003100000000000000 ffffffd300000000100000004c00000000000000 - {e=>-2,a=>103,d=>3,j=>-2,c=>0,h=>1,b=>0,g=>1,f=>0,i=>1} 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 0000006700000000e00000005400000080000000 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 0000006700000000e00000005400000080000000 67000000000000000b0000001500000002000000 0000006700000000e00000005400000080000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>-2,a=>108,d=>3,j=>-2,c=>0,k=>-117,h=>1,b=>0,g=>1,f=>-1,i=>-1} 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 0000006c00000000ec0000005c00000080000000ffffff8b 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 0000006c00000000ec0000005c00000080000000ffffff8b 6c000000000000003b00000035000000020000008bffffff 0000006c00000000ec0000005c00000080000000ffffff8b - {e=>-1,a=>43,d=>1,j=>-1,c=>1,k=>16,h=>-2,b=>2,g=>-2,f=>-2,i=>1} 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 0000002b9000000078000000a4000000c000000000000010 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 0000002b9000000078000000a4000000c000000000000010 2b000000060000002d0000001a0000000300000010000000 0000002b9000000078000000a4000000c000000000000010 - {e=>1,a=>-38,d=>0,j=>0,c=>3,k=>-25,h=>-1,b=>0,g=>-1,f=>0,i=>1} daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff ffffffda3000000010000000f400000000000000ffffffe7 daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff ffffffda3000000010000000f400000000000000ffffffe7 daffffff0c000000040000001f00000000000000e7ffffff ffffffda3000000010000000f400000000000000ffffffe7 - {e=>0,a=>-93,d=>3,j=>0,c=>1,k=>23,h=>-2,b=>1,g=>-1,f=>0,i=>0} a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 ffffffa350000000c0000000e00000000000000000000017 a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 ffffffa350000000c0000000e00000000000000000000017 a3ffffff05000000030000000b0000000000000017000000 ffffffa350000000c0000000e00000000000000000000017 - {e=>0,a=>108,d=>2,j=>-1,c=>1,k=>90,h=>-2,b=>0,g=>-2,f=>0,i=>1} 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 0000006c1000000080000000a4000000c00000000000005a 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 0000006c1000000080000000a4000000c00000000000005a 6c00000004000000020000001a000000030000005a000000 0000006c1000000080000000a4000000c00000000000005a = struct mixed2 { long a; unsigned int b:2; }; - {a=>25,b=>0} 1900000000000000 19000000000000000000000000000000 19000000000000000000000000000000 0000001900000000 1900000000000000 1900000000000000 00000000000000190000000000000000 1900000000000000 0000001900000000 - {a=>-13,b=>2} f3ffffff02000000 f3ffffffffffffff0200000000000000 f3ffffffffffffff0200000000000000 fffffff380000000 f3ffffff02000000 f3ffffff02000000 fffffffffffffff38000000000000000 f3ffffff02000000 fffffff380000000 - {a=>-45,b=>3} d3ffffff03000000 d3ffffffffffffff0300000000000000 d3ffffffffffffff0300000000000000 ffffffd3c0000000 d3ffffff03000000 d3ffffff03000000 ffffffffffffffd3c000000000000000 d3ffffff03000000 ffffffd3c0000000 - {a=>-4,b=>0} fcffffff00000000 fcffffffffffffff0000000000000000 fcffffffffffffff0000000000000000 fffffffc00000000 fcffffff00000000 fcffffff00000000 fffffffffffffffc0000000000000000 fcffffff00000000 fffffffc00000000 - {a=>121,b=>3} 7900000003000000 79000000000000000300000000000000 79000000000000000300000000000000 00000079c0000000 7900000003000000 7900000003000000 0000000000000079c000000000000000 7900000003000000 00000079c0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>-103,b=>2} 99ffffff0a000000 99ffffffffffffff0a00000000000000 99ffffffffffffff0a00000000000000 ffffff99a0000000 99ffffff0a000000 99ffffff0a000000 ffffffffffffff99a000000000000000 99ffffff0a000000 ffffff99a0000000 - {c=>1,a=>15,b=>2} 0f00000006000000 0f000000000000000600000000000000 0f000000000000000600000000000000 0000000f90000000 0f00000006000000 0f00000006000000 000000000000000f9000000000000000 0f00000006000000 0000000f90000000 - {c=>2,a=>30,b=>1} 1e00000009000000 1e000000000000000900000000000000 1e000000000000000900000000000000 0000001e60000000 1e00000009000000 1e00000009000000 000000000000001e6000000000000000 1e00000009000000 0000001e60000000 - {c=>0,a=>77,b=>1} 4d00000001000000 4d000000000000000100000000000000 4d000000000000000100000000000000 0000004d40000000 4d00000001000000 4d00000001000000 000000000000004d4000000000000000 4d00000001000000 0000004d40000000 - {c=>0,a=>35,b=>3} 2300000003000000 23000000000000000300000000000000 23000000000000000300000000000000 00000023c0000000 2300000003000000 2300000003000000 0000000000000023c000000000000000 2300000003000000 00000023c0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>3,a=>24,b=>2} 180000000e000000 18000000000000000e00000000000000 18000000000000000e00000000000000 00000018b0000000 180000000e000000 180000000e000000 0000000000000018b000000000000000 180000000e000000 00000018b0000000 - {c=>1,a=>20,b=>0} 1400000004000000 14000000000000000400000000000000 14000000000000000400000000000000 0000001410000000 1400000004000000 1400000004000000 00000000000000141000000000000000 1400000004000000 0000001410000000 - {c=>3,a=>-15,b=>2} f1ffffff0e000000 f1ffffffffffffff0e00000000000000 f1ffffffffffffff0e00000000000000 fffffff1b0000000 f1ffffff0e000000 f1ffffff0e000000 fffffffffffffff1b000000000000000 f1ffffff0e000000 fffffff1b0000000 - {c=>1,a=>8,b=>1} 0800000005000000 08000000000000000500000000000000 08000000000000000500000000000000 0000000850000000 0800000005000000 0800000005000000 00000000000000085000000000000000 0800000005000000 0000000850000000 - {c=>3,a=>79,b=>3} 4f0000000f000000 4f000000000000000f00000000000000 4f000000000000000f00000000000000 0000004ff0000000 4f0000000f000000 4f0000000f000000 000000000000004ff000000000000000 4f0000000f000000 0000004ff0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>1,a=>-41,b=>3,d=>0} d7ffffff0700000000000000 d7ffffffffffffff0700000000000000 d7ffffffffffffff0700000000000000 ffffffd7d000000000000000 d7ffffff0700000000000000 d7ffffff0700000000000000 ffffffffffffffd7d000000000000000 d7ffffff0700000000000000 ffffffd7d000000000000000 - {c=>0,a=>89,b=>3,d=>2} 590000000300000002000000 59000000000000000300000002000000 59000000000000000300000002000000 00000059c000000080000000 590000000300000002000000 590000000300000002000000 0000000000000059c000000080000000 590000000300000002000000 00000059c000000080000000 - {c=>1,a=>72,b=>2,d=>1} 480000000600000001000000 48000000000000000600000001000000 48000000000000000600000001000000 000000489000000040000000 480000000600000001000000 480000000600000001000000 00000000000000489000000040000000 480000000600000001000000 000000489000000040000000 - {c=>3,a=>-32,b=>1,d=>2} e0ffffff0d00000002000000 e0ffffffffffffff0d00000002000000 e0ffffffffffffff0d00000002000000 ffffffe07000000080000000 e0ffffff0d00000002000000 e0ffffff0d00000002000000 ffffffffffffffe07000000080000000 e0ffffff0d00000002000000 ffffffe07000000080000000 - {c=>1,a=>96,b=>0,d=>0} 600000000400000000000000 60000000000000000400000000000000 60000000000000000400000000000000 000000601000000000000000 600000000400000000000000 600000000400000000000000 00000000000000601000000000000000 600000000400000000000000 000000601000000000000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>-2,c=>1,a=>52,b=>3,d=>1} 340000000700000009000000 34000000000000000700000009000000 34000000000000000700000009000000 00000034d000000060000000 340000000700000009000000 340000000700000009000000 0000000000000034d000000060000000 340000000700000009000000 00000034d000000060000000 - {e=>-1,c=>2,a=>-124,b=>2,d=>3} 84ffffff0a0000000f000000 84ffffffffffffff0a0000000f000000 84ffffffffffffff0a0000000f000000 ffffff84a0000000f0000000 84ffffff0a0000000f000000 84ffffff0a0000000f000000 ffffffffffffff84a0000000f0000000 84ffffff0a0000000f000000 ffffff84a0000000f0000000 - {e=>-1,c=>1,a=>-79,b=>2,d=>1} b1ffffff060000000d000000 b1ffffffffffffff060000000d000000 b1ffffffffffffff060000000d000000 ffffffb19000000070000000 b1ffffff060000000d000000 b1ffffff060000000d000000 ffffffffffffffb19000000070000000 b1ffffff060000000d000000 ffffffb19000000070000000 - {e=>0,c=>0,a=>-70,b=>2,d=>2} baffffff0200000002000000 baffffffffffffff0200000002000000 baffffffffffffff0200000002000000 ffffffba8000000080000000 baffffff0200000002000000 baffffff0200000002000000 ffffffffffffffba8000000080000000 baffffff0200000002000000 ffffffba8000000080000000 - {e=>-1,c=>0,a=>-18,b=>2,d=>1} eeffffff020000000d000000 eeffffffffffffff020000000d000000 eeffffffffffffff020000000d000000 ffffffee8000000070000000 eeffffff020000000d000000 eeffffff020000000d000000 ffffffffffffffee8000000070000000 eeffffff020000000d000000 ffffffee8000000070000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>-1,c=>2,a=>-31,b=>0,d=>2,f=>1} e1ffffff080000001e000000 e1ffffffffffffff080000001e000000 e1ffffffffffffff080000001e000000 ffffffe120000000b4000000 e1ffffff080000001e000000 e1ffffff080000001e000000 ffffffffffffffe120000000b4000000 e1ffffff080000001e000000 ffffffe120000000b4000000 - {e=>0,c=>2,a=>-103,b=>2,d=>1,f=>0} 99ffffff0a00000001000000 99ffffffffffffff0a00000001000000 99ffffffffffffff0a00000001000000 ffffff99a000000040000000 99ffffff0a00000001000000 99ffffff0a00000001000000 ffffffffffffff99a000000040000000 99ffffff0a00000001000000 ffffff99a000000040000000 - {e=>-1,c=>2,a=>51,b=>3,d=>1,f=>-1} 330000000b0000003d000000 33000000000000000b0000003d000000 33000000000000000b0000003d000000 00000033e00000007c000000 330000000b0000003d000000 330000000b0000003d000000 0000000000000033e00000007c000000 330000000b0000003d000000 00000033e00000007c000000 - {e=>1,c=>3,a=>-94,b=>0,d=>0,f=>-1} a2ffffff0c00000034000000 a2ffffffffffffff0c00000034000000 a2ffffffffffffff0c00000034000000 ffffffa2300000001c000000 a2ffffff0c00000034000000 a2ffffff0c00000034000000 ffffffffffffffa2300000001c000000 a2ffffff0c00000034000000 ffffffa2300000001c000000 - {e=>-1,c=>3,a=>-14,b=>0,d=>2,f=>-2} f2ffffff0c0000002e000000 f2ffffffffffffff0c0000002e000000 f2ffffffffffffff0c0000002e000000 fffffff230000000b8000000 f2ffffff0c0000002e000000 f2ffffff0c0000002e000000 fffffffffffffff230000000b8000000 f2ffffff0c0000002e000000 fffffff230000000b8000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>-2,c=>0,a=>80,b=>1,d=>0,f=>0} 500000000100000008000000 50000000000000000100000008000000 50000000000000000100000008000000 000000504000000020000000 500000000100000008000000 500000000100000008000000 00000000000000504000000020000000 500000000100000008000000 000000504000000020000000 - {e=>1,c=>2,a=>12,b=>1,d=>1,f=>-2} 0c0000000900000025000000 0c000000000000000900000025000000 0c000000000000000900000025000000 0000000c6000000058000000 0c0000000900000025000000 0c0000000900000025000000 000000000000000c6000000058000000 0c0000000900000025000000 0000000c6000000058000000 - {e=>-2,c=>0,a=>-50,b=>2,d=>3,f=>-1} ceffffff020000003b000000 ceffffffffffffff020000003b000000 ceffffffffffffff020000003b000000 ffffffce80000000ec000000 ceffffff020000003b000000 ceffffff020000003b000000 ffffffffffffffce80000000ec000000 ceffffff020000003b000000 ffffffce80000000ec000000 - {e=>-1,c=>1,a=>95,b=>3,d=>2,f=>-1} 5f000000070000003e000000 5f00000000000000070000003e000000 5f00000000000000070000003e000000 0000005fd0000000bc000000 5f000000070000003e000000 5f000000070000003e000000 000000000000005fd0000000bc000000 5f000000070000003e000000 0000005fd0000000bc000000 - {e=>1,c=>2,a=>99,b=>0,d=>3,f=>0} 630000000800000007000000 63000000000000000800000007000000 63000000000000000800000007000000 0000006320000000d0000000 630000000800000007000000 630000000800000007000000 000000000000006320000000d0000000 630000000800000007000000 0000006320000000d0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>1,c=>2,a=>-83,g=>-2,b=>3,d=>2,f=>1} adffffff0b0000001600000002000000 adffffffffffffff0b000000160000000200000000000000 adffffffffffffff0b000000160000000200000000000000 ffffffade00000009400000080000000 adffffff0b0000001600000002000000 adffffff0b0000001600000002000000 ffffffffffffffade0000000940000008000000000000000 adffffff0b0000001600000002000000 ffffffade00000009400000080000000 - {e=>1,c=>2,a=>21,g=>-2,b=>3,d=>1,f=>1} 150000000b0000001500000002000000 15000000000000000b000000150000000200000000000000 15000000000000000b000000150000000200000000000000 00000015e00000005400000080000000 150000000b0000001500000002000000 150000000b0000001500000002000000 0000000000000015e0000000540000008000000000000000 150000000b0000001500000002000000 00000015e00000005400000080000000 - {e=>0,c=>2,a=>90,g=>0,b=>0,d=>2,f=>1} 5a000000080000001200000000000000 5a0000000000000008000000120000000000000000000000 5a0000000000000008000000120000000000000000000000 0000005a200000008400000000000000 5a000000080000001200000000000000 5a000000080000001200000000000000 000000000000005a20000000840000000000000000000000 5a000000080000001200000000000000 0000005a200000008400000000000000 - {e=>-2,c=>3,a=>-13,g=>-2,b=>2,d=>2,f=>-2} f3ffffff0e0000002a00000002000000 f3ffffffffffffff0e0000002a0000000200000000000000 f3ffffffffffffff0e0000002a0000000200000000000000 fffffff3b0000000a800000080000000 f3ffffff0e0000002a00000002000000 f3ffffff0e0000002a00000002000000 fffffffffffffff3b0000000a80000008000000000000000 f3ffffff0e0000002a00000002000000 fffffff3b0000000a800000080000000 - {e=>-2,c=>0,a=>125,g=>-1,b=>1,d=>1,f=>-2} 7d000000010000002900000003000000 7d0000000000000001000000290000000300000000000000 7d0000000000000001000000290000000300000000000000 0000007d4000000068000000c0000000 7d000000010000002900000003000000 7d000000010000002900000003000000 000000000000007d4000000068000000c000000000000000 7d000000010000002900000003000000 0000007d4000000068000000c0000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>1,a=>-118,d=>0,c=>1,h=>0,b=>2,g=>0,f=>1} 8affffff060000001400000000000000 8affffffffffffff06000000140000000000000000000000 8affffffffffffff06000000140000000000000000000000 ffffff8a900000001400000000000000 8affffff060000001400000000000000 8affffff060000001400000000000000 ffffffffffffff8a90000000140000000000000000000000 8affffff060000001400000000000000 ffffff8a900000001400000000000000 - {e=>-1,a=>-22,d=>2,c=>1,h=>-2,b=>0,g=>-2,f=>-1} eaffffff040000003e0000000a000000 eaffffffffffffff040000003e0000000a00000000000000 eaffffffffffffff040000003e0000000a00000000000000 ffffffea10000000bc000000a0000000 eaffffff040000003e0000000a000000 eaffffff040000003e0000000a000000 ffffffffffffffea10000000bc000000a000000000000000 eaffffff040000003e0000000a000000 ffffffea10000000bc000000a0000000 - {e=>0,a=>35,d=>2,c=>2,h=>1,b=>0,g=>-1,f=>0} 23000000080000000200000007000000 230000000000000008000000020000000700000000000000 230000000000000008000000020000000700000000000000 000000232000000080000000d0000000 23000000080000000200000007000000 23000000080000000200000007000000 00000000000000232000000080000000d000000000000000 23000000080000000200000007000000 000000232000000080000000d0000000 - {e=>1,a=>109,d=>0,c=>0,h=>0,b=>0,g=>1,f=>0} 6d000000000000000400000001000000 6d0000000000000000000000040000000100000000000000 6d0000000000000000000000040000000100000000000000 0000006d000000001000000040000000 6d000000000000000400000001000000 6d000000000000000400000001000000 000000000000006d00000000100000004000000000000000 6d000000000000000400000001000000 0000006d000000001000000040000000 - {e=>1,a=>67,d=>1,c=>1,h=>0,b=>0,g=>-2,f=>0} 43000000040000000500000002000000 430000000000000004000000050000000200000000000000 430000000000000004000000050000000200000000000000 00000043100000005000000080000000 43000000040000000500000002000000 43000000040000000500000002000000 000000000000004310000000500000008000000000000000 43000000040000000500000002000000 00000043100000005000000080000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-1,a=>-88,d=>2,c=>3,h=>-1,b=>3,g=>-2,f=>0,i=>-1} a8ffffff0f0000000e0000003e000000 a8ffffffffffffff0f0000000e0000003e00000000000000 a8ffffffffffffff0f0000000e0000003e00000000000000 ffffffa8f0000000b0000000bc000000 a8ffffff0f0000000e0000003e000000 a8ffffff0f0000000e0000003e000000 ffffffffffffffa8f0000000b0000000bc00000000000000 a8ffffff0f0000000e0000003e000000 ffffffa8f0000000b0000000bc000000 - {e=>-1,a=>117,d=>0,c=>2,h=>-1,b=>2,g=>-1,f=>0,i=>0} 750000000a0000000c0000000f000000 75000000000000000a0000000c0000000f00000000000000 75000000000000000a0000000c0000000f00000000000000 00000075a000000030000000f0000000 750000000a0000000c0000000f000000 750000000a0000000c0000000f000000 0000000000000075a000000030000000f000000000000000 750000000a0000000c0000000f000000 00000075a000000030000000f0000000 - {e=>-1,a=>119,d=>1,c=>0,h=>-1,b=>2,g=>1,f=>-2,i=>1} 77000000020000002d0000001d000000 7700000000000000020000002d0000001d00000000000000 7700000000000000020000002d0000001d00000000000000 00000077800000007800000074000000 77000000020000002d0000001d000000 77000000020000002d0000001d000000 000000000000007780000000780000007400000000000000 77000000020000002d0000001d000000 00000077800000007800000074000000 - {e=>0,a=>-126,d=>1,c=>2,h=>1,b=>2,g=>0,f=>0,i=>-2} 82ffffff0a0000000100000024000000 82ffffffffffffff0a000000010000002400000000000000 82ffffffffffffff0a000000010000002400000000000000 ffffff82a00000004000000018000000 82ffffff0a0000000100000024000000 82ffffff0a0000000100000024000000 ffffffffffffff82a0000000400000001800000000000000 82ffffff0a0000000100000024000000 ffffff82a00000004000000018000000 - {e=>-1,a=>-78,d=>3,c=>2,h=>-2,b=>2,g=>-2,f=>-1,i=>1} b2ffffff0a0000003f0000001a000000 b2ffffffffffffff0a0000003f0000001a00000000000000 b2ffffffffffffff0a0000003f0000001a00000000000000 ffffffb2a0000000fc000000a4000000 b2ffffff0a0000003f0000001a000000 b2ffffff0a0000003f0000001a000000 ffffffffffffffb2a0000000fc000000a400000000000000 b2ffffff0a0000003f0000001a000000 ffffffb2a0000000fc000000a4000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-53,d=>0,c=>3,h=>-1,b=>1,g=>1,f=>1,i=>0} cbffffff0d000000100000000d000000 cbffffffffffffff0d000000100000000d00000000000000 cbffffffffffffff0d000000100000000d00000000000000 ffffffcb700000000400000070000000 cbffffff0d000000100000000d000000 cbffffff0d000000100000000d000000 ffffffffffffffcb70000000040000007000000000000000 cbffffff0d000000100000000d000000 ffffffcb700000000400000070000000 - {e=>-2,a=>-108,d=>2,c=>0,h=>-1,b=>2,g=>-1,f=>0,i=>-2} 94ffffff020000000a0000002f000000 94ffffffffffffff020000000a0000002f00000000000000 94ffffffffffffff020000000a0000002f00000000000000 ffffff9480000000a0000000f8000000 94ffffff020000000a0000002f000000 94ffffff020000000a0000002f000000 ffffffffffffff9480000000a0000000f800000000000000 94ffffff020000000a0000002f000000 ffffff9480000000a0000000f8000000 - {e=>1,a=>-117,d=>1,c=>1,h=>0,b=>1,g=>-2,f=>0,i=>-1} 8bffffff050000000500000032000000 8bffffffffffffff05000000050000003200000000000000 8bffffffffffffff05000000050000003200000000000000 ffffff8b50000000500000008c000000 8bffffff050000000500000032000000 8bffffff050000000500000032000000 ffffffffffffff8b50000000500000008c00000000000000 8bffffff050000000500000032000000 ffffff8b50000000500000008c000000 - {e=>1,a=>121,d=>1,c=>1,h=>-2,b=>0,g=>1,f=>0,i=>1} 79000000040000000500000019000000 790000000000000004000000050000001900000000000000 790000000000000004000000050000001900000000000000 00000079100000005000000064000000 79000000040000000500000019000000 79000000040000000500000019000000 000000000000007910000000500000006400000000000000 79000000040000000500000019000000 00000079100000005000000064000000 - {e=>-2,a=>-2,d=>1,c=>3,h=>-2,b=>0,g=>-1,f=>-2,i=>-2} feffffff0c000000290000002b000000 feffffffffffffff0c000000290000002b00000000000000 feffffffffffffff0c000000290000002b00000000000000 fffffffe3000000068000000e8000000 feffffff0c000000290000002b000000 feffffff0c000000290000002b000000 fffffffffffffffe3000000068000000e800000000000000 feffffff0c000000290000002b000000 fffffffe3000000068000000e8000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>-1,a=>65,d=>2,j=>-1,c=>3,h=>0,b=>0,g=>1,f=>0,i=>0} 410000000c0000000e0000000100000003000000 41000000000000000c0000000e0000000100000003000000 41000000000000000c0000000e0000000100000003000000 0000004130000000b000000040000000c0000000 410000000c0000000e0000000100000003000000 410000000c0000000e0000000100000003000000 000000000000004130000000b000000040000000c0000000 410000000c0000000e0000000100000003000000 0000004130000000b000000040000000c0000000 - {e=>-1,a=>68,d=>0,j=>1,c=>0,h=>-2,b=>2,g=>-1,f=>-2,i=>-1} 44000000020000002c0000003b00000001000000 4400000000000000020000002c0000003b00000001000000 4400000000000000020000002c0000003b00000001000000 000000448000000038000000ec00000040000000 44000000020000002c0000003b00000001000000 44000000020000002c0000003b00000001000000 00000000000000448000000038000000ec00000040000000 44000000020000002c0000003b00000001000000 000000448000000038000000ec00000040000000 - {e=>1,a=>15,d=>3,j=>0,c=>0,h=>-1,b=>3,g=>1,f=>-2,i=>-1} 0f00000003000000270000003d00000000000000 0f0000000000000003000000270000003d00000000000000 0f0000000000000003000000270000003d00000000000000 0000000fc0000000d80000007c00000000000000 0f00000003000000270000003d00000000000000 0f00000003000000270000003d00000000000000 000000000000000fc0000000d80000007c00000000000000 0f00000003000000270000003d00000000000000 0000000fc0000000d80000007c00000000000000 - {e=>-1,a=>-76,d=>3,j=>-2,c=>3,h=>1,b=>2,g=>1,f=>-2,i=>1} b4ffffff0e0000002f0000001500000002000000 b4ffffffffffffff0e0000002f0000001500000002000000 b4ffffffffffffff0e0000002f0000001500000002000000 ffffffb4b0000000f80000005400000080000000 b4ffffff0e0000002f0000001500000002000000 b4ffffff0e0000002f0000001500000002000000 ffffffffffffffb4b0000000f80000005400000080000000 b4ffffff0e0000002f0000001500000002000000 ffffffb4b0000000f80000005400000080000000 - {e=>-1,a=>65,d=>3,j=>1,c=>1,h=>0,b=>2,g=>0,f=>0,i=>0} 41000000060000000f0000000000000001000000 4100000000000000060000000f0000000000000001000000 4100000000000000060000000f0000000000000001000000 0000004190000000f00000000000000040000000 41000000060000000f0000000000000001000000 41000000060000000f0000000000000001000000 000000000000004190000000f00000000000000040000000 41000000060000000f0000000000000001000000 0000004190000000f00000000000000040000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>1,a=>-49,d=>0,j=>-2,c=>3,k=>-42,h=>1,b=>0,g=>-2,f=>1,i=>-2} cfffffff0c000000140000002600000002000000d6ffffff cfffffffffffffff0c000000140000002600000002000000d6ffffff00000000 cfffffffffffffff0c000000140000002600000002000000d6ffffff00000000 ffffffcf30000000140000009800000080000000ffffffd6 cfffffff0c000000140000002600000002000000d6ffffff cfffffff0c000000140000002600000002000000d6ffffff ffffffffffffffcf30000000140000009800000080000000ffffffd600000000 cfffffff0c000000140000002600000002000000d6ffffff ffffffcf30000000140000009800000080000000ffffffd6 - {e=>0,a=>91,d=>3,j=>-2,c=>2,k=>-107,h=>0,b=>3,g=>-2,f=>-2,i=>0} 5b0000000b00000023000000020000000200000095ffffff 5b000000000000000b00000023000000020000000200000095ffffff00000000 5b000000000000000b00000023000000020000000200000095ffffff00000000 0000005be0000000c80000008000000080000000ffffff95 5b0000000b00000023000000020000000200000095ffffff 5b0000000b00000023000000020000000200000095ffffff 000000000000005be0000000c80000008000000080000000ffffff9500000000 5b0000000b00000023000000020000000200000095ffffff 0000005be0000000c80000008000000080000000ffffff95 - {e=>-1,a=>119,d=>0,j=>-1,c=>2,k=>-75,h=>0,b=>0,g=>0,f=>0,i=>1} 77000000080000000c0000001000000003000000b5ffffff 7700000000000000080000000c0000001000000003000000b5ffffff00000000 7700000000000000080000000c0000001000000003000000b5ffffff00000000 00000077200000003000000004000000c0000000ffffffb5 77000000080000000c0000001000000003000000b5ffffff 77000000080000000c0000001000000003000000b5ffffff 0000000000000077200000003000000004000000c0000000ffffffb500000000 77000000080000000c0000001000000003000000b5ffffff 00000077200000003000000004000000c0000000ffffffb5 - {e=>1,a=>56,d=>2,j=>-2,c=>1,k=>-42,h=>-2,b=>2,g=>0,f=>-1,i=>0} 3800000006000000360000000800000002000000d6ffffff 380000000000000006000000360000000800000002000000d6ffffff00000000 380000000000000006000000360000000800000002000000d6ffffff00000000 00000038900000009c0000002000000080000000ffffffd6 3800000006000000360000000800000002000000d6ffffff 3800000006000000360000000800000002000000d6ffffff 0000000000000038900000009c0000002000000080000000ffffffd600000000 3800000006000000360000000800000002000000d6ffffff 00000038900000009c0000002000000080000000ffffffd6 - {e=>0,a=>47,d=>2,j=>1,c=>3,k=>-15,h=>-1,b=>0,g=>-1,f=>0,i=>1} 2f0000000c000000020000001f00000001000000f1ffffff 2f000000000000000c000000020000001f00000001000000f1ffffff00000000 2f000000000000000c000000020000001f00000001000000f1ffffff00000000 0000002f3000000080000000f400000040000000fffffff1 2f0000000c000000020000001f00000001000000f1ffffff 2f0000000c000000020000001f00000001000000f1ffffff 000000000000002f3000000080000000f400000040000000fffffff100000000 2f0000000c000000020000001f00000001000000f1ffffff 0000002f3000000080000000f400000040000000fffffff1 = struct uch_wrap { unsigned char a:3; }; - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>3} 03 03 03 60 03000000 03 60 03 60 - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>7} 07 07 07 e0 07000000 07 e0 07 e0 = struct uch_wrap { unsigned char a:3; unsigned char b:3; }; - {a=>1,b=>3} 19 19 19 2c 19000000 19 2c 19 2c - {a=>0,b=>4} 20 20 20 10 20000000 20 10 20 10 - {a=>1,b=>6} 31 31 31 38 31000000 31 38 31 38 - {a=>5,b=>4} 25 25 25 b0 25000000 25 b0 25 b0 - {a=>0,b=>4} 20 20 20 10 20000000 20 10 20 10 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>7,b=>7} 3f04 3f04 3f04 fc80 3f040000 3f04 fc80 3f04 fc80 - {c=>7,a=>3,b=>3} 1b07 1b07 1b07 6ce0 1b070000 1b07 6ce0 1b07 6ce0 - {c=>0,a=>6,b=>5} 2e00 2e00 2e00 d400 2e000000 2e00 d400 2e00 d400 - {c=>3,a=>5,b=>3} 1d03 1d03 1d03 ac60 1d030000 1d03 ac60 1d03 ac60 - {c=>5,a=>6,b=>1} 0e05 0e05 0e05 c4a0 0e050000 0e05 c4a0 0e05 c4a0 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>2,a=>2,b=>6,d=>2} 3212 3212 3212 5848 32120000 3212 5848 3212 5848 - {c=>3,a=>2,b=>5,d=>7} 2a3b 2a3b 2a3b 547c 2a3b0000 2a3b 547c 2a3b 547c - {c=>2,a=>6,b=>7,d=>2} 3e12 3e12 3e12 dc48 3e120000 3e12 dc48 3e12 dc48 - {c=>7,a=>6,b=>6,d=>4} 3627 3627 3627 d8f0 36270000 3627 d8f0 3627 d8f0 - {c=>7,a=>2,b=>2,d=>7} 123f 123f 123f 48fc 123f0000 123f 48fc 123f 48fc = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>6,c=>0,a=>7,b=>2,d=>5} 172806 172806 172806 e814c0 17280600 172806 e814c0 172806 e814c0 - {e=>0,c=>7,a=>1,b=>5,d=>5} 292f00 292f00 292f00 34f400 292f0000 292f00 34f400 292f00 34f400 - {e=>7,c=>4,a=>7,b=>7,d=>7} 3f3c07 3f3c07 3f3c07 fc9ce0 3f3c0700 3f3c07 fc9ce0 3f3c07 fc9ce0 - {e=>2,c=>2,a=>2,b=>6,d=>6} 323202 323202 323202 585840 32320200 323202 585840 323202 585840 - {e=>0,c=>5,a=>6,b=>6,d=>5} 362d00 362d00 362d00 d8b400 362d0000 362d00 d8b400 362d00 d8b400 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>2,c=>2,a=>0,b=>7,d=>5,f=>4} 382a22 382a22 382a22 1c5450 382a2200 382a22 1c5450 382a22 1c5450 - {e=>1,c=>5,a=>1,b=>5,d=>5,f=>5} 292d29 292d29 292d29 34b434 292d2900 292d29 34b434 292d29 34b434 - {e=>5,c=>7,a=>1,b=>7,d=>6,f=>4} 393725 393725 393725 3cf8b0 39372500 393725 3cf8b0 393725 3cf8b0 - {e=>5,c=>6,a=>6,b=>1,d=>4,f=>1} 0e260d 0e260d 0e260d c4d0a4 0e260d00 0e260d c4d0a4 0e260d c4d0a4 - {e=>6,c=>2,a=>7,b=>1,d=>6,f=>3} 0f321e 0f321e 0f321e e458cc 0f321e00 0f321e e458cc 0f321e e458cc = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>7,c=>4,a=>5,g=>0,b=>1,d=>1,f=>1} 0d0c0f00 0d0c0f00 0d0c0f00 a484e400 0d0c0f00 0d0c0f00 a484e400 0d0c0f00 a484e400 - {e=>3,c=>4,a=>6,g=>2,b=>4,d=>2,f=>0} 26140302 26140302 26140302 d0886040 26140302 26140302 d0886040 26140302 d0886040 - {e=>2,c=>4,a=>7,g=>6,b=>6,d=>4,f=>6} 37243206 37243206 37243206 f89058c0 37243206 37243206 f89058c0 37243206 f89058c0 - {e=>0,c=>6,a=>3,g=>0,b=>1,d=>6,f=>1} 0b360800 0b360800 0b360800 64d80400 0b360800 0b360800 64d80400 0b360800 64d80400 - {e=>3,c=>7,a=>0,g=>4,b=>4,d=>1,f=>4} 200f2304 200f2304 200f2304 10e47080 200f2304 200f2304 10e47080 200f2304 10e47080 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>1,a=>1,d=>4,c=>6,h=>5,b=>3,g=>5,f=>5} 1926292d 1926292d 1926292d 2cd034b4 1926292d 1926292d 2cd034b4 1926292d 2cd034b4 - {e=>7,a=>4,d=>6,c=>1,h=>0,b=>0,g=>0,f=>3} 04311f00 04311f00 04311f00 8038ec00 04311f00 04311f00 8038ec00 04311f00 8038ec00 - {e=>2,a=>6,d=>4,c=>1,h=>5,b=>4,g=>6,f=>3} 26211a2e 26211a2e 26211a2e d0304cd4 26211a2e 26211a2e d0304cd4 26211a2e d0304cd4 - {e=>1,a=>2,d=>6,c=>2,h=>6,b=>4,g=>3,f=>0} 22320133 22320133 22320133 50582078 22320133 22320133 50582078 22320133 50582078 - {e=>0,a=>1,d=>0,c=>3,h=>5,b=>3,g=>4,f=>5} 1903282c 1903282c 1903282c 2c601494 1903282c 1903282c 2c601494 1903282c 2c601494 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>6,d=>7,c=>0,h=>5,b=>3,g=>6,f=>2,i=>5} 1e38142e05 1e38142e05 1e38142e05 cc1c88d4a0 1e38142e05000000 1e38142e05 cc1c88d4a0 1e38142e05 cc1c88d4a0 - {e=>7,a=>3,d=>1,c=>0,h=>0,b=>2,g=>5,f=>6,i=>6} 1308370506 1308370506 1308370506 6804f8a0c0 1308370506000000 1308370506 6804f8a0c0 1308370506 6804f8a0c0 - {e=>3,a=>2,d=>4,c=>3,h=>6,b=>2,g=>7,f=>7,i=>6} 12233b3706 12233b3706 12233b3706 48707cf8c0 12233b3706000000 12233b3706 48707cf8c0 12233b3706 48707cf8c0 - {e=>0,a=>3,d=>7,c=>1,h=>7,b=>7,g=>0,f=>4,i=>0} 3b39203800 3b39203800 3b39203800 7c3c101c00 3b39203800000000 3b39203800 7c3c101c00 3b39203800 7c3c101c00 - {e=>5,a=>7,d=>0,c=>1,h=>3,b=>7,g=>3,f=>6,i=>1} 3f01351b01 3f01351b01 3f01351b01 fc20b86c20 3f01351b01000000 3f01351b01 fc20b86c20 3f01351b01 fc20b86c20 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>3,a=>6,d=>1,j=>4,c=>0,h=>4,b=>1,g=>5,f=>4,i=>1} 0e08232521 0e08232521 0e08232521 c40470b030 0e08232521000000 0e08232521 c40470b030 0e08232521 c40470b030 - {e=>6,a=>1,d=>1,j=>1,c=>2,h=>3,b=>4,g=>0,f=>5,i=>1} 210a2e1809 210a2e1809 210a2e1809 3044d40c24 210a2e1809000000 210a2e1809 3044d40c24 210a2e1809 3044d40c24 - {e=>5,a=>2,d=>6,j=>3,c=>7,h=>0,b=>7,g=>1,f=>7,i=>3} 3a373d011b 3a373d011b 3a373d011b 5cf8bc206c 3a373d011b000000 3a373d011b 5cf8bc206c 3a373d011b 5cf8bc206c - {e=>6,a=>1,d=>3,j=>3,c=>5,h=>6,b=>1,g=>5,f=>3,i=>7} 091d1e351f 091d1e351f 091d1e351f 24acccb8ec 091d1e351f000000 091d1e351f 24acccb8ec 091d1e351f 24acccb8ec - {e=>4,a=>0,d=>5,j=>4,c=>5,h=>2,b=>1,g=>1,f=>1,i=>2} 082d0c1122 082d0c1122 082d0c1122 04b4842850 082d0c1122000000 082d0c1122 04b4842850 082d0c1122 04b4842850 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>0,a=>4,d=>4,j=>1,c=>3,k=>2,h=>3,b=>4,g=>2,f=>6,i=>2} 2423301a0a02 2423301a0a02 2423301a0a02 9070184c4440 2423301a0a020000 2423301a0a02 9070184c4440 2423301a0a02 9070184c4440 - {e=>1,a=>6,d=>5,j=>4,c=>0,k=>1,h=>7,b=>1,g=>4,f=>7,i=>2} 0e28393c2201 0e28393c2201 0e28393c2201 c4143c9c5020 0e28393c22010000 0e28393c2201 c4143c9c5020 0e28393c2201 c4143c9c5020 - {e=>6,a=>3,d=>6,j=>5,c=>4,k=>1,h=>2,b=>1,g=>2,f=>2,i=>7} 0b3416122f01 0b3416122f01 0b3416122f01 6498c848f420 0b3416122f010000 0b3416122f01 6498c848f420 0b3416122f01 6498c848f420 - {e=>4,a=>2,d=>5,j=>1,c=>2,k=>7,h=>0,b=>0,g=>1,f=>0,i=>4} 022a04010c07 022a04010c07 022a04010c07 4054802084e0 022a04010c070000 022a04010c07 4054802084e0 022a04010c07 4054802084e0 - {e=>5,a=>0,d=>0,j=>4,c=>6,k=>4,h=>1,b=>3,g=>4,f=>2,i=>2} 1806150c2204 1806150c2204 1806150c2204 0cc0a8845080 1806150c22040000 1806150c2204 0cc0a8845080 1806150c2204 0cc0a8845080 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>1,a=>4,d=>2,j=>3,l=>2,c=>1,k=>0,h=>2,b=>4,g=>2,f=>4,i=>7} 241121121f10 241121121f10 241121121f10 90283048ec08 241121121f100000 241121121f10 90283048ec08 241121121f10 90283048ec08 - {e=>3,a=>2,d=>1,j=>0,l=>7,c=>0,k=>0,h=>5,b=>2,g=>6,f=>1,i=>0} 12080b2e0038 12080b2e0038 12080b2e0038 480464d4001c 12080b2e00380000 12080b2e0038 480464d4001c 12080b2e0038 480464d4001c - {e=>7,a=>6,d=>5,j=>3,l=>2,c=>7,k=>0,h=>4,b=>0,g=>7,f=>1,i=>5} 062f0f271d10 062f0f271d10 062f0f271d10 c0f4e4f0ac08 062f0f271d100000 062f0f271d10 c0f4e4f0ac08 062f0f271d10 c0f4e4f0ac08 - {e=>0,a=>3,d=>3,j=>3,l=>1,c=>5,k=>4,h=>3,b=>4,g=>3,f=>5,i=>7} 231d281b1f0c 231d281b1f0c 231d281b1f0c 70ac146cec84 231d281b1f0c0000 231d281b1f0c 70ac146cec84 231d281b1f0c 70ac146cec84 - {e=>2,a=>2,d=>6,j=>1,l=>1,c=>6,k=>7,h=>3,b=>7,g=>5,f=>4,i=>0} 3a36221d080f 3a36221d080f 3a36221d080f 5cd850ac04e4 3a36221d080f0000 3a36221d080f 5cd850ac04e4 3a36221d080f 5cd850ac04e4 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>3,a=>6,m=>7,d=>3,j=>4,l=>4,c=>2,k=>2,h=>5,b=>7,g=>6,f=>2,i=>3} 3e1a132e232207 3e1a132e232207 3e1a132e232207 dc4c68d47050e0 3e1a132e23220700 3e1a132e232207 dc4c68d47050e0 3e1a132e232207 dc4c68d47050e0 - {e=>2,a=>3,m=>0,d=>7,j=>7,l=>0,c=>2,k=>3,h=>1,b=>2,g=>1,f=>7,i=>7} 133a3a093f0300 133a3a093f0300 133a3a093f0300 685c5c24fc6000 133a3a093f030000 133a3a093f0300 685c5c24fc6000 133a3a093f0300 685c5c24fc6000 - {e=>3,a=>7,m=>0,d=>4,j=>6,l=>5,c=>1,k=>6,h=>2,b=>5,g=>7,f=>5,i=>1} 2f212b17312e00 2f212b17312e00 2f212b17312e00 f43074e838d400 2f212b17312e0000 2f212b17312e00 f43074e838d400 2f212b17312e00 f43074e838d400 - {e=>6,a=>5,m=>3,d=>0,j=>1,l=>5,c=>1,k=>3,h=>0,b=>6,g=>4,f=>4,i=>2} 350126040a2b03 350126040a2b03 350126040a2b03 b820d080447460 350126040a2b0300 350126040a2b03 b820d080447460 350126040a2b03 b820d080447460 - {e=>3,a=>3,m=>1,d=>1,j=>3,l=>4,c=>1,k=>6,h=>6,b=>1,g=>4,f=>1,i=>4} 0b090b341c2601 0b090b341c2601 0b090b341c2601 642464988cd020 0b090b341c260100 0b090b341c2601 642464988cd020 0b090b341c2601 642464988cd020 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; short n; }; - {e=>1,n=>106,a=>2,m=>4,d=>4,j=>1,l=>4,c=>1,k=>6,h=>1,b=>0,g=>4,f=>7,i=>1} 0221390c092604006a00 0221390c092604006a00 0221390c092604006a00 40303c8424d08000006a 0221390c092604006a000000 0221390c092604006a00 40303c8424d08000006a 0221390c092604006a00 40303c8424d08000006a - {e=>4,n=>74,a=>5,m=>5,d=>7,j=>0,l=>4,c=>0,k=>0,h=>4,b=>7,g=>2,f=>7,i=>5} 3d383c22052005004a00 3d383c22052005004a00 3d383c22052005004a00 bc1c9c50a010a000004a 3d383c22052005004a000000 3d383c22052005004a00 bc1c9c50a010a000004a 3d383c22052005004a00 bc1c9c50a010a000004a - {e=>7,n=>-6,a=>5,m=>1,d=>2,j=>6,l=>5,c=>2,k=>2,h=>7,b=>2,g=>0,f=>0,i=>7} 15120738372a0100faff 15120738372a0100faff 15120738372a0100faff a848e01cf8542000fffa 15120738372a0100faff0000 15120738372a0100faff a848e01cf8542000fffa 15120738372a0100faff a848e01cf8542000fffa - {e=>7,n=>-54,a=>2,m=>1,d=>4,j=>7,l=>3,c=>1,k=>2,h=>1,b=>2,g=>0,f=>5,i=>3} 12212f083b1a0100caff 12212f083b1a0100caff 12212f083b1a0100caff 4830f4047c4c2000ffca 12212f083b1a0100caff0000 12212f083b1a0100caff 4830f4047c4c2000ffca 12212f083b1a0100caff 4830f4047c4c2000ffca - {e=>6,n=>118,a=>5,m=>6,d=>0,j=>7,l=>4,c=>2,k=>6,h=>3,b=>6,g=>4,f=>7,i=>0} 35023e1c382606007600 35023e1c382606007600 35023e1c382606007600 b840dc8c1cd0c0000076 35023e1c3826060076000000 35023e1c382606007600 b840dc8c1cd0c0000076 35023e1c382606007600 b840dc8c1cd0c0000076 = struct uch_wrap { char a; unsigned char b:3; }; - {a=>-70,b=>6} ba06 ba06 ba06 bac0 ba060000 ba06 bac0 ba06 bac0 - {a=>-97,b=>5} 9f05 9f05 9f05 9fa0 9f050000 9f05 9fa0 9f05 9fa0 - {a=>-15,b=>0} f100 f100 f100 f100 f1000000 f100 f100 f100 f100 - {a=>-44,b=>0} d400 d400 d400 d400 d4000000 d400 d400 d400 d400 - {a=>102,b=>7} 6607 6607 6607 66e0 66070000 6607 66e0 6607 66e0 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>32,b=>5} 2035 2035 2035 20b8 20350000 2035 20b8 2035 20b8 - {c=>5,a=>-69,b=>3} bb2b bb2b bb2b bb74 bb2b0000 bb2b bb74 bb2b bb74 - {c=>3,a=>90,b=>2} 5a1a 5a1a 5a1a 5a4c 5a1a0000 5a1a 5a4c 5a1a 5a4c - {c=>5,a=>80,b=>6} 502e 502e 502e 50d4 502e0000 502e 50d4 502e 50d4 - {c=>6,a=>117,b=>3} 7533 7533 7533 7578 75330000 7533 7578 7533 7578 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>1,a=>4,b=>6,d=>2} 040e02 040e02 040e02 04c440 040e0200 040e02 04c440 040e02 04c440 - {c=>7,a=>-20,b=>1,d=>3} ec3903 ec3903 ec3903 ec3c60 ec390300 ec3903 ec3c60 ec3903 ec3c60 - {c=>2,a=>127,b=>1,d=>3} 7f1103 7f1103 7f1103 7f2860 7f110300 7f1103 7f2860 7f1103 7f2860 - {c=>6,a=>-48,b=>4,d=>4} d03404 d03404 d03404 d09880 d0340400 d03404 d09880 d03404 d09880 - {c=>4,a=>-78,b=>2,d=>5} b22205 b22205 b22205 b250a0 b2220500 b22205 b250a0 b22205 b250a0 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>3,c=>0,a=>120,b=>7,d=>7} 78071f 78071f 78071f 78e0ec 78071f00 78071f 78e0ec 78071f 78e0ec - {e=>6,c=>6,a=>-75,b=>2,d=>3} b53233 b53233 b53233 b55878 b5323300 b53233 b55878 b53233 b55878 - {e=>3,c=>2,a=>-61,b=>6,d=>7} c3161f c3161f c3161f c3c8ec c3161f00 c3161f c3c8ec c3161f c3c8ec - {e=>1,c=>0,a=>59,b=>7,d=>2} 3b070a 3b070a 3b070a 3be044 3b070a00 3b070a 3be044 3b070a 3be044 - {e=>2,c=>4,a=>61,b=>4,d=>6} 3d2416 3d2416 3d2416 3d90c8 3d241600 3d2416 3d90c8 3d2416 3d90c8 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>1,c=>4,a=>48,b=>5,d=>6,f=>3} 30250e03 30250e03 30250e03 30b0c460 30250e03 30250e03 30b0c460 30250e03 30b0c460 - {e=>6,c=>0,a=>-47,b=>4,d=>5,f=>3} d1043503 d1043503 d1043503 d180b860 d1043503 d1043503 d180b860 d1043503 d180b860 - {e=>5,c=>1,a=>-5,b=>4,d=>1,f=>0} fb0c2900 fb0c2900 fb0c2900 fb843400 fb0c2900 fb0c2900 fb843400 fb0c2900 fb843400 - {e=>6,c=>2,a=>106,b=>7,d=>3,f=>4} 6a173304 6a173304 6a173304 6ae87880 6a173304 6a173304 6ae87880 6a173304 6ae87880 - {e=>5,c=>5,a=>-105,b=>3,d=>6,f=>3} 972b2e03 972b2e03 972b2e03 9774d460 972b2e03 972b2e03 9774d460 972b2e03 9774d460 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>4,c=>1,a=>71,g=>5,b=>0,d=>7,f=>0} 47082728 47082728 47082728 4704f014 47082728 47082728 4704f014 47082728 4704f014 - {e=>6,c=>7,a=>36,g=>5,b=>1,d=>5,f=>4} 2439352c 2439352c 2439352c 243cb894 2439352c 2439352c 243cb894 2439352c 243cb894 - {e=>3,c=>5,a=>-22,g=>5,b=>5,d=>4,f=>1} ea2d1c29 ea2d1c29 ea2d1c29 eab48c34 ea2d1c29 ea2d1c29 eab48c34 ea2d1c29 eab48c34 - {e=>6,c=>2,a=>43,g=>6,b=>0,d=>2,f=>0} 2b103230 2b103230 2b103230 2b085818 2b103230 2b103230 2b085818 2b103230 2b085818 - {e=>0,c=>1,a=>-119,g=>0,b=>4,d=>4,f=>1} 890c0401 890c0401 890c0401 89848020 890c0401 890c0401 89848020 890c0401 89848020 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>6,a=>88,d=>3,c=>5,h=>1,b=>3,g=>7,f=>2} 582b333a01 582b333a01 582b333a01 5874785c20 582b333a01000000 582b333a01 5874785c20 582b333a01 5874785c20 - {e=>3,a=>-69,d=>7,c=>6,h=>7,b=>3,g=>7,f=>4} bb331f3c07 bb331f3c07 bb331f3c07 bb78ec9ce0 bb331f3c07000000 bb331f3c07 bb78ec9ce0 bb331f3c07 bb78ec9ce0 - {e=>7,a=>-30,d=>6,c=>4,h=>5,b=>0,g=>7,f=>3} e2203e3b05 e2203e3b05 e2203e3b05 e210dc7ca0 e2203e3b05000000 e2203e3b05 e210dc7ca0 e2203e3b05 e210dc7ca0 - {e=>6,a=>-16,d=>6,c=>7,h=>5,b=>2,g=>1,f=>6} f03a360e05 f03a360e05 f03a360e05 f05cd8c4a0 f03a360e05000000 f03a360e05 f05cd8c4a0 f03a360e05 f05cd8c4a0 - {e=>1,a=>72,d=>2,c=>1,h=>1,b=>5,g=>1,f=>6} 480d0a0e01 480d0a0e01 480d0a0e01 48a444c420 480d0a0e01000000 480d0a0e01 48a444c420 480d0a0e01 48a444c420 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>2,a=>-92,d=>4,c=>2,h=>6,b=>6,g=>0,f=>3,i=>7} a41614033e a41614033e a41614033e a4c88860dc a41614033e000000 a41614033e a4c88860dc a41614033e a4c88860dc - {e=>1,a=>50,d=>4,c=>7,h=>0,b=>5,g=>6,f=>2,i=>0} 323d0c3200 323d0c3200 323d0c3200 32bc845800 323d0c3200000000 323d0c3200 32bc845800 323d0c3200 32bc845800 - {e=>7,a=>-126,d=>7,c=>3,h=>5,b=>2,g=>0,f=>0,i=>4} 821a3f0025 821a3f0025 821a3f0025 824cfc00b0 821a3f0025000000 821a3f0025 824cfc00b0 821a3f0025 824cfc00b0 - {e=>6,a=>123,d=>7,c=>4,h=>6,b=>0,g=>3,f=>6,i=>4} 7b20371e26 7b20371e26 7b20371e26 7b10f8ccd0 7b20371e26000000 7b20371e26 7b10f8ccd0 7b20371e26 7b10f8ccd0 - {e=>5,a=>21,d=>0,c=>7,h=>1,b=>3,g=>0,f=>7,i=>5} 153b280729 153b280729 153b280729 157c14e034 153b280729000000 153b280729 157c14e034 153b280729 157c14e034 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>1,a=>79,d=>6,j=>1,c=>6,h=>0,b=>1,g=>1,f=>5,i=>4} 4f310e0d2001 4f310e0d2001 4f310e0d2001 4f38c4a41020 4f310e0d20010000 4f310e0d2001 4f38c4a41020 4f310e0d2001 4f38c4a41020 - {e=>5,a=>70,d=>7,j=>4,c=>1,h=>1,b=>4,g=>2,f=>5,i=>2} 460c2f151104 460c2f151104 460c2f151104 4684f4a82880 460c2f1511040000 460c2f151104 4684f4a82880 460c2f151104 4684f4a82880 - {e=>2,a=>90,d=>2,j=>3,c=>7,h=>2,b=>6,g=>4,f=>7,i=>4} 5a3e12272203 5a3e12272203 5a3e12272203 5adc48f05060 5a3e122722030000 5a3e12272203 5adc48f05060 5a3e12272203 5adc48f05060 - {e=>6,a=>48,d=>0,j=>3,c=>5,h=>3,b=>5,g=>6,f=>5,i=>3} 302d30351b03 302d30351b03 302d30351b03 30b418b86c60 302d30351b030000 302d30351b03 30b418b86c60 302d30351b03 30b418b86c60 - {e=>6,a=>-79,d=>1,j=>4,c=>1,h=>6,b=>7,g=>6,f=>4,i=>5} b10f31342e04 b10f31342e04 b10f31342e04 b1e43898d480 b10f31342e040000 b10f31342e04 b1e43898d480 b10f31342e04 b1e43898d480 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>3,a=>33,d=>5,j=>0,c=>5,k=>3,h=>3,b=>4,g=>0,f=>2,i=>4} 212c1d022318 212c1d022318 212c1d022318 2194ac40700c 212c1d0223180000 212c1d022318 2194ac40700c 212c1d022318 2194ac40700c - {e=>1,a=>64,d=>0,j=>2,c=>1,k=>7,h=>7,b=>1,g=>3,f=>0,i=>6} 40090818373a 40090818373a 40090818373a 4024040cf85c 40090818373a0000 40090818373a 4024040cf85c 40090818373a 4024040cf85c - {e=>0,a=>121,d=>0,j=>2,c=>3,k=>3,h=>1,b=>5,g=>0,f=>4,i=>5} 791d0004291a 791d0004291a 791d0004291a 79ac0080344c 791d0004291a0000 791d0004291a 79ac0080344c 791d0004291a 79ac0080344c - {e=>7,a=>-117,d=>1,j=>1,c=>6,k=>5,h=>1,b=>3,g=>1,f=>5,i=>4} 8b33390d2129 8b33390d2129 8b33390d2129 8b783ca43034 8b33390d21290000 8b33390d2129 8b783ca43034 8b33390d2129 8b783ca43034 - {e=>5,a=>105,d=>3,j=>2,c=>3,k=>7,h=>6,b=>3,g=>5,f=>1,i=>1} 691b2b290e3a 691b2b290e3a 691b2b290e3a 696c7434c45c 691b2b290e3a0000 691b2b290e3a 696c7434c45c 691b2b290e3a 696c7434c45c = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>1,a=>-36,d=>3,j=>4,l=>1,c=>5,k=>1,h=>3,b=>7,g=>3,f=>0,i=>2} dc2f0b18130c01 dc2f0b18130c01 dc2f0b18130c01 dcf4640c688420 dc2f0b18130c0100 dc2f0b18130c01 dcf4640c688420 dc2f0b18130c01 dcf4640c688420 - {e=>5,a=>-81,d=>1,j=>6,l=>1,c=>3,k=>7,h=>3,b=>5,g=>3,f=>5,i=>1} af1d291d0b3e01 af1d291d0b3e01 af1d291d0b3e01 afac34ac64dc20 af1d291d0b3e0100 af1d291d0b3e01 afac34ac64dc20 af1d291d0b3e01 afac34ac64dc20 - {e=>0,a=>-44,d=>7,j=>3,l=>5,c=>3,k=>2,h=>2,b=>2,g=>3,f=>0,i=>6} d41a0718321305 d41a0718321305 d41a0718321305 d44ce00c5868a0 d41a071832130500 d41a0718321305 d44ce00c5868a0 d41a0718321305 d44ce00c5868a0 - {e=>1,a=>-34,d=>1,j=>6,l=>7,c=>6,k=>0,h=>6,b=>6,g=>5,f=>2,i=>5} de36092a2e0607 de36092a2e0607 de36092a2e0607 ded82454d4c0e0 de36092a2e060700 de36092a2e0607 ded82454d4c0e0 de36092a2e0607 ded82454d4c0e0 - {e=>0,a=>57,d=>4,j=>0,l=>4,c=>6,k=>1,h=>2,b=>2,g=>7,f=>6,i=>2} 3932043e120804 3932043e120804 3932043e120804 395880dc480480 3932043e12080400 3932043e120804 395880dc480480 3932043e120804 395880dc480480 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>7,a=>-101,m=>1,d=>6,j=>3,l=>6,c=>4,k=>6,h=>5,b=>1,g=>1,f=>6,i=>0} 9b213e0e05330e 9b213e0e05330e 9b213e0e05330e 9b30dcc4a078c4 9b213e0e05330e00 9b213e0e05330e 9b30dcc4a078c4 9b213e0e05330e 9b30dcc4a078c4 - {e=>3,a=>-11,m=>4,d=>2,j=>6,l=>7,c=>6,k=>4,h=>7,b=>2,g=>1,f=>4,i=>3} f5321a0c1f2627 f5321a0c1f2627 f5321a0c1f2627 f5584c84ecd0f0 f5321a0c1f262700 f5321a0c1f2627 f5584c84ecd0f0 f5321a0c1f2627 f5584c84ecd0f0 - {e=>0,a=>47,m=>2,d=>7,j=>5,l=>2,c=>2,k=>3,h=>4,b=>5,g=>5,f=>1,i=>7} 2f1507293c1d12 2f1507293c1d12 2f1507293c1d12 2fa8e0349cac48 2f1507293c1d1200 2f1507293c1d12 2fa8e0349cac48 2f1507293c1d12 2fa8e0349cac48 - {e=>1,a=>-113,m=>7,d=>2,j=>1,l=>6,c=>7,k=>4,h=>7,b=>5,g=>0,f=>6,i=>7} 8f3d0a063f213e 8f3d0a063f213e 8f3d0a063f213e 8fbc44c0fc30dc 8f3d0a063f213e00 8f3d0a063f213e 8fbc44c0fc30dc 8f3d0a063f213e 8fbc44c0fc30dc - {e=>2,a=>19,m=>6,d=>7,j=>5,l=>4,c=>3,k=>7,h=>4,b=>1,g=>4,f=>0,i=>3} 131917201c3d34 131917201c3d34 131917201c3d34 132ce8108cbc98 131917201c3d3400 131917201c3d34 132ce8108cbc98 131917201c3d34 132ce8108cbc98 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>6,n=>5,a=>-111,m=>0,d=>3,j=>5,l=>6,c=>7,k=>5,h=>6,b=>0,g=>4,f=>0,i=>6} 91383320362d0605 91383320362d0605 91383320362d0605 911c7810d8b4c0a0 91383320362d0605 91383320362d0605 911c7810d8b4c0a0 91383320362d0605 911c7810d8b4c0a0 - {e=>7,n=>4,a=>-30,m=>6,d=>4,j=>3,l=>0,c=>4,k=>4,h=>1,b=>7,g=>7,f=>5,i=>0} e2273c3d01233004 e2273c3d01233004 e2273c3d01233004 e2f09cbc20701880 e2273c3d01233004 e2273c3d01233004 e2f09cbc20701880 e2273c3d01233004 e2f09cbc20701880 - {e=>0,n=>1,a=>22,m=>5,d=>7,j=>5,l=>0,c=>0,k=>1,h=>5,b=>3,g=>2,f=>7,i=>3} 160307171d0d2801 160307171d0d2801 160307171d0d2801 1660e0e8aca41420 160307171d0d2801 160307171d0d2801 1660e0e8aca41420 160307171d0d2801 1660e0e8aca41420 - {e=>4,n=>5,a=>4,m=>0,d=>1,j=>2,l=>4,c=>1,k=>3,h=>0,b=>0,g=>0,f=>7,i=>6} 04082107301a0405 04082107301a0405 04082107301a0405 040430e0184c80a0 04082107301a0405 04082107301a0405 040430e0184c80a0 04082107301a0405 040430e0184c80a0 - {e=>2,n=>3,a=>-83,m=>6,d=>6,j=>6,l=>6,c=>0,k=>1,h=>2,b=>6,g=>0,f=>6,i=>5} ad0616062a0e3603 ad0616062a0e3603 ad0616062a0e3603 adc0c8c054c4d860 ad0616062a0e3603 ad0616062a0e3603 adc0c8c054c4d860 ad0616062a0e3603 adc0c8c054c4d860 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>0,n=>2,a=>-105,m=>1,d=>3,j=>0,l=>1,c=>6,k=>1,h=>1,b=>2,g=>7,f=>2,o=>-102,i=>2} 9732033a110809029aff 9732033a110809029aff 9732033a110809029aff 9758605c28042440ff9a 9732033a110809029aff0000 9732033a110809029aff 9758605c28042440ff9a 9732033a110809029aff 9758605c28042440ff9a - {e=>1,n=>2,a=>-82,m=>2,d=>4,j=>2,l=>6,c=>0,k=>3,h=>1,b=>6,g=>6,f=>3,o=>29,i=>2} ae060c33111a16021d00 ae060c33111a16021d00 ae060c33111a16021d00 aec08478284cc840001d ae060c33111a16021d000000 ae060c33111a16021d00 aec08478284cc840001d ae060c33111a16021d00 aec08478284cc840001d - {e=>5,n=>7,a=>-14,m=>4,d=>0,j=>7,l=>1,c=>2,k=>7,h=>7,b=>4,g=>1,f=>5,o=>-24,i=>2} f214280d173f2107e8ff f214280d173f2107e8ff f214280d173f2107e8ff f28814a4e8fc30e0ffe8 f214280d173f2107e8ff0000 f214280d173f2107e8ff f28814a4e8fc30e0ffe8 f214280d173f2107e8ff f28814a4e8fc30e0ffe8 - {e=>0,n=>6,a=>96,m=>7,d=>3,j=>0,l=>3,c=>3,k=>1,h=>3,b=>6,g=>6,f=>7,o=>81,i=>2} 601e033713083b065100 601e033713083b065100 601e033713083b065100 60cc60f868047cc00051 601e033713083b0651000000 601e033713083b065100 60cc60f868047cc00051 601e033713083b065100 60cc60f868047cc00051 - {e=>6,n=>2,a=>-36,m=>0,d=>2,j=>6,l=>5,c=>4,k=>0,h=>3,b=>6,g=>6,f=>5,o=>-17,i=>5} dc2632352b060502efff dc2632352b060502efff dc2632352b060502efff dcd058b874c0a040ffef dc2632352b060502efff0000 dc2632352b060502efff dcd058b874c0a040ffef dc2632352b060502efff dcd058b874c0a040ffef = struct uch_wrap { short a; unsigned char b:3; }; - {a=>102,b=>2} 66000200 66000200 66000200 00664000 66000200 66000200 00664000 66000200 00664000 - {a=>39,b=>4} 27000400 27000400 27000400 00278000 27000400 27000400 00278000 27000400 00278000 - {a=>-119,b=>5} 89ff0500 89ff0500 89ff0500 ff89a000 89ff0500 89ff0500 ff89a000 89ff0500 ff89a000 - {a=>69,b=>7} 45000700 45000700 45000700 0045e000 45000700 45000700 0045e000 45000700 0045e000 - {a=>46,b=>7} 2e000700 2e000700 2e000700 002ee000 2e000700 2e000700 002ee000 2e000700 002ee000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; }; - {c=>2,a=>-97,b=>2} 9fff1200 9fff1200 9fff1200 ff9f4800 9fff1200 9fff1200 ff9f4800 9fff1200 ff9f4800 - {c=>5,a=>-16,b=>5} f0ff2d00 f0ff2d00 f0ff2d00 fff0b400 f0ff2d00 f0ff2d00 fff0b400 f0ff2d00 fff0b400 - {c=>5,a=>100,b=>5} 64002d00 64002d00 64002d00 0064b400 64002d00 64002d00 0064b400 64002d00 0064b400 - {c=>1,a=>117,b=>2} 75000a00 75000a00 75000a00 00754400 75000a00 75000a00 00754400 75000a00 00754400 - {c=>1,a=>-105,b=>4} 97ff0c00 97ff0c00 97ff0c00 ff978400 97ff0c00 97ff0c00 ff978400 97ff0c00 ff978400 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>2,a=>7,b=>5,d=>3} 07001503 07001503 07001503 0007a860 07001503 07001503 0007a860 07001503 0007a860 - {c=>7,a=>-90,b=>4,d=>1} a6ff3c01 a6ff3c01 a6ff3c01 ffa69c20 a6ff3c01 a6ff3c01 ffa69c20 a6ff3c01 ffa69c20 - {c=>1,a=>61,b=>0,d=>2} 3d000802 3d000802 3d000802 003d0440 3d000802 3d000802 003d0440 3d000802 003d0440 - {c=>1,a=>36,b=>7,d=>2} 24000f02 24000f02 24000f02 0024e440 24000f02 24000f02 0024e440 24000f02 0024e440 - {c=>4,a=>-76,b=>5,d=>0} b4ff2500 b4ff2500 b4ff2500 ffb4b000 b4ff2500 b4ff2500 ffb4b000 b4ff2500 ffb4b000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>4,c=>2,a=>-103,b=>0,d=>3} 99ff1023 99ff1023 99ff1023 ff990870 99ff1023 99ff1023 ff990870 99ff1023 ff990870 - {e=>2,c=>0,a=>17,b=>5,d=>5} 11000515 11000515 11000515 0011a0a8 11000515 11000515 0011a0a8 11000515 0011a0a8 - {e=>5,c=>5,a=>27,b=>2,d=>1} 1b002a29 1b002a29 1b002a29 001b5434 1b002a29 1b002a29 001b5434 1b002a29 001b5434 - {e=>1,c=>5,a=>-77,b=>3,d=>5} b3ff2b0d b3ff2b0d b3ff2b0d ffb374a4 b3ff2b0d b3ff2b0d ffb374a4 b3ff2b0d ffb374a4 - {e=>2,c=>0,a=>-112,b=>4,d=>1} 90ff0411 90ff0411 90ff0411 ff908028 90ff0411 90ff0411 ff908028 90ff0411 ff908028 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>3,c=>1,a=>61,b=>4,d=>2,f=>2} 3d000c1a0200 3d000c1a0200 3d000c1a0200 003d844c4000 3d000c1a02000000 3d000c1a0200 003d844c4000 3d000c1a0200 003d844c4000 - {e=>1,c=>7,a=>-8,b=>0,d=>6,f=>0} f8ff380e0000 f8ff380e0000 f8ff380e0000 fff81cc40000 f8ff380e00000000 f8ff380e0000 fff81cc40000 f8ff380e0000 fff81cc40000 - {e=>2,c=>6,a=>-96,b=>0,d=>5,f=>7} a0ff30150700 a0ff30150700 a0ff30150700 ffa018a8e000 a0ff301507000000 a0ff30150700 ffa018a8e000 a0ff30150700 ffa018a8e000 - {e=>3,c=>2,a=>122,b=>5,d=>0,f=>0} 7a0015180000 7a0015180000 7a0015180000 007aa80c0000 7a00151800000000 7a0015180000 007aa80c0000 7a0015180000 007aa80c0000 - {e=>3,c=>6,a=>-122,b=>0,d=>1,f=>2} 86ff30190200 86ff30190200 86ff30190200 ff86182c4000 86ff301902000000 86ff30190200 ff86182c4000 86ff30190200 ff86182c4000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>1,c=>5,a=>-86,g=>7,b=>7,d=>7,f=>6} aaff2f0f3e00 aaff2f0f3e00 aaff2f0f3e00 ffaaf4e4dc00 aaff2f0f3e000000 aaff2f0f3e00 ffaaf4e4dc00 aaff2f0f3e00 ffaaf4e4dc00 - {e=>5,c=>7,a=>78,g=>2,b=>1,d=>6,f=>1} 4e00392e1100 4e00392e1100 4e00392e1100 004e3cd42800 4e00392e11000000 4e00392e1100 004e3cd42800 4e00392e1100 004e3cd42800 - {e=>4,c=>0,a=>-57,g=>4,b=>2,d=>4,f=>1} c7ff02242100 c7ff02242100 c7ff02242100 ffc740903000 c7ff022421000000 c7ff02242100 ffc740903000 c7ff02242100 ffc740903000 - {e=>6,c=>6,a=>36,g=>3,b=>1,d=>5,f=>3} 240031351b00 240031351b00 240031351b00 002438b86c00 240031351b000000 240031351b00 002438b86c00 240031351b00 002438b86c00 - {e=>5,c=>6,a=>-105,g=>2,b=>7,d=>7,f=>0} 97ff372f1000 97ff372f1000 97ff372f1000 ff97f8f40800 97ff372f10000000 97ff372f1000 ff97f8f40800 97ff372f1000 ff97f8f40800 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>2,a=>103,d=>5,c=>5,h=>6,b=>3,g=>2,f=>1} 67002b151106 67002b151106 67002b151106 006774a828c0 67002b1511060000 67002b151106 006774a828c0 67002b151106 006774a828c0 - {e=>1,a=>-88,d=>4,c=>6,h=>1,b=>5,g=>2,f=>3} a8ff350c1301 a8ff350c1301 a8ff350c1301 ffa8b8846820 a8ff350c13010000 a8ff350c1301 ffa8b8846820 a8ff350c1301 ffa8b8846820 - {e=>0,a=>-80,d=>3,c=>7,h=>5,b=>3,g=>5,f=>6} b0ff3b032e05 b0ff3b032e05 b0ff3b032e05 ffb07c60d4a0 b0ff3b032e050000 b0ff3b032e05 ffb07c60d4a0 b0ff3b032e05 ffb07c60d4a0 - {e=>5,a=>-89,d=>6,c=>6,h=>1,b=>0,g=>4,f=>1} a7ff302e2101 a7ff302e2101 a7ff302e2101 ffa718d43020 a7ff302e21010000 a7ff302e2101 ffa718d43020 a7ff302e2101 ffa718d43020 - {e=>4,a=>-32,d=>5,c=>2,h=>0,b=>4,g=>7,f=>7} e0ff14253f00 e0ff14253f00 e0ff14253f00 ffe088b0fc00 e0ff14253f000000 e0ff14253f00 ffe088b0fc00 e0ff14253f00 ffe088b0fc00 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>6,a=>-1,d=>6,c=>3,h=>1,b=>6,g=>2,f=>7,i=>5} ffff1e361729 ffff1e361729 ffff1e361729 ffffccd8e834 ffff1e3617290000 ffff1e361729 ffffccd8e834 ffff1e361729 ffffccd8e834 - {e=>1,a=>21,d=>3,c=>7,h=>0,b=>3,g=>5,f=>0,i=>1} 15003b0b2808 15003b0b2808 15003b0b2808 00157c641404 15003b0b28080000 15003b0b2808 00157c641404 15003b0b2808 00157c641404 - {e=>4,a=>124,d=>0,c=>3,h=>5,b=>6,g=>1,f=>0,i=>7} 7c001e20083d 7c001e20083d 7c001e20083d 007ccc1004bc 7c001e20083d0000 7c001e20083d 007ccc1004bc 7c001e20083d 007ccc1004bc - {e=>6,a=>53,d=>6,c=>4,h=>3,b=>7,g=>3,f=>0,i=>0} 350027361803 350027361803 350027361803 0035f0d80c60 3500273618030000 350027361803 0035f0d80c60 350027361803 0035f0d80c60 - {e=>5,a=>14,d=>0,c=>5,h=>0,b=>0,g=>0,f=>4,i=>1} 0e0028280408 0e0028280408 0e0028280408 000e14148004 0e00282804080000 0e0028280408 000e14148004 0e0028280408 000e14148004 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>4,a=>-128,d=>5,j=>4,c=>0,h=>4,b=>2,g=>7,f=>5,i=>5} 80ff02253d2c0400 80ff02253d2c0400 80ff02253d2c0400 ff8040b0bc948000 80ff02253d2c0400 80ff02253d2c0400 ff8040b0bc948000 80ff02253d2c0400 ff8040b0bc948000 - {e=>5,a=>-33,d=>3,j=>4,c=>5,h=>7,b=>7,g=>1,f=>6,i=>5} dfff2f2b0e2f0400 dfff2f2b0e2f0400 dfff2f2b0e2f0400 ffdff474c4f48000 dfff2f2b0e2f0400 dfff2f2b0e2f0400 ffdff474c4f48000 dfff2f2b0e2f0400 ffdff474c4f48000 - {e=>3,a=>-96,d=>1,j=>1,c=>4,h=>2,b=>3,g=>7,f=>6,i=>6} a0ff23193e320100 a0ff23193e320100 a0ff23193e320100 ffa0702cdc582000 a0ff23193e320100 a0ff23193e320100 ffa0702cdc582000 a0ff23193e320100 ffa0702cdc582000 - {e=>7,a=>-9,d=>6,j=>4,c=>3,h=>1,b=>3,g=>3,f=>1,i=>0} f7ff1b3e19010400 f7ff1b3e19010400 f7ff1b3e19010400 fff76cdc2c208000 f7ff1b3e19010400 f7ff1b3e19010400 fff76cdc2c208000 f7ff1b3e19010400 fff76cdc2c208000 - {e=>2,a=>63,d=>4,j=>2,c=>4,h=>0,b=>4,g=>3,f=>5,i=>0} 3f0024141d000200 3f0024141d000200 3f0024141d000200 003f9088ac004000 3f0024141d000200 3f0024141d000200 003f9088ac004000 3f0024141d000200 003f9088ac004000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>4,a=>57,d=>7,j=>7,c=>4,k=>0,h=>5,b=>3,g=>3,f=>4,i=>6} 390023271c350700 390023271c350700 390023271c350700 003970f08cb8e000 390023271c350700 390023271c350700 003970f08cb8e000 390023271c350700 003970f08cb8e000 - {e=>7,a=>-11,d=>1,j=>4,c=>0,k=>5,h=>1,b=>5,g=>5,f=>7,i=>5} f5ff05392f292c00 f5ff05392f292c00 f5ff05392f292c00 fff5a03cf4349400 f5ff05392f292c00 f5ff05392f292c00 fff5a03cf4349400 f5ff05392f292c00 fff5a03cf4349400 - {e=>7,a=>-117,d=>2,j=>6,c=>7,k=>6,h=>1,b=>2,g=>0,f=>1,i=>1} 8bff3a3a01093600 8bff3a3a01093600 8bff3a3a01093600 ff8b5c5c2024d800 8bff3a3a01093600 8bff3a3a01093600 ff8b5c5c2024d800 8bff3a3a01093600 ff8b5c5c2024d800 - {e=>7,a=>-118,d=>6,j=>3,c=>7,k=>4,h=>2,b=>4,g=>3,f=>6,i=>0} 8aff3c3e1e022300 8aff3c3e1e022300 8aff3c3e1e022300 ff8a9cdccc407000 8aff3c3e1e022300 8aff3c3e1e022300 ff8a9cdccc407000 8aff3c3e1e022300 ff8a9cdccc407000 - {e=>4,a=>-15,d=>1,j=>1,c=>7,k=>6,h=>5,b=>4,g=>7,f=>3,i=>7} f1ff3c213b3d3100 f1ff3c213b3d3100 f1ff3c213b3d3100 fff19c307cbc3800 f1ff3c213b3d3100 f1ff3c213b3d3100 fff19c307cbc3800 f1ff3c213b3d3100 fff19c307cbc3800 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>5,a=>24,d=>4,j=>2,l=>6,c=>3,k=>2,h=>1,b=>5,g=>4,f=>5,i=>2} 18001d2c25111206 18001d2c25111206 18001d2c25111206 0018ac94b02848c0 18001d2c25111206 18001d2c25111206 0018ac94b02848c0 18001d2c25111206 0018ac94b02848c0 - {e=>7,a=>-76,d=>2,j=>2,l=>5,c=>2,k=>2,h=>3,b=>5,g=>4,f=>7,i=>5} b4ff153a272b1205 b4ff153a272b1205 b4ff153a272b1205 ffb4a85cf07448a0 b4ff153a272b1205 b4ff153a272b1205 ffb4a85cf07448a0 b4ff153a272b1205 ffb4a85cf07448a0 - {e=>4,a=>69,d=>4,j=>6,l=>1,c=>1,k=>0,h=>0,b=>6,g=>7,f=>1,i=>3} 45000e2439180601 45000e2439180601 45000e2439180601 0045c4903c0cc020 45000e2439180601 45000e2439180601 0045c4903c0cc020 45000e2439180601 0045c4903c0cc020 - {e=>6,a=>-5,d=>4,j=>4,l=>7,c=>6,k=>6,h=>2,b=>3,g=>6,f=>5,i=>6} fbff333435323407 fbff333435323407 fbff333435323407 fffb7898b85898e0 fbff333435323407 fbff333435323407 fffb7898b85898e0 fbff333435323407 fffb7898b85898e0 - {e=>1,a=>84,d=>1,j=>5,l=>6,c=>3,k=>4,h=>7,b=>2,g=>6,f=>4,i=>3} 54001a09341f2506 54001a09341f2506 54001a09341f2506 00544c2498ecb0c0 54001a09341f2506 54001a09341f2506 00544c2498ecb0c0 54001a09341f2506 00544c2498ecb0c0 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>0,a=>-34,m=>7,d=>7,j=>0,l=>2,c=>3,k=>5,h=>5,b=>1,g=>0,f=>6,i=>6} deff19070635283a deff19070635283a deff19070635283a ffde2ce0c0b8145c deff19070635283a deff19070635283a ffde2ce0c0b8145c deff19070635283a ffde2ce0c0b8145c - {e=>1,a=>-67,m=>0,d=>2,j=>7,l=>0,c=>2,k=>4,h=>2,b=>7,g=>3,f=>7,i=>4} bdff170a1f222700 bdff170a1f222700 bdff170a1f222700 ffbde844ec50f000 bdff170a1f222700 bdff170a1f222700 ffbde844ec50f000 bdff170a1f222700 ffbde844ec50f000 - {e=>5,a=>61,m=>7,d=>1,j=>3,l=>5,c=>6,k=>5,h=>3,b=>4,g=>7,f=>3,i=>7} 3d0034293b3b2b3d 3d0034293b3b2b3d 3d0034293b3b2b3d 003d98347c7c74bc 3d0034293b3b2b3d 3d0034293b3b2b3d 003d98347c7c74bc 3d0034293b3b2b3d 003d98347c7c74bc - {e=>5,a=>96,m=>6,d=>5,j=>4,l=>5,c=>1,k=>3,h=>1,b=>6,g=>2,f=>2,i=>3} 60000e2d12191c35 60000e2d12191c35 60000e2d12191c35 0060c4b4482c8cb8 60000e2d12191c35 60000e2d12191c35 0060c4b4482c8cb8 60000e2d12191c35 0060c4b4482c8cb8 - {e=>3,a=>-6,m=>6,d=>3,j=>6,l=>6,c=>5,k=>2,h=>5,b=>6,g=>3,f=>5,i=>0} faff2e1b1d051636 faff2e1b1d051636 faff2e1b1d051636 fffad46caca0c8d8 faff2e1b1d051636 faff2e1b1d051636 fffad46caca0c8d8 faff2e1b1d051636 fffad46caca0c8d8 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>7,n=>7,a=>-88,m=>4,d=>0,j=>4,l=>6,c=>3,k=>5,h=>2,b=>1,g=>6,f=>5,i=>7} a8ff1938353a2c260700 a8ff1938353a2c260700 a8ff1938353a2c260700 ffa82c1cb85c94d0e000 a8ff1938353a2c2607000000 a8ff1938353a2c260700 ffa82c1cb85c94d0e000 a8ff1938353a2c260700 ffa82c1cb85c94d0e000 - {e=>0,n=>1,a=>-51,m=>3,d=>3,j=>2,l=>4,c=>1,k=>1,h=>6,b=>6,g=>5,f=>7,i=>2} cdff0e032f160a1c0100 cdff0e032f160a1c0100 cdff0e032f160a1c0100 ffcdc460f4c8448c2000 cdff0e032f160a1c01000000 cdff0e032f160a1c0100 ffcdc460f4c8448c2000 cdff0e032f160a1c0100 ffcdc460f4c8448c2000 - {e=>2,n=>6,a=>20,m=>5,d=>3,j=>4,l=>6,c=>1,k=>3,h=>6,b=>5,g=>4,f=>2,i=>5} 14000d13222e1c2e0600 14000d13222e1c2e0600 14000d13222e1c2e0600 0014a46850d48cd4c000 14000d13222e1c2e06000000 14000d13222e1c2e0600 0014a46850d48cd4c000 14000d13222e1c2e0600 0014a46850d48cd4c000 - {e=>4,n=>1,a=>-110,m=>2,d=>6,j=>4,l=>5,c=>4,k=>5,h=>0,b=>1,g=>7,f=>4,i=>6} 92ff21263c302c150100 92ff21263c302c150100 92ff21263c302c150100 ff9230d09c1894a82000 92ff21263c302c1501000000 92ff21263c302c150100 ff9230d09c1894a82000 92ff21263c302c150100 ff9230d09c1894a82000 - {e=>0,n=>0,a=>-45,m=>2,d=>5,j=>7,l=>4,c=>5,k=>6,h=>1,b=>2,g=>6,f=>4,i=>0} d3ff2a05340137140000 d3ff2a05340137140000 d3ff2a05340137140000 ffd354a09820f8880000 d3ff2a053401371400000000 d3ff2a05340137140000 ffd354a09820f8880000 d3ff2a05340137140000 ffd354a09820f8880000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>0,n=>2,a=>-65,m=>5,d=>5,j=>4,l=>2,c=>5,k=>0,h=>7,b=>2,g=>6,f=>3,o=>-15,i=>2} bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff ffbf54a078e880544000fff1 bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff ffbf54a078e880544000fff1 bfff2a053317042a0200f1ff ffbf54a078e880544000fff1 - {e=>3,n=>6,a=>15,m=>2,d=>7,j=>7,l=>4,c=>5,k=>4,h=>2,b=>0,g=>3,f=>3,o=>30,i=>1} 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 000f14ec6c44f088c000001e 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 000f14ec6c44f088c000001e 0f00281f1b0a271406001e00 000f14ec6c44f088c000001e - {e=>5,n=>7,a=>74,m=>6,d=>0,j=>7,l=>5,c=>3,k=>4,h=>4,b=>3,g=>6,f=>2,o=>69,i=>5} 4a001b28322c273507004500 4a001b28322c273507004500 4a001b28322c273507004500 004a6c145894f0b8e0000045 4a001b28322c273507004500 4a001b28322c273507004500 004a6c145894f0b8e0000045 4a001b28322c273507004500 004a6c145894f0b8e0000045 - {e=>1,n=>2,a=>84,m=>2,d=>3,j=>5,l=>4,c=>3,k=>6,h=>6,b=>1,g=>6,f=>7,o=>98,i=>6} 5400190b3736351402006200 5400190b3736351402006200 5400190b3736351402006200 00542c64f8d8b88840000062 5400190b3736351402006200 5400190b3736351402006200 00542c64f8d8b88840000062 5400190b3736351402006200 00542c64f8d8b88840000062 - {e=>3,n=>6,a=>57,m=>7,d=>6,j=>0,l=>4,c=>4,k=>1,h=>1,b=>2,g=>2,f=>7,o=>-43,i=>0} 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff 003950cce820049cc000ffd5 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff 003950cce820049cc000ffd5 3900221e1701083c0600d5ff 003950cce820049cc000ffd5 = struct uch_wrap { int a; unsigned char b:3; }; - {a=>-6,b=>4} faffffff04000000 faffffff04000000 faffffff04000000 fffffffa80000000 faffffff04000000 faffffff04000000 fffffffa80000000 faffffff04000000 fffffffa80000000 - {a=>48,b=>4} 3000000004000000 3000000004000000 3000000004000000 0000003080000000 3000000004000000 3000000004000000 0000003080000000 3000000004000000 0000003080000000 - {a=>24,b=>4} 1800000004000000 1800000004000000 1800000004000000 0000001880000000 1800000004000000 1800000004000000 0000001880000000 1800000004000000 0000001880000000 - {a=>-13,b=>5} f3ffffff05000000 f3ffffff05000000 f3ffffff05000000 fffffff3a0000000 f3ffffff05000000 f3ffffff05000000 fffffff3a0000000 f3ffffff05000000 fffffff3a0000000 - {a=>-58,b=>1} c6ffffff01000000 c6ffffff01000000 c6ffffff01000000 ffffffc620000000 c6ffffff01000000 c6ffffff01000000 ffffffc620000000 c6ffffff01000000 ffffffc620000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>52,b=>2} 340000001a000000 340000001a000000 340000001a000000 000000344c000000 340000001a000000 340000001a000000 000000344c000000 340000001a000000 000000344c000000 - {c=>6,a=>-113,b=>2} 8fffffff32000000 8fffffff32000000 8fffffff32000000 ffffff8f58000000 8fffffff32000000 8fffffff32000000 ffffff8f58000000 8fffffff32000000 ffffff8f58000000 - {c=>7,a=>-72,b=>6} b8ffffff3e000000 b8ffffff3e000000 b8ffffff3e000000 ffffffb8dc000000 b8ffffff3e000000 b8ffffff3e000000 ffffffb8dc000000 b8ffffff3e000000 ffffffb8dc000000 - {c=>4,a=>93,b=>7} 5d00000027000000 5d00000027000000 5d00000027000000 0000005df0000000 5d00000027000000 5d00000027000000 0000005df0000000 5d00000027000000 0000005df0000000 - {c=>5,a=>34,b=>5} 220000002d000000 220000002d000000 220000002d000000 00000022b4000000 220000002d000000 220000002d000000 00000022b4000000 220000002d000000 00000022b4000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>4,a=>1,b=>6,d=>5} 0100000026050000 0100000026050000 0100000026050000 00000001d0a00000 0100000026050000 0100000026050000 00000001d0a00000 0100000026050000 00000001d0a00000 - {c=>1,a=>35,b=>0,d=>6} 2300000008060000 2300000008060000 2300000008060000 0000002304c00000 2300000008060000 2300000008060000 0000002304c00000 2300000008060000 0000002304c00000 - {c=>3,a=>81,b=>1,d=>7} 5100000019070000 5100000019070000 5100000019070000 000000512ce00000 5100000019070000 5100000019070000 000000512ce00000 5100000019070000 000000512ce00000 - {c=>5,a=>19,b=>3,d=>2} 130000002b020000 130000002b020000 130000002b020000 0000001374400000 130000002b020000 130000002b020000 0000001374400000 130000002b020000 0000001374400000 - {c=>7,a=>-108,b=>5,d=>3} 94ffffff3d030000 94ffffff3d030000 94ffffff3d030000 ffffff94bc600000 94ffffff3d030000 94ffffff3d030000 ffffff94bc600000 94ffffff3d030000 ffffff94bc600000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>0,c=>0,a=>58,b=>1,d=>6} 3a00000001060000 3a00000001060000 3a00000001060000 0000003a20c00000 3a00000001060000 3a00000001060000 0000003a20c00000 3a00000001060000 0000003a20c00000 - {e=>4,c=>2,a=>67,b=>4,d=>2} 4300000014220000 4300000014220000 4300000014220000 0000004388500000 4300000014220000 4300000014220000 0000004388500000 4300000014220000 0000004388500000 - {e=>0,c=>2,a=>20,b=>7,d=>4} 1400000017040000 1400000017040000 1400000017040000 00000014e8800000 1400000017040000 1400000017040000 00000014e8800000 1400000017040000 00000014e8800000 - {e=>7,c=>4,a=>-17,b=>5,d=>7} efffffff253f0000 efffffff253f0000 efffffff253f0000 ffffffefb0fc0000 efffffff253f0000 efffffff253f0000 ffffffefb0fc0000 efffffff253f0000 ffffffefb0fc0000 - {e=>7,c=>1,a=>-49,b=>4,d=>7} cfffffff0c3f0000 cfffffff0c3f0000 cfffffff0c3f0000 ffffffcf84fc0000 cfffffff0c3f0000 cfffffff0c3f0000 ffffffcf84fc0000 cfffffff0c3f0000 ffffffcf84fc0000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>7,c=>0,a=>-9,b=>1,d=>3,f=>6} f7ffffff013b0600 f7ffffff013b0600 f7ffffff013b0600 fffffff7207cc000 f7ffffff013b0600 f7ffffff013b0600 fffffff7207cc000 f7ffffff013b0600 fffffff7207cc000 - {e=>2,c=>2,a=>72,b=>4,d=>6,f=>1} 4800000014160100 4800000014160100 4800000014160100 0000004888c82000 4800000014160100 4800000014160100 0000004888c82000 4800000014160100 0000004888c82000 - {e=>7,c=>0,a=>-66,b=>1,d=>4,f=>5} beffffff013c0500 beffffff013c0500 beffffff013c0500 ffffffbe209ca000 beffffff013c0500 beffffff013c0500 ffffffbe209ca000 beffffff013c0500 ffffffbe209ca000 - {e=>6,c=>1,a=>121,b=>7,d=>2,f=>2} 790000000f320200 790000000f320200 790000000f320200 00000079e4584000 790000000f320200 790000000f320200 00000079e4584000 790000000f320200 00000079e4584000 - {e=>1,c=>6,a=>-56,b=>7,d=>4,f=>3} c8ffffff370c0300 c8ffffff370c0300 c8ffffff370c0300 ffffffc8f8846000 c8ffffff370c0300 c8ffffff370c0300 ffffffc8f8846000 c8ffffff370c0300 ffffffc8f8846000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>6,c=>3,a=>76,g=>4,b=>6,d=>4,f=>4} 4c0000001e342400 4c0000001e342400 4c0000001e342400 0000004ccc989000 4c0000001e342400 4c0000001e342400 0000004ccc989000 4c0000001e342400 0000004ccc989000 - {e=>0,c=>4,a=>-114,g=>7,b=>4,d=>6,f=>5} 8effffff24063d00 8effffff24063d00 8effffff24063d00 ffffff8e90c0bc00 8effffff24063d00 8effffff24063d00 ffffff8e90c0bc00 8effffff24063d00 ffffff8e90c0bc00 - {e=>4,c=>5,a=>8,g=>7,b=>4,d=>0,f=>4} 080000002c203c00 080000002c203c00 080000002c203c00 0000000894109c00 080000002c203c00 080000002c203c00 0000000894109c00 080000002c203c00 0000000894109c00 - {e=>5,c=>3,a=>-73,g=>2,b=>6,d=>6,f=>4} b7ffffff1e2e1400 b7ffffff1e2e1400 b7ffffff1e2e1400 ffffffb7ccd48800 b7ffffff1e2e1400 b7ffffff1e2e1400 ffffffb7ccd48800 b7ffffff1e2e1400 ffffffb7ccd48800 - {e=>7,c=>6,a=>69,g=>5,b=>2,d=>5,f=>2} 45000000323d2a00 45000000323d2a00 45000000323d2a00 0000004558bc5400 45000000323d2a00 45000000323d2a00 0000004558bc5400 45000000323d2a00 0000004558bc5400 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>0,a=>21,d=>5,c=>3,h=>0,b=>7,g=>4,f=>4} 150000001f052400 150000001f052400 150000001f052400 00000015eca09000 150000001f052400 150000001f052400 00000015eca09000 150000001f052400 00000015eca09000 - {e=>5,a=>124,d=>3,c=>5,h=>6,b=>1,g=>3,f=>6} 7c000000292b1e06 7c000000292b1e06 7c000000292b1e06 0000007c3474ccc0 7c000000292b1e06 7c000000292b1e06 0000007c3474ccc0 7c000000292b1e06 0000007c3474ccc0 - {e=>6,a=>1,d=>4,c=>7,h=>1,b=>2,g=>4,f=>7} 010000003a342701 010000003a342701 010000003a342701 000000015c98f020 010000003a342701 010000003a342701 000000015c98f020 010000003a342701 000000015c98f020 - {e=>7,a=>36,d=>6,c=>0,h=>7,b=>1,g=>5,f=>2} 24000000013e2a07 24000000013e2a07 24000000013e2a07 0000002420dc54e0 24000000013e2a07 24000000013e2a07 0000002420dc54e0 24000000013e2a07 0000002420dc54e0 - {e=>1,a=>121,d=>4,c=>4,h=>0,b=>0,g=>6,f=>5} 79000000200c3500 79000000200c3500 79000000200c3500 000000791084b800 79000000200c3500 79000000200c3500 000000791084b800 79000000200c3500 000000791084b800 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>-75,d=>3,c=>1,h=>2,b=>0,g=>4,f=>3,i=>4} b5ffffff08232322 b5ffffff08232322 b5ffffff08232322 ffffffb504707050 b5ffffff08232322 b5ffffff08232322 ffffffb504707050 b5ffffff08232322 ffffffb504707050 - {e=>4,a=>-82,d=>3,c=>2,h=>4,b=>5,g=>0,f=>2,i=>2} aeffffff15230214 aeffffff15230214 aeffffff15230214 ffffffaea8704088 aeffffff15230214 aeffffff15230214 ffffffaea8704088 aeffffff15230214 ffffffaea8704088 - {e=>0,a=>46,d=>7,c=>3,h=>6,b=>6,g=>7,f=>6,i=>5} 2e0000001e073e2e 2e0000001e073e2e 2e0000001e073e2e 0000002ecce0dcd4 2e0000001e073e2e 2e0000001e073e2e 0000002ecce0dcd4 2e0000001e073e2e 0000002ecce0dcd4 - {e=>0,a=>4,d=>0,c=>6,h=>3,b=>5,g=>3,f=>0,i=>3} 040000003500181b 040000003500181b 040000003500181b 00000004b8000c6c 040000003500181b 040000003500181b 00000004b8000c6c 040000003500181b 00000004b8000c6c - {e=>0,a=>-54,d=>1,c=>7,h=>7,b=>1,g=>7,f=>6,i=>6} caffffff39013e37 caffffff39013e37 caffffff39013e37 ffffffca3c20dcf8 caffffff39013e37 caffffff39013e37 ffffffca3c20dcf8 caffffff39013e37 ffffffca3c20dcf8 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>4,a=>101,d=>4,j=>0,c=>1,h=>6,b=>4,g=>7,f=>6,i=>5} 650000000c243e2e00000000 650000000c243e2e00000000 650000000c243e2e00000000 000000658490dcd400000000 650000000c243e2e00000000 650000000c243e2e00000000 000000658490dcd400000000 650000000c243e2e00000000 000000658490dcd400000000 - {e=>0,a=>33,d=>6,j=>1,c=>0,h=>2,b=>3,g=>0,f=>1,i=>4} 210000000306012201000000 210000000306012201000000 210000000306012201000000 0000002160c0205020000000 210000000306012201000000 210000000306012201000000 0000002160c0205020000000 210000000306012201000000 0000002160c0205020000000 - {e=>0,a=>31,d=>4,j=>4,c=>3,h=>2,b=>7,g=>3,f=>7,i=>4} 1f0000001f041f2204000000 1f0000001f041f2204000000 1f0000001f041f2204000000 0000001fec80ec5080000000 1f0000001f041f2204000000 1f0000001f041f2204000000 0000001fec80ec5080000000 1f0000001f041f2204000000 0000001fec80ec5080000000 - {e=>0,a=>-102,d=>5,j=>2,c=>1,h=>3,b=>1,g=>4,f=>5,i=>4} 9affffff0905252302000000 9affffff0905252302000000 9affffff0905252302000000 ffffff9a24a0b07040000000 9affffff0905252302000000 9affffff0905252302000000 ffffff9a24a0b07040000000 9affffff0905252302000000 ffffff9a24a0b07040000000 - {e=>3,a=>117,d=>6,j=>5,c=>1,h=>3,b=>4,g=>4,f=>7,i=>4} 750000000c1e272305000000 750000000c1e272305000000 750000000c1e272305000000 0000007584ccf070a0000000 750000000c1e272305000000 750000000c1e272305000000 0000007584ccf070a0000000 750000000c1e272305000000 0000007584ccf070a0000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>7,a=>7,d=>0,j=>2,c=>5,k=>6,h=>2,b=>2,g=>6,f=>1,i=>1} 070000002a38310a32000000 070000002a38310a32000000 070000002a38310a32000000 00000007541c384458000000 070000002a38310a32000000 070000002a38310a32000000 00000007541c384458000000 070000002a38310a32000000 00000007541c384458000000 - {e=>0,a=>73,d=>0,j=>0,c=>6,k=>0,h=>7,b=>2,g=>4,f=>2,i=>6} 490000003200223700000000 490000003200223700000000 490000003200223700000000 00000049580050f800000000 490000003200223700000000 490000003200223700000000 00000049580050f800000000 490000003200223700000000 00000049580050f800000000 - {e=>5,a=>-16,d=>1,j=>5,c=>2,k=>0,h=>5,b=>3,g=>5,f=>2,i=>0} f0ffffff13292a0505000000 f0ffffff13292a0505000000 f0ffffff13292a0505000000 fffffff0683454a0a0000000 f0ffffff13292a0505000000 f0ffffff13292a0505000000 fffffff0683454a0a0000000 f0ffffff13292a0505000000 fffffff0683454a0a0000000 - {e=>2,a=>85,d=>1,j=>7,c=>7,k=>5,h=>0,b=>2,g=>7,f=>4,i=>6} 550000003a113c302f000000 550000003a113c302f000000 550000003a113c302f000000 000000555c289c18f4000000 550000003a113c302f000000 550000003a113c302f000000 000000555c289c18f4000000 550000003a113c302f000000 000000555c289c18f4000000 - {e=>1,a=>-111,d=>4,j=>1,c=>4,k=>4,h=>0,b=>1,g=>3,f=>1,i=>4} 91ffffff210c192021000000 91ffffff210c192021000000 91ffffff210c192021000000 ffffff9130842c1030000000 91ffffff210c192021000000 91ffffff210c192021000000 ffffff9130842c1030000000 91ffffff210c192021000000 ffffff9130842c1030000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>4,a=>-94,d=>1,j=>5,l=>1,c=>6,k=>5,h=>7,b=>6,g=>1,f=>1,i=>7} a2ffffff3621093f2d010000 a2ffffff3621093f2d010000 a2ffffff3621093f2d010000 ffffffa2d83024fcb4200000 a2ffffff3621093f2d010000 a2ffffff3621093f2d010000 ffffffa2d83024fcb4200000 a2ffffff3621093f2d010000 ffffffa2d83024fcb4200000 - {e=>2,a=>-111,d=>5,j=>6,l=>5,c=>3,k=>0,h=>6,b=>2,g=>0,f=>1,i=>6} 91ffffff1a15013606050000 91ffffff1a15013606050000 91ffffff1a15013606050000 ffffff914ca820d8c0a00000 91ffffff1a15013606050000 91ffffff1a15013606050000 ffffff914ca820d8c0a00000 91ffffff1a15013606050000 ffffff914ca820d8c0a00000 - {e=>6,a=>-48,d=>0,j=>4,l=>6,c=>7,k=>6,h=>2,b=>0,g=>6,f=>2,i=>3} d0ffffff3830321a34060000 d0ffffff3830321a34060000 d0ffffff3830321a34060000 ffffffd01c18584c98c00000 d0ffffff3830321a34060000 d0ffffff3830321a34060000 ffffffd01c18584c98c00000 d0ffffff3830321a34060000 ffffffd01c18584c98c00000 - {e=>4,a=>25,d=>5,j=>1,l=>4,c=>1,k=>1,h=>4,b=>3,g=>6,f=>7,i=>7} 190000000b25373c09040000 190000000b25373c09040000 190000000b25373c09040000 0000001964b0f89c24800000 190000000b25373c09040000 190000000b25373c09040000 0000001964b0f89c24800000 190000000b25373c09040000 0000001964b0f89c24800000 - {e=>5,a=>-90,d=>1,j=>4,l=>1,c=>4,k=>6,h=>6,b=>6,g=>4,f=>7,i=>6} a6ffffff2629273634010000 a6ffffff2629273634010000 a6ffffff2629273634010000 ffffffa6d034f0d898200000 a6ffffff2629273634010000 a6ffffff2629273634010000 ffffffa6d034f0d898200000 a6ffffff2629273634010000 ffffffa6d034f0d898200000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>0,a=>27,m=>0,d=>1,j=>1,l=>0,c=>1,k=>4,h=>7,b=>3,g=>3,f=>1,i=>7} 1b0000000b01193f21000000 1b0000000b01193f21000000 1b0000000b01193f21000000 0000001b64202cfc30000000 1b0000000b01193f21000000 1b0000000b01193f21000000 0000001b64202cfc30000000 1b0000000b01193f21000000 0000001b64202cfc30000000 - {e=>4,a=>-76,m=>6,d=>7,j=>1,l=>5,c=>4,k=>7,h=>1,b=>3,g=>1,f=>4,i=>1} b4ffffff23270c0939350000 b4ffffff23270c0939350000 b4ffffff23270c0939350000 ffffffb470f084243cb80000 b4ffffff23270c0939350000 b4ffffff23270c0939350000 ffffffb470f084243cb80000 b4ffffff23270c0939350000 ffffffb470f084243cb80000 - {e=>2,a=>-46,m=>4,d=>7,j=>1,l=>1,c=>3,k=>7,h=>2,b=>4,g=>5,f=>0,i=>2} d2ffffff1c17281239210000 d2ffffff1c17281239210000 d2ffffff1c17281239210000 ffffffd28ce814483c300000 d2ffffff1c17281239210000 d2ffffff1c17281239210000 ffffffd28ce814483c300000 d2ffffff1c17281239210000 ffffffd28ce814483c300000 - {e=>2,a=>81,m=>0,d=>2,j=>0,l=>7,c=>1,k=>0,h=>1,b=>4,g=>7,f=>2,i=>6} 510000000c123a3100070000 510000000c123a3100070000 510000000c123a3100070000 0000005184485c3800e00000 510000000c123a3100070000 510000000c123a3100070000 0000005184485c3800e00000 510000000c123a3100070000 0000005184485c3800e00000 - {e=>4,a=>-102,m=>6,d=>6,j=>4,l=>0,c=>7,k=>3,h=>1,b=>2,g=>3,f=>4,i=>6} 9affffff3a261c311c300000 9affffff3a261c311c300000 9affffff3a261c311c300000 ffffff9a5cd08c388c180000 9affffff3a261c311c300000 9affffff3a261c311c300000 ffffff9a5cd08c388c180000 9affffff3a261c311c300000 ffffff9a5cd08c388c180000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>0,n=>2,a=>71,m=>2,d=>1,j=>7,l=>0,c=>5,k=>5,h=>3,b=>5,g=>5,f=>0,i=>7} 470000002d01283b2f100200 470000002d01283b2f100200 470000002d01283b2f100200 00000047b420147cf4084000 470000002d01283b2f100200 470000002d01283b2f100200 00000047b420147cf4084000 470000002d01283b2f100200 00000047b420147cf4084000 - {e=>1,n=>0,a=>26,m=>3,d=>0,j=>5,l=>7,c=>2,k=>0,h=>0,b=>7,g=>1,f=>6,i=>4} 1a00000017080e20051f0000 1a00000017080e20051f0000 1a00000017080e20051f0000 0000001ae804c410a0ec0000 1a00000017080e20051f0000 1a00000017080e20051f0000 0000001ae804c410a0ec0000 1a00000017080e20051f0000 0000001ae804c410a0ec0000 - {e=>2,n=>4,a=>60,m=>5,d=>5,j=>6,l=>6,c=>6,k=>2,h=>3,b=>0,g=>2,f=>4,i=>3} 3c0000003015141b162e0400 3c0000003015141b162e0400 3c0000003015141b162e0400 0000003c18a8886cc8d48000 3c0000003015141b162e0400 3c0000003015141b162e0400 0000003c18a8886cc8d48000 3c0000003015141b162e0400 0000003c18a8886cc8d48000 - {e=>7,n=>3,a=>95,m=>4,d=>7,j=>4,l=>5,c=>2,k=>6,h=>4,b=>0,g=>3,f=>0,i=>3} 5f000000103f181c34250300 5f000000103f181c34250300 5f000000103f181c34250300 0000005f08fc0c8c98b06000 5f000000103f181c34250300 5f000000103f181c34250300 0000005f08fc0c8c98b06000 5f000000103f181c34250300 0000005f08fc0c8c98b06000 - {e=>6,n=>2,a=>-72,m=>1,d=>7,j=>3,l=>3,c=>4,k=>4,h=>2,b=>2,g=>7,f=>7,i=>3} b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 ffffffb850f8fc4c70644000 b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 ffffffb850f8fc4c70644000 b8ffffff22373f1a230b0200 ffffffb850f8fc4c70644000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>3,n=>5,a=>-18,m=>0,d=>5,j=>5,l=>2,c=>0,k=>7,h=>6,b=>1,g=>3,f=>2,o=>-124,i=>5} eeffffff011d1a2e3d02050084ff0000 eeffffff011d1a2e3d02050084ff0000 eeffffff011d1a2e3d02050084ff0000 ffffffee20ac4cd4bc40a000ff840000 eeffffff011d1a2e3d02050084ff0000 eeffffff011d1a2e3d02050084ff0000 ffffffee20ac4cd4bc40a000ff840000 eeffffff011d1a2e3d02050084ff0000 ffffffee20ac4cd4bc40a000ff840000 - {e=>7,n=>6,a=>-18,m=>7,d=>6,j=>5,l=>7,c=>5,k=>6,h=>4,b=>5,g=>7,f=>5,o=>-74,i=>7} eeffffff2d3e3d3c353f0600b6ff0000 eeffffff2d3e3d3c353f0600b6ff0000 eeffffff2d3e3d3c353f0600b6ff0000 ffffffeeb4dcbc9cb8fcc000ffb60000 eeffffff2d3e3d3c353f0600b6ff0000 eeffffff2d3e3d3c353f0600b6ff0000 ffffffeeb4dcbc9cb8fcc000ffb60000 eeffffff2d3e3d3c353f0600b6ff0000 ffffffeeb4dcbc9cb8fcc000ffb60000 - {e=>1,n=>5,a=>121,m=>1,d=>3,j=>4,l=>5,c=>3,k=>7,h=>1,b=>0,g=>5,f=>1,o=>-94,i=>1} 79000000180b29093c0d0500a2ff0000 79000000180b29093c0d0500a2ff0000 79000000180b29093c0d0500a2ff0000 000000790c6434249ca4a000ffa20000 79000000180b29093c0d0500a2ff0000 79000000180b29093c0d0500a2ff0000 000000790c6434249ca4a000ffa20000 79000000180b29093c0d0500a2ff0000 000000790c6434249ca4a000ffa20000 - {e=>2,n=>1,a=>-41,m=>4,d=>5,j=>7,l=>2,c=>6,k=>0,h=>4,b=>3,g=>7,f=>6,o=>-66,i=>7} d7ffffff33153e3c07220100beff0000 d7ffffff33153e3c07220100beff0000 d7ffffff33153e3c07220100beff0000 ffffffd778a8dc9ce0502000ffbe0000 d7ffffff33153e3c07220100beff0000 d7ffffff33153e3c07220100beff0000 ffffffd778a8dc9ce0502000ffbe0000 d7ffffff33153e3c07220100beff0000 ffffffd778a8dc9ce0502000ffbe0000 - {e=>7,n=>2,a=>39,m=>7,d=>4,j=>7,l=>6,c=>7,k=>2,h=>0,b=>7,g=>1,f=>2,o=>-125,i=>1} 270000003f3c0a08173e020083ff0000 270000003f3c0a08173e020083ff0000 270000003f3c0a08173e020083ff0000 00000027fc9c4404e8dc4000ff830000 270000003f3c0a08173e020083ff0000 270000003f3c0a08173e020083ff0000 00000027fc9c4404e8dc4000ff830000 270000003f3c0a08173e020083ff0000 00000027fc9c4404e8dc4000ff830000 = struct uch_wrap { long a; unsigned char b:3; }; - {a=>-40,b=>5} d8ffffff05000000 d8ffffffffffffff0500000000000000 d8ffffffffffffff0500000000000000 ffffffd8a0000000 d8ffffff05000000 d8ffffff05000000 ffffffffffffffd8a000000000000000 d8ffffff05000000 ffffffd8a0000000 - {a=>-42,b=>6} d6ffffff06000000 d6ffffffffffffff0600000000000000 d6ffffffffffffff0600000000000000 ffffffd6c0000000 d6ffffff06000000 d6ffffff06000000 ffffffffffffffd6c000000000000000 d6ffffff06000000 ffffffd6c0000000 - {a=>-83,b=>0} adffffff00000000 adffffffffffffff0000000000000000 adffffffffffffff0000000000000000 ffffffad00000000 adffffff00000000 adffffff00000000 ffffffffffffffad0000000000000000 adffffff00000000 ffffffad00000000 - {a=>6,b=>4} 0600000004000000 06000000000000000400000000000000 06000000000000000400000000000000 0000000680000000 0600000004000000 0600000004000000 00000000000000068000000000000000 0600000004000000 0000000680000000 - {a=>-27,b=>4} e5ffffff04000000 e5ffffffffffffff0400000000000000 e5ffffffffffffff0400000000000000 ffffffe580000000 e5ffffff04000000 e5ffffff04000000 ffffffffffffffe58000000000000000 e5ffffff04000000 ffffffe580000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>56,b=>5} 3800000025000000 38000000000000002500000000000000 38000000000000002500000000000000 00000038b0000000 3800000025000000 3800000025000000 0000000000000038b000000000000000 3800000025000000 00000038b0000000 - {c=>4,a=>-12,b=>5} f4ffffff25000000 f4ffffffffffffff2500000000000000 f4ffffffffffffff2500000000000000 fffffff4b0000000 f4ffffff25000000 f4ffffff25000000 fffffffffffffff4b000000000000000 f4ffffff25000000 fffffff4b0000000 - {c=>0,a=>-103,b=>3} 99ffffff03000000 99ffffffffffffff0300000000000000 99ffffffffffffff0300000000000000 ffffff9960000000 99ffffff03000000 99ffffff03000000 ffffffffffffff996000000000000000 99ffffff03000000 ffffff9960000000 - {c=>3,a=>104,b=>6} 680000001e000000 68000000000000001e00000000000000 68000000000000001e00000000000000 00000068cc000000 680000001e000000 680000001e000000 0000000000000068cc00000000000000 680000001e000000 00000068cc000000 - {c=>6,a=>-64,b=>6} c0ffffff36000000 c0ffffffffffffff3600000000000000 c0ffffffffffffff3600000000000000 ffffffc0d8000000 c0ffffff36000000 c0ffffff36000000 ffffffffffffffc0d800000000000000 c0ffffff36000000 ffffffc0d8000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>6,a=>-23,b=>3,d=>2} e9ffffff33020000 e9ffffffffffffff3302000000000000 e9ffffffffffffff3302000000000000 ffffffe978400000 e9ffffff33020000 e9ffffff33020000 ffffffffffffffe97840000000000000 e9ffffff33020000 ffffffe978400000 - {c=>7,a=>-55,b=>6,d=>0} c9ffffff3e000000 c9ffffffffffffff3e00000000000000 c9ffffffffffffff3e00000000000000 ffffffc9dc000000 c9ffffff3e000000 c9ffffff3e000000 ffffffffffffffc9dc00000000000000 c9ffffff3e000000 ffffffc9dc000000 - {c=>0,a=>84,b=>5,d=>3} 5400000005030000 54000000000000000503000000000000 54000000000000000503000000000000 00000054a0600000 5400000005030000 5400000005030000 0000000000000054a060000000000000 5400000005030000 00000054a0600000 - {c=>7,a=>-40,b=>0,d=>5} d8ffffff38050000 d8ffffffffffffff3805000000000000 d8ffffffffffffff3805000000000000 ffffffd81ca00000 d8ffffff38050000 d8ffffff38050000 ffffffffffffffd81ca0000000000000 d8ffffff38050000 ffffffd81ca00000 - {c=>6,a=>-97,b=>1,d=>1} 9fffffff31010000 9fffffffffffffff3101000000000000 9fffffffffffffff3101000000000000 ffffff9f38200000 9fffffff31010000 9fffffff31010000 ffffffffffffff9f3820000000000000 9fffffff31010000 ffffff9f38200000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>5,c=>5,a=>-118,b=>4,d=>3} 8affffff2c2b0000 8affffffffffffff2c2b000000000000 8affffffffffffff2c2b000000000000 ffffff8a94740000 8affffff2c2b0000 8affffff2c2b0000 ffffffffffffff8a9474000000000000 8affffff2c2b0000 ffffff8a94740000 - {e=>7,c=>6,a=>-96,b=>3,d=>4} a0ffffff333c0000 a0ffffffffffffff333c000000000000 a0ffffffffffffff333c000000000000 ffffffa0789c0000 a0ffffff333c0000 a0ffffff333c0000 ffffffffffffffa0789c000000000000 a0ffffff333c0000 ffffffa0789c0000 - {e=>0,c=>5,a=>93,b=>2,d=>3} 5d0000002a030000 5d000000000000002a03000000000000 5d000000000000002a03000000000000 0000005d54600000 5d0000002a030000 5d0000002a030000 000000000000005d5460000000000000 5d0000002a030000 0000005d54600000 - {e=>4,c=>6,a=>60,b=>0,d=>0} 3c00000030200000 3c000000000000003020000000000000 3c000000000000003020000000000000 0000003c18100000 3c00000030200000 3c00000030200000 000000000000003c1810000000000000 3c00000030200000 0000003c18100000 - {e=>7,c=>0,a=>-10,b=>2,d=>6} f6ffffff023e0000 f6ffffffffffffff023e000000000000 f6ffffffffffffff023e000000000000 fffffff640dc0000 f6ffffff023e0000 f6ffffff023e0000 fffffffffffffff640dc000000000000 f6ffffff023e0000 fffffff640dc0000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>0,c=>2,a=>-92,b=>1,d=>1,f=>0} a4ffffff11010000 a4ffffffffffffff1101000000000000 a4ffffffffffffff1101000000000000 ffffffa428200000 a4ffffff11010000 a4ffffff11010000 ffffffffffffffa42820000000000000 a4ffffff11010000 ffffffa428200000 - {e=>3,c=>4,a=>-86,b=>4,d=>0,f=>7} aaffffff24180700 aaffffffffffffff2418070000000000 aaffffffffffffff2418070000000000 ffffffaa900ce000 aaffffff24180700 aaffffff24180700 ffffffffffffffaa900ce00000000000 aaffffff24180700 ffffffaa900ce000 - {e=>0,c=>5,a=>117,b=>0,d=>1,f=>3} 7500000028010300 75000000000000002801030000000000 75000000000000002801030000000000 0000007514206000 7500000028010300 7500000028010300 00000000000000751420600000000000 7500000028010300 0000007514206000 - {e=>4,c=>6,a=>103,b=>2,d=>4,f=>0} 6700000032240000 67000000000000003224000000000000 67000000000000003224000000000000 0000006758900000 6700000032240000 6700000032240000 00000000000000675890000000000000 6700000032240000 0000006758900000 - {e=>2,c=>4,a=>42,b=>3,d=>2,f=>5} 2a00000023120500 2a000000000000002312050000000000 2a000000000000002312050000000000 0000002a7048a000 2a00000023120500 2a00000023120500 000000000000002a7048a00000000000 2a00000023120500 0000002a7048a000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>2,c=>0,a=>-3,g=>2,b=>5,d=>4,f=>5} fdffffff05141500 fdffffffffffffff0514150000000000 fdffffffffffffff0514150000000000 fffffffda088a800 fdffffff05141500 fdffffff05141500 fffffffffffffffda088a80000000000 fdffffff05141500 fffffffda088a800 - {e=>5,c=>6,a=>-39,g=>0,b=>0,d=>0,f=>1} d9ffffff30280100 d9ffffffffffffff3028010000000000 d9ffffffffffffff3028010000000000 ffffffd918142000 d9ffffff30280100 d9ffffff30280100 ffffffffffffffd91814200000000000 d9ffffff30280100 ffffffd918142000 - {e=>4,c=>0,a=>79,g=>3,b=>3,d=>7,f=>1} 4f00000003271900 4f000000000000000327190000000000 4f000000000000000327190000000000 0000004f60f02c00 4f00000003271900 4f00000003271900 000000000000004f60f02c0000000000 4f00000003271900 0000004f60f02c00 - {e=>1,c=>2,a=>-123,g=>2,b=>1,d=>0,f=>4} 85ffffff11081400 85ffffffffffffff1108140000000000 85ffffffffffffff1108140000000000 ffffff8528048800 85ffffff11081400 85ffffff11081400 ffffffffffffff852804880000000000 85ffffff11081400 ffffff8528048800 - {e=>4,c=>7,a=>100,g=>2,b=>3,d=>3,f=>6} 640000003b231600 64000000000000003b23160000000000 64000000000000003b23160000000000 000000647c70c800 640000003b231600 640000003b231600 00000000000000647c70c80000000000 640000003b231600 000000647c70c800 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>6,a=>-8,d=>6,c=>1,h=>6,b=>3,g=>1,f=>2} f8ffffff0b360a06 f8ffffffffffffff0b360a0600000000 f8ffffffffffffff0b360a0600000000 fffffff864d844c0 f8ffffff0b360a06 f8ffffff0b360a06 fffffffffffffff864d844c000000000 f8ffffff0b360a06 fffffff864d844c0 - {e=>4,a=>-75,d=>7,c=>3,h=>7,b=>3,g=>5,f=>3} b5ffffff1b272b07 b5ffffffffffffff1b272b0700000000 b5ffffffffffffff1b272b0700000000 ffffffb56cf074e0 b5ffffff1b272b07 b5ffffff1b272b07 ffffffffffffffb56cf074e000000000 b5ffffff1b272b07 ffffffb56cf074e0 - {e=>7,a=>-105,d=>6,c=>4,h=>5,b=>3,g=>2,f=>0} 97ffffff233e1005 97ffffffffffffff233e100500000000 97ffffffffffffff233e100500000000 ffffff9770dc08a0 97ffffff233e1005 97ffffff233e1005 ffffffffffffff9770dc08a000000000 97ffffff233e1005 ffffff9770dc08a0 - {e=>4,a=>115,d=>1,c=>7,h=>4,b=>6,g=>0,f=>0} 730000003e210004 73000000000000003e21000400000000 73000000000000003e21000400000000 00000073dc300080 730000003e210004 730000003e210004 0000000000000073dc30008000000000 730000003e210004 00000073dc300080 - {e=>4,a=>-9,d=>7,c=>1,h=>7,b=>7,g=>5,f=>3} f7ffffff0f272b07 f7ffffffffffffff0f272b0700000000 f7ffffffffffffff0f272b0700000000 fffffff7e4f074e0 f7ffffff0f272b07 f7ffffff0f272b07 fffffffffffffff7e4f074e000000000 f7ffffff0f272b07 fffffff7e4f074e0 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>-19,d=>4,c=>4,h=>6,b=>5,g=>6,f=>5,i=>7} edffffff2524353e edffffffffffffff2524353e00000000 edffffffffffffff2524353e00000000 ffffffedb090b8dc edffffff2524353e edffffff2524353e ffffffffffffffedb090b8dc00000000 edffffff2524353e ffffffedb090b8dc - {e=>6,a=>-94,d=>4,c=>3,h=>2,b=>4,g=>7,f=>3,i=>1} a2ffffff1c343b0a a2ffffffffffffff1c343b0a00000000 a2ffffffffffffff1c343b0a00000000 ffffffa28c987c44 a2ffffff1c343b0a a2ffffff1c343b0a ffffffffffffffa28c987c4400000000 a2ffffff1c343b0a ffffffa28c987c44 - {e=>5,a=>117,d=>2,c=>3,h=>2,b=>6,g=>0,f=>7,i=>3} 750000001e2a071a 75000000000000001e2a071a00000000 75000000000000001e2a071a00000000 00000075cc54e04c 750000001e2a071a 750000001e2a071a 0000000000000075cc54e04c00000000 750000001e2a071a 00000075cc54e04c - {e=>7,a=>-27,d=>5,c=>4,h=>4,b=>1,g=>0,f=>5,i=>6} e5ffffff213d0534 e5ffffffffffffff213d053400000000 e5ffffffffffffff213d053400000000 ffffffe530bca098 e5ffffff213d0534 e5ffffff213d0534 ffffffffffffffe530bca09800000000 e5ffffff213d0534 ffffffe530bca098 - {e=>4,a=>-18,d=>4,c=>3,h=>2,b=>0,g=>4,f=>1,i=>0} eeffffff18242102 eeffffffffffffff1824210200000000 eeffffffffffffff1824210200000000 ffffffee0c903040 eeffffff18242102 eeffffff18242102 ffffffffffffffee0c90304000000000 eeffffff18242102 ffffffee0c903040 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>6,a=>-43,d=>7,j=>2,c=>3,h=>5,b=>4,g=>2,f=>2,i=>3} d5ffffff1c37121d02000000 d5ffffffffffffff1c37121d02000000 d5ffffffffffffff1c37121d02000000 ffffffd58cf848ac40000000 d5ffffff1c37121d02000000 d5ffffff1c37121d02000000 ffffffffffffffd58cf848ac40000000 d5ffffff1c37121d02000000 ffffffd58cf848ac40000000 - {e=>1,a=>41,d=>0,j=>6,c=>4,h=>7,b=>5,g=>5,f=>6,i=>0} 2900000025082e0706000000 290000000000000025082e0706000000 290000000000000025082e0706000000 00000029b004d4e0c0000000 2900000025082e0706000000 2900000025082e0706000000 0000000000000029b004d4e0c0000000 2900000025082e0706000000 00000029b004d4e0c0000000 - {e=>0,a=>-53,d=>2,j=>3,c=>6,h=>4,b=>2,g=>2,f=>1,i=>3} cbffffff3202111c03000000 cbffffffffffffff3202111c03000000 cbffffffffffffff3202111c03000000 ffffffcb5840288c60000000 cbffffff3202111c03000000 cbffffff3202111c03000000 ffffffffffffffcb5840288c60000000 cbffffff3202111c03000000 ffffffcb5840288c60000000 - {e=>7,a=>6,d=>6,j=>3,c=>7,h=>3,b=>3,g=>4,f=>6,i=>0} 060000003b3e260303000000 06000000000000003b3e260303000000 06000000000000003b3e260303000000 000000067cdcd06060000000 060000003b3e260303000000 060000003b3e260303000000 00000000000000067cdcd06060000000 060000003b3e260303000000 000000067cdcd06060000000 - {e=>7,a=>8,d=>4,j=>4,c=>4,h=>1,b=>2,g=>7,f=>1,i=>5} 08000000223c392904000000 0800000000000000223c392904000000 0800000000000000223c392904000000 00000008509c3c3480000000 08000000223c392904000000 08000000223c392904000000 0000000000000008509c3c3480000000 08000000223c392904000000 00000008509c3c3480000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>2,a=>-120,d=>3,j=>3,c=>1,k=>7,h=>5,b=>6,g=>1,f=>2,i=>6} 88ffffff0e130a353b000000 88ffffffffffffff0e130a353b000000 88ffffffffffffff0e130a353b000000 ffffff88c46844b87c000000 88ffffff0e130a353b000000 88ffffff0e130a353b000000 ffffffffffffff88c46844b87c000000 88ffffff0e130a353b000000 ffffff88c46844b87c000000 - {e=>0,a=>116,d=>7,j=>1,c=>4,k=>0,h=>3,b=>1,g=>4,f=>3,i=>1} 740000002107230b01000000 74000000000000002107230b01000000 74000000000000002107230b01000000 0000007430e0706420000000 740000002107230b01000000 740000002107230b01000000 000000000000007430e0706420000000 740000002107230b01000000 0000007430e0706420000000 - {e=>4,a=>108,d=>2,j=>7,c=>4,k=>6,h=>2,b=>1,g=>0,f=>5,i=>0} 6c0000002122050237000000 6c000000000000002122050237000000 6c000000000000002122050237000000 0000006c3050a040f8000000 6c0000002122050237000000 6c0000002122050237000000 000000000000006c3050a040f8000000 6c0000002122050237000000 0000006c3050a040f8000000 - {e=>3,a=>-126,d=>7,j=>0,c=>5,k=>6,h=>1,b=>0,g=>1,f=>7,i=>3} 82ffffff281f0f1930000000 82ffffffffffffff281f0f1930000000 82ffffffffffffff281f0f1930000000 ffffff8214ece42c18000000 82ffffff281f0f1930000000 82ffffff281f0f1930000000 ffffffffffffff8214ece42c18000000 82ffffff281f0f1930000000 ffffff8214ece42c18000000 - {e=>2,a=>-78,d=>3,j=>3,c=>7,k=>4,h=>1,b=>7,g=>2,f=>1,i=>2} b2ffffff3f13111123000000 b2ffffffffffffff3f13111123000000 b2ffffffffffffff3f13111123000000 ffffffb2fc68282870000000 b2ffffff3f13111123000000 b2ffffff3f13111123000000 ffffffffffffffb2fc68282870000000 b2ffffff3f13111123000000 ffffffb2fc68282870000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>7,a=>14,d=>4,j=>1,l=>0,c=>6,k=>4,h=>3,b=>1,g=>2,f=>7,i=>1} 0e000000313c170b21000000 0e00000000000000313c170b21000000 0e00000000000000313c170b21000000 0000000e389ce86430000000 0e000000313c170b21000000 0e000000313c170b21000000 000000000000000e389ce86430000000 0e000000313c170b21000000 0000000e389ce86430000000 - {e=>0,a=>121,d=>5,j=>2,l=>2,c=>3,k=>1,h=>2,b=>0,g=>4,f=>2,i=>0} 79000000180522020a020000 7900000000000000180522020a020000 7900000000000000180522020a020000 000000790ca0504044400000 79000000180522020a020000 79000000180522020a020000 00000000000000790ca0504044400000 79000000180522020a020000 000000790ca0504044400000 - {e=>5,a=>-2,d=>5,j=>7,l=>4,c=>3,k=>0,h=>2,b=>2,g=>6,f=>3,i=>0} feffffff1a2d330207040000 feffffffffffffff1a2d330207040000 feffffffffffffff1a2d330207040000 fffffffe4cb47840e0800000 feffffff1a2d330207040000 feffffff1a2d330207040000 fffffffffffffffe4cb47840e0800000 feffffff1a2d330207040000 fffffffe4cb47840e0800000 - {e=>4,a=>8,d=>2,j=>4,l=>3,c=>7,k=>2,h=>6,b=>4,g=>0,f=>5,i=>2} 080000003c22051614030000 08000000000000003c22051614030000 08000000000000003c22051614030000 000000089c50a0c888600000 080000003c22051614030000 080000003c22051614030000 00000000000000089c50a0c888600000 080000003c22051614030000 000000089c50a0c888600000 - {e=>1,a=>-123,d=>4,j=>6,l=>2,c=>4,k=>3,h=>5,b=>7,g=>1,f=>5,i=>6} 85ffffff270c0d351e020000 85ffffffffffffff270c0d351e020000 85ffffffffffffff270c0d351e020000 ffffff85f084a4b8cc400000 85ffffff270c0d351e020000 85ffffff270c0d351e020000 ffffffffffffff85f084a4b8cc400000 85ffffff270c0d351e020000 ffffff85f084a4b8cc400000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>5,a=>-111,m=>3,d=>7,j=>6,l=>5,c=>6,k=>6,h=>6,b=>0,g=>4,f=>1,i=>2} 91ffffff302f2116361d0000 91ffffffffffffff302f2116361d0000 91ffffffffffffff302f2116361d0000 ffffff9118f430c8d8ac0000 91ffffff302f2116361d0000 91ffffff302f2116361d0000 ffffffffffffff9118f430c8d8ac0000 91ffffff302f2116361d0000 ffffff9118f430c8d8ac0000 - {e=>4,a=>-44,m=>0,d=>4,j=>5,l=>1,c=>5,k=>0,h=>2,b=>2,g=>4,f=>7,i=>6} d4ffffff2a24273205010000 d4ffffffffffffff2a24273205010000 d4ffffffffffffff2a24273205010000 ffffffd45490f058a0200000 d4ffffff2a24273205010000 d4ffffff2a24273205010000 ffffffffffffffd45490f058a0200000 d4ffffff2a24273205010000 ffffffd45490f058a0200000 - {e=>7,a=>-24,m=>0,d=>0,j=>3,l=>1,c=>5,k=>5,h=>1,b=>2,g=>3,f=>5,i=>4} e8ffffff2a381d212b010000 e8ffffffffffffff2a381d212b010000 e8ffffffffffffff2a381d212b010000 ffffffe8541cac3074200000 e8ffffff2a381d212b010000 e8ffffff2a381d212b010000 ffffffffffffffe8541cac3074200000 e8ffffff2a381d212b010000 ffffffe8541cac3074200000 - {e=>4,a=>96,m=>2,d=>0,j=>1,l=>2,c=>2,k=>4,h=>4,b=>4,g=>3,f=>7,i=>2} 6000000014201f1421120000 600000000000000014201f1421120000 600000000000000014201f1421120000 000000608810ec8830480000 6000000014201f1421120000 6000000014201f1421120000 00000000000000608810ec8830480000 6000000014201f1421120000 000000608810ec8830480000 - {e=>2,a=>-3,m=>4,d=>0,j=>4,l=>5,c=>7,k=>3,h=>7,b=>5,g=>0,f=>1,i=>6} fdffffff3d1001371c250000 fdffffffffffffff3d1001371c250000 fdffffffffffffff3d1001371c250000 fffffffdbc0820f88cb00000 fdffffff3d1001371c250000 fdffffff3d1001371c250000 fffffffffffffffdbc0820f88cb00000 fdffffff3d1001371c250000 fffffffdbc0820f88cb00000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>5,n=>3,a=>-107,m=>1,d=>3,j=>7,l=>5,c=>0,k=>2,h=>0,b=>6,g=>2,f=>2,i=>7} 95ffffff062b1238170d0300 95ffffffffffffff062b1238170d0300 95ffffffffffffff062b1238170d0300 ffffff95c074481ce8a46000 95ffffff062b1238170d0300 95ffffff062b1238170d0300 ffffffffffffff95c074481ce8a46000 95ffffff062b1238170d0300 ffffff95c074481ce8a46000 - {e=>7,n=>1,a=>9,m=>6,d=>1,j=>2,l=>4,c=>7,k=>6,h=>7,b=>5,g=>4,f=>4,i=>6} 090000003d39243732340100 09000000000000003d39243732340100 09000000000000003d39243732340100 00000009bc3c90f858982000 090000003d39243732340100 090000003d39243732340100 0000000000000009bc3c90f858982000 090000003d39243732340100 00000009bc3c90f858982000 - {e=>2,n=>1,a=>-50,m=>7,d=>3,j=>1,l=>6,c=>0,k=>2,h=>7,b=>2,g=>1,f=>5,i=>6} ceffffff02130d37113e0100 ceffffffffffffff02130d37113e0100 ceffffffffffffff02130d37113e0100 ffffffce4068a4f828dc2000 ceffffff02130d37113e0100 ceffffff02130d37113e0100 ffffffffffffffce4068a4f828dc2000 ceffffff02130d37113e0100 ffffffce4068a4f828dc2000 - {e=>7,n=>4,a=>123,m=>1,d=>1,j=>2,l=>4,c=>4,k=>7,h=>0,b=>4,g=>6,f=>0,i=>6} 7b000000243930303a0c0400 7b00000000000000243930303a0c0400 7b00000000000000243930303a0c0400 0000007b903c18185c848000 7b000000243930303a0c0400 7b000000243930303a0c0400 000000000000007b903c18185c848000 7b000000243930303a0c0400 0000007b903c18185c848000 - {e=>2,n=>4,a=>-2,m=>5,d=>3,j=>4,l=>4,c=>3,k=>2,h=>7,b=>4,g=>7,f=>3,i=>4} feffffff1c133b27142c0400 feffffffffffffff1c133b27142c0400 feffffffffffffff1c133b27142c0400 fffffffe8c687cf088948000 feffffff1c133b27142c0400 feffffff1c133b27142c0400 fffffffffffffffe8c687cf088948000 feffffff1c133b27142c0400 fffffffe8c687cf088948000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>2,n=>2,a=>66,m=>1,d=>2,j=>2,l=>3,c=>0,k=>3,h=>7,b=>2,g=>5,f=>1,o=>-57,i=>2} 42000000021229171a0b0200c7ff0000 4200000000000000021229171a0b0200c7ff000000000000 4200000000000000021229171a0b0200c7ff000000000000 00000042404834e84c644000ffc70000 42000000021229171a0b0200c7ff0000 42000000021229171a0b0200c7ff0000 0000000000000042404834e84c644000ffc7000000000000 42000000021229171a0b0200c7ff0000 00000042404834e84c644000ffc70000 - {e=>5,n=>3,a=>-74,m=>0,d=>7,j=>6,l=>1,c=>4,k=>7,h=>6,b=>7,g=>3,f=>5,o=>39,i=>2} b6ffffff272f1d163e01030027000000 b6ffffffffffffff272f1d163e0103002700000000000000 b6ffffffffffffff272f1d163e0103002700000000000000 ffffffb6f0f4acc8dc20600000270000 b6ffffff272f1d163e01030027000000 b6ffffff272f1d163e01030027000000 ffffffffffffffb6f0f4acc8dc2060000027000000000000 b6ffffff272f1d163e01030027000000 ffffffb6f0f4acc8dc20600000270000 - {e=>0,n=>4,a=>-119,m=>6,d=>5,j=>3,l=>4,c=>5,k=>2,h=>2,b=>3,g=>4,f=>1,o=>-9,i=>4} 89ffffff2b05212213340400f7ff0000 89ffffffffffffff2b05212213340400f7ff000000000000 89ffffffffffffff2b05212213340400f7ff000000000000 ffffff8974a0305068988000fff70000 89ffffff2b05212213340400f7ff0000 89ffffff2b05212213340400f7ff0000 ffffffffffffff8974a0305068988000fff7000000000000 89ffffff2b05212213340400f7ff0000 ffffff8974a0305068988000fff70000 - {e=>3,n=>6,a=>-85,m=>7,d=>1,j=>6,l=>3,c=>7,k=>4,h=>4,b=>2,g=>5,f=>0,o=>120,i=>0} abffffff3a192804263b060078000000 abffffffffffffff3a192804263b06007800000000000000 abffffffffffffff3a192804263b06007800000000000000 ffffffab5c2c1480d07cc00000780000 abffffff3a192804263b060078000000 abffffff3a192804263b060078000000 ffffffffffffffab5c2c1480d07cc0000078000000000000 abffffff3a192804263b060078000000 ffffffab5c2c1480d07cc00000780000 - {e=>1,n=>6,a=>5,m=>5,d=>5,j=>2,l=>1,c=>4,k=>2,h=>0,b=>7,g=>0,f=>2,o=>-21,i=>6} 05000000270d023012290600ebff0000 0500000000000000270d023012290600ebff000000000000 0500000000000000270d023012290600ebff000000000000 00000005f0a440184834c000ffeb0000 05000000270d023012290600ebff0000 05000000270d023012290600ebff0000 0000000000000005f0a440184834c000ffeb000000000000 05000000270d023012290600ebff0000 00000005f0a440184834c000ffeb0000 = struct int_wrap { int a:3; }; - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 - {a=>-2} 06000000 06000000 06000000 c0000000 06000000 06000000 c0000000 06000000 c0000000 - {a=>-2} 06000000 06000000 06000000 c0000000 06000000 06000000 c0000000 06000000 c0000000 - {a=>2} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 = struct int_wrap { int a:3; int b:3; }; - {a=>-4,b=>-1} 3c000000 3c000000 3c000000 9c000000 3c000000 3c000000 9c000000 3c000000 9c000000 - {a=>-1,b=>-1} 3f000000 3f000000 3f000000 fc000000 3f000000 3f000000 fc000000 3f000000 fc000000 - {a=>2,b=>3} 1a000000 1a000000 1a000000 4c000000 1a000000 1a000000 4c000000 1a000000 4c000000 - {a=>-2,b=>-4} 26000000 26000000 26000000 d0000000 26000000 26000000 d0000000 26000000 d0000000 - {a=>-2,b=>1} 0e000000 0e000000 0e000000 c4000000 0e000000 0e000000 c4000000 0e000000 c4000000 = struct int_wrap { int a:3; int b:3; int c:3; }; - {c=>-2,a=>-3,b=>2} 95010000 95010000 95010000 ab000000 95010000 95010000 ab000000 95010000 ab000000 - {c=>-3,a=>-4,b=>3} 5c010000 5c010000 5c010000 8e800000 5c010000 5c010000 8e800000 5c010000 8e800000 - {c=>2,a=>1,b=>3} 99000000 99000000 99000000 2d000000 99000000 99000000 2d000000 99000000 2d000000 - {c=>-4,a=>-4,b=>-1} 3c010000 3c010000 3c010000 9e000000 3c010000 3c010000 9e000000 3c010000 9e000000 - {c=>-1,a=>-3,b=>-4} e5010000 e5010000 e5010000 b3800000 e5010000 e5010000 b3800000 e5010000 b3800000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; }; - {c=>-1,a=>0,b=>-1,d=>0} f8010000 f8010000 f8010000 1f800000 f8010000 f8010000 1f800000 f8010000 1f800000 - {c=>-2,a=>-2,b=>1,d=>2} 8e050000 8e050000 8e050000 c7200000 8e050000 8e050000 c7200000 8e050000 c7200000 - {c=>-2,a=>0,b=>-4,d=>2} a0050000 a0050000 a0050000 13200000 a0050000 a0050000 13200000 a0050000 13200000 - {c=>-3,a=>1,b=>-4,d=>3} 61070000 61070000 61070000 32b00000 61070000 61070000 32b00000 61070000 32b00000 - {c=>1,a=>-2,b=>2,d=>0} 56000000 56000000 56000000 c8800000 56000000 56000000 c8800000 56000000 c8800000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; }; - {e=>-3,c=>-3,a=>1,b=>-4,d=>-4} 61590000 61590000 61590000 32ca0000 61590000 61590000 32ca0000 61590000 32ca0000 - {e=>-3,c=>2,a=>0,b=>1,d=>0} 88500000 88500000 88500000 050a0000 88500000 88500000 050a0000 88500000 050a0000 - {e=>-3,c=>3,a=>2,b=>-1,d=>0} fa500000 fa500000 fa500000 5d8a0000 fa500000 fa500000 5d8a0000 fa500000 5d8a0000 - {e=>1,c=>-2,a=>-2,b=>-2,d=>3} b6170000 b6170000 b6170000 db320000 b6170000 b6170000 db320000 b6170000 db320000 - {e=>3,c=>1,a=>-1,b=>2,d=>-2} 573c0000 573c0000 573c0000 e8e60000 573c0000 573c0000 e8e60000 573c0000 e8e60000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-1,c=>-2,a=>-2,b=>2,d=>1,f=>3} 96f30100 96f30100 96f30100 cb1ec000 96f30100 96f30100 cb1ec000 96f30100 cb1ec000 - {e=>-3,c=>-4,a=>3,b=>2,d=>1,f=>-3} 13d30200 13d30200 13d30200 6a1b4000 13d30200 13d30200 6a1b4000 13d30200 6a1b4000 - {e=>-4,c=>0,a=>-1,b=>-4,d=>-1,f=>-2} 274e0300 274e0300 274e0300 f0798000 274e0300 274e0300 f0798000 274e0300 f0798000 - {e=>-1,c=>-4,a=>-1,b=>1,d=>0,f=>-3} 0ff10200 0ff10200 0ff10200 e60f4000 0ff10200 0ff10200 e60f4000 0ff10200 e60f4000 - {e=>-4,c=>-2,a=>1,b=>3,d=>2,f=>-3} 99c50200 99c50200 99c50200 2f294000 99c50200 99c50200 2f294000 99c50200 2f294000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-4,c=>1,a=>-4,g=>0,b=>-2,d=>0,f=>-3} 74c00200 74c00200 74c00200 98894000 74c00200 74c00200 98894000 74c00200 98894000 - {e=>-2,c=>0,a=>-4,g=>3,b=>-4,d=>0,f=>-3} 24e00e00 24e00e00 24e00e00 900d5800 24e00e00 24e00e00 900d5800 24e00e00 900d5800 - {e=>0,c=>1,a=>3,g=>2,b=>-3,d=>0,f=>0} 6b000800 6b000800 6b000800 74801000 6b000800 6b000800 74801000 6b000800 74801000 - {e=>-4,c=>-2,a=>-1,g=>3,b=>1,d=>1,f=>0} 8f430c00 8f430c00 8f430c00 e7181800 8f430c00 8f430c00 e7181800 8f430c00 e7181800 - {e=>2,c=>-2,a=>-3,g=>0,b=>-3,d=>1,f=>-2} ad230300 ad230300 ad230300 b7158000 ad230300 ad230300 b7158000 ad230300 b7158000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>-2,a=>3,d=>-1,c=>-4,h=>-2,b=>-1,g=>0,f=>-4} 3b6fc200 3b6fc200 3b6fc200 7e7d0600 3b6fc200 3b6fc200 7e7d0600 3b6fc200 7e7d0600 - {e=>3,a=>-4,d=>1,c=>1,h=>0,b=>2,g=>-3,f=>2} 54321500 54321500 54321500 8896a800 54321500 54321500 8896a800 54321500 8896a800 - {e=>2,a=>-2,d=>2,c=>3,h=>-3,b=>3,g=>3,f=>-4} de24ae00 de24ae00 de24ae00 cda51d00 de24ae00 de24ae00 cda51d00 de24ae00 cda51d00 - {e=>2,a=>-1,d=>-1,c=>1,h=>-3,b=>-4,g=>2,f=>-4} 672eaa00 672eaa00 672eaa00 f0f51500 672eaa00 672eaa00 f0f51500 672eaa00 f0f51500 - {e=>0,a=>0,d=>0,c=>-4,h=>2,b=>3,g=>3,f=>0} 18014c00 18014c00 18014c00 0e001a00 18014c00 18014c00 0e001a00 18014c00 0e001a00 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>-4,a=>2,d=>-2,c=>-2,h=>3,b=>-3,g=>-2,f=>-3,i=>0} aacd7a00 aacd7a00 aacd7a00 57697300 aacd7a00 aacd7a00 57697300 aacd7a00 57697300 - {e=>-4,a=>-1,d=>2,c=>3,h=>1,b=>-1,g=>0,f=>-1,i=>0} ffc42300 ffc42300 ffc42300 fda9c100 ffc42300 ffc42300 fda9c100 ffc42300 fda9c100 - {e=>2,a=>0,d=>-1,c=>2,h=>2,b=>1,g=>3,f=>-1,i=>0} 88ae4f00 88ae4f00 88ae4f00 0575da00 88ae4f00 88ae4f00 0575da00 88ae4f00 0575da00 - {e=>-3,a=>-4,d=>2,c=>-1,h=>-3,b=>2,g=>1,f=>-3,i=>-3} d4d5a605 d4d5a605 d4d5a605 8bab4da0 d4d5a605 d4d5a605 8bab4da0 d4d5a605 8bab4da0 - {e=>1,a=>-1,d=>-1,c=>-1,h=>0,b=>-1,g=>-3,f=>-3,i=>2} ff9f1602 ff9f1602 ff9f1602 fff36840 ff9f1602 ff9f1602 fff36840 ff9f1602 fff36840 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-3,a=>0,d=>-3,j=>-4,c=>3,h=>-1,b=>-3,g=>1,f=>1,i=>-4} e8dae424 e8dae424 e8dae424 15da4f90 e8dae424 e8dae424 15da4f90 e8dae424 15da4f90 - {e=>1,a=>3,d=>-3,j=>2,c=>-3,h=>3,b=>-1,g=>1,f=>-1,i=>-4} 7b9b6714 7b9b6714 7b9b6714 7ed3cb88 7b9b6714 7b9b6714 7ed3cb88 7b9b6714 7ed3cb88 - {e=>-3,a=>-3,d=>1,j=>-4,c=>-4,h=>3,b=>-1,g=>-1,f=>-2,i=>0} 3d537f20 3d537f20 3d537f20 be1bbb10 3d537f20 3d537f20 be1bbb10 3d537f20 be1bbb10 - {e=>2,a=>0,d=>-4,j=>1,c=>3,h=>1,b=>-2,g=>1,f=>-2,i=>2} f028270a f028270a f028270a 19c58944 f028270a f028270a 19c58944 f028270a 19c58944 - {e=>-2,a=>1,d=>-1,j=>3,c=>-4,h=>2,b=>1,g=>0,f=>2,i=>3} 096f411b 096f411b 096f411b 267c826c 096f411b 096f411b 267c826c 096f411b 267c826c = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-4,a=>2,d=>-4,j=>2,c=>-3,k=>-1,h=>-1,b=>2,g=>-3,f=>-3,i=>-4} 52c9f61407000000 52c9f61407000000 52c9f61407000000 4ac96f88e0000000 52c9f61407000000 52c9f61407000000 4ac96f88e0000000 52c9f61407000000 4ac96f88e0000000 - {e=>3,a=>2,d=>-3,j=>-3,c=>-1,k=>-3,h=>-3,b=>0,g=>-4,f=>-3,i=>0} c2bbb22805000000 c2bbb22805000000 c2bbb22805000000 43d76514a0000000 c2bbb22805000000 c2bbb22805000000 43d76514a0000000 c2bbb22805000000 43d76514a0000000 - {e=>-2,a=>1,d=>3,j=>-4,c=>-1,k=>3,h=>3,b=>1,g=>1,f=>2,i=>-3} c967652503000000 c967652503000000 c967652503000000 27bc8bb060000000 c967652503000000 c967652503000000 27bc8bb060000000 c967652503000000 27bc8bb060000000 - {e=>2,a=>3,d=>-4,j=>-4,c=>0,k=>-4,h=>-4,b=>3,g=>3,f=>-3,i=>-2} 1ba88e2604000000 1ba88e2604000000 1ba88e2604000000 6c455cd080000000 1ba88e2604000000 1ba88e2604000000 6c455cd080000000 1ba88e2604000000 6c455cd080000000 - {e=>-1,a=>0,d=>-1,j=>-3,c=>-1,k=>2,h=>2,b=>-4,g=>-4,f=>-4,i=>-1} e07f522f02000000 e07f522f02000000 e07f522f02000000 13ff22f440000000 e07f522f02000000 e07f522f02000000 13ff22f440000000 e07f522f02000000 13ff22f440000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>3,d=>-2,j=>-3,l=>0,c=>-3,k=>3,h=>-3,b=>-1,g=>1,f=>-3,i=>1} 7bdda62903000000 7bdda62903000000 7bdda62903000000 7eeb4d3460000000 7bdda62903000000 7bdda62903000000 7eeb4d3460000000 7bdda62903000000 7eeb4d3460000000 - {e=>-2,a=>-1,d=>1,j=>3,l=>-3,c=>-2,k=>-1,h=>1,b=>3,g=>2,f=>-4,i=>2} 9f632a1a2f000000 9f632a1a2f000000 9f632a1a2f000000 ef1d114cf4000000 9f632a1a2f000000 9f632a1a2f000000 ef1d114cf4000000 9f632a1a2f000000 ef1d114cf4000000 - {e=>-3,a=>3,d=>3,j=>3,l=>3,c=>2,k=>2,h=>-2,b=>0,g=>1,f=>-3,i=>-1} 83d6c61f1a000000 83d6c61f1a000000 83d6c61f1a000000 613b4eec4c000000 83d6c61f1a000000 83d6c61f1a000000 613b4eec4c000000 83d6c61f1a000000 613b4eec4c000000 - {e=>1,a=>2,d=>-3,j=>-4,l=>-4,c=>-4,k=>-3,h=>0,b=>-4,g=>1,f=>2,i=>3} 221b052325000000 221b052325000000 221b052325000000 52528870b0000000 221b052325000000 221b052325000000 52528870b0000000 221b052325000000 52528870b0000000 - {e=>0,a=>-4,d=>3,j=>-1,l=>0,c=>-1,k=>-3,h=>-2,b=>-3,g=>0,f=>-3,i=>-1} ec87c23f05000000 ec87c23f05000000 ec87c23f05000000 97b146fca0000000 ec87c23f05000000 ec87c23f05000000 97b146fca0000000 ec87c23f05000000 97b146fca0000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>2,a=>3,m=>-2,d=>0,j=>-1,l=>0,c=>-3,k=>-4,h=>0,b=>1,g=>1,f=>0,i=>-1} 4b21043f84010000 4b21043f84010000 4b21043f84010000 668408fc83000000 4b21043f84010000 4b21043f84010000 668408fc83000000 4b21043f84010000 668408fc83000000 - {e=>1,a=>-1,m=>0,d=>3,j=>2,l=>-2,c=>1,k=>1,h=>-3,b=>0,g=>3,f=>0,i=>-1} 4716ac1731000000 4716ac1731000000 4716ac1731000000 e0b21de838000000 4716ac1731000000 4716ac1731000000 e0b21de838000000 4716ac1731000000 e0b21de838000000 - {e=>3,a=>0,m=>-3,d=>2,j=>-4,l=>-3,c=>-4,k=>-1,h=>2,b=>2,g=>2,f=>-3,i=>-2} 10b54a266f010000 10b54a266f010000 10b54a266f010000 0a2752d0f6800000 10b54a266f010000 10b54a266f010000 0a2752d0f6800000 10b54a266f010000 0a2752d0f6800000 - {e=>3,a=>1,m=>0,d=>3,j=>0,l=>3,c=>-4,k=>-1,h=>-3,b=>-3,g=>-3,f=>1,i=>1} 29b7b4011f000000 29b7b4011f000000 29b7b4011f000000 36366d20ec000000 29b7b4011f000000 29b7b4011f000000 36366d20ec000000 29b7b4011f000000 36366d20ec000000 - {e=>-4,a=>-3,m=>1,d=>1,j=>-4,l=>0,c=>0,k=>0,h=>-1,b=>3,g=>1,f=>2,i=>3} 1d42e52340000000 1d42e52340000000 1d42e52340000000 ac188f7000800000 1d42e52340000000 1d42e52340000000 ac188f7000800000 1d42e52340000000 ac188f7000800000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n; }; - {e=>-4,n=>-50,a=>0,m=>-1,d=>-4,j=>-4,l=>3,c=>-4,k=>2,h=>2,b=>0,g=>1,f=>-1,i=>-3} 00c94725da010000ceffffff 00c94725da010000ceffffff 00c94725da010000ceffffff 0249cab04f800000ffffffce 00c94725da010000ceffffff 00c94725da010000ceffffff 0249cab04f800000ffffffce 00c94725da010000ceffffff 0249cab04f800000ffffffce - {e=>2,n=>59,a=>1,m=>2,d=>-1,j=>2,l=>0,c=>-3,k=>0,h=>-2,b=>-3,g=>-3,f=>0,i=>0} 692fd410800000003b000000 692fd410800000003b000000 692fd410800000003b000000 36f42e08010000000000003b 692fd410800000003b000000 692fd410800000003b000000 36f42e08010000000000003b 692fd410800000003b000000 36f42e08010000000000003b - {e=>3,n=>94,a=>2,m=>2,d=>-4,j=>-2,l=>-2,c=>-3,k=>-1,h=>-3,b=>-1,g=>-2,f=>2,i=>2} 7a39b932b70000005e000000 7a39b932b70000005e000000 7a39b932b70000005e000000 5ec6b558f90000000000005e 7a39b932b70000005e000000 7a39b932b70000005e000000 5ec6b558f90000000000005e 7a39b932b70000005e000000 5ec6b558f90000000000005e - {e=>0,n=>126,a=>3,m=>1,d=>0,j=>0,l=>2,c=>-2,k=>-1,h=>-4,b=>2,g=>-3,f=>0,i=>0} 93019400570000007e000000 93019400570000007e000000 93019400570000007e000000 6b002c00e88000000000007e 93019400570000007e000000 93019400570000007e000000 6b002c00e88000000000007e 93019400570000007e000000 6b002c00e88000000000007e - {e=>3,n=>50,a=>-3,m=>2,d=>2,j=>-2,l=>-3,c=>-2,k=>3,h=>-1,b=>-2,g=>2,f=>-3,i=>-1} b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 bb2757f87500000000000032 b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 bb2757f87500000000000032 b5b5ea37ab00000032000000 bb2757f87500000000000032 = struct int_wrap { char a; int b:3; }; - {a=>-96,b=>2} a0020000 a0020000 a0020000 a0400000 a0020000 a0020000 a0400000 a0020000 a0400000 - {a=>-46,b=>2} d2020000 d2020000 d2020000 d2400000 d2020000 d2020000 d2400000 d2020000 d2400000 - {a=>-68,b=>3} bc030000 bc030000 bc030000 bc600000 bc030000 bc030000 bc600000 bc030000 bc600000 - {a=>0,b=>3} 00030000 00030000 00030000 00600000 00030000 00030000 00600000 00030000 00600000 - {a=>-26,b=>-2} e6060000 e6060000 e6060000 e6c00000 e6060000 e6060000 e6c00000 e6060000 e6c00000 = struct int_wrap { char a; int b:3; int c:3; }; - {c=>1,a=>123,b=>0} 7b080000 7b080000 7b080000 7b040000 7b080000 7b080000 7b040000 7b080000 7b040000 - {c=>-1,a=>-98,b=>2} 9e3a0000 9e3a0000 9e3a0000 9e5c0000 9e3a0000 9e3a0000 9e5c0000 9e3a0000 9e5c0000 - {c=>-3,a=>75,b=>-4} 4b2c0000 4b2c0000 4b2c0000 4b940000 4b2c0000 4b2c0000 4b940000 4b2c0000 4b940000 - {c=>-4,a=>-4,b=>-4} fc240000 fc240000 fc240000 fc900000 fc240000 fc240000 fc900000 fc240000 fc900000 - {c=>-1,a=>17,b=>1} 11390000 11390000 11390000 113c0000 11390000 11390000 113c0000 11390000 113c0000 = struct int_wrap { char a; int b:3; int c:3; int d:3; }; - {c=>-4,a=>17,b=>-2,d=>1} 11660000 11660000 11660000 11d08000 11660000 11660000 11d08000 11660000 11d08000 - {c=>0,a=>75,b=>0,d=>3} 4bc00000 4bc00000 4bc00000 4b018000 4bc00000 4bc00000 4b018000 4bc00000 4b018000 - {c=>3,a=>-89,b=>1,d=>1} a7590000 a7590000 a7590000 a72c8000 a7590000 a7590000 a72c8000 a7590000 a72c8000 - {c=>2,a=>86,b=>2,d=>3} 56d20000 56d20000 56d20000 56498000 56d20000 56d20000 56498000 56d20000 56498000 - {c=>-4,a=>53,b=>-1,d=>0} 35270000 35270000 35270000 35f00000 35270000 35270000 35f00000 35270000 35f00000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; }; - {e=>-4,c=>-3,a=>-104,b=>-2,d=>0} 982e0800 982e0800 982e0800 98d44000 982e0800 982e0800 98d44000 982e0800 98d44000 - {e=>0,c=>2,a=>8,b=>2,d=>-3} 08520100 08520100 08520100 084a8000 08520100 08520100 084a8000 08520100 084a8000 - {e=>0,c=>-2,a=>-41,b=>-2,d=>0} d7360000 d7360000 d7360000 d7d80000 d7360000 d7360000 d7d80000 d7360000 d7d80000 - {e=>-4,c=>-4,a=>56,b=>2,d=>-4} 38220900 38220900 38220900 38524000 38220900 38220900 38524000 38220900 38524000 - {e=>-3,c=>3,a=>-43,b=>-2,d=>-3} d55e0b00 d55e0b00 d55e0b00 d5ced000 d55e0b00 d55e0b00 d5ced000 d55e0b00 d5ced000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-4,c=>1,a=>119,b=>1,d=>1,f=>1} 77491800 77491800 77491800 7724c200 77491800 77491800 7724c200 77491800 7724c200 - {e=>-1,c=>-3,a=>-91,b=>-2,d=>2,f=>-4} a5ae4e00 a5ae4e00 a5ae4e00 a5d57800 a5ae4e00 a5ae4e00 a5d57800 a5ae4e00 a5d57800 - {e=>0,c=>-4,a=>-43,b=>2,d=>0,f=>-1} d5227000 d5227000 d5227000 d5500e00 d5227000 d5227000 d5500e00 d5227000 d5500e00 - {e=>1,c=>-3,a=>121,b=>2,d=>1,f=>-3} 796a5200 796a5200 796a5200 79549a00 796a5200 796a5200 79549a00 796a5200 79549a00 - {e=>1,c=>3,a=>12,b=>0,d=>1,f=>-2} 0c586200 0c586200 0c586200 0c0c9c00 0c586200 0c586200 0c0c9c00 0c586200 0c0c9c00 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>1,c=>3,a=>92,g=>2,b=>0,d=>-4,f=>-1} 5c187301 5c187301 5c187301 5c0e1e80 5c187301 5c187301 5c0e1e80 5c187301 5c0e1e80 - {e=>-3,c=>3,a=>70,g=>-1,b=>1,d=>2,f=>1} 46999a03 46999a03 46999a03 462d53c0 46999a03 46999a03 462d53c0 46999a03 462d53c0 - {e=>0,c=>2,a=>61,g=>-4,b=>-3,d=>-3,f=>0} 3d550102 3d550102 3d550102 3daa8100 3d550102 3d550102 3daa8100 3d550102 3daa8100 - {e=>1,c=>1,a=>-72,g=>-3,b=>2,d=>0,f=>0} b80a8202 b80a8202 b80a8202 b8441140 b80a8202 b80a8202 b8441140 b80a8202 b8441140 - {e=>3,c=>2,a=>36,g=>-3,b=>-1,d=>1,f=>-1} 2457f602 2457f602 2457f602 24e8bf40 2457f602 2457f602 24e8bf40 2457f602 24e8bf40 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>1,a=>2,d=>2,c=>-4,h=>1,b=>1,g=>3,f=>3} 02a1b205 02a1b205 02a1b205 023116c8 02a1b205 02a1b205 023116c8 02a1b205 023116c8 - {e=>-4,a=>-16,d=>-2,c=>2,h=>-3,b=>0,g=>-4,f=>-3} f0905916 f0905916 f0905916 f00b4b28 f0905916 f0905916 f00b4b28 f0905916 f00b4b28 - {e=>-3,a=>86,d=>2,c=>3,h=>-3,b=>0,g=>1,f=>-3} 5698da14 5698da14 5698da14 560d5a68 5698da14 5698da14 560d5a68 5698da14 560d5a68 - {e=>-2,a=>-5,d=>-2,c=>1,h=>2,b=>-1,g=>-4,f=>2} fb8f2d0a fb8f2d0a fb8f2d0a fbe76510 fb8f2d0a fb8f2d0a fbe76510 fb8f2d0a fbe76510 - {e=>3,a=>-13,d=>-3,c=>-2,h=>1,b=>-3,g=>2,f=>-2} f3756705 f3756705 f3756705 f3babc88 f3756705 f3756705 f3babc88 f3756705 f3babc88 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>0,a=>87,d=>-1,c=>-2,h=>-2,b=>-2,g=>1,f=>-3,i=>-3} 57f6d1b8 57f6d1b8 57f6d1b8 57db8a75 57f6d1b8 57f6d1b8 57db8a75 57f6d1b8 57db8a75 - {e=>0,a=>28,d=>-3,c=>-3,h=>1,b=>0,g=>-1,f=>2,i=>1} 1c68a127 1c68a127 1c68a127 1c1685c9 1c68a127 1c68a127 1c1685c9 1c68a127 1c1685c9 - {e=>3,a=>63,d=>3,c=>2,h=>-3,b=>-4,g=>-2,f=>-2,i=>2} 3fd46657 3fd46657 3fd46657 3f89bdaa 3fd46657 3fd46657 3f89bdaa 3fd46657 3f89bdaa - {e=>-4,a=>70,d=>3,c=>-4,h=>2,b=>-1,g=>-2,f=>3,i=>-3} 46e738ab 46e738ab 46e738ab 46f1c795 46e738ab 46e738ab 46f1c795 46e738ab 46f1c795 - {e=>-1,a=>16,d=>-4,c=>0,h=>-1,b=>-2,g=>-2,f=>2,i=>0} 10062f1f 10062f1f 10062f1f 10c275b8 10062f1f 10062f1f 10c275b8 10062f1f 10c275b8 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>3,a=>-82,d=>-3,j=>-4,c=>-2,h=>0,b=>-3,g=>2,f=>3,i=>0} ae75370104000000 ae75370104000000 ae75370104000000 aebab68080000000 ae75370104000000 ae75370104000000 aebab68080000000 ae75370104000000 aebab68080000000 - {e=>-2,a=>-73,d=>0,j=>-3,c=>-2,h=>2,b=>-4,g=>0,f=>0,i=>0} b7340c0805000000 b7340c0805000000 b7340c0805000000 b7986010a0000000 b7340c0805000000 b7340c0805000000 b7986010a0000000 b7340c0805000000 b7986010a0000000 - {e=>2,a=>-108,d=>3,j=>2,c=>2,h=>3,b=>1,g=>-1,f=>-2,i=>3} 94d1e46f02000000 94d1e46f02000000 94d1e46f02000000 9429addb40000000 94d1e46f02000000 94d1e46f02000000 9429addb40000000 94d1e46f02000000 9429addb40000000 - {e=>-1,a=>-101,d=>1,j=>2,c=>-4,h=>0,b=>2,g=>-1,f=>-3,i=>2} 9b62de4302000000 9b62de4302000000 9b62de4302000000 9b50fbc240000000 9b62de4302000000 9b62de4302000000 9b50fbc240000000 9b62de4302000000 9b50fbc240000000 - {e=>2,a=>67,d=>-1,j=>-1,c=>-4,h=>-4,b=>1,g=>-4,f=>-1,i=>-3} 43e175b207000000 43e175b207000000 43e175b207000000 4333af25e0000000 43e175b207000000 43e175b207000000 4333af25e0000000 43e175b207000000 4333af25e0000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-3,a=>-38,d=>-4,j=>0,c=>1,k=>3,h=>-1,b=>3,g=>-2,f=>2,i=>0} da0b2b1f18000000 da0b2b1f18000000 da0b2b1f18000000 da6655b80c000000 da0b2b1f18000000 da0b2b1f18000000 da6655b80c000000 da0b2b1f18000000 da6655b80c000000 - {e=>2,a=>-104,d=>-4,j=>-2,c=>2,k=>1,h=>0,b=>3,g=>1,f=>1,i=>-2} 981395c00e000000 981395c00e000000 981395c00e000000 986a2246c4000000 981395c00e000000 981395c00e000000 986a2246c4000000 981395c00e000000 986a2246c4000000 - {e=>-1,a=>-37,d=>-1,j=>-3,c=>-4,k=>-4,h=>-1,b=>1,g=>-3,f=>-4,i=>0} dbe1cf1e25000000 dbe1cf1e25000000 dbe1cf1e25000000 db33f978b0000000 dbe1cf1e25000000 dbe1cf1e25000000 db33f978b0000000 dbe1cf1e25000000 db33f978b0000000 - {e=>1,a=>93,d=>3,j=>0,c=>0,k=>0,h=>-2,b=>1,g=>3,f=>2,i=>1} 5dc1a23900000000 5dc1a23900000000 5dc1a23900000000 5d2194f100000000 5dc1a23900000000 5dc1a23900000000 5d2194f100000000 5dc1a23900000000 5d2194f100000000 - {e=>3,a=>41,d=>2,j=>-2,c=>3,k=>-1,h=>-3,b=>0,g=>-1,f=>0,i=>3} 299886773e000000 299886773e000000 299886773e000000 290d31ebdc000000 299886773e000000 299886773e000000 290d31ebdc000000 299886773e000000 290d31ebdc000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-1,a=>104,d=>3,j=>-3,l=>1,c=>-3,k=>3,h=>-2,b=>3,g=>-4,f=>-2,i=>-1} 68eb6efa5d000000 68eb6efa5d000000 68eb6efa5d000000 6875fd37ac800000 68eb6efa5d000000 68eb6efa5d000000 6875fd37ac800000 68eb6efa5d000000 6875fd37ac800000 - {e=>-1,a=>-32,d=>2,j=>-3,l=>3,c=>0,k=>0,h=>-2,b=>-2,g=>1,f=>0,i=>0} e0868e18c5000000 e0868e18c5000000 e0868e18c5000000 e0c17070a1800000 e0868e18c5000000 e0868e18c5000000 e0c17070a1800000 e0868e18c5000000 e0c17070a1800000 - {e=>0,a=>-7,d=>2,j=>3,l=>3,c=>2,k=>1,h=>-4,b=>1,g=>-3,f=>-3,i=>-2} f991d0d2cb000000 f991d0d2cb000000 f991d0d2cb000000 f9290b6665800000 f991d0d2cb000000 f991d0d2cb000000 f9290b6665800000 f991d0d2cb000000 f9290b6665800000 - {e=>-1,a=>78,d=>0,j=>1,l=>-2,c=>-2,k=>3,h=>1,b=>-2,g=>1,f=>1,i=>0} 4e369e0499010000 4e369e0499010000 4e369e0499010000 4ed872482f000000 4e369e0499010000 4e369e0499010000 4ed872482f000000 4e369e0499010000 4ed872482f000000 - {e=>2,a=>-39,d=>-4,j=>-4,l=>2,c=>3,k=>-1,h=>1,b=>2,g=>-3,f=>-2,i=>0} d91ae506bc000000 d91ae506bc000000 d91ae506bc000000 d94e2d489d000000 d91ae506bc000000 d91ae506bc000000 d94e2d489d000000 d91ae506bc000000 d94e2d489d000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>-4,a=>4,m=>-2,d=>-4,j=>2,l=>-2,c=>0,k=>1,h=>1,b=>2,g=>-3,f=>2,i=>1} 0402a9268a0d0000 0402a9268a0d0000 0402a9268a0d0000 0442454947600000 0402a9268a0d0000 0402a9268a0d0000 0442454947600000 0402a9268a0d0000 0442454947600000 - {e=>-1,a=>-76,m=>-1,d=>1,j=>0,l=>-1,c=>-4,k=>3,h=>-1,b=>-1,g=>2,f=>0,i=>-3} b4670ebdd80f0000 b4670ebdd80f0000 b4670ebdd80f0000 b4f0f0bd0ff00000 b4670ebdd80f0000 b4670ebdd80f0000 b4f0f0bd0ff00000 b4670ebdd80f0000 b4f0f0bd0ff00000 - {e=>3,a=>64,m=>-2,d=>-2,j=>-1,l=>1,c=>2,k=>2,h=>2,b=>1,g=>-2,f=>3,i=>-2} 409137cb570c0000 409137cb570c0000 409137cb570c0000 402b3796e8e00000 409137cb570c0000 409137cb570c0000 402b3796e8e00000 409137cb570c0000 402b3796e8e00000 - {e=>0,a=>13,m=>1,d=>-3,j=>0,l=>-3,c=>-4,k=>0,h=>-3,b=>0,g=>2,f=>3,i=>-1} 0d6031f540030000 0d6031f540030000 0d6031f540030000 0d1286af02900000 0d6031f540030000 0d6031f540030000 0d1286af02900000 0d6031f540030000 0d1286af02900000 - {e=>-3,a=>-31,m=>3,d=>3,j=>-3,l=>-3,c=>-3,k=>1,h=>-3,b=>-1,g=>3,f=>0,i=>-2} e1ef8ad54d070000 e1ef8ad54d070000 e1ef8ad54d070000 e1f5d0eea6b00000 e1ef8ad54d070000 e1ef8ad54d070000 e1f5d0eea6b00000 e1ef8ad54d070000 e1f5d0eea6b00000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>3,n=>0,a=>68,m=>2,d=>2,j=>-1,l=>0,c=>-1,k=>0,h=>-4,b=>-3,g=>2,f=>-2,i=>2} 44bd665107040000 44bd665107040000 44bd665107040000 44bd3ca2e0200000 44bd665107040000 44bd665107040000 44bd3ca2e0200000 44bd665107040000 44bd3ca2e0200000 - {e=>-3,n=>-2,a=>83,m=>3,d=>-3,j=>0,l=>-4,c=>-3,k=>-3,h=>0,b=>2,g=>-4,f=>-1,i=>2} 536a7b4228670000 536a7b4228670000 536a7b4228670000 5356df02163c0000 536a7b4228670000 536a7b4228670000 5356df02163c0000 536a7b4228670000 5356df02163c0000 - {e=>-4,n=>-1,a=>-51,m=>3,d=>-2,j=>-3,l=>-4,c=>3,k=>0,h=>2,b=>0,g=>0,f=>-3,i=>-3} cd9859a805770000 cd9859a805770000 cd9859a805770000 cd0f4a15a23e0000 cd9859a805770000 cd9859a805770000 cd0f4a15a23e0000 cd9859a805770000 cd0f4a15a23e0000 - {e=>-4,n=>-2,a=>53,m=>2,d=>0,j=>-4,l=>-1,c=>2,k=>-4,h=>-2,b=>0,g=>-1,f=>2,i=>1} 3510a83be4650000 3510a83be4650000 3510a83be4650000 350845f193ac0000 3510a83be4650000 3510a83be4650000 350845f193ac0000 3510a83be4650000 350845f193ac0000 - {e=>-4,n=>-4,a=>-114,m=>-1,d=>-1,j=>0,l=>3,c=>-1,k=>3,h=>1,b=>0,g=>1,f=>-4,i=>0} 8ef8c904d84e0000 8ef8c904d84e0000 8ef8c904d84e0000 8e1fc8480df80000 8ef8c904d84e0000 8ef8c904d84e0000 8e1fc8480df80000 8ef8c904d84e0000 8e1fc8480df80000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>2,n=>2,a=>81,m=>3,d=>2,j=>0,l=>1,c=>-2,k=>-1,h=>3,b=>-2,g=>-1,f=>3,o=>64,i=>2} 51b6b44f7826000040000000 51b6b44f7826000040000000 51b6b44f7826000040000000 51d927da1cb4000000000040 51b6b44f7826000040000000 51b6b44f7826000040000000 51d927da1cb4000000000040 51b6b44f7826000040000000 51d927da1cb4000000000040 - {e=>-3,n=>0,a=>114,m=>0,d=>1,j=>-1,l=>-4,c=>1,k=>0,h=>-3,b=>3,g=>-4,f=>-3,o=>31,i=>2} 724b5a56070100001f000000 724b5a56070100001f000000 724b5a56070100001f000000 7264db2ae20000000000001f 724b5a56070100001f000000 724b5a56070100001f000000 7264db2ae20000000000001f 724b5a56070100001f000000 7264db2ae20000000000001f - {e=>-2,n=>2,a=>-90,m=>-1,d=>-2,j=>1,l=>2,c=>-1,k=>-2,h=>-2,b=>-3,g=>2,f=>3,o=>11,i=>-2} a6bd3dd9b12e00000b000000 a6bd3dd9b12e00000b000000 a6bd3dd9b12e00000b000000 a6bf66b6397400000000000b a6bd3dd9b12e00000b000000 a6bd3dd9b12e00000b000000 a6bf66b6397400000000000b a6bd3dd9b12e00000b000000 a6bf66b6397400000000000b - {e=>-4,n=>1,a=>-83,m=>2,d=>0,j=>-3,l=>3,c=>-3,k=>0,h=>0,b=>0,g=>-3,f=>-3,o=>-60,i=>-1} ad28d8e2c5140000c4ffffff ad28d8e2c5140000c4ffffff ad28d8e2c5140000c4ffffff ad144b47a1a20000ffffffc4 ad28d8e2c5140000c4ffffff ad28d8e2c5140000c4ffffff ad144b47a1a20000ffffffc4 ad28d8e2c5140000c4ffffff ad144b47a1a20000ffffffc4 - {e=>3,n=>0,a=>-38,m=>-4,d=>2,j=>-3,l=>-4,c=>-2,k=>-4,h=>-3,b=>0,g=>-4,f=>-4,o=>-32,i=>-4} dab0469625090000e0ffffff dab0469625090000e0ffffff dab0469625090000e0ffffff da19392cb2400000ffffffe0 dab0469625090000e0ffffff dab0469625090000e0ffffff da19392cb2400000ffffffe0 dab0469625090000e0ffffff da19392cb2400000ffffffe0 = struct int_wrap { short a; int b:3; }; - {a=>69,b=>-1} 45000700 45000700 45000700 0045e000 45000700 45000700 0045e000 45000700 0045e000 - {a=>50,b=>1} 32000100 32000100 32000100 00322000 32000100 32000100 00322000 32000100 00322000 - {a=>40,b=>0} 28000000 28000000 28000000 00280000 28000000 28000000 00280000 28000000 00280000 - {a=>-10,b=>-4} f6ff0400 f6ff0400 f6ff0400 fff68000 f6ff0400 f6ff0400 fff68000 f6ff0400 fff68000 - {a=>-64,b=>-1} c0ff0700 c0ff0700 c0ff0700 ffc0e000 c0ff0700 c0ff0700 ffc0e000 c0ff0700 ffc0e000 = struct int_wrap { short a; int b:3; int c:3; }; - {c=>0,a=>106,b=>-1} 6a000700 6a000700 6a000700 006ae000 6a000700 6a000700 006ae000 6a000700 006ae000 - {c=>-3,a=>112,b=>0} 70002800 70002800 70002800 00701400 70002800 70002800 00701400 70002800 00701400 - {c=>-1,a=>75,b=>-4} 4b003c00 4b003c00 4b003c00 004b9c00 4b003c00 4b003c00 004b9c00 4b003c00 004b9c00 - {c=>1,a=>-46,b=>1} d2ff0900 d2ff0900 d2ff0900 ffd22400 d2ff0900 d2ff0900 ffd22400 d2ff0900 ffd22400 - {c=>-4,a=>22,b=>-4} 16002400 16002400 16002400 00169000 16002400 16002400 00169000 16002400 00169000 = struct int_wrap { short a; int b:3; int c:3; int d:3; }; - {c=>0,a=>-84,b=>-2,d=>-1} acffc601 acffc601 acffc601 ffacc380 acffc601 acffc601 ffacc380 acffc601 ffacc380 - {c=>0,a=>-79,b=>2,d=>-1} b1ffc201 b1ffc201 b1ffc201 ffb14380 b1ffc201 b1ffc201 ffb14380 b1ffc201 ffb14380 - {c=>-2,a=>102,b=>2,d=>0} 66003200 66003200 66003200 00665800 66003200 66003200 00665800 66003200 00665800 - {c=>-4,a=>117,b=>-3,d=>-2} 7500a501 7500a501 7500a501 0075b300 7500a501 7500a501 0075b300 7500a501 0075b300 - {c=>-1,a=>-97,b=>-1,d=>-2} 9fffbf01 9fffbf01 9fffbf01 ff9fff00 9fffbf01 9fffbf01 ff9fff00 9fffbf01 ff9fff00 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; }; - {e=>-1,c=>-2,a=>63,b=>0,d=>-4} 3f00300f 3f00300f 3f00300f 003f1a70 3f00300f 3f00300f 003f1a70 3f00300f 003f1a70 - {e=>2,c=>-1,a=>-22,b=>-2,d=>2} eaffbe04 eaffbe04 eaffbe04 ffeadd20 eaffbe04 eaffbe04 ffeadd20 eaffbe04 ffeadd20 - {e=>0,c=>1,a=>-97,b=>0,d=>3} 9fffc800 9fffc800 9fffc800 ff9f0580 9fffc800 9fffc800 ff9f0580 9fffc800 ff9f0580 - {e=>0,c=>-3,a=>-3,b=>-3,d=>3} fdffed00 fdffed00 fdffed00 fffdb580 fdffed00 fdffed00 fffdb580 fdffed00 fffdb580 - {e=>-2,c=>0,a=>-35,b=>-1,d=>-1} ddffc70d ddffc70d ddffc70d ffdde3e0 ddffc70d ddffc70d ffdde3e0 ddffc70d ffdde3e0 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-3,c=>0,a=>-77,b=>-2,d=>3,f=>3} b3ffc63a b3ffc63a b3ffc63a ffb3c1d6 b3ffc63a b3ffc63a ffb3c1d6 b3ffc63a ffb3c1d6 - {e=>-2,c=>1,a=>108,b=>2,d=>1,f=>2} 6c004a2c 6c004a2c 6c004a2c 006c44e4 6c004a2c 6c004a2c 006c44e4 6c004a2c 006c44e4 - {e=>-3,c=>3,a=>-37,b=>-2,d=>-3,f=>2} dbff5e2b dbff5e2b dbff5e2b ffdbced4 dbff5e2b dbff5e2b ffdbced4 dbff5e2b ffdbced4 - {e=>-2,c=>3,a=>-8,b=>-3,d=>-1,f=>-1} f8ffdd7d f8ffdd7d f8ffdd7d fff8afee f8ffdd7d f8ffdd7d fff8afee f8ffdd7d fff8afee - {e=>3,c=>-1,a=>-111,b=>-4,d=>-2,f=>-2} 91ffbc67 91ffbc67 91ffbc67 ff919f3c 91ffbc67 91ffbc67 ff919f3c 91ffbc67 ff919f3c = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-2,c=>1,a=>81,g=>-3,b=>2,d=>-3,f=>3} 51004a3d05000000 51004a3d05000000 51004a3d05000000 005146e6a0000000 51004a3d05000000 51004a3d05000000 005146e6a0000000 51004a3d05000000 005146e6a0000000 - {e=>1,c=>-2,a=>75,g=>-3,b=>-4,d=>-3,f=>-1} 4b00747305000000 4b00747305000000 4b00747305000000 004b9a9ea0000000 4b00747305000000 4b00747305000000 004b9a9ea0000000 4b00747305000000 004b9a9ea0000000 - {e=>1,c=>-4,a=>54,g=>-4,b=>-1,d=>-4,f=>-4} 3600274304000000 3600274304000000 3600274304000000 0036f21880000000 3600274304000000 3600274304000000 0036f21880000000 3600274304000000 0036f21880000000 - {e=>-1,c=>-2,a=>82,g=>3,b=>1,d=>-4,f=>-3} 5200315f03000000 5200315f03000000 5200315f03000000 00523a7a60000000 5200315f03000000 5200315f03000000 00523a7a60000000 5200315f03000000 00523a7a60000000 - {e=>0,c=>-2,a=>-94,g=>3,b=>-1,d=>-4,f=>3} a2ff373103000000 a2ff373103000000 a2ff373103000000 ffa2fa0660000000 a2ff373103000000 a2ff373103000000 ffa2fa0660000000 a2ff373103000000 ffa2fa0660000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>-2,a=>-123,d=>2,c=>3,h=>0,b=>2,g=>2,f=>-2} 85ff9a6c02000000 85ff9a6c02000000 85ff9a6c02000000 ff854d6c40000000 85ff9a6c02000000 85ff9a6c02000000 ff854d6c40000000 85ff9a6c02000000 ff854d6c40000000 - {e=>-4,a=>-75,d=>-2,c=>2,h=>-3,b=>0,g=>-4,f=>0} b5ff90092c000000 b5ff90092c000000 b5ff90092c000000 ffb50b4094000000 b5ff90092c000000 b5ff90092c000000 ffb50b4094000000 b5ff90092c000000 ffb50b4094000000 - {e=>-1,a=>-85,d=>0,c=>-4,h=>-4,b=>1,g=>-2,f=>-4} abff214e26000000 abff214e26000000 abff214e26000000 ffab3078d0000000 abff214e26000000 abff214e26000000 ffab3078d0000000 abff214e26000000 ffab3078d0000000 - {e=>-4,a=>94,d=>-1,c=>-4,h=>2,b=>-2,g=>-2,f=>3} 5e00e63916000000 5e00e63916000000 5e00e63916000000 005ed3c6c8000000 5e00e63916000000 5e00e63916000000 005ed3c6c8000000 5e00e63916000000 005ed3c6c8000000 - {e=>1,a=>26,d=>-3,c=>-3,h=>-3,b=>2,g=>-4,f=>2} 1a006a232c000000 1a006a232c000000 1a006a232c000000 001a569494000000 1a006a232c000000 1a006a232c000000 001a569494000000 1a006a232c000000 001a569494000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>-4,a=>-127,d=>1,c=>0,h=>3,b=>1,g=>-1,f=>3,i=>3} 81ff4138df000000 81ff4138df000000 81ff4138df000000 ff8120c6ed800000 81ff4138df000000 81ff4138df000000 ff8120c6ed800000 81ff4138df000000 ff8120c6ed800000 - {e=>-2,a=>-73,d=>-3,c=>1,h=>-3,b=>-1,g=>3,f=>-3,i=>-4} b7ff4f5d2b010000 b7ff4f5d2b010000 b7ff4f5d2b010000 ffb7e6ea76000000 b7ff4f5d2b010000 b7ff4f5d2b010000 ffb7e6ea76000000 b7ff4f5d2b010000 ffb7e6ea76000000 - {e=>-4,a=>-22,d=>2,c=>-4,h=>3,b=>2,g=>0,f=>3,i=>-2} eaffa23898010000 eaffa23898010000 eaffa23898010000 ffea51460f000000 eaffa23898010000 eaffa23898010000 ffea51460f000000 eaffa23898010000 ffea51460f000000 - {e=>3,a=>-124,d=>3,c=>2,h=>3,b=>0,g=>0,f=>2,i=>2} 84ffd02698000000 84ffd02698000000 84ffd02698000000 ff8409b40d000000 84ffd02698000000 84ffd02698000000 ff8409b40d000000 84ffd02698000000 ff8409b40d000000 - {e=>2,a=>115,d=>3,c=>1,h=>-3,b=>2,g=>3,f=>-1,i=>0} 7300ca742b000000 7300ca742b000000 7300ca742b000000 007345ae74000000 7300ca742b000000 7300ca742b000000 007345ae74000000 7300ca742b000000 007345ae74000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-4,a=>-21,d=>-2,j=>-2,c=>-1,h=>-1,b=>-2,g=>-2,f=>-3,i=>1} ebffbe597e0c0000 ebffbe597e0c0000 ebffbe597e0c0000 ffebdf4adce00000 ebffbe597e0c0000 ebffbe597e0c0000 ffebdf4adce00000 ebffbe597e0c0000 ffebdf4adce00000 - {e=>-3,a=>71,d=>1,j=>-1,c=>2,h=>0,b=>-4,g=>1,f=>-4,i=>-4} 4700544a010f0000 4700544a010f0000 4700544a010f0000 004788d822700000 4700544a010f0000 4700544a010f0000 004788d822700000 4700544a010f0000 004788d822700000 - {e=>-2,a=>-5,d=>-3,j=>3,c=>-3,h=>1,b=>-3,g=>3,f=>2,i=>-1} fbff6d2dcb070000 fbff6d2dcb070000 fbff6d2dcb070000 fffbb6e467b00000 fbff6d2dcb070000 fbff6d2dcb070000 fffbb6e467b00000 fbff6d2dcb070000 fffbb6e467b00000 - {e=>1,a=>-46,d=>3,j=>-2,c=>3,h=>-4,b=>-4,g=>-3,f=>-2,i=>0} d2ffdc62250c0000 d2ffdc62250c0000 d2ffdc62250c0000 ffd28d9cb0600000 d2ffdc62250c0000 d2ffdc62250c0000 ffd28d9cb0600000 d2ffdc62250c0000 ffd28d9cb0600000 - {e=>2,a=>-69,d=>-4,j=>0,c=>3,h=>3,b=>1,g=>2,f=>-2,i=>2} bbff19659a000000 bbff19659a000000 bbff19659a000000 ffbb2e2c4d000000 bbff19659a000000 bbff19659a000000 ffbb2e2c4d000000 bbff19659a000000 ffbb2e2c4d000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>3,a=>-20,d=>2,j=>-2,c=>-4,k=>3,h=>-1,b=>-1,g=>-2,f=>-4,i=>-3} ecffa7467e3d0000 ecffa7467e3d0000 ecffa7467e3d0000 ffecf138dee60000 ecffa7467e3d0000 ecffa7467e3d0000 ffecf138dee60000 ecffa7467e3d0000 ffecf138dee60000 - {e=>-1,a=>-104,d=>2,j=>-4,c=>1,k=>-2,h=>-1,b=>1,g=>-3,f=>-4,i=>1} 98ff894e7d680000 98ff894e7d680000 98ff894e7d680000 ff982578bccc0000 98ff894e7d680000 98ff894e7d680000 ff982578bccc0000 98ff894e7d680000 ff982578bccc0000 - {e=>3,a=>11,d=>3,j=>0,c=>2,k=>-3,h=>-3,b=>-2,g=>0,f=>-1,i=>-4} 0b00d67628510000 0b00d67628510000 0b00d67628510000 000bc9be160a0000 0b00d67628510000 0b00d67628510000 000bc9be160a0000 0b00d67628510000 000bc9be160a0000 - {e=>-1,a=>102,d=>2,j=>-2,c=>-4,k=>-4,h=>-1,b=>0,g=>-4,f=>-2,i=>2} 6600a06ebc4c0000 6600a06ebc4c0000 6600a06ebc4c0000 0066117c9d680000 6600a06ebc4c0000 6600a06ebc4c0000 0066117c9d680000 6600a06ebc4c0000 0066117c9d680000 - {e=>0,a=>-79,d=>-3,j=>-1,c=>0,k=>-2,h=>0,b=>3,g=>1,f=>-3,i=>-3} b1ff4351416f0000 b1ff4351416f0000 b1ff4351416f0000 ffb1628a22fc0000 b1ff4351416f0000 b1ff4351416f0000 ffb1628a22fc0000 b1ff4351416f0000 ffb1628a22fc0000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>-109,d=>-4,j=>-3,l=>-4,c=>-4,k=>-4,h=>-1,b=>1,g=>-1,f=>-4,i=>1} 93ff214b7f4a0200 93ff214b7f4a0200 93ff214b7f4a0200 ff933258fcd90000 93ff214b7f4a0200 93ff214b7f4a0200 ff933258fcd90000 93ff214b7f4a0200 ff933258fcd90000 - {e=>1,a=>-37,d=>-3,j=>-2,l=>-3,c=>2,k=>-3,h=>-4,b=>3,g=>-1,f=>-4,i=>-2} dbff5343a7dd0200 dbff5343a7dd0200 dbff5343a7dd0200 ffdb6a98f36b4000 dbff5343a7dd0200 dbff5343a7dd0200 ffdb6a98f36b4000 dbff5343a7dd0200 ffdb6a98f36b4000 - {e=>-3,a=>-27,d=>-3,j=>-2,l=>-3,c=>1,k=>1,h=>-2,b=>-4,g=>1,f=>3,i=>-4} e5ff4c3b319d0200 e5ff4c3b319d0200 e5ff4c3b319d0200 ffe586d63a634000 e5ff4c3b319d0200 e5ff4c3b319d0200 ffe586d63a634000 e5ff4c3b319d0200 ffe586d63a634000 - {e=>3,a=>-69,d=>-3,j=>-3,l=>-1,c=>-3,k=>1,h=>2,b=>3,g=>2,f=>0,i=>3} bbff6b07d29a0300 bbff6b07d29a0300 bbff6b07d29a0300 ffbb76b049d3c000 bbff6b07d29a0300 bbff6b07d29a0300 ffbb76b049d3c000 bbff6b07d29a0300 ffbb76b049d3c000 - {e=>0,a=>-52,d=>1,j=>2,l=>1,c=>-3,k=>-4,h=>0,b=>-3,g=>3,f=>-3,i=>0} ccff6d5003c40000 ccff6d5003c40000 ccff6d5003c40000 ffccb48a60284000 ccff6d5003c40000 ccff6d5003c40000 ffccb48a60284000 ccff6d5003c40000 ffccb48a60284000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>1,a=>-21,m=>-3,d=>-4,j=>-2,l=>2,c=>-4,k=>-2,h=>-4,b=>-4,g=>2,f=>-1,i=>2} ebff2473a26c1500 ebff2473a26c1500 ebff2473a26c1500 ffeb921e516ca800 ebff2473a26c1500 ebff2473a26c1500 ffeb921e516ca800 ebff2473a26c1500 ffeb921e516ca800 - {e=>-1,a=>-68,m=>-2,d=>-2,j=>0,l=>1,c=>3,k=>2,h=>-3,b=>0,g=>3,f=>-3,i=>0} bcff985f2ba01800 bcff985f2ba01800 bcff985f2ba01800 ffbc0f7a74047000 bcff985f2ba01800 bcff985f2ba01800 ffbc0f7a74047000 bcff985f2ba01800 ffbc0f7a74047000 - {e=>-1,a=>-32,m=>-3,d=>0,j=>1,l=>2,c=>2,k=>-2,h=>0,b=>0,g=>-2,f=>-2,i=>-3} e0ff106e46631500 e0ff106e46631500 e0ff106e46631500 ffe0087cc29ca800 e0ff106e46631500 e0ff106e46631500 ffe0087cc29ca800 e0ff106e46631500 ffe0087cc29ca800 - {e=>1,a=>-68,m=>0,d=>1,j=>-3,l=>3,c=>-4,k=>2,h=>-4,b=>0,g=>3,f=>-1,i=>2} bcff6072a3aa0100 bcff6072a3aa0100 bcff6072a3aa0100 ffbc109e7154c000 bcff6072a3aa0100 bcff6072a3aa0100 ffbc109e7154c000 bcff6072a3aa0100 ffbc109e7154c000 - {e=>-4,a=>-109,m=>-4,d=>2,j=>2,l=>-1,c=>-2,k=>2,h=>-1,b=>-4,g=>-1,f=>0,i=>-2} 93ffb408bfa51300 93ffb408bfa51300 93ffb408bfa51300 ff939940ff25e000 93ffb408bfa51300 93ffb408bfa51300 ff939940ff25e000 93ffb408bfa51300 ff939940ff25e000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>-2,n=>-4,a=>79,m=>-3,d=>3,j=>-2,l=>2,c=>-4,k=>-1,h=>0,b=>-1,g=>-4,f=>-4,i=>-4} 4f00e74c047d9500 4f00e74c047d9500 4f00e74c047d9500 004ff1e8826eac00 4f00e74c047d9500 4f00e74c047d9500 004ff1e8826eac00 4f00e74c047d9500 004ff1e8826eac00 - {e=>3,n=>0,a=>-114,m=>-3,d=>-1,j=>2,l=>-1,c=>0,k=>1,h=>0,b=>-1,g=>-1,f=>3,i=>0} 8effc73707941700 8effc73707941700 8effc73707941700 ff8ee3b6e023e800 8effc73707941700 8effc73707941700 ff8ee3b6e023e800 8effc73707941700 ff8ee3b6e023e800 - {e=>1,n=>0,a=>-17,m=>-1,d=>1,j=>2,l=>-2,c=>-4,k=>3,h=>-4,b=>-3,g=>-3,f=>0,i=>0} efff650225341f00 efff650225341f00 efff650225341f00 ffefb090b027b800 efff650225341f00 efff650225341f00 ffefb090b027b800 efff650225341f00 ffefb090b027b800 - {e=>2,n=>2,a=>-31,m=>0,d=>-4,j=>2,l=>-1,c=>0,k=>-2,h=>-1,b=>-3,g=>-4,f=>-2,i=>-1} e1ff0565fce54300 e1ff0565fce54300 e1ff0565fce54300 ffe1a22c9fadc200 e1ff0565fce54300 e1ff0565fce54300 ffe1a22c9fadc200 e1ff0565fce54300 ffe1a22c9fadc200 - {e=>-4,n=>3,a=>-41,m=>1,d=>-1,j=>0,l=>-2,c=>1,k=>-1,h=>-2,b=>1,g=>0,f=>0,i=>0} d7ffc90930706700 d7ffc90930706700 d7ffc90930706700 ffd727c0180f8b00 d7ffc90930706700 d7ffc90930706700 ffd727c0180f8b00 d7ffc90930706700 ffd727c0180f8b00 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>1,n=>0,a=>69,m=>-1,d=>-4,j=>1,l=>1,c=>-1,k=>-2,h=>-1,b=>-1,g=>-2,f=>-3,o=>1,i=>-1} 45003f53fee31c0001000000 45003f53fee31c0001000000 45003f53fee31c0001000000 0045fe1adf9c780000000001 45003f53fee31c0001000000 45003f53fee31c0001000000 0045fe1adf9c780000000001 45003f53fee31c0001000000 0045fe1adf9c780000000001 - {e=>2,n=>0,a=>-113,m=>3,d=>1,j=>1,l=>-1,c=>0,k=>3,h=>2,b=>-1,g=>-1,f=>-4,o=>-65,i=>-3} 8fff474457b30f00bfffffff 8fff474457b30f00bfffffff 8fff474457b30f00bfffffff ff8fe0a8ea97d800ffffffbf 8fff474457b30f00bfffffff 8fff474457b30f00bfffffff ff8fe0a8ea97d800ffffffbf 8fff474457b30f00bfffffff ff8fe0a8ea97d800ffffffbf - {e=>1,n=>-3,a=>-34,m=>0,d=>-1,j=>3,l=>0,c=>1,k=>3,h=>-1,b=>-1,g=>-1,f=>2,o=>-8,i=>0} deffcf233f36a000f8ffffff deffcf233f36a000f8ffffff deffcf233f36a000f8ffffff ffdee794fc360500fffffff8 deffcf233f36a000f8ffffff deffcf233f36a000f8ffffff ffdee794fc360500fffffff8 deffcf233f36a000f8ffffff ffdee794fc360500fffffff8 - {e=>3,n=>1,a=>84,m=>-2,d=>1,j=>1,l=>1,c=>2,k=>3,h=>3,b=>3,g=>-4,f=>3,o=>115,i=>-3} 540053365cb3380073000000 540053365cb3380073000000 540053365cb3380073000000 005468b68e96710000000073 540053365cb3380073000000 540053365cb3380073000000 005468b68e96710000000073 540053365cb3380073000000 005468b68e96710000000073 - {e=>3,n=>0,a=>-51,m=>-3,d=>-3,j=>2,l=>0,c=>3,k=>2,h=>0,b=>1,g=>1,f=>3,o=>-72,i=>-3} cdff593741251400b8ffffff cdff593741251400b8ffffff cdff593741251400b8ffffff ffcd2eb622a42800ffffffb8 cdff593741251400b8ffffff cdff593741251400b8ffffff ffcd2eb622a42800ffffffb8 cdff593741251400b8ffffff ffcd2eb622a42800ffffffb8 = struct int_wrap { int a; int b:3; }; - {a=>-84,b=>-2} acffffff06000000 acffffff06000000 acffffff06000000 ffffffacc0000000 acffffff06000000 acffffff06000000 ffffffacc0000000 acffffff06000000 ffffffacc0000000 - {a=>71,b=>2} 4700000002000000 4700000002000000 4700000002000000 0000004740000000 4700000002000000 4700000002000000 0000004740000000 4700000002000000 0000004740000000 - {a=>-81,b=>0} afffffff00000000 afffffff00000000 afffffff00000000 ffffffaf00000000 afffffff00000000 afffffff00000000 ffffffaf00000000 afffffff00000000 ffffffaf00000000 - {a=>-113,b=>-3} 8fffffff05000000 8fffffff05000000 8fffffff05000000 ffffff8fa0000000 8fffffff05000000 8fffffff05000000 ffffff8fa0000000 8fffffff05000000 ffffff8fa0000000 - {a=>16,b=>-1} 1000000007000000 1000000007000000 1000000007000000 00000010e0000000 1000000007000000 1000000007000000 00000010e0000000 1000000007000000 00000010e0000000 = struct int_wrap { int a; int b:3; int c:3; }; - {c=>-3,a=>53,b=>-4} 350000002c000000 350000002c000000 350000002c000000 0000003594000000 350000002c000000 350000002c000000 0000003594000000 350000002c000000 0000003594000000 - {c=>-3,a=>67,b=>-4} 430000002c000000 430000002c000000 430000002c000000 0000004394000000 430000002c000000 430000002c000000 0000004394000000 430000002c000000 0000004394000000 - {c=>1,a=>102,b=>2} 660000000a000000 660000000a000000 660000000a000000 0000006644000000 660000000a000000 660000000a000000 0000006644000000 660000000a000000 0000006644000000 - {c=>0,a=>-10,b=>1} f6ffffff01000000 f6ffffff01000000 f6ffffff01000000 fffffff620000000 f6ffffff01000000 f6ffffff01000000 fffffff620000000 f6ffffff01000000 fffffff620000000 - {c=>0,a=>-76,b=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 ffffffb400000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; }; - {c=>-1,a=>-33,b=>-1,d=>-1} dfffffffff010000 dfffffffff010000 dfffffffff010000 ffffffdfff800000 dfffffffff010000 dfffffffff010000 ffffffdfff800000 dfffffffff010000 ffffffdfff800000 - {c=>-4,a=>-87,b=>2,d=>-1} a9ffffffe2010000 a9ffffffe2010000 a9ffffffe2010000 ffffffa953800000 a9ffffffe2010000 a9ffffffe2010000 ffffffa953800000 a9ffffffe2010000 ffffffa953800000 - {c=>3,a=>19,b=>0,d=>3} 13000000d8000000 13000000d8000000 13000000d8000000 000000130d800000 13000000d8000000 13000000d8000000 000000130d800000 13000000d8000000 000000130d800000 - {c=>-4,a=>39,b=>0,d=>-1} 27000000e0010000 27000000e0010000 27000000e0010000 0000002713800000 27000000e0010000 27000000e0010000 0000002713800000 27000000e0010000 0000002713800000 - {c=>0,a=>-2,b=>3,d=>-4} feffffff03010000 feffffff03010000 feffffff03010000 fffffffe62000000 feffffff03010000 feffffff03010000 fffffffe62000000 feffffff03010000 fffffffe62000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; }; - {e=>1,c=>2,a=>-32,b=>1,d=>-2} e0ffffff91030000 e0ffffff91030000 e0ffffff91030000 ffffffe02b100000 e0ffffff91030000 e0ffffff91030000 ffffffe02b100000 e0ffffff91030000 ffffffe02b100000 - {e=>-4,c=>0,a=>12,b=>0,d=>2} 0c00000080080000 0c00000080080000 0c00000080080000 0000000c01400000 0c00000080080000 0c00000080080000 0000000c01400000 0c00000080080000 0000000c01400000 - {e=>-2,c=>1,a=>74,b=>0,d=>0} 4a000000080c0000 4a000000080c0000 4a000000080c0000 0000004a04600000 4a000000080c0000 4a000000080c0000 0000004a04600000 4a000000080c0000 0000004a04600000 - {e=>-3,c=>3,a=>-43,b=>-1,d=>-1} d5ffffffdf0b0000 d5ffffffdf0b0000 d5ffffffdf0b0000 ffffffd5efd00000 d5ffffffdf0b0000 d5ffffffdf0b0000 ffffffd5efd00000 d5ffffffdf0b0000 ffffffd5efd00000 - {e=>3,c=>3,a=>67,b=>1,d=>-1} 43000000d9070000 43000000d9070000 43000000d9070000 000000432fb00000 43000000d9070000 43000000d9070000 000000432fb00000 43000000d9070000 000000432fb00000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>0,c=>3,a=>-63,b=>2,d=>0,f=>1} c1ffffff1a100000 c1ffffff1a100000 c1ffffff1a100000 ffffffc14c020000 c1ffffff1a100000 c1ffffff1a100000 ffffffc14c020000 c1ffffff1a100000 ffffffc14c020000 - {e=>3,c=>3,a=>-76,b=>-1,d=>-4,f=>3} b4ffffff1f370000 b4ffffff1f370000 b4ffffff1f370000 ffffffb4ee360000 b4ffffff1f370000 b4ffffff1f370000 ffffffb4ee360000 b4ffffff1f370000 ffffffb4ee360000 - {e=>-1,c=>0,a=>45,b=>3,d=>3,f=>0} 2d000000c30e0000 2d000000c30e0000 2d000000c30e0000 0000002d61f00000 2d000000c30e0000 2d000000c30e0000 0000002d61f00000 2d000000c30e0000 0000002d61f00000 - {e=>1,c=>2,a=>117,b=>-1,d=>-3,f=>-2} 7500000057630000 7500000057630000 7500000057630000 00000075ea9c0000 7500000057630000 7500000057630000 00000075ea9c0000 7500000057630000 00000075ea9c0000 - {e=>-3,c=>-1,a=>75,b=>-4,d=>3,f=>3} 4b000000fc3a0000 4b000000fc3a0000 4b000000fc3a0000 0000004b9dd60000 4b000000fc3a0000 4b000000fc3a0000 0000004b9dd60000 4b000000fc3a0000 0000004b9dd60000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>2,c=>0,a=>94,g=>-4,b=>2,d=>2,f=>2} 5e00000082240200 5e00000082240200 5e00000082240200 0000005e41250000 5e00000082240200 5e00000082240200 0000005e41250000 5e00000082240200 0000005e41250000 - {e=>-4,c=>-3,a=>-22,g=>-3,b=>3,d=>3,f=>3} eaffffffebb80200 eaffffffebb80200 eaffffffebb80200 ffffffea75c74000 eaffffffebb80200 eaffffffebb80200 ffffffea75c74000 eaffffffebb80200 ffffffea75c74000 - {e=>3,c=>1,a=>14,g=>0,b=>1,d=>1,f=>1} 0e00000049160000 0e00000049160000 0e00000049160000 0000000e24b20000 0e00000049160000 0e00000049160000 0000000e24b20000 0e00000049160000 0000000e24b20000 - {e=>-3,c=>3,a=>-61,g=>-1,b=>-3,d=>-2,f=>-4} c3ffffff9dcb0300 c3ffffff9dcb0300 c3ffffff9dcb0300 ffffffc3af59c000 c3ffffff9dcb0300 c3ffffff9dcb0300 ffffffc3af59c000 c3ffffff9dcb0300 ffffffc3af59c000 - {e=>-1,c=>-2,a=>28,g=>2,b=>1,d=>0,f=>-3} 1c000000315e0100 1c000000315e0100 1c000000315e0100 0000001c387a8000 1c000000315e0100 1c000000315e0100 0000001c387a8000 1c000000315e0100 0000001c387a8000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>1,a=>115,d=>2,c=>1,h=>0,b=>1,g=>1,f=>3} 7300000089b20000 7300000089b20000 7300000089b20000 0000007325164000 7300000089b20000 7300000089b20000 0000007325164000 7300000089b20000 0000007325164000 - {e=>1,a=>19,d=>-2,c=>-3,h=>2,b=>-1,g=>-1,f=>-1} 13000000aff30b00 13000000aff30b00 13000000aff30b00 00000013f71fd000 13000000aff30b00 13000000aff30b00 00000013f71fd000 13000000aff30b00 00000013f71fd000 - {e=>2,a=>-115,d=>2,c=>-4,h=>0,b=>-2,g=>-3,f=>-3} 8dffffffa6d40200 8dffffffa6d40200 8dffffffa6d40200 ffffff8dd12b4000 8dffffffa6d40200 8dffffffa6d40200 ffffff8dd12b4000 8dffffffa6d40200 ffffff8dd12b4000 - {e=>-1,a=>126,d=>2,c=>-3,h=>2,b=>-4,g=>2,f=>2} 7e000000ac2e0900 7e000000ac2e0900 7e000000ac2e0900 0000007e95749000 7e000000ac2e0900 7e000000ac2e0900 0000007e95749000 7e000000ac2e0900 0000007e95749000 - {e=>3,a=>123,d=>3,c=>0,h=>-4,b=>-2,g=>1,f=>-4} 7b000000c6c61000 7b000000c6c61000 7b000000c6c61000 0000007bc1b86000 7b000000c6c61000 7b000000c6c61000 0000007bc1b86000 7b000000c6c61000 0000007bc1b86000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>0,a=>-116,d=>-4,c=>0,h=>-3,b=>0,g=>-4,f=>3,i=>-1} 8cffffff0031f600 8cffffff0031f600 8cffffff0031f600 ffffff8c02072f00 8cffffff0031f600 8cffffff0031f600 ffffff8c02072f00 8cffffff0031f600 ffffff8c02072f00 - {e=>-1,a=>-120,d=>0,c=>0,h=>-2,b=>2,g=>-1,f=>1,i=>-4} 88ffffff029e9b00 88ffffff029e9b00 88ffffff029e9b00 ffffff884073f400 88ffffff029e9b00 88ffffff029e9b00 ffffff884073f400 88ffffff029e9b00 ffffff884073f400 - {e=>0,a=>89,d=>0,c=>-3,h=>3,b=>-2,g=>0,f=>-1,i=>-4} 590000002e708c00 590000002e708c00 590000002e708c00 00000059d40e1c00 590000002e708c00 590000002e708c00 00000059d40e1c00 590000002e708c00 00000059d40e1c00 - {e=>2,a=>107,d=>-1,c=>0,h=>-4,b=>0,g=>-2,f=>1,i=>2} 6b000000c0155300 6b000000c0155300 6b000000c0155300 0000006b03a3a200 6b000000c0155300 6b000000c0155300 0000006b03a3a200 6b000000c0155300 0000006b03a3a200 - {e=>1,a=>126,d=>-2,c=>-1,h=>-3,b=>1,g=>3,f=>-4,i=>-2} 7e000000b9c3d500 7e000000b9c3d500 7e000000b9c3d500 0000007e3f18ee00 7e000000b9c3d500 7e000000b9c3d500 0000007e3f18ee00 7e000000b9c3d500 0000007e3f18ee00 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-1,a=>-65,d=>2,j=>-4,c=>-2,h=>-4,b=>0,g=>-1,f=>-3,i=>1} bfffffffb0de3304 bfffffffb0de3304 bfffffffb0de3304 ffffffbf197be180 bfffffffb0de3304 bfffffffb0de3304 ffffffbf197be180 bfffffffb0de3304 ffffffbf197be180 - {e=>-4,a=>-87,d=>-1,j=>1,c=>-2,h=>1,b=>3,g=>-2,f=>0,i=>2} a9fffffff3094701 a9fffffff3094701 a9fffffff3094701 ffffffa97bc18a20 a9fffffff3094701 a9fffffff3094701 ffffffa97bc18a20 a9fffffff3094701 ffffffa97bc18a20 - {e=>0,a=>19,d=>0,j=>0,c=>1,h=>1,b=>2,g=>-3,f=>3,i=>3} 130000000ab06600 130000000ab06600 130000000ab06600 0000001344074b00 130000000ab06600 130000000ab06600 0000001344074b00 130000000ab06600 0000001344074b00 - {e=>1,a=>-111,d=>-2,j=>1,c=>3,h=>0,b=>-4,g=>-4,f=>1,i=>0} 91ffffff9c130201 91ffffff9c130201 91ffffff9c130201 ffffff918f130020 91ffffff9c130201 91ffffff9c130201 ffffff918f130020 91ffffff9c130201 ffffff918f130020 - {e=>-1,a=>-103,d=>1,j=>0,c=>-1,h=>-4,b=>2,g=>1,f=>-3,i=>3} 99ffffff7ade7000 99ffffff7ade7000 99ffffff7ade7000 ffffff995cfa6300 99ffffff7ade7000 99ffffff7ade7000 ffffff995cfa6300 99ffffff7ade7000 ffffff995cfa6300 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-3,a=>38,d=>-2,j=>2,c=>-2,k=>1,h=>1,b=>0,g=>0,f=>2,i=>0} 26000000b02b040a 26000000b02b040a 26000000b02b040a 000000261b540844 26000000b02b040a 26000000b02b040a 000000261b540844 26000000b02b040a 000000261b540844 - {e=>2,a=>41,d=>0,j=>-3,c=>1,k=>-2,h=>-3,b=>0,g=>0,f=>0,i=>0} 2900000008041435 2900000008041435 2900000008041435 00000029042028b8 2900000008041435 2900000008041435 00000029042028b8 2900000008041435 00000029042028b8 - {e=>3,a=>107,d=>-3,j=>-1,c=>2,k=>-2,h=>1,b=>0,g=>-1,f=>3,i=>1} 6b00000050b72737 6b00000050b72737 6b00000050b72737 0000006b0ab7c9f8 6b00000050b72737 6b00000050b72737 0000006b0ab7c9f8 6b00000050b72737 0000006b0ab7c9f8 - {e=>3,a=>18,d=>-4,j=>2,c=>-4,k=>-1,h=>-3,b=>-1,g=>-3,f=>-3,i=>-3} 1200000027d7b63a 1200000027d7b63a 1200000027d7b63a 00000012f23b6d5c 1200000027d7b63a 1200000027d7b63a 00000012f23b6d5c 1200000027d7b63a 00000012f23b6d5c - {e=>3,a=>-10,d=>-4,j=>2,c=>1,k=>0,h=>-1,b=>-4,g=>0,f=>1,i=>2} f6ffffff0c175c02 f6ffffff0c175c02 f6ffffff0c175c02 fffffff686323a40 f6ffffff0c175c02 f6ffffff0c175c02 fffffff686323a40 f6ffffff0c175c02 fffffff686323a40 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>1,a=>-91,d=>3,j=>-3,l=>2,c=>2,k=>-1,h=>1,b=>-1,g=>-4,f=>-2,i=>-3} a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 ffffffa5e99d0dbc40000000 a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 ffffffa5e99d0dbc40000000 a5ffffffd762a63d02000000 ffffffa5e99d0dbc40000000 - {e=>-1,a=>-28,d=>0,j=>-4,l=>-3,c=>-2,k=>2,h=>-4,b=>-2,g=>-2,f=>-1,i=>0} e4ffffff367e131405000000 e4ffffff367e131405000000 e4ffffff367e131405000000 ffffffe4d87fa088a0000000 e4ffffff367e131405000000 e4ffffff367e131405000000 ffffffe4d87fa088a0000000 e4ffffff367e131405000000 ffffffe4d87fa088a0000000 - {e=>1,a=>78,d=>-3,j=>-3,l=>-2,c=>1,k=>2,h=>0,b=>-2,g=>0,f=>-2,i=>-3} 4e0000004e63a01506000000 4e0000004e63a01506000000 4e0000004e63a01506000000 0000004ec69c05a8c0000000 4e0000004e63a01506000000 4e0000004e63a01506000000 0000004ec69c05a8c0000000 4e0000004e63a01506000000 0000004ec69c05a8c0000000 - {e=>-2,a=>71,d=>2,j=>-4,l=>-1,c=>-4,k=>2,h=>3,b=>1,g=>0,f=>-1,i=>1} 47000000a17c2c1407000000 47000000a17c2c1407000000 47000000a17c2c1407000000 00000047316e1988e0000000 47000000a17c2c1407000000 47000000a17c2c1407000000 00000047316e1988e0000000 47000000a17c2c1407000000 00000047316e1988e0000000 - {e=>-2,a=>-99,d=>-4,j=>-2,l=>-4,c=>-2,k=>3,h=>-1,b=>1,g=>-4,f=>-1,i=>-1} 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 ffffff9d3a6f3fcc80000000 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 ffffff9d3a6f3fcc80000000 9dffffff317dfe1e04000000 ffffff9d3a6f3fcc80000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>1,a=>11,m=>3,d=>0,j=>-1,l=>2,c=>2,k=>-2,h=>0,b=>2,g=>-1,f=>-4,i=>-3} 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0000000b4819c5f84c000000 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0000000b4819c5f84c000000 0b00000012c2a3371a000000 0000000b4819c5f84c000000 - {e=>3,a=>-31,m=>-1,d=>1,j=>3,l=>1,c=>-3,k=>-4,h=>-3,b=>-3,g=>3,f=>-2,i=>0} e1ffffff6de6152339000000 e1ffffff6de6152339000000 e1ffffff6de6152339000000 ffffffe1b4bce8703c000000 e1ffffff6de6152339000000 e1ffffff6de6152339000000 ffffffe1b4bce8703c000000 e1ffffff6de6152339000000 ffffffe1b4bce8703c000000 - {e=>-1,a=>-107,m=>-1,d=>-4,j=>3,l=>-4,c=>3,k=>-3,h=>3,b=>0,g=>3,f=>-1,i=>2} 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 ffffff950e7eda749c000000 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 ffffff950e7eda749c000000 95ffffff18ff4d2b3c000000 ffffff950e7eda749c000000 - {e=>-3,a=>-123,m=>-3,d=>3,j=>-1,l=>3,c=>2,k=>-2,h=>1,b=>2,g=>-4,f=>-2,i=>-2} 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 ffffff8549dd0ef874000000 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 ffffff8549dd0ef874000000 85ffffffd26ac6372b000000 ffffff8549dd0ef874000000 - {e=>-3,a=>-105,m=>-4,d=>-1,j=>-2,l=>-2,c=>-1,k=>3,h=>-4,b=>3,g=>-1,f=>3,i=>1} 97fffffffbbb331e26000000 97fffffffbbb331e26000000 97fffffffbbb331e26000000 ffffff977fd7e1ccd0000000 97fffffffbbb331e26000000 97fffffffbbb331e26000000 ffffff977fd7e1ccd0000000 97fffffffbbb331e26000000 ffffff977fd7e1ccd0000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>1,n=>2,a=>-70,m=>2,d=>-1,j=>-2,l=>-2,c=>-4,k=>0,h=>-3,b=>-3,g=>-4,f=>0,i=>-2} baffffffe503d60696000000 baffffffe503d60696000000 baffffffe503d60696000000 ffffffbab3912ec0c9000000 baffffffe503d60696000000 baffffffe503d60696000000 ffffffbab3912ec0c9000000 baffffffe503d60696000000 ffffffbab3912ec0c9000000 - {e=>-2,n=>-3,a=>99,m=>1,d=>-4,j=>0,l=>2,c=>-3,k=>2,h=>-4,b=>3,g=>1,f=>3,i=>1} 630000002bbd30104a010000 630000002bbd30104a010000 630000002bbd30104a010000 000000637666610846800000 630000002bbd30104a010000 630000002bbd30104a010000 000000637666610846800000 630000002bbd30104a010000 000000637666610846800000 - {e=>0,n=>-4,a=>-106,m=>2,d=>-4,j=>-1,l=>-3,c=>-1,k=>3,h=>2,b=>-4,g=>2,f=>-1,i=>2} 96ffffff3c71491f15010000 96ffffff3c71491f15010000 96ffffff3c71491f15010000 ffffff969e0e92ecaa000000 96ffffff3c71491f15010000 96ffffff3c71491f15010000 ffffff969e0e92ecaa000000 96ffffff3c71491f15010000 ffffff969e0e92ecaa000000 - {e=>0,n=>1,a=>-37,m=>1,d=>1,j=>-3,l=>-4,c=>0,k=>-2,h=>0,b=>3,g=>-4,f=>-2,i=>-1} dbffffff4360e2354c000000 dbffffff4360e2354c000000 dbffffff4360e2354c000000 ffffffdb608d07b884800000 dbffffff4360e2354c000000 dbffffff4360e2354c000000 ffffffdb608d07b884800000 dbffffff4360e2354c000000 ffffffdb608d07b884800000 - {e=>-2,n=>-1,a=>21,m=>1,d=>-4,j=>-2,l=>0,c=>1,k=>-4,h=>-3,b=>1,g=>3,f=>-2,i=>-3} 1500000009edb526c8010000 1500000009edb526c8010000 1500000009edb526c8010000 00000015266cedd007800000 1500000009edb526c8010000 1500000009edb526c8010000 00000015266cedd007800000 1500000009edb526c8010000 00000015266cedd007800000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>-2,n=>-3,a=>77,m=>1,d=>0,j=>3,l=>-4,c=>1,k=>3,h=>-2,b=>-3,g=>0,f=>3,o=>-17,i=>2} 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 0000004da466326c86800000ffffffef 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 0000004da466326c86800000ffffffef 4d0000000d3c581b4c010000efffffff 0000004da466326c86800000ffffffef - {e=>-1,n=>3,a=>113,m=>3,d=>3,j=>-1,l=>3,c=>3,k=>-3,h=>-4,b=>-4,g=>2,f=>-3,o=>72,i=>2} 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 000000718dfaa2f46d80000000000048 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 000000718dfaa2f46d80000000000048 71000000dc5e512fdb00000048000000 000000718dfaa2f46d80000000000048 - {e=>-4,n=>2,a=>0,m=>2,d=>1,j=>2,l=>-2,c=>2,k=>-1,h=>-1,b=>-2,g=>-3,f=>-4,o=>60,i=>2} 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 00000000c8c97a5cc90000000000003c 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 00000000c8c97a5cc90000000000003c 0000000056c85e3a960000003c000000 00000000c8c97a5cc90000000000003c - {e=>-1,n=>-3,a=>65,m=>2,d=>-2,j=>3,l=>2,c=>3,k=>0,h=>3,b=>-4,g=>0,f=>1,o=>-92,i=>0} 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 000000418f7218604a800000ffffffa4 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 000000418f7218604a800000ffffffa4 410000009c1f0c0352010000a4ffffff 000000418f7218604a800000ffffffa4 - {e=>1,n=>2,a=>64,m=>0,d=>-2,j=>2,l=>1,c=>-3,k=>0,h=>-1,b=>3,g=>2,f=>1,o=>-43,i=>-2} 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 000000407712be4021000000ffffffd5 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 000000407712be4021000000ffffffd5 40000000ab13dd0281000000d5ffffff 000000407712be4021000000ffffffd5 = struct int_wrap { long a; int b:3; }; - {a=>33,b=>-4} 2100000004000000 21000000000000000400000000000000 21000000000000000400000000000000 0000002180000000 2100000004000000 2100000004000000 00000000000000218000000000000000 2100000004000000 0000002180000000 - {a=>122,b=>-4} 7a00000004000000 7a000000000000000400000000000000 7a000000000000000400000000000000 0000007a80000000 7a00000004000000 7a00000004000000 000000000000007a8000000000000000 7a00000004000000 0000007a80000000 - {a=>107,b=>-3} 6b00000005000000 6b000000000000000500000000000000 6b000000000000000500000000000000 0000006ba0000000 6b00000005000000 6b00000005000000 000000000000006ba000000000000000 6b00000005000000 0000006ba0000000 - {a=>17,b=>1} 1100000001000000 11000000000000000100000000000000 11000000000000000100000000000000 0000001120000000 1100000001000000 1100000001000000 00000000000000112000000000000000 1100000001000000 0000001120000000 - {a=>-47,b=>2} d1ffffff02000000 d1ffffffffffffff0200000000000000 d1ffffffffffffff0200000000000000 ffffffd140000000 d1ffffff02000000 d1ffffff02000000 ffffffffffffffd14000000000000000 d1ffffff02000000 ffffffd140000000 = struct int_wrap { long a; int b:3; int c:3; }; - {c=>-2,a=>-37,b=>1} dbffffff31000000 dbffffffffffffff3100000000000000 dbffffffffffffff3100000000000000 ffffffdb38000000 dbffffff31000000 dbffffff31000000 ffffffffffffffdb3800000000000000 dbffffff31000000 ffffffdb38000000 - {c=>-2,a=>-7,b=>1} f9ffffff31000000 f9ffffffffffffff3100000000000000 f9ffffffffffffff3100000000000000 fffffff938000000 f9ffffff31000000 f9ffffff31000000 fffffffffffffff93800000000000000 f9ffffff31000000 fffffff938000000 - {c=>3,a=>124,b=>0} 7c00000018000000 7c000000000000001800000000000000 7c000000000000001800000000000000 0000007c0c000000 7c00000018000000 7c00000018000000 000000000000007c0c00000000000000 7c00000018000000 0000007c0c000000 - {c=>0,a=>-128,b=>-4} 80ffffff04000000 80ffffffffffffff0400000000000000 80ffffffffffffff0400000000000000 ffffff8080000000 80ffffff04000000 80ffffff04000000 ffffffffffffff808000000000000000 80ffffff04000000 ffffff8080000000 - {c=>3,a=>5,b=>2} 050000001a000000 05000000000000001a00000000000000 05000000000000001a00000000000000 000000054c000000 050000001a000000 050000001a000000 00000000000000054c00000000000000 050000001a000000 000000054c000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; }; - {c=>3,a=>-33,b=>0,d=>-2} dfffffff98010000 dfffffffffffffff9801000000000000 dfffffffffffffff9801000000000000 ffffffdf0f000000 dfffffff98010000 dfffffff98010000 ffffffffffffffdf0f00000000000000 dfffffff98010000 ffffffdf0f000000 - {c=>1,a=>87,b=>1,d=>-3} 5700000049010000 57000000000000004901000000000000 57000000000000004901000000000000 0000005726800000 5700000049010000 5700000049010000 00000000000000572680000000000000 5700000049010000 0000005726800000 - {c=>2,a=>-12,b=>0,d=>0} f4ffffff10000000 f4ffffffffffffff1000000000000000 f4ffffffffffffff1000000000000000 fffffff408000000 f4ffffff10000000 f4ffffff10000000 fffffffffffffff40800000000000000 f4ffffff10000000 fffffff408000000 - {c=>3,a=>-30,b=>-2,d=>3} e2ffffffde000000 e2ffffffffffffffde00000000000000 e2ffffffffffffffde00000000000000 ffffffe2cd800000 e2ffffffde000000 e2ffffffde000000 ffffffffffffffe2cd80000000000000 e2ffffffde000000 ffffffe2cd800000 - {c=>1,a=>81,b=>3,d=>2} 510000008b000000 51000000000000008b00000000000000 51000000000000008b00000000000000 0000005165000000 510000008b000000 510000008b000000 00000000000000516500000000000000 510000008b000000 0000005165000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; }; - {e=>2,c=>-1,a=>-61,b=>3,d=>2} c3ffffffbb040000 c3ffffffffffffffbb04000000000000 c3ffffffffffffffbb04000000000000 ffffffc37d200000 c3ffffffbb040000 c3ffffffbb040000 ffffffffffffffc37d20000000000000 c3ffffffbb040000 ffffffc37d200000 - {e=>-2,c=>-3,a=>86,b=>2,d=>-1} 56000000ea0d0000 5600000000000000ea0d000000000000 5600000000000000ea0d000000000000 0000005657e00000 56000000ea0d0000 56000000ea0d0000 000000000000005657e0000000000000 56000000ea0d0000 0000005657e00000 - {e=>-2,c=>0,a=>126,b=>3,d=>-2} 7e000000830d0000 7e00000000000000830d000000000000 7e00000000000000830d000000000000 0000007e63600000 7e000000830d0000 7e000000830d0000 000000000000007e6360000000000000 7e000000830d0000 0000007e63600000 - {e=>-4,c=>2,a=>-98,b=>-3,d=>-2} 9effffff95090000 9effffffffffffff9509000000000000 9effffffffffffff9509000000000000 ffffff9eab400000 9effffff95090000 9effffff95090000 ffffffffffffff9eab40000000000000 9effffff95090000 ffffff9eab400000 - {e=>3,c=>3,a=>-97,b=>0,d=>3} 9fffffffd8060000 9fffffffffffffffd806000000000000 9fffffffffffffffd806000000000000 ffffff9f0db00000 9fffffffd8060000 9fffffffd8060000 ffffffffffffff9f0db0000000000000 9fffffffd8060000 ffffff9f0db00000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-4,c=>-1,a=>-9,b=>-1,d=>1,f=>-2} f7ffffff7f680000 f7ffffffffffffff7f68000000000000 f7ffffffffffffff7f68000000000000 fffffff7fccc0000 f7ffffff7f680000 f7ffffff7f680000 fffffffffffffff7fccc000000000000 f7ffffff7f680000 fffffff7fccc0000 - {e=>1,c=>-4,a=>112,b=>-4,d=>1,f=>-3} 7000000064520000 70000000000000006452000000000000 70000000000000006452000000000000 00000070909a0000 7000000064520000 7000000064520000 0000000000000070909a000000000000 7000000064520000 00000070909a0000 - {e=>3,c=>-1,a=>-116,b=>2,d=>2,f=>-4} 8cffffffba460000 8cffffffffffffffba46000000000000 8cffffffffffffffba46000000000000 ffffff8c5d380000 8cffffffba460000 8cffffffba460000 ffffffffffffff8c5d38000000000000 8cffffffba460000 ffffff8c5d380000 - {e=>-4,c=>-3,a=>-4,b=>-4,d=>2,f=>1} fcffffffac180000 fcffffffffffffffac18000000000000 fcffffffffffffffac18000000000000 fffffffc95420000 fcffffffac180000 fcffffffac180000 fffffffffffffffc9542000000000000 fcffffffac180000 fffffffc95420000 - {e=>-2,c=>-3,a=>-52,b=>3,d=>3,f=>0} ccffffffeb0c0000 ccffffffffffffffeb0c000000000000 ccffffffffffffffeb0c000000000000 ffffffcc75e00000 ccffffffeb0c0000 ccffffffeb0c0000 ffffffffffffffcc75e0000000000000 ccffffffeb0c0000 ffffffcc75e00000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-2,c=>0,a=>92,g=>-1,b=>-2,d=>-2,f=>-2} 5c00000086ed0300 5c0000000000000086ed030000000000 5c0000000000000086ed030000000000 0000005cc36dc000 5c00000086ed0300 5c00000086ed0300 000000000000005cc36dc00000000000 5c00000086ed0300 0000005cc36dc000 - {e=>1,c=>-1,a=>-32,g=>-4,b=>3,d=>0,f=>-1} e0ffffff3b720200 e0ffffffffffffff3b72020000000000 e0ffffffffffffff3b72020000000000 ffffffe07c1f0000 e0ffffff3b720200 e0ffffff3b720200 ffffffffffffffe07c1f000000000000 e0ffffff3b720200 ffffffe07c1f0000 - {e=>-4,c=>3,a=>17,g=>-4,b=>1,d=>-4,f=>2} 1100000019290200 11000000000000001929020000000000 11000000000000001929020000000000 000000112e450000 1100000019290200 1100000019290200 00000000000000112e45000000000000 1100000019290200 000000112e450000 - {e=>1,c=>-4,a=>-113,g=>-1,b=>1,d=>-4,f=>-4} 8fffffff21c30300 8fffffffffffffff21c3030000000000 8fffffffffffffff21c3030000000000 ffffff8f3219c000 8fffffff21c30300 8fffffff21c30300 ffffffffffffff8f3219c00000000000 8fffffff21c30300 ffffff8f3219c000 - {e=>0,c=>1,a=>23,g=>2,b=>3,d=>-3,f=>-3} 170000004b510100 17000000000000004b51010000000000 17000000000000004b51010000000000 00000017668a8000 170000004b510100 170000004b510100 0000000000000017668a800000000000 170000004b510100 00000017668a8000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>0,a=>76,d=>2,c=>-1,h=>-3,b=>3,g=>-3,f=>0} 4c000000bb801600 4c00000000000000bb80160000000000 4c00000000000000bb80160000000000 0000004c7d016800 4c000000bb801600 4c000000bb801600 000000000000004c7d01680000000000 4c000000bb801600 0000004c7d016800 - {e=>3,a=>39,d=>-4,c=>-3,h=>1,b=>-2,g=>-2,f=>1} 270000002e170700 27000000000000002e17070000000000 27000000000000002e17070000000000 00000027d6338800 270000002e170700 270000002e170700 0000000000000027d633880000000000 270000002e170700 00000027d6338800 - {e=>2,a=>108,d=>2,c=>1,h=>3,b=>1,g=>2,f=>-2} 6c00000089640d00 6c0000000000000089640d0000000000 6c0000000000000089640d0000000000 0000006c252c9800 6c00000089640d00 6c00000089640d00 000000000000006c252c980000000000 6c00000089640d00 0000006c252c9800 - {e=>-2,a=>52,d=>-2,c=>-3,h=>-2,b=>1,g=>-4,f=>-2} 34000000a96d1a00 3400000000000000a96d1a0000000000 3400000000000000a96d1a0000000000 00000034376d3000 34000000a96d1a00 34000000a96d1a00 0000000000000034376d300000000000 34000000a96d1a00 00000034376d3000 - {e=>-3,a=>-110,d=>-4,c=>-4,h=>2,b=>-1,g=>1,f=>2} 92ffffff27ab0800 92ffffffffffffff27ab080000000000 92ffffffffffffff27ab080000000000 ffffff92f2545000 92ffffff27ab0800 92ffffff27ab0800 ffffffffffffff92f254500000000000 92ffffff27ab0800 ffffff92f2545000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>2,a=>-27,d=>0,c=>0,h=>-3,b=>2,g=>-3,f=>-4,i=>-4} e5ffffff02c49600 e5ffffffffffffff02c4960000000000 e5ffffffffffffff02c4960000000000 ffffffe540296c00 e5ffffff02c49600 e5ffffff02c49600 ffffffffffffffe540296c0000000000 e5ffffff02c49600 ffffffe540296c00 - {e=>-1,a=>109,d=>2,c=>1,h=>-2,b=>1,g=>0,f=>-3,i=>-3} 6d000000895eb800 6d00000000000000895eb80000000000 6d00000000000000895eb80000000000 0000006d257a3500 6d000000895eb800 6d000000895eb800 000000000000006d257a350000000000 6d000000895eb800 0000006d257a3500 - {e=>-3,a=>-65,d=>3,c=>2,h=>3,b=>0,g=>2,f=>-4,i=>-2} bfffffffd04acd00 bfffffffffffffffd04acd0000000000 bfffffffffffffffd04acd0000000000 ffffffbf09d89e00 bfffffffd04acd00 bfffffffd04acd00 ffffffffffffffbf09d89e0000000000 bfffffffd04acd00 ffffffbf09d89e00 - {e=>3,a=>-118,d=>-1,c=>1,h=>-1,b=>0,g=>3,f=>2,i=>-4} 8affffffc8a79d00 8affffffffffffffc8a79d0000000000 8affffffffffffffc8a79d0000000000 ffffff8a07b4fc00 8affffffc8a79d00 8affffffc8a79d00 ffffffffffffff8a07b4fc0000000000 8affffffc8a79d00 ffffff8a07b4fc00 - {e=>-4,a=>77,d=>-3,c=>3,h=>-1,b=>-2,g=>-1,f=>-3,i=>-3} 4d0000005ed9bf00 4d000000000000005ed9bf0000000000 4d000000000000005ed9bf0000000000 0000004dcecbfd00 4d0000005ed9bf00 4d0000005ed9bf00 000000000000004dcecbfd0000000000 4d0000005ed9bf00 0000004dcecbfd00 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-3,a=>60,d=>2,j=>2,c=>2,h=>-3,b=>3,g=>-1,f=>-2,i=>-1} 3c00000093eaf702 3c0000000000000093eaf70200000000 3c0000000000000093eaf70200000000 0000003c695def40 3c00000093eaf702 3c00000093eaf702 000000000000003c695def4000000000 3c00000093eaf702 0000003c695def40 - {e=>-3,a=>-119,d=>0,j=>-2,c=>3,h=>-3,b=>3,g=>-3,f=>-3,i=>-3} 89ffffff1bdab606 89ffffffffffffff1bdab60600000000 89ffffffffffffff1bdab60600000000 ffffff896c5b6dc0 89ffffff1bdab606 89ffffff1bdab606 ffffffffffffff896c5b6dc000000000 89ffffff1bdab606 ffffff896c5b6dc0 - {e=>-4,a=>94,d=>2,j=>2,c=>1,h=>3,b=>1,g=>1,f=>3,i=>3} 5e00000089b86c02 5e0000000000000089b86c0200000000 5e0000000000000089b86c0200000000 0000005e25465b40 5e00000089b86c02 5e00000089b86c02 000000000000005e25465b4000000000 5e00000089b86c02 0000005e25465b40 - {e=>3,a=>116,d=>1,j=>2,c=>-4,h=>-3,b=>0,g=>3,f=>2,i=>-4} 7400000060a69502 740000000000000060a6950200000000 740000000000000060a6950200000000 0000007410b4ec40 7400000060a69502 7400000060a69502 000000000000007410b4ec4000000000 7400000060a69502 0000007410b4ec40 - {e=>1,a=>42,d=>-4,j=>-4,c=>-2,h=>-2,b=>2,g=>-3,f=>-2,i=>-3} 2a00000032e3ba04 2a0000000000000032e3ba0400000000 2a0000000000000032e3ba0400000000 0000002a5a1d7580 2a00000032e3ba04 2a00000032e3ba04 000000000000002a5a1d758000000000 2a00000032e3ba04 0000002a5a1d7580 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>0,a=>15,d=>3,j=>2,c=>0,k=>3,h=>-4,b=>3,g=>-1,f=>-4,i=>-4} 0f000000c3c0931a 0f00000000000000c3c0931a00000000 0f00000000000000c3c0931a00000000 0000000f6189e44c 0f000000c3c0931a 0f000000c3c0931a 000000000000000f6189e44c00000000 0f000000c3c0931a 0000000f6189e44c - {e=>-2,a=>-58,d=>-3,j=>-1,c=>-1,k=>-2,h=>1,b=>-2,g=>3,f=>-4,i=>-3} c6ffffff7ecda537 c6ffffffffffffff7ecda53700000000 c6ffffffffffffff7ecda53700000000 ffffffc6dee8cdf8 c6ffffff7ecda537 c6ffffff7ecda537 ffffffffffffffc6dee8cdf800000000 c6ffffff7ecda537 ffffffc6dee8cdf8 - {e=>0,a=>3,d=>-4,j=>-4,c=>2,k=>1,h=>3,b=>0,g=>-4,f=>3,i=>-4} 0300000010318e0c 030000000000000010318e0c00000000 030000000000000010318e0c00000000 000000030a071c84 0300000010318e0c 0300000010318e0c 00000000000000030a071c8400000000 0300000010318e0c 000000030a071c84 - {e=>-2,a=>9,d=>3,j=>3,c=>-3,k=>-2,h=>-1,b=>-1,g=>1,f=>-4,i=>3} 09000000efcc7c33 0900000000000000efcc7c3300000000 0900000000000000efcc7c3300000000 00000009f5e87b78 09000000efcc7c33 09000000efcc7c33 0000000000000009f5e87b7800000000 09000000efcc7c33 00000009f5e87b78 - {e=>-2,a=>41,d=>2,j=>-1,c=>-3,k=>-2,h=>-4,b=>-2,g=>-1,f=>2,i=>3} 29000000aeac7337 2900000000000000aeac733700000000 2900000000000000aeac733700000000 00000029d565e3f8 29000000aeac7337 29000000aeac7337 0000000000000029d565e3f800000000 29000000aeac7337 00000029d565e3f8 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>-21,d=>3,j=>0,l=>-3,c=>-3,k=>3,h=>0,b=>2,g=>-4,f=>-3,i=>-3} ebffffffea5aa21805000000 ebffffffffffffffea5aa21805000000 ebffffffffffffffea5aa21805000000 ffffffeb55db050ca0000000 ebffffffea5aa21805000000 ebffffffea5aa21805000000 ffffffffffffffeb55db050ca0000000 ebffffffea5aa21805000000 ffffffeb55db050ca0000000 - {e=>0,a=>26,d=>3,j=>3,l=>-4,c=>0,k=>2,h=>-1,b=>-1,g=>-2,f=>0,i=>-4} 1a000000c7009f1304000000 1a00000000000000c7009f1304000000 1a00000000000000c7009f1304000000 0000001ae181bc6880000000 1a000000c7009f1304000000 1a000000c7009f1304000000 000000000000001ae181bc6880000000 1a000000c7009f1304000000 0000001ae181bc6880000000 - {e=>-3,a=>-32,d=>-2,j=>0,l=>-4,c=>-3,k=>-2,h=>2,b=>-1,g=>1,f=>2,i=>-3} e0ffffffafaba83004000000 e0ffffffffffffffafaba83004000000 e0ffffffffffffffafaba83004000000 ffffffe0f754551880000000 e0ffffffafaba83004000000 e0ffffffafaba83004000000 ffffffffffffffe0f754551880000000 e0ffffffafaba83004000000 ffffffe0f754551880000000 - {e=>2,a=>-37,d=>-2,j=>-3,l=>-4,c=>1,k=>1,h=>-2,b=>2,g=>3,f=>0,i=>3} dbffffff8a85790d04000000 dbffffffffffffff8a85790d04000000 dbffffffffffffff8a85790d04000000 ffffffdb4720f3a480000000 dbffffff8a85790d04000000 dbffffff8a85790d04000000 ffffffffffffffdb4720f3a480000000 dbffffff8a85790d04000000 ffffffdb4720f3a480000000 - {e=>1,a=>-116,d=>-2,j=>0,l=>2,c=>1,k=>-4,h=>0,b=>2,g=>-3,f=>-1,i=>-4} 8cffffff8af3822002000000 8cffffffffffffff8af3822002000000 8cffffffffffffff8af3822002000000 ffffff8c471f441040000000 8cffffff8af3822002000000 8cffffff8af3822002000000 ffffffffffffff8c471f441040000000 8cffffff8af3822002000000 ffffff8c471f441040000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>-1,a=>-6,m=>-3,d=>0,j=>3,l=>1,c=>-4,k=>1,h=>-4,b=>1,g=>2,f=>1,i=>2} faffffff211e510b29000000 faffffffffffffff211e510b29000000 faffffffffffffff211e510b29000000 fffffffa3072a26434000000 faffffff211e510b29000000 faffffff211e510b29000000 fffffffffffffffa3072a26434000000 faffffff211e510b29000000 fffffffa3072a26434000000 - {e=>2,a=>-118,m=>-4,d=>-1,j=>-2,l=>2,c=>3,k=>-3,h=>3,b=>0,g=>-3,f=>-4,i=>3} 8affffffd8c56e2e22000000 8affffffffffffffd8c56e2e22000000 8affffffffffffffd8c56e2e22000000 ffffff8a0fa95bd450000000 8affffffd8c56e2e22000000 8affffffd8c56e2e22000000 ffffffffffffff8a0fa95bd450000000 8affffffd8c56e2e22000000 ffffff8a0fa95bd450000000 - {e=>3,a=>-56,m=>1,d=>3,j=>0,l=>3,c=>2,k=>-2,h=>1,b=>2,g=>0,f=>-3,i=>-2} c8ffffffd256c4300b000000 c8ffffffffffffffd256c4300b000000 c8ffffffffffffffd256c4300b000000 ffffffc849ba0e1864000000 c8ffffffd256c4300b000000 c8ffffffd256c4300b000000 ffffffffffffffc849ba0e1864000000 c8ffffffd256c4300b000000 ffffffc849ba0e1864000000 - {e=>1,a=>-55,m=>-4,d=>0,j=>-1,l=>3,c=>-3,k=>-4,h=>3,b=>-4,g=>2,f=>-2,i=>-4} c9ffffff2c628d2723000000 c9ffffffffffffff2c628d2723000000 c9ffffffffffffff2c628d2723000000 ffffffc9941c9cf070000000 c9ffffff2c628d2723000000 c9ffffff2c628d2723000000 ffffffffffffffc9941c9cf070000000 c9ffffff2c628d2723000000 ffffffc9941c9cf070000000 - {e=>-3,a=>-107,m=>0,d=>-1,j=>2,l=>-3,c=>-2,k=>-2,h=>-2,b=>-4,g=>2,f=>1,i=>-3} 95fffffff41bb93205000000 95fffffffffffffff41bb93205000000 95fffffffffffffff41bb93205000000 ffffff959bd2b558a0000000 95fffffff41bb93205000000 95fffffff41bb93205000000 ffffffffffffff959bd2b558a0000000 95fffffff41bb93205000000 ffffff959bd2b558a0000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>-1,n=>-1,a=>-103,m=>-3,d=>-3,j=>2,l=>-4,c=>-3,k=>3,h=>2,b=>3,g=>-4,f=>1,i=>1} 99ffffff6b1f2a1aec010000 99ffffffffffffff6b1f2a1aec010000 99ffffffffffffff6b1f2a1aec010000 ffffff9976f3114c97800000 99ffffff6b1f2a1aec010000 99ffffff6b1f2a1aec010000 ffffffffffffff9976f3114c97800000 99ffffff6b1f2a1aec010000 ffffff9976f3114c97800000 - {e=>1,n=>-1,a=>-117,m=>3,d=>-3,j=>3,l=>2,c=>-4,k=>2,h=>-1,b=>-3,g=>-1,f=>0,i=>-1} 8bffffff6583ff13da010000 8bffffffffffffff6583ff13da010000 8bffffffffffffff6583ff13da010000 ffffff8bb291ff684f800000 8bffffff6583ff13da010000 8bffffff6583ff13da010000 ffffffffffffff8bb291ff684f800000 8bffffff6583ff13da010000 ffffff8bb291ff684f800000 - {e=>1,n=>-3,a=>28,m=>-1,d=>-4,j=>2,l=>-4,c=>3,k=>-4,h=>-2,b=>0,g=>2,f=>-4,i=>1} 1c000000184339227c010000 1c00000000000000184339227c010000 1c00000000000000184339227c010000 0000001c0e18b1509e800000 1c000000184339227c010000 1c000000184339227c010000 000000000000001c0e18b1509e800000 1c000000184339227c010000 0000001c0e18b1509e800000 - {e=>-4,n=>3,a=>29,m=>-4,d=>2,j=>-2,l=>-4,c=>-2,k=>-2,h=>2,b=>-2,g=>-2,f=>-2,i=>-2} 1d000000b668cb36e4000000 1d00000000000000b668cb36e4000000 1d00000000000000b668cb36e4000000 0000001dd94d96d891800000 1d000000b668cb36e4000000 1d000000b668cb36e4000000 000000000000001dd94d96d891800000 1d000000b668cb36e4000000 0000001dd94d96d891800000 - {e=>3,n=>-1,a=>-93,m=>-1,d=>3,j=>3,l=>-2,c=>2,k=>2,h=>-2,b=>1,g=>0,f=>3,i=>2} a3ffffffd1365813fe010000 a3ffffffffffffffd1365813fe010000 a3ffffffffffffffd1365813fe010000 ffffffa329b63268df800000 a3ffffffd1365813fe010000 a3ffffffd1365813fe010000 ffffffffffffffa329b63268df800000 a3ffffffd1365813fe010000 ffffffa329b63268df800000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>-3,n=>1,a=>-24,m=>2,d=>-2,j=>-2,l=>-4,c=>-1,k=>0,h=>-4,b=>-1,g=>-4,f=>0,o=>10,i=>1} e8ffffffbf0b3206540000000a000000 e8ffffffffffffffbf0b3206540000000a00000000000000 e8ffffffffffffffbf0b3206540000000a00000000000000 ffffffe8ff5121c0888000000000000a e8ffffffbf0b3206540000000a000000 e8ffffffbf0b3206540000000a000000 ffffffffffffffe8ff5121c0888000000000000a00000000 e8ffffffbf0b3206540000000a000000 ffffffe8ff5121c0888000000000000a - {e=>0,n=>3,a=>91,m=>3,d=>1,j=>-2,l=>-1,c=>-3,k=>0,h=>1,b=>3,g=>3,f=>0,o=>0,i=>0} 5b0000006b800506df00000000000000 5b000000000000006b800506df0000000000000000000000 5b000000000000006b800506df0000000000000000000000 0000005b7480c8c0ed80000000000000 5b0000006b800506df00000000000000 5b0000006b800506df00000000000000 000000000000005b7480c8c0ed8000000000000000000000 5b0000006b800506df00000000000000 0000005b7480c8c0ed80000000000000 - {e=>-4,n=>-4,a=>-91,m=>0,d=>1,j=>0,l=>3,c=>1,k=>-4,h=>0,b=>3,g=>1,f=>-2,o=>81,i=>-3} a5ffffff4be8a0200301000051000000 a5ffffffffffffff4be8a020030100005100000000000000 a5ffffffffffffff4be8a020030100005100000000000000 ffffffa564cc45106200000000000051 a5ffffff4be8a0200301000051000000 a5ffffff4be8a0200301000051000000 ffffffffffffffa564cc4510620000000000005100000000 a5ffffff4be8a0200301000051000000 ffffffa564cc45106200000000000051 - {e=>0,n=>-3,a=>-22,m=>-1,d=>-4,j=>-1,l=>0,c=>3,k=>-2,h=>3,b=>-3,g=>-1,f=>-3,o=>40,i=>2} eaffffff1dd14f377801000028000000 eaffffffffffffff1dd14f37780100002800000000000000 eaffffffffffffff1dd14f37780100002800000000000000 ffffffeaae0bdaf81e80000000000028 eaffffff1dd14f377801000028000000 eaffffff1dd14f377801000028000000 ffffffffffffffeaae0bdaf81e8000000000002800000000 eaffffff1dd14f377801000028000000 ffffffeaae0bdaf81e80000000000028 - {e=>-2,n=>1,a=>-71,m=>2,d=>2,j=>-3,l=>-4,c=>0,k=>-3,h=>2,b=>-2,g=>2,f=>0,o=>-119,i=>-2} b9ffffff860cc92d5400000089ffffff b9ffffffffffffff860cc92d5400000089ffffff00000000 b9ffffffffffffff860cc92d5400000089ffffff00000000 ffffffb9c16096b488800000ffffff89 b9ffffff860cc92d5400000089ffffff b9ffffff860cc92d5400000089ffffff ffffffffffffffb9c16096b488800000ffffff8900000000 b9ffffff860cc92d5400000089ffffff ffffffb9c16096b488800000ffffff89 = struct umixed3 { unsigned char a:3; }; - {a=>7} 07 07 07 e0 07000000 07 e0 07 e0 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>2} 02 02 02 40 02000000 02 40 02 40 - {a=>5} 05 05 05 a0 05000000 05 a0 05 a0 = struct umixed3 { unsigned char a:3; unsigned char b:3; }; - {a=>6,b=>0} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>0,b=>4} 20 20 20 10 20000000 20 10 20 10 - {a=>2,b=>1} 0a 0a 0a 44 0a000000 0a 44 0a 44 - {a=>7,b=>3} 1f 1f 1f ec 1f000000 1f ec 1f ec - {a=>2,b=>3} 1a 1a 1a 4c 1a000000 1a 4c 1a 4c = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; }; - {c=>0,a=>7,b=>5} 2f000000 2f000000 2f000000 f4000000 2f000000 2f000000 f4000000 2f000000 f4000000 - {c=>2,a=>6,b=>7} be000000 be000000 be000000 dd000000 be000000 be000000 dd000000 be000000 dd000000 - {c=>2,a=>7,b=>2} 97000000 97000000 97000000 e9000000 97000000 97000000 e9000000 97000000 e9000000 - {c=>7,a=>1,b=>3} d9010000 d9010000 d9010000 2f800000 d9010000 d9010000 2f800000 d9010000 2f800000 - {c=>5,a=>3,b=>4} 63010000 63010000 63010000 72800000 63010000 63010000 72800000 63010000 72800000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; }; - {c=>6,a=>2,b=>1,d=>2} 8a050000 8a050000 8a050000 47200000 8a050000 8a050000 47200000 8a050000 47200000 - {c=>5,a=>6,b=>1,d=>3} 4e070000 4e070000 4e070000 c6b00000 4e070000 4e070000 c6b00000 4e070000 c6b00000 - {c=>4,a=>6,b=>1,d=>0} 0e010000 0e010000 0e010000 c6000000 0e010000 0e010000 c6000000 0e010000 c6000000 - {c=>0,a=>1,b=>5,d=>6} 290c0000 290c0000 290c0000 34600000 290c0000 290c0000 34600000 290c0000 34600000 - {c=>7,a=>6,b=>2,d=>2} d6050000 d6050000 d6050000 cba00000 d6050000 d6050000 cba00000 d6050000 cba00000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; }; - {e=>3,c=>6,a=>3,b=>0,d=>1} 83330000 83330000 83330000 63160000 83330000 83330000 63160000 83330000 63160000 - {e=>6,c=>0,a=>3,b=>1,d=>5} 0b6a0000 0b6a0000 0b6a0000 645c0000 0b6a0000 0b6a0000 645c0000 0b6a0000 645c0000 - {e=>7,c=>2,a=>2,b=>6,d=>5} b27a0000 b27a0000 b27a0000 595e0000 b27a0000 b27a0000 595e0000 b27a0000 595e0000 - {e=>6,c=>0,a=>3,b=>3,d=>3} 1b660000 1b660000 1b660000 6c3c0000 1b660000 1b660000 6c3c0000 1b660000 6c3c0000 - {e=>6,c=>7,a=>0,b=>3,d=>3} d8670000 d8670000 d8670000 0fbc0000 d8670000 d8670000 0fbc0000 d8670000 0fbc0000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; unsigned char f:3; }; - {e=>3,c=>4,a=>4,b=>7,d=>6,f=>2} 3c3d0200 3c3d0200 3c3d0200 9e664000 3c3d0200 3c3d0200 9e664000 3c3d0200 9e664000 - {e=>5,c=>4,a=>2,b=>7,d=>0,f=>6} 3a510600 3a510600 3a510600 5e0ac000 3a510600 3a510600 5e0ac000 3a510600 5e0ac000 - {e=>7,c=>6,a=>0,b=>4,d=>1,f=>6} a0730600 a0730600 a0730600 131ec000 a0730600 a0730600 131ec000 a0730600 131ec000 - {e=>4,c=>6,a=>1,b=>0,d=>1,f=>3} 81430300 81430300 81430300 23186000 81430300 81430300 23186000 81430300 23186000 - {e=>6,c=>4,a=>6,b=>6,d=>6,f=>0} 366d0000 366d0000 366d0000 da6c0000 366d0000 366d0000 da6c0000 366d0000 da6c0000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; unsigned char f:3; unsigned long g; }; - {e=>4,c=>5,a=>4,g=>216,b=>7,d=>5,f=>4} 7c4b0400d8000000 7c4b040000000000d800000000000000 7c4b040000000000d800000000000000 9ed88000000000d8 7c4b0400d8000000 7c4b0400d8000000 9ed880000000000000000000000000d8 7c4b0400d8000000 9ed88000000000d8 - {e=>0,c=>0,a=>7,g=>119,b=>7,d=>3,f=>5} 3f06050077000000 3f060500000000007700000000000000 3f060500000000007700000000000000 fc30a00000000077 3f06050077000000 3f06050077000000 fc30a000000000000000000000000077 3f06050077000000 fc30a00000000077 - {e=>4,c=>0,a=>7,g=>69,b=>6,d=>3,f=>3} 3746030045000000 37460300000000004500000000000000 37460300000000004500000000000000 f838600000000045 3746030045000000 3746030045000000 f8386000000000000000000000000045 3746030045000000 f838600000000045 - {e=>1,c=>0,a=>5,g=>247,b=>4,d=>1,f=>7} 25120700f7000000 2512070000000000f700000000000000 2512070000000000f700000000000000 b012e000000000f7 25120700f7000000 25120700f7000000 b012e0000000000000000000000000f7 25120700f7000000 b012e000000000f7 - {e=>4,c=>5,a=>4,g=>112,b=>1,d=>3,f=>4} 4c47040070000000 4c470400000000007000000000000000 4c470400000000007000000000000000 86b8800000000070 4c47040070000000 4c47040070000000 86b88000000000000000000000000070 4c47040070000000 86b8800000000070 = struct umixed3 { char a; unsigned char b:3; }; - {a=>-63,b=>6} c106 c106 c106 c1c0 c1060000 c106 c1c0 c106 c1c0 - {a=>-85,b=>7} ab07 ab07 ab07 abe0 ab070000 ab07 abe0 ab07 abe0 - {a=>52,b=>0} 3400 3400 3400 3400 34000000 3400 3400 3400 3400 - {a=>-89,b=>2} a702 a702 a702 a740 a7020000 a702 a740 a702 a740 - {a=>-62,b=>7} c207 c207 c207 c2e0 c2070000 c207 c2e0 c207 c2e0 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>77,b=>0} 4d08 4d08 4d08 4d04 4d080000 4d08 4d04 4d08 4d04 - {c=>7,a=>73,b=>2} 493a 493a 493a 495c 493a0000 493a 495c 493a 495c - {c=>5,a=>116,b=>5} 742d 742d 742d 74b4 742d0000 742d 74b4 742d 74b4 - {c=>7,a=>-44,b=>1} d439 d439 d439 d43c d4390000 d439 d43c d439 d43c - {c=>7,a=>-66,b=>7} be3f be3f be3f befc be3f0000 be3f befc be3f befc = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>0,a=>-16,b=>5,d=>5} f0450100 f0450100 f0450100 f0a28000 f0450100 f0450100 f0a28000 f0450100 f0a28000 - {c=>0,a=>-4,b=>7,d=>6} fc870100 fc870100 fc870100 fce30000 fc870100 fc870100 fce30000 fc870100 fce30000 - {c=>5,a=>-11,b=>0,d=>2} f5a80000 f5a80000 f5a80000 f5150000 f5a80000 f5a80000 f5150000 f5a80000 f5150000 - {c=>6,a=>-39,b=>1,d=>0} d9310000 d9310000 d9310000 d9380000 d9310000 d9310000 d9380000 d9310000 d9380000 - {c=>7,a=>78,b=>1,d=>0} 4e390000 4e390000 4e390000 4e3c0000 4e390000 4e390000 4e3c0000 4e390000 4e3c0000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>2,c=>6,a=>28,b=>6,d=>7} 1cf60500 1cf60500 1cf60500 1cdba000 1cf60500 1cf60500 1cdba000 1cf60500 1cdba000 - {e=>0,c=>6,a=>-11,b=>2,d=>3} f5f20000 f5f20000 f5f20000 f5598000 f5f20000 f5f20000 f5598000 f5f20000 f5598000 - {e=>5,c=>7,a=>27,b=>0,d=>1} 1b780a00 1b780a00 1b780a00 1b1cd000 1b780a00 1b780a00 1b1cd000 1b780a00 1b1cd000 - {e=>2,c=>5,a=>1,b=>0,d=>7} 01e80500 01e80500 01e80500 0117a000 01e80500 01e80500 0117a000 01e80500 0117a000 - {e=>7,c=>1,a=>79,b=>3,d=>7} 4fcb0f00 4fcb0f00 4fcb0f00 4f67f000 4fcb0f00 4fcb0f00 4f67f000 4fcb0f00 4f67f000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>1,c=>7,a=>43,b=>0,d=>7,f=>3} 2bf83300 2bf83300 2bf83300 2b1f9600 2bf83300 2bf83300 2b1f9600 2bf83300 2b1f9600 - {e=>3,c=>7,a=>-115,b=>7,d=>5,f=>4} 8d7f4700 8d7f4700 8d7f4700 8dfeb800 8d7f4700 8d7f4700 8dfeb800 8d7f4700 8dfeb800 - {e=>4,c=>7,a=>86,b=>7,d=>6,f=>6} 56bf6900 56bf6900 56bf6900 56ff4c00 56bf6900 56bf6900 56ff4c00 56bf6900 56ff4c00 - {e=>1,c=>0,a=>-25,b=>3,d=>2,f=>1} e7831200 e7831200 e7831200 e7611200 e7831200 e7831200 e7611200 e7831200 e7611200 - {e=>7,c=>7,a=>19,b=>4,d=>7,f=>0} 13fc0f00 13fc0f00 13fc0f00 139ff000 13fc0f00 13fc0f00 139ff000 13fc0f00 139ff000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>7,c=>3,a=>-86,g=>1,b=>7,d=>6,f=>1} aa9f1f01 aa9f1f01 aa9f1f01 aaef7220 aa9f1f01 aa9f1f01 aaef7220 aa9f1f01 aaef7220 - {e=>1,c=>6,a=>18,g=>4,b=>6,d=>5,f=>5} 12765304 12765304 12765304 12da9a80 12765304 12765304 12da9a80 12765304 12da9a80 - {e=>0,c=>5,a=>6,g=>2,b=>6,d=>1,f=>0} 066e0002 066e0002 066e0002 06d48040 066e0002 066e0002 06d48040 066e0002 06d48040 - {e=>0,c=>2,a=>2,g=>1,b=>5,d=>3,f=>4} 02d54001 02d54001 02d54001 02a98820 02d54001 02d54001 02a98820 02d54001 02a98820 - {e=>4,c=>6,a=>110,g=>5,b=>6,d=>3,f=>1} 6ef61805 6ef61805 6ef61805 6ed9c2a0 6ef61805 6ef61805 6ed9c2a0 6ef61805 6ed9c2a0 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>-103,d=>2,c=>7,h=>28,b=>4,g=>0,f=>0} 99bc0e001c000000 99bc0e00000000001c00000000000000 99bc0e00000000001c00000000000000 999d70000000001c 99bc0e001c000000 99bc0e001c000000 999d700000000000000000000000001c 99bc0e001c000000 999d70000000001c - {e=>1,a=>-118,d=>7,c=>2,h=>87,b=>6,g=>2,f=>7} 8ad6730257000000 8ad67302000000005700000000000000 8ad67302000000005700000000000000 8acb9e4000000057 8ad6730257000000 8ad6730257000000 8acb9e40000000000000000000000057 8ad6730257000000 8acb9e4000000057 - {e=>0,a=>93,d=>0,c=>4,h=>190,b=>4,g=>2,f=>4} 5d244002be000000 5d24400200000000be00000000000000 5d24400200000000be00000000000000 5d900840000000be 5d244002be000000 5d244002be000000 5d9008400000000000000000000000be 5d244002be000000 5d900840000000be - {e=>4,a=>119,d=>3,c=>2,h=>230,b=>0,g=>6,f=>3} 77d03806e6000000 77d0380600000000e600000000000000 77d0380600000000e600000000000000 7709c6c0000000e6 77d03806e6000000 77d03806e6000000 7709c6c00000000000000000000000e6 77d03806e6000000 7709c6c0000000e6 - {e=>5,a=>-101,d=>5,c=>7,h=>52,b=>3,g=>7,f=>4} 9b7b4b0734000000 9b7b4b07000000003400000000000000 9b7b4b07000000003400000000000000 9b7ed8e000000034 9b7b4b0734000000 9b7b4b0734000000 9b7ed8e0000000000000000000000034 9b7b4b0734000000 9b7ed8e000000034 = struct umixed3 { short a; unsigned char b:3; }; - {a=>117,b=>6} 75000600 75000600 75000600 0075c000 75000600 75000600 0075c000 75000600 0075c000 - {a=>27,b=>7} 1b000700 1b000700 1b000700 001be000 1b000700 1b000700 001be000 1b000700 001be000 - {a=>-51,b=>0} cdff0000 cdff0000 cdff0000 ffcd0000 cdff0000 cdff0000 ffcd0000 cdff0000 ffcd0000 - {a=>-8,b=>4} f8ff0400 f8ff0400 f8ff0400 fff88000 f8ff0400 f8ff0400 fff88000 f8ff0400 fff88000 - {a=>72,b=>7} 48000700 48000700 48000700 0048e000 48000700 48000700 0048e000 48000700 0048e000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>-49,b=>3} cfff0300 cfff0300 cfff0300 ffcf6000 cfff0300 cfff0300 ffcf6000 cfff0300 ffcf6000 - {c=>4,a=>28,b=>7} 1c002700 1c002700 1c002700 001cf000 1c002700 1c002700 001cf000 1c002700 001cf000 - {c=>2,a=>97,b=>5} 61001500 61001500 61001500 0061a800 61001500 61001500 0061a800 61001500 0061a800 - {c=>3,a=>-123,b=>0} 85ff1800 85ff1800 85ff1800 ff850c00 85ff1800 85ff1800 ff850c00 85ff1800 ff850c00 - {c=>3,a=>71,b=>7} 47001f00 47001f00 47001f00 0047ec00 47001f00 47001f00 0047ec00 47001f00 0047ec00 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>6,a=>-55,b=>7,d=>2} c9ffb700 c9ffb700 c9ffb700 ffc9f900 c9ffb700 c9ffb700 ffc9f900 c9ffb700 ffc9f900 - {c=>4,a=>118,b=>0,d=>7} 7600e001 7600e001 7600e001 00761380 7600e001 7600e001 00761380 7600e001 00761380 - {c=>4,a=>-56,b=>7,d=>0} c8ff2700 c8ff2700 c8ff2700 ffc8f000 c8ff2700 c8ff2700 ffc8f000 c8ff2700 ffc8f000 - {c=>1,a=>111,b=>5,d=>1} 6f004d00 6f004d00 6f004d00 006fa480 6f004d00 6f004d00 006fa480 6f004d00 006fa480 - {c=>4,a=>-108,b=>3,d=>3} 94ffe300 94ffe300 94ffe300 ff947180 94ffe300 94ffe300 ff947180 94ffe300 ff947180 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>2,c=>5,a=>2,b=>4,d=>4} 02002c05 02002c05 02002c05 00029620 02002c05 02002c05 00029620 02002c05 00029620 - {e=>7,c=>2,a=>57,b=>2,d=>1} 3900520e 3900520e 3900520e 003948f0 3900520e 3900520e 003948f0 3900520e 003948f0 - {e=>1,c=>6,a=>92,b=>1,d=>3} 5c00f102 5c00f102 5c00f102 005c3990 5c00f102 5c00f102 005c3990 5c00f102 005c3990 - {e=>0,c=>1,a=>-36,b=>0,d=>2} dcff8800 dcff8800 dcff8800 ffdc0500 dcff8800 dcff8800 ffdc0500 dcff8800 ffdc0500 - {e=>1,c=>4,a=>-88,b=>1,d=>0} a8ff2102 a8ff2102 a8ff2102 ffa83010 a8ff2102 a8ff2102 ffa83010 a8ff2102 ffa83010 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>0,c=>1,a=>-52,b=>6,d=>1,f=>6} ccff4e60 ccff4e60 ccff4e60 ffccc48c ccff4e60 ccff4e60 ffccc48c ccff4e60 ffccc48c - {e=>3,c=>5,a=>-41,b=>2,d=>6,f=>0} d7ffaa07 d7ffaa07 d7ffaa07 ffd75730 d7ffaa07 d7ffaa07 ffd75730 d7ffaa07 ffd75730 - {e=>2,c=>3,a=>-90,b=>5,d=>7,f=>3} a6ffdd35 a6ffdd35 a6ffdd35 ffa6afa6 a6ffdd35 a6ffdd35 ffa6afa6 a6ffdd35 ffa6afa6 - {e=>1,c=>4,a=>6,b=>2,d=>4,f=>7} 06002273 06002273 06002273 0006521e 06002273 06002273 0006521e 06002273 0006521e - {e=>2,c=>4,a=>24,b=>4,d=>4,f=>7} 18002475 18002475 18002475 0018922e 18002475 18002475 0018922e 18002475 0018922e = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>4,c=>2,a=>-91,g=>7,b=>6,d=>2,f=>3} a5ff963807000000 a5ff963807000000 a5ff963807000000 ffa5c946e0000000 a5ff963807000000 a5ff963807000000 ffa5c946e0000000 a5ff963807000000 ffa5c946e0000000 - {e=>3,c=>0,a=>116,g=>7,b=>3,d=>7,f=>4} 7400c34707000000 7400c34707000000 7400c34707000000 007463b8e0000000 7400c34707000000 7400c34707000000 007463b8e0000000 7400c34707000000 007463b8e0000000 - {e=>2,c=>7,a=>93,g=>4,b=>6,d=>6,f=>7} 5d00be7504000000 5d00be7504000000 5d00be7504000000 005ddf2e80000000 5d00be7504000000 5d00be7504000000 005ddf2e80000000 5d00be7504000000 005ddf2e80000000 - {e=>2,c=>5,a=>108,g=>5,b=>4,d=>4,f=>2} 6c002c2505000000 6c002c2505000000 6c002c2505000000 006c9624a0000000 6c002c2505000000 6c002c2505000000 006c9624a0000000 6c002c2505000000 006c9624a0000000 - {e=>4,c=>2,a=>-28,g=>3,b=>4,d=>2,f=>6} e4ff946803000000 e4ff946803000000 e4ff946803000000 ffe4894c60000000 e4ff946803000000 e4ff946803000000 ffe4894c60000000 e4ff946803000000 ffe4894c60000000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>4,a=>-83,d=>2,c=>5,h=>218,b=>0,g=>2,f=>5} adffa85802000000da000000 adffa85802000000da00000000000000 adffa85802000000da00000000000000 ffad154a40000000000000da adffa85802000000da000000 adffa85802000000da000000 ffad154a4000000000000000000000da adffa85802000000da000000 ffad154a40000000000000da - {e=>2,a=>12,d=>1,c=>2,h=>88,b=>2,g=>6,f=>2} 0c0052240600000058000000 0c005224060000005800000000000000 0c005224060000005800000000000000 000c48a4c000000000000058 0c0052240600000058000000 0c0052240600000058000000 000c48a4c00000000000000000000058 0c0052240600000058000000 000c48a4c000000000000058 - {e=>1,a=>-57,d=>1,c=>1,h=>75,b=>1,g=>4,f=>3} c7ff4932040000004b000000 c7ff4932040000004b00000000000000 c7ff4932040000004b00000000000000 ffc72496800000000000004b c7ff4932040000004b000000 c7ff4932040000004b000000 ffc7249680000000000000000000004b c7ff4932040000004b000000 ffc72496800000000000004b - {e=>7,a=>17,d=>6,c=>0,h=>143,b=>5,g=>4,f=>1} 1100851f040000008f000000 1100851f040000008f00000000000000 1100851f040000008f00000000000000 0011a372800000000000008f 1100851f040000008f000000 1100851f040000008f000000 0011a37280000000000000000000008f 1100851f040000008f000000 0011a372800000000000008f - {e=>1,a=>10,d=>6,c=>1,h=>73,b=>1,g=>0,f=>6} 0a0089630000000049000000 0a008963000000004900000000000000 0a008963000000004900000000000000 000a271c0000000000000049 0a0089630000000049000000 0a0089630000000049000000 000a271c000000000000000000000049 0a0089630000000049000000 000a271c0000000000000049 = struct umixed3 { int a; unsigned char b:3; }; - {a=>-62,b=>6} c2ffffff06000000 c2ffffff06000000 c2ffffff06000000 ffffffc2c0000000 c2ffffff06000000 c2ffffff06000000 ffffffc2c0000000 c2ffffff06000000 ffffffc2c0000000 - {a=>-53,b=>2} cbffffff02000000 cbffffff02000000 cbffffff02000000 ffffffcb40000000 cbffffff02000000 cbffffff02000000 ffffffcb40000000 cbffffff02000000 ffffffcb40000000 - {a=>118,b=>0} 7600000000000000 7600000000000000 7600000000000000 0000007600000000 7600000000000000 7600000000000000 0000007600000000 7600000000000000 0000007600000000 - {a=>59,b=>0} 3b00000000000000 3b00000000000000 3b00000000000000 0000003b00000000 3b00000000000000 3b00000000000000 0000003b00000000 3b00000000000000 0000003b00000000 - {a=>-20,b=>1} ecffffff01000000 ecffffff01000000 ecffffff01000000 ffffffec20000000 ecffffff01000000 ecffffff01000000 ffffffec20000000 ecffffff01000000 ffffffec20000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-62,b=>7} c2ffffff2f000000 c2ffffff2f000000 c2ffffff2f000000 ffffffc2f4000000 c2ffffff2f000000 c2ffffff2f000000 ffffffc2f4000000 c2ffffff2f000000 ffffffc2f4000000 - {c=>6,a=>-14,b=>1} f2ffffff31000000 f2ffffff31000000 f2ffffff31000000 fffffff238000000 f2ffffff31000000 f2ffffff31000000 fffffff238000000 f2ffffff31000000 fffffff238000000 - {c=>6,a=>63,b=>7} 3f00000037000000 3f00000037000000 3f00000037000000 0000003ff8000000 3f00000037000000 3f00000037000000 0000003ff8000000 3f00000037000000 0000003ff8000000 - {c=>3,a=>41,b=>2} 290000001a000000 290000001a000000 290000001a000000 000000294c000000 290000001a000000 290000001a000000 000000294c000000 290000001a000000 000000294c000000 - {c=>7,a=>18,b=>2} 120000003a000000 120000003a000000 120000003a000000 000000125c000000 120000003a000000 120000003a000000 000000125c000000 120000003a000000 000000125c000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>5,a=>75,b=>4,d=>6} 4b000000ac010000 4b000000ac010000 4b000000ac010000 0000004b97000000 4b000000ac010000 4b000000ac010000 0000004b97000000 4b000000ac010000 0000004b97000000 - {c=>0,a=>117,b=>6,d=>0} 7500000006000000 7500000006000000 7500000006000000 00000075c0000000 7500000006000000 7500000006000000 00000075c0000000 7500000006000000 00000075c0000000 - {c=>2,a=>-47,b=>1,d=>6} d1ffffff91010000 d1ffffff91010000 d1ffffff91010000 ffffffd12b000000 d1ffffff91010000 d1ffffff91010000 ffffffd12b000000 d1ffffff91010000 ffffffd12b000000 - {c=>4,a=>-11,b=>0,d=>3} f5ffffffe0000000 f5ffffffe0000000 f5ffffffe0000000 fffffff511800000 f5ffffffe0000000 f5ffffffe0000000 fffffff511800000 f5ffffffe0000000 fffffff511800000 - {c=>1,a=>64,b=>7,d=>5} 400000004f010000 400000004f010000 400000004f010000 00000040e6800000 400000004f010000 400000004f010000 00000040e6800000 400000004f010000 00000040e6800000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>1,c=>3,a=>-106,b=>7,d=>0} 96ffffff1f020000 96ffffff1f020000 96ffffff1f020000 ffffff96ec100000 96ffffff1f020000 96ffffff1f020000 ffffff96ec100000 96ffffff1f020000 ffffff96ec100000 - {e=>5,c=>5,a=>-62,b=>1,d=>2} c2ffffffa90a0000 c2ffffffa90a0000 c2ffffffa90a0000 ffffffc235500000 c2ffffffa90a0000 c2ffffffa90a0000 ffffffc235500000 c2ffffffa90a0000 ffffffc235500000 - {e=>6,c=>2,a=>-4,b=>4,d=>4} fcffffff140d0000 fcffffff140d0000 fcffffff140d0000 fffffffc8a600000 fcffffff140d0000 fcffffff140d0000 fffffffc8a600000 fcffffff140d0000 fffffffc8a600000 - {e=>5,c=>7,a=>-93,b=>4,d=>2} a3ffffffbc0a0000 a3ffffffbc0a0000 a3ffffffbc0a0000 ffffffa39d500000 a3ffffffbc0a0000 a3ffffffbc0a0000 ffffffa39d500000 a3ffffffbc0a0000 ffffffa39d500000 - {e=>7,c=>3,a=>67,b=>3,d=>2} 430000009b0e0000 430000009b0e0000 430000009b0e0000 000000436d700000 430000009b0e0000 430000009b0e0000 000000436d700000 430000009b0e0000 000000436d700000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>2,c=>6,a=>83,b=>3,d=>5,f=>4} 5300000073450000 5300000073450000 5300000073450000 000000537aa80000 5300000073450000 5300000073450000 000000537aa80000 5300000073450000 000000537aa80000 - {e=>0,c=>5,a=>121,b=>1,d=>7,f=>3} 79000000e9310000 79000000e9310000 79000000e9310000 0000007937860000 79000000e9310000 79000000e9310000 0000007937860000 79000000e9310000 0000007937860000 - {e=>7,c=>2,a=>-79,b=>3,d=>7,f=>1} b1ffffffd31f0000 b1ffffffd31f0000 b1ffffffd31f0000 ffffffb16bf20000 b1ffffffd31f0000 b1ffffffd31f0000 ffffffb16bf20000 b1ffffffd31f0000 ffffffb16bf20000 - {e=>4,c=>0,a=>-82,b=>1,d=>3,f=>3} aeffffffc1380000 aeffffffc1380000 aeffffffc1380000 ffffffae21c60000 aeffffffc1380000 aeffffffc1380000 ffffffae21c60000 aeffffffc1380000 ffffffae21c60000 - {e=>3,c=>4,a=>32,b=>4,d=>6,f=>0} 20000000a4070000 20000000a4070000 20000000a4070000 0000002093300000 20000000a4070000 20000000a4070000 0000002093300000 20000000a4070000 0000002093300000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>7,c=>4,a=>-119,g=>7,b=>6,d=>2,f=>5} 89ffffffa65e0700 89ffffffa65e0700 89ffffffa65e0700 ffffff89d17ae000 89ffffffa65e0700 89ffffffa65e0700 ffffff89d17ae000 89ffffffa65e0700 ffffff89d17ae000 - {e=>4,c=>7,a=>75,g=>5,b=>7,d=>2,f=>3} 4b000000bf380500 4b000000bf380500 4b000000bf380500 0000004bfd46a000 4b000000bf380500 4b000000bf380500 0000004bfd46a000 4b000000bf380500 0000004bfd46a000 - {e=>1,c=>0,a=>-122,g=>5,b=>5,d=>2,f=>1} 86ffffff85120500 86ffffff85120500 86ffffff85120500 ffffff86a112a000 86ffffff85120500 86ffffff85120500 ffffff86a112a000 86ffffff85120500 ffffff86a112a000 - {e=>7,c=>6,a=>-118,g=>7,b=>5,d=>1,f=>3} 8affffff753e0700 8affffff753e0700 8affffff753e0700 ffffff8ab8f6e000 8affffff753e0700 8affffff753e0700 ffffff8ab8f6e000 8affffff753e0700 ffffff8ab8f6e000 - {e=>6,c=>5,a=>-69,g=>0,b=>7,d=>1,f=>1} bbffffff6f1c0000 bbffffff6f1c0000 bbffffff6f1c0000 ffffffbbf4e20000 bbffffff6f1c0000 bbffffff6f1c0000 ffffffbbf4e20000 bbffffff6f1c0000 ffffffbbf4e20000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>22,d=>3,c=>6,h=>27,b=>7,g=>2,f=>4} 16000000f74e02001b000000 16000000f74e02001b00000000000000 16000000f74e02001b00000000000000 00000016f9f840000000001b 16000000f74e02001b000000 16000000f74e02001b000000 00000016f9f84000000000000000001b 16000000f74e02001b000000 00000016f9f840000000001b - {e=>0,a=>-54,d=>1,c=>7,h=>112,b=>1,g=>4,f=>2} caffffff7920040070000000 caffffff792004007000000000000000 caffffff792004007000000000000000 ffffffca3c84800000000070 caffffff7920040070000000 caffffff7920040070000000 ffffffca3c8480000000000000000070 caffffff7920040070000000 ffffffca3c84800000000070 - {e=>7,a=>1,d=>5,c=>7,h=>4,b=>5,g=>5,f=>4} 010000007d4f050004000000 010000007d4f05000400000000000000 010000007d4f05000400000000000000 00000001bef8a00000000004 010000007d4f050004000000 010000007d4f050004000000 00000001bef8a0000000000000000004 010000007d4f050004000000 00000001bef8a00000000004 - {e=>2,a=>10,d=>0,c=>1,h=>37,b=>2,g=>4,f=>7} 0a0000000a74040025000000 0a0000000a7404002500000000000000 0a0000000a7404002500000000000000 0000000a442e800000000025 0a0000000a74040025000000 0a0000000a74040025000000 0000000a442e80000000000000000025 0a0000000a74040025000000 0000000a442e800000000025 - {e=>4,a=>-17,d=>3,c=>0,h=>76,b=>4,g=>0,f=>6} efffffffc46800004c000000 efffffffc46800004c00000000000000 efffffffc46800004c00000000000000 ffffffef81cc00000000004c efffffffc46800004c000000 efffffffc46800004c000000 ffffffef81cc0000000000000000004c efffffffc46800004c000000 ffffffef81cc00000000004c = struct umixed3 { long a; unsigned char b:3; }; - {a=>83,b=>2} 5300000002000000 53000000000000000200000000000000 53000000000000000200000000000000 0000005340000000 5300000002000000 5300000002000000 00000000000000534000000000000000 5300000002000000 0000005340000000 - {a=>21,b=>7} 1500000007000000 15000000000000000700000000000000 15000000000000000700000000000000 00000015e0000000 1500000007000000 1500000007000000 0000000000000015e000000000000000 1500000007000000 00000015e0000000 - {a=>-112,b=>2} 90ffffff02000000 90ffffffffffffff0200000000000000 90ffffffffffffff0200000000000000 ffffff9040000000 90ffffff02000000 90ffffff02000000 ffffffffffffff904000000000000000 90ffffff02000000 ffffff9040000000 - {a=>56,b=>1} 3800000001000000 38000000000000000100000000000000 38000000000000000100000000000000 0000003820000000 3800000001000000 3800000001000000 00000000000000382000000000000000 3800000001000000 0000003820000000 - {a=>-36,b=>0} dcffffff00000000 dcffffffffffffff0000000000000000 dcffffffffffffff0000000000000000 ffffffdc00000000 dcffffff00000000 dcffffff00000000 ffffffffffffffdc0000000000000000 dcffffff00000000 ffffffdc00000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-25,b=>4} e7ffffff2c000000 e7ffffffffffffff2c00000000000000 e7ffffffffffffff2c00000000000000 ffffffe794000000 e7ffffff2c000000 e7ffffff2c000000 ffffffffffffffe79400000000000000 e7ffffff2c000000 ffffffe794000000 - {c=>4,a=>-122,b=>2} 86ffffff22000000 86ffffffffffffff2200000000000000 86ffffffffffffff2200000000000000 ffffff8650000000 86ffffff22000000 86ffffff22000000 ffffffffffffff865000000000000000 86ffffff22000000 ffffff8650000000 - {c=>1,a=>-102,b=>1} 9affffff09000000 9affffffffffffff0900000000000000 9affffffffffffff0900000000000000 ffffff9a24000000 9affffff09000000 9affffff09000000 ffffffffffffff9a2400000000000000 9affffff09000000 ffffff9a24000000 - {c=>4,a=>2,b=>3} 0200000023000000 02000000000000002300000000000000 02000000000000002300000000000000 0000000270000000 0200000023000000 0200000023000000 00000000000000027000000000000000 0200000023000000 0000000270000000 - {c=>4,a=>120,b=>2} 7800000022000000 78000000000000002200000000000000 78000000000000002200000000000000 0000007850000000 7800000022000000 7800000022000000 00000000000000785000000000000000 7800000022000000 0000007850000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>5,a=>-39,b=>2,d=>0} d9ffffff2a000000 d9ffffffffffffff2a00000000000000 d9ffffffffffffff2a00000000000000 ffffffd954000000 d9ffffff2a000000 d9ffffff2a000000 ffffffffffffffd95400000000000000 d9ffffff2a000000 ffffffd954000000 - {c=>3,a=>-53,b=>0,d=>4} cbffffff18010000 cbffffffffffffff1801000000000000 cbffffffffffffff1801000000000000 ffffffcb0e000000 cbffffff18010000 cbffffff18010000 ffffffffffffffcb0e00000000000000 cbffffff18010000 ffffffcb0e000000 - {c=>5,a=>-104,b=>4,d=>7} 98ffffffec010000 98ffffffffffffffec01000000000000 98ffffffffffffffec01000000000000 ffffff9897800000 98ffffffec010000 98ffffffec010000 ffffffffffffff989780000000000000 98ffffffec010000 ffffff9897800000 - {c=>6,a=>-123,b=>4,d=>2} 85ffffffb4000000 85ffffffffffffffb400000000000000 85ffffffffffffffb400000000000000 ffffff8599000000 85ffffffb4000000 85ffffffb4000000 ffffffffffffff859900000000000000 85ffffffb4000000 ffffff8599000000 - {c=>3,a=>-127,b=>3,d=>6} 81ffffff9b010000 81ffffffffffffff9b01000000000000 81ffffffffffffff9b01000000000000 ffffff816f000000 81ffffff9b010000 81ffffff9b010000 ffffffffffffff816f00000000000000 81ffffff9b010000 ffffff816f000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>6,c=>5,a=>61,b=>1,d=>1} 3d000000690c0000 3d00000000000000690c000000000000 3d00000000000000690c000000000000 0000003d34e00000 3d000000690c0000 3d000000690c0000 000000000000003d34e0000000000000 3d000000690c0000 0000003d34e00000 - {e=>7,c=>2,a=>72,b=>7,d=>7} 48000000d70f0000 4800000000000000d70f000000000000 4800000000000000d70f000000000000 00000048ebf00000 48000000d70f0000 48000000d70f0000 0000000000000048ebf0000000000000 48000000d70f0000 00000048ebf00000 - {e=>6,c=>1,a=>33,b=>1,d=>5} 21000000490d0000 2100000000000000490d000000000000 2100000000000000490d000000000000 0000002126e00000 21000000490d0000 21000000490d0000 000000000000002126e0000000000000 21000000490d0000 0000002126e00000 - {e=>1,c=>5,a=>59,b=>3,d=>6} 3b000000ab030000 3b00000000000000ab03000000000000 3b00000000000000ab03000000000000 0000003b77100000 3b000000ab030000 3b000000ab030000 000000000000003b7710000000000000 3b000000ab030000 0000003b77100000 - {e=>5,c=>7,a=>-74,b=>4,d=>1} b6ffffff7c0a0000 b6ffffffffffffff7c0a000000000000 b6ffffffffffffff7c0a000000000000 ffffffb69cd00000 b6ffffff7c0a0000 b6ffffff7c0a0000 ffffffffffffffb69cd0000000000000 b6ffffff7c0a0000 ffffffb69cd00000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>2,c=>0,a=>72,b=>0,d=>6,f=>6} 4800000080650000 48000000000000008065000000000000 48000000000000008065000000000000 00000048032c0000 4800000080650000 4800000080650000 0000000000000048032c000000000000 4800000080650000 00000048032c0000 - {e=>1,c=>6,a=>-5,b=>3,d=>2,f=>4} fbffffffb3420000 fbffffffffffffffb342000000000000 fbffffffffffffffb342000000000000 fffffffb79180000 fbffffffb3420000 fbffffffb3420000 fffffffffffffffb7918000000000000 fbffffffb3420000 fffffffb79180000 - {e=>3,c=>4,a=>-25,b=>7,d=>2,f=>1} e7ffffffa7160000 e7ffffffffffffffa716000000000000 e7ffffffffffffffa716000000000000 ffffffe7f1320000 e7ffffffa7160000 e7ffffffa7160000 ffffffffffffffe7f132000000000000 e7ffffffa7160000 ffffffe7f1320000 - {e=>6,c=>2,a=>127,b=>5,d=>2,f=>0} 7f000000950c0000 7f00000000000000950c000000000000 7f00000000000000950c000000000000 0000007fa9600000 7f000000950c0000 7f000000950c0000 000000000000007fa960000000000000 7f000000950c0000 0000007fa9600000 - {e=>1,c=>2,a=>-28,b=>2,d=>6,f=>6} e4ffffff92630000 e4ffffffffffffff9263000000000000 e4ffffffffffffff9263000000000000 ffffffe44b1c0000 e4ffffff92630000 e4ffffff92630000 ffffffffffffffe44b1c000000000000 e4ffffff92630000 ffffffe44b1c0000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>5,c=>0,a=>-20,g=>4,b=>1,d=>6,f=>7} ecffffff817b0400 ecffffffffffffff817b040000000000 ecffffffffffffff817b040000000000 ffffffec235e8000 ecffffff817b0400 ecffffff817b0400 ffffffffffffffec235e800000000000 ecffffff817b0400 ffffffec235e8000 - {e=>6,c=>7,a=>89,g=>0,b=>6,d=>5,f=>4} 590000007e4d0000 59000000000000007e4d000000000000 59000000000000007e4d000000000000 00000059dee80000 590000007e4d0000 590000007e4d0000 0000000000000059dee8000000000000 590000007e4d0000 00000059dee80000 - {e=>2,c=>7,a=>75,g=>1,b=>0,d=>5,f=>5} 4b00000078550100 4b000000000000007855010000000000 4b000000000000007855010000000000 0000004b1eaa2000 4b00000078550100 4b00000078550100 000000000000004b1eaa200000000000 4b00000078550100 0000004b1eaa2000 - {e=>5,c=>6,a=>-7,g=>2,b=>2,d=>4,f=>2} f9ffffff322b0200 f9ffffffffffffff322b020000000000 f9ffffffffffffff322b020000000000 fffffff95a544000 f9ffffff322b0200 f9ffffff322b0200 fffffffffffffff95a54400000000000 f9ffffff322b0200 fffffff95a544000 - {e=>0,c=>5,a=>-93,g=>6,b=>5,d=>1,f=>2} a3ffffff6d200600 a3ffffffffffffff6d20060000000000 a3ffffffffffffff6d20060000000000 ffffffa3b484c000 a3ffffff6d200600 a3ffffff6d200600 ffffffffffffffa3b484c00000000000 a3ffffff6d200600 ffffffa3b484c000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>-73,d=>5,c=>2,h=>27,b=>3,g=>0,f=>5} b7ffffff535f00001b000000 b7ffffffffffffff535f0000000000001b00000000000000 b7ffffffffffffff535f0000000000001b00000000000000 ffffffb76afa00000000001b b7ffffff535f00001b000000 b7ffffff535f00001b000000 ffffffffffffffb76afa000000000000000000000000001b b7ffffff535f00001b000000 ffffffb76afa00000000001b - {e=>5,a=>-115,d=>0,c=>4,h=>51,b=>2,g=>3,f=>6} 8dffffff226a030033000000 8dffffffffffffff226a0300000000003300000000000000 8dffffffffffffff226a0300000000003300000000000000 ffffff8d505c600000000033 8dffffff226a030033000000 8dffffff226a030033000000 ffffffffffffff8d505c6000000000000000000000000033 8dffffff226a030033000000 ffffff8d505c600000000033 - {e=>4,a=>20,d=>0,c=>2,h=>56,b=>5,g=>7,f=>4} 140000001548070038000000 140000000000000015480700000000003800000000000000 140000000000000015480700000000003800000000000000 00000014a848e00000000038 140000001548070038000000 140000001548070038000000 0000000000000014a848e000000000000000000000000038 140000001548070038000000 00000014a848e00000000038 - {e=>6,a=>115,d=>7,c=>2,h=>157,b=>2,g=>0,f=>3} 73000000d23d00009d000000 7300000000000000d23d0000000000009d00000000000000 7300000000000000d23d0000000000009d00000000000000 000000734be600000000009d 73000000d23d00009d000000 73000000d23d00009d000000 00000000000000734be6000000000000000000000000009d 73000000d23d00009d000000 000000734be600000000009d - {e=>1,a=>101,d=>4,c=>2,h=>189,b=>7,g=>1,f=>6} 6500000017630100bd000000 65000000000000001763010000000000bd00000000000000 65000000000000001763010000000000bd00000000000000 00000065ea1c2000000000bd 6500000017630100bd000000 6500000017630100bd000000 0000000000000065ea1c20000000000000000000000000bd 6500000017630100bd000000 00000065ea1c2000000000bd = struct umixed_no_pack { unsigned char a:3; }; - {a=>2} 02 02 02 40 02000000 02 40 02 40 - {a=>3} 03 03 03 60 03000000 03 60 03 60 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>6} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>5} 05 05 05 a0 05000000 05 a0 05 a0 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; }; - {a=>3,b=>4} 23 23 23 70 23000000 23 70 23 70 - {a=>4,b=>4} 24 24 24 90 24000000 24 90 24 90 - {a=>0,b=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>6,b=>0} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>7,b=>2} 17 17 17 e8 17000000 17 e8 17 e8 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>2,a=>4,b=>5} ac00 ac00 ac00 9500 ac000000 ac00 9500 ac00 9500 - {c=>6,a=>2,b=>7} ba01 ba01 ba01 5f00 ba010000 ba01 5f00 ba01 5f00 - {c=>5,a=>1,b=>5} 6901 6901 6901 3680 69010000 6901 3680 6901 3680 - {c=>5,a=>1,b=>5} 6901 6901 6901 3680 69010000 6901 3680 6901 3680 - {c=>6,a=>2,b=>0} 8201 8201 8201 4300 82010000 8201 4300 8201 4300 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>2,a=>3,b=>4,d=>16659437} a3000000ed33fe00 a3000000ed33fe00 a3000000ed33fe00 710000000fe33ed0 a3000000ed33fe00 a3000000ed33fe00 710000000fe33ed0 a3000000ed33fe00 710000000fe33ed0 - {c=>7,a=>2,b=>3,d=>201260983} da010000b7fffe0b da010000b7fffe0b da010000b7fffe0b 4f800000bfeffb70 da010000b7fffe0b da010000b7fffe0b 4f800000bfeffb70 da010000b7fffe0b 4f800000bfeffb70 - {c=>1,a=>6,b=>3,d=>256219575} 5e000000b799450f 5e000000b799450f 5e000000b799450f cc800000f4599b70 5e000000b799450f 5e000000b799450f cc800000f4599b70 5e000000b799450f cc800000f4599b70 - {c=>7,a=>6,b=>0,d=>55997687} c6010000f7745603 c6010000f7745603 c6010000f7745603 c380000035674f70 c6010000f7745603 c6010000f7745603 c380000035674f70 c6010000f7745603 c380000035674f70 - {c=>2,a=>4,b=>4,d=>103672891} a40000003bec2d06 a40000003bec2d06 a40000003bec2d06 9100000062dec3b0 a40000003bec2d06 a40000003bec2d06 9100000062dec3b0 a40000003bec2d06 9100000062dec3b0 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>4,c=>3,a=>3,b=>1,d=>63303944} cb00000008f1c543 cb00000008f1c543 cb00000008f1c543 658000003c5f1088 cb00000008f1c543 cb00000008f1c543 658000003c5f1088 cb00000008f1c543 658000003c5f1088 - {e=>6,c=>1,a=>7,b=>5,d=>115286698} 6f000000aa22df66 6f000000aa22df66 6f000000aa22df66 f48000006df22aac 6f000000aa22df66 6f000000aa22df66 f48000006df22aac 6f000000aa22df66 f48000006df22aac - {e=>5,c=>7,a=>5,b=>1,d=>33758906} cd010000ba1e0352 cd010000ba1e0352 cd010000ba1e0352 a78000002031ebaa cd010000ba1e0352 cd010000ba1e0352 a78000002031ebaa cd010000ba1e0352 a78000002031ebaa - {e=>1,c=>7,a=>2,b=>1,d=>75998826} ca0100006aa68714 ca0100006aa68714 ca0100006aa68714 47800000487a66a2 ca0100006aa68714 ca0100006aa68714 47800000487a66a2 ca0100006aa68714 47800000487a66a2 - {e=>0,c=>4,a=>2,b=>7,d=>23580046} 3a0100008ecd6701 3a0100008ecd6701 3a0100008ecd6701 5e000000167cd8e0 3a0100008ecd6701 3a0100008ecd6701 5e000000167cd8e0 3a0100008ecd6701 5e000000167cd8e0 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>1,c=>0,a=>2,b=>7,d=>158148049,f=>0} 3a000000d1256d1900000000 3a000000d1256d1900000000 3a000000d1256d1900000000 5c00000096d25d1200000000 3a000000d1256d1900000000 3a000000d1256d1900000000 5c00000096d25d1200000000 3a000000d1256d1900000000 5c00000096d25d1200000000 - {e=>3,c=>1,a=>1,b=>7,d=>228592629,f=>0} 79000000f50ba03d00000000 79000000f50ba03d00000000 79000000f50ba03d00000000 3c800000da00bf5600000000 79000000f50ba03d00000000 79000000f50ba03d00000000 3c800000da00bf5600000000 79000000f50ba03d00000000 3c800000da00bf5600000000 - {e=>6,c=>5,a=>5,b=>6,d=>13400160,f=>0} 750100006078cc6000000000 750100006078cc6000000000 750100006078cc6000000000 ba8000000cc7860c00000000 750100006078cc6000000000 750100006078cc6000000000 ba8000000cc7860c00000000 750100006078cc6000000000 ba8000000cc7860c00000000 - {e=>1,c=>2,a=>1,b=>1,d=>252868262,f=>3} 89000000a676121f03000000 89000000a676121f03000000 89000000a676121f03000000 25000000f1276a62c0000000 89000000a676121f03000000 89000000a676121f03000000 25000000f1276a62c0000000 89000000a676121f03000000 25000000f1276a62c0000000 - {e=>6,c=>3,a=>3,b=>0,d=>45793175,f=>0} c300000097bfba6200000000 c300000097bfba6200000000 c300000097bfba6200000000 618000002babf97c00000000 c300000097bfba6200000000 c300000097bfba6200000000 618000002babf97c00000000 c300000097bfba6200000000 618000002babf97c00000000 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>1,c=>2,a=>6,g=>1699,b=>6,d=>41631336,f=>2} b6000000683e7b128e1a0000 b6000000683e7b128e1a0000 b6000000683e7b128e1a0000 d900000027b3e6828d460000 b6000000683e7b128e1a0000 b6000000683e7b128e1a0000 d900000027b3e6828d460000 b6000000683e7b128e1a0000 d900000027b3e6828d460000 - {e=>2,c=>0,a=>2,g=>602,b=>2,d=>186423654,f=>2} 1200000066991c2b6a090000 1200000066991c2b6a090000 1200000066991c2b6a090000 48000000b1c9966484b40000 1200000066991c2b6a090000 1200000066991c2b6a090000 48000000b1c9966484b40000 1200000066991c2b6a090000 48000000b1c9966484b40000 - {e=>2,c=>7,a=>4,g=>6342,b=>7,d=>247473427,f=>2} fc0100001325c02e1a630000 fc0100001325c02e1a630000 fc0100001325c02e1a630000 9f800000ec025134b18c0000 fc0100001325c02e1a630000 fc0100001325c02e1a630000 9f800000ec025134b18c0000 fc0100001325c02e1a630000 9f800000ec025134b18c0000 - {e=>5,c=>7,a=>4,g=>2765,b=>7,d=>238172392,f=>1} fc010000e838325e352b0000 fc010000e838325e352b0000 fc010000e838325e352b0000 9f800000e3238e8a559a0000 fc010000e838325e352b0000 fc010000e838325e352b0000 9f800000e3238e8a559a0000 fc010000e838325e352b0000 9f800000e3238e8a559a0000 - {e=>1,c=>7,a=>1,g=>5584,b=>7,d=>2742541,f=>3} f90100000dd9291043570000 f90100000dd9291043570000 f90100000dd9291043570000 3f800000029d90d2eba00000 f90100000dd9291043570000 f90100000dd9291043570000 3f800000029d90d2eba00000 f90100000dd9291043570000 3f800000029d90d2eba00000 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; signed int h; }; - {e=>5,a=>0,d=>63927408,c=>7,h=>-86,b=>6,g=>5835,f=>1} f00100007074cf532d5b0000aaffffff f00100007074cf532d5b0000aaffffff f00100007074cf532d5b0000aaffffff 1b8000003cf7470a6d960000ffffffaa f00100007074cf532d5b0000aaffffff f00100007074cf532d5b0000aaffffff 1b8000003cf7470a6d960000ffffffaa f00100007074cf532d5b0000aaffffff 1b8000003cf7470a6d960000ffffffaa - {e=>7,a=>3,d=>165783275,c=>6,h=>-85,b=>5,g=>3147,f=>0} ab010000eba6e1792c310000abffffff ab010000eba6e1792c310000abffffff ab010000eba6e1792c310000abffffff 770000009e1a6ebe18960000ffffffab ab010000eba6e1792c310000abffffff ab010000eba6e1792c310000abffffff 770000009e1a6ebe18960000ffffffab ab010000eba6e1792c310000abffffff 770000009e1a6ebe18960000ffffffab - {e=>7,a=>0,d=>262181766,c=>7,h=>-76,b=>2,g=>3227,f=>0} d00100008693a07f6c320000b4ffffff d00100008693a07f6c320000b4ffffff d00100008693a07f6c320000b4ffffff 0b800000fa09386e19360000ffffffb4 d00100008693a07f6c320000b4ffffff d00100008693a07f6c320000b4ffffff 0b800000fa09386e19360000ffffffb4 d00100008693a07f6c320000b4ffffff 0b800000fa09386e19360000ffffffb4 - {e=>2,a=>1,d=>258295770,c=>1,h=>-44,b=>2,g=>2696,f=>2} 51000000da47652f222a0000d4ffffff 51000000da47652f222a0000d4ffffff 51000000da47652f222a0000d4ffffff 28800000f6547da495100000ffffffd4 51000000da47652f222a0000d4ffffff 51000000da47652f222a0000d4ffffff 28800000f6547da495100000ffffffd4 51000000da47652f222a0000d4ffffff 28800000f6547da495100000ffffffd4 - {e=>6,a=>7,d=>149674579,c=>6,h=>44,b=>7,g=>3480,f=>1} bf01000053daeb68613600002c000000 bf01000053daeb68613600002c000000 bf01000053daeb68613600002c000000 ff0000008ebda53c5b3000000000002c bf01000053daeb68613600002c000000 bf01000053daeb68613600002c000000 ff0000008ebda53c5b3000000000002c bf01000053daeb68613600002c000000 ff0000008ebda53c5b3000000000002c = struct umixed_no_pack { char a; unsigned char b:3; }; - {a=>18,b=>7} 1207 1207 1207 12e0 12070000 1207 12e0 1207 12e0 - {a=>-34,b=>4} de04 de04 de04 de80 de040000 de04 de80 de04 de80 - {a=>-63,b=>4} c104 c104 c104 c180 c1040000 c104 c180 c104 c180 - {a=>-10,b=>4} f604 f604 f604 f680 f6040000 f604 f680 f604 f680 - {a=>117,b=>1} 7501 7501 7501 7520 75010000 7501 7520 7501 7520 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-68,b=>6} bc26 bc26 bc26 bcd0 bc260000 bc26 bcd0 bc26 bcd0 - {c=>7,a=>48,b=>6} 303e 303e 303e 30dc 303e0000 303e 30dc 303e 30dc - {c=>7,a=>124,b=>0} 7c38 7c38 7c38 7c1c 7c380000 7c38 7c1c 7c38 7c1c - {c=>7,a=>111,b=>4} 6f3c 6f3c 6f3c 6f9c 6f3c0000 6f3c 6f9c 6f3c 6f9c - {c=>5,a=>-83,b=>1} ad29 ad29 ad29 ad34 ad290000 ad29 ad34 ad29 ad34 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>2,a=>116,b=>6,d=>5} 74160500 74160500 74160500 74c8a000 74160500 74160500 74c8a000 74160500 74c8a000 - {c=>0,a=>-85,b=>7,d=>7} ab070700 ab070700 ab070700 abe0e000 ab070700 ab070700 abe0e000 ab070700 abe0e000 - {c=>7,a=>13,b=>7,d=>6} 0d3f0600 0d3f0600 0d3f0600 0dfcc000 0d3f0600 0d3f0600 0dfcc000 0d3f0600 0dfcc000 - {c=>6,a=>118,b=>4,d=>6} 76340600 76340600 76340600 7698c000 76340600 76340600 7698c000 76340600 7698c000 - {c=>3,a=>59,b=>4,d=>5} 3b1c0500 3b1c0500 3b1c0500 3b8ca000 3b1c0500 3b1c0500 3b8ca000 3b1c0500 3b8ca000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>27672616,c=>4,a=>110,b=>5,d=>2} 6e2502002840a601 6e2502002840a601 6e2502002840a601 6eb040001a640280 6e2502002840a601 6e2502002840a601 6eb040001a640280 6e2502002840a601 6eb040001a640280 - {e=>87433172,c=>4,a=>106,b=>7,d=>5} 6a270500d41f3605 6a270500d41f3605 6a270500d41f3605 6af0a0005361fd40 6a270500d41f3605 6a270500d41f3605 6af0a0005361fd40 6a270500d41f3605 6af0a0005361fd40 - {e=>33757072,c=>4,a=>-72,b=>4,d=>2} b824020090170302 b824020090170302 b824020090170302 b890400020317900 b824020090170302 b824020090170302 b890400020317900 b824020090170302 b890400020317900 - {e=>12459290,c=>0,a=>49,b=>7,d=>0} 310700001a1dbe00 310700001a1dbe00 310700001a1dbe00 31e000000be1d1a0 310700001a1dbe00 310700001a1dbe00 31e000000be1d1a0 310700001a1dbe00 31e000000be1d1a0 - {e=>265383931,c=>3,a=>-91,b=>4,d=>1} a51c0100fb6fd10f a51c0100fb6fd10f a51c0100fb6fd10f a58c2000fd16ffb0 a51c0100fb6fd10f a51c0100fb6fd10f a58c2000fd16ffb0 a51c0100fb6fd10f a58c2000fd16ffb0 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>121017809,c=>3,a=>-127,b=>5,d=>0,f=>6} 811d0000d1953667 811d0000d1953667 811d0000d1953667 81ac000073695d1c 811d0000d1953667 811d0000d1953667 81ac000073695d1c 811d0000d1953667 81ac000073695d1c - {e=>38181014,c=>5,a=>-86,b=>4,d=>3,f=>1} aa2c030096984612 aa2c030096984612 aa2c030096984612 aa94600024698962 aa2c030096984612 aa2c030096984612 aa94600024698962 aa2c030096984612 aa94600024698962 - {e=>206063701,c=>2,a=>-126,b=>5,d=>3,f=>4} 821503005548484c 821503005548484c 821503005548484c 82a86000c4848558 821503005548484c 821503005548484c 82a86000c4848558 821503005548484c 82a86000c4848558 - {e=>102799155,c=>1,a=>-102,b=>5,d=>0,f=>1} 9a0d000033972016 9a0d000033972016 9a0d000033972016 9aa4000062097332 9a0d000033972016 9a0d000033972016 9aa4000062097332 9a0d000033972016 9aa4000062097332 - {e=>35733158,c=>5,a=>48,b=>7,d=>5,f=>4} 302f0500a63e2142 302f0500a63e2142 302f0500a63e2142 30f4a0002213ea68 302f0500a63e2142 302f0500a63e2142 30f4a0002213ea68 302f0500a63e2142 30f4a0002213ea68 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>259030873,c=>6,a=>-99,g=>3,b=>6,d=>6,f=>7} 9d360600597f707f03000000 9d360600597f707f03000000 9d360600597f707f03000000 9dd8c000f707f59ec0000000 9d360600597f707f03000000 9d360600597f707f03000000 9dd8c000f707f59ec0000000 9d360600597f707f03000000 9dd8c000f707f59ec0000000 - {e=>113534093,c=>3,a=>-82,g=>1,b=>7,d=>1,f=>1} ae1f01008d64c41601000000 ae1f01008d64c41601000000 ae1f01008d64c41601000000 aeec20006c4648d240000000 ae1f01008d64c41601000000 ae1f01008d64c41601000000 aeec20006c4648d240000000 ae1f01008d64c41601000000 aeec20006c4648d240000000 - {e=>196254634,c=>6,a=>-82,g=>0,b=>2,d=>5,f=>3} ae320500aa9bb23b00000000 ae320500aa9bb23b00000000 ae320500aa9bb23b00000000 ae58a000bb29baa600000000 ae320500aa9bb23b00000000 ae320500aa9bb23b00000000 ae58a000bb29baa600000000 ae320500aa9bb23b00000000 ae58a000bb29baa600000000 - {e=>211207759,c=>7,a=>26,g=>3,b=>3,d=>6,f=>4} 1a3b06004fc6964c03000000 1a3b06004fc6964c03000000 1a3b06004fc6964c03000000 1a7cc000c96c64f8c0000000 1a3b06004fc6964c03000000 1a3b06004fc6964c03000000 1a7cc000c96c64f8c0000000 1a3b06004fc6964c03000000 1a7cc000c96c64f8c0000000 - {e=>35365642,c=>5,a=>-40,g=>0,b=>6,d=>0,f=>6} d82e00000aa31b6200000000 d82e00000aa31b6200000000 d82e00000aa31b6200000000 d8d4000021ba30ac00000000 d82e00000aa31b6200000000 d82e00000aa31b6200000000 d8d4000021ba30ac00000000 d82e00000aa31b6200000000 d8d4000021ba30ac00000000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>95421875,a=>113,d=>4,c=>0,h=>6613,b=>1,g=>2,f=>5} 71010400b305b05556670000 71010400b305b05556670000 71010400b305b05556670000 712080005b005b3ab3aa0000 71010400b305b05556670000 71010400b305b05556670000 712080005b005b3ab3aa0000 71010400b305b05556670000 712080005b005b3ab3aa0000 - {e=>219735823,a=>24,d=>6,c=>5,h=>3918,b=>5,g=>1,f=>0} 182d06000fe7180d393d0000 182d06000fe7180d393d0000 182d06000fe7180d393d0000 18b4c000d18e70f05e9c0000 182d06000fe7180d393d0000 182d06000fe7180d393d0000 18b4c000d18e70f05e9c0000 182d06000fe7180d393d0000 18b4c000d18e70f05e9c0000 - {e=>114141874,a=>-127,d=>4,c=>4,h=>3018,b=>0,g=>0,f=>2} 81200400b2aacd26282f0000 81200400b2aacd26282f0000 81200400b2aacd26282f0000 811080006cdaab2417940000 81200400b2aacd26282f0000 81200400b2aacd26282f0000 811080006cdaab2417940000 81200400b2aacd26282f0000 811080006cdaab2417940000 - {e=>116157792,a=>52,d=>7,c=>1,h=>7261,b=>4,g=>0,f=>5} 340c0700606dec5674710000 340c0700606dec5674710000 340c0700606dec5674710000 3484e0006ec6d60a38ba0000 340c0700606dec5674710000 340c0700606dec5674710000 3484e0006ec6d60a38ba0000 340c0700606dec5674710000 3484e0006ec6d60a38ba0000 - {e=>164478627,a=>-23,d=>7,c=>1,h=>2155,b=>4,g=>3,f=>7} e90c0700a3becd79af210000 e90c0700a3becd79af210000 e90c0700a3becd79af210000 e984e0009cdbea3ed0d60000 e90c0700a3becd79af210000 e90c0700a3becd79af210000 e984e0009cdbea3ed0d60000 e90c0700a3becd79af210000 e984e0009cdbea3ed0d60000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>31308849,a=>-51,d=>6,c=>1,h=>3257,b=>7,g=>2,f=>6,i=>35} cd0f060031bcdd61e632000023000000 cd0f060031bcdd61e632000023000000 cd0f060031bcdd61e632000023000000 cde4c0001ddbc31c9972000000000023 cd0f060031bcdd61e632000023000000 cd0f060031bcdd61e632000023000000 cde4c0001ddbc31c9972000000000023 cd0f060031bcdd61e632000023000000 cde4c0001ddbc31c9972000000000023 - {e=>200850095,a=>59,d=>3,c=>5,h=>4223,b=>2,g=>3,f=>7,i=>-30} 3b2a0300afbaf87bff410000e2ffffff 3b2a0300afbaf87bff410000e2ffffff 3b2a0300afbaf87bff410000e2ffffff 3b546000bf8baafee0fe0000ffffffe2 3b2a0300afbaf87bff410000e2ffffff 3b2a0300afbaf87bff410000e2ffffff 3b546000bf8baafee0fe0000ffffffe2 3b2a0300afbaf87bff410000e2ffffff 3b546000bf8baafee0fe0000ffffffe2 - {e=>2384984,a=>-78,d=>5,c=>3,h=>4113,b=>0,g=>3,f=>7,i=>33} b2180500586424704740000021000000 b2180500586424704740000021000000 b2180500586424704740000021000000 b20ca0000246458ee022000000000021 b2180500586424704740000021000000 b2180500586424704740000021000000 b20ca0000246458ee022000000000021 b2180500586424704740000021000000 b20ca0000246458ee022000000000021 - {e=>170834401,a=>-122,d=>7,c=>0,h=>305,b=>5,g=>1,f=>3,i=>93} 86050700e1b92e3ac50400005d000000 86050700e1b92e3ac50400005d000000 86050700e1b92e3ac50400005d000000 86a0e000a2eb9e16426200000000005d 86050700e1b92e3ac50400005d000000 86050700e1b92e3ac50400005d000000 86a0e000a2eb9e16426200000000005d 86050700e1b92e3ac50400005d000000 86a0e000a2eb9e16426200000000005d - {e=>202616049,a=>-1,d=>7,c=>3,h=>4385,b=>5,g=>3,f=>0,i=>101} ff1d0700f1ac130c8744000065000000 ff1d0700f1ac130c8744000065000000 ff1d0700f1ac130c8744000065000000 fface000c13acf10e242000000000065 ff1d0700f1ac130c8744000065000000 ff1d0700f1ac130c8744000065000000 fface000c13acf10e242000000000065 ff1d0700f1ac130c8744000065000000 fface000c13acf10e242000000000065 = struct umixed_no_pack { short a; unsigned char b:3; }; - {a=>-23,b=>3} e9ff0300 e9ff0300 e9ff0300 ffe96000 e9ff0300 e9ff0300 ffe96000 e9ff0300 ffe96000 - {a=>-90,b=>7} a6ff0700 a6ff0700 a6ff0700 ffa6e000 a6ff0700 a6ff0700 ffa6e000 a6ff0700 ffa6e000 - {a=>33,b=>2} 21000200 21000200 21000200 00214000 21000200 21000200 00214000 21000200 00214000 - {a=>-4,b=>6} fcff0600 fcff0600 fcff0600 fffcc000 fcff0600 fcff0600 fffcc000 fcff0600 fffcc000 - {a=>-31,b=>5} e1ff0500 e1ff0500 e1ff0500 ffe1a000 e1ff0500 e1ff0500 ffe1a000 e1ff0500 ffe1a000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-107,b=>7} 95ff2700 95ff2700 95ff2700 ff95f000 95ff2700 95ff2700 ff95f000 95ff2700 ff95f000 - {c=>7,a=>6,b=>0} 06003800 06003800 06003800 00061c00 06003800 06003800 00061c00 06003800 00061c00 - {c=>7,a=>47,b=>6} 2f003e00 2f003e00 2f003e00 002fdc00 2f003e00 2f003e00 002fdc00 2f003e00 002fdc00 - {c=>2,a=>-33,b=>2} dfff1200 dfff1200 dfff1200 ffdf4800 dfff1200 dfff1200 ffdf4800 dfff1200 ffdf4800 - {c=>2,a=>-93,b=>3} a3ff1300 a3ff1300 a3ff1300 ffa36800 a3ff1300 a3ff1300 ffa36800 a3ff1300 ffa36800 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>35,b=>3,d=>7} 2300e301 2300e301 2300e301 00237380 2300e301 2300e301 00237380 2300e301 00237380 - {c=>1,a=>-77,b=>0,d=>4} b3ff0801 b3ff0801 b3ff0801 ffb30600 b3ff0801 b3ff0801 ffb30600 b3ff0801 ffb30600 - {c=>4,a=>-88,b=>6,d=>0} a8ff2600 a8ff2600 a8ff2600 ffa8d000 a8ff2600 a8ff2600 ffa8d000 a8ff2600 ffa8d000 - {c=>2,a=>-10,b=>6,d=>4} f6ff1601 f6ff1601 f6ff1601 fff6ca00 f6ff1601 f6ff1601 fff6ca00 f6ff1601 fff6ca00 - {c=>2,a=>17,b=>4,d=>3} 1100d400 1100d400 1100d400 00118980 1100d400 1100d400 00118980 1100d400 00118980 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>230924365,c=>5,a=>-34,b=>0,d=>1} deff68004da0c30d deff68004da0c30d deff68004da0c30d ffde1480dc3a04d0 deff68004da0c30d deff68004da0c30d ffde1480dc3a04d0 deff68004da0c30d ffde1480dc3a04d0 - {e=>235124443,c=>6,a=>-25,b=>1,d=>0} e7ff3100dbb6030e e7ff3100dbb6030e e7ff3100dbb6030e ffe73800e03b6db0 e7ff3100dbb6030e e7ff3100dbb6030e ffe73800e03b6db0 e7ff3100dbb6030e ffe73800e03b6db0 - {e=>218139234,c=>4,a=>-11,b=>4,d=>6} f5ffa401628a000d f5ffa401628a000d f5ffa401628a000d fff59300d008a620 f5ffa401628a000d f5ffa401628a000d fff59300d008a620 f5ffa401628a000d fff59300d008a620 - {e=>96460758,c=>3,a=>-25,b=>1,d=>3} e7ffd900d6dfbf05 e7ffd900d6dfbf05 e7ffd900d6dfbf05 ffe72d805bfdfd60 e7ffd900d6dfbf05 e7ffd900d6dfbf05 ffe72d805bfdfd60 e7ffd900d6dfbf05 ffe72d805bfdfd60 - {e=>143236939,c=>5,a=>117,b=>3,d=>0} 75002b004b9f8908 75002b004b9f8908 75002b004b9f8908 007574008899f4b0 75002b004b9f8908 75002b004b9f8908 007574008899f4b0 75002b004b9f8908 007574008899f4b0 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>81182875,c=>2,a=>49,b=>2,d=>5,f=>3} 310052019bc0d634 310052019bc0d634 310052019bc0d634 00314a804d6c09b6 310052019bc0d634 310052019bc0d634 00314a804d6c09b6 310052019bc0d634 00314a804d6c09b6 - {e=>165824077,c=>1,a=>51,b=>0,d=>0,f=>4} 330008004d46e249 330008004d46e249 330008004d46e249 003304009e2464d8 330008004d46e249 330008004d46e249 003304009e2464d8 330008004d46e249 003304009e2464d8 - {e=>20080403,c=>1,a=>41,b=>4,d=>7,f=>6} 2900cc0113673261 2900cc0113673261 2900cc0113673261 002987801326713c 2900cc0113673261 2900cc0113673261 002987801326713c 2900cc0113673261 002987801326713c - {e=>100629693,c=>0,a=>61,b=>6,d=>6,f=>1} 3d008601bd7cff15 3d008601bd7cff15 3d008601bd7cff15 003dc3005ff7cbd2 3d008601bd7cff15 3d008601bd7cff15 003dc3005ff7cbd2 3d008601bd7cff15 003dc3005ff7cbd2 - {e=>190350127,c=>5,a=>-101,b=>6,d=>0,f=>3} 9bff2e002f83583b 9bff2e002f83583b 9bff2e002f83583b ff9bd400b58832f6 9bff2e002f83583b 9bff2e002f83583b ff9bd400b58832f6 9bff2e002f83583b ff9bd400b58832f6 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>227828092,c=>0,a=>-16,g=>2,b=>1,d=>0,f=>0} f0ff01007c61940d02000000 f0ff01007c61940d02000000 f0ff01007c61940d02000000 fff02000d94617c080000000 f0ff01007c61940d02000000 f0ff01007c61940d02000000 fff02000d94617c080000000 f0ff01007c61940d02000000 fff02000d94617c080000000 - {e=>182355747,c=>1,a=>112,g=>0,b=>0,d=>3,f=>7} 7000c8002387de7a00000000 7000c8002387de7a00000000 7000c8002387de7a00000000 00700580ade8723e00000000 7000c8002387de7a00000000 7000c8002387de7a00000000 00700580ade8723e00000000 7000c8002387de7a00000000 00700580ade8723e00000000 - {e=>183757219,c=>3,a=>117,g=>3,b=>6,d=>6,f=>2} 75009e01a3e9f32a03000000 75009e01a3e9f32a03000000 75009e01a3e9f32a03000000 0075cf00af3e9a34c0000000 75009e01a3e9f32a03000000 75009e01a3e9f32a03000000 0075cf00af3e9a34c0000000 75009e01a3e9f32a03000000 0075cf00af3e9a34c0000000 - {e=>250036859,c=>6,a=>66,g=>1,b=>2,d=>0,f=>6} 420032007b42e76e01000000 420032007b42e76e01000000 420032007b42e76e01000000 00425800ee7427bc40000000 420032007b42e76e01000000 420032007b42e76e01000000 00425800ee7427bc40000000 420032007b42e76e01000000 00425800ee7427bc40000000 - {e=>238803723,c=>4,a=>110,g=>0,b=>1,d=>6,f=>1} 6e00a1010bdb3b1e00000000 6e00a1010bdb3b1e00000000 6e00a1010bdb3b1e00000000 006e3300e3bdb0b200000000 6e00a1010bdb3b1e00000000 6e00a1010bdb3b1e00000000 006e3300e3bdb0b200000000 6e00a1010bdb3b1e00000000 006e3300e3bdb0b200000000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>123354721,a=>77,d=>1,c=>5,h=>6510,b=>2,g=>2,f=>7} 4d006a00613e5a77ba650000 4d006a00613e5a77ba650000 4d006a00613e5a77ba650000 004d548075a3e61eb2dc0000 4d006a00613e5a77ba650000 4d006a00613e5a77ba650000 004d548075a3e61eb2dc0000 4d006a00613e5a77ba650000 004d548075a3e61eb2dc0000 - {e=>6270702,a=>72,d=>1,c=>2,h=>3832,b=>3,g=>1,f=>4} 48005300eeae5f40e13b0000 48005300eeae5f40e13b0000 48005300eeae5f40e13b0000 0048688005faeee85df00000 48005300eeae5f40e13b0000 48005300eeae5f40e13b0000 0048688005faeee85df00000 48005300eeae5f40e13b0000 0048688005faeee85df00000 - {e=>151397274,a=>-111,d=>6,c=>7,h=>1061,b=>6,g=>3,f=>3} 91ffbe019a23063997100000 91ffbe019a23063997100000 91ffbe019a23063997100000 ff91df00906239a6c84a0000 91ffbe019a23063997100000 91ffbe019a23063997100000 ff91df00906239a6c84a0000 91ffbe019a23063997100000 ff91df00906239a6c84a0000 - {e=>139689776,a=>26,d=>3,c=>0,h=>1364,b=>6,g=>1,f=>4} 1a00c600307f534851150000 1a00c600307f534851150000 1a00c600307f534851150000 001ac1808537f3084aa80000 1a00c600307f534851150000 1a00c600307f534851150000 001ac1808537f3084aa80000 1a00c600307f534851150000 001ac1808537f3084aa80000 - {e=>36719821,a=>73,d=>2,c=>4,h=>2049,b=>7,g=>2,f=>3} 4900a700cd4c303206200000 4900a700cd4c303206200000 4900a700cd4c303206200000 0049f1002304ccd690020000 4900a700cd4c303206200000 4900a700cd4c303206200000 0049f1002304ccd690020000 4900a700cd4c303206200000 0049f1002304ccd690020000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>80052423,a=>38,d=>7,c=>5,h=>719,b=>0,g=>1,f=>2,i=>58} 2600e801c780c5243d0b00003a000000 2600e801c780c5243d0b00003a000000 2600e801c780c5243d0b00003a000000 002617804c580c74459e00000000003a 2600e801c780c5243d0b00003a000000 2600e801c780c5243d0b00003a000000 002617804c580c74459e00000000003a 2600e801c780c5243d0b00003a000000 002617804c580c74459e00000000003a - {e=>84879964,a=>-58,d=>2,c=>2,h=>7754,b=>5,g=>2,f=>6,i=>3} c6ff95005c2a0f652a79000003000000 c6ff95005c2a0f652a79000003000000 c6ff95005c2a0f652a79000003000000 ffc6a90050f2a5ccbc94000000000003 c6ff95005c2a0f652a79000003000000 c6ff95005c2a0f652a79000003000000 ffc6a90050f2a5ccbc94000000000003 c6ff95005c2a0f652a79000003000000 ffc6a90050f2a5ccbc94000000000003 - {e=>208832370,a=>-38,d=>5,c=>6,h=>7000,b=>7,g=>3,f=>1,i=>27} daff77017287721c636d00001b000000 daff77017287721c636d00001b000000 daff77017287721c636d00001b000000 ffdafa80c7287722f6b000000000001b daff77017287721c636d00001b000000 daff77017287721c636d00001b000000 ffdafa80c7287722f6b000000000001b daff77017287721c636d00001b000000 ffdafa80c7287722f6b000000000001b - {e=>224138316,a=>99,d=>4,c=>7,h=>2886,b=>1,g=>1,f=>2,i=>-60} 630039014c145c2d192d0000c4ffffff 630039014c145c2d192d0000c4ffffff 630039014c145c2d192d0000c4ffffff 00633e00d5c144c4568c0000ffffffc4 630039014c145c2d192d0000c4ffffff 630039014c145c2d192d0000c4ffffff 00633e00d5c144c4568c0000ffffffc4 630039014c145c2d192d0000c4ffffff 00633e00d5c144c4568c0000ffffffc4 - {e=>208271774,a=>61,d=>7,c=>5,h=>4345,b=>5,g=>1,f=>2,i=>-10} 3d00ed019ef9692ce5430000f6ffffff 3d00ed019ef9692ce5430000f6ffffff 3d00ed019ef9692ce5430000f6ffffff 003db780c69f99e461f20000fffffff6 3d00ed019ef9692ce5430000f6ffffff 3d00ed019ef9692ce5430000f6ffffff 003db780c69f99e461f20000fffffff6 3d00ed019ef9692ce5430000f6ffffff 003db780c69f99e461f20000fffffff6 = struct umixed_no_pack { int a; unsigned char b:3; }; - {a=>77,b=>5} 4d00000005000000 4d00000005000000 4d00000005000000 0000004da0000000 4d00000005000000 4d00000005000000 0000004da0000000 4d00000005000000 0000004da0000000 - {a=>-91,b=>1} a5ffffff01000000 a5ffffff01000000 a5ffffff01000000 ffffffa520000000 a5ffffff01000000 a5ffffff01000000 ffffffa520000000 a5ffffff01000000 ffffffa520000000 - {a=>42,b=>3} 2a00000003000000 2a00000003000000 2a00000003000000 0000002a60000000 2a00000003000000 2a00000003000000 0000002a60000000 2a00000003000000 0000002a60000000 - {a=>-15,b=>3} f1ffffff03000000 f1ffffff03000000 f1ffffff03000000 fffffff160000000 f1ffffff03000000 f1ffffff03000000 fffffff160000000 f1ffffff03000000 fffffff160000000 - {a=>-34,b=>2} deffffff02000000 deffffff02000000 deffffff02000000 ffffffde40000000 deffffff02000000 deffffff02000000 ffffffde40000000 deffffff02000000 ffffffde40000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>123,b=>7} 7b00000007000000 7b00000007000000 7b00000007000000 0000007be0000000 7b00000007000000 7b00000007000000 0000007be0000000 7b00000007000000 0000007be0000000 - {c=>5,a=>35,b=>6} 230000002e000000 230000002e000000 230000002e000000 00000023d4000000 230000002e000000 230000002e000000 00000023d4000000 230000002e000000 00000023d4000000 - {c=>3,a=>-76,b=>4} b4ffffff1c000000 b4ffffff1c000000 b4ffffff1c000000 ffffffb48c000000 b4ffffff1c000000 b4ffffff1c000000 ffffffb48c000000 b4ffffff1c000000 ffffffb48c000000 - {c=>6,a=>84,b=>4} 5400000034000000 5400000034000000 5400000034000000 0000005498000000 5400000034000000 5400000034000000 0000005498000000 5400000034000000 0000005498000000 - {c=>5,a=>-26,b=>5} e6ffffff2d000000 e6ffffff2d000000 e6ffffff2d000000 ffffffe6b4000000 e6ffffff2d000000 e6ffffff2d000000 ffffffe6b4000000 e6ffffff2d000000 ffffffe6b4000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>89,b=>0,d=>2} 59000000b0000000 59000000b0000000 59000000b0000000 0000005919000000 59000000b0000000 59000000b0000000 0000005919000000 59000000b0000000 0000005919000000 - {c=>2,a=>71,b=>6,d=>6} 4700000096010000 4700000096010000 4700000096010000 00000047cb000000 4700000096010000 4700000096010000 00000047cb000000 4700000096010000 00000047cb000000 - {c=>6,a=>43,b=>6,d=>4} 2b00000036010000 2b00000036010000 2b00000036010000 0000002bda000000 2b00000036010000 2b00000036010000 0000002bda000000 2b00000036010000 0000002bda000000 - {c=>7,a=>74,b=>6,d=>1} 4a0000007e000000 4a0000007e000000 4a0000007e000000 0000004adc800000 4a0000007e000000 4a0000007e000000 0000004adc800000 4a0000007e000000 0000004adc800000 - {c=>1,a=>24,b=>1,d=>7} 18000000c9010000 18000000c9010000 18000000c9010000 0000001827800000 18000000c9010000 18000000c9010000 0000001827800000 18000000c9010000 0000001827800000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>258411058,c=>2,a=>-56,b=>3,d=>1} c8ffffff53000000320a670f c8ffffff53000000320a670f c8ffffff53000000320a670f ffffffc868800000f670a320 c8ffffff53000000320a670f c8ffffff53000000320a670f ffffffc868800000f670a320 c8ffffff53000000320a670f ffffffc868800000f670a320 - {e=>192775493,c=>2,a=>6,b=>7,d=>4} 060000001701000045857d0b 060000001701000045857d0b 060000001701000045857d0b 00000006ea000000b7d85450 060000001701000045857d0b 060000001701000045857d0b 00000006ea000000b7d85450 060000001701000045857d0b 00000006ea000000b7d85450 - {e=>70245712,c=>3,a=>-1,b=>7,d=>1} ffffffff5f00000050dd2f04 ffffffff5f00000050dd2f04 ffffffff5f00000050dd2f04 ffffffffec80000042fdd500 ffffffff5f00000050dd2f04 ffffffff5f00000050dd2f04 ffffffffec80000042fdd500 ffffffff5f00000050dd2f04 ffffffffec80000042fdd500 - {e=>100376726,c=>7,a=>115,b=>0,d=>7} 73000000f801000096a0fb05 73000000f801000096a0fb05 73000000f801000096a0fb05 000000731f8000005fba0960 73000000f801000096a0fb05 73000000f801000096a0fb05 000000731f8000005fba0960 73000000f801000096a0fb05 000000731f8000005fba0960 - {e=>261070995,c=>7,a=>-47,b=>1,d=>0} d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f ffffffd13c000000f8fa0930 d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f ffffffd13c000000f8fa0930 d1ffffff3900000093a08f0f ffffffd13c000000f8fa0930 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>202903687,c=>1,a=>-41,b=>7,d=>0,f=>7} d7ffffff0f0000008710187c d7ffffff0f0000008710187c d7ffffff0f0000008710187c ffffffd7e4000000c181087e d7ffffff0f0000008710187c d7ffffff0f0000008710187c ffffffd7e4000000c181087e d7ffffff0f0000008710187c ffffffd7e4000000c181087e - {e=>156182618,c=>1,a=>83,b=>7,d=>1,f=>1} 530000004f0000005a284f19 530000004f0000005a284f19 530000004f0000005a284f19 00000053e480000094f285a2 530000004f0000005a284f19 530000004f0000005a284f19 00000053e480000094f285a2 530000004f0000005a284f19 00000053e480000094f285a2 - {e=>30752427,c=>5,a=>-26,b=>6,d=>3,f=>6} e6ffffffee000000ab3ed561 e6ffffffee000000ab3ed561 e6ffffffee000000ab3ed561 ffffffe6d58000001d53eabc e6ffffffee000000ab3ed561 e6ffffffee000000ab3ed561 ffffffe6d58000001d53eabc e6ffffffee000000ab3ed561 ffffffe6d58000001d53eabc - {e=>13986533,c=>2,a=>73,b=>0,d=>3,f=>0} 49000000d0000000e56ad500 49000000d0000000e56ad500 49000000d0000000e56ad500 00000049098000000d56ae50 49000000d0000000e56ad500 49000000d0000000e56ad500 00000049098000000d56ae50 49000000d0000000e56ad500 00000049098000000d56ae50 - {e=>97832562,c=>7,a=>67,b=>3,d=>1,f=>6} 430000007b00000072ced465 430000007b00000072ced465 430000007b00000072ced465 000000437c8000005d4ce72c 430000007b00000072ced465 430000007b00000072ced465 000000437c8000005d4ce72c 430000007b00000072ced465 000000437c8000005d4ce72c = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>224204808,c=>0,a=>-125,g=>3,b=>2,d=>6,f=>5} 83ffffff8201000008185d5d03000000 83ffffff8201000008185d5d03000000 83ffffff8201000008185d5d03000000 ffffff8343000000d5d1808ac0000000 83ffffff8201000008185d5d03000000 83ffffff8201000008185d5d03000000 ffffff8343000000d5d1808ac0000000 83ffffff8201000008185d5d03000000 ffffff8343000000d5d1808ac0000000 - {e=>248110203,c=>2,a=>32,g=>2,b=>2,d=>2,f=>2} 20000000920000007bdcc92e02000000 20000000920000007bdcc92e02000000 20000000920000007bdcc92e02000000 0000002049000000ec9dc7b480000000 20000000920000007bdcc92e02000000 20000000920000007bdcc92e02000000 0000002049000000ec9dc7b480000000 20000000920000007bdcc92e02000000 0000002049000000ec9dc7b480000000 - {e=>176808355,c=>3,a=>74,g=>3,b=>7,d=>1,f=>0} 4a0000005f000000a3e1890a03000000 4a0000005f000000a3e1890a03000000 4a0000005f000000a3e1890a03000000 0000004aec800000a89e1a30c0000000 4a0000005f000000a3e1890a03000000 4a0000005f000000a3e1890a03000000 0000004aec800000a89e1a30c0000000 4a0000005f000000a3e1890a03000000 0000004aec800000a89e1a30c0000000 - {e=>200366377,c=>3,a=>-125,g=>2,b=>4,d=>6,f=>4} 83ffffff9c0100002959f14b02000000 83ffffff9c0100002959f14b02000000 83ffffff9c0100002959f14b02000000 ffffff838f000000bf15929880000000 83ffffff9c0100002959f14b02000000 83ffffff9c0100002959f14b02000000 ffffff838f000000bf15929880000000 83ffffff9c0100002959f14b02000000 ffffff838f000000bf15929880000000 - {e=>40965455,c=>3,a=>107,g=>2,b=>0,d=>3,f=>4} 6b000000d80000004f15714202000000 6b000000d80000004f15714202000000 6b000000d80000004f15714202000000 0000006b0d800000271154f880000000 6b000000d80000004f15714202000000 6b000000d80000004f15714202000000 0000006b0d800000271154f880000000 6b000000d80000004f15714202000000 0000006b0d800000271154f880000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>261834522,a=>113,d=>2,c=>3,h=>1720,b=>5,g=>2,f=>7} 710000009d0000001a479b7fe21a0000 710000009d0000001a479b7fe21a0000 710000009d0000001a479b7fe21a0000 00000071ad000000f9b471ae8d700000 710000009d0000001a479b7fe21a0000 710000009d0000001a479b7fe21a0000 00000071ad000000f9b471ae8d700000 710000009d0000001a479b7fe21a0000 00000071ad000000f9b471ae8d700000 - {e=>81177197,a=>52,d=>7,c=>0,h=>7442,b=>0,g=>0,f=>3} 34000000c00100006daad63448740000 34000000c00100006daad63448740000 34000000c00100006daad63448740000 00000034038000004d6aa6d63a240000 34000000c00100006daad63448740000 34000000c00100006daad63448740000 00000034038000004d6aa6d63a240000 34000000c00100006daad63448740000 00000034038000004d6aa6d63a240000 - {e=>252859983,a=>117,d=>4,c=>2,h=>3820,b=>7,g=>1,f=>3} 75000000170100004f56123fb13b0000 75000000170100004f56123fb13b0000 75000000170100004f56123fb13b0000 00000075ea000000f12564f65dd80000 75000000170100004f56123fb13b0000 75000000170100004f56123fb13b0000 00000075ea000000f12564f65dd80000 75000000170100004f56123fb13b0000 00000075ea000000f12564f65dd80000 - {e=>260755755,a=>39,d=>6,c=>3,h=>5333,b=>4,g=>1,f=>6} 270000009c0100002bd18a6f55530000 270000009c0100002bd18a6f55530000 270000009c0100002bd18a6f55530000 000000278f000000f8ad12bc69aa0000 270000009c0100002bd18a6f55530000 270000009c0100002bd18a6f55530000 000000278f000000f8ad12bc69aa0000 270000009c0100002bd18a6f55530000 000000278f000000f8ad12bc69aa0000 - {e=>197646476,a=>44,d=>1,c=>0,h=>1255,b=>0,g=>1,f=>7} 2c000000400000008cd8c77b9d130000 2c000000400000008cd8c77b9d130000 2c000000400000008cd8c77b9d130000 0000002c00800000bc7d88ce49ce0000 2c000000400000008cd8c77b9d130000 2c000000400000008cd8c77b9d130000 0000002c00800000bc7d88ce49ce0000 2c000000400000008cd8c77b9d130000 0000002c00800000bc7d88ce49ce0000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>3714946,a=>-88,d=>6,c=>2,h=>3065,b=>4,g=>0,f=>1,i=>-7} a8ffffff9401000082af3810e42f0000f9ffffff a8ffffff9401000082af3810e42f0000f9ffffff a8ffffff9401000082af3810e42f0000f9ffffff ffffffa88b000000038af82217f20000fffffff9 a8ffffff9401000082af3810e42f0000f9ffffff a8ffffff9401000082af3810e42f0000f9ffffff ffffffa88b000000038af82217f20000fffffff9 a8ffffff9401000082af3810e42f0000f9ffffff ffffffa88b000000038af82217f20000fffffff9 - {e=>217660046,a=>63,d=>4,c=>2,h=>4968,b=>5,g=>3,f=>5,i=>-17} 3f000000150100008e3af95ca34d0000efffffff 3f000000150100008e3af95ca34d0000efffffff 3f000000150100008e3af95ca34d0000efffffff 0000003faa000000cf93a8eae6d00000ffffffef 3f000000150100008e3af95ca34d0000efffffff 3f000000150100008e3af95ca34d0000efffffff 0000003faa000000cf93a8eae6d00000ffffffef 3f000000150100008e3af95ca34d0000efffffff 0000003faa000000cf93a8eae6d00000ffffffef - {e=>50265395,a=>101,d=>1,c=>3,h=>1816,b=>7,g=>1,f=>7,i=>113} 650000005f00000033fdfe72611c000071000000 650000005f00000033fdfe72611c000071000000 650000005f00000033fdfe72611c000071000000 00000065ec8000002fefd33e4e30000000000071 650000005f00000033fdfe72611c000071000000 650000005f00000033fdfe72611c000071000000 00000065ec8000002fefd33e4e30000000000071 650000005f00000033fdfe72611c000071000000 00000065ec8000002fefd33e4e30000000000071 - {e=>165795744,a=>11,d=>5,c=>4,h=>2771,b=>2,g=>3,f=>6,i=>-6} 0b00000062010000a0d7e1694f2b0000faffffff 0b00000062010000a0d7e1694f2b0000faffffff 0b00000062010000a0d7e1694f2b0000faffffff 0000000b528000009e1d7a0cd5a60000fffffffa 0b00000062010000a0d7e1694f2b0000faffffff 0b00000062010000a0d7e1694f2b0000faffffff 0000000b528000009e1d7a0cd5a60000fffffffa 0b00000062010000a0d7e1694f2b0000faffffff 0000000b528000009e1d7a0cd5a60000fffffffa - {e=>246643849,a=>56,d=>5,c=>2,h=>3254,b=>0,g=>3,f=>7,i=>-43} 3800000050010000897cb37edb320000d5ffffff 3800000050010000897cb37edb320000d5ffffff 3800000050010000897cb37edb320000d5ffffff 000000380a800000eb37c89ed96c0000ffffffd5 3800000050010000897cb37edb320000d5ffffff 3800000050010000897cb37edb320000d5ffffff 000000380a800000eb37c89ed96c0000ffffffd5 3800000050010000897cb37edb320000d5ffffff 000000380a800000eb37c89ed96c0000ffffffd5 = struct umixed_no_pack { long a; unsigned char b:3; }; - {a=>-22,b=>3} eaffffff03000000 eaffffffffffffff0300000000000000 eaffffffffffffff0300000000000000 ffffffea60000000 eaffffff03000000 eaffffff03000000 ffffffffffffffea6000000000000000 eaffffff03000000 ffffffea60000000 - {a=>15,b=>0} 0f00000000000000 0f000000000000000000000000000000 0f000000000000000000000000000000 0000000f00000000 0f00000000000000 0f00000000000000 000000000000000f0000000000000000 0f00000000000000 0000000f00000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffffffffffff0400000000000000 c6ffffffffffffff0400000000000000 ffffffc680000000 c6ffffff04000000 c6ffffff04000000 ffffffffffffffc68000000000000000 c6ffffff04000000 ffffffc680000000 - {a=>39,b=>0} 2700000000000000 27000000000000000000000000000000 27000000000000000000000000000000 0000002700000000 2700000000000000 2700000000000000 00000000000000270000000000000000 2700000000000000 0000002700000000 - {a=>55,b=>0} 3700000000000000 37000000000000000000000000000000 37000000000000000000000000000000 0000003700000000 3700000000000000 3700000000000000 00000000000000370000000000000000 3700000000000000 0000003700000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>53,b=>3} 3500000033000000 35000000000000003300000000000000 35000000000000003300000000000000 0000003578000000 3500000033000000 3500000033000000 00000000000000357800000000000000 3500000033000000 0000003578000000 - {c=>6,a=>-101,b=>4} 9bffffff34000000 9bffffffffffffff3400000000000000 9bffffffffffffff3400000000000000 ffffff9b98000000 9bffffff34000000 9bffffff34000000 ffffffffffffff9b9800000000000000 9bffffff34000000 ffffff9b98000000 - {c=>6,a=>62,b=>1} 3e00000031000000 3e000000000000003100000000000000 3e000000000000003100000000000000 0000003e38000000 3e00000031000000 3e00000031000000 000000000000003e3800000000000000 3e00000031000000 0000003e38000000 - {c=>5,a=>-63,b=>5} c1ffffff2d000000 c1ffffffffffffff2d00000000000000 c1ffffffffffffff2d00000000000000 ffffffc1b4000000 c1ffffff2d000000 c1ffffff2d000000 ffffffffffffffc1b400000000000000 c1ffffff2d000000 ffffffc1b4000000 - {c=>2,a=>26,b=>4} 1a00000014000000 1a000000000000001400000000000000 1a000000000000001400000000000000 0000001a88000000 1a00000014000000 1a00000014000000 000000000000001a8800000000000000 1a00000014000000 0000001a88000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>7,a=>84,b=>5,d=>0} 540000003d000000 54000000000000003d00000000000000 54000000000000003d00000000000000 00000054bc000000 540000003d000000 540000003d000000 0000000000000054bc00000000000000 540000003d000000 00000054bc000000 - {c=>2,a=>-4,b=>6,d=>7} fcffffffd6010000 fcffffffffffffffd601000000000000 fcffffffffffffffd601000000000000 fffffffccb800000 fcffffffd6010000 fcffffffd6010000 fffffffffffffffccb80000000000000 fcffffffd6010000 fffffffccb800000 - {c=>0,a=>-1,b=>2,d=>4} ffffffff02010000 ffffffffffffffff0201000000000000 ffffffffffffffff0201000000000000 ffffffff42000000 ffffffff02010000 ffffffff02010000 ffffffffffffffff4200000000000000 ffffffff02010000 ffffffff42000000 - {c=>5,a=>75,b=>2,d=>1} 4b0000006a000000 4b000000000000006a00000000000000 4b000000000000006a00000000000000 0000004b54800000 4b0000006a000000 4b0000006a000000 000000000000004b5480000000000000 4b0000006a000000 0000004b54800000 - {c=>1,a=>-35,b=>2,d=>2} ddffffff8a000000 ddffffffffffffff8a00000000000000 ddffffffffffffff8a00000000000000 ffffffdd45000000 ddffffff8a000000 ddffffff8a000000 ffffffffffffffdd4500000000000000 ddffffff8a000000 ffffffdd45000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>12846720,c=>5,a=>-2,b=>6,d=>4} feffffff2e0100008006c400 feffffffffffffff2e0100008006c400 feffffffffffffff2e0100008006c400 fffffffed60000000c406800 feffffff2e0100008006c400 feffffff2e0100008006c400 fffffffffffffffed60000000c406800 feffffff2e0100008006c400 fffffffed60000000c406800 - {e=>122850482,c=>0,a=>44,b=>4,d=>5} 2c00000044010000b28c5207 2c0000000000000044010000b28c5207 2c0000000000000044010000b28c5207 0000002c828000007528cb20 2c00000044010000b28c5207 2c00000044010000b28c5207 000000000000002c828000007528cb20 2c00000044010000b28c5207 0000002c828000007528cb20 - {e=>110531108,c=>0,a=>6,b=>7,d=>5} 060000004701000024929606 06000000000000004701000024929606 06000000000000004701000024929606 00000006e280000069692240 060000004701000024929606 060000004701000024929606 0000000000000006e280000069692240 060000004701000024929606 00000006e280000069692240 - {e=>172922041,c=>3,a=>-21,b=>6,d=>1} ebffffff5e000000b9944e0a ebffffffffffffff5e000000b9944e0a ebffffffffffffff5e000000b9944e0a ffffffebcc800000a4e94b90 ebffffff5e000000b9944e0a ebffffff5e000000b9944e0a ffffffffffffffebcc800000a4e94b90 ebffffff5e000000b9944e0a ffffffebcc800000a4e94b90 - {e=>55535187,c=>1,a=>-73,b=>2,d=>3} b7ffffffca00000053664f03 b7ffffffffffffffca00000053664f03 b7ffffffffffffffca00000053664f03 ffffffb74580000034f66530 b7ffffffca00000053664f03 b7ffffffca00000053664f03 ffffffffffffffb74580000034f66530 b7ffffffca00000053664f03 ffffffb74580000034f66530 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>66805985,c=>5,a=>115,b=>6,d=>2,f=>6} 73000000ae000000e160fb63 7300000000000000ae000000e160fb63 7300000000000000ae000000e160fb63 00000073d50000003fb60e1c 73000000ae000000e160fb63 73000000ae000000e160fb63 0000000000000073d50000003fb60e1c 73000000ae000000e160fb63 00000073d50000003fb60e1c - {e=>217412345,c=>5,a=>83,b=>2,d=>7,f=>1} 53000000ea010000f972f51c 5300000000000000ea010000f972f51c 5300000000000000ea010000f972f51c 0000005357800000cf572f92 53000000ea010000f972f51c 53000000ea010000f972f51c 000000000000005357800000cf572f92 53000000ea010000f972f51c 0000005357800000cf572f92 - {e=>143288860,c=>4,a=>80,b=>4,d=>7,f=>2} 50000000e40100001c6a8a28 5000000000000000e40100001c6a8a28 5000000000000000e40100001c6a8a28 000000509380000088a6a1c4 50000000e40100001c6a8a28 50000000e40100001c6a8a28 00000000000000509380000088a6a1c4 50000000e40100001c6a8a28 000000509380000088a6a1c4 - {e=>80533529,c=>3,a=>-56,b=>0,d=>4,f=>3} c8ffffff1801000019d8cc34 c8ffffffffffffff1801000019d8cc34 c8ffffffffffffff1801000019d8cc34 ffffffc80e0000004ccd8196 c8ffffff1801000019d8cc34 c8ffffff1801000019d8cc34 ffffffffffffffc80e0000004ccd8196 c8ffffff1801000019d8cc34 ffffffc80e0000004ccd8196 - {e=>76049210,c=>4,a=>41,b=>4,d=>0,f=>2} 29000000240000003a6b8824 2900000000000000240000003a6b8824 2900000000000000240000003a6b8824 00000029900000004886b3a4 29000000240000003a6b8824 29000000240000003a6b8824 0000000000000029900000004886b3a4 29000000240000003a6b8824 00000029900000004886b3a4 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>33149186,c=>0,a=>-66,g=>2,b=>6,d=>0,f=>2} beffffff0600000002d1f92102000000 beffffffffffffff0600000002d1f9210200000000000000 beffffffffffffff0600000002d1f9210200000000000000 ffffffbec00000001f9d102480000000 beffffff0600000002d1f92102000000 beffffff0600000002d1f92102000000 ffffffffffffffbec00000001f9d10248000000000000000 beffffff0600000002d1f92102000000 ffffffbec00000001f9d102480000000 - {e=>24018713,c=>6,a=>42,g=>0,b=>3,d=>1,f=>7} 2a00000073000000197f6e7100000000 2a0000000000000073000000197f6e710000000000000000 2a0000000000000073000000197f6e710000000000000000 0000002a7880000016e7f19e00000000 2a00000073000000197f6e7100000000 2a00000073000000197f6e7100000000 000000000000002a7880000016e7f19e0000000000000000 2a00000073000000197f6e7100000000 0000002a7880000016e7f19e00000000 - {e=>238049791,c=>1,a=>-89,g=>0,b=>5,d=>4,f=>3} a7ffffff0d010000ff59303e00000000 a7ffffffffffffff0d010000ff59303e0000000000000000 a7ffffffffffffff0d010000ff59303e0000000000000000 ffffffa7a6000000e3059ff600000000 a7ffffff0d010000ff59303e00000000 a7ffffff0d010000ff59303e00000000 ffffffffffffffa7a6000000e3059ff60000000000000000 a7ffffff0d010000ff59303e00000000 ffffffa7a6000000e3059ff600000000 - {e=>45452680,c=>4,a=>85,g=>3,b=>5,d=>4,f=>2} 5500000025010000888db52203000000 550000000000000025010000888db5220300000000000000 550000000000000025010000888db5220300000000000000 00000055b20000002b58d884c0000000 5500000025010000888db52203000000 5500000025010000888db52203000000 0000000000000055b20000002b58d884c000000000000000 5500000025010000888db52203000000 00000055b20000002b58d884c0000000 - {e=>127560049,c=>0,a=>38,g=>3,b=>5,d=>1,f=>4} 260000004500000071699a4703000000 26000000000000004500000071699a470300000000000000 26000000000000004500000071699a470300000000000000 00000026a080000079a69718c0000000 260000004500000071699a4703000000 260000004500000071699a4703000000 0000000000000026a080000079a69718c000000000000000 260000004500000071699a4703000000 00000026a080000079a69718c0000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>143259895,a=>-70,d=>4,c=>3,h=>4312,b=>6,g=>0,f=>5} baffffff1e010000f7f8895860430000 baffffffffffffff1e010000f7f889586043000000000000 baffffffffffffff1e010000f7f889586043000000000000 ffffffbace000000889f8f7a21b00000 baffffff1e010000f7f8895860430000 baffffff1e010000f7f8895860430000 ffffffffffffffbace000000889f8f7a21b0000000000000 baffffff1e010000f7f8895860430000 ffffffbace000000889f8f7a21b00000 - {e=>130209381,a=>75,d=>3,c=>6,h=>1172,b=>2,g=>1,f=>0} 4b000000f200000065d6c20751120000 4b00000000000000f200000065d6c2075112000000000000 4b00000000000000f200000065d6c2075112000000000000 0000004b598000007c2d665049280000 4b000000f200000065d6c20751120000 4b000000f200000065d6c20751120000 000000000000004b598000007c2d66504928000000000000 4b000000f200000065d6c20751120000 0000004b598000007c2d665049280000 - {e=>169515883,a=>36,d=>3,c=>7,h=>7983,b=>7,g=>2,f=>0} 24000000ff0000006b9b1a0abe7c0000 2400000000000000ff0000006b9b1a0abe7c000000000000 2400000000000000ff0000006b9b1a0abe7c000000000000 00000024fd800000a1a9b6b0be5e0000 24000000ff0000006b9b1a0abe7c0000 24000000ff0000006b9b1a0abe7c0000 0000000000000024fd800000a1a9b6b0be5e000000000000 24000000ff0000006b9b1a0abe7c0000 00000024fd800000a1a9b6b0be5e0000 - {e=>204680465,a=>-15,d=>2,c=>5,h=>8017,b=>2,g=>0,f=>6} f1ffffffaa000000112d336c447d0000 f1ffffffffffffffaa000000112d336c447d000000000000 f1ffffffffffffffaa000000112d336c447d000000000000 fffffff155000000c332d11c3ea20000 f1ffffffaa000000112d336c447d0000 f1ffffffaa000000112d336c447d0000 fffffffffffffff155000000c332d11c3ea2000000000000 f1ffffffaa000000112d336c447d0000 fffffff155000000c332d11c3ea20000 - {e=>243063688,a=>85,d=>2,c=>6,h=>342,b=>2,g=>0,f=>3} 55000000b200000088db7c3e58050000 5500000000000000b200000088db7c3e5805000000000000 5500000000000000b200000088db7c3e5805000000000000 0000005559000000e7cdb88602ac0000 55000000b200000088db7c3e58050000 55000000b200000088db7c3e58050000 000000000000005559000000e7cdb88602ac000000000000 55000000b200000088db7c3e58050000 0000005559000000e7cdb88602ac0000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>256419346,a=>25,d=>4,c=>1,h=>4924,b=>3,g=>1,f=>2,i=>-112} 190000000b01000012a6482ff14c000090ffffff 19000000000000000b01000012a6482ff14c000090ffffff 19000000000000000b01000012a6482ff14c000090ffffff 0000001966000000f48a612466780000ffffff90 190000000b01000012a6482ff14c000090ffffff 190000000b01000012a6482ff14c000090ffffff 000000000000001966000000f48a612466780000ffffff90 190000000b01000012a6482ff14c000090ffffff 0000001966000000f48a612466780000ffffff90 - {e=>155022430,a=>75,d=>3,c=>2,h=>362,b=>7,g=>2,f=>1,i=>-49} 4b000000d70000005e743d19aa050000cfffffff 4b00000000000000d70000005e743d19aa050000cfffffff 4b00000000000000d70000005e743d19aa050000cfffffff 0000004be980000093d745e282d40000ffffffcf 4b000000d70000005e743d19aa050000cfffffff 4b000000d70000005e743d19aa050000cfffffff 000000000000004be980000093d745e282d40000ffffffcf 4b000000d70000005e743d19aa050000cfffffff 0000004be980000093d745e282d40000ffffffcf - {e=>190447867,a=>-73,d=>1,c=>2,h=>2876,b=>7,g=>0,f=>7,i=>1} b7ffffff57000000fb005a7bf02c000001000000 b7ffffffffffffff57000000fb005a7bf02c000001000000 b7ffffffffffffff57000000fb005a7bf02c000001000000 ffffffb7e8800000b5a00fbe1678000000000001 b7ffffff57000000fb005a7bf02c000001000000 b7ffffff57000000fb005a7bf02c000001000000 ffffffffffffffb7e8800000b5a00fbe1678000000000001 b7ffffff57000000fb005a7bf02c000001000000 ffffffb7e8800000b5a00fbe1678000000000001 - {e=>179690236,a=>9,d=>7,c=>0,h=>7267,b=>7,g=>1,f=>0,i=>-85} 09000000c7010000fcdab50a8d710000abffffff 0900000000000000c7010000fcdab50a8d710000abffffff 0900000000000000c7010000fcdab50a8d710000abffffff 00000009e3800000ab5dafc078c60000ffffffab 09000000c7010000fcdab50a8d710000abffffff 09000000c7010000fcdab50a8d710000abffffff 0000000000000009e3800000ab5dafc078c60000ffffffab 09000000c7010000fcdab50a8d710000abffffff 00000009e3800000ab5dafc078c60000ffffffab - {e=>104415787,a=>74,d=>7,c=>3,h=>3028,b=>4,g=>3,f=>7,i=>92} 4a000000dc0100002b423976532f00005c000000 4a00000000000000dc0100002b423976532f00005c000000 4a00000000000000dc0100002b423976532f00005c000000 0000004a8f800000639422bed7a800000000005c 4a000000dc0100002b423976532f00005c000000 4a000000dc0100002b423976532f00005c000000 000000000000004a8f800000639422bed7a800000000005c 4a000000dc0100002b423976532f00005c000000 0000004a8f800000639422bed7a800000000005c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; }; - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>1} 01 01 01 20 01000000 01 20 01 20 - {a=>3} 03 03 03 60 03000000 03 60 03 60 - {a=>5} 05 05 05 a0 05000000 05 a0 05 a0 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; }; - {a=>4,b=>3} 1c 1c 1c 8c 1c000000 1c 8c 1c 8c - {a=>5,b=>6} 35 35 35 b8 35000000 35 b8 35 b8 - {a=>1,b=>3} 19 19 19 2c 19000000 19 2c 19 2c - {a=>7,b=>6} 37 37 37 f8 37000000 37 f8 37 f8 - {a=>1,b=>0} 01 01 01 20 01000000 01 20 01 20 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>7,a=>2,b=>6} f201 f201 f201 5b80 f2010000 f201 5b80 f201 5b80 - {c=>3,a=>1,b=>4} e100 e100 e100 3180 e1000000 e100 3180 e100 3180 - {c=>0,a=>2,b=>1} 0a00 0a00 0a00 4400 0a000000 0a00 4400 0a00 4400 - {c=>7,a=>6,b=>6} f601 f601 f601 db80 f6010000 f601 db80 f601 db80 - {c=>6,a=>5,b=>3} 9d01 9d01 9d01 af00 9d010000 9d01 af00 9d01 af00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>3,a=>4,b=>6,d=>50977657} f400000079db0903 f400000079db0903 f400000079db0903 99800000309db790 f400000079db0903 f400000079db0903 99800000309db790 f400000079db0903 99800000309db790 - {c=>4,a=>1,b=>0,d=>156580251} 010100009b395509 010100009b395509 010100009b395509 22000000955399b0 010100009b395509 010100009b395509 22000000955399b0 010100009b395509 22000000955399b0 - {c=>0,a=>6,b=>1,d=>120765803} 0e0000006bbd3207 0e0000006bbd3207 0e0000006bbd3207 c4000000732bd6b0 0e0000006bbd3207 0e0000006bbd3207 c4000000732bd6b0 0e0000006bbd3207 c4000000732bd6b0 - {c=>5,a=>6,b=>4,d=>190259749} 660100002522570b 660100002522570b 660100002522570b d2800000b5722250 660100002522570b 660100002522570b d2800000b5722250 660100002522570b d2800000b5722250 - {c=>3,a=>6,b=>1,d=>14877875} ce000000b304e300 ce000000b304e300 ce000000b304e300 c58000000e304b30 ce000000b304e300 ce000000b304e300 c58000000e304b30 ce000000b304e300 c58000000e304b30 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>7,c=>0,a=>5,b=>4,d=>131151049} 25000000c934d177 25000000c934d177 25000000c934d177 b00000007d134c9e 25000000c934d177 25000000c934d177 b00000007d134c9e 25000000c934d177 b00000007d134c9e - {e=>4,c=>6,a=>0,b=>3,d=>27196562} 9801000092fc9e41 9801000092fc9e41 9801000092fc9e41 0f00000019efc928 9801000092fc9e41 9801000092fc9e41 0f00000019efc928 9801000092fc9e41 0f00000019efc928 - {e=>5,c=>2,a=>5,b=>2,d=>79198194} 95000000f277b854 95000000f277b854 95000000f277b854 a90000004b877f2a 95000000f277b854 95000000f277b854 a90000004b877f2a 95000000f277b854 a90000004b877f2a - {e=>1,c=>6,a=>1,b=>1,d=>53011008} 8901000040e22813 8901000040e22813 8901000040e22813 27000000328e2402 8901000040e22813 8901000040e22813 27000000328e2402 8901000040e22813 27000000328e2402 - {e=>3,c=>0,a=>3,b=>5,d=>229669114} 2b000000fa78b03d 2b000000fa78b03d 2b000000fa78b03d 74000000db078fa6 2b000000fa78b03d 2b000000fa78b03d 74000000db078fa6 2b000000fa78b03d 74000000db078fa6 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>7,c=>4,a=>3,b=>2,d=>224213968,f=>0} 13010000d03b5d7d00000000 13010000d03b5d7d00000000 13010000d03b5d7d00000000 6a000000d5d3bd0e00000000 13010000d03b5d7d00000000 13010000d03b5d7d00000000 6a000000d5d3bd0e00000000 13010000d03b5d7d00000000 6a000000d5d3bd0e00000000 - {e=>5,c=>0,a=>6,b=>7,d=>149199438,f=>2} 3e0000004e9ae45802000000 3e0000004e9ae45802000000 3e0000004e9ae45802000000 dc0000008e49a4ea80000000 3e0000004e9ae45802000000 3e0000004e9ae45802000000 dc0000008e49a4ea80000000 3e0000004e9ae45802000000 dc0000008e49a4ea80000000 - {e=>4,c=>7,a=>4,b=>6,d=>212284222,f=>0} f40100003e33a74c00000000 f40100003e33a74c00000000 f40100003e33a74c00000000 9b800000ca7333e800000000 f40100003e33a74c00000000 f40100003e33a74c00000000 9b800000ca7333e800000000 f40100003e33a74c00000000 9b800000ca7333e800000000 - {e=>0,c=>4,a=>1,b=>3,d=>183266435,f=>3} 19010000836cec0a03000000 19010000836cec0a03000000 19010000836cec0a03000000 2e000000aec6c830c0000000 19010000836cec0a03000000 19010000836cec0a03000000 2e000000aec6c830c0000000 19010000836cec0a03000000 2e000000aec6c830c0000000 - {e=>3,c=>3,a=>2,b=>0,d=>193465720,f=>3} c2000000780d883b03000000 c2000000780d883b03000000 c2000000780d883b03000000 41800000b880d786c0000000 c2000000780d883b03000000 c2000000780d883b03000000 41800000b880d786c0000000 c2000000780d883b03000000 41800000b880d786c0000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>2,c=>0,a=>4,g=>7279,b=>3,d=>226086089,f=>0} 1c000000c9cc792dbc710000 1c000000c9cc792dbc710000 1c000000c9cc792dbc710000 8c000000d79ccc9438de0000 1c000000c9cc792dbc710000 1c000000c9cc792dbc710000 8c000000d79ccc9438de0000 1c000000c9cc792dbc710000 8c000000d79ccc9438de0000 - {e=>4,c=>1,a=>5,g=>1474,b=>6,d=>135043372,f=>2} 750000002c990c480a170000 750000002c990c480a170000 750000002c990c480a170000 b880000080c992c88b840000 750000002c990c480a170000 750000002c990c480a170000 b880000080c992c88b840000 750000002c990c480a170000 b880000080c992c88b840000 - {e=>0,c=>2,a=>4,g=>4289,b=>6,d=>167538358,f=>2} b4000000b66efc0906430000 b4000000b66efc0906430000 b4000000b66efc0906430000 990000009fc6eb60a1820000 b4000000b66efc0906430000 b4000000b66efc0906430000 990000009fc6eb60a1820000 b4000000b66efc0906430000 990000009fc6eb60a1820000 - {e=>3,c=>4,a=>0,g=>1460,b=>0,d=>191785714,f=>1} 00010000f26a6e3bd1160000 00010000f26a6e3bd1160000 00010000f26a6e3bd1160000 02000000b6e6af264b680000 00010000f26a6e3bd1160000 00010000f26a6e3bd1160000 02000000b6e6af264b680000 00010000f26a6e3bd1160000 02000000b6e6af264b680000 - {e=>1,c=>0,a=>4,g=>4192,b=>7,d=>193646184,f=>0} 3c00000068ce8a1b80410000 3c00000068ce8a1b80410000 3c00000068ce8a1b80410000 9c000000b8ace68220c00000 3c00000068ce8a1b80410000 3c00000068ce8a1b80410000 9c000000b8ace68220c00000 3c00000068ce8a1b80410000 9c000000b8ace68220c00000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>2,a=>6,d=>72412399,c=>7,h=>156,b=>2,g=>1487,f=>3} d6010000efec50243f179c00 d6010000efec50243f179c00 d6010000efec50243f179c00 cb800000450ecef4cb9e9c00 d6010000efec50243f179c00 d6010000efec50243f179c00 cb800000450ecef4cb9e9c00 d6010000efec50243f179c00 cb800000450ecef4cb9e9c00 - {e=>6,a=>3,d=>227300670,c=>1,h=>201,b=>3,g=>4275,f=>1} 5b0000003e558c6dcd42c900 5b0000003e558c6dcd42c900 5b0000003e558c6dcd42c900 6c800000d8c553ec6166c900 5b0000003e558c6dcd42c900 5b0000003e558c6dcd42c900 6c800000d8c553ec6166c900 5b0000003e558c6dcd42c900 6c800000d8c553ec6166c900 - {e=>3,a=>7,d=>180879568,c=>1,h=>224,b=>5,g=>7892,f=>3} 6f000000d000c83a537be000 6f000000d000c83a537be000 6f000000d000c83a537be000 f4800000ac800d06fda8e000 6f000000d000c83a537be000 6f000000d000c83a537be000 f4800000ac800d06fda8e000 6f000000d000c83a537be000 f4800000ac800d06fda8e000 - {e=>3,a=>0,d=>137129408,c=>6,h=>116,b=>2,g=>269,f=>0} 90010000c06d2c3834047400 90010000c06d2c3834047400 90010000c06d2c3834047400 0b00000082c6dc06021a7400 90010000c06d2c3834047400 90010000c06d2c3834047400 0b00000082c6dc06021a7400 90010000c06d2c3834047400 0b00000082c6dc06021a7400 - {e=>1,a=>3,d=>206927027,c=>2,h=>226,b=>7,g=>3383,f=>2} bb000000b374551cde34e200 bb000000b374551cde34e200 bb000000b374551cde34e200 7d000000c5574b329a6ee200 bb000000b374551cde34e200 bb000000b374551cde34e200 7d000000c5574b329a6ee200 bb000000b374551cde34e200 7d000000c5574b329a6ee200 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; }; - {a=>5,b=>0} 0500 0500 0500 0500 05000000 0500 0500 0500 0500 - {a=>53,b=>0} 3500 3500 3500 3500 35000000 3500 3500 3500 3500 - {a=>83,b=>5} 5305 5305 5305 53a0 53050000 5305 53a0 5305 53a0 - {a=>4,b=>3} 0403 0403 0403 0460 04030000 0403 0460 0403 0460 - {a=>-108,b=>1} 9401 9401 9401 9420 94010000 9401 9420 9401 9420 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-89,b=>5} a725 a725 a725 a7b0 a7250000 a725 a7b0 a725 a7b0 - {c=>3,a=>-94,b=>1} a219 a219 a219 a22c a2190000 a219 a22c a219 a22c - {c=>2,a=>41,b=>1} 2911 2911 2911 2928 29110000 2911 2928 2911 2928 - {c=>0,a=>-104,b=>5} 9805 9805 9805 98a0 98050000 9805 98a0 9805 98a0 - {c=>4,a=>123,b=>7} 7b27 7b27 7b27 7bf0 7b270000 7b27 7bf0 7b27 7bf0 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>1,a=>26,b=>2,d=>6} 1a0a0600 1a0a0600 1a0a0600 1a44c000 1a0a0600 1a0a0600 1a44c000 1a0a0600 1a44c000 - {c=>0,a=>41,b=>3,d=>7} 29030700 29030700 29030700 2960e000 29030700 29030700 2960e000 29030700 2960e000 - {c=>0,a=>-60,b=>7,d=>5} c4070500 c4070500 c4070500 c4e0a000 c4070500 c4070500 c4e0a000 c4070500 c4e0a000 - {c=>4,a=>21,b=>5,d=>1} 15250100 15250100 15250100 15b02000 15250100 15250100 15b02000 15250100 15b02000 - {c=>1,a=>-57,b=>3,d=>7} c70b0700 c70b0700 c70b0700 c764e000 c70b0700 c70b0700 c764e000 c70b0700 c764e000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>251650091,c=>3,a=>18,b=>2,d=>6} 121a06002be0ff0e 121a06002be0ff0e 121a06002be0ff0e 124cc000effe02b0 121a06002be0ff0e 121a06002be0ff0e 124cc000effe02b0 121a06002be0ff0e 124cc000effe02b0 - {e=>184337798,c=>4,a=>67,b=>1,d=>5} 4321050086c5fc0a 4321050086c5fc0a 4321050086c5fc0a 4330a000afcc5860 4321050086c5fc0a 4321050086c5fc0a 4330a000afcc5860 4321050086c5fc0a 4330a000afcc5860 - {e=>18454609,c=>4,a=>-22,b=>2,d=>3} ea22030051981901 ea22030051981901 ea22030051981901 ea50600011998510 ea22030051981901 ea22030051981901 ea50600011998510 ea22030051981901 ea50600011998510 - {e=>172433341,c=>6,a=>76,b=>6,d=>7} 4c360700bd1f470a 4c360700bd1f470a 4c360700bd1f470a 4cd8e000a471fbd0 4c360700bd1f470a 4c360700bd1f470a 4cd8e000a471fbd0 4c360700bd1f470a 4cd8e000a471fbd0 - {e=>134101335,c=>2,a=>103,b=>0,d=>4} 671004005739fe07 671004005739fe07 671004005739fe07 670880007fe39570 671004005739fe07 671004005739fe07 670880007fe39570 671004005739fe07 670880007fe39570 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>200236336,c=>5,a=>-24,b=>2,d=>3,f=>1} e82a0300305def1b e82a0300305def1b e82a0300305def1b e8546000bef5d302 e82a0300305def1b e82a0300305def1b e8546000bef5d302 e82a0300305def1b e8546000bef5d302 - {e=>16740769,c=>4,a=>-26,b=>0,d=>1,f=>3} e6200100a171ff30 e6200100a171ff30 e6200100a171ff30 e61020000ff71a16 e6200100a171ff30 e6200100a171ff30 e61020000ff71a16 e6200100a171ff30 e61020000ff71a16 - {e=>6071845,c=>4,a=>121,b=>4,d=>1,f=>2} 7924010025a65c20 7924010025a65c20 7924010025a65c20 7990200005ca6254 7924010025a65c20 7924010025a65c20 7990200005ca6254 7924010025a65c20 7990200005ca6254 - {e=>24355757,c=>3,a=>-75,b=>5,d=>2,f=>2} b51d0200ada37321 b51d0200ada37321 b51d0200ada37321 b5ac4000173a3ad4 b51d0200ada37321 b51d0200ada37321 b5ac4000173a3ad4 b51d0200ada37321 b5ac4000173a3ad4 - {e=>167185341,c=>2,a=>21,b=>6,d=>4,f=>4} 15160400bd0bf749 15160400bd0bf749 15160400bd0bf749 15c880009f70bbd8 15160400bd0bf749 15160400bd0bf749 15c880009f70bbd8 15160400bd0bf749 15c880009f70bbd8 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>98259173,c=>2,a=>-44,g=>2,b=>6,d=>2,f=>2} d4160200e550db2502000000 d4160200e550db2502000000 d4160200e550db2502000000 d4c840005db50e5480000000 d4160200e550db2502000000 d4160200e550db2502000000 d4c840005db50e5480000000 d4160200e550db2502000000 d4c840005db50e5480000000 - {e=>101458287,c=>3,a=>107,g=>0,b=>2,d=>7,f=>2} 6b1a07006f210c2600000000 6b1a07006f210c2600000000 6b1a07006f210c2600000000 6b4ce00060c216f400000000 6b1a07006f210c2600000000 6b1a07006f210c2600000000 6b4ce00060c216f400000000 6b1a07006f210c2600000000 6b4ce00060c216f400000000 - {e=>73372275,c=>5,a=>-94,g=>0,b=>1,d=>7,f=>1} a229070073925f1400000000 a229070073925f1400000000 a229070073925f1400000000 a234e00045f9273200000000 a229070073925f1400000000 a229070073925f1400000000 a234e00045f9273200000000 a229070073925f1400000000 a234e00045f9273200000000 - {e=>168006158,c=>5,a=>-34,g=>0,b=>0,d=>0,f=>5} de2800000e92035a00000000 de2800000e92035a00000000 de2800000e92035a00000000 de140000a03920ea00000000 de2800000e92035a00000000 de2800000e92035a00000000 de140000a03920ea00000000 de2800000e92035a00000000 de140000a03920ea00000000 - {e=>251692646,c=>0,a=>58,g=>1,b=>7,d=>2,f=>6} 3a0702006686006f01000000 3a0702006686006f01000000 3a0702006686006f01000000 3ae04000f008666c40000000 3a0702006686006f01000000 3a0702006686006f01000000 3ae04000f008666c40000000 3a0702006686006f01000000 3ae04000f008666c40000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>72582175,a=>66,d=>0,c=>0,h=>6020,b=>1,g=>0,f=>1} 420100001f845314105e0000 420100001f845314105e0000 420100001f845314105e0000 42200000453841f22f080000 420100001f845314105e0000 420100001f845314105e0000 42200000453841f22f080000 420100001f845314105e0000 42200000453841f22f080000 - {e=>184039552,a=>30,d=>0,c=>3,h=>2419,b=>7,g=>2,f=>0} 1e1f00008038f80ace250000 1e1f00008038f80ace250000 1e1f00008038f80ace250000 1eec0000af83880092e60000 1e1f00008038f80ace250000 1e1f00008038f80ace250000 1eec0000af83880092e60000 1e1f00008038f80ace250000 1eec0000af83880092e60000 - {e=>80164592,a=>-49,d=>3,c=>6,h=>7825,b=>5,g=>0,f=>7} cf350300f036c774447a0000 cf350300f036c774447a0000 cf350300f036c774447a0000 cfb860004c736f0e3d220000 cf350300f036c774447a0000 cf350300f036c774447a0000 cfb860004c736f0e3d220000 cf350300f036c774447a0000 cfb860004c736f0e3d220000 - {e=>159880110,a=>-107,d=>6,c=>0,h=>4520,b=>3,g=>1,f=>4} 95030600ae938749a1460000 95030600ae938749a1460000 95030600ae938749a1460000 9560c00098793ae863500000 95030600ae938749a1460000 95030600ae938749a1460000 9560c00098793ae863500000 95030600ae938749a1460000 9560c00098793ae863500000 - {e=>237506163,a=>-31,d=>6,c=>0,h=>1061,b=>7,g=>3,f=>6} e1070600730e286e97100000 e1070600730e286e97100000 e1070600730e286e97100000 e1e0c000e280e73cc84a0000 e1070600730e286e97100000 e1070600730e286e97100000 e1e0c000e280e73cc84a0000 e1070600730e286e97100000 e1e0c000e280e73cc84a0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>75173975,a=>0,d=>7,c=>5,h=>219,b=>2,g=>0,f=>2,i=>75} 002a070057107b246c034b00 002a070057107b246c034b00 002a070057107b246c034b00 0054e00047b1057401b64b00 002a070057107b246c034b00 002a070057107b246c034b00 0054e00047b1057401b64b00 002a070057107b246c034b00 0054e00047b1057401b64b00 - {e=>14359521,a=>-73,d=>7,c=>3,h=>7081,b=>3,g=>1,f=>4,i=>127} b71b0700e11bdb40a56e7f00 b71b0700e11bdb40a56e7f00 b71b0700e11bdb40a56e7f00 b76ce0000db1be1877527f00 b71b0700e11bdb40a56e7f00 b71b0700e11bdb40a56e7f00 b76ce0000db1be1877527f00 b71b0700e11bdb40a56e7f00 b76ce0000db1be1877527f00 - {e=>93479715,a=>-14,d=>2,c=>4,h=>5837,b=>2,g=>0,f=>5,i=>120} f222020023639255345b7800 f222020023639255345b7800 f222020023639255345b7800 f25040005926323a2d9a7800 f222020023639255345b7800 f222020023639255345b7800 f25040005926323a2d9a7800 f222020023639255345b7800 f25040005926323a2d9a7800 - {e=>240985188,a=>123,d=>3,c=>4,h=>1817,b=>6,g=>0,f=>0,i=>75} 7b26030064245d0e641c4b00 7b26030064245d0e641c4b00 7b26030064245d0e641c4b00 7bd06000e5d246400e324b00 7b26030064245d0e641c4b00 7b26030064245d0e641c4b00 7bd06000e5d246400e324b00 7b26030064245d0e641c4b00 7bd06000e5d246400e324b00 - {e=>31234999,a=>99,d=>6,c=>3,h=>4938,b=>0,g=>3,f=>3,i=>200} 63180600b79bdc312b4dc800 63180600b79bdc312b4dc800 63180600b79bdc312b4dc800 630cc0001dc9bb76e694c800 63180600b79bdc312b4dc800 63180600b79bdc312b4dc800 630cc0001dc9bb76e694c800 63180600b79bdc312b4dc800 630cc0001dc9bb76e694c800 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; }; - {a=>-20,b=>2} ecff0200 ecff0200 ecff0200 ffec4000 ecff0200 ecff0200 ffec4000 ecff0200 ffec4000 - {a=>51,b=>0} 33000000 33000000 33000000 00330000 33000000 33000000 00330000 33000000 00330000 - {a=>-61,b=>7} c3ff0700 c3ff0700 c3ff0700 ffc3e000 c3ff0700 c3ff0700 ffc3e000 c3ff0700 ffc3e000 - {a=>109,b=>2} 6d000200 6d000200 6d000200 006d4000 6d000200 6d000200 006d4000 6d000200 006d4000 - {a=>3,b=>5} 03000500 03000500 03000500 0003a000 03000500 03000500 0003a000 03000500 0003a000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>91,b=>0} 5b000800 5b000800 5b000800 005b0400 5b000800 5b000800 005b0400 5b000800 005b0400 - {c=>6,a=>40,b=>1} 28003100 28003100 28003100 00283800 28003100 28003100 00283800 28003100 00283800 - {c=>3,a=>73,b=>7} 49001f00 49001f00 49001f00 0049ec00 49001f00 49001f00 0049ec00 49001f00 0049ec00 - {c=>2,a=>-70,b=>0} baff1000 baff1000 baff1000 ffba0800 baff1000 baff1000 ffba0800 baff1000 ffba0800 - {c=>3,a=>-86,b=>2} aaff1a00 aaff1a00 aaff1a00 ffaa4c00 aaff1a00 aaff1a00 ffaa4c00 aaff1a00 ffaa4c00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>7,a=>-16,b=>2,d=>0} f0ff3a00 f0ff3a00 f0ff3a00 fff05c00 f0ff3a00 f0ff3a00 fff05c00 f0ff3a00 fff05c00 - {c=>2,a=>120,b=>3,d=>3} 7800d300 7800d300 7800d300 00786980 7800d300 7800d300 00786980 7800d300 00786980 - {c=>1,a=>109,b=>6,d=>6} 6d008e01 6d008e01 6d008e01 006dc700 6d008e01 6d008e01 006dc700 6d008e01 006dc700 - {c=>2,a=>109,b=>7,d=>5} 6d005701 6d005701 6d005701 006dea80 6d005701 6d005701 006dea80 6d005701 006dea80 - {c=>7,a=>35,b=>6,d=>4} 23003e01 23003e01 23003e01 0023de00 23003e01 23003e01 0023de00 23003e01 0023de00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>242573218,c=>0,a=>-82,b=>5,d=>3} aeffc500a25f750e aeffc500a25f750e aeffc500a25f750e ffaea180e755fa20 aeffc500a25f750e aeffc500a25f750e ffaea180e755fa20 aeffc500a25f750e ffaea180e755fa20 - {e=>30225390,c=>1,a=>-90,b=>1,d=>0} a6ff0900ee33cd01 a6ff0900ee33cd01 a6ff0900ee33cd01 ffa624001cd33ee0 a6ff0900ee33cd01 a6ff0900ee33cd01 ffa624001cd33ee0 a6ff0900ee33cd01 ffa624001cd33ee0 - {e=>42673361,c=>7,a=>2,b=>7,d=>4} 02003f01d1248b02 02003f01d1248b02 02003f01d1248b02 0002fe0028b24d10 02003f01d1248b02 02003f01d1248b02 0002fe0028b24d10 02003f01d1248b02 0002fe0028b24d10 - {e=>177618799,c=>1,a=>-74,b=>4,d=>0} b6ff0c006f3f960a b6ff0c006f3f960a b6ff0c006f3f960a ffb68400a963f6f0 b6ff0c006f3f960a b6ff0c006f3f960a ffb68400a963f6f0 b6ff0c006f3f960a ffb68400a963f6f0 - {e=>162146214,c=>1,a=>9,b=>5,d=>2} 09008d00a627aa09 09008d00a627aa09 09008d00a627aa09 0009a5009aa27a60 09008d00a627aa09 09008d00a627aa09 0009a5009aa27a60 09008d00a627aa09 0009a5009aa27a60 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>51386433,c=>7,a=>-38,b=>4,d=>2,f=>2} daffbc0041181023 daffbc0041181023 daffbc0041181023 ffda9d0031018414 daffbc0041181023 daffbc0041181023 ffda9d0031018414 daffbc0041181023 ffda9d0031018414 - {e=>119132246,c=>3,a=>-125,b=>6,d=>1,f=>0} 83ff5e0056d01907 83ff5e0056d01907 83ff5e0056d01907 ff83cc80719d0560 83ff5e0056d01907 83ff5e0056d01907 ff83cc80719d0560 83ff5e0056d01907 ff83cc80719d0560 - {e=>28309628,c=>6,a=>-101,b=>5,d=>5,f=>0} 9bff75017cf8af01 9bff75017cf8af01 9bff75017cf8af01 ff9bba801aff87c0 9bff75017cf8af01 9bff75017cf8af01 ff9bba801aff87c0 9bff75017cf8af01 ff9bba801aff87c0 - {e=>151543114,c=>3,a=>3,b=>2,d=>7,f=>5} 0300da014a5d0859 0300da014a5d0859 0300da014a5d0859 00034f809085d4aa 0300da014a5d0859 0300da014a5d0859 00034f809085d4aa 0300da014a5d0859 00034f809085d4aa - {e=>213132804,c=>5,a=>-95,b=>4,d=>0,f=>0} a1ff2c000426b40c a1ff2c000426b40c a1ff2c000426b40c ffa19400cb426040 a1ff2c000426b40c a1ff2c000426b40c ffa19400cb426040 a1ff2c000426b40c ffa19400cb426040 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>142590409,c=>6,a=>-41,g=>0,b=>6,d=>3,f=>7} d7fff600c9c17f7800000000 d7fff600c9c17f7800000000 d7fff600c9c17f7800000000 ffd7d98087fc1c9e00000000 d7fff600c9c17f7800000000 d7fff600c9c17f7800000000 ffd7d98087fc1c9e00000000 d7fff600c9c17f7800000000 ffd7d98087fc1c9e00000000 - {e=>97470275,c=>4,a=>81,g=>1,b=>6,d=>6,f=>3} 5100a6014347cf3501000000 5100a6014347cf3501000000 5100a6014347cf3501000000 0051d3005cf4743640000000 5100a6014347cf3501000000 5100a6014347cf3501000000 0051d3005cf4743640000000 5100a6014347cf3501000000 0051d3005cf4743640000000 - {e=>267791921,c=>1,a=>34,g=>1,b=>7,d=>2,f=>1} 22008f00312ef61f01000000 22008f00312ef61f01000000 22008f00312ef61f01000000 0022e500ff62e31240000000 22008f00312ef61f01000000 22008f00312ef61f01000000 0022e500ff62e31240000000 22008f00312ef61f01000000 0022e500ff62e31240000000 - {e=>41800024,c=>3,a=>-80,g=>2,b=>0,d=>0,f=>1} b0ff180058d17d1202000000 b0ff180058d17d1202000000 b0ff180058d17d1202000000 ffb00c0027dd158280000000 b0ff180058d17d1202000000 b0ff180058d17d1202000000 ffb00c0027dd158280000000 b0ff180058d17d1202000000 ffb00c0027dd158280000000 - {e=>258096646,c=>0,a=>-31,g=>2,b=>3,d=>0,f=>3} e1ff0300063e623f02000000 e1ff0300063e623f02000000 e1ff0300063e623f02000000 ffe16000f623e06680000000 e1ff0300063e623f02000000 e1ff0300063e623f02000000 ffe16000f623e06680000000 e1ff0300063e623f02000000 ffe16000f623e06680000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>122313407,a=>19,d=>3,c=>0,h=>650,b=>1,g=>1,f=>3} 1300c100bf5a4a37290a0000 1300c100bf5a4a37290a0000 1300c100bf5a4a37290a0000 0013218074a5abf645140000 1300c100bf5a4a37290a0000 1300c100bf5a4a37290a0000 0013218074a5abf645140000 1300c100bf5a4a37290a0000 0013218074a5abf645140000 - {e=>94490750,a=>35,d=>1,c=>1,h=>5999,b=>4,g=>1,f=>0} 23004c007ed0a105bd5d0000 23004c007ed0a105bd5d0000 23004c007ed0a105bd5d0000 002384805a1d07e06ede0000 23004c007ed0a105bd5d0000 23004c007ed0a105bd5d0000 002384805a1d07e06ede0000 23004c007ed0a105bd5d0000 002384805a1d07e06ede0000 - {e=>76168925,a=>-99,d=>0,c=>3,h=>6309,b=>6,g=>0,f=>6} 9dff1e00dd3e8a6494620000 9dff1e00dd3e8a6494620000 9dff1e00dd3e8a6494620000 ff9dcc0048a3eddc314a0000 9dff1e00dd3e8a6494620000 9dff1e00dd3e8a6494620000 ff9dcc0048a3eddc314a0000 9dff1e00dd3e8a6494620000 ff9dcc0048a3eddc314a0000 - {e=>69639528,a=>-114,d=>1,c=>7,h=>2240,b=>2,g=>1,f=>7} 8eff7a00689d267401230000 8eff7a00689d267401230000 8eff7a00689d267401230000 ff8e5c804269d68e51800000 8eff7a00689d267401230000 8eff7a00689d267401230000 ff8e5c804269d68e51800000 8eff7a00689d267401230000 ff8e5c804269d68e51800000 - {e=>138012526,a=>109,d=>3,c=>5,h=>7241,b=>3,g=>2,f=>0} 6d00eb006ee7390826710000 6d00eb006ee7390826710000 6d00eb006ee7390826710000 006d7580839e76e0b8920000 6d00eb006ee7390826710000 6d00eb006ee7390826710000 006d7580839e76e0b8920000 6d00eb006ee7390826710000 006d7580839e76e0b8920000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>213997424,a=>12,d=>4,c=>5,h=>6891,b=>4,g=>0,f=>5,i=>155} 0c002c017057c15cac6b9b00 0c002c017057c15cac6b9b00 0c002c017057c15cac6b9b00 000c9600cc15770a35d69b00 0c002c017057c15cac6b9b00 0c002c017057c15cac6b9b00 000c9600cc15770a35d69b00 0c002c017057c15cac6b9b00 000c9600cc15770a35d69b00 - {e=>80148154,a=>4,d=>3,c=>3,h=>5605,b=>4,g=>2,f=>7,i=>187} 0400dc00baf6c6749657bb00 0400dc00baf6c6749657bb00 0400dc00baf6c6749657bb00 00048d804c6f6baeabcabb00 0400dc00baf6c6749657bb00 0400dc00baf6c6749657bb00 00048d804c6f6baeabcabb00 0400dc00baf6c6749657bb00 00048d804c6f6baeabcabb00 - {e=>17679511,a=>103,d=>4,c=>7,h=>793,b=>4,g=>1,f=>5,i=>154} 67003c0197c40d51650c9a00 67003c0197c40d51650c9a00 67003c0197c40d51650c9a00 00679e0010dc497a46329a00 67003c0197c40d51650c9a00 67003c0197c40d51650c9a00 00679e0010dc497a46329a00 67003c0197c40d51650c9a00 00679e0010dc497a46329a00 - {e=>234963446,a=>-109,d=>7,c=>4,h=>4806,b=>2,g=>2,f=>0,i=>153} 93ffe201f641010e1a4b9900 93ffe201f641010e1a4b9900 93ffe201f641010e1a4b9900 ff935380e0141f60a58c9900 93ffe201f641010e1a4b9900 93ffe201f641010e1a4b9900 ff935380e0141f60a58c9900 93ffe201f641010e1a4b9900 ff935380e0141f60a58c9900 - {e=>233686042,a=>26,d=>5,c=>3,h=>6938,b=>4,g=>1,f=>3,i=>229} 1a005c011ac4ed3d696ce500 1a005c011ac4ed3d696ce500 1a005c011ac4ed3d696ce500 001a8e80dedc41a67634e500 1a005c011ac4ed3d696ce500 1a005c011ac4ed3d696ce500 001a8e80dedc41a67634e500 1a005c011ac4ed3d696ce500 001a8e80dedc41a67634e500 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; }; - {a=>-76,b=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 b4ffffff00000000 ffffffb400000000 b4ffffff00000000 ffffffb400000000 - {a=>-65,b=>4} bfffffff04000000 bfffffff04000000 bfffffff04000000 ffffffbf80000000 bfffffff04000000 bfffffff04000000 ffffffbf80000000 bfffffff04000000 ffffffbf80000000 - {a=>13,b=>3} 0d00000003000000 0d00000003000000 0d00000003000000 0000000d60000000 0d00000003000000 0d00000003000000 0000000d60000000 0d00000003000000 0000000d60000000 - {a=>79,b=>5} 4f00000005000000 4f00000005000000 4f00000005000000 0000004fa0000000 4f00000005000000 4f00000005000000 0000004fa0000000 4f00000005000000 0000004fa0000000 - {a=>-81,b=>4} afffffff04000000 afffffff04000000 afffffff04000000 ffffffaf80000000 afffffff04000000 afffffff04000000 ffffffaf80000000 afffffff04000000 ffffffaf80000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>84,b=>1} 5400000019000000 5400000019000000 5400000019000000 000000542c000000 5400000019000000 5400000019000000 000000542c000000 5400000019000000 000000542c000000 - {c=>1,a=>127,b=>1} 7f00000009000000 7f00000009000000 7f00000009000000 0000007f24000000 7f00000009000000 7f00000009000000 0000007f24000000 7f00000009000000 0000007f24000000 - {c=>5,a=>-114,b=>0} 8effffff28000000 8effffff28000000 8effffff28000000 ffffff8e14000000 8effffff28000000 8effffff28000000 ffffff8e14000000 8effffff28000000 ffffff8e14000000 - {c=>3,a=>108,b=>1} 6c00000019000000 6c00000019000000 6c00000019000000 0000006c2c000000 6c00000019000000 6c00000019000000 0000006c2c000000 6c00000019000000 0000006c2c000000 - {c=>7,a=>9,b=>1} 0900000039000000 0900000039000000 0900000039000000 000000093c000000 0900000039000000 0900000039000000 000000093c000000 0900000039000000 000000093c000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>-62,b=>1,d=>4} c2ffffff31010000 c2ffffff31010000 c2ffffff31010000 ffffffc23a000000 c2ffffff31010000 c2ffffff31010000 ffffffc23a000000 c2ffffff31010000 ffffffc23a000000 - {c=>7,a=>74,b=>5,d=>0} 4a0000003d000000 4a0000003d000000 4a0000003d000000 0000004abc000000 4a0000003d000000 4a0000003d000000 0000004abc000000 4a0000003d000000 0000004abc000000 - {c=>3,a=>-122,b=>2,d=>7} 86ffffffda010000 86ffffffda010000 86ffffffda010000 ffffff864f800000 86ffffffda010000 86ffffffda010000 ffffff864f800000 86ffffffda010000 ffffff864f800000 - {c=>3,a=>-73,b=>7,d=>2} b7ffffff9f000000 b7ffffff9f000000 b7ffffff9f000000 ffffffb7ed000000 b7ffffff9f000000 b7ffffff9f000000 ffffffb7ed000000 b7ffffff9f000000 ffffffb7ed000000 - {c=>1,a=>13,b=>5,d=>2} 0d0000008d000000 0d0000008d000000 0d0000008d000000 0000000da5000000 0d0000008d000000 0d0000008d000000 0000000da5000000 0d0000008d000000 0000000da5000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>130106456,c=>4,a=>127,b=>7,d=>3} 7f000000e70000005844c107 7f000000e70000005844c107 7f000000e70000005844c107 0000007ff18000007c144580 7f000000e70000005844c107 7f000000e70000005844c107 0000007ff18000007c144580 7f000000e70000005844c107 0000007ff18000007c144580 - {e=>228064205,c=>5,a=>28,b=>5,d=>3} 1c000000ed000000cdfb970d 1c000000ed000000cdfb970d 1c000000ed000000cdfb970d 0000001cb5800000d97fbcd0 1c000000ed000000cdfb970d 1c000000ed000000cdfb970d 0000001cb5800000d97fbcd0 1c000000ed000000cdfb970d 0000001cb5800000d97fbcd0 - {e=>217906279,c=>1,a=>99,b=>0,d=>7} 63000000c801000067fcfc0c 63000000c801000067fcfc0c 63000000c801000067fcfc0c 0000006307800000cfcfc670 63000000c801000067fcfc0c 63000000c801000067fcfc0c 0000006307800000cfcfc670 63000000c801000067fcfc0c 0000006307800000cfcfc670 - {e=>51712296,c=>5,a=>-8,b=>2,d=>6} f8ffffffaa01000028111503 f8ffffffaa01000028111503 f8ffffffaa01000028111503 fffffff85700000031511280 f8ffffffaa01000028111503 f8ffffffaa01000028111503 fffffff85700000031511280 f8ffffffaa01000028111503 fffffff85700000031511280 - {e=>211735696,c=>6,a=>78,b=>1,d=>0} 4e0000003100000090d49e0c 4e0000003100000090d49e0c 4e0000003100000090d49e0c 0000004e38000000c9ed4900 4e0000003100000090d49e0c 4e0000003100000090d49e0c 0000004e38000000c9ed4900 4e0000003100000090d49e0c 0000004e38000000c9ed4900 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>242564914,c=>0,a=>6,b=>0,d=>4,f=>4} 0600000000010000323f754e 0600000000010000323f754e 0600000000010000323f754e 0000000602000000e753f328 0600000000010000323f754e 0600000000010000323f754e 0000000602000000e753f328 0600000000010000323f754e 0000000602000000e753f328 - {e=>142230259,c=>5,a=>-69,b=>3,d=>4,f=>0} bbffffff2b010000f3427a08 bbffffff2b010000f3427a08 bbffffff2b010000f3427a08 ffffffbb7600000087a42f30 bbffffff2b010000f3427a08 bbffffff2b010000f3427a08 ffffffbb7600000087a42f30 bbffffff2b010000f3427a08 ffffffbb7600000087a42f30 - {e=>40226599,c=>3,a=>-72,b=>3,d=>0,f=>0} b8ffffff1b00000027cf6502 b8ffffff1b00000027cf6502 b8ffffff1b00000027cf6502 ffffffb86c000000265cf270 b8ffffff1b00000027cf6502 b8ffffff1b00000027cf6502 ffffffb86c000000265cf270 b8ffffff1b00000027cf6502 ffffffb86c000000265cf270 - {e=>4604876,c=>0,a=>18,b=>5,d=>2,f=>5} 1200000085000000cc434650 1200000085000000cc434650 1200000085000000cc434650 00000012a100000004643cca 1200000085000000cc434650 1200000085000000cc434650 00000012a100000004643cca 1200000085000000cc434650 00000012a100000004643cca - {e=>209840252,c=>0,a=>-52,b=>3,d=>3,f=>2} ccffffffc30000007ce8812c ccffffffc30000007ce8812c ccffffffc30000007ce8812c ffffffcc61800000c81e87c4 ccffffffc30000007ce8812c ccffffffc30000007ce8812c ffffffcc61800000c81e87c4 ccffffffc30000007ce8812c ffffffcc61800000c81e87c4 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>13259097,c=>3,a=>-63,g=>1,b=>5,d=>7,f=>3} c1ffffffdd0100005951ca3001000000 c1ffffffdd0100005951ca3001000000 c1ffffffdd0100005951ca3001000000 ffffffc1af8000000ca5159640000000 c1ffffffdd0100005951ca3001000000 c1ffffffdd0100005951ca3001000000 ffffffc1af8000000ca5159640000000 c1ffffffdd0100005951ca3001000000 ffffffc1af8000000ca5159640000000 - {e=>156908516,c=>4,a=>36,g=>0,b=>6,d=>0,f=>6} 2400000026000000e43b5a6900000000 2400000026000000e43b5a6900000000 2400000026000000e43b5a6900000000 00000024d000000095a3be4c00000000 2400000026000000e43b5a6900000000 2400000026000000e43b5a6900000000 00000024d000000095a3be4c00000000 2400000026000000e43b5a6900000000 00000024d000000095a3be4c00000000 - {e=>59405293,c=>0,a=>117,g=>2,b=>5,d=>7,f=>7} 75000000c5010000ed738a7302000000 75000000c5010000ed738a7302000000 75000000c5010000ed738a7302000000 00000075a380000038a73ede80000000 75000000c5010000ed738a7302000000 75000000c5010000ed738a7302000000 00000075a380000038a73ede80000000 75000000c5010000ed738a7302000000 00000075a380000038a73ede80000000 - {e=>247527189,c=>5,a=>66,g=>2,b=>2,d=>2,f=>1} 42000000aa00000015f7c01e02000000 42000000aa00000015f7c01e02000000 42000000aa00000015f7c01e02000000 0000004255000000ec0f715280000000 42000000aa00000015f7c01e02000000 42000000aa00000015f7c01e02000000 0000004255000000ec0f715280000000 42000000aa00000015f7c01e02000000 0000004255000000ec0f715280000000 - {e=>80174753,c=>2,a=>-35,g=>1,b=>2,d=>0,f=>2} ddffffff12000000a15ec72401000000 ddffffff12000000a15ec72401000000 ddffffff12000000a15ec72401000000 ffffffdd480000004c75ea1440000000 ddffffff12000000a15ec72401000000 ddffffff12000000a15ec72401000000 ffffffdd480000004c75ea1440000000 ddffffff12000000a15ec72401000000 ffffffdd480000004c75ea1440000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>79855944,a=>-79,d=>6,c=>0,h=>1469,b=>5,g=>1,f=>0} b1ffffff850100004881c204f5160000 b1ffffff850100004881c204f5160000 b1ffffff850100004881c204f5160000 ffffffb1a30000004c2814804b7a0000 b1ffffff850100004881c204f5160000 b1ffffff850100004881c204f5160000 ffffffb1a30000004c2814804b7a0000 b1ffffff850100004881c204f5160000 ffffffb1a30000004c2814804b7a0000 - {e=>55286286,a=>-110,d=>5,c=>5,h=>6486,b=>5,g=>1,f=>3} 92ffffff6d0100000e9a4b3359650000 92ffffff6d0100000e9a4b3359650000 92ffffff6d0100000e9a4b3359650000 ffffff92b680000034b9a0e672ac0000 92ffffff6d0100000e9a4b3359650000 92ffffff6d0100000e9a4b3359650000 ffffff92b680000034b9a0e672ac0000 92ffffff6d0100000e9a4b3359650000 ffffff92b680000034b9a0e672ac0000 - {e=>230194727,a=>-49,d=>2,c=>2,h=>6812,b=>6,g=>1,f=>4} cfffffff96000000277eb84d716a0000 cfffffff96000000277eb84d716a0000 cfffffff96000000277eb84d716a0000 ffffffcfc9000000db87e27875380000 cfffffff96000000277eb84d716a0000 cfffffff96000000277eb84d716a0000 ffffffcfc9000000db87e27875380000 cfffffff96000000277eb84d716a0000 ffffffcfc9000000db87e27875380000 - {e=>191802023,a=>61,d=>7,c=>6,h=>7935,b=>4,g=>1,f=>2} 3d000000f4010000a7aa6e2bfd7b0000 3d000000f4010000a7aa6e2bfd7b0000 3d000000f4010000a7aa6e2bfd7b0000 0000003d9b800000b6eaaa747dfe0000 3d000000f4010000a7aa6e2bfd7b0000 3d000000f4010000a7aa6e2bfd7b0000 0000003d9b800000b6eaaa747dfe0000 3d000000f4010000a7aa6e2bfd7b0000 0000003d9b800000b6eaaa747dfe0000 - {e=>31737331,a=>18,d=>6,c=>6,h=>5531,b=>3,g=>2,f=>2} 12000000b3010000f345e4216e560000 12000000b3010000f345e4216e560000 12000000b3010000f345e4216e560000 000000127b0000001e445f34ab360000 12000000b3010000f345e4216e560000 12000000b3010000f345e4216e560000 000000127b0000001e445f34ab360000 12000000b3010000f345e4216e560000 000000127b0000001e445f34ab360000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>257753255,a=>78,d=>5,c=>1,h=>4307,b=>5,g=>1,f=>3,i=>23} 4e0000004d010000a7005d3f4d431700 4e0000004d010000a7005d3f4d431700 4e0000004d010000a7005d3f4d431700 0000004ea6800000f5d00a7661a61700 4e0000004d010000a7005d3f4d431700 4e0000004d010000a7005d3f4d431700 0000004ea6800000f5d00a7661a61700 4e0000004d010000a7005d3f4d431700 0000004ea6800000f5d00a7661a61700 - {e=>154752796,a=>-128,d=>3,c=>3,h=>1857,b=>7,g=>2,f=>4,i=>149} 80ffffffdf0000001c573949061d9500 80ffffffdf0000001c573949061d9500 80ffffffdf0000001c573949061d9500 ffffff80ed800000939571c88e829500 80ffffffdf0000001c573949061d9500 80ffffffdf0000001c573949061d9500 ffffff80ed800000939571c88e829500 80ffffffdf0000001c573949061d9500 ffffff80ed800000939571c88e829500 - {e=>48153402,a=>-86,d=>4,c=>5,h=>2443,b=>5,g=>1,f=>3,i=>106} aaffffff2d0100003ac3de322d266a00 aaffffff2d0100003ac3de322d266a00 aaffffff2d0100003ac3de322d266a00 ffffffaab60000002dec33a653166a00 aaffffff2d0100003ac3de322d266a00 aaffffff2d0100003ac3de322d266a00 ffffffaab60000002dec33a653166a00 aaffffff2d0100003ac3de322d266a00 ffffffaab60000002dec33a653166a00 - {e=>149056525,a=>-9,d=>6,c=>2,h=>4899,b=>0,g=>1,f=>2,i=>164} f7ffffff900100000d6ce2288d4ca400 f7ffffff900100000d6ce2288d4ca400 f7ffffff900100000d6ce2288d4ca400 fffffff70b0000008e26c0d46646a400 f7ffffff900100000d6ce2288d4ca400 f7ffffff900100000d6ce2288d4ca400 fffffff70b0000008e26c0d46646a400 f7ffffff900100000d6ce2288d4ca400 fffffff70b0000008e26c0d46646a400 - {e=>211134956,a=>118,d=>5,c=>1,h=>1779,b=>3,g=>1,f=>5,i=>234} 760000004b010000eca9955ccd1bea00 760000004b010000eca9955ccd1bea00 760000004b010000eca9955ccd1bea00 0000007666800000c95a9eca4de6ea00 760000004b010000eca9955ccd1bea00 760000004b010000eca9955ccd1bea00 0000007666800000c95a9eca4de6ea00 760000004b010000eca9955ccd1bea00 0000007666800000c95a9eca4de6ea00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; }; - {a=>83,b=>3} 5300000003000000 53000000000000000300000000000000 53000000000000000300000000000000 0000005360000000 5300000003000000 5300000003000000 00000000000000536000000000000000 5300000003000000 0000005360000000 - {a=>118,b=>5} 7600000005000000 76000000000000000500000000000000 76000000000000000500000000000000 00000076a0000000 7600000005000000 7600000005000000 0000000000000076a000000000000000 7600000005000000 00000076a0000000 - {a=>102,b=>4} 6600000004000000 66000000000000000400000000000000 66000000000000000400000000000000 0000006680000000 6600000004000000 6600000004000000 00000000000000668000000000000000 6600000004000000 0000006680000000 - {a=>-46,b=>3} d2ffffff03000000 d2ffffffffffffff0300000000000000 d2ffffffffffffff0300000000000000 ffffffd260000000 d2ffffff03000000 d2ffffff03000000 ffffffffffffffd26000000000000000 d2ffffff03000000 ffffffd260000000 - {a=>-65,b=>5} bfffffff05000000 bfffffffffffffff0500000000000000 bfffffffffffffff0500000000000000 ffffffbfa0000000 bfffffff05000000 bfffffff05000000 ffffffffffffffbfa000000000000000 bfffffff05000000 ffffffbfa0000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>101,b=>1} 6500000031000000 65000000000000003100000000000000 65000000000000003100000000000000 0000006538000000 6500000031000000 6500000031000000 00000000000000653800000000000000 6500000031000000 0000006538000000 - {c=>5,a=>32,b=>7} 200000002f000000 20000000000000002f00000000000000 20000000000000002f00000000000000 00000020f4000000 200000002f000000 200000002f000000 0000000000000020f400000000000000 200000002f000000 00000020f4000000 - {c=>7,a=>-74,b=>2} b6ffffff3a000000 b6ffffffffffffff3a00000000000000 b6ffffffffffffff3a00000000000000 ffffffb65c000000 b6ffffff3a000000 b6ffffff3a000000 ffffffffffffffb65c00000000000000 b6ffffff3a000000 ffffffb65c000000 - {c=>4,a=>-84,b=>1} acffffff21000000 acffffffffffffff2100000000000000 acffffffffffffff2100000000000000 ffffffac30000000 acffffff21000000 acffffff21000000 ffffffffffffffac3000000000000000 acffffff21000000 ffffffac30000000 - {c=>3,a=>-100,b=>4} 9cffffff1c000000 9cffffffffffffff1c00000000000000 9cffffffffffffff1c00000000000000 ffffff9c8c000000 9cffffff1c000000 9cffffff1c000000 ffffffffffffff9c8c00000000000000 9cffffff1c000000 ffffff9c8c000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-18,b=>2,d=>4} eeffffff1a010000 eeffffffffffffff1a01000000000000 eeffffffffffffff1a01000000000000 ffffffee4e000000 eeffffff1a010000 eeffffff1a010000 ffffffffffffffee4e00000000000000 eeffffff1a010000 ffffffee4e000000 - {c=>0,a=>-123,b=>2,d=>3} 85ffffffc2000000 85ffffffffffffffc200000000000000 85ffffffffffffffc200000000000000 ffffff8541800000 85ffffffc2000000 85ffffffc2000000 ffffffffffffff854180000000000000 85ffffffc2000000 ffffff8541800000 - {c=>5,a=>85,b=>2,d=>3} 55000000ea000000 5500000000000000ea00000000000000 5500000000000000ea00000000000000 0000005555800000 55000000ea000000 55000000ea000000 00000000000000555580000000000000 55000000ea000000 0000005555800000 - {c=>5,a=>-113,b=>7,d=>6} 8fffffffaf010000 8fffffffffffffffaf01000000000000 8fffffffffffffffaf01000000000000 ffffff8ff7000000 8fffffffaf010000 8fffffffaf010000 ffffffffffffff8ff700000000000000 8fffffffaf010000 ffffff8ff7000000 - {c=>3,a=>66,b=>0,d=>6} 4200000098010000 42000000000000009801000000000000 42000000000000009801000000000000 000000420f000000 4200000098010000 4200000098010000 00000000000000420f00000000000000 4200000098010000 000000420f000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>160937402,c=>7,a=>27,b=>7,d=>5} 1b0000007f010000bab59709 1b000000000000007f010000bab59709 1b000000000000007f010000bab59709 0000001bfe800000997b5ba0 1b0000007f010000bab59709 1b0000007f010000bab59709 000000000000001bfe800000997b5ba0 1b0000007f010000bab59709 0000001bfe800000997b5ba0 - {e=>20048177,c=>3,a=>28,b=>7,d=>6} 1c0000009f01000031e93101 1c000000000000009f01000031e93101 1c000000000000009f01000031e93101 0000001cef000000131e9310 1c0000009f01000031e93101 1c0000009f01000031e93101 000000000000001cef000000131e9310 1c0000009f01000031e93101 0000001cef000000131e9310 - {e=>246627849,c=>0,a=>-81,b=>4,d=>3} afffffffc4000000093eb30e afffffffffffffffc4000000093eb30e afffffffffffffffc4000000093eb30e ffffffaf81800000eb33e090 afffffffc4000000093eb30e afffffffc4000000093eb30e ffffffffffffffaf81800000eb33e090 afffffffc4000000093eb30e ffffffaf81800000eb33e090 - {e=>200039194,c=>5,a=>112,b=>2,d=>1} 700000006a0000001a5bec0b 70000000000000006a0000001a5bec0b 70000000000000006a0000001a5bec0b 0000007054800000bec5b1a0 700000006a0000001a5bec0b 700000006a0000001a5bec0b 000000000000007054800000bec5b1a0 700000006a0000001a5bec0b 0000007054800000bec5b1a0 - {e=>250650060,c=>0,a=>124,b=>1,d=>6} 7c00000081010000cc9df00e 7c0000000000000081010000cc9df00e 7c0000000000000081010000cc9df00e 0000007c23000000ef09dcc0 7c00000081010000cc9df00e 7c00000081010000cc9df00e 000000000000007c23000000ef09dcc0 7c00000081010000cc9df00e 0000007c23000000ef09dcc0 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>164019807,c=>0,a=>-107,b=>4,d=>4,f=>4} 95ffffff040100005fbec649 95ffffffffffffff040100005fbec649 95ffffffffffffff040100005fbec649 ffffff95820000009c6be5f8 95ffffff040100005fbec649 95ffffff040100005fbec649 ffffffffffffff95820000009c6be5f8 95ffffff040100005fbec649 ffffff95820000009c6be5f8 - {e=>148347054,c=>7,a=>122,b=>5,d=>4,f=>4} 7a0000003d010000ae98d748 7a000000000000003d010000ae98d748 7a000000000000003d010000ae98d748 0000007abe0000008d798ae8 7a0000003d010000ae98d748 7a0000003d010000ae98d748 000000000000007abe0000008d798ae8 7a0000003d010000ae98d748 0000007abe0000008d798ae8 - {e=>201328566,c=>2,a=>-38,b=>2,d=>0,f=>5} daffffff12000000b607005c daffffffffffffff12000000b607005c daffffffffffffff12000000b607005c ffffffda48000000c0007b6a daffffff12000000b607005c daffffff12000000b607005c ffffffffffffffda48000000c0007b6a daffffff12000000b607005c ffffffda48000000c0007b6a - {e=>17793067,c=>3,a=>62,b=>5,d=>1,f=>6} 3e0000005d0000002b800f61 3e000000000000005d0000002b800f61 3e000000000000005d0000002b800f61 0000003eac80000010f802bc 3e0000005d0000002b800f61 3e0000005d0000002b800f61 000000000000003eac80000010f802bc 3e0000005d0000002b800f61 0000003eac80000010f802bc - {e=>265362806,c=>3,a=>-81,b=>7,d=>0,f=>0} afffffff1f000000761dd10f afffffffffffffff1f000000761dd10f afffffffffffffff1f000000761dd10f ffffffafec000000fd11d760 afffffff1f000000761dd10f afffffff1f000000761dd10f ffffffffffffffafec000000fd11d760 afffffff1f000000761dd10f ffffffafec000000fd11d760 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>119342936,c=>2,a=>-110,g=>0,b=>2,d=>6,f=>7} 92ffffff9201000058071d7700000000 92ffffffffffffff9201000058071d770000000000000000 92ffffffffffffff9201000058071d770000000000000000 ffffff924b00000071d0758e00000000 92ffffff9201000058071d7700000000 92ffffff9201000058071d7700000000 ffffffffffffff924b00000071d0758e0000000000000000 92ffffff9201000058071d7700000000 ffffff924b00000071d0758e00000000 - {e=>62059604,c=>7,a=>-92,g=>3,b=>4,d=>4,f=>7} a4ffffff3c01000054f4b27303000000 a4ffffffffffffff3c01000054f4b2730300000000000000 a4ffffffffffffff3c01000054f4b2730300000000000000 ffffffa49e0000003b2f454ec0000000 a4ffffff3c01000054f4b27303000000 a4ffffff3c01000054f4b27303000000 ffffffffffffffa49e0000003b2f454ec000000000000000 a4ffffff3c01000054f4b27303000000 ffffffa49e0000003b2f454ec0000000 - {e=>174545826,c=>6,a=>-60,g=>3,b=>2,d=>3,f=>1} c4fffffff2000000a25b671a03000000 c4fffffffffffffff2000000a25b671a0300000000000000 c4fffffffffffffff2000000a25b671a0300000000000000 ffffffc459800000a675ba22c0000000 c4fffffff2000000a25b671a03000000 c4fffffff2000000a25b671a03000000 ffffffffffffffc459800000a675ba22c000000000000000 c4fffffff2000000a25b671a03000000 ffffffc459800000a675ba22c0000000 - {e=>133811322,c=>5,a=>106,g=>2,b=>2,d=>0,f=>4} 6a0000002a0000007accf94702000000 6a000000000000002a0000007accf9470200000000000000 6a000000000000002a0000007accf9470200000000000000 0000006a540000007f9cc7a880000000 6a0000002a0000007accf94702000000 6a0000002a0000007accf94702000000 000000000000006a540000007f9cc7a88000000000000000 6a0000002a0000007accf94702000000 0000006a540000007f9cc7a880000000 - {e=>181399152,c=>6,a=>71,g=>3,b=>4,d=>7,f=>7} 47000000f401000070eecf7a03000000 4700000000000000f401000070eecf7a0300000000000000 4700000000000000f401000070eecf7a0300000000000000 000000479b800000acfee70ec0000000 47000000f401000070eecf7a03000000 47000000f401000070eecf7a03000000 00000000000000479b800000acfee70ec000000000000000 47000000f401000070eecf7a03000000 000000479b800000acfee70ec0000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>178239616,a=>-56,d=>2,c=>0,h=>947,b=>6,g=>2,f=>5} c8ffffff8600000080b89f5ace0e0000 c8ffffffffffffff8600000080b89f5ace0e000000000000 c8ffffffffffffff8600000080b89f5ace0e000000000000 ffffffc8c1000000a9fb880a87660000 c8ffffff8600000080b89f5ace0e0000 c8ffffff8600000080b89f5ace0e0000 ffffffffffffffc8c1000000a9fb880a8766000000000000 c8ffffff8600000080b89f5ace0e0000 ffffffc8c1000000a9fb880a87660000 - {e=>92807764,a=>66,d=>7,c=>0,h=>2391,b=>5,g=>2,f=>3} 42000000c5010000542288355e250000 4200000000000000c5010000542288355e25000000000000 4200000000000000c5010000542288355e25000000000000 00000042a38000005882254692ae0000 42000000c5010000542288355e250000 42000000c5010000542288355e250000 0000000000000042a38000005882254692ae000000000000 42000000c5010000542288355e250000 00000042a38000005882254692ae0000 - {e=>217147655,a=>26,d=>5,c=>6,h=>7725,b=>4,g=>1,f=>2} 1a000000740100000769f12cb5780000 1a00000000000000740100000769f12cb578000000000000 1a00000000000000740100000769f12cb578000000000000 0000001a9a800000cf1690747c5a0000 1a000000740100000769f12cb5780000 1a000000740100000769f12cb5780000 000000000000001a9a800000cf1690747c5a000000000000 1a000000740100000769f12cb5780000 0000001a9a800000cf1690747c5a0000 - {e=>94483661,a=>-122,d=>7,c=>6,h=>3773,b=>6,g=>2,f=>7} 86fffffff6010000cdb4a175f63a0000 86fffffffffffffff6010000cdb4a175f63a000000000000 86fffffffffffffff6010000cdb4a175f63a000000000000 ffffff86db8000005a1b4cde9d7a0000 86fffffff6010000cdb4a175f63a0000 86fffffff6010000cdb4a175f63a0000 ffffffffffffff86db8000005a1b4cde9d7a000000000000 86fffffff6010000cdb4a175f63a0000 ffffff86db8000005a1b4cde9d7a0000 - {e=>255972856,a=>-65,d=>4,c=>6,h=>4167,b=>3,g=>2,f=>7} bfffffff33010000f8d5417f1e410000 bfffffffffffffff33010000f8d5417f1e41000000000000 bfffffffffffffff33010000f8d5417f1e41000000000000 ffffffbf7a000000f41d5f8ea08e0000 bfffffff33010000f8d5417f1e410000 bfffffff33010000f8d5417f1e410000 ffffffffffffffbf7a000000f41d5f8ea08e000000000000 bfffffff33010000f8d5417f1e410000 ffffffbf7a000000f41d5f8ea08e0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>236368736,a=>50,d=>0,c=>0,h=>550,b=>0,g=>3,f=>2,i=>115} 320000000000000060b3162e9b087300 32000000000000000000000060b3162e9b08730000000000 32000000000000000000000060b3162e9b08730000000000 0000003200000000e16b3604c44c7300 320000000000000060b3162e9b087300 320000000000000060b3162e9b087300 000000000000003200000000e16b3604c44c730000000000 320000000000000060b3162e9b087300 0000003200000000e16b3604c44c7300 - {e=>88524857,a=>-90,d=>2,c=>1,h=>306,b=>4,g=>3,f=>5,i=>249} a6ffffff8c00000039c84655cb04f900 a6ffffffffffffff8c00000039c84655cb04f90000000000 a6ffffffffffffff8c00000039c84655cb04f90000000000 ffffffa685000000546c839ac264f900 a6ffffff8c00000039c84655cb04f900 a6ffffff8c00000039c84655cb04f900 ffffffffffffffa685000000546c839ac264f90000000000 a6ffffff8c00000039c84655cb04f900 ffffffa685000000546c839ac264f900 - {e=>192500988,a=>-84,d=>1,c=>2,h=>5667,b=>5,g=>0,f=>5,i=>178} acffffff55000000fc54795b8c58b200 acffffffffffffff55000000fc54795b8c58b20000000000 acffffffffffffff55000000fc54795b8c58b20000000000 ffffffaca8800000b7954fca2c46b200 acffffff55000000fc54795b8c58b200 acffffff55000000fc54795b8c58b200 ffffffffffffffaca8800000b7954fca2c46b20000000000 acffffff55000000fc54795b8c58b200 ffffffaca8800000b7954fca2c46b200 - {e=>102319901,a=>48,d=>6,c=>5,h=>4809,b=>5,g=>0,f=>5,i=>243} 30000000ad0100001d471956244bf300 3000000000000000ad0100001d471956244bf30000000000 3000000000000000ad0100001d471956244bf30000000000 00000030b7000000619471da2592f300 30000000ad0100001d471956244bf300 30000000ad0100001d471956244bf300 0000000000000030b7000000619471da2592f30000000000 30000000ad0100001d471956244bf300 00000030b7000000619471da2592f300 - {e=>105125875,a=>-48,d=>6,c=>2,h=>3701,b=>4,g=>0,f=>6,i=>134} d0ffffff94010000f3174466d4398600 d0ffffffffffffff94010000f3174466d439860000000000 d0ffffffffffffff94010000f3174466d439860000000000 ffffffd08b00000064417f3c1cea8600 d0ffffff94010000f3174466d4398600 d0ffffff94010000f3174466d4398600 ffffffffffffffd08b00000064417f3c1cea860000000000 d0ffffff94010000f3174466d4398600 ffffffd08b00000064417f3c1cea8600 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; }; - {a=>7} 07 07 07 e0 07000000 07 e0 07 e0 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>7} 07 07 07 e0 07000000 07 e0 07 e0 - {a=>1} 01 01 01 20 01000000 01 20 01 20 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; }; - {a=>6,b=>7} 3e 3e 3e dc 3e000000 3e dc 3e dc - {a=>6,b=>0} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>1,b=>6} 31 31 31 38 31000000 31 38 31 38 - {a=>3,b=>4} 23 23 23 70 23000000 23 70 23 70 - {a=>5,b=>5} 2d 2d 2d b4 2d000000 2d b4 2d b4 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>6,a=>3,b=>3} 9b01 9b01 9b01 6f00 9b010000 9b01 6f00 9b01 6f00 - {c=>2,a=>6,b=>1} 8e00 8e00 8e00 c500 8e000000 8e00 c500 8e00 c500 - {c=>6,a=>4,b=>1} 8c01 8c01 8c01 8700 8c010000 8c01 8700 8c01 8700 - {c=>2,a=>1,b=>0} 8100 8100 8100 2100 81000000 8100 2100 8100 2100 - {c=>7,a=>4,b=>7} fc01 fc01 fc01 9f80 fc010000 fc01 9f80 fc01 9f80 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>1,a=>4,b=>4,d=>133269742} 64000000ee88f107 64000000ee88f107 64000000ee88f107 908000007f188ee0 64000000ee88f107 64000000ee88f107 908000007f188ee0 64000000ee88f107 908000007f188ee0 - {c=>3,a=>7,b=>1,d=>257081784} cf000000b8c1520f cf000000b8c1520f cf000000b8c1520f e5800000f52c1b80 cf000000b8c1520f cf000000b8c1520f e5800000f52c1b80 cf000000b8c1520f e5800000f52c1b80 - {c=>0,a=>7,b=>6,d=>258403104} 3700000020eb660f 3700000020eb660f 3700000020eb660f f8000000f66eb200 3700000020eb660f 3700000020eb660f f8000000f66eb200 3700000020eb660f f8000000f66eb200 - {c=>5,a=>7,b=>0,d=>128978242} 47010000420db007 47010000420db007 47010000420db007 e28000007b00d420 47010000420db007 47010000420db007 e28000007b00d420 47010000420db007 e28000007b00d420 - {c=>5,a=>0,b=>4,d=>243031951} 600100008f5f7c0e 600100008f5f7c0e 600100008f5f7c0e 12800000e7c5f8f0 600100008f5f7c0e 600100008f5f7c0e 12800000e7c5f8f0 600100008f5f7c0e 12800000e7c5f8f0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>0,c=>2,a=>6,b=>7,d=>33702724} be00000044430202 be00000044430202 be00000044430202 dd00000020243440 be00000044430202 be00000044430202 dd00000020243440 be00000044430202 dd00000020243440 - {e=>2,c=>5,a=>5,b=>2,d=>6095297} 55010000c1015d20 55010000c1015d20 55010000c1015d20 aa80000005d01c14 55010000c1015d20 55010000c1015d20 aa80000005d01c14 55010000c1015d20 aa80000005d01c14 - {e=>4,c=>4,a=>4,b=>6,d=>213519559} 34010000c70cba4c 34010000c70cba4c 34010000c70cba4c 9a000000cba0cc78 34010000c70cba4c 34010000c70cba4c 9a000000cba0cc78 34010000c70cba4c 9a000000cba0cc78 - {e=>5,c=>2,a=>7,b=>5,d=>18462540} af0000004cb71951 af0000004cb71951 af0000004cb71951 f5000000119b74ca af0000004cb71951 af0000004cb71951 f5000000119b74ca af0000004cb71951 f5000000119b74ca - {e=>1,c=>6,a=>1,b=>7,d=>89059346} b901000012f04e15 b901000012f04e15 b901000012f04e15 3f00000054ef0122 b901000012f04e15 b901000012f04e15 3f00000054ef0122 b901000012f04e15 3f00000054ef0122 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>5,c=>1,a=>7,b=>1,d=>136757511,f=>1} 4f00000007c1265801000000 4f00000007c1265801000000 4f00000007c1265801000000 e4800000826c107a40000000 4f00000007c1265801000000 4f00000007c1265801000000 e4800000826c107a40000000 4f00000007c1265801000000 e4800000826c107a40000000 - {e=>0,c=>4,a=>7,b=>4,d=>125709169,f=>0} 27010000712b7e0700000000 27010000712b7e0700000000 27010000712b7e0700000000 f200000077e2b71000000000 27010000712b7e0700000000 27010000712b7e0700000000 f200000077e2b71000000000 27010000712b7e0700000000 f200000077e2b71000000000 - {e=>4,c=>6,a=>4,b=>0,d=>58396282,f=>2} 840100007a0e7b4302000000 840100007a0e7b4302000000 840100007a0e7b4302000000 8300000037b0e7a880000000 840100007a0e7b4302000000 840100007a0e7b4302000000 8300000037b0e7a880000000 840100007a0e7b4302000000 8300000037b0e7a880000000 - {e=>0,c=>7,a=>2,b=>1,d=>156900784,f=>0} ca010000b01d5a0900000000 ca010000b01d5a0900000000 ca010000b01d5a0900000000 4780000095a1db0000000000 ca010000b01d5a0900000000 ca010000b01d5a0900000000 4780000095a1db0000000000 ca010000b01d5a0900000000 4780000095a1db0000000000 - {e=>6,c=>5,a=>4,b=>0,d=>153791533,f=>0} 440100002dac2a6900000000 440100002dac2a6900000000 440100002dac2a6900000000 8280000092aac2dc00000000 440100002dac2a6900000000 440100002dac2a6900000000 8280000092aac2dc00000000 440100002dac2a6900000000 8280000092aac2dc00000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>4,c=>6,a=>0,g=>3159,b=>3,d=>201444973,f=>3} 980100006dce014c5f310000 980100006dce014c5f310000 980100006dce014c5f310000 0f000000c01ce6d8d8ae0000 980100006dce014c5f310000 980100006dce014c5f310000 0f000000c01ce6d8d8ae0000 980100006dce014c5f310000 0f000000c01ce6d8d8ae0000 - {e=>3,c=>5,a=>2,g=>1311,b=>0,d=>216985875,f=>0} 4201000013f1ee3c7c140000 4201000013f1ee3c7c140000 4201000013f1ee3c7c140000 42800000ceef11360a3e0000 4201000013f1ee3c7c140000 4201000013f1ee3c7c140000 42800000ceef11360a3e0000 4201000013f1ee3c7c140000 42800000ceef11360a3e0000 - {e=>4,c=>1,a=>4,g=>4089,b=>3,d=>90392677,f=>2} 5c00000065486345e63f0000 5c00000065486345e63f0000 5c00000065486345e63f0000 8c800000563486589ff20000 5c00000065486345e63f0000 5c00000065486345e63f0000 8c800000563486589ff20000 5c00000065486345e63f0000 8c800000563486589ff20000 - {e=>4,c=>6,a=>2,g=>6577,b=>0,d=>32952048,f=>2} 82010000f0cef641c6660000 82010000f0cef641c6660000 82010000f0cef641c6660000 430000001f6cef08b3620000 82010000f0cef641c6660000 82010000f0cef641c6660000 430000001f6cef08b3620000 82010000f0cef641c6660000 430000001f6cef08b3620000 - {e=>6,c=>3,a=>2,g=>5134,b=>2,d=>70582675,f=>0} d20000009301356438500000 d20000009301356438500000 d20000009301356438500000 498000004350193c281c0000 d20000009301356438500000 d20000009301356438500000 498000004350193c281c0000 d20000009301356438500000 498000004350193c281c0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>4,a=>7,d=>66200696,c=>5,h=>31,b=>4,g=>6484,f=>1} 670100007824f24351651f00 670100007824f24351651f00 670100007824f24351651f00 f28000003f22478872a81f00 670100007824f24351651f00 670100007824f24351651f00 f28000003f22478872a81f00 670100007824f24351651f00 f28000003f22478872a81f00 - {e=>3,a=>0,d=>142854848,c=>3,h=>30,b=>3,g=>2350,f=>3} d8000000c0ca8338bb241e00 d8000000c0ca8338bb241e00 d8000000c0ca8338bb241e00 0d800000883cac06d25c1e00 d8000000c0ca8338bb241e00 d8000000c0ca8338bb241e00 0d800000883cac06d25c1e00 d8000000c0ca8338bb241e00 0d800000883cac06d25c1e00 - {e=>0,a=>3,d=>178180283,c=>3,h=>162,b=>2,g=>1577,f=>2} d3000000bbd09e0aa618a200 d3000000bbd09e0aa618a200 d3000000bbd09e0aa618a200 69800000a9ed0bb08c52a200 d3000000bbd09e0aa618a200 d3000000bbd09e0aa618a200 69800000a9ed0bb08c52a200 d3000000bbd09e0aa618a200 69800000a9ed0bb08c52a200 - {e=>7,a=>3,d=>71770977,c=>0,h=>159,b=>4,g=>2221,f=>2} 2300000061234774b6229f00 2300000061234774b6229f00 2300000061234774b6229f00 700000004472361e915a9f00 2300000061234774b6229f00 2300000061234774b6229f00 700000004472361e915a9f00 2300000061234774b6229f00 700000004472361e915a9f00 - {e=>3,a=>7,d=>209718566,c=>4,h=>184,b=>0,g=>4011,f=>3} 07010000260d803caf3eb800 07010000260d803caf3eb800 07010000260d803caf3eb800 e2000000c800d266df56b800 07010000260d803caf3eb800 07010000260d803caf3eb800 e2000000c800d266df56b800 07010000260d803caf3eb800 e2000000c800d266df56b800 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; }; - {a=>-101,b=>3} 9b03 9b03 9b03 9b60 9b030000 9b03 9b60 9b03 9b60 - {a=>-121,b=>0} 8700 8700 8700 8700 87000000 8700 8700 8700 8700 - {a=>49,b=>5} 3105 3105 3105 31a0 31050000 3105 31a0 3105 31a0 - {a=>-18,b=>5} ee05 ee05 ee05 eea0 ee050000 ee05 eea0 ee05 eea0 - {a=>-28,b=>7} e407 e407 e407 e4e0 e4070000 e407 e4e0 e407 e4e0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-95,b=>6} a12e a12e a12e a1d4 a12e0000 a12e a1d4 a12e a1d4 - {c=>3,a=>105,b=>5} 691d 691d 691d 69ac 691d0000 691d 69ac 691d 69ac - {c=>5,a=>-88,b=>7} a82f a82f a82f a8f4 a82f0000 a82f a8f4 a82f a8f4 - {c=>3,a=>-100,b=>0} 9c18 9c18 9c18 9c0c 9c180000 9c18 9c0c 9c18 9c0c - {c=>0,a=>-15,b=>0} f100 f100 f100 f100 f1000000 f100 f100 f100 f100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>1,a=>78,b=>7,d=>5} 4e0f0500 4e0f0500 4e0f0500 4ee4a000 4e0f0500 4e0f0500 4ee4a000 4e0f0500 4ee4a000 - {c=>4,a=>18,b=>5,d=>2} 12250200 12250200 12250200 12b04000 12250200 12250200 12b04000 12250200 12b04000 - {c=>7,a=>56,b=>5,d=>0} 383d0000 383d0000 383d0000 38bc0000 383d0000 383d0000 38bc0000 383d0000 38bc0000 - {c=>5,a=>-82,b=>5,d=>1} ae2d0100 ae2d0100 ae2d0100 aeb42000 ae2d0100 ae2d0100 aeb42000 ae2d0100 aeb42000 - {c=>7,a=>60,b=>6,d=>5} 3c3e0500 3c3e0500 3c3e0500 3cdca000 3c3e0500 3c3e0500 3cdca000 3c3e0500 3cdca000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>221131133,c=>6,a=>105,b=>3,d=>0} 693300007d312e0d 693300007d312e0d 693300007d312e0d 69780000d2e317d0 693300007d312e0d 693300007d312e0d 69780000d2e317d0 693300007d312e0d 69780000d2e317d0 - {e=>105130068,c=>7,a=>43,b=>7,d=>4} 2b3f040054284406 2b3f040054284406 2b3f040054284406 2bfc800064428540 2b3f040054284406 2b3f040054284406 2bfc800064428540 2b3f040054284406 2bfc800064428540 - {e=>200295387,c=>7,a=>95,b=>0,d=>4} 5f380400db43f00b 5f380400db43f00b 5f380400db43f00b 5f1c8000bf043db0 5f380400db43f00b 5f380400db43f00b 5f1c8000bf043db0 5f380400db43f00b 5f1c8000bf043db0 - {e=>204864432,c=>4,a=>121,b=>0,d=>5} 79200500b0fb350c 79200500b0fb350c 79200500b0fb350c 7910a000c35fbb00 79200500b0fb350c 79200500b0fb350c 7910a000c35fbb00 79200500b0fb350c 7910a000c35fbb00 - {e=>116121104,c=>3,a=>-77,b=>7,d=>7} b31f070010deeb06 b31f070010deeb06 b31f070010deeb06 b3ece0006ebde100 b31f070010deeb06 b31f070010deeb06 b3ece0006ebde100 b31f070010deeb06 b3ece0006ebde100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>172836301,c=>0,a=>32,b=>7,d=>6,f=>3} 20070600cd454d3a 20070600cd454d3a 20070600cd454d3a 20e0c000a4d45cd6 20070600cd454d3a 20070600cd454d3a 20e0c000a4d45cd6 20070600cd454d3a 20e0c000a4d45cd6 - {e=>127428220,c=>5,a=>-44,b=>2,d=>7,f=>1} d42a07007c669817 d42a07007c669817 d42a07007c669817 d454e000798667c2 d42a07007c669817 d42a07007c669817 d454e000798667c2 d42a07007c669817 d454e000798667c2 - {e=>422562,c=>0,a=>60,b=>7,d=>1,f=>2} 3c070100a2720620 3c070100a2720620 3c070100a2720620 3ce0200000672a24 3c070100a2720620 3c070100a2720620 3ce0200000672a24 3c070100a2720620 3ce0200000672a24 - {e=>96278787,c=>7,a=>3,b=>7,d=>2,f=>0} 033f02000319bd05 033f02000319bd05 033f02000319bd05 03fc40005bd19030 033f02000319bd05 033f02000319bd05 03fc40005bd19030 033f02000319bd05 03fc40005bd19030 - {e=>241856194,c=>3,a=>-107,b=>0,d=>6,f=>5} 95180600c26e6a5e 95180600c26e6a5e 95180600c26e6a5e 950cc000e6a6ec2a 95180600c26e6a5e 95180600c26e6a5e 950cc000e6a6ec2a 95180600c26e6a5e 950cc000e6a6ec2a = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>239818291,c=>6,a=>50,g=>2,b=>1,d=>2,f=>7} 3231020033564b7e02000000 3231020033564b7e02000000 3231020033564b7e02000000 32384000e4b5633e80000000 3231020033564b7e02000000 3231020033564b7e02000000 32384000e4b5633e80000000 3231020033564b7e02000000 32384000e4b5633e80000000 - {e=>27118579,c=>2,a=>-3,g=>0,b=>0,d=>4,f=>5} fd100400f3cb9d5100000000 fd100400f3cb9d5100000000 fd100400f3cb9d5100000000 fd08800019dcbf3a00000000 fd100400f3cb9d5100000000 fd100400f3cb9d5100000000 fd08800019dcbf3a00000000 fd100400f3cb9d5100000000 fd08800019dcbf3a00000000 - {e=>134242001,c=>3,a=>59,g=>3,b=>5,d=>5,f=>6} 3b1d0500d15e006803000000 3b1d0500d15e006803000000 3b1d0500d15e006803000000 3baca0008005ed1cc0000000 3b1d0500d15e006803000000 3b1d0500d15e006803000000 3baca0008005ed1cc0000000 3b1d0500d15e006803000000 3baca0008005ed1cc0000000 - {e=>65328260,c=>1,a=>-116,g=>1,b=>5,d=>4,f=>3} 8c0d040084d4e43301000000 8c0d040084d4e43301000000 8c0d040084d4e43301000000 8ca480003e4d484640000000 8c0d040084d4e43301000000 8c0d040084d4e43301000000 8ca480003e4d484640000000 8c0d040084d4e43301000000 8ca480003e4d484640000000 - {e=>139743207,c=>3,a=>-41,g=>1,b=>3,d=>1,f=>6} d71b0100e74f546801000000 d71b0100e74f546801000000 d71b0100e74f546801000000 d76c20008544fe7c40000000 d71b0100e74f546801000000 d71b0100e74f546801000000 d76c20008544fe7c40000000 d71b0100e74f546801000000 d76c20008544fe7c40000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>230124716,a=>16,d=>7,c=>1,h=>3908,b=>7,g=>2,f=>7} 100f0700ac6cb77d123d0000 100f0700ac6cb77d123d0000 100f0700ac6cb77d123d0000 10e4e000db76cace9e880000 100f0700ac6cb77d123d0000 100f0700ac6cb77d123d0000 10e4e000db76cace9e880000 100f0700ac6cb77d123d0000 10e4e000db76cace9e880000 - {e=>124232976,a=>64,d=>4,c=>0,h=>5030,b=>2,g=>3,f=>4} 4002040010a567479b4e0000 4002040010a567479b4e0000 4002040010a567479b4e0000 40408000767a5108e74c0000 4002040010a567479b4e0000 4002040010a567479b4e0000 40408000767a5108e74c0000 4002040010a567479b4e0000 40408000767a5108e74c0000 - {e=>239963925,a=>67,d=>1,c=>5,h=>5257,b=>4,g=>2,f=>4} 432c0100158f4d4e26520000 432c0100158f4d4e26520000 432c0100158f4d4e26520000 43942000e4d8f158a9120000 432c0100158f4d4e26520000 432c0100158f4d4e26520000 43942000e4d8f158a9120000 432c0100158f4d4e26520000 43942000e4d8f158a9120000 - {e=>119523408,a=>-65,d=>2,c=>5,h=>4247,b=>2,g=>2,f=>3} bf2a020050c81f375e420000 bf2a020050c81f375e420000 bf2a020050c81f375e420000 bf54400071fc8506a12e0000 bf2a020050c81f375e420000 bf2a020050c81f375e420000 bf54400071fc8506a12e0000 bf2a020050c81f375e420000 bf54400071fc8506a12e0000 - {e=>9728961,a=>51,d=>5,c=>0,h=>2851,b=>7,g=>0,f=>4} 33070500c17394408c2c0000 33070500c17394408c2c0000 33070500c17394408c2c0000 33e0a00009473c1816460000 33070500c17394408c2c0000 33070500c17394408c2c0000 33e0a00009473c1816460000 33070500c17394408c2c0000 33e0a00009473c1816460000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>180027965,a=>92,d=>2,c=>4,h=>1057,b=>1,g=>1,f=>0,i=>60} 5c2102003d02bb0a85103c00 5c2102003d02bb0a85103c00 5c2102003d02bb0a85103c00 5c304000abb023d048423c00 5c2102003d02bb0a85103c00 5c2102003d02bb0a85103c00 5c304000abb023d048423c00 5c2102003d02bb0a85103c00 5c304000abb023d048423c00 - {e=>231855491,a=>-124,d=>6,c=>4,h=>1682,b=>7,g=>0,f=>6,i=>222} 8427060083d5d16d481ade00 8427060083d5d16d481ade00 8427060083d5d16d481ade00 84f0c000dd1d583c0d24de00 8427060083d5d16d481ade00 8427060083d5d16d481ade00 84f0c000dd1d583c0d24de00 8427060083d5d16d481ade00 84f0c000dd1d583c0d24de00 - {e=>14781907,a=>-124,d=>1,c=>0,h=>7235,b=>7,g=>0,f=>3,i=>179} 84070100d38de1300c71b300 84070100d38de1300c71b300 84070100d38de1300c71b300 84e020000e18dd363886b300 84070100d38de1300c71b300 84070100d38de1300c71b300 84e020000e18dd363886b300 84070100d38de1300c71b300 84e020000e18dd363886b300 - {e=>268185659,a=>-127,d=>4,c=>0,h=>4094,b=>2,g=>3,f=>7,i=>166} 810204003b30fc7ffb3fa600 810204003b30fc7ffb3fa600 810204003b30fc7ffb3fa600 81408000ffc303bedffca600 810204003b30fc7ffb3fa600 810204003b30fc7ffb3fa600 81408000ffc303bedffca600 810204003b30fc7ffb3fa600 81408000ffc303bedffca600 - {e=>102826413,a=>-10,d=>2,c=>6,h=>6758,b=>6,g=>2,f=>7,i=>80} f6360200ad0121769a695000 f6360200ad0121769a695000 f6360200ad0121769a695000 f6d8400062101adeb4cc5000 f6360200ad0121769a695000 f6360200ad0121769a695000 f6d8400062101adeb4cc5000 f6360200ad0121769a695000 f6d8400062101adeb4cc5000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; }; - {a=>-45,b=>6} d3ff0600 d3ff0600 d3ff0600 ffd3c000 d3ff0600 d3ff0600 ffd3c000 d3ff0600 ffd3c000 - {a=>-32,b=>7} e0ff0700 e0ff0700 e0ff0700 ffe0e000 e0ff0700 e0ff0700 ffe0e000 e0ff0700 ffe0e000 - {a=>43,b=>2} 2b000200 2b000200 2b000200 002b4000 2b000200 2b000200 002b4000 2b000200 002b4000 - {a=>8,b=>3} 08000300 08000300 08000300 00086000 08000300 08000300 00086000 08000300 00086000 - {a=>-1,b=>1} ffff0100 ffff0100 ffff0100 ffff2000 ffff0100 ffff0100 ffff2000 ffff0100 ffff2000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>126,b=>7} 7e002f00 7e002f00 7e002f00 007ef400 7e002f00 7e002f00 007ef400 7e002f00 007ef400 - {c=>4,a=>-38,b=>6} daff2600 daff2600 daff2600 ffdad000 daff2600 daff2600 ffdad000 daff2600 ffdad000 - {c=>3,a=>-19,b=>2} edff1a00 edff1a00 edff1a00 ffed4c00 edff1a00 edff1a00 ffed4c00 edff1a00 ffed4c00 - {c=>0,a=>26,b=>4} 1a000400 1a000400 1a000400 001a8000 1a000400 1a000400 001a8000 1a000400 001a8000 - {c=>4,a=>125,b=>4} 7d002400 7d002400 7d002400 007d9000 7d002400 7d002400 007d9000 7d002400 007d9000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>66,b=>0,d=>6} 4200a001 4200a001 4200a001 00421300 4200a001 4200a001 00421300 4200a001 00421300 - {c=>3,a=>-65,b=>7,d=>5} bfff5f01 bfff5f01 bfff5f01 ffbfee80 bfff5f01 bfff5f01 ffbfee80 bfff5f01 ffbfee80 - {c=>5,a=>42,b=>5,d=>4} 2a002d01 2a002d01 2a002d01 002ab600 2a002d01 2a002d01 002ab600 2a002d01 002ab600 - {c=>1,a=>-96,b=>4,d=>5} a0ff4c01 a0ff4c01 a0ff4c01 ffa08680 a0ff4c01 a0ff4c01 ffa08680 a0ff4c01 ffa08680 - {c=>2,a=>-85,b=>0,d=>4} abff1001 abff1001 abff1001 ffab0a00 abff1001 abff1001 ffab0a00 abff1001 ffab0a00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>144118602,c=>6,a=>-68,b=>2,d=>5} bcff72014a139708 bcff72014a139708 bcff72014a139708 ffbc5a80897134a0 bcff72014a139708 bcff72014a139708 ffbc5a80897134a0 bcff72014a139708 ffbc5a80897134a0 - {e=>194550170,c=>1,a=>-13,b=>2,d=>6} f3ff8a019a99980b f3ff8a019a99980b f3ff8a019a99980b fff34700b98999a0 f3ff8a019a99980b f3ff8a019a99980b fff34700b98999a0 f3ff8a019a99980b fff34700b98999a0 - {e=>80715514,c=>4,a=>100,b=>3,d=>0} 64002300fa9ecf04 64002300fa9ecf04 64002300fa9ecf04 006470004cf9efa0 64002300fa9ecf04 64002300fa9ecf04 006470004cf9efa0 64002300fa9ecf04 006470004cf9efa0 - {e=>265138084,c=>6,a=>37,b=>2,d=>0} 25003200a4afcd0f 25003200a4afcd0f 25003200a4afcd0f 00255800fcdafa40 25003200a4afcd0f 25003200a4afcd0f 00255800fcdafa40 25003200a4afcd0f 00255800fcdafa40 - {e=>222887293,c=>6,a=>11,b=>1,d=>5} 0b0071017dfd480d 0b0071017dfd480d 0b0071017dfd480d 000b3a80d48fd7d0 0b0071017dfd480d 0b0071017dfd480d 000b3a80d48fd7d0 0b0071017dfd480d 000b3a80d48fd7d0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>18626280,c=>1,a=>-46,b=>5,d=>7,f=>5} d2ffcd01e8361c51 d2ffcd01e8361c51 d2ffcd01e8361c51 ffd2a78011c36e8a d2ffcd01e8361c51 d2ffcd01e8361c51 ffd2a78011c36e8a d2ffcd01e8361c51 ffd2a78011c36e8a - {e=>65331951,c=>5,a=>-123,b=>1,d=>4,f=>2} 85ff2901efe2e423 85ff2901efe2e423 85ff2901efe2e423 ff8536003e4e2ef4 85ff2901efe2e423 85ff2901efe2e423 ff8536003e4e2ef4 85ff2901efe2e423 ff8536003e4e2ef4 - {e=>22199225,c=>6,a=>19,b=>2,d=>4,f=>0} 13003201b9bb5201 13003201b9bb5201 13003201b9bb5201 00135a00152bbb90 13003201b9bb5201 13003201b9bb5201 00135a00152bbb90 13003201b9bb5201 00135a00152bbb90 - {e=>9181650,c=>6,a=>56,b=>1,d=>0,f=>5} 38003100d2198c50 38003100d2198c50 38003100d2198c50 0038380008c19d2a 38003100d2198c50 38003100d2198c50 0038380008c19d2a 38003100d2198c50 0038380008c19d2a - {e=>157034625,c=>6,a=>76,b=>0,d=>2,f=>5} 4c00b00081285c59 4c00b00081285c59 4c00b00081285c59 004c190095c2881a 4c00b00081285c59 4c00b00081285c59 004c190095c2881a 4c00b00081285c59 004c190095c2881a = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>267203857,c=>2,a=>90,g=>1,b=>5,d=>0,f=>2} 5a0015001135ed2f01000000 5a0015001135ed2f01000000 5a0015001135ed2f01000000 005aa800fed3511440000000 5a0015001135ed2f01000000 5a0015001135ed2f01000000 005aa800fed3511440000000 5a0015001135ed2f01000000 005aa800fed3511440000000 - {e=>138564760,c=>2,a=>-49,g=>2,b=>4,d=>6,f=>3} cfff94019854423802000000 cfff94019854423802000000 cfff94019854423802000000 ffcf8b008425498680000000 cfff94019854423802000000 cfff94019854423802000000 ffcf8b008425498680000000 cfff94019854423802000000 ffcf8b008425498680000000 - {e=>91970329,c=>6,a=>-122,g=>1,b=>1,d=>3,f=>0} 86fff100195b7b0501000000 86fff100195b7b0501000000 86fff100195b7b0501000000 ff86398057b5b19040000000 86fff100195b7b0501000000 86fff100195b7b0501000000 ff86398057b5b19040000000 86fff100195b7b0501000000 ff86398057b5b19040000000 - {e=>102576163,c=>7,a=>39,g=>1,b=>0,d=>2,f=>6} 2700b80023301d6601000000 2700b80023301d6601000000 2700b80023301d6601000000 00271d0061d3023c40000000 2700b80023301d6601000000 2700b80023301d6601000000 00271d0061d3023c40000000 2700b80023301d6601000000 00271d0061d3023c40000000 - {e=>263662536,c=>3,a=>-27,g=>1,b=>3,d=>4,f=>5} e5ff1b01c82bb75f01000000 e5ff1b01c82bb75f01000000 e5ff1b01c82bb75f01000000 ffe56e00fb72bc8a40000000 e5ff1b01c82bb75f01000000 e5ff1b01c82bb75f01000000 ffe56e00fb72bc8a40000000 e5ff1b01c82bb75f01000000 ffe56e00fb72bc8a40000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>194432513,a=>30,d=>2,c=>2,h=>1472,b=>2,g=>1,f=>3} 1e00920001ce963b01170000 1e00920001ce963b01170000 1e00920001ce963b01170000 001e4900b96ce0164b800000 1e00920001ce963b01170000 1e00920001ce963b01170000 001e4900b96ce0164b800000 1e00920001ce963b01170000 001e4900b96ce0164b800000 - {e=>90729129,a=>18,d=>7,c=>0,h=>7366,b=>1,g=>1,f=>4} 1200c101a96a684519730000 1200c101a96a684519730000 1200c101a96a684519730000 001223805686aa98798c0000 1200c101a96a684519730000 1200c101a96a684519730000 001223805686aa98798c0000 1200c101a96a684519730000 001223805686aa98798c0000 - {e=>241644573,a=>75,d=>6,c=>6,h=>2932,b=>7,g=>3,f=>1} 4b00b7011d34671ed32d0000 4b00b7011d34671ed32d0000 4b00b7011d34671ed32d0000 004bfb00e67341d2d6e80000 4b00b7011d34671ed32d0000 4b00b7011d34671ed32d0000 004bfb00e67341d2d6e80000 4b00b7011d34671ed32d0000 004bfb00e67341d2d6e80000 - {e=>176079331,a=>31,d=>2,c=>1,h=>4829,b=>6,g=>2,f=>2} 1f008e00e3c17e2a764b0000 1f008e00e3c17e2a764b0000 1f008e00e3c17e2a764b0000 001fc500a7ec1e34a5ba0000 1f008e00e3c17e2a764b0000 1f008e00e3c17e2a764b0000 001fc500a7ec1e34a5ba0000 1f008e00e3c17e2a764b0000 001fc500a7ec1e34a5ba0000 - {e=>239368188,a=>55,d=>5,c=>3,h=>1857,b=>6,g=>3,f=>7} 37005e01fc77447e071d0000 37005e01fc77447e071d0000 37005e01fc77447e071d0000 0037ce80e4477fcece820000 37005e01fc77447e071d0000 37005e01fc77447e071d0000 0037ce80e4477fcece820000 37005e01fc77447e071d0000 0037ce80e4477fcece820000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>108438729,a=>58,d=>1,c=>1,h=>5562,b=>0,g=>0,f=>6,i=>192} 3a004800c9a47666e856c000 3a004800c9a47666e856c000 3a004800c9a47666e856c000 003a0480676a4c9c2b74c000 3a004800c9a47666e856c000 3a004800c9a47666e856c000 003a0480676a4c9c2b74c000 3a004800c9a47666e856c000 003a0480676a4c9c2b74c000 - {e=>5753109,a=>98,d=>6,c=>2,h=>3842,b=>0,g=>1,f=>4,i=>170} 6200900115c95740093caa00 6200900115c95740093caa00 6200900115c95740093caa00 00620b00057c91585e04aa00 6200900115c95740093caa00 6200900115c95740093caa00 00620b00057c91585e04aa00 6200900115c95740093caa00 00620b00057c91585e04aa00 - {e=>152483984,a=>118,d=>4,c=>6,h=>3538,b=>4,g=>1,f=>6,i=>229} 7600340190b816694937e500 7600340190b816694937e500 7600340190b816694937e500 00769a00916b890c5ba4e500 7600340190b816694937e500 7600340190b816694937e500 00769a00916b890c5ba4e500 7600340190b816694937e500 00769a00916b890c5ba4e500 - {e=>54363077,a=>36,d=>6,c=>6,h=>7156,b=>2,g=>1,f=>3,i=>92} 2400b201c5833d33d16f5c00 2400b201c5833d33d16f5c00 2400b201c5833d33d16f5c00 00245b0033d83c5677e85c00 2400b201c5833d33d16f5c00 2400b201c5833d33d16f5c00 00245b0033d83c5677e85c00 2400b201c5833d33d16f5c00 00245b0033d83c5677e85c00 - {e=>73602633,a=>-19,d=>3,c=>5,h=>1654,b=>6,g=>2,f=>6,i=>188} edffee0049166364da19bc00 edffee0049166364da19bc00 edffee0049166364da19bc00 ffedd5804631649c8cecbc00 edffee0049166364da19bc00 edffee0049166364da19bc00 ffedd5804631649c8cecbc00 edffee0049166364da19bc00 ffedd5804631649c8cecbc00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; }; - {a=>31,b=>7} 1f00000007000000 1f00000007000000 1f00000007000000 0000001fe0000000 1f00000007000000 1f00000007000000 0000001fe0000000 1f00000007000000 0000001fe0000000 - {a=>70,b=>7} 4600000007000000 4600000007000000 4600000007000000 00000046e0000000 4600000007000000 4600000007000000 00000046e0000000 4600000007000000 00000046e0000000 - {a=>-101,b=>4} 9bffffff04000000 9bffffff04000000 9bffffff04000000 ffffff9b80000000 9bffffff04000000 9bffffff04000000 ffffff9b80000000 9bffffff04000000 ffffff9b80000000 - {a=>111,b=>2} 6f00000002000000 6f00000002000000 6f00000002000000 0000006f40000000 6f00000002000000 6f00000002000000 0000006f40000000 6f00000002000000 0000006f40000000 - {a=>-80,b=>3} b0ffffff03000000 b0ffffff03000000 b0ffffff03000000 ffffffb060000000 b0ffffff03000000 b0ffffff03000000 ffffffb060000000 b0ffffff03000000 ffffffb060000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>7,a=>76,b=>1} 4c00000039000000 4c00000039000000 4c00000039000000 0000004c3c000000 4c00000039000000 4c00000039000000 0000004c3c000000 4c00000039000000 0000004c3c000000 - {c=>6,a=>52,b=>5} 3400000035000000 3400000035000000 3400000035000000 00000034b8000000 3400000035000000 3400000035000000 00000034b8000000 3400000035000000 00000034b8000000 - {c=>4,a=>-96,b=>4} a0ffffff24000000 a0ffffff24000000 a0ffffff24000000 ffffffa090000000 a0ffffff24000000 a0ffffff24000000 ffffffa090000000 a0ffffff24000000 ffffffa090000000 - {c=>4,a=>16,b=>5} 1000000025000000 1000000025000000 1000000025000000 00000010b0000000 1000000025000000 1000000025000000 00000010b0000000 1000000025000000 00000010b0000000 - {c=>5,a=>-115,b=>3} 8dffffff2b000000 8dffffff2b000000 8dffffff2b000000 ffffff8d74000000 8dffffff2b000000 8dffffff2b000000 ffffff8d74000000 8dffffff2b000000 ffffff8d74000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-95,b=>1,d=>3} a1ffffffd9000000 a1ffffffd9000000 a1ffffffd9000000 ffffffa12d800000 a1ffffffd9000000 a1ffffffd9000000 ffffffa12d800000 a1ffffffd9000000 ffffffa12d800000 - {c=>1,a=>-30,b=>2,d=>7} e2ffffffca010000 e2ffffffca010000 e2ffffffca010000 ffffffe247800000 e2ffffffca010000 e2ffffffca010000 ffffffe247800000 e2ffffffca010000 ffffffe247800000 - {c=>3,a=>28,b=>7,d=>3} 1c000000df000000 1c000000df000000 1c000000df000000 0000001ced800000 1c000000df000000 1c000000df000000 0000001ced800000 1c000000df000000 0000001ced800000 - {c=>1,a=>34,b=>1,d=>3} 22000000c9000000 22000000c9000000 22000000c9000000 0000002225800000 22000000c9000000 22000000c9000000 0000002225800000 22000000c9000000 0000002225800000 - {c=>5,a=>88,b=>6,d=>1} 580000006e000000 580000006e000000 580000006e000000 00000058d4800000 580000006e000000 580000006e000000 00000058d4800000 580000006e000000 00000058d4800000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>228389954,c=>6,a=>10,b=>1,d=>3} 0a000000f100000042f49c0d 0a000000f100000042f49c0d 0a000000f100000042f49c0d 0000000a39800000d9cf4420 0a000000f100000042f49c0d 0a000000f100000042f49c0d 0000000a39800000d9cf4420 0a000000f100000042f49c0d 0000000a39800000d9cf4420 - {e=>26173929,c=>1,a=>46,b=>7,d=>3} 2e000000cf000000e9618f01 2e000000cf000000e9618f01 2e000000cf000000e9618f01 0000002ee580000018f61e90 2e000000cf000000e9618f01 2e000000cf000000e9618f01 0000002ee580000018f61e90 2e000000cf000000e9618f01 0000002ee580000018f61e90 - {e=>31378561,c=>1,a=>-102,b=>0,d=>0} 9affffff0800000081ccde01 9affffff0800000081ccde01 9affffff0800000081ccde01 ffffff9a040000001decc810 9affffff0800000081ccde01 9affffff0800000081ccde01 ffffff9a040000001decc810 9affffff0800000081ccde01 ffffff9a040000001decc810 - {e=>133881414,c=>3,a=>83,b=>6,d=>6} 530000009e01000046defa07 530000009e01000046defa07 530000009e01000046defa07 00000053cf0000007fade460 530000009e01000046defa07 530000009e01000046defa07 00000053cf0000007fade460 530000009e01000046defa07 00000053cf0000007fade460 - {e=>185498202,c=>4,a=>-46,b=>2,d=>4} d2ffffff220100005a7a0e0b d2ffffff220100005a7a0e0b d2ffffff220100005a7a0e0b ffffffd252000000b0e7a5a0 d2ffffff220100005a7a0e0b d2ffffff220100005a7a0e0b ffffffd252000000b0e7a5a0 d2ffffff220100005a7a0e0b ffffffd252000000b0e7a5a0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>108248036,c=>1,a=>-113,b=>3,d=>5,f=>4} 8fffffff4b010000e4bb7346 8fffffff4b010000e4bb7346 8fffffff4b010000e4bb7346 ffffff8f66800000673bbe48 8fffffff4b010000e4bb7346 8fffffff4b010000e4bb7346 ffffff8f66800000673bbe48 8fffffff4b010000e4bb7346 ffffff8f66800000673bbe48 - {e=>244754857,c=>2,a=>53,b=>1,d=>6,f=>7} 3500000091010000a9a9967e 3500000091010000a9a9967e 3500000091010000a9a9967e 000000352b000000e96a9a9e 3500000091010000a9a9967e 3500000091010000a9a9967e 000000352b000000e96a9a9e 3500000091010000a9a9967e 000000352b000000e96a9a9e - {e=>82868130,c=>3,a=>-17,b=>3,d=>4,f=>1} efffffff1b010000a277f014 efffffff1b010000a277f014 efffffff1b010000a277f014 ffffffef6e0000004f077a22 efffffff1b010000a277f014 efffffff1b010000a277f014 ffffffef6e0000004f077a22 efffffff1b010000a277f014 ffffffef6e0000004f077a22 - {e=>128771168,c=>5,a=>-97,b=>6,d=>5,f=>6} 9fffffff6e01000060e4ac67 9fffffff6e01000060e4ac67 9fffffff6e01000060e4ac67 ffffff9fd68000007ace460c 9fffffff6e01000060e4ac67 9fffffff6e01000060e4ac67 ffffff9fd68000007ace460c 9fffffff6e01000060e4ac67 ffffff9fd68000007ace460c - {e=>201646189,c=>5,a=>87,b=>0,d=>1,f=>3} 57000000680000006de0043c 57000000680000006de0043c 57000000680000006de0043c 0000005714800000c04e06d6 57000000680000006de0043c 57000000680000006de0043c 0000005714800000c04e06d6 57000000680000006de0043c 0000005714800000c04e06d6 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>52201699,c=>3,a=>-21,g=>2,b=>2,d=>3,f=>7} ebffffffda000000e3881c7302000000 ebffffffda000000e3881c7302000000 ebffffffda000000e3881c7302000000 ffffffeb4d80000031c88e3e80000000 ebffffffda000000e3881c7302000000 ebffffffda000000e3881c7302000000 ffffffeb4d80000031c88e3e80000000 ebffffffda000000e3881c7302000000 ffffffeb4d80000031c88e3e80000000 - {e=>156859917,c=>7,a=>28,g=>2,b=>4,d=>1,f=>7} 1c0000007c0000000d7e597902000000 1c0000007c0000000d7e597902000000 1c0000007c0000000d7e597902000000 0000001c9c8000009597e0de80000000 1c0000007c0000000d7e597902000000 1c0000007c0000000d7e597902000000 0000001c9c8000009597e0de80000000 1c0000007c0000000d7e597902000000 0000001c9c8000009597e0de80000000 - {e=>73487576,c=>2,a=>44,g=>3,b=>5,d=>4,f=>1} 2c00000015010000d854611403000000 2c00000015010000d854611403000000 2c00000015010000d854611403000000 0000002caa00000046154d82c0000000 2c00000015010000d854611403000000 2c00000015010000d854611403000000 0000002caa00000046154d82c0000000 2c00000015010000d854611403000000 0000002caa00000046154d82c0000000 - {e=>172142530,c=>5,a=>101,g=>2,b=>7,d=>3,f=>5} 65000000ef000000c2af425a02000000 65000000ef000000c2af425a02000000 65000000ef000000c2af425a02000000 00000065f5800000a42afc2a80000000 65000000ef000000c2af425a02000000 65000000ef000000c2af425a02000000 00000065f5800000a42afc2a80000000 65000000ef000000c2af425a02000000 00000065f5800000a42afc2a80000000 - {e=>150725544,c=>6,a=>71,g=>1,b=>6,d=>0,f=>3} 4700000036000000a8e3fb3801000000 4700000036000000a8e3fb3801000000 4700000036000000a8e3fb3801000000 00000047d80000008fbe3a8640000000 4700000036000000a8e3fb3801000000 4700000036000000a8e3fb3801000000 00000047d80000008fbe3a8640000000 4700000036000000a8e3fb3801000000 00000047d80000008fbe3a8640000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>165197259,a=>-34,d=>6,c=>6,h=>2543,b=>0,g=>1,f=>4} deffffffb0010000cbb5d849bd270000 deffffffb0010000cbb5d849bd270000 deffffffb0010000cbb5d849bd270000 ffffffde1b0000009d8b5cb853de0000 deffffffb0010000cbb5d849bd270000 deffffffb0010000cbb5d849bd270000 ffffffde1b0000009d8b5cb853de0000 deffffffb0010000cbb5d849bd270000 ffffffde1b0000009d8b5cb853de0000 - {e=>66930837,a=>-1,d=>4,c=>3,h=>8014,b=>5,g=>2,f=>1} ffffffff1d0100009548fd133a7d0000 ffffffff1d0100009548fd133a7d0000 ffffffff1d0100009548fd133a7d0000 ffffffffae0000003fd48952be9c0000 ffffffff1d0100009548fd133a7d0000 ffffffff1d0100009548fd133a7d0000 ffffffffae0000003fd48952be9c0000 ffffffff1d0100009548fd133a7d0000 ffffffffae0000003fd48952be9c0000 - {e=>133257048,a=>80,d=>2,c=>3,h=>7657,b=>4,g=>1,f=>2} 500000009c0000005857f127a5770000 500000009c0000005857f127a5770000 500000009c0000005857f127a5770000 000000508d0000007f1575847bd20000 500000009c0000005857f127a5770000 500000009c0000005857f127a5770000 000000508d0000007f1575847bd20000 500000009c0000005857f127a5770000 000000508d0000007f1575847bd20000 - {e=>213734502,a=>-90,d=>4,c=>5,h=>5237,b=>1,g=>2,f=>0} a6ffffff290100006654bd0cd6510000 a6ffffff290100006654bd0cd6510000 a6ffffff290100006654bd0cd6510000 ffffffa636000000cbd54660a8ea0000 a6ffffff290100006654bd0cd6510000 a6ffffff290100006654bd0cd6510000 ffffffa636000000cbd54660a8ea0000 a6ffffff290100006654bd0cd6510000 ffffffa636000000cbd54660a8ea0000 - {e=>132335321,a=>121,d=>0,c=>3,h=>5451,b=>4,g=>0,f=>7} 790000001c000000d946e3772c550000 790000001c000000d946e3772c550000 790000001c000000d946e3772c550000 000000798c0000007e346d9e2a960000 790000001c000000d946e3772c550000 790000001c000000d946e3772c550000 000000798c0000007e346d9e2a960000 790000001c000000d946e3772c550000 000000798c0000007e346d9e2a960000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>54142455,a=>-77,d=>3,c=>0,h=>5806,b=>5,g=>0,f=>1,i=>177} b3ffffffc5000000f7253a13b85ab100 b3ffffffc5000000f7253a13b85ab100 b3ffffffc5000000f7253a13b85ab100 ffffffb3a180000033a25f722d5cb100 b3ffffffc5000000f7253a13b85ab100 b3ffffffc5000000f7253a13b85ab100 ffffffb3a180000033a25f722d5cb100 b3ffffffc5000000f7253a13b85ab100 ffffffb3a180000033a25f722d5cb100 - {e=>146569251,a=>-111,d=>5,c=>1,h=>6377,b=>1,g=>3,f=>2,i=>217} 91ffffff490100002378bc28a763d900 91ffffff490100002378bc28a763d900 91ffffff490100002378bc28a763d900 ffffff91268000008bc78234f1d2d900 91ffffff490100002378bc28a763d900 91ffffff490100002378bc28a763d900 ffffff91268000008bc78234f1d2d900 91ffffff490100002378bc28a763d900 ffffff91268000008bc78234f1d2d900 - {e=>103323231,a=>-35,d=>5,c=>3,h=>286,b=>0,g=>2,f=>5,i=>160} ddffffff580100005f9628567a04a000 ddffffff580100005f9628567a04a000 ddffffff580100005f9628567a04a000 ffffffdd0e800000628965fa823ca000 ddffffff580100005f9628567a04a000 ddffffff580100005f9628567a04a000 ffffffdd0e800000628965fa823ca000 ddffffff580100005f9628567a04a000 ffffffdd0e800000628965fa823ca000 - {e=>80135875,a=>-121,d=>4,c=>6,h=>4052,b=>0,g=>0,f=>6,i=>139} 87ffffff30010000c3c6c664503f8b00 87ffffff30010000c3c6c664503f8b00 87ffffff30010000c3c6c664503f8b00 ffffff871a0000004c6c6c3c1fa88b00 87ffffff30010000c3c6c664503f8b00 87ffffff30010000c3c6c664503f8b00 ffffff871a0000004c6c6c3c1fa88b00 87ffffff30010000c3c6c664503f8b00 ffffff871a0000004c6c6c3c1fa88b00 - {e=>212259421,a=>46,d=>5,c=>2,h=>3423,b=>7,g=>2,f=>4,i=>165} 2e000000570100005dd2a64c7e35a500 2e000000570100005dd2a64c7e35a500 2e000000570100005dd2a64c7e35a500 0000002eea800000ca6d25d89abea500 2e000000570100005dd2a64c7e35a500 2e000000570100005dd2a64c7e35a500 0000002eea800000ca6d25d89abea500 2e000000570100005dd2a64c7e35a500 0000002eea800000ca6d25d89abea500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; }; - {a=>-17,b=>1} efffffff01000000 efffffffffffffff0100000000000000 efffffffffffffff0100000000000000 ffffffef20000000 efffffff01000000 efffffff01000000 ffffffffffffffef2000000000000000 efffffff01000000 ffffffef20000000 - {a=>-21,b=>5} ebffffff05000000 ebffffffffffffff0500000000000000 ebffffffffffffff0500000000000000 ffffffeba0000000 ebffffff05000000 ebffffff05000000 ffffffffffffffeba000000000000000 ebffffff05000000 ffffffeba0000000 - {a=>117,b=>4} 7500000004000000 75000000000000000400000000000000 75000000000000000400000000000000 0000007580000000 7500000004000000 7500000004000000 00000000000000758000000000000000 7500000004000000 0000007580000000 - {a=>90,b=>5} 5a00000005000000 5a000000000000000500000000000000 5a000000000000000500000000000000 0000005aa0000000 5a00000005000000 5a00000005000000 000000000000005aa000000000000000 5a00000005000000 0000005aa0000000 - {a=>48,b=>4} 3000000004000000 30000000000000000400000000000000 30000000000000000400000000000000 0000003080000000 3000000004000000 3000000004000000 00000000000000308000000000000000 3000000004000000 0000003080000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>16,b=>5} 1000000005000000 10000000000000000500000000000000 10000000000000000500000000000000 00000010a0000000 1000000005000000 1000000005000000 0000000000000010a000000000000000 1000000005000000 00000010a0000000 - {c=>6,a=>123,b=>0} 7b00000030000000 7b000000000000003000000000000000 7b000000000000003000000000000000 0000007b18000000 7b00000030000000 7b00000030000000 000000000000007b1800000000000000 7b00000030000000 0000007b18000000 - {c=>4,a=>92,b=>2} 5c00000022000000 5c000000000000002200000000000000 5c000000000000002200000000000000 0000005c50000000 5c00000022000000 5c00000022000000 000000000000005c5000000000000000 5c00000022000000 0000005c50000000 - {c=>4,a=>64,b=>0} 4000000020000000 40000000000000002000000000000000 40000000000000002000000000000000 0000004010000000 4000000020000000 4000000020000000 00000000000000401000000000000000 4000000020000000 0000004010000000 - {c=>0,a=>-8,b=>0} f8ffffff00000000 f8ffffffffffffff0000000000000000 f8ffffffffffffff0000000000000000 fffffff800000000 f8ffffff00000000 f8ffffff00000000 fffffffffffffff80000000000000000 f8ffffff00000000 fffffff800000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>124,b=>2,d=>6} 7c000000b2010000 7c00000000000000b201000000000000 7c00000000000000b201000000000000 0000007c5b000000 7c000000b2010000 7c000000b2010000 000000000000007c5b00000000000000 7c000000b2010000 0000007c5b000000 - {c=>2,a=>-19,b=>2,d=>0} edffffff12000000 edffffffffffffff1200000000000000 edffffffffffffff1200000000000000 ffffffed48000000 edffffff12000000 edffffff12000000 ffffffffffffffed4800000000000000 edffffff12000000 ffffffed48000000 - {c=>5,a=>55,b=>0,d=>1} 3700000068000000 37000000000000006800000000000000 37000000000000006800000000000000 0000003714800000 3700000068000000 3700000068000000 00000000000000371480000000000000 3700000068000000 0000003714800000 - {c=>5,a=>-44,b=>0,d=>7} d4ffffffe8010000 d4ffffffffffffffe801000000000000 d4ffffffffffffffe801000000000000 ffffffd417800000 d4ffffffe8010000 d4ffffffe8010000 ffffffffffffffd41780000000000000 d4ffffffe8010000 ffffffd417800000 - {c=>6,a=>-50,b=>1,d=>4} ceffffff31010000 ceffffffffffffff3101000000000000 ceffffffffffffff3101000000000000 ffffffce3a000000 ceffffff31010000 ceffffff31010000 ffffffffffffffce3a00000000000000 ceffffff31010000 ffffffce3a000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>95288597,c=>5,a=>-109,b=>2,d=>7} 93ffffffea01000015fdad05 93ffffffffffffffea01000015fdad05 93ffffffffffffffea01000015fdad05 ffffff93578000005adfd150 93ffffffea01000015fdad05 93ffffffea01000015fdad05 ffffffffffffff93578000005adfd150 93ffffffea01000015fdad05 ffffff93578000005adfd150 - {e=>135290620,c=>4,a=>117,b=>5,d=>5} 7500000065010000fc5e1008 750000000000000065010000fc5e1008 750000000000000065010000fc5e1008 00000075b28000008105efc0 7500000065010000fc5e1008 7500000065010000fc5e1008 0000000000000075b28000008105efc0 7500000065010000fc5e1008 00000075b28000008105efc0 - {e=>60560071,c=>0,a=>38,b=>6,d=>3} 26000000c6000000c7129c03 2600000000000000c6000000c7129c03 2600000000000000c6000000c7129c03 00000026c180000039c12c70 26000000c6000000c7129c03 26000000c6000000c7129c03 0000000000000026c180000039c12c70 26000000c6000000c7129c03 00000026c180000039c12c70 - {e=>3218489,c=>7,a=>-111,b=>2,d=>3} 91fffffffa000000391c3100 91fffffffffffffffa000000391c3100 91fffffffffffffffa000000391c3100 ffffff915d8000000311c390 91fffffffa000000391c3100 91fffffffa000000391c3100 ffffffffffffff915d8000000311c390 91fffffffa000000391c3100 ffffff915d8000000311c390 - {e=>124836907,c=>6,a=>-119,b=>3,d=>2} 89ffffffb30000002bdc7007 89ffffffffffffffb30000002bdc7007 89ffffffffffffffb30000002bdc7007 ffffff8979000000770dc2b0 89ffffffb30000002bdc7007 89ffffffb30000002bdc7007 ffffffffffffff8979000000770dc2b0 89ffffffb30000002bdc7007 ffffff8979000000770dc2b0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>12389401,c=>4,a=>83,b=>0,d=>1,f=>1} 5300000060000000190cbd10 530000000000000060000000190cbd10 530000000000000060000000190cbd10 00000053108000000bd0c192 5300000060000000190cbd10 5300000060000000190cbd10 0000000000000053108000000bd0c192 5300000060000000190cbd10 00000053108000000bd0c192 - {e=>142083432,c=>7,a=>-99,b=>5,d=>3,f=>3} 9dfffffffd00000068057838 9dfffffffffffffffd00000068057838 9dfffffffffffffffd00000068057838 ffffff9dbd80000087805686 9dfffffffd00000068057838 9dfffffffd00000068057838 ffffffffffffff9dbd80000087805686 9dfffffffd00000068057838 ffffff9dbd80000087805686 - {e=>187721880,c=>2,a=>52,b=>6,d=>5,f=>2} 34000000560100009868302b 3400000000000000560100009868302b 3400000000000000560100009868302b 00000034ca800000b3068984 34000000560100009868302b 34000000560100009868302b 0000000000000034ca800000b3068984 34000000560100009868302b 00000034ca800000b3068984 - {e=>48069462,c=>5,a=>48,b=>0,d=>2,f=>4} 30000000a8000000567bdd42 3000000000000000a8000000567bdd42 3000000000000000a8000000567bdd42 00000030150000002dd7b568 30000000a8000000567bdd42 30000000a8000000567bdd42 0000000000000030150000002dd7b568 30000000a8000000567bdd42 00000030150000002dd7b568 - {e=>65320048,c=>4,a=>2,b=>6,d=>4,f=>3} 020000002601000070b4e433 02000000000000002601000070b4e433 02000000000000002601000070b4e433 00000002d20000003e4b4706 020000002601000070b4e433 020000002601000070b4e433 0000000000000002d20000003e4b4706 020000002601000070b4e433 00000002d20000003e4b4706 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>260512924,c=>0,a=>13,g=>3,b=>2,d=>7,f=>5} 0d000000c20100009c1c875f03000000 0d00000000000000c20100009c1c875f0300000000000000 0d00000000000000c20100009c1c875f0300000000000000 0000000d43800000f871c9cac0000000 0d000000c20100009c1c875f03000000 0d000000c20100009c1c875f03000000 000000000000000d43800000f871c9cac000000000000000 0d000000c20100009c1c875f03000000 0000000d43800000f871c9cac0000000 - {e=>57231972,c=>0,a=>50,g=>1,b=>1,d=>1,f=>1} 3200000041000000644a691301000000 320000000000000041000000644a69130100000000000000 320000000000000041000000644a69130100000000000000 00000032208000003694a64240000000 3200000041000000644a691301000000 3200000041000000644a691301000000 0000000000000032208000003694a6424000000000000000 3200000041000000644a691301000000 00000032208000003694a64240000000 - {e=>202592947,c=>7,a=>-82,g=>2,b=>0,d=>0,f=>6} aeffffff38000000b352136c02000000 aeffffffffffffff38000000b352136c0200000000000000 aeffffffffffffff38000000b352136c0200000000000000 ffffffae1c000000c1352b3c80000000 aeffffff38000000b352136c02000000 aeffffff38000000b352136c02000000 ffffffffffffffae1c000000c1352b3c8000000000000000 aeffffff38000000b352136c02000000 ffffffae1c000000c1352b3c80000000 - {e=>222000348,c=>7,a=>-76,g=>2,b=>4,d=>4,f=>5} b4ffffff3c010000dc743b5d02000000 b4ffffffffffffff3c010000dc743b5d0200000000000000 b4ffffffffffffff3c010000dc743b5d0200000000000000 ffffffb49e000000d3b74dca80000000 b4ffffff3c010000dc743b5d02000000 b4ffffff3c010000dc743b5d02000000 ffffffffffffffb49e000000d3b74dca8000000000000000 b4ffffff3c010000dc743b5d02000000 ffffffb49e000000d3b74dca80000000 - {e=>259177945,c=>7,a=>-89,g=>3,b=>2,d=>4,f=>1} a7ffffff3a010000d9bd721f03000000 a7ffffffffffffff3a010000d9bd721f0300000000000000 a7ffffffffffffff3a010000d9bd721f0300000000000000 ffffffa75e000000f72bdd92c0000000 a7ffffff3a010000d9bd721f03000000 a7ffffff3a010000d9bd721f03000000 ffffffffffffffa75e000000f72bdd92c000000000000000 a7ffffff3a010000d9bd721f03000000 ffffffa75e000000f72bdd92c0000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>83948314,a=>-39,d=>7,c=>7,h=>5026,b=>2,g=>2,f=>5} d9fffffffa0100001af300558a4e0000 d9fffffffffffffffa0100001af300558a4e000000000000 d9fffffffffffffffa0100001af300558a4e000000000000 ffffffd95f800000500f31aaa7440000 d9fffffffa0100001af300558a4e0000 d9fffffffa0100001af300558a4e0000 ffffffffffffffd95f800000500f31aaa744000000000000 d9fffffffa0100001af300558a4e0000 ffffffd95f800000500f31aaa7440000 - {e=>263712322,a=>73,d=>0,c=>3,h=>5678,b=>2,g=>3,f=>7} 490000001a00000042eeb77fbb580000 49000000000000001a00000042eeb77fbb58000000000000 49000000000000001a00000042eeb77fbb58000000000000 000000494c000000fb7ee42eec5c0000 490000001a00000042eeb77fbb580000 490000001a00000042eeb77fbb580000 00000000000000494c000000fb7ee42eec5c000000000000 490000001a00000042eeb77fbb580000 000000494c000000fb7ee42eec5c0000 - {e=>29595889,a=>-74,d=>7,c=>3,h=>3087,b=>2,g=>3,f=>4} b6ffffffda010000f198c3413f300000 b6ffffffffffffffda010000f198c3413f30000000000000 b6ffffffffffffffda010000f198c3413f30000000000000 ffffffb64f8000001c398f18d81e0000 b6ffffffda010000f198c3413f300000 b6ffffffda010000f198c3413f300000 ffffffffffffffb64f8000001c398f18d81e000000000000 b6ffffffda010000f198c3413f300000 ffffffb64f8000001c398f18d81e0000 - {e=>229616258,a=>-13,d=>2,c=>2,h=>5537,b=>5,g=>2,f=>6} f3ffffff9500000082aaaf6d86560000 f3ffffffffffffff9500000082aaaf6d8656000000000000 f3ffffffffffffff9500000082aaaf6d8656000000000000 fffffff3a9000000dafaa82cab420000 f3ffffff9500000082aaaf6d86560000 f3ffffff9500000082aaaf6d86560000 fffffffffffffff3a9000000dafaa82cab42000000000000 f3ffffff9500000082aaaf6d86560000 fffffff3a9000000dafaa82cab420000 - {e=>192578723,a=>-50,d=>5,c=>7,h=>779,b=>7,g=>0,f=>1} ceffffff7f010000a3847a1b2c0c0000 ceffffffffffffff7f010000a3847a1b2c0c000000000000 ceffffffffffffff7f010000a3847a1b2c0c000000000000 ffffffcefe800000b7a84a3206160000 ceffffff7f010000a3847a1b2c0c0000 ceffffff7f010000a3847a1b2c0c0000 ffffffffffffffcefe800000b7a84a320616000000000000 ceffffff7f010000a3847a1b2c0c0000 ffffffcefe800000b7a84a3206160000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>53556282,a=>93,d=>1,c=>0,h=>6233,b=>5,g=>2,f=>6,i=>8} 5d000000450000003a34316366610800 5d00000000000000450000003a3431636661080000000000 5d00000000000000450000003a3431636661080000000000 0000005da0800000331343acb0b20800 5d000000450000003a34316366610800 5d000000450000003a34316366610800 000000000000005da0800000331343acb0b2080000000000 5d000000450000003a34316366610800 0000005da0800000331343acb0b20800 - {e=>177717941,a=>-92,d=>4,c=>4,h=>2021,b=>5,g=>1,f=>5,i=>247} a4ffffff25010000b5c2975a951ff700 a4ffffffffffffff25010000b5c2975a951ff70000000000 a4ffffffffffffff25010000b5c2975a951ff70000000000 ffffffa4b2000000a97c2b5a4fcaf700 a4ffffff25010000b5c2975a951ff700 a4ffffff25010000b5c2975a951ff700 ffffffffffffffa4b2000000a97c2b5a4fcaf70000000000 a4ffffff25010000b5c2975a951ff700 ffffffa4b2000000a97c2b5a4fcaf700 - {e=>182845399,a=>88,d=>7,c=>0,h=>1885,b=>2,g=>0,f=>7,i=>153} 58000000c2010000d7ffe57a741d9900 5800000000000000c2010000d7ffe57a741d990000000000 5800000000000000c2010000d7ffe57a741d990000000000 0000005843800000ae5ffd7e0eba9900 58000000c2010000d7ffe57a741d9900 58000000c2010000d7ffe57a741d9900 000000000000005843800000ae5ffd7e0eba990000000000 58000000c2010000d7ffe57a741d9900 0000005843800000ae5ffd7e0eba9900 - {e=>88054627,a=>92,d=>5,c=>7,h=>765,b=>5,g=>0,f=>1,i=>252} 5c0000007d010000639b3f15f40bfc00 5c000000000000007d010000639b3f15f40bfc0000000000 5c000000000000007d010000639b3f15f40bfc0000000000 0000005cbe80000053f9b63205fafc00 5c0000007d010000639b3f15f40bfc00 5c0000007d010000639b3f15f40bfc00 000000000000005cbe80000053f9b63205fafc0000000000 5c0000007d010000639b3f15f40bfc00 0000005cbe80000053f9b63205fafc00 - {e=>77656705,a=>-32,d=>0,c=>0,h=>6746,b=>6,g=>3,f=>4,i=>4} e0ffffff0600000081f2a0446b690400 e0ffffffffffffff0600000081f2a0446b69040000000000 e0ffffffffffffff0600000081f2a0446b69040000000000 ffffffe0c00000004a0f2818f4b40400 e0ffffff0600000081f2a0446b690400 e0ffffff0600000081f2a0446b690400 ffffffffffffffe0c00000004a0f2818f4b4040000000000 e0ffffff0600000081f2a0446b690400 ffffffe0c00000004a0f2818f4b40400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>2} 02 02 02 40 02000000 02 40 02 40 - {a=>3} 03 03 03 60 03000000 03 60 03 60 - {a=>4} 04 04 04 80 04000000 04 80 04 80 - {a=>1} 01 01 01 20 01000000 01 20 01 20 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; }; - {a=>1,b=>7} 39 39 39 3c 39000000 39 3c 39 3c - {a=>5,b=>4} 25 25 25 b0 25000000 25 b0 25 b0 - {a=>2,b=>6} 32 32 32 58 32000000 32 58 32 58 - {a=>6,b=>0} 06 06 06 c0 06000000 06 c0 06 c0 - {a=>6,b=>3} 1e 1e 1e cc 1e000000 1e cc 1e cc = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>7,a=>2,b=>3} da01 da01 da01 4f80 da010000 da01 4f80 da01 4f80 - {c=>7,a=>5,b=>5} ed01 ed01 ed01 b780 ed010000 ed01 b780 ed01 b780 - {c=>6,a=>2,b=>1} 8a01 8a01 8a01 4700 8a010000 8a01 4700 8a01 4700 - {c=>2,a=>0,b=>4} a000 a000 a000 1100 a0000000 a000 1100 a000 1100 - {c=>2,a=>0,b=>0} 8000 8000 8000 0100 80000000 8000 0100 8000 0100 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>3,a=>7,b=>1,d=>50028689} cf0000009160fb02 cf0000009160fb02 cf0000009160fb02 e58000002fb60910 cf0000009160fb02 cf0000009160fb02 e58000002fb60910 cf0000009160fb02 e58000002fb60910 - {c=>0,a=>6,b=>4,d=>214060677} 26000000854ec20c 26000000854ec20c 26000000854ec20c d0000000cc24e850 26000000854ec20c 26000000854ec20c d0000000cc24e850 26000000854ec20c d0000000cc24e850 - {c=>5,a=>3,b=>2,d=>195763511} 53010000371dab0b 53010000371dab0b 53010000371dab0b 6a800000bab1d370 53010000371dab0b 53010000371dab0b 6a800000bab1d370 53010000371dab0b 6a800000bab1d370 - {c=>3,a=>3,b=>6,d=>63439012} f3000000a400c803 f3000000a400c803 f3000000a400c803 798000003c800a40 f3000000a400c803 f3000000a400c803 798000003c800a40 f3000000a400c803 798000003c800a40 - {c=>0,a=>5,b=>5,d=>244764352} 2d000000c0ce960e 2d000000c0ce960e 2d000000c0ce960e b4000000e96cec00 2d000000c0ce960e 2d000000c0ce960e b4000000e96cec00 2d000000c0ce960e b4000000e96cec00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>3,c=>2,a=>4,b=>7,d=>224624247} bc000000777e633d bc000000777e633d bc000000777e633d 9d000000d637e776 bc000000777e633d bc000000777e633d 9d000000d637e776 bc000000777e633d 9d000000d637e776 - {e=>0,c=>1,a=>5,b=>1,d=>177052414} 4d000000fe9a8d0a 4d000000fe9a8d0a 4d000000fe9a8d0a a4800000a8d9afe0 4d000000fe9a8d0a 4d000000fe9a8d0a a4800000a8d9afe0 4d000000fe9a8d0a a4800000a8d9afe0 - {e=>0,c=>0,a=>2,b=>5,d=>246117108} 2a000000f472ab0e 2a000000f472ab0e 2a000000f472ab0e 54000000eab72f40 2a000000f472ab0e 2a000000f472ab0e 54000000eab72f40 2a000000f472ab0e 54000000eab72f40 - {e=>6,c=>6,a=>5,b=>7,d=>185373738} bd0100002a940c6b bd0100002a940c6b bd0100002a940c6b bf000000b0c942ac bd0100002a940c6b bd0100002a940c6b bf000000b0c942ac bd0100002a940c6b bf000000b0c942ac - {e=>5,c=>3,a=>4,b=>5,d=>54818930} ec00000072784453 ec00000072784453 ec00000072784453 958000003447872a ec00000072784453 ec00000072784453 958000003447872a ec00000072784453 958000003447872a = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>3,c=>4,a=>4,b=>0,d=>79628885,f=>3} 04010000550abf3403000000 04010000550abf3403000000 04010000550abf3403000000 820000004bf0a556c0000000 04010000550abf3403000000 04010000550abf3403000000 820000004bf0a556c0000000 04010000550abf3403000000 820000004bf0a556c0000000 - {e=>2,c=>4,a=>1,b=>5,d=>144152264,f=>2} 29010000c896972802000000 29010000c896972802000000 29010000c896972802000000 3600000089796c8480000000 29010000c896972802000000 29010000c896972802000000 3600000089796c8480000000 29010000c896972802000000 3600000089796c8480000000 - {e=>5,c=>6,a=>2,b=>0,d=>26710878,f=>3} 820100005e93975103000000 820100005e93975103000000 820100005e93975103000000 43000000197935eac0000000 820100005e93975103000000 820100005e93975103000000 43000000197935eac0000000 820100005e93975103000000 43000000197935eac0000000 - {e=>5,c=>6,a=>7,b=>4,d=>34004101,f=>1} a701000085dc065201000000 a701000085dc065201000000 a701000085dc065201000000 f3000000206dc85a40000000 a701000085dc065201000000 a701000085dc065201000000 f3000000206dc85a40000000 a701000085dc065201000000 f3000000206dc85a40000000 - {e=>0,c=>4,a=>2,b=>1,d=>16933732,f=>1} 0a0100006463020101000000 0a0100006463020101000000 0a0100006463020101000000 460000001026364040000000 0a0100006463020101000000 0a0100006463020101000000 460000001026364040000000 0a0100006463020101000000 460000001026364040000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>6,c=>4,a=>7,g=>5071,b=>0,d=>231122139,f=>3} 07010000dba4c66d3f4f0000 07010000dba4c66d3f4f0000 07010000dba4c66d3f4f0000 e2000000dc6a4dbce79e0000 07010000dba4c66d3f4f0000 07010000dba4c66d3f4f0000 e2000000dc6a4dbce79e0000 07010000dba4c66d3f4f0000 e2000000dc6a4dbce79e0000 - {e=>6,c=>2,a=>7,g=>456,b=>3,d=>180080748,f=>0} 9f0000006cd0bb6a20070000 9f0000006cd0bb6a20070000 9f0000006cd0bb6a20070000 ed000000abbd06cc03900000 9f0000006cd0bb6a20070000 9f0000006cd0bb6a20070000 ed000000abbd06cc03900000 9f0000006cd0bb6a20070000 ed000000abbd06cc03900000 - {e=>2,c=>3,a=>3,g=>5849,b=>3,d=>79209729,f=>3} db00000001a5b824675b0000 db00000001a5b824675b0000 db00000001a5b824675b0000 6d8000004b8a5014edb20000 db00000001a5b824675b0000 db00000001a5b824675b0000 6d8000004b8a5014edb20000 db00000001a5b824675b0000 6d8000004b8a5014edb20000 - {e=>1,c=>3,a=>7,g=>2821,b=>0,d=>127280147,f=>3} c700000013249617172c0000 c700000013249617172c0000 c700000013249617172c0000 e180000079624132d60a0000 c700000013249617172c0000 c700000013249617172c0000 e180000079624132d60a0000 c700000013249617172c0000 e180000079624132d60a0000 - {e=>3,c=>1,a=>1,g=>507,b=>0,d=>255482069,f=>1} 41000000d5583a3fed070000 41000000d5583a3fed070000 41000000d5583a3fed070000 20800000f3a58d5643f60000 41000000d5583a3fed070000 41000000d5583a3fed070000 20800000f3a58d5643f60000 41000000d5583a3fed070000 20800000f3a58d5643f60000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>6,a=>7,d=>257420570,c=>7,h=>84,b=>1,g=>1915,f=>3} cf0100001aed576fef1d5400 cf0100001aed576fef1d5400 cf0100001aed576fef1d5400 e7800000f57ed1accef65400 cf0100001aed576fef1d5400 cf0100001aed576fef1d5400 e7800000f57ed1accef65400 cf0100001aed576fef1d5400 e7800000f57ed1accef65400 - {e=>5,a=>5,d=>71066412,c=>2,h=>226,b=>3,g=>1456,f=>3} 9d0000002c633c54c316e200 9d0000002c633c54c316e200 9d0000002c633c54c316e200 ad00000043c632cacb60e200 9d0000002c633c54c316e200 9d0000002c633c54c316e200 ad00000043c632cacb60e200 9d0000002c633c54c316e200 ad00000043c632cacb60e200 - {e=>5,a=>0,d=>136880796,c=>4,h=>149,b=>6,g=>7356,f=>2} 300100009ca22858f2729500 300100009ca22858f2729500 300100009ca22858f2729500 1a000000828a29cab9789500 300100009ca22858f2729500 300100009ca22858f2729500 1a000000828a29cab9789500 300100009ca22858f2729500 1a000000828a29cab9789500 - {e=>4,a=>2,d=>230323768,c=>1,h=>107,b=>2,g=>1870,f=>0} 520000003876ba4d381d6b00 520000003876ba4d381d6b00 520000003876ba4d381d6b00 48800000dba763880e9c6b00 520000003876ba4d381d6b00 520000003876ba4d381d6b00 48800000dba763880e9c6b00 520000003876ba4d381d6b00 48800000dba763880e9c6b00 - {e=>0,a=>1,d=>100150911,c=>2,h=>68,b=>6,g=>5875,f=>1} b10000007f2ef805cd5b4400 b10000007f2ef805cd5b4400 b10000007f2ef805cd5b4400 390000005f82e7f06de64400 b10000007f2ef805cd5b4400 b10000007f2ef805cd5b4400 390000005f82e7f06de64400 b10000007f2ef805cd5b4400 390000005f82e7f06de64400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; }; - {a=>65,b=>3} 4103 4103 4103 4160 41030000 4103 4160 4103 4160 - {a=>6,b=>0} 0600 0600 0600 0600 06000000 0600 0600 0600 0600 - {a=>95,b=>6} 5f06 5f06 5f06 5fc0 5f060000 5f06 5fc0 5f06 5fc0 - {a=>-19,b=>1} ed01 ed01 ed01 ed20 ed010000 ed01 ed20 ed01 ed20 - {a=>69,b=>7} 4507 4507 4507 45e0 45070000 4507 45e0 4507 45e0 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>-76,b=>3} b433 b433 b433 b478 b4330000 b433 b478 b433 b478 - {c=>6,a=>58,b=>2} 3a32 3a32 3a32 3a58 3a320000 3a32 3a58 3a32 3a58 - {c=>0,a=>-87,b=>7} a907 a907 a907 a9e0 a9070000 a907 a9e0 a907 a9e0 - {c=>5,a=>95,b=>6} 5f2e 5f2e 5f2e 5fd4 5f2e0000 5f2e 5fd4 5f2e 5fd4 - {c=>6,a=>69,b=>2} 4532 4532 4532 4558 45320000 4532 4558 4532 4558 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-39,b=>1,d=>1} d9190100 d9190100 d9190100 d92c2000 d9190100 d9190100 d92c2000 d9190100 d92c2000 - {c=>0,a=>-41,b=>0,d=>0} d7000000 d7000000 d7000000 d7000000 d7000000 d7000000 d7000000 d7000000 d7000000 - {c=>4,a=>98,b=>0,d=>0} 62200000 62200000 62200000 62100000 62200000 62200000 62100000 62200000 62100000 - {c=>0,a=>-29,b=>1,d=>5} e3010500 e3010500 e3010500 e320a000 e3010500 e3010500 e320a000 e3010500 e320a000 - {c=>3,a=>-22,b=>1,d=>5} ea190500 ea190500 ea190500 ea2ca000 ea190500 ea190500 ea2ca000 ea190500 ea2ca000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>124299546,c=>2,a=>-99,b=>6,d=>6} 9d1606001aa96807 9d1606001aa96807 9d1606001aa96807 9dc8c000768a91a0 9d1606001aa96807 9d1606001aa96807 9dc8c000768a91a0 9d1606001aa96807 9dc8c000768a91a0 - {e=>146480008,c=>7,a=>77,b=>1,d=>1} 4d390100881bbb08 4d390100881bbb08 4d390100881bbb08 4d3c20008bb1b880 4d390100881bbb08 4d390100881bbb08 4d3c20008bb1b880 4d390100881bbb08 4d3c20008bb1b880 - {e=>114844914,c=>3,a=>-69,b=>7,d=>6} bb1f0600f264d806 bb1f0600f264d806 bb1f0600f264d806 bbecc0006d864f20 bb1f0600f264d806 bb1f0600f264d806 bbecc0006d864f20 bb1f0600f264d806 bbecc0006d864f20 - {e=>66012636,c=>0,a=>-38,b=>2,d=>6} da020600dc45ef03 da020600dc45ef03 da020600dc45ef03 da40c0003ef45dc0 da020600dc45ef03 da020600dc45ef03 da40c0003ef45dc0 da020600dc45ef03 da40c0003ef45dc0 - {e=>262518736,c=>0,a=>20,b=>2,d=>0} 14020000d0b7a50f 14020000d0b7a50f 14020000d0b7a50f 14400000fa5b7d00 14020000d0b7a50f 14020000d0b7a50f 14400000fa5b7d00 14020000d0b7a50f 14400000fa5b7d00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>262442666,c=>5,a=>-46,b=>1,d=>0,f=>1} d2290000aa8ea41f d2290000aa8ea41f d2290000aa8ea41f d2340000fa48eaa2 d2290000aa8ea41f d2290000aa8ea41f d2340000fa48eaa2 d2290000aa8ea41f d2340000fa48eaa2 - {e=>51404586,c=>7,a=>-117,b=>0,d=>7,f=>2} 8b3807002a5f1023 8b3807002a5f1023 8b3807002a5f1023 8b1ce0003105f2a4 8b3807002a5f1023 8b3807002a5f1023 8b1ce0003105f2a4 8b3807002a5f1023 8b1ce0003105f2a4 - {e=>62750320,c=>6,a=>103,b=>6,d=>5,f=>7} 67360500707ebd73 67360500707ebd73 67360500707ebd73 67d8a0003bd7e70e 67360500707ebd73 67360500707ebd73 67d8a0003bd7e70e 67360500707ebd73 67d8a0003bd7e70e - {e=>224998807,c=>7,a=>-64,b=>3,d=>6,f=>1} c03b06009735691d c03b06009735691d c03b06009735691d c07cc000d6935972 c03b06009735691d c03b06009735691d c07cc000d6935972 c03b06009735691d c07cc000d6935972 - {e=>147103397,c=>2,a=>51,b=>5,d=>5,f=>6} 33150500a59ec468 33150500a59ec468 33150500a59ec468 33a8a0008c49ea5c 33150500a59ec468 33150500a59ec468 33a8a0008c49ea5c 33150500a59ec468 33a8a0008c49ea5c = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>126791030,c=>2,a=>62,g=>0,b=>5,d=>3,f=>3} 3e15030076ad8e3700000000 3e15030076ad8e3700000000 3e15030076ad8e3700000000 3ea8600078ead76600000000 3e15030076ad8e3700000000 3e15030076ad8e3700000000 3ea8600078ead76600000000 3e15030076ad8e3700000000 3ea8600078ead76600000000 - {e=>121945673,c=>5,a=>14,g=>2,b=>7,d=>0,f=>6} 0e2f000049be446702000000 0e2f000049be446702000000 0e2f000049be446702000000 0ef40000744be49c80000000 0e2f000049be446702000000 0e2f000049be446702000000 0ef40000744be49c80000000 0e2f000049be446702000000 0ef40000744be49c80000000 - {e=>144073686,c=>3,a=>96,g=>1,b=>3,d=>3,f=>6} 601b0300d663966801000000 601b0300d663966801000000 601b0300d663966801000000 606c600089663d6c40000000 601b0300d663966801000000 601b0300d663966801000000 606c600089663d6c40000000 601b0300d663966801000000 606c600089663d6c40000000 - {e=>215969518,c=>7,a=>-47,g=>2,b=>4,d=>4,f=>2} d13c0400ee6edf2c02000000 d13c0400ee6edf2c02000000 d13c0400ee6edf2c02000000 d19c8000cdf6eee480000000 d13c0400ee6edf2c02000000 d13c0400ee6edf2c02000000 d19c8000cdf6eee480000000 d13c0400ee6edf2c02000000 d19c8000cdf6eee480000000 - {e=>140309850,c=>5,a=>-50,g=>1,b=>5,d=>2,f=>0} ce2d02005af55c0801000000 ce2d02005af55c0801000000 ce2d02005af55c0801000000 ceb4400085cf55a040000000 ce2d02005af55c0801000000 ce2d02005af55c0801000000 ceb4400085cf55a040000000 ce2d02005af55c0801000000 ceb4400085cf55a040000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>255150489,a=>50,d=>2,c=>3,h=>5131,b=>7,g=>0,f=>5} 321f02009949355f2c500000 321f02009949355f2c500000 321f02009949355f2c500000 32ec4000f354999a28160000 321f02009949355f2c500000 321f02009949355f2c500000 32ec4000f354999a28160000 321f02009949355f2c500000 32ec4000f354999a28160000 - {e=>88288107,a=>30,d=>5,c=>2,h=>508,b=>1,g=>1,f=>4} 1e1105006b2b4345f1070000 1e1105006b2b4345f1070000 1e1105006b2b4345f1070000 1e28a0005432b6b843f80000 1e1105006b2b4345f1070000 1e1105006b2b4345f1070000 1e28a0005432b6b843f80000 1e1105006b2b4345f1070000 1e28a0005432b6b843f80000 - {e=>69089767,a=>-51,d=>7,c=>1,h=>2817,b=>4,g=>0,f=>1} cd0c0700e7391e14042c0000 cd0c0700e7391e14042c0000 cd0c0700e7391e14042c0000 cd84e00041e39e7216020000 cd0c0700e7391e14042c0000 cd0c0700e7391e14042c0000 cd84e00041e39e7216020000 cd0c0700e7391e14042c0000 cd84e00041e39e7216020000 - {e=>181343856,a=>45,d=>0,c=>7,h=>8181,b=>5,g=>0,f=>3} 2d3d00007016cf3ad47f0000 2d3d00007016cf3ad47f0000 2d3d00007016cf3ad47f0000 2dbc0000acf167063fea0000 2d3d00007016cf3ad47f0000 2d3d00007016cf3ad47f0000 2dbc0000acf167063fea0000 2d3d00007016cf3ad47f0000 2dbc0000acf167063fea0000 - {e=>255383303,a=>-26,d=>0,c=>4,h=>6731,b=>2,g=>0,f=>2} e622000007d7382f2c690000 e622000007d7382f2c690000 e622000007d7382f2c690000 e6500000f38d707434960000 e622000007d7382f2c690000 e622000007d7382f2c690000 e6500000f38d707434960000 e622000007d7382f2c690000 e6500000f38d707434960000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>166068539,a=>7,d=>5,c=>2,h=>5695,b=>7,g=>1,f=>6,i=>154} 071705003b01e669fd589a00 071705003b01e669fd589a00 071705003b01e669fd589a00 07e8a0009e6013bc6c7e9a00 071705003b01e669fd589a00 071705003b01e669fd589a00 07e8a0009e6013bc6c7e9a00 071705003b01e669fd589a00 07e8a0009e6013bc6c7e9a00 - {e=>33996722,a=>19,d=>3,c=>1,h=>5872,b=>0,g=>3,f=>4,i=>109} 13080300b2bf0642c35b6d00 13080300b2bf0642c35b6d00 13080300b2bf0642c35b6d00 13046000206bfb28ede06d00 13080300b2bf0642c35b6d00 13080300b2bf0642c35b6d00 13046000206bfb28ede06d00 13080300b2bf0642c35b6d00 13046000206bfb28ede06d00 - {e=>233609477,a=>33,d=>2,c=>7,h=>5345,b=>1,g=>1,f=>4,i=>42} 213902000599ec4d85532a00 213902000599ec4d85532a00 213902000599ec4d85532a00 213c4000dec9905869c22a00 213902000599ec4d85532a00 213902000599ec4d85532a00 213c4000dec9905869c22a00 213902000599ec4d85532a00 213c4000dec9905869c22a00 - {e=>221295631,a=>68,d=>4,c=>7,h=>2330,b=>4,g=>0,f=>7,i=>18} 443c04000fb4307d68241200 443c04000fb4307d68241200 443c04000fb4307d68241200 449c8000d30b40fe12341200 443c04000fb4307d68241200 443c04000fb4307d68241200 449c8000d30b40fe12341200 443c04000fb4307d68241200 449c8000d30b40fe12341200 - {e=>91575618,a=>-124,d=>7,c=>1,h=>4394,b=>5,g=>0,f=>3,i=>236} 840d070042557535a844ec00 840d070042557535a844ec00 840d070042557535a844ec00 84a4e000575554262254ec00 840d070042557535a844ec00 840d070042557535a844ec00 84a4e000575554262254ec00 840d070042557535a844ec00 84a4e000575554262254ec00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; }; - {a=>116,b=>5} 74000500 74000500 74000500 0074a000 74000500 74000500 0074a000 74000500 0074a000 - {a=>71,b=>2} 47000200 47000200 47000200 00474000 47000200 47000200 00474000 47000200 00474000 - {a=>-124,b=>5} 84ff0500 84ff0500 84ff0500 ff84a000 84ff0500 84ff0500 ff84a000 84ff0500 ff84a000 - {a=>80,b=>5} 50000500 50000500 50000500 0050a000 50000500 50000500 0050a000 50000500 0050a000 - {a=>-89,b=>4} a7ff0400 a7ff0400 a7ff0400 ffa78000 a7ff0400 a7ff0400 ffa78000 a7ff0400 ffa78000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>-17,b=>0} efff1800 efff1800 efff1800 ffef0c00 efff1800 efff1800 ffef0c00 efff1800 ffef0c00 - {c=>1,a=>-2,b=>7} feff0f00 feff0f00 feff0f00 fffee400 feff0f00 feff0f00 fffee400 feff0f00 fffee400 - {c=>1,a=>-91,b=>5} a5ff0d00 a5ff0d00 a5ff0d00 ffa5a400 a5ff0d00 a5ff0d00 ffa5a400 a5ff0d00 ffa5a400 - {c=>0,a=>68,b=>4} 44000400 44000400 44000400 00448000 44000400 44000400 00448000 44000400 00448000 - {c=>7,a=>-51,b=>2} cdff3a00 cdff3a00 cdff3a00 ffcd5c00 cdff3a00 cdff3a00 ffcd5c00 cdff3a00 ffcd5c00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>5,a=>-102,b=>5,d=>2} 9affad00 9affad00 9affad00 ff9ab500 9affad00 9affad00 ff9ab500 9affad00 ff9ab500 - {c=>4,a=>79,b=>5,d=>3} 4f00e500 4f00e500 4f00e500 004fb180 4f00e500 4f00e500 004fb180 4f00e500 004fb180 - {c=>7,a=>67,b=>7,d=>4} 43003f01 43003f01 43003f01 0043fe00 43003f01 43003f01 0043fe00 43003f01 0043fe00 - {c=>1,a=>57,b=>7,d=>4} 39000f01 39000f01 39000f01 0039e600 39000f01 39000f01 0039e600 39000f01 0039e600 - {c=>7,a=>56,b=>4,d=>2} 3800bc00 3800bc00 3800bc00 00389d00 3800bc00 3800bc00 00389d00 3800bc00 00389d00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>13432198,c=>4,a=>37,b=>0,d=>6} 2500a00186f5cc00 2500a00186f5cc00 2500a00186f5cc00 002513000ccf5860 2500a00186f5cc00 2500a00186f5cc00 002513000ccf5860 2500a00186f5cc00 002513000ccf5860 - {e=>56807926,c=>1,a=>40,b=>5,d=>2} 28008d00f6d16203 28008d00f6d16203 28008d00f6d16203 0028a500362d1f60 28008d00f6d16203 28008d00f6d16203 0028a500362d1f60 28008d00f6d16203 0028a500362d1f60 - {e=>135705606,c=>5,a=>-117,b=>1,d=>2} 8bffa90006b41608 8bffa90006b41608 8bffa90006b41608 ff8b3500816b4060 8bffa90006b41608 8bffa90006b41608 ff8b3500816b4060 8bffa90006b41608 ff8b3500816b4060 - {e=>57461598,c=>5,a=>-92,b=>1,d=>0} a4ff29005ecb6c03 a4ff29005ecb6c03 a4ff29005ecb6c03 ffa4340036ccb5e0 a4ff29005ecb6c03 a4ff29005ecb6c03 ffa4340036ccb5e0 a4ff29005ecb6c03 ffa4340036ccb5e0 - {e=>47673734,c=>0,a=>-17,b=>2,d=>4} efff02018671d702 efff02018671d702 efff02018671d702 ffef42002d771860 efff02018671d702 efff02018671d702 ffef42002d771860 efff02018671d702 ffef42002d771860 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>161341178,c=>6,a=>41,b=>3,d=>6,f=>4} 2900b301fade9d49 2900b301fade9d49 2900b301fade9d49 00297b0099ddefa8 2900b301fade9d49 2900b301fade9d49 00297b0099ddefa8 2900b301fade9d49 00297b0099ddefa8 - {e=>17636513,c=>4,a=>97,b=>1,d=>0,f=>7} 61002100a11c0d71 61002100a11c0d71 61002100a11c0d71 0061300010d1ca1e 61002100a11c0d71 61002100a11c0d71 0061300010d1ca1e 61002100a11c0d71 0061300010d1ca1e - {e=>71589661,c=>4,a=>83,b=>1,d=>4,f=>3} 530021011d5f4434 530021011d5f4434 530021011d5f4434 005332004445f1d6 530021011d5f4434 530021011d5f4434 005332004445f1d6 530021011d5f4434 005332004445f1d6 - {e=>130474327,c=>1,a=>95,b=>0,d=>6,f=>2} 5f00880157e1c627 5f00880157e1c627 5f00880157e1c627 005f07007c6e1574 5f00880157e1c627 5f00880157e1c627 005f07007c6e1574 5f00880157e1c627 005f07007c6e1574 - {e=>97397382,c=>1,a=>47,b=>1,d=>2,f=>2} 2f008900862ace25 2f008900862ace25 2f008900862ace25 002f25005ce2a864 2f008900862ace25 2f008900862ace25 002f25005ce2a864 2f008900862ace25 002f25005ce2a864 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>212274530,c=>6,a=>61,g=>1,b=>5,d=>1,f=>6} 3d007500620da76c01000000 3d007500620da76c01000000 3d007500620da76c01000000 003db880ca70d62c40000000 3d007500620da76c01000000 3d007500620da76c01000000 003db880ca70d62c40000000 3d007500620da76c01000000 003db880ca70d62c40000000 - {e=>84374245,c=>6,a=>105,g=>1,b=>3,d=>2,f=>4} 6900b300e572074501000000 6900b300e572074501000000 6900b300e572074501000000 0069790050772e5840000000 6900b300e572074501000000 6900b300e572074501000000 0069790050772e5840000000 6900b300e572074501000000 0069790050772e5840000000 - {e=>59588346,c=>5,a=>-128,g=>1,b=>7,d=>7,f=>2} 80ffef01fa3e8d2301000000 80ffef01fa3e8d2301000000 80ffef01fa3e8d2301000000 ff80f78038d3efa440000000 80ffef01fa3e8d2301000000 80ffef01fa3e8d2301000000 ff80f78038d3efa440000000 80ffef01fa3e8d2301000000 ff80f78038d3efa440000000 - {e=>183955461,c=>3,a=>33,g=>3,b=>6,d=>7,f=>3} 2100de0105f0f63a03000000 2100de0105f0f63a03000000 2100de0105f0f63a03000000 0021cf80af6f0056c0000000 2100de0105f0f63a03000000 2100de0105f0f63a03000000 0021cf80af6f0056c0000000 2100de0105f0f63a03000000 0021cf80af6f0056c0000000 - {e=>192083138,c=>3,a=>-69,g=>3,b=>4,d=>0,f=>2} bbff1c00c2f4722b03000000 bbff1c00c2f4722b03000000 bbff1c00c2f4722b03000000 ffbb8c00b72f4c24c0000000 bbff1c00c2f4722b03000000 bbff1c00c2f4722b03000000 ffbb8c00b72f4c24c0000000 bbff1c00c2f4722b03000000 ffbb8c00b72f4c24c0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>113601201,a=>91,d=>3,c=>3,h=>3432,b=>1,g=>0,f=>2} 5b00d900b16ac526a0350000 5b00d900b16ac526a0350000 5b00d900b16ac526a0350000 005b2d806c56ab141ad00000 5b00d900b16ac526a0350000 5b00d900b16ac526a0350000 005b2d806c56ab141ad00000 5b00d900b16ac526a0350000 005b2d806c56ab141ad00000 - {e=>203592947,a=>15,d=>7,c=>1,h=>5527,b=>6,g=>0,f=>7} 0f00ce01f394227c5c560000 0f00ce01f394227c5c560000 0f00ce01f394227c5c560000 000fc780c2294f3e2b2e0000 0f00ce01f394227c5c560000 0f00ce01f394227c5c560000 000fc780c2294f3e2b2e0000 0f00ce01f394227c5c560000 000fc780c2294f3e2b2e0000 - {e=>20997174,a=>-60,d=>7,c=>4,h=>6515,b=>6,g=>0,f=>0} c4ffe60136644001cc650000 c4ffe60136644001cc650000 c4ffe60136644001cc650000 ffc4d3801406436032e60000 c4ffe60136644001cc650000 c4ffe60136644001cc650000 ffc4d3801406436032e60000 c4ffe60136644001cc650000 ffc4d3801406436032e60000 - {e=>235268567,a=>-47,d=>5,c=>4,h=>1813,b=>6,g=>2,f=>7} d1ff6601d7e9057e561c0000 d1ff6601d7e9057e561c0000 d1ff6601d7e9057e561c0000 ffd1d280e05e9d7e8e2a0000 d1ff6601d7e9057e561c0000 d1ff6601d7e9057e561c0000 ffd1d280e05e9d7e8e2a0000 d1ff6601d7e9057e561c0000 ffd1d280e05e9d7e8e2a0000 - {e=>104426910,a=>-85,d=>3,c=>1,h=>4758,b=>4,g=>2,f=>1} abffcc009e6d39165a4a0000 abffcc009e6d39165a4a0000 abffcc009e6d39165a4a0000 ffab85806396d9e2a52c0000 abffcc009e6d39165a4a0000 abffcc009e6d39165a4a0000 ffab85806396d9e2a52c0000 abffcc009e6d39165a4a0000 ffab85806396d9e2a52c0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>12539432,a=>-13,d=>1,c=>5,h=>262,b=>4,g=>3,f=>0,i=>197} f3ff6c002856bf001b04c500 f3ff6c002856bf001b04c500 f3ff6c002856bf001b04c500 fff394800bf56280c20cc500 f3ff6c002856bf001b04c500 f3ff6c002856bf001b04c500 fff394800bf56280c20cc500 f3ff6c002856bf001b04c500 fff394800bf56280c20cc500 - {e=>121930746,a=>112,d=>4,c=>3,h=>1222,b=>7,g=>1,f=>5,i=>13} 70001f01fa83445719130d00 70001f01fa83445719130d00 70001f01fa83445719130d00 0070ee0074483faa498c0d00 70001f01fa83445719130d00 70001f01fa83445719130d00 0070ee0074483faa498c0d00 70001f01fa83445719130d00 0070ee0074483faa498c0d00 - {e=>212968800,a=>104,d=>5,c=>7,h=>2223,b=>4,g=>2,f=>6,i=>9} 68007c0160a5b16cbe220900 68007c0160a5b16cbe220900 68007c0160a5b16cbe220900 00689e80cb1a560c915e0900 68007c0160a5b16cbe220900 68007c0160a5b16cbe220900 00689e80cb1a560c915e0900 68007c0160a5b16cbe220900 00689e80cb1a560c915e0900 - {e=>48555818,a=>-18,d=>2,c=>7,h=>3063,b=>4,g=>1,f=>1,i=>165} eeffbc002ae7e412dd2fa500 eeffbc002ae7e412dd2fa500 eeffbc002ae7e412dd2fa500 ffee9d002e4e72a257eea500 eeffbc002ae7e412dd2fa500 eeffbc002ae7e412dd2fa500 ffee9d002e4e72a257eea500 eeffbc002ae7e412dd2fa500 ffee9d002e4e72a257eea500 - {e=>204417579,a=>18,d=>3,c=>6,h=>3751,b=>6,g=>1,f=>5,i=>20} 1200f6002b2a2f5c9d3a1400 1200f6002b2a2f5c9d3a1400 1200f6002b2a2f5c9d3a1400 0012d980c2f2a2ba5d4e1400 1200f6002b2a2f5c9d3a1400 1200f6002b2a2f5c9d3a1400 0012d980c2f2a2ba5d4e1400 1200f6002b2a2f5c9d3a1400 0012d980c2f2a2ba5d4e1400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; }; - {a=>3,b=>1} 0300000001000000 0300000001000000 0300000001000000 0000000320000000 0300000001000000 0300000001000000 0000000320000000 0300000001000000 0000000320000000 - {a=>-79,b=>0} b1ffffff00000000 b1ffffff00000000 b1ffffff00000000 ffffffb100000000 b1ffffff00000000 b1ffffff00000000 ffffffb100000000 b1ffffff00000000 ffffffb100000000 - {a=>22,b=>0} 1600000000000000 1600000000000000 1600000000000000 0000001600000000 1600000000000000 1600000000000000 0000001600000000 1600000000000000 0000001600000000 - {a=>-61,b=>4} c3ffffff04000000 c3ffffff04000000 c3ffffff04000000 ffffffc380000000 c3ffffff04000000 c3ffffff04000000 ffffffc380000000 c3ffffff04000000 ffffffc380000000 - {a=>4,b=>5} 0400000005000000 0400000005000000 0400000005000000 00000004a0000000 0400000005000000 0400000005000000 00000004a0000000 0400000005000000 00000004a0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>15,b=>2} 0f0000000a000000 0f0000000a000000 0f0000000a000000 0000000f44000000 0f0000000a000000 0f0000000a000000 0000000f44000000 0f0000000a000000 0000000f44000000 - {c=>6,a=>8,b=>1} 0800000031000000 0800000031000000 0800000031000000 0000000838000000 0800000031000000 0800000031000000 0000000838000000 0800000031000000 0000000838000000 - {c=>7,a=>20,b=>5} 140000003d000000 140000003d000000 140000003d000000 00000014bc000000 140000003d000000 140000003d000000 00000014bc000000 140000003d000000 00000014bc000000 - {c=>2,a=>65,b=>6} 4100000016000000 4100000016000000 4100000016000000 00000041c8000000 4100000016000000 4100000016000000 00000041c8000000 4100000016000000 00000041c8000000 - {c=>6,a=>27,b=>7} 1b00000037000000 1b00000037000000 1b00000037000000 0000001bf8000000 1b00000037000000 1b00000037000000 0000001bf8000000 1b00000037000000 0000001bf8000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>121,b=>6,d=>0} 7900000026000000 7900000026000000 7900000026000000 00000079d0000000 7900000026000000 7900000026000000 00000079d0000000 7900000026000000 00000079d0000000 - {c=>7,a=>-95,b=>4,d=>6} a1ffffffbc010000 a1ffffffbc010000 a1ffffffbc010000 ffffffa19f000000 a1ffffffbc010000 a1ffffffbc010000 ffffffa19f000000 a1ffffffbc010000 ffffffa19f000000 - {c=>5,a=>-88,b=>5,d=>4} a8ffffff2d010000 a8ffffff2d010000 a8ffffff2d010000 ffffffa8b6000000 a8ffffff2d010000 a8ffffff2d010000 ffffffa8b6000000 a8ffffff2d010000 ffffffa8b6000000 - {c=>6,a=>101,b=>5,d=>1} 6500000075000000 6500000075000000 6500000075000000 00000065b8800000 6500000075000000 6500000075000000 00000065b8800000 6500000075000000 00000065b8800000 - {c=>7,a=>24,b=>5,d=>6} 18000000bd010000 18000000bd010000 18000000bd010000 00000018bf000000 18000000bd010000 18000000bd010000 00000018bf000000 18000000bd010000 00000018bf000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>169306690,c=>2,a=>21,b=>0,d=>6} 1500000090010000426a170a 1500000090010000426a170a 1500000090010000426a170a 000000150b000000a176a420 1500000090010000426a170a 1500000090010000426a170a 000000150b000000a176a420 1500000090010000426a170a 000000150b000000a176a420 - {e=>49555571,c=>7,a=>7,b=>1,d=>7} 07000000f90100007328f402 07000000f90100007328f402 07000000f90100007328f402 000000073f8000002f428730 07000000f90100007328f402 07000000f90100007328f402 000000073f8000002f428730 07000000f90100007328f402 000000073f8000002f428730 - {e=>137008742,c=>3,a=>-69,b=>1,d=>4} bbffffff1901000066962a08 bbffffff1901000066962a08 bbffffff1901000066962a08 ffffffbb2e00000082a96660 bbffffff1901000066962a08 bbffffff1901000066962a08 ffffffbb2e00000082a96660 bbffffff1901000066962a08 ffffffbb2e00000082a96660 - {e=>85806609,c=>1,a=>-17,b=>5,d=>3} efffffffcd000000114e1d05 efffffffcd000000114e1d05 efffffffcd000000114e1d05 ffffffefa580000051d4e110 efffffffcd000000114e1d05 efffffffcd000000114e1d05 ffffffefa580000051d4e110 efffffffcd000000114e1d05 ffffffefa580000051d4e110 - {e=>133506977,c=>6,a=>93,b=>0,d=>6} 5d000000b0010000a127f507 5d000000b0010000a127f507 5d000000b0010000a127f507 0000005d1b0000007f527a10 5d000000b0010000a127f507 5d000000b0010000a127f507 0000005d1b0000007f527a10 5d000000b0010000a127f507 0000005d1b0000007f527a10 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>156208632,c=>7,a=>-84,b=>2,d=>2,f=>2} acffffffba000000f88d4f29 acffffffba000000f88d4f29 acffffffba000000f88d4f29 ffffffac5d00000094f8df84 acffffffba000000f88d4f29 acffffffba000000f88d4f29 ffffffac5d00000094f8df84 acffffffba000000f88d4f29 ffffffac5d00000094f8df84 - {e=>130617554,c=>4,a=>-17,b=>6,d=>7,f=>0} efffffffe6010000d210c907 efffffffe6010000d210c907 efffffffe6010000d210c907 ffffffefd38000007c910d20 efffffffe6010000d210c907 efffffffe6010000d210c907 ffffffefd38000007c910d20 efffffffe6010000d210c907 ffffffefd38000007c910d20 - {e=>95191856,c=>5,a=>65,b=>4,d=>6,f=>6} 41000000ac0100003083ac65 41000000ac0100003083ac65 41000000ac0100003083ac65 00000041970000005ac8330c 41000000ac0100003083ac65 41000000ac0100003083ac65 00000041970000005ac8330c 41000000ac0100003083ac65 00000041970000005ac8330c - {e=>142523577,c=>4,a=>114,b=>5,d=>2,f=>1} 72000000a5000000b9bc7e18 72000000a5000000b9bc7e18 72000000a5000000b9bc7e18 00000072b100000087ebcb92 72000000a5000000b9bc7e18 72000000a5000000b9bc7e18 00000072b100000087ebcb92 72000000a5000000b9bc7e18 00000072b100000087ebcb92 - {e=>122537461,c=>7,a=>-44,b=>5,d=>0,f=>2} d4ffffff3d000000f5c54d27 d4ffffff3d000000f5c54d27 d4ffffff3d000000f5c54d27 ffffffd4bc00000074dc5f54 d4ffffff3d000000f5c54d27 d4ffffff3d000000f5c54d27 ffffffd4bc00000074dc5f54 d4ffffff3d000000f5c54d27 ffffffd4bc00000074dc5f54 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>144539243,c=>5,a=>29,g=>2,b=>5,d=>0,f=>6} 1d0000002d0000006b7e9d6802000000 1d0000002d0000006b7e9d6802000000 1d0000002d0000006b7e9d6802000000 0000001db400000089d7e6bc80000000 1d0000002d0000006b7e9d6802000000 1d0000002d0000006b7e9d6802000000 0000001db400000089d7e6bc80000000 1d0000002d0000006b7e9d6802000000 0000001db400000089d7e6bc80000000 - {e=>139635304,c=>6,a=>123,g=>2,b=>7,d=>7,f=>3} 7b000000f701000068aa523802000000 7b000000f701000068aa523802000000 7b000000f701000068aa523802000000 0000007bfb800000852aa68680000000 7b000000f701000068aa523802000000 7b000000f701000068aa523802000000 0000007bfb800000852aa68680000000 7b000000f701000068aa523802000000 0000007bfb800000852aa68680000000 - {e=>8969412,c=>7,a=>-110,g=>2,b=>1,d=>2,f=>2} 92ffffffb9000000c4dc882002000000 92ffffffb9000000c4dc882002000000 92ffffffb9000000c4dc882002000000 ffffff923d000000088dcc4480000000 92ffffffb9000000c4dc882002000000 92ffffffb9000000c4dc882002000000 ffffff923d000000088dcc4480000000 92ffffffb9000000c4dc882002000000 ffffff923d000000088dcc4480000000 - {e=>110093836,c=>0,a=>-32,g=>3,b=>2,d=>0,f=>5} e0ffffff020000000ce68f5603000000 e0ffffff020000000ce68f5603000000 e0ffffff020000000ce68f5603000000 ffffffe04000000068fe60cac0000000 e0ffffff020000000ce68f5603000000 e0ffffff020000000ce68f5603000000 ffffffe04000000068fe60cac0000000 e0ffffff020000000ce68f5603000000 ffffffe04000000068fe60cac0000000 - {e=>18345492,c=>1,a=>14,g=>2,b=>0,d=>1,f=>1} 0e0000004800000014ee171102000000 0e0000004800000014ee171102000000 0e0000004800000014ee171102000000 0000000e04800000117ee14280000000 0e0000004800000014ee171102000000 0e0000004800000014ee171102000000 0000000e04800000117ee14280000000 0e0000004800000014ee171102000000 0000000e04800000117ee14280000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>243213622,a=>-120,d=>4,c=>7,h=>7881,b=>7,g=>3,f=>2} 88ffffff3f01000036257f2e277b0000 88ffffff3f01000036257f2e277b0000 88ffffff3f01000036257f2e277b0000 ffffff88fe000000e7f25364fd920000 88ffffff3f01000036257f2e277b0000 88ffffff3f01000036257f2e277b0000 ffffff88fe000000e7f25364fd920000 88ffffff3f01000036257f2e277b0000 ffffff88fe000000e7f25364fd920000 - {e=>86919501,a=>53,d=>5,c=>5,h=>380,b=>0,g=>0,f=>0} 35000000680100004d492e05f0050000 35000000680100004d492e05f0050000 35000000680100004d492e05f0050000 000000351680000052e494d002f80000 35000000680100004d492e05f0050000 35000000680100004d492e05f0050000 000000351680000052e494d002f80000 35000000680100004d492e05f0050000 000000351680000052e494d002f80000 - {e=>147012077,a=>32,d=>1,c=>6,h=>2230,b=>1,g=>2,f=>7} 2000000071000000ed39c378da220000 2000000071000000ed39c378da220000 2000000071000000ed39c378da220000 00000020388000008c339ede916c0000 2000000071000000ed39c378da220000 2000000071000000ed39c378da220000 00000020388000008c339ede916c0000 2000000071000000ed39c378da220000 00000020388000008c339ede916c0000 - {e=>23638499,a=>-48,d=>3,c=>7,h=>5753,b=>7,g=>2,f=>6} d0ffffffff000000e3b16861e6590000 d0ffffffff000000e3b16861e6590000 d0ffffffff000000e3b16861e6590000 ffffffd0fd800000168b1e3cacf20000 d0ffffffff000000e3b16861e6590000 d0ffffffff000000e3b16861e6590000 ffffffd0fd800000168b1e3cacf20000 d0ffffffff000000e3b16861e6590000 ffffffd0fd800000168b1e3cacf20000 - {e=>136927608,a=>-38,d=>6,c=>7,h=>773,b=>3,g=>2,f=>5} daffffffbb01000078592958160c0000 daffffffbb01000078592958160c0000 daffffffbb01000078592958160c0000 ffffffda7f0000008295978a860a0000 daffffffbb01000078592958160c0000 daffffffbb01000078592958160c0000 ffffffda7f0000008295978a860a0000 daffffffbb01000078592958160c0000 ffffffda7f0000008295978a860a0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>145884245,a=>43,d=>4,c=>7,h=>3698,b=>4,g=>0,f=>0,i=>117} 2b0000003c0100005504b208c8397500 2b0000003c0100005504b208c8397500 2b0000003c0100005504b208c8397500 0000002b9e0000008b2045501ce47500 2b0000003c0100005504b208c8397500 2b0000003c0100005504b208c8397500 0000002b9e0000008b2045501ce47500 2b0000003c0100005504b208c8397500 0000002b9e0000008b2045501ce47500 - {e=>148618604,a=>-115,d=>5,c=>6,h=>3263,b=>7,g=>2,f=>1,i=>253} 8dffffff770100006cbddb18fe32fd00 8dffffff770100006cbddb18fe32fd00 8dffffff770100006cbddb18fe32fd00 ffffff8dfa8000008dbbd6c2997efd00 8dffffff770100006cbddb18fe32fd00 8dffffff770100006cbddb18fe32fd00 ffffff8dfa8000008dbbd6c2997efd00 8dffffff770100006cbddb18fe32fd00 ffffff8dfa8000008dbbd6c2997efd00 - {e=>226652794,a=>48,d=>5,c=>2,h=>2101,b=>4,g=>1,f=>3,i=>16} 30000000540100007a72823dd5201000 30000000540100007a72823dd5201000 30000000540100007a72823dd5201000 000000308a800000d82727a6506a1000 30000000540100007a72823dd5201000 30000000540100007a72823dd5201000 000000308a800000d82727a6506a1000 30000000540100007a72823dd5201000 000000308a800000d82727a6506a1000 - {e=>137257539,a=>-126,d=>4,c=>7,h=>3963,b=>0,g=>3,f=>1,i=>27} 82ffffff3801000043622e18ef3d1b00 82ffffff3801000043622e18ef3d1b00 82ffffff3801000043622e18ef3d1b00 ffffff821e00000082e62432def61b00 82ffffff3801000043622e18ef3d1b00 82ffffff3801000043622e18ef3d1b00 ffffff821e00000082e62432def61b00 82ffffff3801000043622e18ef3d1b00 ffffff821e00000082e62432def61b00 - {e=>106849035,a=>-61,d=>5,c=>4,h=>1757,b=>7,g=>1,f=>5,i=>42} c3ffffff670100000b635e56751b2a00 c3ffffff670100000b635e56751b2a00 c3ffffff670100000b635e56751b2a00 ffffffc3f280000065e630ba4dba2a00 c3ffffff670100000b635e56751b2a00 c3ffffff670100000b635e56751b2a00 ffffffc3f280000065e630ba4dba2a00 c3ffffff670100000b635e56751b2a00 ffffffc3f280000065e630ba4dba2a00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; }; - {a=>72,b=>5} 4800000005000000 48000000000000000500000000000000 48000000000000000500000000000000 00000048a0000000 4800000005000000 4800000005000000 0000000000000048a000000000000000 4800000005000000 00000048a0000000 - {a=>-71,b=>1} b9ffffff01000000 b9ffffffffffffff0100000000000000 b9ffffffffffffff0100000000000000 ffffffb920000000 b9ffffff01000000 b9ffffff01000000 ffffffffffffffb92000000000000000 b9ffffff01000000 ffffffb920000000 - {a=>-67,b=>4} bdffffff04000000 bdffffffffffffff0400000000000000 bdffffffffffffff0400000000000000 ffffffbd80000000 bdffffff04000000 bdffffff04000000 ffffffffffffffbd8000000000000000 bdffffff04000000 ffffffbd80000000 - {a=>-126,b=>2} 82ffffff02000000 82ffffffffffffff0200000000000000 82ffffffffffffff0200000000000000 ffffff8240000000 82ffffff02000000 82ffffff02000000 ffffffffffffff824000000000000000 82ffffff02000000 ffffff8240000000 - {a=>126,b=>2} 7e00000002000000 7e000000000000000200000000000000 7e000000000000000200000000000000 0000007e40000000 7e00000002000000 7e00000002000000 000000000000007e4000000000000000 7e00000002000000 0000007e40000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>2,a=>122,b=>0} 7a00000010000000 7a000000000000001000000000000000 7a000000000000001000000000000000 0000007a08000000 7a00000010000000 7a00000010000000 000000000000007a0800000000000000 7a00000010000000 0000007a08000000 - {c=>7,a=>-32,b=>1} e0ffffff39000000 e0ffffffffffffff3900000000000000 e0ffffffffffffff3900000000000000 ffffffe03c000000 e0ffffff39000000 e0ffffff39000000 ffffffffffffffe03c00000000000000 e0ffffff39000000 ffffffe03c000000 - {c=>1,a=>33,b=>2} 210000000a000000 21000000000000000a00000000000000 21000000000000000a00000000000000 0000002144000000 210000000a000000 210000000a000000 00000000000000214400000000000000 210000000a000000 0000002144000000 - {c=>2,a=>-13,b=>6} f3ffffff16000000 f3ffffffffffffff1600000000000000 f3ffffffffffffff1600000000000000 fffffff3c8000000 f3ffffff16000000 f3ffffff16000000 fffffffffffffff3c800000000000000 f3ffffff16000000 fffffff3c8000000 - {c=>6,a=>-22,b=>1} eaffffff31000000 eaffffffffffffff3100000000000000 eaffffffffffffff3100000000000000 ffffffea38000000 eaffffff31000000 eaffffff31000000 ffffffffffffffea3800000000000000 eaffffff31000000 ffffffea38000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>-120,b=>1,d=>6} 88ffffffa1010000 88ffffffffffffffa101000000000000 88ffffffffffffffa101000000000000 ffffff8833000000 88ffffffa1010000 88ffffffa1010000 ffffffffffffff883300000000000000 88ffffffa1010000 ffffff8833000000 - {c=>6,a=>-100,b=>5,d=>5} 9cffffff75010000 9cffffffffffffff7501000000000000 9cffffffffffffff7501000000000000 ffffff9cba800000 9cffffff75010000 9cffffff75010000 ffffffffffffff9cba80000000000000 9cffffff75010000 ffffff9cba800000 - {c=>7,a=>70,b=>5,d=>2} 46000000bd000000 4600000000000000bd00000000000000 4600000000000000bd00000000000000 00000046bd000000 46000000bd000000 46000000bd000000 0000000000000046bd00000000000000 46000000bd000000 00000046bd000000 - {c=>5,a=>-124,b=>3,d=>0} 84ffffff2b000000 84ffffffffffffff2b00000000000000 84ffffffffffffff2b00000000000000 ffffff8474000000 84ffffff2b000000 84ffffff2b000000 ffffffffffffff847400000000000000 84ffffff2b000000 ffffff8474000000 - {c=>7,a=>106,b=>6,d=>3} 6a000000fe000000 6a00000000000000fe00000000000000 6a00000000000000fe00000000000000 0000006add800000 6a000000fe000000 6a000000fe000000 000000000000006add80000000000000 6a000000fe000000 0000006add800000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>238948103,c=>0,a=>46,b=>1,d=>7} 2e000000c1010000070f3e0e 2e00000000000000c1010000070f3e0e 2e00000000000000c1010000070f3e0e 0000002e23800000e3e0f070 2e000000c1010000070f3e0e 2e000000c1010000070f3e0e 000000000000002e23800000e3e0f070 2e000000c1010000070f3e0e 0000002e23800000e3e0f070 - {e=>85833411,c=>2,a=>41,b=>3,d=>7} 29000000d3010000c3b61d05 2900000000000000d3010000c3b61d05 2900000000000000d3010000c3b61d05 000000296b80000051db6c30 29000000d3010000c3b61d05 29000000d3010000c3b61d05 00000000000000296b80000051db6c30 29000000d3010000c3b61d05 000000296b80000051db6c30 - {e=>85862305,c=>4,a=>-94,b=>6,d=>4} a2ffffff26010000a1271e05 a2ffffffffffffff26010000a1271e05 a2ffffffffffffff26010000a1271e05 ffffffa2d200000051e27a10 a2ffffff26010000a1271e05 a2ffffff26010000a1271e05 ffffffffffffffa2d200000051e27a10 a2ffffff26010000a1271e05 ffffffa2d200000051e27a10 - {e=>89255584,c=>4,a=>26,b=>1,d=>0} 1a00000021000000a0ee5105 1a0000000000000021000000a0ee5105 1a0000000000000021000000a0ee5105 0000001a30000000551eea00 1a00000021000000a0ee5105 1a00000021000000a0ee5105 000000000000001a30000000551eea00 1a00000021000000a0ee5105 0000001a30000000551eea00 - {e=>218745112,c=>5,a=>-41,b=>3,d=>0} d7ffffff2b00000018c9090d d7ffffffffffffff2b00000018c9090d d7ffffffffffffff2b00000018c9090d ffffffd774000000d09c9180 d7ffffff2b00000018c9090d d7ffffff2b00000018c9090d ffffffffffffffd774000000d09c9180 d7ffffff2b00000018c9090d ffffffd774000000d09c9180 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>181902780,c=>3,a=>-112,b=>6,d=>7,f=>4} 90ffffffde010000bc9dd74a 90ffffffffffffffde010000bc9dd74a 90ffffffffffffffde010000bc9dd74a ffffff90cf800000ad79dbc8 90ffffffde010000bc9dd74a 90ffffffde010000bc9dd74a ffffffffffffff90cf800000ad79dbc8 90ffffffde010000bc9dd74a ffffff90cf800000ad79dbc8 - {e=>243947917,c=>2,a=>-87,b=>0,d=>1,f=>7} a9ffffff500000008d598a7e a9ffffffffffffff500000008d598a7e a9ffffffffffffff500000008d598a7e ffffffa908800000e8a598de a9ffffff500000008d598a7e a9ffffff500000008d598a7e ffffffffffffffa908800000e8a598de a9ffffff500000008d598a7e ffffffa908800000e8a598de - {e=>87380681,c=>3,a=>-46,b=>2,d=>3,f=>1} d2ffffffda000000c9523515 d2ffffffffffffffda000000c9523515 d2ffffffffffffffda000000c9523515 ffffffd24d80000053552c92 d2ffffffda000000c9523515 d2ffffffda000000c9523515 ffffffffffffffd24d80000053552c92 d2ffffffda000000c9523515 ffffffd24d80000053552c92 - {e=>23417204,c=>4,a=>50,b=>3,d=>0,f=>5} 320000002300000074516551 32000000000000002300000074516551 32000000000000002300000074516551 00000032700000001655174a 320000002300000074516551 320000002300000074516551 0000000000000032700000001655174a 320000002300000074516551 00000032700000001655174a - {e=>33123043,c=>0,a=>116,b=>6,d=>0,f=>4} 7400000006000000e36af941 740000000000000006000000e36af941 740000000000000006000000e36af941 00000074c00000001f96ae38 7400000006000000e36af941 7400000006000000e36af941 0000000000000074c00000001f96ae38 7400000006000000e36af941 00000074c00000001f96ae38 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>84208039,c=>0,a=>14,g=>1,b=>2,d=>1,f=>0} 0e00000042000000a7e9040501000000 0e0000000000000042000000a7e904050100000000000000 0e0000000000000042000000a7e904050100000000000000 0000000e40800000504e9a7040000000 0e00000042000000a7e9040501000000 0e00000042000000a7e9040501000000 000000000000000e40800000504e9a704000000000000000 0e00000042000000a7e9040501000000 0000000e40800000504e9a7040000000 - {e=>116421098,c=>1,a=>-89,g=>2,b=>6,d=>4,f=>6} a7ffffff0e010000ea71f06602000000 a7ffffffffffffff0e010000ea71f0660200000000000000 a7ffffffffffffff0e010000ea71f0660200000000000000 ffffffa7c60000006f071eac80000000 a7ffffff0e010000ea71f06602000000 a7ffffff0e010000ea71f06602000000 ffffffffffffffa7c60000006f071eac8000000000000000 a7ffffff0e010000ea71f06602000000 ffffffa7c60000006f071eac80000000 - {e=>233446560,c=>1,a=>-126,g=>0,b=>7,d=>1,f=>0} 82ffffff4f000000a01cea0d00000000 82ffffffffffffff4f000000a01cea0d0000000000000000 82ffffffffffffff4f000000a01cea0d0000000000000000 ffffff82e4800000dea1ca0000000000 82ffffff4f000000a01cea0d00000000 82ffffff4f000000a01cea0d00000000 ffffffffffffff82e4800000dea1ca000000000000000000 82ffffff4f000000a01cea0d00000000 ffffff82e4800000dea1ca0000000000 - {e=>196256397,c=>2,a=>-106,g=>1,b=>1,d=>5,f=>0} 96ffffff510100008da2b20b01000000 96ffffffffffffff510100008da2b20b0100000000000000 96ffffffffffffff510100008da2b20b0100000000000000 ffffff962a800000bb2a28d040000000 96ffffff510100008da2b20b01000000 96ffffff510100008da2b20b01000000 ffffffffffffff962a800000bb2a28d04000000000000000 96ffffff510100008da2b20b01000000 ffffff962a800000bb2a28d040000000 - {e=>98949361,c=>1,a=>69,g=>3,b=>4,d=>4,f=>0} 450000000c010000f1d8e50503000000 45000000000000000c010000f1d8e5050300000000000000 45000000000000000c010000f1d8e5050300000000000000 00000045860000005e5d8f10c0000000 450000000c010000f1d8e50503000000 450000000c010000f1d8e50503000000 0000000000000045860000005e5d8f10c000000000000000 450000000c010000f1d8e50503000000 00000045860000005e5d8f10c0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>154431445,a=>-110,d=>6,c=>7,h=>5540,b=>6,g=>1,f=>7} 92ffffffbe010000d56f347991560000 92ffffffffffffffbe010000d56f34799156000000000000 92ffffffffffffffbe010000d56f34799156000000000000 ffffff92df0000009346fd5e6b480000 92ffffffbe010000d56f347991560000 92ffffffbe010000d56f347991560000 ffffffffffffff92df0000009346fd5e6b48000000000000 92ffffffbe010000d56f347991560000 ffffff92df0000009346fd5e6b480000 - {e=>175556692,a=>-125,d=>1,c=>1,h=>2798,b=>5,g=>2,f=>5} 83ffffff4d00000054c8765aba2b0000 83ffffffffffffff4d00000054c8765aba2b000000000000 83ffffffffffffff4d00000054c8765aba2b000000000000 ffffff83a4800000a76c854a95dc0000 83ffffff4d00000054c8765aba2b0000 83ffffff4d00000054c8765aba2b0000 ffffffffffffff83a4800000a76c854a95dc000000000000 83ffffff4d00000054c8765aba2b0000 ffffff83a4800000a76c854a95dc0000 - {e=>165973282,a=>-23,d=>2,c=>0,h=>4321,b=>0,g=>0,f=>0} e9ffffff80000000228de40984430000 e9ffffffffffffff80000000228de4098443000000000000 e9ffffffffffffff80000000228de4098443000000000000 ffffffe9010000009e48d22021c20000 e9ffffff80000000228de40984430000 e9ffffff80000000228de40984430000 ffffffffffffffe9010000009e48d22021c2000000000000 e9ffffff80000000228de40984430000 ffffffe9010000009e48d22021c20000 - {e=>13388635,a=>38,d=>7,c=>3,h=>3576,b=>1,g=>1,f=>0} 26000000d90100005b4bcc00e1370000 2600000000000000d90100005b4bcc00e137000000000000 2600000000000000d90100005b4bcc00e137000000000000 000000262f8000000cc4b5b05bf00000 26000000d90100005b4bcc00e1370000 26000000d90100005b4bcc00e1370000 00000000000000262f8000000cc4b5b05bf0000000000000 26000000d90100005b4bcc00e1370000 000000262f8000000cc4b5b05bf00000 - {e=>21214690,a=>-124,d=>3,c=>4,h=>6149,b=>0,g=>3,f=>3} 84ffffffe0000000e2b5433117600000 84ffffffffffffffe0000000e2b543311760000000000000 84ffffffffffffffe0000000e2b543311760000000000000 ffffff8411800000143b5e26f00a0000 84ffffffe0000000e2b5433117600000 84ffffffe0000000e2b5433117600000 ffffffffffffff8411800000143b5e26f00a000000000000 84ffffffe0000000e2b5433117600000 ffffff8411800000143b5e26f00a0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>130293957,a=>-6,d=>3,c=>0,h=>3224,b=>7,g=>2,f=>1,i=>96} faffffffc7000000c520c41762326000 faffffffffffffffc7000000c520c4176232600000000000 faffffffffffffffc7000000c520c4176232600000000000 fffffffae18000007c420c5299306000 faffffffc7000000c520c41762326000 faffffffc7000000c520c41762326000 fffffffffffffffae18000007c420c529930600000000000 faffffffc7000000c520c41762326000 fffffffae18000007c420c5299306000 - {e=>22275050,a=>24,d=>7,c=>6,h=>4511,b=>7,g=>0,f=>3,i=>194} 18000000f7010000eae353317c46c200 1800000000000000f7010000eae353317c46c20000000000 1800000000000000f7010000eae353317c46c20000000000 00000018fb800000153e3ea6233ec200 18000000f7010000eae353317c46c200 18000000f7010000eae353317c46c200 0000000000000018fb800000153e3ea6233ec20000000000 18000000f7010000eae353317c46c200 00000018fb800000153e3ea6233ec200 - {e=>185744049,a=>-60,d=>7,c=>6,h=>1844,b=>6,g=>0,f=>2,i=>56} c4fffffff6010000b13a122bd01c3800 c4fffffffffffffff6010000b13a122bd01c380000000000 c4fffffffffffffff6010000b13a122bd01c380000000000 ffffffc4db800000b123ab140e683800 c4fffffff6010000b13a122bd01c3800 c4fffffff6010000b13a122bd01c3800 ffffffffffffffc4db800000b123ab140e68380000000000 c4fffffff6010000b13a122bd01c3800 ffffffc4db800000b123ab140e683800 - {e=>260322633,a=>-58,d=>5,c=>5,h=>6201,b=>7,g=>2,f=>2,i=>199} c6ffffff6f0100004935842fe660c700 c6ffffffffffffff6f0100004935842fe660c70000000000 c6ffffffffffffff6f0100004935842fe660c70000000000 ffffffc6f6800000f8435494b072c700 c6ffffff6f0100004935842fe660c700 c6ffffff6f0100004935842fe660c700 ffffffffffffffc6f6800000f8435494b072c70000000000 c6ffffff6f0100004935842fe660c700 ffffffc6f6800000f8435494b072c700 - {e=>148496573,a=>-115,d=>0,c=>0,h=>7411,b=>3,g=>0,f=>7,i=>14} 8dffffff03000000bde0d978cc730e00 8dffffffffffffff03000000bde0d978cc730e0000000000 8dffffffffffffff03000000bde0d978cc730e0000000000 ffffff8d600000008d9e0bde39e60e00 8dffffff03000000bde0d978cc730e00 8dffffff03000000bde0d978cc730e00 ffffffffffffff8d600000008d9e0bde39e60e0000000000 8dffffff03000000bde0d978cc730e00 ffffff8d600000008d9e0bde39e60e00 = typedef int foo; struct mixed_no_pack { unsigned int a:3; }; - {a=>7} 07000000 07000000 07000000 e0000000 07000000 07000000 e0000000 07000000 e0000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>7} 07000000 07000000 07000000 e0000000 07000000 07000000 e0000000 07000000 e0000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; }; - {a=>5,b=>3} 1d000000 1d000000 1d000000 ac000000 1d000000 1d000000 ac000000 1d000000 ac000000 - {a=>6,b=>-4} 26000000 26000000 26000000 d0000000 26000000 26000000 d0000000 26000000 d0000000 - {a=>7,b=>1} 0f000000 0f000000 0f000000 e4000000 0f000000 0f000000 e4000000 0f000000 e4000000 - {a=>4,b=>2} 14000000 14000000 14000000 88000000 14000000 14000000 88000000 14000000 88000000 - {a=>3,b=>2} 13000000 13000000 13000000 68000000 13000000 13000000 68000000 13000000 68000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>1,a=>6,b=>-4} 66000000 66000000 66000000 d0800000 66000000 66000000 d0800000 66000000 d0800000 - {c=>3,a=>2,b=>0} c2000000 c2000000 c2000000 41800000 c2000000 c2000000 41800000 c2000000 41800000 - {c=>1,a=>4,b=>-3} 6c000000 6c000000 6c000000 94800000 6c000000 6c000000 94800000 6c000000 94800000 - {c=>-4,a=>2,b=>-4} 22010000 22010000 22010000 52000000 22010000 22010000 52000000 22010000 52000000 - {c=>-3,a=>4,b=>-3} 6c010000 6c010000 6c010000 96800000 6c010000 6c010000 96800000 6c010000 96800000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>-3,a=>0,b=>-3,d=>3} 68070000 68070000 68070000 16b00000 68070000 68070000 16b00000 68070000 16b00000 - {c=>-4,a=>3,b=>3,d=>4} 1b090000 1b090000 1b090000 6e400000 1b090000 1b090000 6e400000 1b090000 6e400000 - {c=>-4,a=>4,b=>3,d=>1} 1c030000 1c030000 1c030000 8e100000 1c030000 1c030000 8e100000 1c030000 8e100000 - {c=>-1,a=>6,b=>-3,d=>0} ee010000 ee010000 ee010000 d7800000 ee010000 ee010000 d7800000 ee010000 d7800000 - {c=>0,a=>5,b=>2,d=>2} 15040000 15040000 15040000 a8200000 15040000 15040000 a8200000 15040000 a8200000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>0,c=>2,a=>1,b=>2,d=>6} 910c0000 910c0000 910c0000 29600000 910c0000 910c0000 29600000 910c0000 29600000 - {e=>-1,c=>-2,a=>6,b=>3,d=>7} 9e7f0000 9e7f0000 9e7f0000 cf7e0000 9e7f0000 9e7f0000 cf7e0000 9e7f0000 cf7e0000 - {e=>-1,c=>-2,a=>0,b=>0,d=>2} 80750000 80750000 80750000 032e0000 80750000 80750000 032e0000 80750000 032e0000 - {e=>0,c=>3,a=>6,b=>-1,d=>0} fe000000 fe000000 fe000000 dd800000 fe000000 fe000000 dd800000 fe000000 dd800000 - {e=>3,c=>-2,a=>1,b=>0,d=>7} 813f0000 813f0000 813f0000 23760000 813f0000 813f0000 23760000 813f0000 23760000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>2,c=>1,a=>2,b=>-4,d=>3,f=>6} 62260300 62260300 62260300 50b58000 62260300 62260300 50b58000 62260300 50b58000 - {e=>-2,c=>-2,a=>6,b=>1,d=>6,f=>0} 8e6d0000 8e6d0000 8e6d0000 c76c0000 8e6d0000 8e6d0000 c76c0000 8e6d0000 c76c0000 - {e=>1,c=>1,a=>3,b=>-4,d=>7,f=>5} 639e0200 639e0200 639e0200 70f34000 639e0200 639e0200 70f34000 639e0200 70f34000 - {e=>2,c=>2,a=>0,b=>-1,d=>3,f=>2} b8260100 b8260100 b8260100 1d348000 b8260100 b8260100 1d348000 b8260100 1d348000 - {e=>0,c=>3,a=>5,b=>2,d=>5,f=>2} d50a0100 d50a0100 d50a0100 a9d08000 d50a0100 d50a0100 a9d08000 d50a0100 a9d08000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>3,c=>-4,a=>1,b=>2,d=>1,f=>1} 11b30000 11b30000 11b30000 2a164000 11b30000 11b30000 2a164000 11b30000 2a164000 - {e=>-1,c=>-2,a=>5,b=>-1,d=>7,f=>2} bd7f0100 bd7f0100 bd7f0100 bf7e8000 bd7f0100 bd7f0100 bf7e8000 bd7f0100 bf7e8000 - {e=>-3,c=>-2,a=>2,b=>-2,d=>2,f=>3} b2d50100 b2d50100 b2d50100 5b2ac000 b2d50100 b2d50100 5b2ac000 b2d50100 5b2ac000 - {e=>-1,c=>-1,a=>7,b=>-1,d=>3,f=>1} fff70000 fff70000 fff70000 ffbe4000 fff70000 fff70000 ffbe4000 fff70000 ffbe4000 - {e=>-3,c=>2,a=>7,b=>-2,d=>5,f=>0} b75a0000 b75a0000 b75a0000 f95a0000 b75a0000 b75a0000 f95a0000 b75a0000 f95a0000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>0,c=>3,a=>3,g=>2,b=>0,d=>2,f=>7} c384030002000000 c384030002000000 c384030002000000 61a1c00040000000 c384030002000000 c384030002000000 61a1c00040000000 c384030002000000 61a1c00040000000 - {e=>1,c=>3,a=>0,g=>7,b=>1,d=>1,f=>4} c812020007000000 c812020007000000 c812020007000000 05930000e0000000 c812020007000000 c812020007000000 05930000e0000000 c812020007000000 05930000e0000000 - {e=>0,c=>3,a=>7,g=>0,b=>-2,d=>7,f=>2} f70e010000000000 f70e010000000000 f70e010000000000 f9f0800000000000 f70e010000000000 f70e010000000000 f9f0800000000000 f70e010000000000 f9f0800000000000 - {e=>-2,c=>3,a=>1,g=>2,b=>0,d=>2,f=>0} c164000002000000 c164000002000000 c164000002000000 21ac000040000000 c164000002000000 c164000002000000 21ac000040000000 c164000002000000 21ac000040000000 - {e=>2,c=>-1,a=>7,g=>5,b=>-2,d=>6,f=>7} f7ad030005000000 f7ad030005000000 f7ad030005000000 fbe5c000a0000000 f7ad030005000000 f7ad030005000000 fbe5c000a0000000 f7ad030005000000 fbe5c000a0000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>1,a=>0,d=>6,c=>-1,h=>3,b=>-1,g=>7,f=>6} f81d03001f000000 f81d03001f000000 f81d03001f000000 1fe38000ec000000 f81d03001f000000 f81d03001f000000 1fe38000ec000000 f81d03001f000000 1fe38000ec000000 - {e=>-4,a=>1,d=>3,c=>-4,h=>2,b=>2,g=>0,f=>5} 11c7020010000000 11c7020010000000 11c7020010000000 2a39400008000000 11c7020010000000 11c7020010000000 2a39400008000000 11c7020010000000 2a39400008000000 - {e=>2,a=>3,d=>1,c=>-4,h=>0,b=>-1,g=>0,f=>2} 3b23010000000000 3b23010000000000 3b23010000000000 7e14800000000000 3b23010000000000 3b23010000000000 7e14800000000000 3b23010000000000 7e14800000000000 - {e=>-2,a=>4,d=>4,c=>2,h=>-3,b=>-4,g=>7,f=>1} a4e800002f000000 a4e800002f000000 a4e800002f000000 914c4000f4000000 a4e800002f000000 a4e800002f000000 914c4000f4000000 a4e800002f000000 914c4000f4000000 - {e=>-2,a=>1,d=>2,c=>-1,h=>0,b=>-2,g=>5,f=>6} f165030005000000 f165030005000000 f165030005000000 3bad8000a0000000 f165030005000000 f165030005000000 3bad8000a0000000 f165030005000000 3bad8000a0000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>0,a=>3,d=>4,c=>-1,h=>3,b=>-2,g=>3,f=>4,i=>1} f30902005b000000 f30902005b000000 f30902005b000000 7bc100006c800000 f30902005b000000 f30902005b000000 7bc100006c800000 f30902005b000000 7bc100006c800000 - {e=>2,a=>5,d=>2,c=>1,h=>2,b=>-3,g=>4,f=>0,i=>3} 6d240000d4000000 6d240000d4000000 6d240000d4000000 b4a4000089800000 6d240000d4000000 6d240000d4000000 b4a4000089800000 6d240000d4000000 b4a4000089800000 - {e=>0,a=>5,d=>3,c=>2,h=>-3,b=>-1,g=>7,f=>7,i=>4} bd8603002f010000 bd8603002f010000 bd8603002f010000 bd31c000f6000000 bd8603002f010000 bd8603002f010000 bd31c000f6000000 bd8603002f010000 bd31c000f6000000 - {e=>-3,a=>5,d=>1,c=>1,h=>3,b=>-1,g=>3,f=>2,i=>6} 7d5201009b010000 7d5201009b010000 7d5201009b010000 bc9a80006f000000 7d5201009b010000 7d5201009b010000 bc9a80006f000000 7d5201009b010000 bc9a80006f000000 - {e=>3,a=>3,d=>6,c=>1,h=>0,b=>0,g=>3,f=>2,i=>7} 433c0100c3010000 433c0100c3010000 433c0100c3010000 60e6800063800000 433c0100c3010000 433c0100c3010000 60e6800063800000 433c0100c3010000 60e6800063800000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>-1,a=>4,d=>4,j=>-12,c=>2,h=>1,b=>-1,g=>7,f=>7,i=>0} bcf803000f00f400 bcf803000f00f400 bcf803000f00f400 9d4fc000e400f400 bcf803000f00f400 bcf803000f00f400 9d4fc000e400f400 bcf803000f00f400 9d4fc000e400f400 - {e=>3,a=>4,d=>1,j=>93,c=>-1,h=>3,b=>-4,g=>3,f=>2,i=>6} e43301009b015d00 e43301009b015d00 e43301009b015d00 939680006f005d00 e43301009b015d00 e43301009b015d00 939680006f005d00 e43301009b015d00 939680006f005d00 - {e=>1,a=>1,d=>6,j=>58,c=>-2,h=>-3,b=>3,g=>7,f=>5,i=>6} 999d0200af013a00 999d0200af013a00 999d0200af013a00 2f634000f7003a00 999d0200af013a00 999d0200af013a00 2f634000f7003a00 999d0200af013a00 2f634000f7003a00 - {e=>-2,a=>4,d=>4,j=>96,c=>3,h=>3,b=>-3,g=>6,f=>0,i=>1} ec6800005e006000 ec6800005e006000 ec6800005e006000 95cc0000cc806000 ec6800005e006000 ec6800005e006000 95cc0000cc806000 ec6800005e006000 95cc0000cc806000 - {e=>-4,a=>6,d=>7,j=>-52,c=>-2,h=>-2,b=>2,g=>5,f=>4,i=>7} 964f0200f501cc00 964f0200f501cc00 964f0200f501cc00 cb790000bb80cc00 964f0200f501cc00 964f0200f501cc00 cb790000bb80cc00 964f0200f501cc00 cb790000bb80cc00 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>-4,a=>4,d=>6,j=>-110,c=>3,k=>1,h=>3,b=>-4,g=>4,f=>2,i=>5} e44c01005c019201 e44c01005c019201 e44c01005c019201 91e880008e809220 e44c01005c019201 e44c01005c019201 91e880008e809220 e44c01005c019201 91e880008e809220 - {e=>1,a=>1,d=>5,j=>-28,c=>-3,k=>4,h=>-4,b=>2,g=>2,f=>4,i=>2} 511b0200a200e404 511b0200a200e404 511b0200a200e404 2ad300005100e480 511b0200a200e404 511b0200a200e404 2ad300005100e480 511b0200a200e404 2ad300005100e480 - {e=>1,a=>0,d=>1,j=>83,c=>2,k=>7,h=>0,b=>1,g=>6,f=>5,i=>0} 8892020006005307 8892020006005307 8892020006005307 05134000c00053e0 8892020006005307 8892020006005307 05134000c00053e0 8892020006005307 05134000c00053e0 - {e=>3,a=>7,d=>1,j=>-110,c=>2,k=>0,h=>0,b=>-3,g=>0,f=>4,i=>6} af32020080019200 af32020080019200 af32020080019200 f517000003009200 af32020080019200 af32020080019200 f517000003009200 af32020080019200 f517000003009200 - {e=>-4,a=>5,d=>6,j=>-88,c=>1,k=>7,h=>-3,b=>0,g=>5,f=>2,i=>2} 454c0100ad00a807 454c0100ad00a807 454c0100ad00a807 a0e88000b500a8e0 454c0100ad00a807 454c0100ad00a807 a0e88000b500a8e0 454c0100ad00a807 a0e88000b500a8e0 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>1,a=>1,d=>5,j=>101,l=>-3,c=>-4,k=>2,h=>-2,b=>3,g=>1,f=>1,i=>2} 199b0000b100652a 199b0000b100652a 199b0000b100652a 2e52400039006554 199b0000b100652a 199b0000b100652a 2e52400039006554 199b0000b100652a 2e52400039006554 - {e=>1,a=>6,d=>2,j=>-74,l=>0,c=>-4,k=>2,h=>-2,b=>2,g=>2,f=>0,i=>4} 161500003201b602 161500003201b602 161500003201b602 ca2200005a00b640 161500003201b602 161500003201b602 ca2200005a00b640 161500003201b602 ca2200005a00b640 - {e=>3,a=>7,d=>2,j=>30,l=>2,c=>3,k=>6,h=>0,b=>-4,g=>2,f=>7,i=>6} e7b4030082011e16 e7b4030082011e16 e7b4030082011e16 f1a7c00043001ec8 e7b4030082011e16 e7b4030082011e16 f1a7c00043001ec8 e7b4030082011e16 f1a7c00043001ec8 - {e=>-2,a=>7,d=>0,j=>-4,l=>-2,c=>-4,k=>5,h=>0,b=>0,g=>4,f=>7,i=>4} 07e103000401fc35 07e103000401fc35 07e103000401fc35 e20dc0008200fcb8 07e103000401fc35 07e103000401fc35 e20dc0008200fcb8 07e103000401fc35 e20dc0008200fcb8 - {e=>2,a=>0,d=>6,j=>65,l=>1,c=>-3,k=>6,h=>-3,b=>-2,g=>3,f=>1,i=>6} 70ad0000ab01410e 70ad0000ab01410e 70ad0000ab01410e 1ae44000770041c4 70ad0000ab01410e 70ad0000ab01410e 1ae44000770041c4 70ad0000ab01410e 1ae44000770041c4 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-4,a=>6,m=>1,d=>1,j=>55,l=>-2,c=>0,k=>7,h=>-2,b=>-4,g=>1,f=>0,i=>1} 264200007100373701000000 264200007100373701000000 264200007100373701000000 d0180000388037f820000000 264200007100373701000000 264200007100373701000000 d0180000388037f820000000 264200007100373701000000 d0180000388037f820000000 - {e=>3,a=>1,m=>6,d=>6,j=>-117,l=>-4,c=>-1,k=>5,h=>-4,b=>0,g=>2,f=>6,i=>7} c13d0300e2018b2506000000 c13d0300e2018b2506000000 c13d0300e2018b2506000000 23e7800053808bb0c0000000 c13d0300e2018b2506000000 c13d0300e2018b2506000000 23e7800053808bb0c0000000 c13d0300e2018b2506000000 23e7800053808bb0c0000000 - {e=>2,a=>2,m=>4,d=>7,j=>-36,l=>3,c=>-1,k=>7,h=>3,b=>3,g=>3,f=>5,i=>5} daaf02005b01dc1f04000000 daaf02005b01dc1f04000000 daaf02005b01dc1f04000000 4ff540006e80dcec80000000 daaf02005b01dc1f04000000 daaf02005b01dc1f04000000 4ff540006e80dcec80000000 daaf02005b01dc1f04000000 4ff540006e80dcec80000000 - {e=>1,a=>0,m=>7,d=>6,j=>-99,l=>-1,c=>0,k=>7,h=>-4,b=>1,g=>0,f=>3,i=>1} 089c010060009d3f07000000 089c010060009d3f07000000 089c010060009d3f07000000 0462c00010809dfce0000000 089c010060009d3f07000000 089c010060009d3f07000000 0462c00010809dfce0000000 089c010060009d3f07000000 0462c00010809dfce0000000 - {e=>1,a=>2,m=>1,d=>3,j=>57,l=>-1,c=>0,k=>5,h=>3,b=>-4,g=>4,f=>4,i=>6} 221602009c01393d01000000 221602009c01393d01000000 221602009c01393d01000000 503300008f0039bc20000000 221602009c01393d01000000 221602009c01393d01000000 503300008f0039bc20000000 221602009c01393d01000000 503300008f0039bc20000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>0,n=>177,a=>4,m=>2,d=>0,j=>-5,l=>-2,c=>3,k=>3,h=>-3,b=>0,g=>7,f=>7,i=>3} c4800300ef00fb3302b10000 c4800300ef00fb3302b10000 c4800300ef00fb3302b10000 8181c000f580fb7840b10000 c4800300ef00fb3302b10000 c4800300ef00fb3302b10000 8181c000f580fb7840b10000 c4800300ef00fb3302b10000 8181c000f580fb7840b10000 - {e=>-3,n=>5,a=>7,m=>4,d=>0,j=>90,l=>-1,c=>-1,k=>6,h=>-4,b=>3,g=>6,f=>3,i=>2} dfd10100a6005a3e04050000 dfd10100a6005a3e04050000 dfd10100a6005a3e04050000 ef8ac000d1005adc80050000 dfd10100a6005a3e04050000 dfd10100a6005a3e04050000 ef8ac000d1005adc80050000 dfd10100a6005a3e04050000 ef8ac000d1005adc80050000 - {e=>-2,n=>218,a=>6,m=>2,d=>3,j=>122,l=>-3,c=>0,k=>7,h=>-3,b=>-2,g=>0,f=>1,i=>0} 36e6000028007a2f02da0000 36e6000028007a2f02da0000 36e6000028007a2f02da0000 d83c400014007af440da0000 36e6000028007a2f02da0000 36e6000028007a2f02da0000 d83c400014007af440da0000 36e6000028007a2f02da0000 d83c400014007af440da0000 - {e=>-2,n=>245,a=>5,m=>7,d=>2,j=>-67,l=>-1,c=>3,k=>0,h=>3,b=>-2,g=>3,f=>5,i=>0} f5e402001b00bd3807f50000 f5e402001b00bd3807f50000 f5e402001b00bd3807f50000 b9ad40006c00bd1ce0f50000 f5e402001b00bd3807f50000 f5e402001b00bd3807f50000 b9ad40006c00bd1ce0f50000 f5e402001b00bd3807f50000 b9ad40006c00bd1ce0f50000 - {e=>3,n=>3,a=>5,m=>6,d=>6,j=>-78,l=>3,c=>-1,k=>5,h=>2,b=>2,g=>4,f=>7,i=>5} d5bd03005401b21d06030000 d5bd03005401b21d06030000 d5bd03005401b21d06030000 abe7c0008a80b2acc0030000 d5bd03005401b21d06030000 d5bd03005401b21d06030000 abe7c0008a80b2acc0030000 d5bd03005401b21d06030000 abe7c0008a80b2acc0030000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; }; - {a=>13,b=>7} 0d070000 0d070000 0d070000 0de00000 0d070000 0d070000 0de00000 0d070000 0de00000 - {a=>-33,b=>1} df010000 df010000 df010000 df200000 df010000 df010000 df200000 df010000 df200000 - {a=>-85,b=>1} ab010000 ab010000 ab010000 ab200000 ab010000 ab010000 ab200000 ab010000 ab200000 - {a=>58,b=>4} 3a040000 3a040000 3a040000 3a800000 3a040000 3a040000 3a800000 3a040000 3a800000 - {a=>18,b=>6} 12060000 12060000 12060000 12c00000 12060000 12060000 12c00000 12060000 12c00000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>8,b=>7} 08270000 08270000 08270000 08f00000 08270000 08270000 08f00000 08270000 08f00000 - {c=>2,a=>-98,b=>6} 9e160000 9e160000 9e160000 9ec80000 9e160000 9e160000 9ec80000 9e160000 9ec80000 - {c=>-4,a=>-119,b=>6} 89260000 89260000 89260000 89d00000 89260000 89260000 89d00000 89260000 89d00000 - {c=>3,a=>-114,b=>0} 8e180000 8e180000 8e180000 8e0c0000 8e180000 8e180000 8e0c0000 8e180000 8e0c0000 - {c=>-4,a=>104,b=>7} 68270000 68270000 68270000 68f00000 68270000 68270000 68f00000 68270000 68f00000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>2,a=>90,b=>5,d=>-3} 5a550100 5a550100 5a550100 5aaa8000 5a550100 5a550100 5aaa8000 5a550100 5aaa8000 - {c=>-3,a=>-24,b=>2,d=>-1} e8ea0100 e8ea0100 e8ea0100 e8578000 e8ea0100 e8ea0100 e8578000 e8ea0100 e8578000 - {c=>0,a=>-46,b=>4,d=>-4} d2040100 d2040100 d2040100 d2820000 d2040100 d2040100 d2820000 d2040100 d2820000 - {c=>1,a=>-95,b=>5,d=>-3} a14d0100 a14d0100 a14d0100 a1a68000 a14d0100 a14d0100 a1a68000 a14d0100 a1a68000 - {c=>3,a=>-50,b=>5,d=>-3} ce5d0100 ce5d0100 ce5d0100 ceae8000 ce5d0100 ce5d0100 ceae8000 ce5d0100 ceae8000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>3,a=>-67,b=>0,d=>-1} bdd80500 bdd80500 bdd80500 bd0fa000 bdd80500 bdd80500 bd0fa000 bdd80500 bd0fa000 - {e=>6,c=>0,a=>-85,b=>0,d=>3} abc00c00 abc00c00 abc00c00 ab01e000 abc00c00 abc00c00 ab01e000 abc00c00 ab01e000 - {e=>1,c=>-4,a=>27,b=>3,d=>3} 1be30200 1be30200 1be30200 1b719000 1be30200 1be30200 1b719000 1be30200 1b719000 - {e=>3,c=>1,a=>-53,b=>7,d=>3} cbcf0600 cbcf0600 cbcf0600 cbe5b000 cbcf0600 cbcf0600 cbe5b000 cbcf0600 cbe5b000 - {e=>4,c=>3,a=>-28,b=>2,d=>-4} e41a0900 e41a0900 e41a0900 e44e4000 e41a0900 e41a0900 e44e4000 e41a0900 e44e4000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>-1,a=>54,b=>0,d=>-1,f=>-4} 36f84300 36f84300 36f84300 361f9800 36f84300 36f84300 361f9800 36f84300 361f9800 - {e=>5,c=>-2,a=>43,b=>2,d=>-2,f=>-4} 2bb24b00 2bb24b00 2bb24b00 2b5b5800 2bb24b00 2bb24b00 2b5b5800 2bb24b00 2b5b5800 - {e=>2,c=>-1,a=>57,b=>7,d=>0,f=>-3} 393f5400 393f5400 393f5400 39fc2a00 393f5400 393f5400 39fc2a00 393f5400 39fc2a00 - {e=>2,c=>-4,a=>-86,b=>0,d=>-4,f=>2} aa202500 aa202500 aa202500 aa122400 aa202500 aa202500 aa122400 aa202500 aa122400 - {e=>5,c=>-4,a=>36,b=>6,d=>-2,f=>1} 24a61b00 24a61b00 24a61b00 24d35200 24a61b00 24a61b00 24d35200 24a61b00 24d35200 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>1,c=>-1,a=>-59,g=>1,b=>7,d=>-1,f=>1} c5ff9300 c5ff9300 c5ff9300 c5ff9240 c5ff9300 c5ff9300 c5ff9240 c5ff9300 c5ff9240 - {e=>0,c=>-3,a=>-42,g=>3,b=>3,d=>-1,f=>3} d6ebb101 d6ebb101 d6ebb101 d67786c0 d6ebb101 d6ebb101 d67786c0 d6ebb101 d67786c0 - {e=>1,c=>-3,a=>-91,g=>5,b=>1,d=>1,f=>2} a569a202 a569a202 a569a202 a5349540 a569a202 a569a202 a5349540 a569a202 a5349540 - {e=>3,c=>-2,a=>3,g=>0,b=>1,d=>0,f=>-1} 03317600 03317600 03317600 03383e00 03317600 03317600 03383e00 03317600 03383e00 - {e=>1,c=>-2,a=>-94,g=>1,b=>0,d=>-1,f=>2} a2f0a300 a2f0a300 a2f0a300 a21b9440 a2f0a300 a2f0a300 a21b9440 a2f0a300 a21b9440 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>3,c=>3,a=>-87,g=>4,b=>0,d=>2,f=>2} a9982602 a9982602 a9982602 a90d3500 a9982602 a9982602 a90d3500 a9982602 a90d3500 - {e=>3,c=>2,a=>-100,g=>0,b=>7,d=>-2,f=>-4} 9c974700 9c974700 9c974700 9ceb3800 9c974700 9c974700 9ceb3800 9c974700 9ceb3800 - {e=>4,c=>3,a=>30,g=>4,b=>0,d=>3,f=>-3} 1ed85802 1ed85802 1ed85802 1e0dcb00 1ed85802 1ed85802 1e0dcb00 1ed85802 1e0dcb00 - {e=>3,c=>3,a=>117,g=>7,b=>3,d=>-3,f=>1} 755b9703 755b9703 755b9703 756eb3c0 755b9703 755b9703 756eb3c0 755b9703 756eb3c0 - {e=>4,c=>-2,a=>-117,g=>5,b=>2,d=>-1,f=>0} 8bf28902 8bf28902 8bf28902 8b5bc140 8bf28902 8bf28902 8b5bc140 8bf28902 8b5bc140 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>5,d=>-4,c=>1,h=>7,b=>0,g=>0,f=>-1} 0508770007000000 0508770007000000 0508770007000000 05063e00e0000000 0508770007000000 0508770007000000 05063e00e0000000 0508770007000000 05063e00e0000000 - {e=>5,a=>30,d=>-4,c=>3,h=>3,b=>7,g=>4,f=>-1} 1e1f7b0203000000 1e1f7b0203000000 1e1f7b0203000000 1eee5f0060000000 1e1f7b0203000000 1e1f7b0203000000 1eee5f0060000000 1e1f7b0203000000 1eee5f0060000000 - {e=>7,a=>0,d=>-3,c=>1,h=>0,b=>7,g=>2,f=>-1} 004f7f0100000000 004f7f0100000000 004f7f0100000000 00e6fe8000000000 004f7f0100000000 004f7f0100000000 00e6fe8000000000 004f7f0100000000 00e6fe8000000000 - {e=>0,a=>126,d=>-3,c=>0,h=>0,b=>2,g=>5,f=>-1} 7e42f10200000000 7e42f10200000000 7e42f10200000000 7e428f4000000000 7e42f10200000000 7e42f10200000000 7e428f4000000000 7e42f10200000000 7e428f4000000000 - {e=>0,a=>4,d=>-1,c=>-3,h=>7,b=>2,g=>4,f=>3} 04ea310207000000 04ea310207000000 04ea310207000000 04578700e0000000 04ea310207000000 04ea310207000000 04578700e0000000 04ea310207000000 04578700e0000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>55,d=>-4,c=>-4,h=>0,b=>6,g=>4,f=>2,i=>-3} 3726250228000000 3726250228000000 3726250228000000 37d2250014000000 3726250228000000 3726250228000000 37d2250014000000 3726250228000000 37d2250014000000 - {e=>5,a=>43,d=>1,c=>1,h=>1,b=>3,g=>7,f=>-3,i=>1} 2b4bda0309000000 2b4bda0309000000 2b4bda0309000000 2b64dbc024000000 2b4bda0309000000 2b4bda0309000000 2b64dbc024000000 2b4bda0309000000 2b64dbc024000000 - {e=>2,a=>-68,d=>-4,c=>-1,h=>6,b=>2,g=>5,f=>-3,i=>-3} bc3ad5022e000000 bc3ad5022e000000 bc3ad5022e000000 bc5e2b40d4000000 bc3ad5022e000000 bc3ad5022e000000 bc5e2b40d4000000 bc3ad5022e000000 bc5e2b40d4000000 - {e=>3,a=>-9,d=>2,c=>-4,h=>6,b=>3,g=>7,f=>-3,i=>1} f7a3d6030e000000 f7a3d6030e000000 f7a3d6030e000000 f7713bc0c4000000 f7a3d6030e000000 f7a3d6030e000000 f7713bc0c4000000 f7a3d6030e000000 f7713bc0c4000000 - {e=>6,a=>-80,d=>1,c=>-2,h=>3,b=>1,g=>5,f=>3,i=>-3} b071bc022b000000 b071bc022b000000 b071bc022b000000 b038e74074000000 b071bc022b000000 b071bc022b000000 b038e74074000000 b071bc022b000000 b038e74074000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>5,a=>114,d=>-4,j=>4,c=>3,h=>6,b=>2,g=>0,f=>-4,i=>2} 721a4b0016010000 721a4b0016010000 721a4b0016010000 724e5800ca000000 721a4b0016010000 721a4b0016010000 724e5800ca000000 721a4b0016010000 724e5800ca000000 - {e=>3,a=>-15,d=>-2,j=>6,c=>-1,h=>1,b=>0,g=>2,f=>2,i=>0} f1b8270181010000 f1b8270181010000 f1b8270181010000 f11f348023000000 f1b8270181010000 f1b8270181010000 f11f348023000000 f1b8270181010000 f11f348023000000 - {e=>6,a=>-68,d=>-2,j=>5,c=>-3,h=>1,b=>4,g=>0,f=>-1,i=>2} bcac7d0051010000 bcac7d0051010000 bcac7d0051010000 bc976e002a800000 bcac7d0051010000 bcac7d0051010000 bc976e002a800000 bcac7d0051010000 bc976e002a800000 - {e=>4,a=>-102,d=>0,j=>1,c=>1,h=>4,b=>1,g=>0,f=>1,i=>-3} 9a0918006c000000 9a0918006c000000 9a0918006c000000 9a24420094800000 9a0918006c000000 9a0918006c000000 9a24420094800000 9a0918006c000000 9a24420094800000 - {e=>7,a=>-118,d=>-4,j=>3,c=>-2,h=>3,b=>3,g=>4,f=>1,i=>-1} 8a331f02fb000000 8a331f02fb000000 8a331f02fb000000 8a7a73007d800000 8a331f02fb000000 8a331f02fb000000 8a7a73007d800000 8a331f02fb000000 8a7a73007d800000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>4,a=>36,d=>-2,j=>7,c=>1,k=>-85,h=>7,b=>5,g=>7,f=>-4,i=>-3} 248dc903ef01ab00 248dc903ef01ab00 248dc903ef01ab00 24a749c0f780ab00 248dc903ef01ab00 248dc903ef01ab00 24a749c0f780ab00 248dc903ef01ab00 24a749c0f780ab00 - {e=>2,a=>57,d=>2,j=>6,c=>0,k=>-127,h=>0,b=>5,g=>5,f=>1,i=>-1} 39859402b8018100 39859402b8018100 39859402b8018100 39a123401f008100 39859402b8018100 39859402b8018100 39a123401f008100 39859402b8018100 39a123401f008100 - {e=>7,a=>-85,d=>1,j=>0,c=>-2,k=>-9,h=>1,b=>1,g=>4,f=>0,i=>-2} ab710e023100f700 ab710e023100f700 ab710e023100f700 ab38f1003800f700 ab710e023100f700 ab710e023100f700 ab38f1003800f700 ab710e023100f700 ab38f1003800f700 - {e=>6,a=>12,d=>3,j=>2,c=>-1,k=>-109,h=>0,b=>1,g=>1,f=>3,i=>-2} 0cf9bc00b0009300 0cf9bc00b0009300 0cf9bc00b0009300 0c3de64019009300 0cf9bc00b0009300 0cf9bc00b0009300 0c3de64019009300 0cf9bc00b0009300 0c3de64019009300 - {e=>3,a=>-93,d=>-3,j=>3,c=>0,k=>38,h=>2,b=>4,g=>2,f=>-3,i=>-3} a3445701ea002600 a3445701ea002600 a3445701ea002600 a382ba8055802600 a3445701ea002600 a3445701ea002600 a382ba8055802600 a3445701ea002600 a382ba8055802600 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>-121,d=>0,j=>7,l=>7,c=>-2,k=>104,h=>5,b=>5,g=>2,f=>-1,i=>-1} 87357201fd016807 87357201fd016807 87357201fd016807 87b81e80bf8068e0 87357201fd016807 87357201fd016807 87b81e80bf8068e0 87357201fd016807 87b81e80bf8068e0 - {e=>4,a=>-69,d=>0,j=>7,l=>3,c=>3,k=>116,h=>2,b=>5,g=>0,f=>2,i=>3} bb1d2800da017403 bb1d2800da017403 bb1d2800da017403 bbac44004f807460 bb1d2800da017403 bb1d2800da017403 bbac44004f807460 bb1d2800da017403 bbac44004f807460 - {e=>7,a=>-88,d=>3,j=>2,l=>6,c=>-2,k=>94,h=>0,b=>1,g=>0,f=>-2,i=>2} a8f16e0090005e06 a8f16e0090005e06 a8f16e0090005e06 a839fc0009005ec0 a8f16e0090005e06 a8f16e0090005e06 a839fc0009005ec0 a8f16e0090005e06 a839fc0009005ec0 - {e=>7,a=>41,d=>1,j=>2,l=>2,c=>-2,k=>-6,h=>1,b=>4,g=>1,f=>-3,i=>2} 2974de009100fa02 2974de009100fa02 2974de009100fa02 2998fa402900fa40 2974de009100fa02 2974de009100fa02 2998fa402900fa40 2974de009100fa02 2998fa402900fa40 - {e=>1,a=>-123,d=>-2,j=>3,l=>7,c=>3,k=>82,h=>1,b=>6,g=>6,f=>0,i=>-3} 859e0303e9005207 859e0303e9005207 859e0303e9005207 85cf1180358052e0 859e0303e9005207 859e0303e9005207 85cf1180358052e0 859e0303e9005207 85cf1180358052e0 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-121,m=>2,d=>-2,j=>6,l=>3,c=>0,k=>-106,h=>5,b=>7,g=>4,f=>3,i=>2} 8787390295019613 8787390295019613 8787390295019613 87e34700ab009668 8787390295019613 8787390295019613 87e34700ab009668 8787390295019613 87e34700ab009668 - {e=>7,a=>-56,m=>1,d=>-1,j=>2,l=>7,c=>3,k=>102,h=>6,b=>0,g=>6,f=>-4,i=>-3} c8d84f03ae00660f c8d84f03ae00660f c8d84f03ae00660f c80ff980d50066e4 c8d84f03ae00660f c8d84f03ae00660f c80ff980d50066e4 c8d84f03ae00660f c80ff980d50066e4 - {e=>3,a=>-72,m=>-4,d=>-1,j=>6,l=>2,c=>-1,k=>-50,h=>4,b=>2,g=>1,f=>1,i=>-3} b8fa9700ac01ce22 b8fa9700ac01ce22 b8fa9700ac01ce22 b85fb2409700ce50 b8fa9700ac01ce22 b8fa9700ac01ce22 b85fb2409700ce50 b8fa9700ac01ce22 b85fb2409700ce50 - {e=>5,a=>84,m=>-4,d=>-2,j=>4,l=>0,c=>1,k=>-79,h=>5,b=>6,g=>1,f=>3,i=>1} 548ebb000d01b120 548ebb000d01b120 548ebb000d01b120 54c75640a600b110 548ebb000d01b120 548ebb000d01b120 54c75640a600b110 548ebb000d01b120 54c75640a600b110 - {e=>6,a=>-18,m=>-2,d=>-4,j=>7,l=>4,c=>-1,k=>-2,h=>1,b=>1,g=>4,f=>3,i=>-3} ee393d02e901fe34 ee393d02e901fe34 ee393d02e901fe34 ee3e67003780fe98 ee393d02e901fe34 ee393d02e901fe34 ee3e67003780fe98 ee393d02e901fe34 ee3e67003780fe98 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>6,a=>-112,m=>3,d=>-1,j=>2,l=>0,c=>-3,k=>39,h=>4,b=>6,g=>4,f=>3,i=>2} 90ee3b029400271806000000 90ee3b029400271806000000 90ee3b029400271806000000 90d7d7008900270cc0000000 90ee3b029400271806000000 90ee3b029400271806000000 90d7d7008900270cc0000000 90ee3b029400271806000000 90d7d7008900270cc0000000 - {e=>1,n=>2,a=>93,m=>-2,d=>2,j=>5,l=>5,c=>2,k=>-95,h=>1,b=>6,g=>0,f=>-1,i=>-3} 5d9672006901a13502000000 5d9672006901a13502000000 5d9672006901a13502000000 5dc91e003680a1b840000000 5d9672006901a13502000000 5d9672006901a13502000000 5dc91e003680a1b840000000 5d9672006901a13502000000 5dc91e003680a1b840000000 - {e=>2,n=>1,a=>55,m=>2,d=>-2,j=>0,l=>0,c=>-2,k=>-97,h=>1,b=>7,g=>1,f=>3,i=>3} 37b7b50019009f1001000000 37b7b50019009f1001000000 37b7b50019009f1001000000 37fb26402c009f0820000000 37b7b50019009f1001000000 37b7b50019009f1001000000 37fb26402c009f0820000000 37b7b50019009f1001000000 37fb26402c009f0820000000 - {e=>6,n=>2,a=>2,m=>2,d=>0,j=>7,l=>5,c=>-1,k=>-32,h=>7,b=>0,g=>5,f=>-2,i=>2} 0238ec02d701e01502000000 0238ec02d701e01502000000 0238ec02d701e01502000000 021c6d40eb80e0a840000000 0238ec02d701e01502000000 0238ec02d701e01502000000 021c6d40eb80e0a840000000 0238ec02d701e01502000000 021c6d40eb80e0a840000000 - {e=>1,n=>2,a=>-65,m=>0,d=>-3,j=>5,l=>6,c=>-1,k=>10,h=>2,b=>2,g=>3,f=>-4,i=>2} bf7ac30152010a0602000000 bf7ac30152010a0602000000 bf7ac30152010a0602000000 bf5e98c04a800ac040000000 bf7ac30152010a0602000000 bf7ac30152010a0602000000 bf5e98c04a800ac040000000 bf7ac30152010a0602000000 bf5e98c04a800ac040000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>4,n=>4,a=>96,m=>-1,d=>-4,j=>2,l=>1,c=>-2,k=>-106,h=>1,b=>4,g=>2,f=>-2,o=>172,i=>3} 603469019900963904ac0000 603469019900963904ac0000 603469019900963904ac0000 609a4c802d00963c80ac0000 603469019900963904ac0000 603469019900963904ac0000 609a4c802d00963c80ac0000 603469019900963904ac0000 609a4c802d00963c80ac0000 - {e=>3,n=>3,a=>-103,m=>-2,d=>-1,j=>6,l=>2,c=>-3,k=>-23,h=>7,b=>7,g=>4,f=>-3,o=>204,i=>0} 99ef57028701e93203cc0000 99ef57028701e93203cc0000 99ef57028701e93203cc0000 99f7bb00e300e95860cc0000 99ef57028701e93203cc0000 99ef57028701e93203cc0000 99f7bb00e300e95860cc0000 99ef57028701e93203cc0000 99f7bb00e300e95860cc0000 - {e=>7,n=>2,a=>-104,m=>3,d=>2,j=>7,l=>5,c=>2,k=>49,h=>2,b=>0,g=>0,f=>3,o=>143,i=>0} 98903e00c201311d028f0000 98903e00c201311d028f0000 98903e00c201311d028f0000 98097600438031ac408f0000 98903e00c201311d028f0000 98903e00c201311d028f0000 98097600438031ac408f0000 98903e00c201311d028f0000 98097600438031ac408f0000 - {e=>7,n=>0,a=>-12,m=>1,d=>2,j=>3,l=>2,c=>3,k=>73,h=>6,b=>0,g=>3,f=>-2,o=>165,i=>-3} f498ee01ee00490a00a50000 f498ee01ee00490a00a50000 f498ee01ee00490a00a50000 f40d7cc0d580494400a50000 f498ee01ee00490a00a50000 f498ee01ee00490a00a50000 f40d7cc0d580494400a50000 f498ee01ee00490a00a50000 f40d7cc0d580494400a50000 - {e=>2,n=>6,a=>-124,m=>-3,d=>-3,j=>1,l=>3,c=>-4,k=>109,h=>1,b=>5,g=>0,f=>-2,o=>55,i=>-3} 8465650069006d2b06370000 8465650069006d2b06370000 8465650069006d2b06370000 84b2ac0034806d74c0370000 8465650069006d2b06370000 8465650069006d2b06370000 84b2ac0034806d74c0370000 8465650069006d2b06370000 84b2ac0034806d74c0370000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; }; - {a=>92,b=>1} 5c000100 5c000100 5c000100 005c2000 5c000100 5c000100 005c2000 5c000100 005c2000 - {a=>51,b=>4} 33000400 33000400 33000400 00338000 33000400 33000400 00338000 33000400 00338000 - {a=>-66,b=>3} beff0300 beff0300 beff0300 ffbe6000 beff0300 beff0300 ffbe6000 beff0300 ffbe6000 - {a=>-113,b=>2} 8fff0200 8fff0200 8fff0200 ff8f4000 8fff0200 8fff0200 ff8f4000 8fff0200 ff8f4000 - {a=>10,b=>0} 0a000000 0a000000 0a000000 000a0000 0a000000 0a000000 000a0000 0a000000 000a0000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-103,b=>5} 99ff0500 99ff0500 99ff0500 ff99a000 99ff0500 99ff0500 ff99a000 99ff0500 ff99a000 - {c=>0,a=>-75,b=>2} b5ff0200 b5ff0200 b5ff0200 ffb54000 b5ff0200 b5ff0200 ffb54000 b5ff0200 ffb54000 - {c=>-4,a=>-81,b=>3} afff2300 afff2300 afff2300 ffaf7000 afff2300 afff2300 ffaf7000 afff2300 ffaf7000 - {c=>-2,a=>14,b=>7} 0e003700 0e003700 0e003700 000ef800 0e003700 0e003700 000ef800 0e003700 000ef800 - {c=>0,a=>94,b=>1} 5e000100 5e000100 5e000100 005e2000 5e000100 5e000100 005e2000 5e000100 005e2000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-1,a=>-100,b=>5,d=>1} 9cff7d00 9cff7d00 9cff7d00 ff9cbc80 9cff7d00 9cff7d00 ff9cbc80 9cff7d00 ff9cbc80 - {c=>3,a=>107,b=>2,d=>-4} 6b001a01 6b001a01 6b001a01 006b4e00 6b001a01 6b001a01 006b4e00 6b001a01 006b4e00 - {c=>1,a=>-24,b=>1,d=>1} e8ff4900 e8ff4900 e8ff4900 ffe82480 e8ff4900 e8ff4900 ffe82480 e8ff4900 ffe82480 - {c=>-2,a=>-62,b=>0,d=>2} c2ffb000 c2ffb000 c2ffb000 ffc21900 c2ffb000 c2ffb000 ffc21900 c2ffb000 ffc21900 - {c=>0,a=>-40,b=>6,d=>-1} d8ffc601 d8ffc601 d8ffc601 ffd8c380 d8ffc601 d8ffc601 ffd8c380 d8ffc601 ffd8c380 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-4,a=>-8,b=>5,d=>3} f8ffe508 f8ffe508 f8ffe508 fff8b1c0 f8ffe508 f8ffe508 fff8b1c0 f8ffe508 fff8b1c0 - {e=>4,c=>-3,a=>-46,b=>4,d=>2} d2ffac08 d2ffac08 d2ffac08 ffd29540 d2ffac08 d2ffac08 ffd29540 d2ffac08 ffd29540 - {e=>2,c=>0,a=>-15,b=>0,d=>-2} f1ff8005 f1ff8005 f1ff8005 fff10320 f1ff8005 f1ff8005 fff10320 f1ff8005 fff10320 - {e=>6,c=>3,a=>97,b=>1,d=>-1} 6100d90d 6100d90d 6100d90d 00612fe0 6100d90d 6100d90d 00612fe0 6100d90d 00612fe0 - {e=>5,c=>1,a=>86,b=>2,d=>-1} 5600ca0b 5600ca0b 5600ca0b 005647d0 5600ca0b 5600ca0b 005647d0 5600ca0b 005647d0 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>-4,a=>-30,b=>0,d=>2,f=>-4} e2ffa044 e2ffa044 e2ffa044 ffe21128 e2ffa044 e2ffa044 ffe21128 e2ffa044 ffe21128 - {e=>3,c=>-2,a=>58,b=>7,d=>3,f=>-2} 3a00f766 3a00f766 3a00f766 003af9bc 3a00f766 3a00f766 003af9bc 3a00f766 003af9bc - {e=>3,c=>2,a=>-93,b=>0,d=>1,f=>2} a3ff5026 a3ff5026 a3ff5026 ffa308b4 a3ff5026 a3ff5026 ffa308b4 a3ff5026 ffa308b4 - {e=>2,c=>3,a=>17,b=>1,d=>-3,f=>2} 11005925 11005925 11005925 00112ea4 11005925 11005925 00112ea4 11005925 00112ea4 - {e=>3,c=>2,a=>-36,b=>3,d=>-1,f=>1} dcffd317 dcffd317 dcffd317 ffdc6bb2 dcffd317 dcffd317 ffdc6bb2 dcffd317 ffdc6bb2 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>6,c=>3,a=>-5,g=>1,b=>4,d=>-4,f=>-4} fbff1c4d01000000 fbff1c4d01000000 fbff1c4d01000000 fffb8e6820000000 fbff1c4d01000000 fbff1c4d01000000 fffb8e6820000000 fbff1c4d01000000 fffb8e6820000000 - {e=>1,c=>0,a=>5,g=>5,b=>6,d=>-1,f=>-3} 0500c65305000000 0500c65305000000 0500c65305000000 0005c39aa0000000 0500c65305000000 0500c65305000000 0005c39aa0000000 0500c65305000000 0005c39aa0000000 - {e=>5,c=>-3,a=>94,g=>6,b=>0,d=>-1,f=>2} 5e00e82b06000000 5e00e82b06000000 5e00e82b06000000 005e17d4c0000000 5e00e82b06000000 5e00e82b06000000 005e17d4c0000000 5e00e82b06000000 005e17d4c0000000 - {e=>5,c=>-3,a=>-86,g=>4,b=>3,d=>2,f=>2} aaffab2a04000000 aaffab2a04000000 aaffab2a04000000 ffaa755480000000 aaffab2a04000000 aaffab2a04000000 ffaa755480000000 aaffab2a04000000 ffaa755480000000 - {e=>6,c=>0,a=>-114,g=>6,b=>6,d=>-3,f=>-4} 8eff464d06000000 8eff464d06000000 8eff464d06000000 ff8ec2e8c0000000 8eff464d06000000 8eff464d06000000 ff8ec2e8c0000000 8eff464d06000000 ff8ec2e8c0000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>7,c=>-1,a=>-26,g=>4,b=>2,d=>-1,f=>-2} e6fffa6f04000000 e6fffa6f04000000 e6fffa6f04000000 ffe65ffc80000000 e6fffa6f04000000 e6fffa6f04000000 ffe65ffc80000000 e6fffa6f04000000 ffe65ffc80000000 - {e=>3,c=>-3,a=>-39,g=>5,b=>5,d=>2,f=>3} d9ffad3605000000 d9ffad3605000000 d9ffad3605000000 ffd9b536a0000000 d9ffad3605000000 d9ffad3605000000 ffd9b536a0000000 d9ffad3605000000 ffd9b536a0000000 - {e=>2,c=>-1,a=>-108,g=>4,b=>7,d=>1,f=>0} 94ff7f0404000000 94ff7f0404000000 94ff7f0404000000 ff94fca080000000 94ff7f0404000000 94ff7f0404000000 ff94fca080000000 94ff7f0404000000 ff94fca080000000 - {e=>1,c=>3,a=>36,g=>7,b=>4,d=>1,f=>-4} 24005c4207000000 24005c4207000000 24005c4207000000 00248c98e0000000 24005c4207000000 24005c4207000000 00248c98e0000000 24005c4207000000 00248c98e0000000 - {e=>0,c=>1,a=>-70,g=>2,b=>0,d=>-3,f=>0} baff480102000000 baff480102000000 baff480102000000 ffba068040000000 baff480102000000 baff480102000000 ffba068040000000 baff480102000000 ffba068040000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>-73,d=>3,c=>-4,h=>3,b=>3,g=>5,f=>-2} b7ffe3620500000003000000 b7ffe3620500000003000000 b7ffe3620500000003000000 ffb7719ca000000060000000 b7ffe3620500000003000000 b7ffe3620500000003000000 ffb7719ca000000060000000 b7ffe3620500000003000000 ffb7719ca000000060000000 - {e=>2,a=>106,d=>3,c=>-1,h=>4,b=>0,g=>6,f=>-2} 6a00f8640600000004000000 6a00f8640600000004000000 6a00f8640600000004000000 006a1dacc000000080000000 6a00f8640600000004000000 6a00f8640600000004000000 006a1dacc000000080000000 6a00f8640600000004000000 006a1dacc000000080000000 - {e=>2,a=>-78,d=>3,c=>3,h=>6,b=>0,g=>0,f=>-1} b2ffd8740000000006000000 b2ffd8740000000006000000 b2ffd8740000000006000000 ffb20dae00000000c0000000 b2ffd8740000000006000000 b2ffd8740000000006000000 ffb20dae00000000c0000000 b2ffd8740000000006000000 ffb20dae00000000c0000000 - {e=>4,a=>-84,d=>-2,c=>3,h=>4,b=>3,g=>5,f=>-3} acff9b590500000004000000 acff9b590500000004000000 acff9b590500000004000000 ffac6f4aa000000080000000 acff9b590500000004000000 acff9b590500000004000000 ffac6f4aa000000080000000 acff9b590500000004000000 ffac6f4aa000000080000000 - {e=>7,a=>-108,d=>1,c=>-4,h=>2,b=>4,g=>5,f=>-4} 94ff644e0500000002000000 94ff644e0500000002000000 94ff644e0500000002000000 ff9490f8a000000040000000 94ff644e0500000002000000 94ff644e0500000002000000 ff9490f8a000000040000000 94ff644e0500000002000000 ff9490f8a000000040000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>113,d=>3,c=>2,h=>4,b=>1,g=>6,f=>2,i=>3} 7100d128060000001c000000 7100d128060000001c000000 7100d128060000001c000000 007129c4c00000008c000000 7100d128060000001c000000 7100d128060000001c000000 007129c4c00000008c000000 7100d128060000001c000000 007129c4c00000008c000000 - {e=>7,a=>83,d=>-1,c=>3,h=>0,b=>0,g=>4,f=>-3,i=>-2} 5300d85f0400000030000000 5300d85f0400000030000000 5300d85f0400000030000000 00530ffa8000000018000000 5300d85f0400000030000000 5300d85f0400000030000000 00530ffa8000000018000000 5300d85f0400000030000000 00530ffa8000000018000000 - {e=>2,a=>-34,d=>3,c=>-4,h=>4,b=>4,g=>0,f=>1,i=>-3} deffe414000000002c000000 deffe414000000002c000000 deffe414000000002c000000 ffde91a20000000094000000 deffe414000000002c000000 deffe414000000002c000000 ffde91a20000000094000000 deffe414000000002c000000 ffde91a20000000094000000 - {e=>1,a=>87,d=>1,c=>0,h=>1,b=>7,g=>0,f=>1,i=>-1} 570047120000000039000000 570047120000000039000000 570047120000000039000000 0057e092000000003c000000 570047120000000039000000 570047120000000039000000 0057e092000000003c000000 570047120000000039000000 0057e092000000003c000000 - {e=>1,a=>-63,d=>3,c=>-1,h=>2,b=>1,g=>6,f=>1,i=>-3} c1fff912060000002a000000 c1fff912060000002a000000 c1fff912060000002a000000 ffc13d92c000000054000000 c1fff912060000002a000000 c1fff912060000002a000000 ffc13d92c000000054000000 c1fff912060000002a000000 ffc13d92c000000054000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-8,d=>3,j=>1,c=>-3,h=>0,b=>1,g=>7,f=>3,i=>2} f8ffe9300700000050000000 f8ffe9300700000050000000 f8ffe9300700000050000000 fff83586e000000008800000 f8ffe9300700000050000000 f8ffe9300700000050000000 fff83586e000000008800000 f8ffe9300700000050000000 fff83586e000000008800000 - {e=>1,a=>-18,d=>-3,j=>7,c=>-4,h=>4,b=>2,g=>0,f=>3,i=>-2} eeff623300000000f4010000 eeff623300000000f4010000 eeff623300000000f4010000 ffee5296000000009b800000 eeff623300000000f4010000 eeff623300000000f4010000 ffee5296000000009b800000 eeff623300000000f4010000 ffee5296000000009b800000 - {e=>7,a=>-19,d=>0,j=>4,c=>2,h=>1,b=>3,g=>3,f=>-4,i=>3} edff134e0300000019010000 edff134e0300000019010000 edff134e0300000019010000 ffed6878600000002e000000 edff134e0300000019010000 edff134e0300000019010000 ffed6878600000002e000000 edff134e0300000019010000 ffed6878600000002e000000 - {e=>4,a=>43,d=>-3,j=>6,c=>-4,h=>4,b=>0,g=>5,f=>3,i=>-3} 2b00603905000000ac010000 2b00603905000000ac010000 2b00603905000000ac010000 002b12c6a000000097000000 2b00603905000000ac010000 2b00603905000000ac010000 002b12c6a000000097000000 2b00603905000000ac010000 002b12c6a000000097000000 - {e=>3,a=>-3,d=>0,j=>5,c=>1,h=>7,b=>6,g=>0,f=>2,i=>1} fdff0e26000000004f010000 fdff0e26000000004f010000 fdff0e26000000004f010000 fffdc43400000000e6800000 fdff0e26000000004f010000 fdff0e26000000004f010000 fffdc43400000000e6800000 fdff0e26000000004f010000 fffdc43400000000e6800000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>1,a=>29,d=>-1,j=>7,c=>-3,k=>-108,h=>1,b=>7,g=>6,f=>2,i=>-1} 1d00ef2306000000f9019400 1d00ef2306000000f9019400 1d00ef2306000000f9019400 001df794c00000003f809400 1d00ef2306000000f9019400 1d00ef2306000000f9019400 001df794c00000003f809400 1d00ef2306000000f9019400 001df794c00000003f809400 - {e=>3,a=>48,d=>1,j=>5,c=>1,k=>-74,h=>0,b=>5,g=>7,f=>-2,i=>-2} 30004d66070000007001b600 30004d66070000007001b600 30004d66070000007001b600 0030a4bce00000001a80b600 30004d66070000007001b600 30004d66070000007001b600 0030a4bce00000001a80b600 30004d66070000007001b600 0030a4bce00000001a80b600 - {e=>7,a=>-122,d=>2,j=>0,c=>-3,k=>14,h=>2,b=>1,g=>4,f=>-4,i=>0} 86ffa94e0400000002000e00 86ffa94e0400000002000e00 86ffa94e0400000002000e00 ff8635788000000040000e00 86ffa94e0400000002000e00 86ffa94e0400000002000e00 ff8635788000000040000e00 86ffa94e0400000002000e00 ff8635788000000040000e00 - {e=>5,a=>-32,d=>-4,j=>2,c=>3,k=>-91,h=>7,b=>0,g=>3,f=>0,i=>2} e0ff180b030000009700a500 e0ff180b030000009700a500 e0ff180b030000009700a500 ffe00e5060000000e900a500 e0ff180b030000009700a500 e0ff180b030000009700a500 ffe00e5060000000e900a500 e0ff180b030000009700a500 ffe00e5060000000e900a500 - {e=>4,a=>-6,d=>2,j=>0,c=>-4,k=>-31,h=>6,b=>7,g=>4,f=>1,i=>0} faffa718040000000600e100 faffa718040000000600e100 faffa718040000000600e100 fffaf14280000000c000e100 faffa718040000000600e100 faffa718040000000600e100 fffaf14280000000c000e100 faffa718040000000600e100 fffaf14280000000c000e100 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>100,d=>-3,j=>2,l=>1,c=>-3,k=>17,h=>3,b=>6,g=>3,f=>3,i=>3} 64006e33030000009b001101 64006e33030000009b001101 64006e33030000009b001101 0064d696600000006d001120 64006e33030000009b001101 64006e33030000009b001101 0064d696600000006d001120 64006e33030000009b001101 0064d696600000006d001120 - {e=>3,a=>46,d=>-4,j=>5,l=>3,c=>1,k=>-95,h=>7,b=>4,g=>7,f=>0,i=>1} 2e000c07070000004f01a103 2e000c07070000004f01a103 2e000c07070000004f01a103 002e8630e0000000e680a160 2e000c07070000004f01a103 2e000c07070000004f01a103 002e8630e0000000e680a160 2e000c07070000004f01a103 002e8630e0000000e680a160 - {e=>3,a=>-72,d=>0,j=>6,l=>7,c=>-2,k=>41,h=>2,b=>2,g=>2,f=>2,i=>-3} b8ff322602000000aa012907 b8ff322602000000aa012907 b8ff322602000000aa012907 ffb8583440000000570029e0 b8ff322602000000aa012907 b8ff322602000000aa012907 ffb8583440000000570029e0 b8ff322602000000aa012907 ffb8583440000000570029e0 - {e=>5,a=>84,d=>-1,j=>6,l=>5,c=>2,k=>95,h=>3,b=>4,g=>4,f=>2,i=>-4} 5400d42b04000000a3015f05 5400d42b04000000a3015f05 5400d42b04000000a3015f05 00548bd48000000073005fa0 5400d42b04000000a3015f05 5400d42b04000000a3015f05 00548bd48000000073005fa0 5400d42b04000000a3015f05 00548bd48000000073005fa0 - {e=>1,a=>13,d=>-2,j=>3,l=>0,c=>-3,k=>-14,h=>2,b=>5,g=>0,f=>1,i=>-4} 0d00ad1300000000e200f200 0d00ad1300000000e200f200 0d00ad1300000000e200f200 000db712000000005180f200 0d00ad1300000000e200f200 0d00ad1300000000e200f200 000db712000000005180f200 0d00ad1300000000e200f200 000db712000000005180f200 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>-88,m=>2,d=>0,j=>2,l=>5,c=>0,k=>96,h=>5,b=>0,g=>7,f=>2,i=>3} a8ff002e070000009d006015 a8ff002e070000009d006015 a8ff002e070000009d006015 ffa80074e0000000ad0060a8 a8ff002e070000009d006015 a8ff002e070000009d006015 ffa80074e0000000ad0060a8 a8ff002e070000009d006015 ffa80074e0000000ad0060a8 - {e=>2,a=>-64,m=>1,d=>-2,j=>2,l=>0,c=>0,k=>83,h=>6,b=>7,g=>5,f=>-3,i=>1} c0ff8755050000008e005308 c0ff8755050000008e005308 c0ff8755050000008e005308 ffc0e32aa0000000c5005304 c0ff8755050000008e005308 c0ff8755050000008e005308 ffc0e32aa0000000c5005304 c0ff8755050000008e005308 ffc0e32aa0000000c5005304 - {e=>1,a=>50,m=>3,d=>0,j=>6,l=>6,c=>-4,k=>20,h=>4,b=>1,g=>7,f=>0,i=>-2} 3200210207000000b401141e 3200210207000000b401141e 3200210207000000b401141e 00323010e00000009b0014cc 3200210207000000b401141e 3200210207000000b401141e 00323010e00000009b0014cc 3200210207000000b401141e 00323010e00000009b0014cc - {e=>3,a=>-2,m=>1,d=>-1,j=>4,l=>0,c=>-1,k=>106,h=>4,b=>2,g=>6,f=>-3,i=>0} fefffa570600000004016a08 fefffa570600000004016a08 fefffa570600000004016a08 fffe5fbac000000082006a04 fefffa570600000004016a08 fefffa570600000004016a08 fffe5fbac000000082006a04 fefffa570600000004016a08 fffe5fbac000000082006a04 - {e=>3,a=>126,m=>2,d=>-4,j=>7,l=>2,c=>-4,k=>-75,h=>0,b=>2,g=>7,f=>-3,i=>-2} 7e00225707000000f001b512 7e00225707000000f001b512 7e00225707000000f001b512 007e523ae00000001b80b548 7e00225707000000f001b512 7e00225707000000f001b512 007e523ae00000001b80b548 7e00225707000000f001b512 007e523ae00000001b80b548 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>0,n=>3,a=>114,m=>2,d=>1,j=>4,l=>2,c=>0,k=>-114,h=>1,b=>5,g=>1,f=>1,i=>2} 720045100100000011018e1203000000 720045100100000011018e1203000000 720045100100000011018e1203000000 0072a082200000002a008e4860000000 720045100100000011018e1203000000 720045100100000011018e1203000000 0072a082200000002a008e4860000000 720045100100000011018e1203000000 0072a082200000002a008e4860000000 - {e=>0,n=>2,a=>11,m=>1,d=>-2,j=>4,l=>7,c=>-4,k=>-117,h=>6,b=>1,g=>5,f=>1,i=>3} 0b00a111050000001e018b0f02000000 0b00a111050000001e018b0f02000000 0b00a111050000001e018b0f02000000 000b3302a0000000ce008be440000000 0b00a111050000001e018b0f02000000 0b00a111050000001e018b0f02000000 000b3302a0000000ce008be440000000 0b00a111050000001e018b0f02000000 000b3302a0000000ce008be440000000 - {e=>5,n=>4,a=>8,m=>0,d=>2,j=>7,l=>3,c=>3,k=>71,h=>7,b=>2,g=>4,f=>-4,i=>2} 08009a4a04000000d701470304000000 08009a4a04000000d701470304000000 08009a4a04000000d701470304000000 00084d5880000000eb80476080000000 08009a4a04000000d701470304000000 08009a4a04000000d701470304000000 00084d5880000000eb80476080000000 08009a4a04000000d701470304000000 00084d5880000000eb80476080000000 - {e=>4,n=>5,a=>25,m=>1,d=>2,j=>3,l=>7,c=>-1,k=>-69,h=>4,b=>5,g=>6,f=>1,i=>-1} 1900bd1806000000fc00bb0f05000000 1900bd1806000000fc00bb0f05000000 1900bd1806000000fc00bb0f05000000 0019bd42c00000009d80bbe4a0000000 1900bd1806000000fc00bb0f05000000 1900bd1806000000fc00bb0f05000000 0019bd42c00000009d80bbe4a0000000 1900bd1806000000fc00bb0f05000000 0019bd42c00000009d80bbe4a0000000 - {e=>1,n=>3,a=>71,m=>3,d=>-1,j=>0,l=>0,c=>-2,k=>28,h=>1,b=>7,g=>3,f=>0,i=>1} 4700f7030300000009001c1803000000 4700f7030300000009001c1803000000 4700f7030300000009001c1803000000 0047fb906000000024001c0c60000000 4700f7030300000009001c1803000000 4700f7030300000009001c1803000000 0047fb906000000024001c0c60000000 4700f7030300000009001c1803000000 0047fb906000000024001c0c60000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>2,a=>-53,m=>-1,d=>2,j=>2,l=>6,c=>-3,k=>-55,h=>7,b=>3,g=>6,f=>3,o=>97,i=>-4} cbffab3406000000a700c93e02610000 cbffab3406000000a700c93e02610000 cbffab3406000000a700c93e02610000 ffcb7526c0000000f100c9dc40610000 cbffab3406000000a700c93e02610000 cbffab3406000000a700c93e02610000 ffcb7526c0000000f100c9dc40610000 cbffab3406000000a700c93e02610000 ffcb7526c0000000f100c9dc40610000 - {e=>0,n=>6,a=>-59,m=>1,d=>0,j=>6,l=>4,c=>0,k=>75,h=>2,b=>6,g=>7,f=>3,o=>144,i=>2} c5ff06300700000092014b0c06900000 c5ff06300700000092014b0c06900000 c5ff06300700000092014b0c06900000 ffc5c006e00000004b004b84c0900000 c5ff06300700000092014b0c06900000 c5ff06300700000092014b0c06900000 ffc5c006e00000004b004b84c0900000 c5ff06300700000092014b0c06900000 ffc5c006e00000004b004b84c0900000 - {e=>1,n=>1,a=>66,m=>2,d=>-3,j=>0,l=>3,c=>1,k=>103,h=>4,b=>3,g=>7,f=>-1,o=>216,i=>-2} 42004b73070000003400671301d80000 42004b73070000003400671301d80000 42004b73070000003400671301d80000 0042669ee00000009800676820d80000 42004b73070000003400671301d80000 42004b73070000003400671301d80000 0042669ee00000009800676820d80000 42004b73070000003400671301d80000 0042669ee00000009800676820d80000 - {e=>2,n=>1,a=>-81,m=>-1,d=>3,j=>0,l=>3,c=>-2,k=>98,h=>2,b=>1,g=>3,f=>-2,o=>209,i=>-3} affff164030000002a00623b01d10000 affff164030000002a00623b01d10000 affff164030000002a00623b01d10000 ffaf39ac600000005400627c20d10000 affff164030000002a00623b01d10000 affff164030000002a00623b01d10000 ffaf39ac600000005400627c20d10000 affff164030000002a00623b01d10000 ffaf39ac600000005400627c20d10000 - {e=>1,n=>5,a=>-91,m=>-1,d=>-1,j=>3,l=>5,c=>-1,k=>-46,h=>2,b=>4,g=>6,f=>-2,o=>161,i=>-3} a5fffc6306000000ea00d23d05a10000 a5fffc6306000000ea00d23d05a10000 a5fffc6306000000ea00d23d05a10000 ffa59f9cc00000005580d2bca0a10000 a5fffc6306000000ea00d23d05a10000 a5fffc6306000000ea00d23d05a10000 ffa59f9cc00000005580d2bca0a10000 a5fffc6306000000ea00d23d05a10000 ffa59f9cc00000005580d2bca0a10000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; }; - {a=>55,b=>2} 3700000002000000 3700000002000000 3700000002000000 0000003740000000 3700000002000000 3700000002000000 0000003740000000 3700000002000000 0000003740000000 - {a=>62,b=>5} 3e00000005000000 3e00000005000000 3e00000005000000 0000003ea0000000 3e00000005000000 3e00000005000000 0000003ea0000000 3e00000005000000 0000003ea0000000 - {a=>127,b=>2} 7f00000002000000 7f00000002000000 7f00000002000000 0000007f40000000 7f00000002000000 7f00000002000000 0000007f40000000 7f00000002000000 0000007f40000000 - {a=>-95,b=>4} a1ffffff04000000 a1ffffff04000000 a1ffffff04000000 ffffffa180000000 a1ffffff04000000 a1ffffff04000000 ffffffa180000000 a1ffffff04000000 ffffffa180000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 ffffffc680000000 c6ffffff04000000 c6ffffff04000000 ffffffc680000000 c6ffffff04000000 ffffffc680000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; }; - {c=>1,a=>-70,b=>7} baffffff0f000000 baffffff0f000000 baffffff0f000000 ffffffbae4000000 baffffff0f000000 baffffff0f000000 ffffffbae4000000 baffffff0f000000 ffffffbae4000000 - {c=>0,a=>-56,b=>5} c8ffffff05000000 c8ffffff05000000 c8ffffff05000000 ffffffc8a0000000 c8ffffff05000000 c8ffffff05000000 ffffffc8a0000000 c8ffffff05000000 ffffffc8a0000000 - {c=>-2,a=>-48,b=>2} d0ffffff32000000 d0ffffff32000000 d0ffffff32000000 ffffffd058000000 d0ffffff32000000 d0ffffff32000000 ffffffd058000000 d0ffffff32000000 ffffffd058000000 - {c=>1,a=>31,b=>2} 1f0000000a000000 1f0000000a000000 1f0000000a000000 0000001f44000000 1f0000000a000000 1f0000000a000000 0000001f44000000 1f0000000a000000 0000001f44000000 - {c=>3,a=>120,b=>2} 780000001a000000 780000001a000000 780000001a000000 000000784c000000 780000001a000000 780000001a000000 000000784c000000 780000001a000000 000000784c000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-120,b=>6,d=>0} 88ffffff26000000 88ffffff26000000 88ffffff26000000 ffffff88d0000000 88ffffff26000000 88ffffff26000000 ffffff88d0000000 88ffffff26000000 ffffff88d0000000 - {c=>0,a=>118,b=>7,d=>3} 76000000c7000000 76000000c7000000 76000000c7000000 00000076e1800000 76000000c7000000 76000000c7000000 00000076e1800000 76000000c7000000 00000076e1800000 - {c=>-2,a=>-76,b=>5,d=>2} b4ffffffb5000000 b4ffffffb5000000 b4ffffffb5000000 ffffffb4b9000000 b4ffffffb5000000 b4ffffffb5000000 ffffffb4b9000000 b4ffffffb5000000 ffffffb4b9000000 - {c=>3,a=>-39,b=>6,d=>3} d9ffffffde000000 d9ffffffde000000 d9ffffffde000000 ffffffd9cd800000 d9ffffffde000000 d9ffffffde000000 ffffffd9cd800000 d9ffffffde000000 ffffffd9cd800000 - {c=>-3,a=>9,b=>5,d=>1} 090000006d000000 090000006d000000 090000006d000000 00000009b4800000 090000006d000000 090000006d000000 00000009b4800000 090000006d000000 00000009b4800000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>3,a=>-74,b=>2,d=>3} b6ffffffda060000 b6ffffffda060000 b6ffffffda060000 ffffffb64db00000 b6ffffffda060000 b6ffffffda060000 ffffffb64db00000 b6ffffffda060000 ffffffb64db00000 - {e=>4,c=>2,a=>16,b=>7,d=>2} 1000000097080000 1000000097080000 1000000097080000 00000010e9400000 1000000097080000 1000000097080000 00000010e9400000 1000000097080000 00000010e9400000 - {e=>2,c=>0,a=>48,b=>5,d=>-3} 3000000045050000 3000000045050000 3000000045050000 00000030a2a00000 3000000045050000 3000000045050000 00000030a2a00000 3000000045050000 00000030a2a00000 - {e=>5,c=>2,a=>77,b=>3,d=>1} 4d000000530a0000 4d000000530a0000 4d000000530a0000 0000004d68d00000 4d000000530a0000 4d000000530a0000 0000004d68d00000 4d000000530a0000 0000004d68d00000 - {e=>0,c=>-2,a=>78,b=>5,d=>1} 4e00000075000000 4e00000075000000 4e00000075000000 0000004eb8800000 4e00000075000000 4e00000075000000 0000004eb8800000 4e00000075000000 0000004eb8800000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>2,a=>80,b=>4,d=>1,f=>0} 5000000054020000 5000000054020000 5000000054020000 0000005088900000 5000000054020000 5000000054020000 0000005088900000 5000000054020000 0000005088900000 - {e=>6,c=>2,a=>-27,b=>4,d=>3,f=>-4} e5ffffffd44c0000 e5ffffffd44c0000 e5ffffffd44c0000 ffffffe589e80000 e5ffffffd44c0000 e5ffffffd44c0000 ffffffe589e80000 e5ffffffd44c0000 ffffffe589e80000 - {e=>0,c=>2,a=>-111,b=>5,d=>3,f=>-4} 91ffffffd5400000 91ffffffd5400000 91ffffffd5400000 ffffff91a9880000 91ffffffd5400000 91ffffffd5400000 ffffff91a9880000 91ffffffd5400000 ffffff91a9880000 - {e=>7,c=>1,a=>-42,b=>7,d=>1,f=>3} d6ffffff4f3e0000 d6ffffff4f3e0000 d6ffffff4f3e0000 ffffffd6e4f60000 d6ffffff4f3e0000 d6ffffff4f3e0000 ffffffd6e4f60000 d6ffffff4f3e0000 ffffffd6e4f60000 - {e=>5,c=>0,a=>90,b=>4,d=>0,f=>0} 5a000000040a0000 5a000000040a0000 5a000000040a0000 0000005a80500000 5a000000040a0000 5a000000040a0000 0000005a80500000 5a000000040a0000 0000005a80500000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>3,c=>0,a=>0,g=>3,b=>3,d=>1,f=>-3} 0000000043d60100 0000000043d60100 0000000043d60100 0000000060bac000 0000000043d60100 0000000043d60100 0000000060bac000 0000000043d60100 0000000060bac000 - {e=>3,c=>-4,a=>-62,g=>6,b=>1,d=>-3,f=>1} c2ffffff61170300 c2ffffff61170300 c2ffffff61170300 ffffffc232b38000 c2ffffff61170300 c2ffffff61170300 ffffffc232b38000 c2ffffff61170300 ffffffc232b38000 - {e=>2,c=>-3,a=>26,g=>5,b=>3,d=>0,f=>-4} 1a0000002bc40200 1a0000002bc40200 1a0000002bc40200 0000001a74294000 1a0000002bc40200 1a0000002bc40200 0000001a74294000 1a0000002bc40200 0000001a74294000 - {e=>3,c=>3,a=>-96,g=>7,b=>7,d=>-3,f=>3} a0ffffff5fb70300 a0ffffff5fb70300 a0ffffff5fb70300 ffffffa0eeb7c000 a0ffffff5fb70300 a0ffffff5fb70300 ffffffa0eeb7c000 a0ffffff5fb70300 ffffffa0eeb7c000 - {e=>6,c=>2,a=>-81,g=>5,b=>1,d=>-1,f=>3} afffffffd1bd0200 afffffffd1bd0200 afffffffd1bd0200 ffffffaf2be74000 afffffffd1bd0200 afffffffd1bd0200 ffffffaf2be74000 afffffffd1bd0200 ffffffaf2be74000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>4,c=>2,a=>21,g=>1,b=>4,d=>-4,f=>3} 1500000014b90000 1500000014b90000 1500000014b90000 000000158a464000 1500000014b90000 1500000014b90000 000000158a464000 1500000014b90000 000000158a464000 - {e=>3,c=>-4,a=>82,g=>4,b=>5,d=>3,f=>1} 52000000e5160200 52000000e5160200 52000000e5160200 00000052b1b30000 52000000e5160200 52000000e5160200 00000052b1b30000 52000000e5160200 00000052b1b30000 - {e=>2,c=>-3,a=>28,g=>5,b=>2,d=>0,f=>-4} 1c0000002ac40200 1c0000002ac40200 1c0000002ac40200 0000001c54294000 1c0000002ac40200 1c0000002ac40200 0000001c54294000 1c0000002ac40200 0000001c54294000 - {e=>4,c=>2,a=>116,g=>2,b=>3,d=>-2,f=>0} 7400000093090100 7400000093090100 7400000093090100 000000746b408000 7400000093090100 7400000093090100 000000746b408000 7400000093090100 000000746b408000 - {e=>5,c=>-2,a=>77,g=>7,b=>6,d=>-1,f=>3} 4d000000f6bb0300 4d000000f6bb0300 4d000000f6bb0300 0000004ddbd7c000 4d000000f6bb0300 4d000000f6bb0300 0000004ddbd7c000 4d000000f6bb0300 0000004ddbd7c000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>-106,d=>0,c=>-3,h=>5,b=>4,g=>2,f=>0} 96ffffff2c0c010005000000 96ffffff2c0c010005000000 96ffffff2c0c010005000000 ffffff9694608000a0000000 96ffffff2c0c010005000000 96ffffff2c0c010005000000 ffffff9694608000a0000000 96ffffff2c0c010005000000 ffffff9694608000a0000000 - {e=>2,a=>41,d=>-3,c=>-3,h=>1,b=>0,g=>7,f=>-4} 2900000068c5030001000000 2900000068c5030001000000 2900000068c5030001000000 0000002916a9c00020000000 2900000068c5030001000000 2900000068c5030001000000 0000002916a9c00020000000 2900000068c5030001000000 0000002916a9c00020000000 - {e=>7,a=>-97,d=>2,c=>2,h=>5,b=>3,g=>1,f=>-3} 9fffffff93de000005000000 9fffffff93de000005000000 9fffffff93de000005000000 ffffff9f697a4000a0000000 9fffffff93de000005000000 9fffffff93de000005000000 ffffff9f697a4000a0000000 9fffffff93de000005000000 ffffff9f697a4000a0000000 - {e=>2,a=>-90,d=>-1,c=>-4,h=>4,b=>0,g=>0,f=>3} a6ffffffe035000004000000 a6ffffffe035000004000000 a6ffffffe035000004000000 ffffffa613a6000080000000 a6ffffffe035000004000000 a6ffffffe035000004000000 ffffffa613a6000080000000 a6ffffffe035000004000000 ffffffa613a6000080000000 - {e=>6,a=>106,d=>-3,c=>2,h=>7,b=>7,g=>4,f=>-3} 6a000000575d020007000000 6a000000575d020007000000 6a000000575d020007000000 0000006aeaeb0000e0000000 6a000000575d020007000000 6a000000575d020007000000 0000006aeaeb0000e0000000 6a000000575d020007000000 0000006aeaeb0000e0000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>-65,d=>-4,c=>-4,h=>6,b=>0,g=>5,f=>3,i=>-4} bfffffff20bd020026000000 bfffffff20bd020026000000 bfffffff20bd020026000000 ffffffbf12674000d0000000 bfffffff20bd020026000000 bfffffff20bd020026000000 ffffffbf12674000d0000000 bfffffff20bd020026000000 ffffffbf12674000d0000000 - {e=>5,a=>-32,d=>-2,c=>1,h=>1,b=>6,g=>1,f=>0,i=>1} e0ffffff8e8b000009000000 e0ffffff8e8b000009000000 e0ffffff8e8b000009000000 ffffffe0c750400024000000 e0ffffff8e8b000009000000 e0ffffff8e8b000009000000 ffffffe0c750400024000000 e0ffffff8e8b000009000000 ffffffe0c750400024000000 - {e=>5,a=>-95,d=>-3,c=>2,h=>7,b=>5,g=>2,f=>3,i=>-3} a1ffffff553b01002f000000 a1ffffff553b01002f000000 a1ffffff553b01002f000000 ffffffa1aad68000f4000000 a1ffffff553b01002f000000 a1ffffff553b01002f000000 ffffffa1aad68000f4000000 a1ffffff553b01002f000000 ffffffa1aad68000f4000000 - {e=>3,a=>-22,d=>-1,c=>-1,h=>6,b=>6,g=>7,f=>-4,i=>-3} eafffffffec703002e000000 eafffffffec703002e000000 eafffffffec703002e000000 ffffffeadfb9c000d4000000 eafffffffec703002e000000 eafffffffec703002e000000 ffffffeadfb9c000d4000000 eafffffffec703002e000000 ffffffeadfb9c000d4000000 - {e=>6,a=>-103,d=>-1,c=>0,h=>2,b=>2,g=>7,f=>-2,i=>-4} 99ffffffc2ed030022000000 99ffffffc2ed030022000000 99ffffffc2ed030022000000 ffffff9943edc00050000000 99ffffffc2ed030022000000 99ffffffc2ed030022000000 ffffff9943edc00050000000 99ffffffc2ed030022000000 ffffff9943edc00050000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>7,a=>87,d=>-2,j=>7,c=>-2,h=>2,b=>2,g=>2,f=>-2,i=>2} 57000000b26f0100d2010000 57000000b26f0100d2010000 57000000b26f0100d2010000 000000575b7c80004b800000 57000000b26f0100d2010000 57000000b26f0100d2010000 000000575b7c80004b800000 57000000b26f0100d2010000 000000575b7c80004b800000 - {e=>3,a=>-126,d=>-4,j=>4,c=>0,h=>0,b=>6,g=>1,f=>-2,i=>-4} 82ffffff06e7000020010000 82ffffff06e7000020010000 82ffffff06e7000020010000 ffffff82c23c400012000000 82ffffff06e7000020010000 82ffffff06e7000020010000 ffffff82c23c400012000000 82ffffff06e7000020010000 ffffff82c23c400012000000 - {e=>5,a=>90,d=>0,j=>7,c=>3,h=>0,b=>5,g=>6,f=>-1,i=>-1} 5a0000001d7a0300f8010000 5a0000001d7a0300f8010000 5a0000001d7a0300f8010000 0000005aac5f80001f800000 5a0000001d7a0300f8010000 5a0000001d7a0300f8010000 0000005aac5f80001f800000 5a0000001d7a0300f8010000 0000005aac5f80001f800000 - {e=>6,a=>-47,d=>1,j=>3,c=>1,h=>4,b=>7,g=>7,f=>3,i=>-1} d1ffffff4fbc0300fc000000 d1ffffff4fbc0300fc000000 d1ffffff4fbc0300fc000000 ffffffd1e4e7c0009d800000 d1ffffff4fbc0300fc000000 d1ffffff4fbc0300fc000000 ffffffd1e4e7c0009d800000 d1ffffff4fbc0300fc000000 ffffffd1e4e7c0009d800000 - {e=>6,a=>47,d=>2,j=>7,c=>1,h=>4,b=>6,g=>1,f=>0,i=>-4} 2f0000008e8c0000e4010000 2f0000008e8c0000e4010000 2f0000008e8c0000e4010000 0000002fc560400093800000 2f0000008e8c0000e4010000 2f0000008e8c0000e4010000 0000002fc560400093800000 2f0000008e8c0000e4010000 0000002fc560400093800000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>4,a=>-69,d=>1,j=>5,c=>-2,k=>-25,h=>4,b=>3,g=>1,f=>3,i=>1} bbffffff73b800004c01e700 bbffffff73b800004c01e700 bbffffff73b800004c01e700 ffffffbb78c640008680e700 bbffffff73b800004c01e700 bbffffff73b800004c01e700 ffffffbb78c640008680e700 bbffffff73b800004c01e700 ffffffbb78c640008680e700 - {e=>1,a=>116,d=>0,j=>4,c=>2,k=>45,h=>6,b=>3,g=>3,f=>-2,i=>3} 7400000013e201001e012d00 7400000013e201001e012d00 7400000013e201001e012d00 00000074681cc000ce002d00 7400000013e201001e012d00 7400000013e201001e012d00 00000074681cc000ce002d00 7400000013e201001e012d00 00000074681cc000ce002d00 - {e=>3,a=>-113,d=>1,j=>1,c=>0,k=>-27,h=>5,b=>5,g=>6,f=>-3,i=>-2} 8fffffff455603007500e500 8fffffff455603007500e500 8fffffff455603007500e500 ffffff8fa0bb8000b880e500 8fffffff455603007500e500 8fffffff455603007500e500 ffffff8fa0bb8000b880e500 8fffffff455603007500e500 ffffff8fa0bb8000b880e500 - {e=>3,a=>49,d=>3,j=>2,c=>-2,k=>3,h=>1,b=>0,g=>2,f=>2,i=>2} 31000000f026010091000300 31000000f026010091000300 31000000f026010091000300 0000003119b4800029000300 31000000f026010091000300 31000000f026010091000300 0000003119b4800029000300 31000000f026010091000300 0000003119b4800029000300 - {e=>0,a=>105,d=>-1,j=>3,c=>-3,k=>-114,h=>6,b=>5,g=>7,f=>-2,i=>3} 69000000ede10300de008e00 69000000ede10300de008e00 69000000ede10300de008e00 00000069b78dc000cd808e00 69000000ede10300de008e00 69000000ede10300de008e00 00000069b78dc000cd808e00 69000000ede10300de008e00 00000069b78dc000cd808e00 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>4,a=>-33,d=>-3,j=>2,l=>4,c=>2,k=>-127,h=>2,b=>1,g=>3,f=>0,i=>3} dfffffff518901009a008104 dfffffff518901009a008104 dfffffff518901009a008104 ffffffdf2ac0c0004d008180 dfffffff518901009a008104 dfffffff518901009a008104 ffffffdf2ac0c0004d008180 dfffffff518901009a008104 ffffffdf2ac0c0004d008180 - {e=>1,a=>30,d=>0,j=>3,l=>5,c=>-2,k=>-10,h=>5,b=>0,g=>3,f=>2,i=>-2} 1e00000030a20100f500f605 1e00000030a20100f500f605 1e00000030a20100f500f605 0000001e1814c000b980f6a0 1e00000030a20100f500f605 1e00000030a20100f500f605 0000001e1814c000b980f6a0 1e00000030a20100f500f605 0000001e1814c000b980f6a0 - {e=>0,a=>87,d=>-1,j=>5,l=>6,c=>-2,k=>-45,h=>2,b=>7,g=>1,f=>3,i=>-2} 57000000f7b100007201d306 57000000f7b100007201d306 57000000f7b100007201d306 00000057fb8640005a80d3c0 57000000f7b100007201d306 57000000f7b100007201d306 00000057fb8640005a80d3c0 57000000f7b100007201d306 00000057fb8640005a80d3c0 - {e=>1,a=>-27,d=>2,j=>3,l=>0,c=>1,k=>36,h=>0,b=>0,g=>5,f=>0,i=>-1} e5ffffff88820200f8002400 e5ffffff88820200f8002400 e5ffffff88820200f8002400 ffffffe5051140001d802400 e5ffffff88820200f8002400 e5ffffff88820200f8002400 ffffffe5051140001d802400 e5ffffff88820200f8002400 ffffffe5051140001d802400 - {e=>7,a=>38,d=>2,j=>1,l=>5,c=>-2,k=>37,h=>5,b=>5,g=>5,f=>1,i=>-1} 26000000b59e02007d002505 26000000b59e02007d002505 26000000b59e02007d002505 00000026b9734000bc8025a0 26000000b59e02007d002505 26000000b59e02007d002505 00000026b9734000bc8025a0 26000000b59e02007d002505 00000026b9734000bc8025a0 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-77,m=>-1,d=>-4,j=>3,l=>6,c=>0,k=>2,h=>7,b=>7,g=>3,f=>1,i=>1} b3ffffff07990100cf00023e b3ffffff07990100cf00023e b3ffffff07990100cf00023e ffffffb3e242c000e58002dc b3ffffff07990100cf00023e b3ffffff07990100cf00023e ffffffb3e242c000e58002dc b3ffffff07990100cf00023e ffffffb3e242c000e58002dc - {e=>6,a=>-85,m=>-1,d=>0,j=>6,l=>2,c=>2,k=>121,h=>4,b=>0,g=>5,f=>-4,i=>3} abffffff10cc02009c01793a abffffff10cc02009c01793a abffffff10cc02009c01793a ffffffab086940008f00795c abffffff10cc02009c01793a abffffff10cc02009c01793a ffffffab086940008f00795c abffffff10cc02009c01793a ffffffab086940008f00795c - {e=>0,a=>63,m=>-1,d=>3,j=>3,l=>1,c=>-1,k=>54,h=>5,b=>0,g=>0,f=>1,i=>-4} 3f000000f8100000e5003639 3f000000f8100000e5003639 3f000000f8100000e5003639 0000003f1d820000b180363c 3f000000f8100000e5003639 3f000000f8100000e5003639 0000003f1d820000b180363c 3f000000f8100000e5003639 0000003f1d820000b180363c - {e=>5,a=>3,m=>-4,d=>1,j=>0,l=>5,c=>-3,k=>-15,h=>4,b=>6,g=>2,f=>1,i=>1} 030000006e1a01000c00f125 030000006e1a01000c00f125 030000006e1a01000c00f125 00000003d4d280008400f1b0 030000006e1a01000c00f125 030000006e1a01000c00f125 00000003d4d280008400f1b0 030000006e1a01000c00f125 00000003d4d280008400f1b0 - {e=>1,a=>93,m=>0,d=>3,j=>0,l=>2,c=>0,k=>57,h=>6,b=>0,g=>4,f=>-1,i=>2} 5d000000c072020016003902 5d000000c072020016003902 5d000000c072020016003902 0000005d019f0000c8003940 5d000000c072020016003902 5d000000c072020016003902 0000005d019f0000c8003940 5d000000c072020016003902 0000005d019f0000c8003940 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>5,a=>93,m=>1,d=>1,j=>3,l=>1,c=>-2,k=>115,h=>3,b=>0,g=>2,f=>1,i=>1} 5d000000701c0100cb00730905000000 5d000000701c0100cb00730905000000 5d000000701c0100cb00730905000000 0000005d18e2800065807324a0000000 5d000000701c0100cb00730905000000 5d000000701c0100cb00730905000000 0000005d18e2800065807324a0000000 5d000000701c0100cb00730905000000 0000005d18e2800065807324a0000000 - {e=>7,n=>6,a=>-112,m=>1,d=>-2,j=>2,l=>1,c=>-1,k=>66,h=>1,b=>5,g=>3,f=>-4,i=>3} 90ffffffbdcf01009900420906000000 90ffffffbdcf01009900420906000000 90ffffffbdcf01009900420906000000 ffffff90bf78c0002d004224c0000000 90ffffffbdcf01009900420906000000 90ffffffbdcf01009900420906000000 ffffff90bf78c0002d004224c0000000 90ffffffbdcf01009900420906000000 ffffff90bf78c0002d004224c0000000 - {e=>7,n=>1,a=>102,m=>3,d=>3,j=>3,l=>6,c=>1,k=>-50,h=>5,b=>6,g=>7,f=>1,i=>1} 66000000ce9e0300cd00ce1e01000000 66000000ce9e0300cd00ce1e01000000 66000000ce9e0300cd00ce1e01000000 00000066c5f3c000a580cecc20000000 66000000ce9e0300cd00ce1e01000000 66000000ce9e0300cd00ce1e01000000 00000066c5f3c000a580cecc20000000 66000000ce9e0300cd00ce1e01000000 00000066c5f3c000a580cecc20000000 - {e=>3,n=>6,a=>-108,m=>1,d=>-4,j=>4,l=>4,c=>-3,k=>85,h=>3,b=>7,g=>7,f=>-1,i=>1} 94ffffff2ff703000b01550c06000000 94ffffff2ff703000b01550c06000000 94ffffff2ff703000b01550c06000000 ffffff94f63fc00066005584c0000000 94ffffff2ff703000b01550c06000000 94ffffff2ff703000b01550c06000000 ffffff94f63fc00066005584c0000000 94ffffff2ff703000b01550c06000000 ffffff94f63fc00066005584c0000000 - {e=>3,n=>5,a=>103,m=>1,d=>-3,j=>3,l=>2,c=>0,k=>103,h=>3,b=>4,g=>1,f=>1,i=>0} 6700000044970000c300670a05000000 6700000044970000c300670a05000000 6700000044970000c300670a05000000 0000006782b2400061806744a0000000 6700000044970000c300670a05000000 6700000044970000c300670a05000000 0000006782b2400061806744a0000000 6700000044970000c300670a05000000 0000006782b2400061806744a0000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>5,a=>-4,m=>-2,d=>-1,j=>4,l=>2,c=>-1,k=>-4,h=>5,b=>5,g=>2,f=>-2,o=>251,i=>1} fcfffffffd6d01000d01fc3205fb0000 fcfffffffd6d01000d01fc3205fb0000 fcfffffffd6d01000d01fc3205fb0000 fffffffcbfec8000a600fc58a0fb0000 fcfffffffd6d01000d01fc3205fb0000 fcfffffffd6d01000d01fc3205fb0000 fffffffcbfec8000a600fc58a0fb0000 fcfffffffd6d01000d01fc3205fb0000 fffffffcbfec8000a600fc58a0fb0000 - {e=>5,n=>7,a=>100,m=>-4,d=>-4,j=>4,l=>2,c=>0,k=>-86,h=>1,b=>5,g=>0,f=>2,o=>180,i=>-2} 64000000052b00003101aa2207b40000 64000000052b00003101aa2207b40000 64000000052b00003101aa2207b40000 00000064a25400003a00aa50e0b40000 64000000052b00003101aa2207b40000 64000000052b00003101aa2207b40000 00000064a25400003a00aa50e0b40000 64000000052b00003101aa2207b40000 00000064a25400003a00aa50e0b40000 - {e=>6,n=>7,a=>-56,m=>-2,d=>-3,j=>5,l=>0,c=>-3,k=>122,h=>4,b=>7,g=>2,f=>1,o=>254,i=>0} c8ffffff6f1d010044017a3007fe0000 c8ffffff6f1d010044017a3007fe0000 c8ffffff6f1d010044017a3007fe0000 ffffffc8f6e2800082807a18e0fe0000 c8ffffff6f1d010044017a3007fe0000 c8ffffff6f1d010044017a3007fe0000 ffffffc8f6e2800082807a18e0fe0000 c8ffffff6f1d010044017a3007fe0000 ffffffc8f6e2800082807a18e0fe0000 - {e=>1,n=>5,a=>-64,m=>-2,d=>1,j=>0,l=>1,c=>-3,k=>77,h=>7,b=>1,g=>4,f=>-1,o=>3,i=>-2} c0ffffff6972020037004d3105030000 c0ffffff6972020037004d3105030000 c0ffffff6972020037004d3105030000 ffffffc0349f0000f8004d38a0030000 c0ffffff6972020037004d3105030000 c0ffffff6972020037004d3105030000 ffffffc0349f0000f8004d38a0030000 c0ffffff6972020037004d3105030000 ffffffc0349f0000f8004d38a0030000 - {e=>5,n=>6,a=>-59,m=>-3,d=>0,j=>4,l=>3,c=>-3,k=>47,h=>3,b=>7,g=>0,f=>0,o=>16,i=>2} c5ffffff2f0a000013012f2b06100000 c5ffffff2f0a000013012f2b06100000 c5ffffff2f0a000013012f2b06100000 ffffffc5f45000006a002f74c0100000 c5ffffff2f0a000013012f2b06100000 c5ffffff2f0a000013012f2b06100000 ffffffc5f45000006a002f74c0100000 c5ffffff2f0a000013012f2b06100000 ffffffc5f45000006a002f74c0100000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; }; - {a=>-106,b=>7} 96ffffff07000000 96ffffffffffffff0700000000000000 96ffffffffffffff0700000000000000 ffffff96e0000000 96ffffff07000000 96ffffff07000000 ffffffffffffff96e000000000000000 96ffffff07000000 ffffff96e0000000 - {a=>-127,b=>2} 81ffffff02000000 81ffffffffffffff0200000000000000 81ffffffffffffff0200000000000000 ffffff8140000000 81ffffff02000000 81ffffff02000000 ffffffffffffff814000000000000000 81ffffff02000000 ffffff8140000000 - {a=>-66,b=>6} beffffff06000000 beffffffffffffff0600000000000000 beffffffffffffff0600000000000000 ffffffbec0000000 beffffff06000000 beffffff06000000 ffffffffffffffbec000000000000000 beffffff06000000 ffffffbec0000000 - {a=>49,b=>6} 3100000006000000 31000000000000000600000000000000 31000000000000000600000000000000 00000031c0000000 3100000006000000 3100000006000000 0000000000000031c000000000000000 3100000006000000 00000031c0000000 - {a=>107,b=>7} 6b00000007000000 6b000000000000000700000000000000 6b000000000000000700000000000000 0000006be0000000 6b00000007000000 6b00000007000000 000000000000006be000000000000000 6b00000007000000 0000006be0000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-18,b=>6} eeffffff06000000 eeffffffffffffff0600000000000000 eeffffffffffffff0600000000000000 ffffffeec0000000 eeffffff06000000 eeffffff06000000 ffffffffffffffeec000000000000000 eeffffff06000000 ffffffeec0000000 - {c=>-3,a=>-10,b=>6} f6ffffff2e000000 f6ffffffffffffff2e00000000000000 f6ffffffffffffff2e00000000000000 fffffff6d4000000 f6ffffff2e000000 f6ffffff2e000000 fffffffffffffff6d400000000000000 f6ffffff2e000000 fffffff6d4000000 - {c=>2,a=>40,b=>4} 2800000014000000 28000000000000001400000000000000 28000000000000001400000000000000 0000002888000000 2800000014000000 2800000014000000 00000000000000288800000000000000 2800000014000000 0000002888000000 - {c=>-2,a=>-97,b=>3} 9fffffff33000000 9fffffffffffffff3300000000000000 9fffffffffffffff3300000000000000 ffffff9f78000000 9fffffff33000000 9fffffff33000000 ffffffffffffff9f7800000000000000 9fffffff33000000 ffffff9f78000000 - {c=>0,a=>-24,b=>3} e8ffffff03000000 e8ffffffffffffff0300000000000000 e8ffffffffffffff0300000000000000 ffffffe860000000 e8ffffff03000000 e8ffffff03000000 ffffffffffffffe86000000000000000 e8ffffff03000000 ffffffe860000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>2,a=>-99,b=>5,d=>-3} 9dffffff55010000 9dffffffffffffff5501000000000000 9dffffffffffffff5501000000000000 ffffff9daa800000 9dffffff55010000 9dffffff55010000 ffffffffffffff9daa80000000000000 9dffffff55010000 ffffff9daa800000 - {c=>-3,a=>102,b=>4,d=>1} 660000006c000000 66000000000000006c00000000000000 66000000000000006c00000000000000 0000006694800000 660000006c000000 660000006c000000 00000000000000669480000000000000 660000006c000000 0000006694800000 - {c=>-4,a=>108,b=>1,d=>2} 6c000000a1000000 6c00000000000000a100000000000000 6c00000000000000a100000000000000 0000006c31000000 6c000000a1000000 6c000000a1000000 000000000000006c3100000000000000 6c000000a1000000 0000006c31000000 - {c=>1,a=>-81,b=>6,d=>3} afffffffce000000 afffffffffffffffce00000000000000 afffffffffffffffce00000000000000 ffffffafc5800000 afffffffce000000 afffffffce000000 ffffffffffffffafc580000000000000 afffffffce000000 ffffffafc5800000 - {c=>2,a=>-53,b=>2,d=>2} cbffffff92000000 cbffffffffffffff9200000000000000 cbffffffffffffff9200000000000000 ffffffcb49000000 cbffffff92000000 cbffffff92000000 ffffffffffffffcb4900000000000000 cbffffff92000000 ffffffcb49000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>2,a=>62,b=>7,d=>0} 3e00000017040000 3e000000000000001704000000000000 3e000000000000001704000000000000 0000003ee8200000 3e00000017040000 3e00000017040000 000000000000003ee820000000000000 3e00000017040000 0000003ee8200000 - {e=>0,c=>1,a=>-91,b=>7,d=>1} a5ffffff4f000000 a5ffffffffffffff4f00000000000000 a5ffffffffffffff4f00000000000000 ffffffa5e4800000 a5ffffff4f000000 a5ffffff4f000000 ffffffffffffffa5e480000000000000 a5ffffff4f000000 ffffffa5e4800000 - {e=>3,c=>-1,a=>50,b=>3,d=>0} 320000003b060000 32000000000000003b06000000000000 32000000000000003b06000000000000 000000327c300000 320000003b060000 320000003b060000 00000000000000327c30000000000000 320000003b060000 000000327c300000 - {e=>2,c=>-1,a=>-68,b=>2,d=>2} bcffffffba040000 bcffffffffffffffba04000000000000 bcffffffffffffffba04000000000000 ffffffbc5d200000 bcffffffba040000 bcffffffba040000 ffffffffffffffbc5d20000000000000 bcffffffba040000 ffffffbc5d200000 - {e=>5,c=>2,a=>67,b=>4,d=>1} 43000000540a0000 4300000000000000540a000000000000 4300000000000000540a000000000000 0000004388d00000 43000000540a0000 43000000540a0000 000000000000004388d0000000000000 43000000540a0000 0000004388d00000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>3,a=>-33,b=>2,d=>-3,f=>-3} dfffffff5a530000 dfffffffffffffff5a53000000000000 dfffffffffffffff5a53000000000000 ffffffdf4e9a0000 dfffffff5a530000 dfffffff5a530000 ffffffffffffffdf4e9a000000000000 dfffffff5a530000 ffffffdf4e9a0000 - {e=>6,c=>-4,a=>-3,b=>1,d=>-3,f=>1} fdffffff611d0000 fdffffffffffffff611d000000000000 fdffffffffffffff611d000000000000 fffffffd32e20000 fdffffff611d0000 fdffffff611d0000 fffffffffffffffd32e2000000000000 fdffffff611d0000 fffffffd32e20000 - {e=>5,c=>-2,a=>-125,b=>1,d=>-3,f=>-3} 83ffffff715b0000 83ffffffffffffff715b000000000000 83ffffffffffffff715b000000000000 ffffff833ada0000 83ffffff715b0000 83ffffff715b0000 ffffffffffffff833ada000000000000 83ffffff715b0000 ffffff833ada0000 - {e=>7,c=>-2,a=>101,b=>3,d=>-2,f=>-1} 65000000b37f0000 6500000000000000b37f000000000000 6500000000000000b37f000000000000 000000657b7e0000 65000000b37f0000 65000000b37f0000 00000000000000657b7e000000000000 65000000b37f0000 000000657b7e0000 - {e=>1,c=>-2,a=>71,b=>4,d=>3,f=>2} 47000000f4220000 4700000000000000f422000000000000 4700000000000000f422000000000000 0000004799940000 47000000f4220000 47000000f4220000 00000000000000479994000000000000 47000000f4220000 0000004799940000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>5,c=>0,a=>56,g=>7,b=>1,d=>-1,f=>2} 38000000c1ab0300 3800000000000000c1ab030000000000 3800000000000000c1ab030000000000 0000003823d5c000 38000000c1ab0300 38000000c1ab0300 000000000000003823d5c00000000000 38000000c1ab0300 0000003823d5c000 - {e=>6,c=>-4,a=>-45,g=>2,b=>2,d=>-1,f=>-1} d3ffffffe27d0100 d3ffffffffffffffe27d010000000000 d3ffffffffffffffe27d010000000000 ffffffd353ee8000 d3ffffffe27d0100 d3ffffffe27d0100 ffffffffffffffd353ee800000000000 d3ffffffe27d0100 ffffffd353ee8000 - {e=>7,c=>-4,a=>-101,g=>3,b=>1,d=>1,f=>-3} 9bffffff61de0100 9bffffffffffffff61de010000000000 9bffffffffffffff61de010000000000 ffffff9b30fac000 9bffffff61de0100 9bffffff61de0100 ffffffffffffff9b30fac00000000000 9bffffff61de0100 ffffff9b30fac000 - {e=>0,c=>3,a=>62,g=>5,b=>2,d=>-3,f=>-4} 3e0000005ac10200 3e000000000000005ac1020000000000 3e000000000000005ac1020000000000 0000003e4e894000 3e0000005ac10200 3e0000005ac10200 000000000000003e4e89400000000000 3e0000005ac10200 0000003e4e894000 - {e=>6,c=>3,a=>102,g=>2,b=>6,d=>1,f=>-1} 660000005e7c0100 66000000000000005e7c010000000000 66000000000000005e7c010000000000 00000066ccee8000 660000005e7c0100 660000005e7c0100 0000000000000066ccee800000000000 660000005e7c0100 00000066ccee8000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>0,c=>-3,a=>-101,g=>1,b=>2,d=>0,f=>-3} 9bffffff2ad00000 9bffffffffffffff2ad0000000000000 9bffffffffffffff2ad0000000000000 ffffff9b540a4000 9bffffff2ad00000 9bffffff2ad00000 ffffffffffffff9b540a400000000000 9bffffff2ad00000 ffffff9b540a4000 - {e=>5,c=>-4,a=>-95,g=>4,b=>4,d=>-4,f=>-1} a1ffffff247b0200 a1ffffffffffffff247b020000000000 a1ffffffffffffff247b020000000000 ffffffa1925f0000 a1ffffff247b0200 a1ffffff247b0200 ffffffffffffffa1925f000000000000 a1ffffff247b0200 ffffffa1925f0000 - {e=>0,c=>0,a=>60,g=>4,b=>4,d=>2,f=>-3} 3c00000084500200 3c000000000000008450020000000000 3c000000000000008450020000000000 0000003c810b0000 3c00000084500200 3c00000084500200 000000000000003c810b000000000000 3c00000084500200 0000003c810b0000 - {e=>4,c=>2,a=>-72,g=>5,b=>2,d=>1,f=>-2} b8ffffff52e80200 b8ffffffffffffff52e8020000000000 b8ffffffffffffff52e8020000000000 ffffffb848cd4000 b8ffffff52e80200 b8ffffff52e80200 ffffffffffffffb848cd400000000000 b8ffffff52e80200 ffffffb848cd4000 - {e=>4,c=>1,a=>-29,g=>7,b=>2,d=>-1,f=>2} e3ffffffcaa90300 e3ffffffffffffffcaa9030000000000 e3ffffffffffffffcaa9030000000000 ffffffe347c5c000 e3ffffffcaa90300 e3ffffffcaa90300 ffffffffffffffe347c5c00000000000 e3ffffffcaa90300 ffffffe347c5c000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>23,d=>2,c=>-2,h=>0,b=>2,g=>4,f=>-3} 17000000b252020000000000 1700000000000000b252020000000000 1700000000000000b252020000000000 00000017591b000000000000 17000000b252020000000000 17000000b252020000000000 0000000000000017591b000000000000 17000000b252020000000000 00000017591b000000000000 - {e=>7,a=>-108,d=>3,c=>0,h=>1,b=>7,g=>7,f=>-2} 94ffffffc7ee030001000000 94ffffffffffffffc7ee030001000000 94ffffffffffffffc7ee030001000000 ffffff94e1fdc00020000000 94ffffffc7ee030001000000 94ffffffc7ee030001000000 ffffffffffffff94e1fdc00020000000 94ffffffc7ee030001000000 ffffff94e1fdc00020000000 - {e=>5,a=>-126,d=>2,c=>1,h=>3,b=>4,g=>0,f=>3} 82ffffff8c3a000003000000 82ffffffffffffff8c3a000003000000 82ffffffffffffff8c3a000003000000 ffffff828556000060000000 82ffffff8c3a000003000000 82ffffff8c3a000003000000 ffffffffffffff828556000060000000 82ffffff8c3a000003000000 ffffff828556000060000000 - {e=>4,a=>-62,d=>3,c=>-4,h=>1,b=>2,g=>2,f=>-3} c2ffffffe258010001000000 c2ffffffffffffffe258010001000000 c2ffffffffffffffe258010001000000 ffffffc251ca800020000000 c2ffffffe258010001000000 c2ffffffe258010001000000 ffffffffffffffc251ca800020000000 c2ffffffe258010001000000 ffffffc251ca800020000000 - {e=>0,a=>89,d=>-3,c=>3,h=>0,b=>7,g=>3,f=>2} 590000005fa1010000000000 59000000000000005fa1010000000000 59000000000000005fa1010000000000 00000059ee84c00000000000 590000005fa1010000000000 590000005fa1010000000000 0000000000000059ee84c00000000000 590000005fa1010000000000 00000059ee84c00000000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>16,d=>1,c=>-4,h=>1,b=>7,g=>3,f=>-3,i=>0} 1000000067dc010001000000 100000000000000067dc010001000000 100000000000000067dc010001000000 00000010f0eac00020000000 1000000067dc010001000000 1000000067dc010001000000 0000000000000010f0eac00020000000 1000000067dc010001000000 00000010f0eac00020000000 - {e=>6,a=>62,d=>0,c=>1,h=>2,b=>0,g=>5,f=>-3,i=>2} 3e00000008dc020012000000 3e0000000000000008dc020012000000 3e0000000000000008dc020012000000 0000003e046b400048000000 3e00000008dc020012000000 3e00000008dc020012000000 000000000000003e046b400048000000 3e00000008dc020012000000 0000003e046b400048000000 - {e=>3,a=>-95,d=>-2,c=>3,h=>7,b=>3,g=>7,f=>-4,i=>0} a1ffffff9bc7030007000000 a1ffffffffffffff9bc7030007000000 a1ffffffffffffff9bc7030007000000 ffffffa16f39c000e0000000 a1ffffff9bc7030007000000 a1ffffff9bc7030007000000 ffffffffffffffa16f39c000e0000000 a1ffffff9bc7030007000000 ffffffa16f39c000e0000000 - {e=>6,a=>-45,d=>1,c=>0,h=>1,b=>6,g=>3,f=>-1,i=>1} d3ffffff46fc010009000000 d3ffffffffffffff46fc010009000000 d3ffffffffffffff46fc010009000000 ffffffd3c0eec00024000000 d3ffffff46fc010009000000 d3ffffff46fc010009000000 ffffffffffffffd3c0eec00024000000 d3ffffff46fc010009000000 ffffffd3c0eec00024000000 - {e=>1,a=>-122,d=>1,c=>0,h=>4,b=>1,g=>4,f=>0,i=>3} 86ffffff410202001c000000 86ffffffffffffff410202001c000000 86ffffffffffffff410202001c000000 ffffff86209100008c000000 86ffffff410202001c000000 86ffffff410202001c000000 ffffffffffffff86209100008c000000 86ffffff410202001c000000 ffffff86209100008c000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>1,a=>-114,d=>2,j=>5,c=>1,h=>4,b=>1,g=>6,f=>2,i=>-4} 8effffff8922030064010000 8effffffffffffff8922030064010000 8effffffffffffff8922030064010000 ffffff8e2515800092800000 8effffff8922030064010000 8effffff8922030064010000 ffffffffffffff8e2515800092800000 8effffff8922030064010000 ffffff8e2515800092800000 - {e=>2,a=>-60,d=>-3,j=>3,c=>-1,h=>6,b=>2,g=>1,f=>3,i=>0} c4ffffff7ab50000c6000000 c4ffffffffffffff7ab50000c6000000 c4ffffffffffffff7ab50000c6000000 ffffffc45ea64000c1800000 c4ffffff7ab50000c6000000 c4ffffff7ab50000c6000000 ffffffffffffffc45ea64000c1800000 c4ffffff7ab50000c6000000 ffffffc45ea64000c1800000 - {e=>3,a=>51,d=>1,j=>5,c=>-4,h=>6,b=>7,g=>3,f=>2,i=>2} 3300000067a6010056010000 330000000000000067a6010056010000 330000000000000067a6010056010000 00000033f0b4c000ca800000 3300000067a6010056010000 3300000067a6010056010000 0000000000000033f0b4c000ca800000 3300000067a6010056010000 00000033f0b4c000ca800000 - {e=>4,a=>-121,d=>-1,j=>3,c=>-3,h=>5,b=>3,g=>5,f=>1,i=>-1} 87ffffffeb990200fd000000 87ffffffffffffffeb990200fd000000 87ffffffffffffffeb990200fd000000 ffffff8777c34000bd800000 87ffffffeb990200fd000000 87ffffffeb990200fd000000 ffffffffffffff8777c34000bd800000 87ffffffeb990200fd000000 ffffff8777c34000bd800000 - {e=>4,a=>80,d=>3,j=>5,c=>-1,h=>2,b=>0,g=>4,f=>-2,i=>0} 50000000f868020042010000 5000000000000000f868020042010000 5000000000000000f868020042010000 000000501dcd000042800000 50000000f868020042010000 50000000f868020042010000 00000000000000501dcd000042800000 50000000f868020042010000 000000501dcd000042800000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>-88,d=>3,j=>5,c=>-3,k=>-40,h=>0,b=>6,g=>6,f=>1,i=>-2} a8ffffffee1c03007001d800 a8ffffffffffffffee1c03007001d800 a8ffffffffffffffee1c03007001d800 ffffffa8d5e380001a80d800 a8ffffffee1c03007001d800 a8ffffffee1c03007001d800 ffffffffffffffa8d5e380001a80d800 a8ffffffee1c03007001d800 ffffffa8d5e380001a80d800 - {e=>2,a=>100,d=>-2,j=>0,c=>-2,k=>126,h=>4,b=>0,g=>2,f=>-3,i=>-4} 64000000b055010024007e00 6400000000000000b055010024007e00 6400000000000000b055010024007e00 000000641b2a800090007e00 64000000b055010024007e00 64000000b055010024007e00 00000000000000641b2a800090007e00 64000000b055010024007e00 000000641b2a800090007e00 - {e=>3,a=>-69,d=>2,j=>7,c=>2,k=>33,h=>6,b=>6,g=>0,f=>1,i=>-1} bbffffff96160000fe012100 bbffffffffffffff96160000fe012100 bbffffffffffffff96160000fe012100 ffffffbbc9320000df802100 bbffffff96160000fe012100 bbffffff96160000fe012100 ffffffffffffffbbc9320000df802100 bbffffff96160000fe012100 ffffffbbc9320000df802100 - {e=>4,a=>68,d=>0,j=>5,c=>-1,k=>-97,h=>7,b=>4,g=>1,f=>-1,i=>3} 440000003cf800005f019f00 44000000000000003cf800005f019f00 44000000000000003cf800005f019f00 000000449c4e4000ee809f00 440000003cf800005f019f00 440000003cf800005f019f00 00000000000000449c4e4000ee809f00 440000003cf800005f019f00 000000449c4e4000ee809f00 - {e=>3,a=>-64,d=>-4,j=>1,c=>0,k=>-12,h=>3,b=>3,g=>2,f=>2,i=>0} c0ffffff032701004300f400 c0ffffffffffffff032701004300f400 c0ffffffffffffff032701004300f400 ffffffc0623480006080f400 c0ffffff032701004300f400 c0ffffff032701004300f400 ffffffffffffffc0623480006080f400 c0ffffff032701004300f400 ffffffc0623480006080f400 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>7,a=>19,d=>-2,j=>6,l=>1,c=>3,k=>-48,h=>6,b=>3,g=>4,f=>2,i=>3} 130000009b2f02009e01d001 13000000000000009b2f02009e01d001 13000000000000009b2f02009e01d001 000000136f750000cf00d020 130000009b2f02009e01d001 130000009b2f02009e01d001 00000000000000136f750000cf00d020 130000009b2f02009e01d001 000000136f750000cf00d020 - {e=>2,a=>-64,d=>-1,j=>0,l=>2,c=>-4,k=>-102,h=>5,b=>4,g=>0,f=>-4,i=>0} c0ffffffe445000005009a02 c0ffffffffffffffe445000005009a02 c0ffffffffffffffe445000005009a02 ffffffc093a80000a0009a40 c0ffffffe445000005009a02 c0ffffffe445000005009a02 ffffffffffffffc093a80000a0009a40 c0ffffffe445000005009a02 ffffffc093a80000a0009a40 - {e=>6,a=>32,d=>3,j=>6,l=>7,c=>0,k=>-18,h=>6,b=>2,g=>6,f=>3,i=>-4} 20000000c23c0300a601ee07 2000000000000000c23c0300a601ee07 2000000000000000c23c0300a601ee07 0000002041e78000d300eee0 20000000c23c0300a601ee07 20000000c23c0300a601ee07 000000000000002041e78000d300eee0 20000000c23c0300a601ee07 0000002041e78000d300eee0 - {e=>4,a=>12,d=>0,j=>4,l=>0,c=>1,k=>-60,h=>6,b=>2,g=>0,f=>3,i=>-4} 0c0000000a3800002601c400 0c000000000000000a3800002601c400 0c000000000000000a3800002601c400 0000000c44460000d200c400 0c0000000a3800002601c400 0c0000000a3800002601c400 000000000000000c44460000d200c400 0c0000000a3800002601c400 0000000c44460000d200c400 - {e=>1,a=>126,d=>-3,j=>3,l=>3,c=>-2,k=>127,h=>6,b=>2,g=>7,f=>3,i=>-2} 7e00000072b30300f6007f03 7e0000000000000072b30300f6007f03 7e0000000000000072b30300f6007f03 0000007e5a97c000d9807f60 7e00000072b30300f6007f03 7e00000072b30300f6007f03 000000000000007e5a97c000d9807f60 7e00000072b30300f6007f03 0000007e5a97c000d9807f60 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>41,m=>-2,d=>-2,j=>7,l=>3,c=>-2,k=>100,h=>7,b=>4,g=>4,f=>3,i=>2} 29000000b43f0200d7016433 2900000000000000b43f0200d7016433 2900000000000000b43f0200d7016433 000000299b770000eb806478 29000000b43f0200d7016433 29000000b43f0200d7016433 00000000000000299b770000eb806478 29000000b43f0200d7016433 000000299b770000eb806478 - {e=>0,a=>-34,m=>-1,d=>-1,j=>1,l=>4,c=>-4,k=>120,h=>0,b=>4,g=>1,f=>0,i=>1} deffffffe48100004800783c deffffffffffffffe48100004800783c deffffffffffffffe48100004800783c ffffffde938040000480789c deffffffe48100004800783c deffffffe48100004800783c ffffffffffffffde938040000480789c deffffffe48100004800783c ffffffde938040000480789c - {e=>6,a=>29,m=>1,d=>-2,j=>2,l=>1,c=>-2,k=>-104,h=>4,b=>7,g=>2,f=>0,i=>-1} 1d000000b70d0100bc009809 1d00000000000000b70d0100bc009809 1d00000000000000b70d0100bc009809 0000001dfb6080009d009824 1d000000b70d0100bc009809 1d000000b70d0100bc009809 000000000000001dfb6080009d009824 1d000000b70d0100bc009809 0000001dfb6080009d009824 - {e=>5,a=>-81,m=>3,d=>3,j=>2,l=>6,c=>-2,k=>-76,h=>3,b=>4,g=>4,f=>-1,i=>-3} affffffff47a0200ab00b41e affffffffffffffff47a0200ab00b41e affffffffffffffff47a0200ab00b41e ffffffaf99df00007500b4cc affffffff47a0200ab00b41e affffffff47a0200ab00b41e ffffffffffffffaf99df00007500b4cc affffffff47a0200ab00b41e ffffffaf99df00007500b4cc - {e=>3,a=>-14,m=>2,d=>-1,j=>5,l=>2,c=>3,k=>77,h=>2,b=>0,g=>7,f=>0,i=>1} f2ffffffd88703004a014d12 f2ffffffffffffffd88703004a014d12 f2ffffffffffffffd88703004a014d12 fffffff20fb1c00046804d48 f2ffffffd88703004a014d12 f2ffffffd88703004a014d12 fffffffffffffff20fb1c00046804d48 f2ffffffd88703004a014d12 fffffff20fb1c00046804d48 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>0,n=>2,a=>99,m=>-3,d=>-4,j=>1,l=>6,c=>-3,k=>5,h=>5,b=>2,g=>5,f=>3,i=>0} 630000002ab102004500052e02000000 63000000000000002ab102004500052e0200000000000000 63000000000000002ab102004500052e0200000000000000 0000006356074000a08005d440000000 630000002ab102004500052e02000000 630000002ab102004500052e02000000 000000000000006356074000a08005d44000000000000000 630000002ab102004500052e02000000 0000006356074000a08005d440000000 - {e=>7,n=>4,a=>56,m=>-1,d=>0,j=>4,l=>6,c=>3,k=>123,h=>3,b=>0,g=>0,f=>-1,i=>1} 38000000187e00000b017b3e04000000 3800000000000000187e00000b017b3e0400000000000000 3800000000000000187e00000b017b3e0400000000000000 000000380c7e000066007bdc80000000 38000000187e00000b017b3e04000000 38000000187e00000b017b3e04000000 00000000000000380c7e000066007bdc8000000000000000 38000000187e00000b017b3e04000000 000000380c7e000066007bdc80000000 - {e=>1,n=>0,a=>-72,m=>-1,d=>1,j=>2,l=>5,c=>-2,k=>29,h=>1,b=>1,g=>1,f=>2,i=>-3} b8ffffff71a20000a9001d3d00000000 b8ffffffffffffff71a20000a9001d3d0000000000000000 b8ffffffffffffff71a20000a9001d3d0000000000000000 ffffffb83894400035001dbc00000000 b8ffffff71a20000a9001d3d00000000 b8ffffff71a20000a9001d3d00000000 ffffffffffffffb83894400035001dbc0000000000000000 b8ffffff71a20000a9001d3d00000000 ffffffb83894400035001dbc00000000 - {e=>6,n=>5,a=>-35,m=>-3,d=>-2,j=>5,l=>6,c=>-1,k=>87,h=>4,b=>7,g=>0,f=>1,i=>-1} ddffffffbf1d00007c01572e05000000 ddffffffffffffffbf1d00007c01572e0500000000000000 ddffffffffffffffbf1d00007c01572e0500000000000000 ffffffddff6200009e8057d4a0000000 ddffffffbf1d00007c01572e05000000 ddffffffbf1d00007c01572e05000000 ffffffffffffffddff6200009e8057d4a000000000000000 ddffffffbf1d00007c01572e05000000 ffffffddff6200009e8057d4a0000000 - {e=>0,n=>1,a=>-32,m=>-1,d=>0,j=>6,l=>3,c=>1,k=>-26,h=>3,b=>1,g=>4,f=>-1,i=>3} e0ffffff097002009b01e63b01000000 e0ffffffffffffff097002009b01e63b0100000000000000 e0ffffffffffffff097002009b01e63b0100000000000000 ffffffe0240f00006f00e67c20000000 e0ffffff097002009b01e63b01000000 e0ffffff097002009b01e63b01000000 ffffffffffffffe0240f00006f00e67c2000000000000000 e0ffffff097002009b01e63b01000000 ffffffe0240f00006f00e67c20000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>4,n=>5,a=>-63,m=>0,d=>-4,j=>0,l=>3,c=>2,k=>0,h=>4,b=>6,g=>3,f=>0,o=>255,i=>1} c1ffffff168901000c00000305ff0000 c1ffffffffffffff168901000c00000305ff000000000000 c1ffffffffffffff168901000c00000305ff000000000000 ffffffc1ca40c00084000060a0ff0000 c1ffffff168901000c00000305ff0000 c1ffffff168901000c00000305ff0000 ffffffffffffffc1ca40c00084000060a0ff000000000000 c1ffffff168901000c00000305ff0000 ffffffc1ca40c00084000060a0ff0000 - {e=>4,n=>4,a=>-45,m=>-1,d=>-3,j=>5,l=>4,c=>-3,k=>-116,h=>7,b=>7,g=>0,f=>1,o=>47,i=>3} d3ffffff6f1900005f018c3c042f0000 d3ffffffffffffff6f1900005f018c3c042f000000000000 d3ffffffffffffff6f1900005f018c3c042f000000000000 ffffffd3f6c20000ee808c9c802f0000 d3ffffff6f1900005f018c3c042f0000 d3ffffff6f1900005f018c3c042f0000 ffffffffffffffd3f6c20000ee808c9c802f000000000000 d3ffffff6f1900005f018c3c042f0000 ffffffd3f6c20000ee808c9c802f0000 - {e=>2,n=>7,a=>37,m=>3,d=>2,j=>5,l=>5,c=>-2,k=>86,h=>3,b=>7,g=>5,f=>-2,o=>120,i=>-2} 25000000b7e402007301561d07780000 2500000000000000b7e402007301561d0778000000000000 2500000000000000b7e402007301561d0778000000000000 00000025f92d40007a8056ace0780000 25000000b7e402007301561d07780000 25000000b7e402007301561d07780000 0000000000000025f92d40007a8056ace078000000000000 25000000b7e402007301561d07780000 00000025f92d40007a8056ace0780000 - {e=>7,n=>3,a=>-38,m=>-4,d=>0,j=>4,l=>5,c=>0,k=>30,h=>7,b=>7,g=>0,f=>3,o=>182,i=>-2} daffffff073e000037011e2503b60000 daffffffffffffff073e000037011e2503b6000000000000 daffffffffffffff073e000037011e2503b6000000000000 ffffffdae0760000fa001eb060b60000 daffffff073e000037011e2503b60000 daffffff073e000037011e2503b60000 ffffffffffffffdae0760000fa001eb060b6000000000000 daffffff073e000037011e2503b60000 ffffffdae0760000fa001eb060b60000 - {e=>4,n=>1,a=>-127,m=>0,d=>-4,j=>1,l=>7,c=>0,k=>-88,h=>1,b=>4,g=>3,f=>-2,o=>194,i=>-2} 81ffffff04e901007100a80701c20000 81ffffffffffffff04e901007100a80701c2000000000000 81ffffffffffffff04e901007100a80701c2000000000000 ffffff81824cc0003880a8e020c20000 81ffffff04e901007100a80701c20000 81ffffff04e901007100a80701c20000 ffffffffffffff81824cc0003880a8e020c2000000000000 81ffffff04e901007100a80701c20000 ffffff81824cc0003880a8e020c20000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; }; - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>4} 04000000 04000000 04000000 80000000 04000000 04000000 80000000 04000000 80000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; }; - {a=>0,b=>-1} 38000000 38000000 38000000 1c000000 38000000 38000000 1c000000 38000000 1c000000 - {a=>0,b=>2} 10000000 10000000 10000000 08000000 10000000 10000000 08000000 10000000 08000000 - {a=>1,b=>0} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 - {a=>0,b=>3} 18000000 18000000 18000000 0c000000 18000000 18000000 0c000000 18000000 0c000000 - {a=>5,b=>-1} 3d000000 3d000000 3d000000 bc000000 3d000000 3d000000 bc000000 3d000000 bc000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>3,a=>0,b=>-3} e8000000 e8000000 e8000000 15800000 e8000000 e8000000 15800000 e8000000 15800000 - {c=>3,a=>7,b=>-4} e7000000 e7000000 e7000000 f1800000 e7000000 e7000000 f1800000 e7000000 f1800000 - {c=>2,a=>3,b=>3} 9b000000 9b000000 9b000000 6d000000 9b000000 9b000000 6d000000 9b000000 6d000000 - {c=>0,a=>3,b=>-3} 2b000000 2b000000 2b000000 74000000 2b000000 2b000000 74000000 2b000000 74000000 - {c=>-1,a=>3,b=>2} d3010000 d3010000 d3010000 6b800000 d3010000 d3010000 6b800000 d3010000 6b800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>3,a=>7,b=>-4,d=>7} e70e0000 e70e0000 e70e0000 f1f00000 e70e0000 e70e0000 f1f00000 e70e0000 f1f00000 - {c=>1,a=>2,b=>1,d=>0} 4a000000 4a000000 4a000000 44800000 4a000000 4a000000 44800000 4a000000 44800000 - {c=>-1,a=>1,b=>-4,d=>5} e10b0000 e10b0000 e10b0000 33d00000 e10b0000 e10b0000 33d00000 e10b0000 33d00000 - {c=>3,a=>6,b=>-1,d=>0} fe000000 fe000000 fe000000 dd800000 fe000000 fe000000 dd800000 fe000000 dd800000 - {c=>1,a=>4,b=>-2,d=>0} 74000000 74000000 74000000 98800000 74000000 74000000 98800000 74000000 98800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>2,c=>-2,a=>3,b=>-2,d=>6} b32d0000 b32d0000 b32d0000 7b640000 b32d0000 b32d0000 7b640000 b32d0000 7b640000 - {e=>-2,c=>-1,a=>3,b=>-3,d=>2} eb650000 eb650000 eb650000 77ac0000 eb650000 eb650000 77ac0000 eb650000 77ac0000 - {e=>3,c=>1,a=>7,b=>-1,d=>3} 7f360000 7f360000 7f360000 fcb60000 7f360000 7f360000 fcb60000 7f360000 fcb60000 - {e=>-4,c=>-2,a=>5,b=>-4,d=>1} a5430000 a5430000 a5430000 b3180000 a5430000 a5430000 b3180000 a5430000 b3180000 - {e=>1,c=>-2,a=>4,b=>-2,d=>4} b4190000 b4190000 b4190000 9b420000 b4190000 b4190000 9b420000 b4190000 9b420000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>-3,c=>1,a=>4,b=>-1,d=>2,f=>2} 7c540100 7c540100 7c540100 9caa8000 7c540100 7c540100 9caa8000 7c540100 9caa8000 - {e=>3,c=>2,a=>5,b=>-1,d=>0,f=>4} bd300200 bd300200 bd300200 bd070000 bd300200 bd300200 bd070000 bd300200 bd070000 - {e=>1,c=>-3,a=>3,b=>0,d=>6,f=>6} 431d0300 431d0300 431d0300 62e38000 431d0300 431d0300 62e38000 431d0300 62e38000 - {e=>2,c=>0,a=>1,b=>-3,d=>1,f=>6} 29220300 29220300 29220300 34158000 29220300 29220300 34158000 29220300 34158000 - {e=>2,c=>1,a=>4,b=>3,d=>0,f=>4} 5c200200 5c200200 5c200200 8c850000 5c200200 5c200200 8c850000 5c200200 8c850000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>-4,c=>0,a=>2,b=>2,d=>2,f=>3} 12c40100 12c40100 12c40100 4828c000 12c40100 12c40100 4828c000 12c40100 4828c000 - {e=>2,c=>-4,a=>0,b=>2,d=>4,f=>2} 10290100 10290100 10290100 0a448000 10290100 10290100 0a448000 10290100 0a448000 - {e=>-2,c=>-4,a=>4,b=>0,d=>3,f=>0} 04670000 04670000 04670000 823c0000 04670000 04670000 823c0000 04670000 823c0000 - {e=>-1,c=>1,a=>2,b=>3,d=>7,f=>0} 5a7e0000 5a7e0000 5a7e0000 4cfe0000 5a7e0000 5a7e0000 4cfe0000 5a7e0000 4cfe0000 - {e=>0,c=>-1,a=>1,b=>-3,d=>0,f=>5} e9810200 e9810200 e9810200 37814000 e9810200 e9810200 37814000 e9810200 37814000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>3,c=>1,a=>1,g=>6,b=>0,d=>5,f=>2} 413a010006000000 413a010006000000 413a010006000000 20d68000c0000000 413a010006000000 413a010006000000 20d68000c0000000 413a010006000000 20d68000c0000000 - {e=>-2,c=>-2,a=>3,g=>0,b=>3,d=>0,f=>7} 9be1030000000000 9be1030000000000 9be1030000000000 6f0dc00000000000 9be1030000000000 9be1030000000000 6f0dc00000000000 9be1030000000000 6f0dc00000000000 - {e=>-2,c=>-4,a=>6,g=>3,b=>-4,d=>6,f=>3} 26ed010003000000 26ed010003000000 26ed010003000000 d26cc00060000000 26ed010003000000 26ed010003000000 d26cc00060000000 26ed010003000000 d26cc00060000000 - {e=>-2,c=>1,a=>7,g=>4,b=>3,d=>7,f=>3} 5fee010004000000 5fee010004000000 5fee010004000000 ecfcc00080000000 5fee010004000000 5fee010004000000 ecfcc00080000000 5fee010004000000 ecfcc00080000000 - {e=>-2,c=>-3,a=>0,g=>1,b=>-3,d=>7,f=>5} 68ef020001000000 68ef020001000000 68ef020001000000 16fd400020000000 68ef020001000000 68ef020001000000 16fd400020000000 68ef020001000000 16fd400020000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>-2,a=>2,d=>0,c=>-4,h=>1,b=>-4,g=>0,f=>0} 2261000008000000 2261000008000000 2261000008000000 520c000004000000 2261000008000000 2261000008000000 520c000004000000 2261000008000000 520c000004000000 - {e=>-1,a=>0,d=>5,c=>-2,h=>-3,b=>2,g=>2,f=>7} 90fb03002a000000 90fb03002a000000 90fb03002a000000 0b5fc00054000000 90fb03002a000000 90fb03002a000000 0b5fc00054000000 90fb03002a000000 0b5fc00054000000 - {e=>3,a=>4,d=>0,c=>2,h=>-3,b=>3,g=>2,f=>7} 9cb003002a000000 9cb003002a000000 9cb003002a000000 8d07c00054000000 9cb003002a000000 9cb003002a000000 8d07c00054000000 9cb003002a000000 8d07c00054000000 - {e=>2,a=>7,d=>5,c=>2,h=>1,b=>0,g=>0,f=>2} 872a010008000000 872a010008000000 872a010008000000 e154800004000000 872a010008000000 872a010008000000 e154800004000000 872a010008000000 e154800004000000 - {e=>-3,a=>3,d=>6,c=>2,h=>0,b=>-1,g=>7,f=>4} bb5c020007000000 bb5c020007000000 bb5c020007000000 7d6b0000e0000000 bb5c020007000000 bb5c020007000000 7d6b0000e0000000 bb5c020007000000 7d6b0000e0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>2,a=>3,d=>4,c=>1,h=>-4,b=>-1,g=>4,f=>2,i=>7} 7b280100e4010000 7b280100e4010000 7b280100e4010000 7cc4800093800000 7b280100e4010000 7b280100e4010000 7cc4800093800000 7b280100e4010000 7cc4800093800000 - {e=>2,a=>7,d=>2,c=>-3,h=>2,b=>-1,g=>6,f=>7,i=>5} 7fa5030056010000 7fa5030056010000 7fa5030056010000 fea5c000ca800000 7fa5030056010000 7fa5030056010000 fea5c000ca800000 7fa5030056010000 fea5c000ca800000 - {e=>2,a=>2,d=>5,c=>-2,h=>0,b=>-1,g=>0,f=>6,i=>7} ba2b0300c0010000 ba2b0300c0010000 ba2b0300c0010000 5f55800003800000 ba2b0300c0010000 ba2b0300c0010000 5f55800003800000 ba2b0300c0010000 5f55800003800000 - {e=>-4,a=>0,d=>7,c=>0,h=>1,b=>3,g=>6,f=>0,i=>2} 184e00008e000000 184e00008e000000 184e00008e000000 0c780000c5000000 184e00008e000000 184e00008e000000 0c780000c5000000 184e00008e000000 0c780000c5000000 - {e=>0,a=>4,d=>3,c=>-1,h=>-4,b=>-4,g=>3,f=>6,i=>7} e4070300e3010000 e4070300e3010000 e4070300e3010000 93b1800073800000 e4070300e3010000 e4070300e3010000 93b1800073800000 e4070300e3010000 93b1800073800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>-3,a=>2,d=>5,j=>51,c=>-3,h=>-4,b=>-1,g=>5,f=>7,i=>4} 7adb030025013300 7adb030025013300 7adb030025013300 5edbc000b2003300 7adb030025013300 7adb030025013300 5edbc000b2003300 7adb030025013300 5edbc000b2003300 - {e=>2,a=>5,d=>0,j=>-45,c=>-2,h=>2,b=>-1,g=>6,f=>3,i=>2} bda101009600d300 bda101009600d300 bda101009600d300 bf04c000c900d300 bda101009600d300 bda101009600d300 bf04c000c900d300 bda101009600d300 bf04c000c900d300 - {e=>-1,a=>3,d=>4,j=>-26,c=>2,h=>3,b=>0,g=>1,f=>5,i=>0} 83f802001900e600 83f802001900e600 83f802001900e600 614f40002c00e600 83f802001900e600 83f802001900e600 614f40002c00e600 83f802001900e600 614f40002c00e600 - {e=>1,a=>4,d=>0,j=>-56,c=>1,h=>3,b=>2,g=>2,f=>3,i=>4} 549001001a01c800 549001001a01c800 549001001a01c800 8882c0004e00c800 549001001a01c800 549001001a01c800 8882c0004e00c800 549001001a01c800 8882c0004e00c800 - {e=>2,a=>7,d=>4,j=>-122,c=>-4,h=>1,b=>-2,g=>1,f=>4,i=>6} 3729020089018600 3729020089018600 3729020089018600 fa45000027008600 3729020089018600 3729020089018600 fa45000027008600 3729020089018600 fa45000027008600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>3,a=>6,d=>7,j=>112,c=>0,k=>2,h=>-4,b=>-3,g=>3,f=>7,i=>5} 2ebe030063017002 2ebe030063017002 2ebe030063017002 d477c00072807040 2ebe030063017002 2ebe030063017002 d477c00072807040 2ebe030063017002 d477c00072807040 - {e=>-3,a=>1,d=>7,j=>-86,c=>3,k=>2,h=>3,b=>-4,g=>7,f=>0,i=>3} e15e0000df00aa02 e15e0000df00aa02 e15e0000df00aa02 31fa0000ed80aa40 e15e0000df00aa02 e15e0000df00aa02 31fa0000ed80aa40 e15e0000df00aa02 31fa0000ed80aa40 - {e=>-2,a=>0,d=>6,j=>-117,c=>-3,k=>7,h=>0,b=>-1,g=>6,f=>7,i=>2} 78ed030086008b07 78ed030086008b07 78ed030086008b07 1eedc000c1008be0 78ed030086008b07 78ed030086008b07 1eedc000c1008be0 78ed030086008b07 1eedc000c1008be0 - {e=>1,a=>5,d=>5,j=>-119,c=>-2,k=>6,h=>1,b=>2,g=>3,f=>2,i=>0} 951b01000b008906 951b01000b008906 951b01000b008906 ab528000640089c0 951b01000b008906 951b01000b008906 ab528000640089c0 951b01000b008906 ab528000640089c0 - {e=>3,a=>6,d=>6,j=>-128,c=>-2,k=>0,h=>2,b=>-4,g=>3,f=>3,i=>5} a6bd010053018000 a6bd010053018000 a6bd010053018000 d366c0006a808000 a6bd010053018000 a6bd010053018000 d366c0006a808000 a6bd010053018000 d366c0006a808000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>-1,a=>1,d=>3,j=>90,l=>-1,c=>2,k=>4,h=>0,b=>-2,g=>5,f=>4,i=>3} b1760200c5005a3c b1760200c5005a3c b1760200c5005a3c 393f0000a1805a9c b1760200c5005a3c b1760200c5005a3c 393f0000a1805a9c b1760200c5005a3c 393f0000a1805a9c - {e=>3,a=>0,d=>3,j=>27,l=>-2,c=>-3,k=>5,h=>0,b=>-1,g=>2,f=>1,i=>5} 78b7000042011b35 78b7000042011b35 78b7000042011b35 1eb6400042801bb8 78b7000042011b35 78b7000042011b35 1eb6400042801bb8 78b7000042011b35 1eb6400042801bb8 - {e=>1,a=>1,d=>3,j=>-13,l=>-4,c=>-3,k=>5,h=>2,b=>-2,g=>6,f=>1,i=>1} 719700005600f325 719700005600f325 719700005600f325 3ab24000c880f3b0 719700005600f325 719700005600f325 3ab24000c880f3b0 719700005600f325 3ab24000c880f3b0 - {e=>2,a=>3,d=>7,j=>-47,l=>-2,c=>-3,k=>1,h=>3,b=>-3,g=>6,f=>3,i=>6} 6baf01009e01d131 6baf01009e01d131 6baf01009e01d131 76f4c000cf00d138 6baf01009e01d131 6baf01009e01d131 76f4c000cf00d138 6baf01009e01d131 76f4c000cf00d138 - {e=>1,a=>3,d=>4,j=>20,l=>2,c=>-4,k=>3,h=>-3,b=>2,g=>4,f=>0,i=>4} 131900002c011413 131900002c011413 131900002c011413 6a42000096001468 131900002c011413 131900002c011413 6a42000096001468 131900002c011413 6a42000096001468 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-2,a=>2,m=>1,d=>3,j=>66,l=>2,c=>1,k=>7,h=>0,b=>3,g=>3,f=>3,i=>4} 5ae601000301421701000000 5ae601000301421701000000 5ae601000301421701000000 4cbcc000620042e820000000 5ae601000301421701000000 5ae601000301421701000000 4cbcc000620042e820000000 5ae601000301421701000000 4cbcc000620042e820000000 - {e=>3,a=>7,m=>5,d=>2,j=>87,l=>-2,c=>-4,k=>4,h=>0,b=>1,g=>4,f=>1,i=>1} 0fb500004400573405000000 0fb500004400573405000000 0fb500004400573405000000 e626400080805798a0000000 0fb500004400573405000000 0fb500004400573405000000 e626400080805798a0000000 0fb500004400573405000000 e626400080805798a0000000 - {e=>0,a=>3,m=>7,d=>4,j=>2,l=>-3,c=>2,k=>7,h=>-4,b=>-2,g=>0,f=>4,i=>1} b30802006000022f07000000 b30802006000022f07000000 b30802006000022f07000000 79410000108002f4e0000000 b30802006000022f07000000 b30802006000022f07000000 79410000108002f4e0000000 b30802006000022f07000000 79410000108002f4e0000000 - {e=>0,a=>6,m=>1,d=>0,j=>-127,l=>0,c=>0,k=>2,h=>-3,b=>-2,g=>3,f=>2,i=>1} 360001006b00810201000000 360001006b00810201000000 360001006b00810201000000 d80080007480814020000000 360001006b00810201000000 360001006b00810201000000 d80080007480814020000000 360001006b00810201000000 d80080007480814020000000 - {e=>-1,a=>4,m=>4,d=>0,j=>-10,l=>-3,c=>0,k=>4,h=>-4,b=>1,g=>6,f=>3,i=>0} 0cf001002600f62c04000000 0cf001002600f62c04000000 0cf001002600f62c04000000 840ec000d000f69480000000 0cf001002600f62c04000000 0cf001002600f62c04000000 840ec000d000f69480000000 0cf001002600f62c04000000 840ec000d000f69480000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>-3,n=>71,a=>1,m=>5,d=>3,j=>-14,l=>-1,c=>0,k=>5,h=>-3,b=>0,g=>0,f=>5,i=>5} 01d602006801f23d05470000 01d602006801f23d05470000 01d602006801f23d05470000 203b40001680f2bca0470000 01d602006801f23d05470000 01d602006801f23d05470000 203b40001680f2bca0470000 01d602006801f23d05470000 203b40001680f2bca0470000 - {e=>1,n=>212,a=>5,m=>3,d=>1,j=>-32,l=>3,c=>-2,k=>5,h=>-2,b=>-3,g=>4,f=>0,i=>4} ad1300003401e01d03d40000 ad1300003401e01d03d40000 ad1300003401e01d03d40000 b71200009a00e0ac60d40000 ad1300003401e01d03d40000 ad1300003401e01d03d40000 b71200009a00e0ac60d40000 ad1300003401e01d03d40000 b71200009a00e0ac60d40000 - {e=>-1,n=>32,a=>4,m=>3,d=>1,j=>-40,l=>-2,c=>-1,k=>3,h=>-1,b=>2,g=>0,f=>5,i=>5} d4f302007801d83303200000 d4f302007801d83303200000 d4f302007801d83303200000 8b9f40001e80d87860200000 d4f302007801d83303200000 d4f302007801d83303200000 8b9f40001e80d87860200000 d4f302007801d83303200000 8b9f40001e80d87860200000 - {e=>-1,n=>95,a=>2,m=>6,d=>6,j=>-84,l=>0,c=>2,k=>0,h=>2,b=>-3,g=>2,f=>3,i=>2} aafc01009200ac00065f0000 aafc01009200ac00065f0000 aafc01009200ac00065f0000 556ec0004900ac00c05f0000 aafc01009200ac00065f0000 aafc01009200ac00065f0000 556ec0004900ac00c05f0000 aafc01009200ac00065f0000 556ec0004900ac00c05f0000 - {e=>0,n=>37,a=>4,m=>6,d=>1,j=>46,l=>2,c=>-3,k=>7,h=>0,b=>3,g=>0,f=>7,i=>0} 5c83030000002e1706250000 5c83030000002e1706250000 5c83030000002e1706250000 8e91c00000002ee8c0250000 5c83030000002e1706250000 5c83030000002e1706250000 8e91c00000002ee8c0250000 5c83030000002e1706250000 8e91c00000002ee8c0250000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; }; - {a=>106,b=>0} 6a000000 6a000000 6a000000 6a000000 6a000000 6a000000 6a000000 6a000000 6a000000 - {a=>-10,b=>0} f6000000 f6000000 f6000000 f6000000 f6000000 f6000000 f6000000 f6000000 f6000000 - {a=>12,b=>6} 0c060000 0c060000 0c060000 0cc00000 0c060000 0c060000 0cc00000 0c060000 0cc00000 - {a=>-86,b=>1} aa010000 aa010000 aa010000 aa200000 aa010000 aa010000 aa200000 aa010000 aa200000 - {a=>-33,b=>2} df020000 df020000 df020000 df400000 df020000 df020000 df400000 df020000 df400000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; }; - {c=>-3,a=>-108,b=>2} 942a0000 942a0000 942a0000 94540000 942a0000 942a0000 94540000 942a0000 94540000 - {c=>1,a=>96,b=>5} 600d0000 600d0000 600d0000 60a40000 600d0000 600d0000 60a40000 600d0000 60a40000 - {c=>3,a=>-121,b=>6} 871e0000 871e0000 871e0000 87cc0000 871e0000 871e0000 87cc0000 871e0000 87cc0000 - {c=>-1,a=>-58,b=>1} c6390000 c6390000 c6390000 c63c0000 c6390000 c6390000 c63c0000 c6390000 c63c0000 - {c=>2,a=>62,b=>2} 3e120000 3e120000 3e120000 3e480000 3e120000 3e120000 3e480000 3e120000 3e480000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>40,b=>3,d=>-2} 28a30100 28a30100 28a30100 28730000 28a30100 28a30100 28730000 28a30100 28730000 - {c=>-3,a=>68,b=>4,d=>-3} 446c0100 446c0100 446c0100 44968000 446c0100 446c0100 44968000 446c0100 44968000 - {c=>-3,a=>21,b=>0,d=>3} 15e80000 15e80000 15e80000 15158000 15e80000 15e80000 15158000 15e80000 15158000 - {c=>-3,a=>-98,b=>2,d=>-1} 9eea0100 9eea0100 9eea0100 9e578000 9eea0100 9eea0100 9e578000 9eea0100 9e578000 - {c=>-3,a=>74,b=>7,d=>1} 4a6f0000 4a6f0000 4a6f0000 4af48000 4a6f0000 4a6f0000 4af48000 4a6f0000 4af48000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>-2,a=>4,b=>0,d=>-4} 04300700 04300700 04300700 041a3000 04300700 04300700 041a3000 04300700 041a3000 - {e=>4,c=>-1,a=>44,b=>0,d=>2} 2cb80800 2cb80800 2cb80800 2c1d4000 2cb80800 2cb80800 2c1d4000 2cb80800 2c1d4000 - {e=>7,c=>-1,a=>-108,b=>5,d=>-2} 94bd0f00 94bd0f00 94bd0f00 94bf7000 94bd0f00 94bd0f00 94bf7000 94bd0f00 94bf7000 - {e=>3,c=>2,a=>-123,b=>0,d=>3} 85d00600 85d00600 85d00600 8509b000 85d00600 85d00600 8509b000 85d00600 8509b000 - {e=>3,c=>0,a=>-85,b=>5,d=>0} ab050600 ab050600 ab050600 aba03000 ab050600 ab050600 aba03000 ab050600 aba03000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>-3,a=>-86,b=>1,d=>-3,f=>3} aa693500 aa693500 aa693500 aa36a600 aa693500 aa693500 aa36a600 aa693500 aa36a600 - {e=>4,c=>1,a=>-10,b=>0,d=>0,f=>3} f6083800 f6083800 f6083800 f6044600 f6083800 f6083800 f6044600 f6083800 f6044600 - {e=>7,c=>-2,a=>18,b=>2,d=>-2,f=>-1} 12b27f00 12b27f00 12b27f00 125b7e00 12b27f00 12b27f00 125b7e00 12b27f00 125b7e00 - {e=>2,c=>3,a=>-8,b=>5,d=>1,f=>2} f85d2400 f85d2400 f85d2400 f8aca400 f85d2400 f85d2400 f8aca400 f85d2400 f8aca400 - {e=>1,c=>0,a=>-98,b=>0,d=>1,f=>0} 9e400200 9e400200 9e400200 9e009000 9e400200 9e400200 9e009000 9e400200 9e009000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>3,c=>1,a=>126,g=>5,b=>0,d=>0,f=>3} 7e08b602 7e08b602 7e08b602 7e043740 7e08b602 7e08b602 7e043740 7e08b602 7e043740 - {e=>0,c=>-4,a=>-72,g=>4,b=>2,d=>-1,f=>2} b8e22102 b8e22102 b8e22102 b8538500 b8e22102 b8e22102 b8538500 b8e22102 b8538500 - {e=>4,c=>-2,a=>-68,g=>1,b=>6,d=>3,f=>3} bcf6b800 bcf6b800 bcf6b800 bcd9c640 bcf6b800 bcf6b800 bcd9c640 bcf6b800 bcd9c640 - {e=>1,c=>-2,a=>34,g=>4,b=>7,d=>-4,f=>-4} 22374302 22374302 22374302 22fa1900 22374302 22374302 22fa1900 22374302 22fa1900 - {e=>2,c=>3,a=>13,g=>1,b=>3,d=>2,f=>-3} 0d9bd400 0d9bd400 0d9bd400 0d6d2a40 0d9bd400 0d9bd400 0d6d2a40 0d9bd400 0d6d2a40 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>6,c=>2,a=>-126,g=>7,b=>4,d=>-3,f=>2} 8254ad03 8254ad03 8254ad03 828ae5c0 8254ad03 8254ad03 828ae5c0 8254ad03 828ae5c0 - {e=>7,c=>-3,a=>-72,g=>3,b=>6,d=>-4,f=>-3} b82edf01 b82edf01 b82edf01 b8d67ac0 b82edf01 b82edf01 b8d67ac0 b82edf01 b8d67ac0 - {e=>6,c=>-3,a=>67,g=>7,b=>6,d=>-1,f=>-4} 43eecd03 43eecd03 43eecd03 43d7e9c0 43eecd03 43eecd03 43d7e9c0 43eecd03 43d7e9c0 - {e=>4,c=>-2,a=>-37,g=>6,b=>2,d=>3,f=>3} dbf23803 dbf23803 dbf23803 db59c780 dbf23803 dbf23803 db59c780 dbf23803 db59c780 - {e=>4,c=>3,a=>23,g=>7,b=>1,d=>2,f=>2} 1799a803 1799a803 1799a803 172d45c0 1799a803 1799a803 172d45c0 1799a803 172d45c0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>106,d=>0,c=>1,h=>0,b=>6,g=>3,f=>3} 6a0eb60100000000 6a0eb60100000000 6a0eb60100000000 6ac436c000000000 6a0eb60100000000 6a0eb60100000000 6ac436c000000000 6a0eb60100000000 6ac436c000000000 - {e=>0,a=>102,d=>-2,c=>-2,h=>0,b=>5,g=>0,f=>2} 66b5210000000000 66b5210000000000 66b5210000000000 66bb040000000000 66b5210000000000 66b5210000000000 66bb040000000000 66b5210000000000 66bb040000000000 - {e=>1,a=>-118,d=>2,c=>-3,h=>1,b=>1,g=>6,f=>3} 8aa9320301000000 8aa9320301000000 8aa9320301000000 8a35178020000000 8aa9320301000000 8aa9320301000000 8a35178020000000 8aa9320301000000 8a35178020000000 - {e=>0,a=>60,d=>-3,c=>2,h=>0,b=>3,g=>0,f=>0} 3c53010000000000 3c53010000000000 3c53010000000000 3c6a800000000000 3c53010000000000 3c53010000000000 3c6a800000000000 3c53010000000000 3c6a800000000000 - {e=>5,a=>19,d=>-2,c=>3,h=>1,b=>2,g=>4,f=>3} 139a3b0201000000 139a3b0201000000 139a3b0201000000 134f570020000000 139a3b0201000000 139a3b0201000000 134f570020000000 139a3b0201000000 134f570020000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>126,d=>2,c=>1,h=>5,b=>4,g=>6,f=>3,i=>-4} 7e8c380325000000 7e8c380325000000 7e8c380325000000 7e854780b0000000 7e8c380325000000 7e8c380325000000 7e854780b0000000 7e8c380325000000 7e854780b0000000 - {e=>7,a=>-19,d=>0,c=>1,h=>2,b=>3,g=>5,f=>0,i=>-3} ed0b8e022a000000 ed0b8e022a000000 ed0b8e022a000000 ed64714054000000 ed0b8e022a000000 ed0b8e022a000000 ed64714054000000 ed0b8e022a000000 ed64714054000000 - {e=>0,a=>122,d=>3,c=>3,h=>2,b=>4,g=>2,f=>-2,i=>2} 7adc600112000000 7adc600112000000 7adc600112000000 7a8d8c8048000000 7adc600112000000 7adc600112000000 7a8d8c8048000000 7adc600112000000 7a8d8c8048000000 - {e=>2,a=>62,d=>-4,c=>-4,h=>6,b=>3,g=>5,f=>-2,i=>3} 3e23e5021e000000 3e23e5021e000000 3e23e5021e000000 3e722d40cc000000 3e23e5021e000000 3e23e5021e000000 3e722d40cc000000 3e23e5021e000000 3e722d40cc000000 - {e=>1,a=>64,d=>-3,c=>-4,h=>0,b=>3,g=>1,f=>-4,i=>-4} 4063c30020000000 4063c30020000000 4063c30020000000 4072984010000000 4063c30020000000 4063c30020000000 4072984010000000 4063c30020000000 4072984010000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>6,a=>-51,d=>2,j=>2,c=>1,h=>0,b=>4,g=>2,f=>0,i=>-3} cd8c0c01a8000000 cd8c0c01a8000000 cd8c0c01a8000000 cd85608015000000 cd8c0c01a8000000 cd8c0c01a8000000 cd85608015000000 cd8c0c01a8000000 cd85608015000000 - {e=>3,a=>36,d=>-4,j=>7,c=>3,h=>7,b=>5,g=>6,f=>0,i=>-2} 241d0703f7010000 241d0703f7010000 241d0703f7010000 24ae3180fb800000 241d0703f7010000 241d0703f7010000 24ae3180fb800000 241d0703f7010000 24ae3180fb800000 - {e=>3,a=>-65,d=>-2,j=>7,c=>-1,h=>5,b=>0,g=>5,f=>3,i=>-1} bfb8b702fd010000 bfb8b702fd010000 bfb8b702fd010000 bf1f3740bf800000 bfb8b702fd010000 bfb8b702fd010000 bf1f3740bf800000 bfb8b702fd010000 bf1f3740bf800000 - {e=>3,a=>-4,d=>2,j=>4,c=>1,h=>1,b=>5,g=>1,f=>-1,i=>1} fc8df60009010000 fc8df60009010000 fc8df60009010000 fca53e4026000000 fc8df60009010000 fc8df60009010000 fca53e4026000000 fc8df60009010000 fca53e4026000000 - {e=>5,a=>114,d=>2,j=>0,c=>1,h=>2,b=>7,g=>2,f=>-3,i=>-3} 728f5a012a000000 728f5a012a000000 728f5a012a000000 72e55a8054000000 728f5a012a000000 728f5a012a000000 72e55a8054000000 728f5a012a000000 72e55a8054000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>66,d=>1,j=>3,c=>3,k=>-88,h=>4,b=>5,g=>0,f=>3,i=>1} 425d3c00cc00a800 425d3c00cc00a800 425d3c00cc00a800 42ace6008580a800 425d3c00cc00a800 425d3c00cc00a800 42ace6008580a800 425d3c00cc00a800 42ace6008580a800 - {e=>3,a=>-27,d=>3,j=>3,c=>-4,k=>-71,h=>2,b=>6,g=>1,f=>1,i=>-3} e5e69600ea00b900 e5e69600ea00b900 e5e69600ea00b900 e5d1b2405580b900 e5e69600ea00b900 e5e69600ea00b900 e5d1b2405580b900 e5e69600ea00b900 e5d1b2405580b900 - {e=>7,a=>-4,d=>-3,j=>1,c=>-3,k=>-71,h=>5,b=>0,g=>3,f=>2,i=>-4} fc68af016500b900 fc68af016500b900 fc68af016500b900 fc16f4c0b080b900 fc68af016500b900 fc68af016500b900 fc16f4c0b080b900 fc68af016500b900 fc16f4c0b080b900 - {e=>7,a=>-35,d=>-3,j=>6,c=>2,k=>50,h=>5,b=>5,g=>6,f=>1,i=>2} dd551f0395013200 dd551f0395013200 dd551f0395013200 ddaaf380ab003200 dd551f0395013200 dd551f0395013200 ddaaf380ab003200 dd551f0395013200 ddaaf380ab003200 - {e=>5,a=>-47,d=>0,j=>3,c=>3,k=>-120,h=>3,b=>2,g=>7,f=>2,i=>1} d11aaa03cb008800 d11aaa03cb008800 d11aaa03cb008800 d14c55c065808800 d11aaa03cb008800 d11aaa03cb008800 d14c55c065808800 d11aaa03cb008800 d14c55c065808800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>2,a=>-32,d=>-4,j=>1,l=>2,c=>-4,k=>-17,h=>5,b=>0,g=>3,f=>1,i=>-3} e02095016d00ef02 e02095016d00ef02 e02095016d00ef02 e01222c0b480ef40 e02095016d00ef02 e02095016d00ef02 e01222c0b480ef40 e02095016d00ef02 e01222c0b480ef40 - {e=>7,a=>-51,d=>2,j=>0,l=>7,c=>-1,k=>-66,h=>1,b=>5,g=>3,f=>1,i=>-1} cdbd9e013900be07 cdbd9e013900be07 cdbd9e013900be07 cdbd72c03c00bee0 cdbd9e013900be07 cdbd9e013900be07 cdbd72c03c00bee0 cdbd9e013900be07 cdbd72c03c00bee0 - {e=>5,a=>73,d=>2,j=>4,l=>7,c=>-3,k=>-107,h=>4,b=>6,g=>4,f=>-2,i=>-4} 49ae6a0224019507 49ae6a0224019507 49ae6a0224019507 49d55d00920095e0 49ae6a0224019507 49ae6a0224019507 49d55d00920095e0 49ae6a0224019507 49d55d00920095e0 - {e=>7,a=>-32,d=>0,j=>2,l=>6,c=>1,k=>-119,h=>6,b=>7,g=>0,f=>-4,i=>0} e00f4e0086008906 e00f4e0086008906 e00f4e0086008906 e0e47800c10089c0 e00f4e0086008906 e00f4e0086008906 e0e47800c10089c0 e00f4e0086008906 e0e47800c10089c0 - {e=>7,a=>70,d=>1,j=>3,l=>0,c=>2,k=>-78,h=>4,b=>1,g=>4,f=>3,i=>-1} 46513e02fc00b200 46513e02fc00b200 46513e02fc00b200 4628f7009d80b200 46513e02fc00b200 46513e02fc00b200 4628f7009d80b200 46513e02fc00b200 4628f7009d80b200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>5,a=>82,m=>1,d=>-4,j=>4,l=>4,c=>2,k=>75,h=>1,b=>7,g=>3,f=>-2,i=>2} 5217eb0111014b0c 5217eb0111014b0c 5217eb0111014b0c 52ea5cc02a004b84 5217eb0111014b0c 5217eb0111014b0c 52ea5cc02a004b84 5217eb0111014b0c 52ea5cc02a004b84 - {e=>1,a=>65,m=>0,d=>-2,j=>6,l=>6,c=>1,k=>10,h=>7,b=>6,g=>6,f=>1,i=>3} 418e13039f010a06 418e13039f010a06 418e13039f010a06 41c71380ef000ac0 418e13039f010a06 418e13039f010a06 41c71380ef000ac0 418e13039f010a06 41c71380ef000ac0 - {e=>1,a=>50,m=>0,d=>-1,j=>4,l=>1,c=>3,k=>-39,h=>4,b=>5,g=>1,f=>3,i=>2} 32ddb3001401d901 32ddb3001401d901 32ddb3001401d901 32af96408a00d920 32ddb3001401d901 32ddb3001401d901 32af96408a00d920 32ddb3001401d901 32af96408a00d920 - {e=>1,a=>-30,m=>-3,d=>-3,j=>4,l=>3,c=>0,k=>-58,h=>2,b=>2,g=>4,f=>-3,i=>-1} e24253023a01c62b e24253023a01c62b e24253023a01c62b e2429b005e00c674 e24253023a01c62b e24253023a01c62b e2429b005e00c674 e24253023a01c62b e2429b005e00c674 - {e=>6,a=>-8,m=>-1,d=>-4,j=>1,l=>7,c=>1,k=>-96,h=>4,b=>1,g=>2,f=>-4,i=>3} f8094d015c00a03f f8094d015c00a03f f8094d015c00a03f f82668808c80a0fc f8094d015c00a03f f8094d015c00a03f f82668808c80a0fc f8094d015c00a03f f82668808c80a0fc = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>7,a=>127,m=>-3,d=>2,j=>1,l=>4,c=>3,k=>113,h=>7,b=>0,g=>3,f=>-2,i=>1} 7f98ec014f00712c07000000 7f98ec014f00712c07000000 7f98ec014f00712c07000000 7f0d6cc0e4807194e0000000 7f98ec014f00712c07000000 7f98ec014f00712c07000000 7f0d6cc0e4807194e0000000 7f98ec014f00712c07000000 7f0d6cc0e4807194e0000000 - {e=>4,n=>0,a=>91,m=>2,d=>-1,j=>4,l=>6,c=>0,k=>7,h=>3,b=>0,g=>3,f=>2,i=>2} 5bc0a9011301071600000000 5bc0a9011301071600000000 5bc0a9011301071600000000 5b03c4c06a0007c800000000 5bc0a9011301071600000000 5bc0a9011301071600000000 5b03c4c06a0007c800000000 5bc0a9011301071600000000 5b03c4c06a0007c800000000 - {e=>3,n=>7,a=>-20,m=>-1,d=>-3,j=>0,l=>1,c=>3,k=>18,h=>1,b=>6,g=>4,f=>2,i=>-2} ec5e27023100123907000000 ec5e27023100123907000000 ec5e27023100123907000000 ecceb5003800123ce0000000 ec5e27023100123907000000 ec5e27023100123907000000 ecceb5003800123ce0000000 ec5e27023100123907000000 ecceb5003800123ce0000000 - {e=>6,n=>4,a=>46,m=>-4,d=>-2,j=>7,l=>6,c=>-3,k=>27,h=>0,b=>6,g=>7,f=>2,i=>3} 2eaead03d8011b2604000000 2eaead03d8011b2604000000 2eaead03d8011b2604000000 2ed765c00f801bd080000000 2eaead03d8011b2604000000 2eaead03d8011b2604000000 2ed765c00f801bd080000000 2eaead03d8011b2604000000 2ed765c00f801bd080000000 - {e=>6,n=>5,a=>47,m=>-1,d=>-4,j=>7,l=>6,c=>-3,k=>-66,h=>0,b=>6,g=>0,f=>-4,i=>0} 2f2e4d00c001be3e05000000 2f2e4d00c001be3e05000000 2f2e4d00c001be3e05000000 2fd668000380bedca0000000 2f2e4d00c001be3e05000000 2f2e4d00c001be3e05000000 2fd668000380bedca0000000 2f2e4d00c001be3e05000000 2fd668000380bedca0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>3,a=>90,m=>-1,d=>-4,j=>1,l=>4,c=>2,k=>65,h=>5,b=>7,g=>5,f=>1,o=>24,i=>2} 5a179f025500413c03180000 5a179f025500413c03180000 5a179f025500413c03180000 5aea7340a880419c60180000 5a179f025500413c03180000 5a179f025500413c03180000 5aea7340a880419c60180000 5a179f025500413c03180000 5aea7340a880419c60180000 - {e=>2,n=>4,a=>119,m=>3,d=>-2,j=>6,l=>0,c=>-4,k=>51,h=>3,b=>6,g=>7,f=>-4,o=>208,i=>-4} 77a6c503a301331804d00000 77a6c503a301331804d00000 77a6c503a301331804d00000 77d329c07300330c80d00000 77a6c503a301331804d00000 77a6c503a301331804d00000 77d329c07300330c80d00000 77a6c503a301331804d00000 77d329c07300330c80d00000 - {e=>7,n=>2,a=>-108,m=>-3,d=>2,j=>4,l=>7,c=>-1,k=>14,h=>5,b=>7,g=>3,f=>3,o=>186,i=>3} 94bfbe011d010e2f02ba0000 94bfbe011d010e2f02ba0000 94bfbe011d010e2f02ba0000 94fd76c0ae000ef440ba0000 94bfbe011d010e2f02ba0000 94bfbe011d010e2f02ba0000 94fd76c0ae000ef440ba0000 94bfbe011d010e2f02ba0000 94fd76c0ae000ef440ba0000 - {e=>6,n=>0,a=>-25,m=>-1,d=>1,j=>2,l=>3,c=>-1,k=>-23,h=>6,b=>5,g=>5,f=>2,o=>143,i=>2} e77dac029600e93b008f0000 e77dac029600e93b008f0000 e77dac029600e93b008f0000 e7bce540c900e97c008f0000 e77dac029600e93b008f0000 e77dac029600e93b008f0000 e7bce540c900e97c008f0000 e77dac029600e93b008f0000 e7bce540c900e97c008f0000 - {e=>3,n=>2,a=>-24,m=>0,d=>-1,j=>4,l=>3,c=>3,k=>57,h=>3,b=>7,g=>0,f=>-2,o=>223,i=>2} e8df67001301390302df0000 e8df67001301390302df0000 e8df67001301390302df0000 e8efbc006a00396040df0000 e8df67001301390302df0000 e8df67001301390302df0000 e8efbc006a00396040df0000 e8df67001301390302df0000 e8efbc006a00396040df0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; }; - {a=>-22,b=>5} eaff0500 eaff0500 eaff0500 ffeaa000 eaff0500 eaff0500 ffeaa000 eaff0500 ffeaa000 - {a=>45,b=>7} 2d000700 2d000700 2d000700 002de000 2d000700 2d000700 002de000 2d000700 002de000 - {a=>-48,b=>5} d0ff0500 d0ff0500 d0ff0500 ffd0a000 d0ff0500 d0ff0500 ffd0a000 d0ff0500 ffd0a000 - {a=>-29,b=>0} e3ff0000 e3ff0000 e3ff0000 ffe30000 e3ff0000 e3ff0000 ffe30000 e3ff0000 ffe30000 - {a=>124,b=>1} 7c000100 7c000100 7c000100 007c2000 7c000100 7c000100 007c2000 7c000100 007c2000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-68,b=>0} bcff0000 bcff0000 bcff0000 ffbc0000 bcff0000 bcff0000 ffbc0000 bcff0000 ffbc0000 - {c=>0,a=>-11,b=>4} f5ff0400 f5ff0400 f5ff0400 fff58000 f5ff0400 f5ff0400 fff58000 f5ff0400 fff58000 - {c=>-4,a=>-111,b=>3} 91ff2300 91ff2300 91ff2300 ff917000 91ff2300 91ff2300 ff917000 91ff2300 ff917000 - {c=>-1,a=>-105,b=>0} 97ff3800 97ff3800 97ff3800 ff971c00 97ff3800 97ff3800 ff971c00 97ff3800 ff971c00 - {c=>0,a=>-96,b=>4} a0ff0400 a0ff0400 a0ff0400 ffa08000 a0ff0400 a0ff0400 ffa08000 a0ff0400 ffa08000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-55,b=>7,d=>1} c9ff6700 c9ff6700 c9ff6700 ffc9f080 c9ff6700 c9ff6700 ffc9f080 c9ff6700 ffc9f080 - {c=>3,a=>59,b=>3,d=>-2} 3b009b01 3b009b01 3b009b01 003b6f00 3b009b01 3b009b01 003b6f00 3b009b01 003b6f00 - {c=>-1,a=>-48,b=>3,d=>0} d0ff3b00 d0ff3b00 d0ff3b00 ffd07c00 d0ff3b00 d0ff3b00 ffd07c00 d0ff3b00 ffd07c00 - {c=>-1,a=>-29,b=>6,d=>3} e3fffe00 e3fffe00 e3fffe00 ffe3dd80 e3fffe00 e3fffe00 ffe3dd80 e3fffe00 ffe3dd80 - {c=>-3,a=>32,b=>0,d=>1} 20006800 20006800 20006800 00201480 20006800 20006800 00201480 20006800 00201480 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-3,a=>20,b=>1,d=>-3} 14006909 14006909 14006909 001436c0 14006909 14006909 001436c0 14006909 001436c0 - {e=>3,c=>2,a=>-60,b=>0,d=>-2} c4ff9007 c4ff9007 c4ff9007 ffc40b30 c4ff9007 c4ff9007 ffc40b30 c4ff9007 ffc40b30 - {e=>5,c=>-3,a=>-102,b=>3,d=>-4} 9aff2b0b 9aff2b0b 9aff2b0b ff9a7650 9aff2b0b 9aff2b0b ff9a7650 9aff2b0b ff9a7650 - {e=>3,c=>-4,a=>5,b=>0,d=>1} 05006006 05006006 05006006 000510b0 05006006 05006006 000510b0 05006006 000510b0 - {e=>4,c=>0,a=>-80,b=>6,d=>0} b0ff0608 b0ff0608 b0ff0608 ffb0c040 b0ff0608 b0ff0608 ffb0c040 b0ff0608 ffb0c040 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>5,c=>-1,a=>-102,b=>0,d=>1,f=>0} 9aff780a 9aff780a 9aff780a ff9a1cd0 9aff780a 9aff780a ff9a1cd0 9aff780a ff9a1cd0 - {e=>4,c=>2,a=>7,b=>4,d=>-4,f=>-1} 07001479 07001479 07001479 00078a4e 07001479 07001479 00078a4e 07001479 00078a4e - {e=>4,c=>-1,a=>99,b=>1,d=>1,f=>-1} 63007978 63007978 63007978 00633cce 63007978 63007978 00633cce 63007978 00633cce - {e=>3,c=>-2,a=>-105,b=>7,d=>-4,f=>-3} 97ff3757 97ff3757 97ff3757 ff97fa3a 97ff3757 97ff3757 ff97fa3a 97ff3757 ff97fa3a - {e=>6,c=>-2,a=>102,b=>7,d=>-4,f=>-1} 6600377d 6600377d 6600377d 0066fa6e 6600377d 6600377d 0066fa6e 6600377d 0066fa6e = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>4,c=>0,a=>106,g=>0,b=>1,d=>-3,f=>1} 6a00411900000000 6a00411900000000 6a00411900000000 006a22c200000000 6a00411900000000 6a00411900000000 006a22c200000000 6a00411900000000 006a22c200000000 - {e=>6,c=>-4,a=>-47,g=>4,b=>0,d=>2,f=>-1} d1ffa07c04000000 d1ffa07c04000000 d1ffa07c04000000 ffd1116e80000000 d1ffa07c04000000 d1ffa07c04000000 ffd1116e80000000 d1ffa07c04000000 ffd1116e80000000 - {e=>2,c=>0,a=>28,g=>2,b=>3,d=>-4,f=>-1} 1c00037502000000 1c00037502000000 1c00037502000000 001c622e40000000 1c00037502000000 1c00037502000000 001c622e40000000 1c00037502000000 001c622e40000000 - {e=>2,c=>2,a=>8,g=>0,b=>4,d=>-3,f=>1} 0800541500000000 0800541500000000 0800541500000000 00088aa200000000 0800541500000000 0800541500000000 00088aa200000000 0800541500000000 00088aa200000000 - {e=>7,c=>1,a=>-41,g=>1,b=>6,d=>-3,f=>-3} d7ff4e5f01000000 d7ff4e5f01000000 d7ff4e5f01000000 ffd7c6fa20000000 d7ff4e5f01000000 d7ff4e5f01000000 ffd7c6fa20000000 d7ff4e5f01000000 ffd7c6fa20000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>2,c=>2,a=>57,g=>4,b=>4,d=>-3,f=>-3} 3900545504000000 3900545504000000 3900545504000000 00398aaa80000000 3900545504000000 3900545504000000 00398aaa80000000 3900545504000000 00398aaa80000000 - {e=>5,c=>-1,a=>108,g=>7,b=>2,d=>-1,f=>-3} 6c00fa5b07000000 6c00fa5b07000000 6c00fa5b07000000 006c5fdae0000000 6c00fa5b07000000 6c00fa5b07000000 006c5fdae0000000 6c00fa5b07000000 006c5fdae0000000 - {e=>3,c=>-3,a=>59,g=>1,b=>5,d=>1,f=>-2} 3b006d6601000000 3b006d6601000000 3b006d6601000000 003bb4bc20000000 3b006d6601000000 3b006d6601000000 003bb4bc20000000 3b006d6601000000 003bb4bc20000000 - {e=>3,c=>-2,a=>82,g=>7,b=>1,d=>-1,f=>-1} 5200f17707000000 5200f17707000000 5200f17707000000 00523bbee0000000 5200f17707000000 5200f17707000000 00523bbee0000000 5200f17707000000 00523bbee0000000 - {e=>1,c=>-1,a=>12,g=>2,b=>6,d=>3,f=>-1} 0c00fe7202000000 0c00fe7202000000 0c00fe7202000000 000cdd9e40000000 0c00fe7202000000 0c00fe7202000000 000cdd9e40000000 0c00fe7202000000 000cdd9e40000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>50,d=>-3,c=>-2,h=>0,b=>7,g=>4,f=>-2} 320077630400000000000000 320077630400000000000000 320077630400000000000000 0032fa9c8000000000000000 320077630400000000000000 320077630400000000000000 0032fa9c8000000000000000 320077630400000000000000 0032fa9c8000000000000000 - {e=>5,a=>40,d=>-3,c=>-4,h=>2,b=>3,g=>0,f=>3} 2800633b0000000002000000 2800633b0000000002000000 2800633b0000000002000000 002872d60000000040000000 2800633b0000000002000000 2800633b0000000002000000 002872d60000000040000000 2800633b0000000002000000 002872d60000000040000000 - {e=>6,a=>21,d=>-1,c=>3,h=>2,b=>6,g=>7,f=>-1} 1500de7d0700000002000000 1500de7d0700000002000000 1500de7d0700000002000000 0015cfeee000000040000000 1500de7d0700000002000000 1500de7d0700000002000000 0015cfeee000000040000000 1500de7d0700000002000000 0015cfeee000000040000000 - {e=>0,a=>-119,d=>0,c=>-1,h=>6,b=>1,g=>7,f=>3} 89ff39300700000006000000 89ff39300700000006000000 89ff39300700000006000000 ff893c06e0000000c0000000 89ff39300700000006000000 89ff39300700000006000000 ff893c06e0000000c0000000 89ff39300700000006000000 ff893c06e0000000c0000000 - {e=>4,a=>-45,d=>2,c=>1,h=>2,b=>7,g=>7,f=>0} d3ff8f080700000002000000 d3ff8f080700000002000000 d3ff8f080700000002000000 ffd3e540e000000040000000 d3ff8f080700000002000000 d3ff8f080700000002000000 ffd3e540e000000040000000 d3ff8f080700000002000000 ffd3e540e000000040000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>95,d=>0,c=>-2,h=>1,b=>4,g=>3,f=>0,i=>-1} 5f0034040300000039000000 5f0034040300000039000000 5f0034040300000039000000 005f9820600000003c000000 5f0034040300000039000000 5f0034040300000039000000 005f9820600000003c000000 5f0034040300000039000000 005f9820600000003c000000 - {e=>4,a=>34,d=>0,c=>3,h=>3,b=>2,g=>1,f=>0,i=>-1} 22001a08010000003b000000 22001a08010000003b000000 22001a08010000003b000000 00224c40200000007c000000 22001a08010000003b000000 22001a08010000003b000000 00224c40200000007c000000 22001a08010000003b000000 00224c40200000007c000000 - {e=>7,a=>40,d=>-2,c=>-2,h=>0,b=>3,g=>1,f=>2,i=>1} 2800b32f0100000008000000 2800b32f0100000008000000 2800b32f0100000008000000 00287b742000000004000000 2800b32f0100000008000000 2800b32f0100000008000000 00287b742000000004000000 2800b32f0100000008000000 00287b742000000004000000 - {e=>2,a=>-13,d=>-3,c=>1,h=>1,b=>0,g=>5,f=>3,i=>-2} f3ff48350500000031000000 f3ff48350500000031000000 f3ff48350500000031000000 fff306a6a000000038000000 f3ff48350500000031000000 f3ff48350500000031000000 fff306a6a000000038000000 f3ff48350500000031000000 fff306a6a000000038000000 - {e=>6,a=>-50,d=>0,c=>1,h=>6,b=>6,g=>5,f=>-3,i=>-2} ceff0e5c0500000036000000 ceff0e5c0500000036000000 ceff0e5c0500000036000000 ffcec46aa0000000d8000000 ceff0e5c0500000036000000 ceff0e5c0500000036000000 ffcec46aa0000000d8000000 ceff0e5c0500000036000000 ffcec46aa0000000d8000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-78,d=>-2,j=>4,c=>-1,h=>1,b=>3,g=>6,f=>-3,i=>-2} b2ffbb510600000031010000 b2ffbb510600000031010000 b2ffbb510600000031010000 ffb27f0ac00000003a000000 b2ffbb510600000031010000 b2ffbb510600000031010000 ffb27f0ac00000003a000000 b2ffbb510600000031010000 ffb27f0ac00000003a000000 - {e=>7,a=>76,d=>-2,j=>1,c=>-4,h=>5,b=>6,g=>3,f=>-4,i=>2} 4c00a64f0300000055000000 4c00a64f0300000055000000 4c00a64f0300000055000000 004cd37860000000a8800000 4c00a64f0300000055000000 4c00a64f0300000055000000 004cd37860000000a8800000 4c00a64f0300000055000000 004cd37860000000a8800000 - {e=>7,a=>88,d=>0,j=>0,c=>1,h=>1,b=>1,g=>1,f=>1,i=>2} 5800091e0100000011000000 5800091e0100000011000000 5800091e0100000011000000 005824722000000028000000 5800091e0100000011000000 5800091e0100000011000000 005824722000000028000000 5800091e0100000011000000 005824722000000028000000 - {e=>7,a=>-27,d=>0,j=>7,c=>-1,h=>1,b=>0,g=>0,f=>-4,i=>-1} e5ff384e00000000f9010000 e5ff384e00000000f9010000 e5ff384e00000000f9010000 ffe51c78000000003f800000 e5ff384e00000000f9010000 e5ff384e00000000f9010000 ffe51c78000000003f800000 e5ff384e00000000f9010000 ffe51c78000000003f800000 - {e=>1,a=>-99,d=>-3,j=>3,c=>1,h=>5,b=>1,g=>6,f=>3,i=>3} 9dff493306000000dd000000 9dff493306000000dd000000 9dff493306000000dd000000 ff9d2696c0000000ad800000 9dff493306000000dd000000 9dff493306000000dd000000 ff9d2696c0000000ad800000 9dff493306000000dd000000 ff9d2696c0000000ad800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>2,a=>4,d=>1,j=>5,c=>-3,k=>75,h=>5,b=>0,g=>2,f=>3,i=>-1} 04006834020000007d014b00 04006834020000007d014b00 04006834020000007d014b00 000414a640000000be804b00 04006834020000007d014b00 04006834020000007d014b00 000414a640000000be804b00 04006834020000007d014b00 000414a640000000be804b00 - {e=>5,a=>7,d=>-2,j=>1,c=>0,k=>19,h=>4,b=>6,g=>6,f=>3,i=>1} 0700863b060000004c001300 0700863b060000004c001300 0700863b060000004c001300 0007c356c000000084801300 0700863b060000004c001300 0700863b060000004c001300 0007c356c000000084801300 0700863b060000004c001300 0007c356c000000084801300 - {e=>2,a=>57,d=>1,j=>0,c=>1,k=>89,h=>1,b=>3,g=>6,f=>3,i=>1} 39004b340600000009005900 39004b340600000009005900 39004b340600000009005900 003964a6c000000024005900 39004b340600000009005900 39004b340600000009005900 003964a6c000000024005900 39004b340600000009005900 003964a6c000000024005900 - {e=>4,a=>7,d=>0,j=>2,c=>-1,k=>-8,h=>3,b=>7,g=>4,f=>-1,i=>-4} 07003f7804000000a300f800 07003f7804000000a300f800 07003f7804000000a300f800 0007fc4e800000007100f800 07003f7804000000a300f800 07003f7804000000a300f800 0007fc4e800000007100f800 07003f7804000000a300f800 0007fc4e800000007100f800 - {e=>5,a=>105,d=>3,j=>1,c=>3,k=>119,h=>7,b=>7,g=>0,f=>0,i=>-2} 6900df0a0000000077007700 6900df0a0000000077007700 6900df0a0000000077007700 0069edd000000000f8807700 6900df0a0000000077007700 6900df0a0000000077007700 0069edd000000000f8807700 6900df0a0000000077007700 0069edd000000000f8807700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>3,a=>-68,d=>3,j=>1,l=>0,c=>-3,k=>40,h=>5,b=>6,g=>0,f=>0,i=>2} bcffee060000000055002800 bcffee060000000055002800 bcffee060000000055002800 ffbcd5b000000000a8802800 bcffee060000000055002800 bcffee060000000055002800 ffbcd5b000000000a8802800 bcffee060000000055002800 ffbcd5b000000000a8802800 - {e=>6,a=>84,d=>-4,j=>4,l=>0,c=>1,k=>100,h=>2,b=>1,g=>6,f=>3,i=>2} 5400093d0600000012016400 5400093d0600000012016400 5400093d0600000012016400 00542666c00000004a006400 5400093d0600000012016400 5400093d0600000012016400 00542666c00000004a006400 5400093d0600000012016400 00542666c00000004a006400 - {e=>2,a=>-8,d=>-4,j=>2,l=>4,c=>-2,k=>-68,h=>2,b=>6,g=>5,f=>-1,i=>-1} f8ff367505000000ba00bc04 f8ff367505000000ba00bc04 f8ff367505000000ba00bc04 fff8da2ea00000005d00bc80 f8ff367505000000ba00bc04 f8ff367505000000ba00bc04 fff8da2ea00000005d00bc80 f8ff367505000000ba00bc04 fff8da2ea00000005d00bc80 - {e=>0,a=>-64,d=>3,j=>4,l=>1,c=>-4,k=>-2,h=>3,b=>1,g=>4,f=>-3,i=>-3} c0ffe150040000002b01fe01 c0ffe150040000002b01fe01 c0ffe150040000002b01fe01 ffc0318a800000007600fe20 c0ffe150040000002b01fe01 c0ffe150040000002b01fe01 ffc0318a800000007600fe20 c0ffe150040000002b01fe01 ffc0318a800000007600fe20 - {e=>5,a=>64,d=>-4,j=>6,l=>7,c=>0,k=>13,h=>2,b=>4,g=>7,f=>-4,i=>3} 4000044b070000009a010d07 4000044b070000009a010d07 4000044b070000009a010d07 00408258e00000004f000de0 4000044b070000009a010d07 4000044b070000009a010d07 00408258e00000004f000de0 4000044b070000009a010d07 00408258e00000004f000de0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>2,a=>-53,m=>2,d=>0,j=>4,l=>6,c=>0,k=>-28,h=>4,b=>1,g=>0,f=>0,i=>-1} cbff0104000000003c01e416 cbff0104000000003c01e416 cbff0104000000003c01e416 ffcb2020000000009e00e4c8 cbff0104000000003c01e416 cbff0104000000003c01e416 ffcb2020000000009e00e4c8 cbff0104000000003c01e416 ffcb2020000000009e00e4c8 - {e=>2,a=>-58,m=>-4,d=>-3,j=>7,l=>1,c=>1,k=>-110,h=>4,b=>2,g=>5,f=>-2,i=>1} c6ff4a6505000000cc019221 c6ff4a6505000000cc019221 c6ff4a6505000000cc019221 ffc646aca000000087809230 c6ff4a6505000000cc019221 c6ff4a6505000000cc019221 ffc646aca000000087809230 c6ff4a6505000000cc019221 ffc646aca000000087809230 - {e=>2,a=>-95,m=>1,d=>2,j=>3,l=>1,c=>2,k=>47,h=>7,b=>5,g=>2,f=>3,i=>0} a1ff953402000000c7002f09 a1ff953402000000c7002f09 a1ff953402000000c7002f09 ffa1a92640000000e1802f24 a1ff953402000000c7002f09 a1ff953402000000c7002f09 ffa1a92640000000e1802f24 a1ff953402000000c7002f09 ffa1a92640000000e1802f24 - {e=>2,a=>86,m=>0,d=>-1,j=>3,l=>0,c=>3,k=>-1,h=>4,b=>3,g=>1,f=>0,i=>-3} 5600db0501000000ec00ff00 5600db0501000000ec00ff00 5600db0501000000ec00ff00 00566fa0200000009580ff00 5600db0501000000ec00ff00 5600db0501000000ec00ff00 00566fa0200000009580ff00 5600db0501000000ec00ff00 00566fa0200000009580ff00 - {e=>5,a=>31,m=>-3,d=>1,j=>4,l=>5,c=>1,k=>1,h=>6,b=>1,g=>2,f=>2,i=>-4} 1f00492a020000002601012d 1f00492a020000002601012d 1f00492a020000002601012d 001f24d440000000d20001b4 1f00492a020000002601012d 1f00492a020000002601012d 001f24d440000000d20001b4 1f00492a020000002601012d 001f24d440000000d20001b4 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>4,n=>3,a=>-119,m=>-2,d=>0,j=>0,l=>0,c=>3,k=>127,h=>3,b=>3,g=>0,f=>-3,i=>-3} 89ff1b58000000002b007f3003000000 89ff1b58000000002b007f3003000000 89ff1b58000000002b007f3003000000 ff896c4a0000000074007f1860000000 89ff1b58000000002b007f3003000000 89ff1b58000000002b007f3003000000 ff896c4a0000000074007f1860000000 89ff1b58000000002b007f3003000000 ff896c4a0000000074007f1860000000 - {e=>2,n=>3,a=>47,m=>-4,d=>1,j=>6,l=>7,c=>1,k=>-126,h=>6,b=>1,g=>2,f=>-2,i=>-4} 2f00496402000000a601822703000000 2f00496402000000a601822703000000 2f00496402000000a601822703000000 002f24ac40000000d30082f060000000 2f00496402000000a601822703000000 2f00496402000000a601822703000000 002f24ac40000000d30082f060000000 2f00496402000000a601822703000000 002f24ac40000000d30082f060000000 - {e=>6,n=>4,a=>-16,m=>3,d=>-4,j=>3,l=>3,c=>2,k=>-100,h=>4,b=>4,g=>3,f=>-1,i=>3} f0ff147d03000000dc009c1b04000000 f0ff147d03000000dc009c1b04000000 f0ff147d03000000dc009c1b04000000 fff08a6e600000008d809c6c80000000 f0ff147d03000000dc009c1b04000000 f0ff147d03000000dc009c1b04000000 fff08a6e600000008d809c6c80000000 f0ff147d03000000dc009c1b04000000 fff08a6e600000008d809c6c80000000 - {e=>0,n=>3,a=>99,m=>-3,d=>-4,j=>4,l=>1,c=>-1,k=>-77,h=>3,b=>1,g=>0,f=>-2,i=>3} 63003961000000001b01b32903000000 63003961000000001b01b32903000000 63003961000000001b01b32903000000 00633e0c000000006e00b33460000000 63003961000000001b01b32903000000 63003961000000001b01b32903000000 00633e0c000000006e00b33460000000 63003961000000001b01b32903000000 00633e0c000000006e00b33460000000 - {e=>5,n=>0,a=>-106,m=>-2,d=>-4,j=>7,l=>7,c=>-3,k=>-97,h=>3,b=>3,g=>2,f=>1,i=>-3} 96ff2b1b02000000eb019f3700000000 96ff2b1b02000000eb019f3700000000 96ff2b1b02000000eb019f3700000000 ff9676524000000077809ff800000000 96ff2b1b02000000eb019f3700000000 96ff2b1b02000000eb019f3700000000 ff9676524000000077809ff800000000 96ff2b1b02000000eb019f3700000000 ff9676524000000077809ff800000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>3,n=>7,a=>-113,m=>1,d=>-3,j=>5,l=>0,c=>1,k=>2,h=>6,b=>0,g=>5,f=>-2,o=>22,i=>0} 8fff4867050000004601020807160000 8fff4867050000004601020807160000 8fff4867050000004601020807160000 ff8f06bca0000000c2800204e0160000 8fff4867050000004601020807160000 8fff4867050000004601020807160000 ff8f06bca0000000c2800204e0160000 8fff4867050000004601020807160000 ff8f06bca0000000c2800204e0160000 - {e=>6,n=>7,a=>-82,m=>-2,d=>-3,j=>7,l=>3,c=>-1,k=>-116,h=>6,b=>1,g=>5,f=>2,o=>227,i=>-2} aeff792d05000000f6018c3307e30000 aeff792d05000000f6018c3307e30000 aeff792d05000000f6018c3307e30000 ffae3ee4a0000000db808c78e0e30000 aeff792d05000000f6018c3307e30000 aeff792d05000000f6018c3307e30000 ffae3ee4a0000000db808c78e0e30000 aeff792d05000000f6018c3307e30000 ffae3ee4a0000000db808c78e0e30000 - {e=>1,n=>4,a=>-117,m=>-2,d=>-2,j=>2,l=>5,c=>1,k=>-17,h=>3,b=>6,g=>3,f=>-4,o=>238,i=>-2} 8bff8e4303000000b300ef3504ee0000 8bff8e4303000000b300ef3504ee0000 8bff8e4303000000b300ef3504ee0000 ff8bc718600000007900efb880ee0000 8bff8e4303000000b300ef3504ee0000 8bff8e4303000000b300ef3504ee0000 ff8bc718600000007900efb880ee0000 8bff8e4303000000b300ef3504ee0000 ff8bc718600000007900efb880ee0000 - {e=>4,n=>6,a=>62,m=>-2,d=>3,j=>0,l=>4,c=>2,k=>119,h=>2,b=>7,g=>6,f=>0,o=>141,i=>-4} 3e00d7080600000022007734068d0000 3e00d7080600000022007734068d0000 3e00d7080600000022007734068d0000 003ee9c0c000000050007798c08d0000 3e00d7080600000022007734068d0000 3e00d7080600000022007734068d0000 003ee9c0c000000050007798c08d0000 3e00d7080600000022007734068d0000 003ee9c0c000000050007798c08d0000 - {e=>0,n=>5,a=>59,m=>0,d=>1,j=>3,l=>5,c=>-2,k=>-64,h=>0,b=>7,g=>0,f=>-4,o=>130,i=>3} 3b00774000000000d800c00505820000 3b00774000000000d800c00505820000 3b00774000000000d800c00505820000 003bf888000000000d80c0a0a0820000 3b00774000000000d800c00505820000 3b00774000000000d800c00505820000 003bf888000000000d80c0a0a0820000 3b00774000000000d800c00505820000 003bf888000000000d80c0a0a0820000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; }; - {a=>-25,b=>5} e7ffffff05000000 e7ffffff05000000 e7ffffff05000000 ffffffe7a0000000 e7ffffff05000000 e7ffffff05000000 ffffffe7a0000000 e7ffffff05000000 ffffffe7a0000000 - {a=>10,b=>1} 0a00000001000000 0a00000001000000 0a00000001000000 0000000a20000000 0a00000001000000 0a00000001000000 0000000a20000000 0a00000001000000 0000000a20000000 - {a=>8,b=>7} 0800000007000000 0800000007000000 0800000007000000 00000008e0000000 0800000007000000 0800000007000000 00000008e0000000 0800000007000000 00000008e0000000 - {a=>-93,b=>6} a3ffffff06000000 a3ffffff06000000 a3ffffff06000000 ffffffa3c0000000 a3ffffff06000000 a3ffffff06000000 ffffffa3c0000000 a3ffffff06000000 ffffffa3c0000000 - {a=>-67,b=>1} bdffffff01000000 bdffffff01000000 bdffffff01000000 ffffffbd20000000 bdffffff01000000 bdffffff01000000 ffffffbd20000000 bdffffff01000000 ffffffbd20000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-12,b=>7} f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 fffffff4e0000000 f4ffffff07000000 f4ffffff07000000 fffffff4e0000000 f4ffffff07000000 fffffff4e0000000 - {c=>-4,a=>99,b=>7} 6300000027000000 6300000027000000 6300000027000000 00000063f0000000 6300000027000000 6300000027000000 00000063f0000000 6300000027000000 00000063f0000000 - {c=>1,a=>18,b=>7} 120000000f000000 120000000f000000 120000000f000000 00000012e4000000 120000000f000000 120000000f000000 00000012e4000000 120000000f000000 00000012e4000000 - {c=>2,a=>43,b=>7} 2b00000017000000 2b00000017000000 2b00000017000000 0000002be8000000 2b00000017000000 2b00000017000000 0000002be8000000 2b00000017000000 0000002be8000000 - {c=>-4,a=>34,b=>0} 2200000020000000 2200000020000000 2200000020000000 0000002210000000 2200000020000000 2200000020000000 0000002210000000 2200000020000000 0000002210000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>26,b=>4,d=>1} 1a00000074000000 1a00000074000000 1a00000074000000 0000001a98800000 1a00000074000000 1a00000074000000 0000001a98800000 1a00000074000000 0000001a98800000 - {c=>-3,a=>42,b=>5,d=>0} 2a0000002d000000 2a0000002d000000 2a0000002d000000 0000002ab4000000 2a0000002d000000 2a0000002d000000 0000002ab4000000 2a0000002d000000 0000002ab4000000 - {c=>3,a=>115,b=>3,d=>-4} 730000001b010000 730000001b010000 730000001b010000 000000736e000000 730000001b010000 730000001b010000 000000736e000000 730000001b010000 000000736e000000 - {c=>1,a=>21,b=>4,d=>-2} 150000008c010000 150000008c010000 150000008c010000 0000001587000000 150000008c010000 150000008c010000 0000001587000000 150000008c010000 0000001587000000 - {c=>1,a=>124,b=>0,d=>-2} 7c00000088010000 7c00000088010000 7c00000088010000 0000007c07000000 7c00000088010000 7c00000088010000 0000007c07000000 7c00000088010000 0000007c07000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-3,a=>-59,b=>7,d=>-3} c5ffffff6f030000 c5ffffff6f030000 c5ffffff6f030000 ffffffc5f6900000 c5ffffff6f030000 c5ffffff6f030000 ffffffc5f6900000 c5ffffff6f030000 ffffffc5f6900000 - {e=>5,c=>3,a=>96,b=>7,d=>1} 600000005f0a0000 600000005f0a0000 600000005f0a0000 00000060ecd00000 600000005f0a0000 600000005f0a0000 00000060ecd00000 600000005f0a0000 00000060ecd00000 - {e=>6,c=>-3,a=>97,b=>1,d=>1} 61000000690c0000 61000000690c0000 61000000690c0000 0000006134e00000 61000000690c0000 61000000690c0000 0000006134e00000 61000000690c0000 0000006134e00000 - {e=>0,c=>-3,a=>45,b=>5,d=>-2} 2d000000ad010000 2d000000ad010000 2d000000ad010000 0000002db7000000 2d000000ad010000 2d000000ad010000 0000002db7000000 2d000000ad010000 0000002db7000000 - {e=>5,c=>-4,a=>-125,b=>0,d=>1} 83ffffff600a0000 83ffffff600a0000 83ffffff600a0000 ffffff8310d00000 83ffffff600a0000 83ffffff600a0000 ffffff8310d00000 83ffffff600a0000 ffffff8310d00000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>3,a=>-75,b=>2,d=>-3,f=>0} b5ffffff5a0d0000 b5ffffff5a0d0000 b5ffffff5a0d0000 ffffffb54ee00000 b5ffffff5a0d0000 b5ffffff5a0d0000 ffffffb54ee00000 b5ffffff5a0d0000 ffffffb54ee00000 - {e=>5,c=>-4,a=>-82,b=>3,d=>3,f=>1} aeffffffe31a0000 aeffffffe31a0000 aeffffffe31a0000 ffffffae71d20000 aeffffffe31a0000 aeffffffe31a0000 ffffffae71d20000 aeffffffe31a0000 ffffffae71d20000 - {e=>7,c=>1,a=>53,b=>4,d=>-2,f=>0} 350000008c0f0000 350000008c0f0000 350000008c0f0000 0000003587700000 350000008c0f0000 350000008c0f0000 0000003587700000 350000008c0f0000 0000003587700000 - {e=>1,c=>2,a=>126,b=>6,d=>-3,f=>0} 7e00000056030000 7e00000056030000 7e00000056030000 0000007eca900000 7e00000056030000 7e00000056030000 0000007eca900000 7e00000056030000 0000007eca900000 - {e=>3,c=>0,a=>11,b=>4,d=>-1,f=>-1} 0b000000c4770000 0b000000c4770000 0b000000c4770000 0000000b83be0000 0b000000c4770000 0b000000c4770000 0000000b83be0000 0b000000c4770000 0000000b83be0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>2,c=>-1,a=>-28,g=>6,b=>6,d=>1,f=>-2} e4ffffff7e640300 e4ffffff7e640300 e4ffffff7e640300 ffffffe4dcad8000 e4ffffff7e640300 e4ffffff7e640300 ffffffe4dcad8000 e4ffffff7e640300 ffffffe4dcad8000 - {e=>1,c=>2,a=>-122,g=>5,b=>3,d=>2,f=>-2} 86ffffff93e20200 86ffffff93e20200 86ffffff93e20200 ffffff86691d4000 86ffffff93e20200 86ffffff93e20200 ffffff86691d4000 86ffffff93e20200 ffffff86691d4000 - {e=>7,c=>-2,a=>-4,g=>7,b=>7,d=>1,f=>3} fcffffff77be0300 fcffffff77be0300 fcffffff77be0300 fffffffcf8f7c000 fcffffff77be0300 fcffffff77be0300 fffffffcf8f7c000 fcffffff77be0300 fffffffcf8f7c000 - {e=>3,c=>-1,a=>-107,g=>6,b=>5,d=>-4,f=>-3} 95ffffff3d570300 95ffffff3d570300 95ffffff3d570300 ffffff95be3b8000 95ffffff3d570300 95ffffff3d570300 ffffff95be3b8000 95ffffff3d570300 ffffff95be3b8000 - {e=>2,c=>1,a=>-115,g=>0,b=>7,d=>2,f=>0} 8dffffff8f040000 8dffffff8f040000 8dffffff8f040000 ffffff8de5200000 8dffffff8f040000 8dffffff8f040000 ffffff8de5200000 8dffffff8f040000 ffffff8de5200000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>4,c=>1,a=>-92,g=>6,b=>5,d=>-4,f=>-4} a4ffffff0d490300 a4ffffff0d490300 a4ffffff0d490300 ffffffa4a6498000 a4ffffff0d490300 a4ffffff0d490300 ffffffa4a6498000 a4ffffff0d490300 ffffffa4a6498000 - {e=>3,c=>3,a=>112,g=>1,b=>4,d=>0,f=>-3} 700000001cd60000 700000001cd60000 700000001cd60000 000000708c3a4000 700000001cd60000 700000001cd60000 000000708c3a4000 700000001cd60000 000000708c3a4000 - {e=>2,c=>1,a=>-90,g=>7,b=>2,d=>1,f=>0} a6ffffff4a840300 a6ffffff4a840300 a6ffffff4a840300 ffffffa644a1c000 a6ffffff4a840300 a6ffffff4a840300 ffffffa644a1c000 a6ffffff4a840300 ffffffa644a1c000 - {e=>1,c=>3,a=>20,g=>3,b=>6,d=>-1,f=>-4} 14000000dec30100 14000000dec30100 14000000dec30100 00000014cf98c000 14000000dec30100 14000000dec30100 00000014cf98c000 14000000dec30100 00000014cf98c000 - {e=>0,c=>1,a=>-18,g=>4,b=>0,d=>-2,f=>-2} eeffffff88610200 eeffffff88610200 eeffffff88610200 ffffffee070d0000 eeffffff88610200 eeffffff88610200 ffffffee070d0000 eeffffff88610200 ffffffee070d0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>38,d=>-1,c=>-1,h=>0,b=>7,g=>7,f=>3} 26000000ffbd030000000000 26000000ffbd030000000000 26000000ffbd030000000000 00000026ffe7c00000000000 26000000ffbd030000000000 26000000ffbd030000000000 00000026ffe7c00000000000 26000000ffbd030000000000 00000026ffe7c00000000000 - {e=>6,a=>31,d=>3,c=>2,h=>1,b=>2,g=>0,f=>3} 1f000000d23c000001000000 1f000000d23c000001000000 1f000000d23c000001000000 0000001f49e6000020000000 1f000000d23c000001000000 1f000000d23c000001000000 0000001f49e6000020000000 1f000000d23c000001000000 0000001f49e6000020000000 - {e=>7,a=>-56,d=>-4,c=>0,h=>5,b=>1,g=>2,f=>-4} c8ffffff014f010005000000 c8ffffff014f010005000000 c8ffffff014f010005000000 ffffffc822788000a0000000 c8ffffff014f010005000000 c8ffffff014f010005000000 ffffffc822788000a0000000 c8ffffff014f010005000000 ffffffc822788000a0000000 - {e=>7,a=>119,d=>2,c=>-4,h=>5,b=>7,g=>0,f=>-3} 77000000a75e000005000000 77000000a75e000005000000 77000000a75e000005000000 00000077f17a0000a0000000 77000000a75e000005000000 77000000a75e000005000000 00000077f17a0000a0000000 77000000a75e000005000000 00000077f17a0000a0000000 - {e=>7,a=>-122,d=>3,c=>3,h=>6,b=>2,g=>7,f=>2} 86ffffffdaae030006000000 86ffffffdaae030006000000 86ffffffdaae030006000000 ffffff864df5c000c0000000 86ffffffdaae030006000000 86ffffffdaae030006000000 ffffff864df5c000c0000000 86ffffffdaae030006000000 ffffff864df5c000c0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>0,a=>66,d=>-4,c=>-4,h=>6,b=>2,g=>6,f=>3,i=>2} 420000002231030016000000 420000002231030016000000 420000002231030016000000 0000004252078000c8000000 420000002231030016000000 420000002231030016000000 0000004252078000c8000000 420000002231030016000000 0000004252078000c8000000 - {e=>2,a=>19,d=>-2,c=>3,h=>4,b=>6,g=>5,f=>2,i=>3} 130000009ea502001c000000 130000009ea502001c000000 130000009ea502001c000000 00000013cf2540008c000000 130000009ea502001c000000 130000009ea502001c000000 00000013cf2540008c000000 130000009ea502001c000000 00000013cf2540008c000000 - {e=>1,a=>-41,d=>-3,c=>-3,h=>6,b=>5,g=>0,f=>-3,i=>-2} d7ffffff6d53000036000000 d7ffffff6d53000036000000 d7ffffff6d53000036000000 ffffffd7b69a0000d8000000 d7ffffff6d53000036000000 d7ffffff6d53000036000000 ffffffd7b69a0000d8000000 d7ffffff6d53000036000000 ffffffd7b69a0000d8000000 - {e=>3,a=>-25,d=>1,c=>0,h=>2,b=>2,g=>6,f=>2,i=>-3} e7ffffff422603002a000000 e7ffffff422603002a000000 e7ffffff422603002a000000 ffffffe740b5800054000000 e7ffffff422603002a000000 e7ffffff422603002a000000 ffffffe740b5800054000000 e7ffffff422603002a000000 ffffffe740b5800054000000 - {e=>3,a=>77,d=>3,c=>-1,h=>3,b=>5,g=>6,f=>-1,i=>3} 4d000000fd7603001b000000 4d000000fd7603001b000000 4d000000fd7603001b000000 0000004dbdbf80006c000000 4d000000fd7603001b000000 4d000000fd7603001b000000 0000004dbdbf80006c000000 4d000000fd7603001b000000 0000004dbdbf80006c000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>7,a=>-49,d=>3,j=>4,c=>1,h=>6,b=>5,g=>7,f=>-3,i=>-2} cfffffffcdde030036010000 cfffffffcdde030036010000 cfffffffcdde030036010000 ffffffcfa5fbc000da000000 cfffffffcdde030036010000 cfffffffcdde030036010000 ffffffcfa5fbc000da000000 cfffffffcdde030036010000 ffffffcfa5fbc000da000000 - {e=>4,a=>-24,d=>-3,j=>3,c=>3,h=>3,b=>6,g=>6,f=>3,i=>1} e8ffffff5e390300cb000000 e8ffffff5e390300cb000000 e8ffffff5e390300cb000000 ffffffe8cec7800065800000 e8ffffff5e390300cb000000 e8ffffff5e390300cb000000 ffffffe8cec7800065800000 e8ffffff5e390300cb000000 ffffffe8cec7800065800000 - {e=>5,a=>-77,d=>1,j=>7,c=>-3,h=>0,b=>6,g=>1,f=>2,i=>1} b3ffffff6eaa0000c8010000 b3ffffff6eaa0000c8010000 b3ffffff6eaa0000c8010000 ffffffb3d4d4400007800000 b3ffffff6eaa0000c8010000 b3ffffff6eaa0000c8010000 ffffffb3d4d4400007800000 b3ffffff6eaa0000c8010000 ffffffb3d4d4400007800000 - {e=>5,a=>80,d=>3,j=>5,c=>-3,h=>1,b=>6,g=>7,f=>-4,i=>3} 50000000eeca030059010000 50000000eeca030059010000 50000000eeca030059010000 00000050d5d9c0002e800000 50000000eeca030059010000 50000000eeca030059010000 00000050d5d9c0002e800000 50000000eeca030059010000 00000050d5d9c0002e800000 - {e=>3,a=>33,d=>-4,j=>4,c=>-1,h=>5,b=>4,g=>2,f=>3,i=>-2} 210000003c37010035010000 210000003c37010035010000 210000003c37010035010000 000000219e368000ba000000 210000003c37010035010000 210000003c37010035010000 000000219e368000ba000000 210000003c37010035010000 000000219e368000ba000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>1,a=>-125,d=>-4,j=>6,c=>-1,k=>-20,h=>4,b=>1,g=>5,f=>-1,i=>1} 83ffffff39f302008c01ec00 83ffffff39f302008c01ec00 83ffffff39f302008c01ec00 ffffff833e1f40008700ec00 83ffffff39f302008c01ec00 83ffffff39f302008c01ec00 ffffff833e1f40008700ec00 83ffffff39f302008c01ec00 ffffff833e1f40008700ec00 - {e=>6,a=>123,d=>0,j=>3,c=>1,k=>-127,h=>6,b=>5,g=>2,f=>-2,i=>-2} 7b0000000d6c0100f6008100 7b0000000d6c0100f6008100 7b0000000d6c0100f6008100 0000007ba46c8000d9808100 7b0000000d6c0100f6008100 7b0000000d6c0100f6008100 0000007ba46c8000d9808100 7b0000000d6c0100f6008100 0000007ba46c8000d9808100 - {e=>3,a=>80,d=>-3,j=>6,c=>3,k=>-21,h=>1,b=>7,g=>5,f=>-2,i=>-1} 500000005fe70200b901eb00 500000005fe70200b901eb00 500000005fe70200b901eb00 00000050eebd40003f00eb00 500000005fe70200b901eb00 500000005fe70200b901eb00 00000050eebd40003f00eb00 500000005fe70200b901eb00 00000050eebd40003f00eb00 - {e=>6,a=>85,d=>-2,j=>5,c=>-3,k=>-38,h=>1,b=>5,g=>2,f=>-4,i=>-1} 55000000ad4d01007901da00 55000000ad4d01007901da00 55000000ad4d01007901da00 00000055b76880003e80da00 55000000ad4d01007901da00 55000000ad4d01007901da00 00000055b76880003e80da00 55000000ad4d01007901da00 00000055b76880003e80da00 - {e=>6,a=>-9,d=>-1,j=>0,c=>1,k=>20,h=>1,b=>6,g=>3,f=>-3,i=>-1} f7ffffffcedd010039001400 f7ffffffcedd010039001400 f7ffffffcedd010039001400 fffffff7c7eac0003c001400 f7ffffffcedd010039001400 f7ffffffcedd010039001400 fffffff7c7eac0003c001400 f7ffffffcedd010039001400 fffffff7c7eac0003c001400 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>5,a=>42,d=>2,j=>4,l=>7,c=>1,k=>-45,h=>5,b=>5,g=>3,f=>2,i=>1} 2a0000008daa01000d01d307 2a0000008daa01000d01d307 2a0000008daa01000d01d307 0000002aa554c000a600d3e0 2a0000008daa01000d01d307 2a0000008daa01000d01d307 0000002aa554c000a600d3e0 2a0000008daa01000d01d307 0000002aa554c000a600d3e0 - {e=>7,a=>-123,d=>2,j=>5,l=>5,c=>3,k=>-51,h=>4,b=>7,g=>5,f=>-3,i=>0} 85ffffff9fde02004401cd05 85ffffff9fde02004401cd05 85ffffff9fde02004401cd05 ffffff85ed7b40008280cda0 85ffffff9fde02004401cd05 85ffffff9fde02004401cd05 ffffff85ed7b40008280cda0 85ffffff9fde02004401cd05 ffffff85ed7b40008280cda0 - {e=>0,a=>0,d=>-3,j=>0,l=>2,c=>3,k=>-69,h=>4,b=>4,g=>6,f=>-1,i=>-4} 000000005c7103002400bb02 000000005c7103002400bb02 000000005c7103002400bb02 000000008e8f80009000bb40 000000005c7103002400bb02 000000005c7103002400bb02 000000008e8f80009000bb40 000000005c7103002400bb02 000000008e8f80009000bb40 - {e=>0,a=>17,d=>-2,j=>3,l=>2,c=>-4,k=>-21,h=>0,b=>6,g=>7,f=>-1,i=>2} 11000000a6f10300d000eb02 11000000a6f10300d000eb02 11000000a6f10300d000eb02 00000011d30fc0000980eb40 11000000a6f10300d000eb02 11000000a6f10300d000eb02 00000011d30fc0000980eb40 11000000a6f10300d000eb02 00000011d30fc0000980eb40 - {e=>2,a=>-122,d=>2,j=>5,l=>6,c=>0,k=>-75,h=>4,b=>7,g=>2,f=>-3,i=>0} 86ffffff875401004401b506 86ffffff875401004401b506 86ffffff875401004401b506 ffffff86e12a80008280b5c0 86ffffff875401004401b506 86ffffff875401004401b506 ffffff86e12a80008280b5c0 86ffffff875401004401b506 ffffff86e12a80008280b5c0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-47,m=>-1,d=>-2,j=>0,l=>1,c=>2,k=>8,h=>1,b=>5,g=>4,f=>0,i=>-2} d1ffffff9509020031000839 d1ffffff9509020031000839 d1ffffff9509020031000839 ffffffd1ab4100003800083c d1ffffff9509020031000839 d1ffffff9509020031000839 ffffffd1ab4100003800083c d1ffffff9509020031000839 ffffffd1ab4100003800083c - {e=>4,a=>96,m=>1,d=>-1,j=>2,l=>1,c=>-4,k=>62,h=>0,b=>1,g=>6,f=>0,i=>3} 60000000e109030098003e09 60000000e109030098003e09 60000000e109030098003e09 0000006033c180000d003e24 60000000e109030098003e09 60000000e109030098003e09 0000006033c180000d003e24 60000000e109030098003e09 0000006033c180000d003e24 - {e=>7,a=>119,m=>-3,d=>1,j=>2,l=>5,c=>0,k=>22,h=>2,b=>6,g=>1,f=>-4,i=>2} 7700000046ce00009200162d 7700000046ce00009200162d 7700000046ce00009200162d 00000077c0f84000490016b4 7700000046ce00009200162d 7700000046ce00009200162d 00000077c0f84000490016b4 7700000046ce00009200162d 00000077c0f84000490016b4 - {e=>5,a=>105,m=>-4,d=>-4,j=>6,l=>5,c=>-3,k=>5,h=>1,b=>4,g=>2,f=>1,i=>0} 690000002c1b010081010525 690000002c1b010081010525 690000002c1b010081010525 0000006996528000230005b0 690000002c1b010081010525 690000002c1b010081010525 0000006996528000230005b0 690000002c1b010081010525 0000006996528000230005b0 - {e=>3,a=>23,m=>1,d=>-4,j=>1,l=>2,c=>1,k=>-75,h=>5,b=>4,g=>3,f=>0,i=>3} 170000000c8701005d00b50a 170000000c8701005d00b50a 170000000c8701005d00b50a 000000178630c000ac80b544 170000000c8701005d00b50a 170000000c8701005d00b50a 000000178630c000ac80b544 170000000c8701005d00b50a 000000178630c000ac80b544 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>3,a=>-113,m=>0,d=>1,j=>4,l=>0,c=>-1,k=>-9,h=>4,b=>0,g=>0,f=>2,i=>-4} 8fffffff782a00002401f70003000000 8fffffff782a00002401f70003000000 8fffffff782a00002401f70003000000 ffffff8f1cd400009200f70060000000 8fffffff782a00002401f70003000000 8fffffff782a00002401f70003000000 ffffff8f1cd400009200f70060000000 8fffffff782a00002401f70003000000 ffffff8f1cd400009200f70060000000 - {e=>0,n=>4,a=>64,m=>2,d=>-3,j=>4,l=>3,c=>-3,k=>-98,h=>5,b=>3,g=>6,f=>-3,i=>-4} 400000006b51030025019e1304000000 400000006b51030025019e1304000000 400000006b51030025019e1304000000 00000040768b8000b2009e6880000000 400000006b51030025019e1304000000 400000006b51030025019e1304000000 00000040768b8000b2009e6880000000 400000006b51030025019e1304000000 00000040768b8000b2009e6880000000 - {e=>1,n=>7,a=>-94,m=>-4,d=>3,j=>1,l=>2,c=>2,k=>-115,h=>0,b=>0,g=>6,f=>2,i=>2} a2ffffffd022030050008d2207000000 a2ffffffd022030050008d2207000000 a2ffffffd022030050008d2207000000 ffffffa20995800008808d50e0000000 a2ffffffd022030050008d2207000000 a2ffffffd022030050008d2207000000 ffffffa20995800008808d50e0000000 a2ffffffd022030050008d2207000000 ffffffa20995800008808d50e0000000 - {e=>3,n=>0,a=>-84,m=>0,d=>-2,j=>4,l=>2,c=>-1,k=>-57,h=>4,b=>5,g=>4,f=>-1,i=>1} acffffffbd7702000c01c70200000000 acffffffbd7702000c01c70200000000 acffffffbd7702000c01c70200000000 ffffffacbf3f00008600c74000000000 acffffffbd7702000c01c70200000000 acffffffbd7702000c01c70200000000 ffffffacbf3f00008600c74000000000 acffffffbd7702000c01c70200000000 ffffffacbf3f00008600c74000000000 - {e=>6,n=>3,a=>-84,m=>0,d=>-2,j=>6,l=>5,c=>-4,k=>45,h=>4,b=>0,g=>3,f=>-1,i=>-3} acffffffa0fd0100ac012d0503000000 acffffffa0fd0100ac012d0503000000 acffffffa0fd0100ac012d0503000000 ffffffac136ec00097002da060000000 acffffffa0fd0100ac012d0503000000 acffffffa0fd0100ac012d0503000000 ffffffac136ec00097002da060000000 acffffffa0fd0100ac012d0503000000 ffffffac136ec00097002da060000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>1,a=>73,m=>-2,d=>1,j=>5,l=>1,c=>-4,k=>34,h=>0,b=>2,g=>0,f=>-2,o=>136,i=>0} 49000000626400004001223101880000 49000000626400004001223101880000 49000000626400004001223101880000 0000004950ac00000280223820880000 49000000626400004001223101880000 49000000626400004001223101880000 0000004950ac00000280223820880000 49000000626400004001223101880000 0000004950ac00000280223820880000 - {e=>7,n=>0,a=>-14,m=>-2,d=>2,j=>2,l=>3,c=>-2,k=>-24,h=>3,b=>6,g=>5,f=>3,o=>72,i=>1} f2ffffffb6be02008b00e83300480000 f2ffffffb6be02008b00e83300480000 f2ffffffb6be02008b00e83300480000 fffffff2d97740006500e87800480000 f2ffffffb6be02008b00e83300480000 f2ffffffb6be02008b00e83300480000 fffffff2d97740006500e87800480000 f2ffffffb6be02008b00e83300480000 fffffff2d97740006500e87800480000 - {e=>7,n=>0,a=>-32,m=>0,d=>3,j=>6,l=>3,c=>-2,k=>-5,h=>3,b=>6,g=>6,f=>1,o=>139,i=>-2} e0fffffff61e0300b301fb03008b0000 e0fffffff61e0300b301fb03008b0000 e0fffffff61e0300b301fb03008b0000 ffffffe0d9f380007b00fb60008b0000 e0fffffff61e0300b301fb03008b0000 e0fffffff61e0300b301fb03008b0000 ffffffe0d9f380007b00fb60008b0000 e0fffffff61e0300b301fb03008b0000 ffffffe0d9f380007b00fb60008b0000 - {e=>7,n=>0,a=>-69,m=>2,d=>2,j=>2,l=>1,c=>0,k=>118,h=>3,b=>5,g=>4,f=>-4,o=>156,i=>2} bbffffff854e020093007611009c0000 bbffffff854e020093007611009c0000 bbffffff854e020093007611009c0000 ffffffbba179000069007628009c0000 bbffffff854e020093007611009c0000 bbffffff854e020093007611009c0000 ffffffbba179000069007628009c0000 bbffffff854e020093007611009c0000 ffffffbba179000069007628009c0000 - {e=>0,n=>4,a=>-23,m=>-1,d=>-2,j=>3,l=>7,c=>0,k=>44,h=>7,b=>0,g=>5,f=>0,o=>146,i=>1} e9ffffff80810200cf002c3f04920000 e9ffffff80810200cf002c3f04920000 e9ffffff80810200cf002c3f04920000 ffffffe903014000e5802cfc80920000 e9ffffff80810200cf002c3f04920000 e9ffffff80810200cf002c3f04920000 ffffffe903014000e5802cfc80920000 e9ffffff80810200cf002c3f04920000 ffffffe903014000e5802cfc80920000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; }; - {a=>116,b=>0} 7400000000000000 74000000000000000000000000000000 74000000000000000000000000000000 0000007400000000 7400000000000000 7400000000000000 00000000000000740000000000000000 7400000000000000 0000007400000000 - {a=>-38,b=>2} daffffff02000000 daffffffffffffff0200000000000000 daffffffffffffff0200000000000000 ffffffda40000000 daffffff02000000 daffffff02000000 ffffffffffffffda4000000000000000 daffffff02000000 ffffffda40000000 - {a=>-116,b=>0} 8cffffff00000000 8cffffffffffffff0000000000000000 8cffffffffffffff0000000000000000 ffffff8c00000000 8cffffff00000000 8cffffff00000000 ffffffffffffff8c0000000000000000 8cffffff00000000 ffffff8c00000000 - {a=>-9,b=>4} f7ffffff04000000 f7ffffffffffffff0400000000000000 f7ffffffffffffff0400000000000000 fffffff780000000 f7ffffff04000000 f7ffffff04000000 fffffffffffffff78000000000000000 f7ffffff04000000 fffffff780000000 - {a=>-84,b=>1} acffffff01000000 acffffffffffffff0100000000000000 acffffffffffffff0100000000000000 ffffffac20000000 acffffff01000000 acffffff01000000 ffffffffffffffac2000000000000000 acffffff01000000 ffffffac20000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; }; - {c=>2,a=>-53,b=>0} cbffffff10000000 cbffffffffffffff1000000000000000 cbffffffffffffff1000000000000000 ffffffcb08000000 cbffffff10000000 cbffffff10000000 ffffffffffffffcb0800000000000000 cbffffff10000000 ffffffcb08000000 - {c=>-2,a=>54,b=>3} 3600000033000000 36000000000000003300000000000000 36000000000000003300000000000000 0000003678000000 3600000033000000 3600000033000000 00000000000000367800000000000000 3600000033000000 0000003678000000 - {c=>-2,a=>90,b=>7} 5a00000037000000 5a000000000000003700000000000000 5a000000000000003700000000000000 0000005af8000000 5a00000037000000 5a00000037000000 000000000000005af800000000000000 5a00000037000000 0000005af8000000 - {c=>-1,a=>16,b=>0} 1000000038000000 10000000000000003800000000000000 10000000000000003800000000000000 000000101c000000 1000000038000000 1000000038000000 00000000000000101c00000000000000 1000000038000000 000000101c000000 - {c=>2,a=>66,b=>6} 4200000016000000 42000000000000001600000000000000 42000000000000001600000000000000 00000042c8000000 4200000016000000 4200000016000000 0000000000000042c800000000000000 4200000016000000 00000042c8000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>101,b=>3,d=>-4} 650000000b010000 65000000000000000b01000000000000 65000000000000000b01000000000000 0000006566000000 650000000b010000 650000000b010000 00000000000000656600000000000000 650000000b010000 0000006566000000 - {c=>0,a=>-29,b=>2,d=>-4} e3ffffff02010000 e3ffffffffffffff0201000000000000 e3ffffffffffffff0201000000000000 ffffffe342000000 e3ffffff02010000 e3ffffff02010000 ffffffffffffffe34200000000000000 e3ffffff02010000 ffffffe342000000 - {c=>-2,a=>-116,b=>7,d=>2} 8cffffffb7000000 8cffffffffffffffb700000000000000 8cffffffffffffffb700000000000000 ffffff8cf9000000 8cffffffb7000000 8cffffffb7000000 ffffffffffffff8cf900000000000000 8cffffffb7000000 ffffff8cf9000000 - {c=>-4,a=>-103,b=>1,d=>-2} 99ffffffa1010000 99ffffffffffffffa101000000000000 99ffffffffffffffa101000000000000 ffffff9933000000 99ffffffa1010000 99ffffffa1010000 ffffffffffffff993300000000000000 99ffffffa1010000 ffffff9933000000 - {c=>-4,a=>90,b=>4,d=>0} 5a00000024000000 5a000000000000002400000000000000 5a000000000000002400000000000000 0000005a90000000 5a00000024000000 5a00000024000000 000000000000005a9000000000000000 5a00000024000000 0000005a90000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>6,c=>-3,a=>-61,b=>2,d=>-2} c3ffffffaa0d0000 c3ffffffffffffffaa0d000000000000 c3ffffffffffffffaa0d000000000000 ffffffc357600000 c3ffffffaa0d0000 c3ffffffaa0d0000 ffffffffffffffc35760000000000000 c3ffffffaa0d0000 ffffffc357600000 - {e=>4,c=>1,a=>111,b=>2,d=>3} 6f000000ca080000 6f00000000000000ca08000000000000 6f00000000000000ca08000000000000 0000006f45c00000 6f000000ca080000 6f000000ca080000 000000000000006f45c0000000000000 6f000000ca080000 0000006f45c00000 - {e=>4,c=>0,a=>-27,b=>3,d=>-2} e5ffffff83090000 e5ffffffffffffff8309000000000000 e5ffffffffffffff8309000000000000 ffffffe563400000 e5ffffff83090000 e5ffffff83090000 ffffffffffffffe56340000000000000 e5ffffff83090000 ffffffe563400000 - {e=>0,c=>0,a=>123,b=>5,d=>-2} 7b00000085010000 7b000000000000008501000000000000 7b000000000000008501000000000000 0000007ba3000000 7b00000085010000 7b00000085010000 000000000000007ba300000000000000 7b00000085010000 0000007ba3000000 - {e=>2,c=>0,a=>92,b=>7,d=>-4} 5c00000007050000 5c000000000000000705000000000000 5c000000000000000705000000000000 0000005ce2200000 5c00000007050000 5c00000007050000 000000000000005ce220000000000000 5c00000007050000 0000005ce2200000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>3,c=>0,a=>-105,b=>0,d=>2,f=>0} 97ffffff80060000 97ffffffffffffff8006000000000000 97ffffffffffffff8006000000000000 ffffff9701300000 97ffffff80060000 97ffffff80060000 ffffffffffffff970130000000000000 97ffffff80060000 ffffff9701300000 - {e=>0,c=>1,a=>-22,b=>2,d=>-1,f=>-2} eaffffffca610000 eaffffffffffffffca61000000000000 eaffffffffffffffca61000000000000 ffffffea478c0000 eaffffffca610000 eaffffffca610000 ffffffffffffffea478c000000000000 eaffffffca610000 ffffffea478c0000 - {e=>1,c=>-3,a=>42,b=>2,d=>-1,f=>-1} 2a000000ea730000 2a00000000000000ea73000000000000 2a00000000000000ea73000000000000 0000002a579e0000 2a000000ea730000 2a000000ea730000 000000000000002a579e000000000000 2a000000ea730000 0000002a579e0000 - {e=>6,c=>0,a=>-26,b=>6,d=>-1,f=>-3} e6ffffffc65d0000 e6ffffffffffffffc65d000000000000 e6ffffffffffffffc65d000000000000 ffffffe6c3ea0000 e6ffffffc65d0000 e6ffffffc65d0000 ffffffffffffffe6c3ea000000000000 e6ffffffc65d0000 ffffffe6c3ea0000 - {e=>2,c=>2,a=>65,b=>0,d=>0,f=>0} 4100000010040000 41000000000000001004000000000000 41000000000000001004000000000000 0000004108200000 4100000010040000 4100000010040000 00000000000000410820000000000000 4100000010040000 0000004108200000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>0,c=>-2,a=>40,g=>2,b=>5,d=>2,f=>-4} 28000000b5400100 2800000000000000b540010000000000 2800000000000000b540010000000000 00000028b9088000 28000000b5400100 28000000b5400100 0000000000000028b908800000000000 28000000b5400100 00000028b9088000 - {e=>7,c=>3,a=>118,g=>5,b=>4,d=>-3,f=>-3} 760000005cdf0200 76000000000000005cdf020000000000 76000000000000005cdf020000000000 000000768efb4000 760000005cdf0200 760000005cdf0200 00000000000000768efb400000000000 760000005cdf0200 000000768efb4000 - {e=>5,c=>-2,a=>-74,g=>3,b=>3,d=>-4,f=>2} b6ffffff33ab0100 b6ffffffffffffff33ab010000000000 b6ffffffffffffff33ab010000000000 ffffffb67a54c000 b6ffffff33ab0100 b6ffffff33ab0100 ffffffffffffffb67a54c00000000000 b6ffffff33ab0100 ffffffb67a54c000 - {e=>4,c=>-4,a=>-40,g=>1,b=>7,d=>-4,f=>-1} d8ffffff27f90000 d8ffffffffffffff27f9000000000000 d8ffffffffffffff27f9000000000000 ffffffd8f24e4000 d8ffffff27f90000 d8ffffff27f90000 ffffffffffffffd8f24e400000000000 d8ffffff27f90000 ffffffd8f24e4000 - {e=>0,c=>3,a=>18,g=>6,b=>0,d=>-4,f=>1} 1200000018110300 12000000000000001811030000000000 12000000000000001811030000000000 000000120e038000 1200000018110300 1200000018110300 00000000000000120e03800000000000 1200000018110300 000000120e038000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>0,c=>-2,a=>14,g=>3,b=>7,d=>3,f=>0} 0e000000f7800100 0e00000000000000f780010000000000 0e00000000000000f780010000000000 0000000ef980c000 0e000000f7800100 0e000000f7800100 000000000000000ef980c00000000000 0e000000f7800100 0000000ef980c000 - {e=>1,c=>0,a=>-50,g=>4,b=>7,d=>3,f=>0} ceffffffc7020200 ceffffffffffffffc702020000000000 ceffffffffffffffc702020000000000 ffffffcee1910000 ceffffffc7020200 ceffffffc7020200 ffffffffffffffcee191000000000000 ceffffffc7020200 ffffffcee1910000 - {e=>6,c=>-3,a=>101,g=>4,b=>2,d=>-4,f=>0} 650000002a0d0200 65000000000000002a0d020000000000 65000000000000002a0d020000000000 0000006556610000 650000002a0d0200 650000002a0d0200 00000000000000655661000000000000 650000002a0d0200 0000006556610000 - {e=>4,c=>-1,a=>87,g=>0,b=>1,d=>1,f=>1} 5700000079180000 57000000000000007918000000000000 57000000000000007918000000000000 000000573cc20000 5700000079180000 5700000079180000 00000000000000573cc2000000000000 5700000079180000 000000573cc20000 - {e=>3,c=>-1,a=>45,g=>7,b=>0,d=>-2,f=>3} 2d000000b8b70300 2d00000000000000b8b7030000000000 2d00000000000000b8b7030000000000 0000002d1f37c000 2d000000b8b70300 2d000000b8b70300 000000000000002d1f37c00000000000 2d000000b8b70300 0000002d1f37c000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>-39,d=>0,c=>-2,h=>1,b=>3,g=>7,f=>-3} d9ffffff33dc030001000000 d9ffffffffffffff33dc030001000000 d9ffffffffffffff33dc030001000000 ffffffd9786bc00020000000 d9ffffff33dc030001000000 d9ffffff33dc030001000000 ffffffffffffffd9786bc00020000000 d9ffffff33dc030001000000 ffffffd9786bc00020000000 - {e=>2,a=>-6,d=>-3,c=>1,h=>0,b=>1,g=>4,f=>-1} faffffff4975020000000000 faffffffffffffff4975020000000000 faffffffffffffff4975020000000000 fffffffa26af000000000000 faffffff4975020000000000 faffffff4975020000000000 fffffffffffffffa26af000000000000 faffffff4975020000000000 fffffffa26af000000000000 - {e=>4,a=>-114,d=>3,c=>-2,h=>2,b=>6,g=>2,f=>3} 8efffffff638010002000000 8efffffffffffffff638010002000000 8efffffffffffffff638010002000000 ffffff8ed9c6800040000000 8efffffff638010002000000 8efffffff638010002000000 ffffffffffffff8ed9c6800040000000 8efffffff638010002000000 ffffff8ed9c6800040000000 - {e=>2,a=>-117,d=>0,c=>-2,h=>2,b=>3,g=>0,f=>0} 8bffffff3304000002000000 8bffffffffffffff3304000002000000 8bffffffffffffff3304000002000000 ffffff8b7820000040000000 8bffffff3304000002000000 8bffffff3304000002000000 ffffffffffffff8b7820000040000000 8bffffff3304000002000000 ffffff8b7820000040000000 - {e=>6,a=>120,d=>2,c=>1,h=>5,b=>7,g=>4,f=>-3} 780000008f5c020005000000 78000000000000008f5c020005000000 78000000000000008f5c020005000000 00000078e56b0000a0000000 780000008f5c020005000000 780000008f5c020005000000 0000000000000078e56b0000a0000000 780000008f5c020005000000 00000078e56b0000a0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>52,d=>1,c=>3,h=>2,b=>3,g=>6,f=>2,i=>-3} 340000005b2203002a000000 34000000000000005b2203002a000000 34000000000000005b2203002a000000 000000346c95800054000000 340000005b2203002a000000 340000005b2203002a000000 00000000000000346c95800054000000 340000005b2203002a000000 000000346c95800054000000 - {e=>3,a=>53,d=>0,c=>0,h=>1,b=>3,g=>6,f=>2,i=>1} 350000000326030009000000 35000000000000000326030009000000 35000000000000000326030009000000 000000356035800024000000 350000000326030009000000 350000000326030009000000 00000000000000356035800024000000 350000000326030009000000 000000356035800024000000 - {e=>6,a=>16,d=>-4,c=>-1,h=>7,b=>1,g=>6,f=>1,i=>3} 10000000391d03001f000000 1000000000000000391d03001f000000 1000000000000000391d03001f000000 000000103e638000ec000000 10000000391d03001f000000 10000000391d03001f000000 00000000000000103e638000ec000000 10000000391d03001f000000 000000103e638000ec000000 - {e=>5,a=>110,d=>-3,c=>-2,h=>1,b=>4,g=>6,f=>1,i=>-1} 6e000000741b030039000000 6e00000000000000741b030039000000 6e00000000000000741b030039000000 0000006e9ad380003c000000 6e000000741b030039000000 6e000000741b030039000000 000000000000006e9ad380003c000000 6e000000741b030039000000 0000006e9ad380003c000000 - {e=>2,a=>-21,d=>1,c=>3,h=>1,b=>2,g=>0,f=>-4,i=>-3} ebffffff5a44000029000000 ebffffffffffffff5a44000029000000 ebffffffffffffff5a44000029000000 ffffffeb4ca8000034000000 ebffffff5a44000029000000 ebffffff5a44000029000000 ffffffffffffffeb4ca8000034000000 ebffffff5a44000029000000 ffffffeb4ca8000034000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>-50,d=>3,j=>1,c=>0,h=>3,b=>2,g=>2,f=>3,i=>-2} ceffffffc236010073000000 ceffffffffffffffc236010073000000 ceffffffffffffffc236010073000000 ffffffce41b6800078800000 ceffffffc236010073000000 ceffffffc236010073000000 ffffffffffffffce41b6800078800000 ceffffffc236010073000000 ffffffce41b6800078800000 - {e=>1,a=>-3,d=>0,j=>2,c=>-3,h=>2,b=>0,g=>1,f=>-2,i=>-4} fdffffff28e20000a2000000 fdffffffffffffff28e20000a2000000 fdffffffffffffff28e20000a2000000 fffffffd141c400051000000 fdffffff28e20000a2000000 fdffffff28e20000a2000000 fffffffffffffffd141c400051000000 fdffffff28e20000a2000000 fffffffd141c400051000000 - {e=>4,a=>52,d=>-2,j=>6,c=>-2,h=>1,b=>2,g=>0,f=>0,i=>-2} 34000000b2090000b1010000 3400000000000000b2090000b1010000 3400000000000000b2090000b1010000 000000345b4000003b000000 34000000b2090000b1010000 34000000b2090000b1010000 00000000000000345b4000003b000000 34000000b2090000b1010000 000000345b4000003b000000 - {e=>1,a=>99,d=>1,j=>7,c=>3,h=>7,b=>6,g=>4,f=>0,i=>3} 630000005e020200df010000 63000000000000005e020200df010000 63000000000000005e020200df010000 00000063cc910000ef800000 630000005e020200df010000 630000005e020200df010000 0000000000000063cc910000ef800000 630000005e020200df010000 00000063cc910000ef800000 - {e=>6,a=>127,d=>2,j=>0,c=>1,h=>5,b=>5,g=>5,f=>1,i=>-2} 7f0000008d9c020035000000 7f000000000000008d9c020035000000 7f000000000000008d9c020035000000 0000007fa5634000b8000000 7f0000008d9c020035000000 7f0000008d9c020035000000 000000000000007fa5634000b8000000 7f0000008d9c020035000000 0000007fa5634000b8000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>5,a=>53,d=>-2,j=>1,c=>0,k=>-7,h=>4,b=>1,g=>5,f=>1,i=>-1} 35000000819b02007c00f900 3500000000000000819b02007c00f900 3500000000000000819b02007c00f900 00000035235340009c80f900 35000000819b02007c00f900 35000000819b02007c00f900 0000000000000035235340009c80f900 35000000819b02007c00f900 00000035235340009c80f900 - {e=>4,a=>-53,d=>-4,j=>2,c=>1,k=>34,h=>7,b=>1,g=>3,f=>0,i=>0} cbffffff0989010087002200 cbffffffffffffff0989010087002200 cbffffffffffffff0989010087002200 ffffffcb2640c000e1002200 cbffffff0989010087002200 cbffffff0989010087002200 ffffffffffffffcb2640c000e1002200 cbffffff0989010087002200 ffffffcb2640c000e1002200 - {e=>6,a=>-45,d=>3,j=>5,c=>1,k=>97,h=>4,b=>6,g=>0,f=>-3,i=>2} d3ffffffce5c000054016100 d3ffffffffffffffce5c000054016100 d3ffffffffffffffce5c000054016100 ffffffd3c5ea00008a806100 d3ffffffce5c000054016100 d3ffffffce5c000054016100 ffffffffffffffd3c5ea00008a806100 d3ffffffce5c000054016100 ffffffd3c5ea00008a806100 - {e=>1,a=>65,d=>1,j=>0,c=>0,k=>30,h=>0,b=>0,g=>2,f=>3,i=>-4} 410000004032010020001e00 41000000000000004032010020001e00 41000000000000004032010020001e00 000000410096800010001e00 410000004032010020001e00 410000004032010020001e00 00000000000000410096800010001e00 410000004032010020001e00 000000410096800010001e00 - {e=>1,a=>-80,d=>-4,j=>5,c=>-3,k=>115,h=>3,b=>5,g=>3,f=>-4,i=>3} b0ffffff2dc301005b017300 b0ffffffffffffff2dc301005b017300 b0ffffffffffffff2dc301005b017300 ffffffb0b618c0006e807300 b0ffffff2dc301005b017300 b0ffffff2dc301005b017300 ffffffffffffffb0b618c0006e807300 b0ffffff2dc301005b017300 ffffffb0b618c0006e807300 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>4,a=>122,d=>2,j=>4,l=>5,c=>-3,k=>111,h=>7,b=>3,g=>4,f=>2,i=>2} 7a000000ab28020017016f05 7a00000000000000ab28020017016f05 7a00000000000000ab28020017016f05 0000007a75450000ea006fa0 7a000000ab28020017016f05 7a000000ab28020017016f05 000000000000007a75450000ea006fa0 7a000000ab28020017016f05 0000007a75450000ea006fa0 - {e=>4,a=>-118,d=>2,j=>0,l=>5,c=>-1,k=>9,h=>1,b=>4,g=>4,f=>1,i=>-3} 8affffffbc18020029000905 8affffffffffffffbc18020029000905 8affffffffffffffbc18020029000905 ffffff8a9d430000340009a0 8affffffbc18020029000905 8affffffbc18020029000905 ffffffffffffff8a9d430000340009a0 8affffffbc18020029000905 ffffff8a9d430000340009a0 - {e=>7,a=>-99,d=>-3,j=>1,l=>6,c=>3,k=>-51,h=>4,b=>0,g=>0,f=>2,i=>-1} 9dffffff582f00007c00cd06 9dffffffffffffff582f00007c00cd06 9dffffffffffffff582f00007c00cd06 ffffff9d0ef400009c80cdc0 9dffffff582f00007c00cd06 9dffffff582f00007c00cd06 ffffffffffffff9d0ef400009c80cdc0 9dffffff582f00007c00cd06 ffffff9d0ef400009c80cdc0 - {e=>5,a=>46,d=>-1,j=>7,l=>2,c=>-4,k=>-82,h=>4,b=>6,g=>6,f=>-4,i=>-1} 2e000000e64b0300fc01ae02 2e00000000000000e64b0300fc01ae02 2e00000000000000e64b0300fc01ae02 0000002ed3d980009f80ae40 2e000000e64b0300fc01ae02 2e000000e64b0300fc01ae02 000000000000002ed3d980009f80ae40 2e000000e64b0300fc01ae02 0000002ed3d980009f80ae40 - {e=>5,a=>-15,d=>-4,j=>3,l=>1,c=>3,k=>-7,h=>3,b=>7,g=>2,f=>-3,i=>3} f1ffffff1f5b0100db00f901 f1ffffffffffffff1f5b0100db00f901 f1ffffffffffffff1f5b0100db00f901 fffffff1ee5a80006d80f920 f1ffffff1f5b0100db00f901 f1ffffff1f5b0100db00f901 fffffffffffffff1ee5a80006d80f920 f1ffffff1f5b0100db00f901 fffffff1ee5a80006d80f920 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>-125,m=>2,d=>0,j=>0,l=>5,c=>-2,k=>49,h=>6,b=>0,g=>6,f=>3,i=>-4} 83ffffff3036030026003115 83ffffffffffffff3036030026003115 83ffffffffffffff3036030026003115 ffffff8318378000d00031a8 83ffffff3036030026003115 83ffffff3036030026003115 ffffffffffffff8318378000d00031a8 83ffffff3036030026003115 ffffff8318378000d00031a8 - {e=>5,a=>127,m=>1,d=>-3,j=>3,l=>3,c=>-4,k=>15,h=>1,b=>5,g=>6,f=>3,i=>1} 7f000000653b0300c9000f0b 7f00000000000000653b0300c9000f0b 7f00000000000000653b0300c9000f0b 0000007fb2d7800025800f64 7f000000653b0300c9000f0b 7f000000653b0300c9000f0b 000000000000007fb2d7800025800f64 7f000000653b0300c9000f0b 0000007fb2d7800025800f64 - {e=>5,a=>-102,m=>2,d=>1,j=>7,l=>4,c=>-2,k=>76,h=>2,b=>5,g=>4,f=>2,i=>0} 9affffff752a0200c2014c14 9affffffffffffff752a0200c2014c14 9affffffffffffff752a0200c2014c14 ffffff9ab8d5000043804c88 9affffff752a0200c2014c14 9affffff752a0200c2014c14 ffffffffffffff9ab8d5000043804c88 9affffff752a0200c2014c14 ffffff9ab8d5000043804c88 - {e=>3,a=>83,m=>-2,d=>-3,j=>6,l=>6,c=>-4,k=>56,h=>4,b=>0,g=>3,f=>1,i=>-1} 5300000060970100bc013836 530000000000000060970100bc013836 530000000000000060970100bc013836 0000005312b2c0009f0038d8 5300000060970100bc013836 5300000060970100bc013836 000000000000005312b2c0009f0038d8 5300000060970100bc013836 0000005312b2c0009f0038d8 - {e=>1,a=>-24,m=>-4,d=>-3,j=>0,l=>0,c=>2,k=>-52,h=>5,b=>6,g=>3,f=>2,i=>-2} e8ffffff56a301003500cc20 e8ffffffffffffff56a301003500cc20 e8ffffffffffffff56a301003500cc20 ffffffe8ca94c000b800cc10 e8ffffff56a301003500cc20 e8ffffff56a301003500cc20 ffffffffffffffe8ca94c000b800cc10 e8ffffff56a301003500cc20 ffffffe8ca94c000b800cc10 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>0,a=>74,m=>-2,d=>1,j=>6,l=>3,c=>2,k=>113,h=>1,b=>0,g=>0,f=>0,i=>-4} 4a000000500a0000a101713300000000 4a00000000000000500a0000a10171330000000000000000 4a00000000000000500a0000a10171330000000000000000 0000004a08d000003300717800000000 4a000000500a0000a101713300000000 4a000000500a0000a101713300000000 000000000000004a08d00000330071780000000000000000 4a000000500a0000a101713300000000 0000004a08d000003300717800000000 - {e=>5,n=>3,a=>-44,m=>1,d=>-3,j=>3,l=>6,c=>2,k=>-63,h=>7,b=>0,g=>4,f=>-1,i=>3} d4ffffff507b0200df00c10e03000000 d4ffffffffffffff507b0200df00c10e0300000000000000 d4ffffffffffffff507b0200df00c10e0300000000000000 ffffffd40adf0000ed80c1c460000000 d4ffffff507b0200df00c10e03000000 d4ffffff507b0200df00c10e03000000 ffffffffffffffd40adf0000ed80c1c46000000000000000 d4ffffff507b0200df00c10e03000000 ffffffd40adf0000ed80c1c460000000 - {e=>5,n=>1,a=>39,m=>1,d=>-3,j=>5,l=>0,c=>0,k=>1,h=>0,b=>1,g=>3,f=>2,i=>-1} 2700000041ab01007801010801000000 270000000000000041ab0100780101080100000000000000 270000000000000041ab0100780101080100000000000000 0000002722d4c0001e80010420000000 2700000041ab01007801010801000000 2700000041ab01007801010801000000 000000000000002722d4c0001e8001042000000000000000 2700000041ab01007801010801000000 0000002722d4c0001e80010420000000 - {e=>4,n=>3,a=>97,m=>-3,d=>-3,j=>7,l=>4,c=>-3,k=>75,h=>5,b=>6,g=>5,f=>3,i=>3} 610000006eb90200dd014b2c03000000 61000000000000006eb90200dd014b2c0300000000000000 61000000000000006eb90200dd014b2c0300000000000000 00000061d6c74000af804b9460000000 610000006eb90200dd014b2c03000000 610000006eb90200dd014b2c03000000 0000000000000061d6c74000af804b946000000000000000 610000006eb90200dd014b2c03000000 00000061d6c74000af804b9460000000 - {e=>1,n=>3,a=>77,m=>1,d=>-2,j=>3,l=>6,c=>-4,k=>50,h=>4,b=>0,g=>1,f=>-2,i=>-4} 4d000000a0e30000e400320e03000000 4d00000000000000a0e30000e400320e0300000000000000 4d00000000000000a0e30000e400320e0300000000000000 0000004d131c4000918032c460000000 4d000000a0e30000e400320e03000000 4d000000a0e30000e400320e03000000 000000000000004d131c4000918032c46000000000000000 4d000000a0e30000e400320e03000000 0000004d131c4000918032c460000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>1,a=>104,m=>0,d=>3,j=>1,l=>6,c=>2,k=>-66,h=>7,b=>0,g=>4,f=>-1,o=>189,i=>-3} 68000000d07402006f00be0601bd0000 6800000000000000d07402006f00be0601bd000000000000 6800000000000000d07402006f00be0601bd000000000000 0000006809af0000f480bec020bd0000 68000000d07402006f00be0601bd0000 68000000d07402006f00be0601bd0000 000000000000006809af0000f480bec020bd000000000000 68000000d07402006f00be0601bd0000 0000006809af0000f480bec020bd0000 - {e=>4,n=>1,a=>-82,m=>-1,d=>-2,j=>2,l=>6,c=>3,k=>81,h=>7,b=>1,g=>0,f=>-2,o=>27,i=>-3} aeffffff99690000af00513e011b0000 aeffffffffffffff99690000af00513e011b000000000000 aeffffffffffffff99690000af00513e011b000000000000 ffffffae2f4c0000f50051dc201b0000 aeffffff99690000af00513e011b0000 aeffffff99690000af00513e011b0000 ffffffffffffffae2f4c0000f50051dc201b000000000000 aeffffff99690000af00513e011b0000 ffffffae2f4c0000f50051dc201b0000 - {e=>0,n=>0,a=>110,m=>-3,d=>0,j=>2,l=>6,c=>-3,k=>27,h=>6,b=>6,g=>5,f=>0,o=>50,i=>3} 6e0000002e8002009e001b2e00320000 6e000000000000002e8002009e001b2e0032000000000000 6e000000000000002e8002009e001b2e0032000000000000 0000006ed4014000cd001bd400320000 6e0000002e8002009e001b2e00320000 6e0000002e8002009e001b2e00320000 000000000000006ed4014000cd001bd40032000000000000 6e0000002e8002009e001b2e00320000 0000006ed4014000cd001bd400320000 - {e=>0,n=>5,a=>65,m=>-4,d=>1,j=>3,l=>2,c=>-1,k=>-88,h=>2,b=>4,g=>7,f=>0,o=>17,i=>1} 410000007c800300ca00a82205110000 41000000000000007c800300ca00a8220511000000000000 41000000000000007c800300ca00a8220511000000000000 000000419c81c0004580a850a0110000 410000007c800300ca00a82205110000 410000007c800300ca00a82205110000 00000000000000419c81c0004580a850a011000000000000 410000007c800300ca00a82205110000 000000419c81c0004580a850a0110000 - {e=>2,n=>3,a=>51,m=>-2,d=>-3,j=>1,l=>1,c=>-1,k=>-125,h=>6,b=>2,g=>2,f=>-2,o=>98,i=>2} 330000007a6501005600833103620000 33000000000000007a650100560083310362000000000000 33000000000000007a650100560083310362000000000000 000000335eac8000c880833860620000 330000007a6501005600833103620000 330000007a6501005600833103620000 00000000000000335eac8000c88083386062000000000000 330000007a6501005600833103620000 000000335eac8000c880833860620000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; }; - {a=>4} 04000000 04000000 04000000 80000000 04000000 04000000 80000000 04000000 80000000 - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; }; - {a=>1,b=>-2} 31000000 31000000 31000000 38000000 31000000 31000000 38000000 31000000 38000000 - {a=>2,b=>3} 1a000000 1a000000 1a000000 4c000000 1a000000 1a000000 4c000000 1a000000 4c000000 - {a=>2,b=>2} 12000000 12000000 12000000 48000000 12000000 12000000 48000000 12000000 48000000 - {a=>2,b=>-2} 32000000 32000000 32000000 58000000 32000000 32000000 58000000 32000000 58000000 - {a=>5,b=>-4} 25000000 25000000 25000000 b0000000 25000000 25000000 b0000000 25000000 b0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>0,a=>0,b=>3} 18000000 18000000 18000000 0c000000 18000000 18000000 0c000000 18000000 0c000000 - {c=>-3,a=>0,b=>-3} 68010000 68010000 68010000 16800000 68010000 68010000 16800000 68010000 16800000 - {c=>-3,a=>3,b=>-4} 63010000 63010000 63010000 72800000 63010000 63010000 72800000 63010000 72800000 - {c=>-2,a=>6,b=>-2} b6010000 b6010000 b6010000 db000000 b6010000 b6010000 db000000 b6010000 db000000 - {c=>-1,a=>4,b=>-3} ec010000 ec010000 ec010000 97800000 ec010000 ec010000 97800000 ec010000 97800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>0,a=>5,b=>-1,d=>0} 3d000000 3d000000 3d000000 bc000000 3d000000 3d000000 bc000000 3d000000 bc000000 - {c=>3,a=>4,b=>-2,d=>4} f4080000 f4080000 f4080000 99c00000 f4080000 f4080000 99c00000 f4080000 99c00000 - {c=>2,a=>0,b=>-1,d=>4} b8080000 b8080000 b8080000 1d400000 b8080000 b8080000 1d400000 b8080000 1d400000 - {c=>-3,a=>4,b=>2,d=>3} 54070000 54070000 54070000 8ab00000 54070000 54070000 8ab00000 54070000 8ab00000 - {c=>-2,a=>0,b=>0,d=>7} 800f0000 800f0000 800f0000 03700000 800f0000 800f0000 03700000 800f0000 03700000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>1,c=>-1,a=>5,b=>1,d=>0} cd110000 cd110000 cd110000 a7820000 cd110000 cd110000 a7820000 cd110000 a7820000 - {e=>-3,c=>-4,a=>1,b=>2,d=>4} 11590000 11590000 11590000 2a4a0000 11590000 11590000 2a4a0000 11590000 2a4a0000 - {e=>-1,c=>-1,a=>3,b=>0,d=>7} c37f0000 c37f0000 c37f0000 63fe0000 c37f0000 c37f0000 63fe0000 c37f0000 63fe0000 - {e=>0,c=>-3,a=>4,b=>-3,d=>0} 6c010000 6c010000 6c010000 96800000 6c010000 6c010000 96800000 6c010000 96800000 - {e=>2,c=>0,a=>5,b=>1,d=>7} 0d2e0000 0d2e0000 0d2e0000 a4740000 0d2e0000 0d2e0000 a4740000 0d2e0000 a4740000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>-1,c=>3,a=>3,b=>-2,d=>2,f=>6} f3740300 f3740300 f3740300 79af8000 f3740300 f3740300 79af8000 f3740300 79af8000 - {e=>2,c=>-1,a=>1,b=>-4,d=>5,f=>2} e12b0100 e12b0100 e12b0100 33d48000 e12b0100 e12b0100 33d48000 e12b0100 33d48000 - {e=>1,c=>1,a=>3,b=>-4,d=>2,f=>6} 63140300 63140300 63140300 70a38000 63140300 63140300 70a38000 63140300 70a38000 - {e=>1,c=>-2,a=>2,b=>-4,d=>2,f=>3} a2950100 a2950100 a2950100 5322c000 a2950100 a2950100 5322c000 a2950100 5322c000 - {e=>0,c=>0,a=>5,b=>-4,d=>4,f=>5} 25880200 25880200 25880200 b0414000 25880200 25880200 b0414000 25880200 b0414000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>-4,c=>-1,a=>5,b=>3,d=>2,f=>2} dd450100 dd450100 dd450100 afa88000 dd450100 dd450100 afa88000 dd450100 afa88000 - {e=>1,c=>-1,a=>3,b=>2,d=>7,f=>6} d31f0300 d31f0300 d31f0300 6bf38000 d31f0300 d31f0300 6bf38000 d31f0300 6bf38000 - {e=>-1,c=>3,a=>0,b=>1,d=>4,f=>5} c8f80200 c8f80200 c8f80200 05cf4000 c8f80200 c8f80200 05cf4000 c8f80200 05cf4000 - {e=>1,c=>-4,a=>2,b=>1,d=>1,f=>7} 0a930300 0a930300 0a930300 4613c000 0a930300 0a930300 4613c000 0a930300 4613c000 - {e=>-4,c=>-3,a=>2,b=>-1,d=>4,f=>1} 7ac90000 7ac90000 7ac90000 5ec84000 7ac90000 7ac90000 5ec84000 7ac90000 5ec84000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>-3,c=>3,a=>4,g=>2,b=>-1,d=>7,f=>5} fcde020002000000 fcde020002000000 fcde020002000000 9dfb400040000000 fcde020002000000 fcde020002000000 9dfb400040000000 fcde020002000000 9dfb400040000000 - {e=>0,c=>-4,a=>2,g=>2,b=>-4,d=>5,f=>5} 228b020002000000 228b020002000000 228b020002000000 5251400040000000 228b020002000000 228b020002000000 5251400040000000 228b020002000000 5251400040000000 - {e=>2,c=>1,a=>1,g=>6,b=>3,d=>3,f=>0} 5926000006000000 5926000006000000 5926000006000000 2cb40000c0000000 5926000006000000 5926000006000000 2cb40000c0000000 5926000006000000 2cb40000c0000000 - {e=>1,c=>-3,a=>3,g=>6,b=>2,d=>7,f=>0} 531f000006000000 531f000006000000 531f000006000000 6af20000c0000000 531f000006000000 531f000006000000 6af20000c0000000 531f000006000000 6af20000c0000000 - {e=>-4,c=>0,a=>5,g=>1,b=>-1,d=>3,f=>2} 3d46010001000000 3d46010001000000 3d46010001000000 bc38800020000000 3d46010001000000 3d46010001000000 bc38800020000000 3d46010001000000 bc38800020000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>-3,a=>2,d=>5,c=>-4,h=>0,b=>-1,g=>5,f=>7} 3adb030005000000 3adb030005000000 3adb030005000000 5e5bc000a0000000 3adb030005000000 3adb030005000000 5e5bc000a0000000 3adb030005000000 5e5bc000a0000000 - {e=>-3,a=>4,d=>6,c=>2,h=>-4,b=>3,g=>6,f=>3} 9cdc010026000000 9cdc010026000000 9cdc010026000000 8d6ac000d0000000 9cdc010026000000 9cdc010026000000 8d6ac000d0000000 9cdc010026000000 8d6ac000d0000000 - {e=>1,a=>4,d=>4,c=>3,h=>-1,b=>-2,g=>6,f=>3} f49801003e000000 f49801003e000000 f49801003e000000 99c2c000dc000000 f49801003e000000 f49801003e000000 99c2c000dc000000 f49801003e000000 99c2c000dc000000 - {e=>3,a=>5,d=>5,c=>1,h=>-2,b=>2,g=>6,f=>2} 553a010036000000 553a010036000000 553a010036000000 a8d68000d8000000 553a010036000000 553a010036000000 a8d68000d8000000 553a010036000000 a8d68000d8000000 - {e=>1,a=>7,d=>6,c=>2,h=>0,b=>3,g=>0,f=>6} 9f1c030000000000 9f1c030000000000 9f1c030000000000 ed63800000000000 9f1c030000000000 9f1c030000000000 ed63800000000000 9f1c030000000000 ed63800000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>2,a=>1,d=>3,c=>-3,h=>1,b=>-4,g=>1,f=>7,i=>5} 61a7030049010000 61a7030049010000 61a7030049010000 32b5c00026800000 61a7030049010000 61a7030049010000 32b5c00026800000 61a7030049010000 32b5c00026800000 - {e=>-4,a=>1,d=>3,c=>-2,h=>2,b=>-3,g=>7,f=>4,i=>3} a9470200d7000000 a9470200d7000000 a9470200d7000000 37390000e9800000 a9470200d7000000 a9470200d7000000 37390000e9800000 a9470200d7000000 37390000e9800000 - {e=>0,a=>2,d=>7,c=>3,h=>2,b=>2,g=>5,f=>2,i=>1} d20e010055000000 d20e010055000000 d20e010055000000 49f08000a8800000 d20e010055000000 d20e010055000000 49f08000a8800000 d20e010055000000 49f08000a8800000 - {e=>1,a=>3,d=>2,c=>2,h=>2,b=>0,g=>7,f=>6,i=>0} 8314030017000000 8314030017000000 8314030017000000 61238000e8000000 8314030017000000 8314030017000000 61238000e8000000 8314030017000000 61238000e8000000 - {e=>-4,a=>3,d=>2,c=>-1,h=>0,b=>-3,g=>4,f=>7,i=>4} ebc5030004010000 ebc5030004010000 ebc5030004010000 77a9c00082000000 ebc5030004010000 ebc5030004010000 77a9c00082000000 ebc5030004010000 77a9c00082000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>0,a=>0,d=>0,j=>-15,c=>0,h=>-4,b=>-2,g=>1,f=>2,i=>3} 30000100e100f100 30000100e100f100 30000100e100f100 180080003180f100 30000100e100f100 30000100e100f100 180080003180f100 30000100e100f100 180080003180f100 - {e=>-4,a=>2,d=>1,j=>101,c=>3,h=>1,b=>-2,g=>5,f=>1,i=>6} f2c200008d016500 f2c200008d016500 f2c200008d016500 59984000a7006500 f2c200008d016500 f2c200008d016500 59984000a7006500 f2c200008d016500 59984000a7006500 - {e=>-1,a=>0,d=>3,j=>90,c=>3,h=>3,b=>2,g=>6,f=>2,i=>1} d07601005e005a00 d07601005e005a00 d07601005e005a00 09be8000cc805a00 d07601005e005a00 d07601005e005a00 09be8000cc805a00 d07601005e005a00 09be8000cc805a00 - {e=>-4,a=>2,d=>2,j=>87,c=>3,h=>-1,b=>-1,g=>6,f=>4,i=>4} fa4402003e015700 fa4402003e015700 fa4402003e015700 5da90000de005700 fa4402003e015700 fa4402003e015700 5da90000de005700 fa4402003e015700 5da90000de005700 - {e=>1,a=>7,d=>3,j=>-72,c=>1,h=>0,b=>-1,g=>4,f=>1,i=>0} 7f9600000400b800 7f9600000400b800 7f9600000400b800 fcb240008000b800 7f9600000400b800 7f9600000400b800 fcb240008000b800 7f9600000400b800 fcb240008000b800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>-3,a=>3,d=>4,j=>77,c=>1,k=>1,h=>-3,b=>2,g=>3,f=>0,i=>2} 53580000ab004d01 53580000ab004d01 53580000ab004d01 68ca000075004d20 53580000ab004d01 53580000ab004d01 68ca000075004d20 53580000ab004d01 68ca000075004d20 - {e=>1,a=>1,d=>1,j=>20,c=>2,k=>1,h=>1,b=>-3,g=>3,f=>3,i=>4} a99201000b011401 a99201000b011401 a99201000b011401 3512c00066001420 a99201000b011401 a99201000b011401 3512c00066001420 a99201000b011401 3512c00066001420 - {e=>2,a=>5,d=>2,j=>108,c=>1,k=>5,h=>2,b=>0,g=>2,f=>5,i=>2} 45a4020092006c05 45a4020092006c05 45a4020092006c05 a0a5400049006ca0 45a4020092006c05 45a4020092006c05 a0a5400049006ca0 45a4020092006c05 a0a5400049006ca0 - {e=>3,a=>1,d=>1,j=>-2,c=>1,k=>7,h=>-1,b=>-3,g=>4,f=>4,i=>4} 693202003c01fe07 693202003c01fe07 693202003c01fe07 349700009e00fee0 693202003c01fe07 693202003c01fe07 349700009e00fee0 693202003c01fe07 349700009e00fee0 - {e=>0,a=>4,d=>7,j=>-104,c=>-2,k=>3,h=>2,b=>-4,g=>2,f=>6,i=>3} a40f0300d2009803 a40f0300d2009803 a40f0300d2009803 9371800049809860 a40f0300d2009803 a40f0300d2009803 9371800049809860 a40f0300d2009803 9371800049809860 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>1,a=>6,d=>7,j=>30,l=>2,c=>-1,k=>0,h=>-3,b=>-2,g=>6,f=>7,i=>5} f69f03006e011e10 f69f03006e011e10 f69f03006e011e10 dbf3c000d6801e08 f69f03006e011e10 f69f03006e011e10 dbf3c000d6801e08 f69f03006e011e10 dbf3c000d6801e08 - {e=>1,a=>1,d=>3,j=>-98,l=>0,c=>-1,k=>6,h=>-4,b=>-2,g=>1,f=>3,i=>1} f197010061009e06 f197010061009e06 f197010061009e06 3bb2c00030809ec0 f197010061009e06 f197010061009e06 3bb2c00030809ec0 f197010061009e06 3bb2c00030809ec0 - {e=>-2,a=>2,d=>1,j=>-45,l=>-2,c=>1,k=>7,h=>2,b=>-3,g=>0,f=>6,i=>6} 6a6203009001d337 6a6203009001d337 6a6203009001d337 549d80000b00d3f8 6a6203009001d337 6a6203009001d337 549d80000b00d3f8 6a6203009001d337 549d80000b00d3f8 - {e=>-2,a=>4,d=>2,j=>-1,l=>0,c=>-4,k=>0,h=>-3,b=>0,g=>3,f=>0,i=>4} 046500002b01ff00 046500002b01ff00 046500002b01ff00 822c00007600ff00 046500002b01ff00 046500002b01ff00 822c00007600ff00 046500002b01ff00 822c00007600ff00 - {e=>3,a=>4,d=>4,j=>110,l=>-1,c=>0,k=>1,h=>2,b=>-4,g=>0,f=>7,i=>6} 24b8030090016e39 24b8030090016e39 24b8030090016e39 9047c0000b006e3c 24b8030090016e39 24b8030090016e39 9047c0000b006e3c 24b8030090016e39 9047c0000b006e3c = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-2,a=>6,m=>4,d=>0,j=>28,l=>-3,c=>-3,k=>2,h=>3,b=>-1,g=>3,f=>5,i=>6} 7ee102009b011c2a04000000 7ee102009b011c2a04000000 7ee102009b011c2a04000000 de8d40006f001c5480000000 7ee102009b011c2a04000000 7ee102009b011c2a04000000 de8d40006f001c5480000000 7ee102009b011c2a04000000 de8d40006f001c5480000000 - {e=>-1,a=>7,m=>1,d=>6,j=>79,l=>2,c=>1,k=>3,h=>-4,b=>1,g=>1,f=>5,i=>2} 4ffc0200a1004f1301000000 4ffc0200a1004f1301000000 4ffc0200a1004f1301000000 e4ef400031004f6820000000 4ffc0200a1004f1301000000 4ffc0200a1004f1301000000 e4ef400031004f6820000000 4ffc0200a1004f1301000000 e4ef400031004f6820000000 - {e=>-3,a=>5,m=>2,d=>3,j=>43,l=>-2,c=>-4,k=>3,h=>-4,b=>-3,g=>5,f=>6,i=>5} 2d57030065012b3302000000 2d57030065012b3302000000 2d57030065012b3302000000 b63b8000b2802b7840000000 2d57030065012b3302000000 2d57030065012b3302000000 b63b8000b2802b7840000000 2d57030065012b3302000000 b63b8000b2802b7840000000 - {e=>-2,a=>6,m=>4,d=>2,j=>62,l=>-2,c=>-4,k=>4,h=>-2,b=>-1,g=>1,f=>5,i=>4} 3ee5020031013e3404000000 3ee5020031013e3404000000 3ee5020031013e3404000000 de2d40003a003e9880000000 3ee5020031013e3404000000 3ee5020031013e3404000000 de2d40003a003e9880000000 3ee5020031013e3404000000 de2d40003a003e9880000000 - {e=>1,a=>1,m=>0,d=>4,j=>-74,l=>-3,c=>2,k=>1,h=>-2,b=>2,g=>2,f=>6,i=>4} 911803003201b62900000000 911803003201b62900000000 911803003201b62900000000 294380005a00b63400000000 911803003201b62900000000 911803003201b62900000000 294380005a00b63400000000 911803003201b62900000000 294380005a00b63400000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>-4,n=>116,a=>1,m=>6,d=>4,j=>-19,l=>-1,c=>-2,k=>1,h=>0,b=>-1,g=>5,f=>3,i=>5} b9c901004501ed3906740000 b9c901004501ed3906740000 b9c901004501ed3906740000 3f48c000a280ed3cc0740000 b9c901004501ed3906740000 b9c901004501ed3906740000 3f48c000a280ed3cc0740000 b9c901004501ed3906740000 3f48c000a280ed3cc0740000 - {e=>2,n=>61,a=>4,m=>3,d=>0,j=>78,l=>-2,c=>3,k=>3,h=>-3,b=>-3,g=>2,f=>0,i=>2} ec200000aa004e33033d0000 ec200000aa004e33033d0000 ec200000aa004e33033d0000 9584000055004e78603d0000 ec200000aa004e33033d0000 ec200000aa004e33033d0000 9584000055004e78603d0000 ec200000aa004e33033d0000 9584000055004e78603d0000 - {e=>-1,n=>150,a=>3,m=>2,d=>3,j=>-89,l=>-4,c=>-3,k=>7,h=>-3,b=>-1,g=>3,f=>5,i=>1} 7bf702006b00a72702960000 7bf702006b00a72702960000 7bf702006b00a72702960000 7ebf40007480a7f040960000 7bf702006b00a72702960000 7bf702006b00a72702960000 7ebf40007480a7f040960000 7bf702006b00a72702960000 7ebf40007480a7f040960000 - {e=>-1,n=>162,a=>3,m=>5,d=>1,j=>46,l=>-2,c=>-1,k=>2,h=>-1,b=>3,g=>4,f=>0,i=>2} db730000bc002e3205a20000 db730000bc002e3205a20000 db730000bc002e3205a20000 6f9e00009d002e58a0a20000 db730000bc002e3205a20000 db730000bc002e3205a20000 6f9e00009d002e58a0a20000 db730000bc002e3205a20000 6f9e00009d002e58a0a20000 - {e=>-4,n=>162,a=>2,m=>5,d=>7,j=>-26,l=>2,c=>3,k=>0,h=>3,b=>-2,g=>1,f=>3,i=>6} f2ce01009901e61005a20000 f2ce01009901e61005a20000 f2ce01009901e61005a20000 59f8c0002f00e608a0a20000 f2ce01009901e61005a20000 f2ce01009901e61005a20000 59f8c0002f00e608a0a20000 f2ce01009901e61005a20000 59f8c0002f00e608a0a20000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; }; - {a=>-94,b=>6} a2060000 a2060000 a2060000 a2c00000 a2060000 a2060000 a2c00000 a2060000 a2c00000 - {a=>-87,b=>1} a9010000 a9010000 a9010000 a9200000 a9010000 a9010000 a9200000 a9010000 a9200000 - {a=>-8,b=>2} f8020000 f8020000 f8020000 f8400000 f8020000 f8020000 f8400000 f8020000 f8400000 - {a=>-106,b=>2} 96020000 96020000 96020000 96400000 96020000 96020000 96400000 96020000 96400000 - {a=>-98,b=>5} 9e050000 9e050000 9e050000 9ea00000 9e050000 9e050000 9ea00000 9e050000 9ea00000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; }; - {c=>3,a=>-72,b=>5} b81d0000 b81d0000 b81d0000 b8ac0000 b81d0000 b81d0000 b8ac0000 b81d0000 b8ac0000 - {c=>0,a=>-13,b=>5} f3050000 f3050000 f3050000 f3a00000 f3050000 f3050000 f3a00000 f3050000 f3a00000 - {c=>3,a=>-92,b=>6} a41e0000 a41e0000 a41e0000 a4cc0000 a41e0000 a41e0000 a4cc0000 a41e0000 a4cc0000 - {c=>-1,a=>79,b=>3} 4f3b0000 4f3b0000 4f3b0000 4f7c0000 4f3b0000 4f3b0000 4f7c0000 4f3b0000 4f7c0000 - {c=>-3,a=>-108,b=>7} 942f0000 942f0000 942f0000 94f40000 942f0000 942f0000 94f40000 942f0000 94f40000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>49,b=>2,d=>-3} 314a0100 314a0100 314a0100 31468000 314a0100 314a0100 31468000 314a0100 31468000 - {c=>0,a=>42,b=>7,d=>0} 2a070000 2a070000 2a070000 2ae00000 2a070000 2a070000 2ae00000 2a070000 2ae00000 - {c=>-4,a=>41,b=>5,d=>-3} 29650100 29650100 29650100 29b28000 29650100 29650100 29b28000 29650100 29b28000 - {c=>1,a=>-70,b=>4,d=>0} ba0c0000 ba0c0000 ba0c0000 ba840000 ba0c0000 ba0c0000 ba840000 ba0c0000 ba840000 - {c=>2,a=>-18,b=>5,d=>-1} eed50100 eed50100 eed50100 eeab8000 eed50100 eed50100 eeab8000 eed50100 eeab8000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-3,a=>-42,b=>7,d=>-2} d6af0300 d6af0300 d6af0300 d6f71000 d6af0300 d6af0300 d6f71000 d6af0300 d6f71000 - {e=>5,c=>-4,a=>109,b=>4,d=>1} 6d640a00 6d640a00 6d640a00 6d90d000 6d640a00 6d640a00 6d90d000 6d640a00 6d90d000 - {e=>7,c=>-2,a=>-119,b=>4,d=>0} 89340e00 89340e00 89340e00 89987000 89340e00 89340e00 89987000 89340e00 89987000 - {e=>3,c=>-3,a=>-23,b=>6,d=>0} e92e0600 e92e0600 e92e0600 e9d43000 e92e0600 e92e0600 e9d43000 e92e0600 e9d43000 - {e=>1,c=>-4,a=>-38,b=>2,d=>3} dae20200 dae20200 dae20200 da519000 dae20200 dae20200 da519000 dae20200 da519000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>5,c=>-3,a=>-8,b=>3,d=>-1,f=>0} f8eb0b00 f8eb0b00 f8eb0b00 f877d000 f8eb0b00 f8eb0b00 f877d000 f8eb0b00 f877d000 - {e=>4,c=>0,a=>3,b=>7,d=>2,f=>2} 03872800 03872800 03872800 03e14400 03872800 03872800 03e14400 03872800 03e14400 - {e=>4,c=>2,a=>43,b=>3,d=>-4,f=>-3} 2b135900 2b135900 2b135900 2b6a4a00 2b135900 2b135900 2b6a4a00 2b135900 2b6a4a00 - {e=>2,c=>-3,a=>-97,b=>6,d=>-4,f=>1} 9f2e1500 9f2e1500 9f2e1500 9fd62200 9f2e1500 9f2e1500 9fd62200 9f2e1500 9fd62200 - {e=>6,c=>3,a=>87,b=>5,d=>2,f=>-1} 579d7c00 579d7c00 579d7c00 57ad6e00 579d7c00 579d7c00 57ad6e00 579d7c00 57ad6e00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>7,c=>2,a=>-29,g=>2,b=>6,d=>-1,f=>-3} e3d65f01 e3d65f01 e3d65f01 e3cbfa80 e3d65f01 e3d65f01 e3cbfa80 e3d65f01 e3cbfa80 - {e=>5,c=>3,a=>-72,g=>6,b=>4,d=>-2,f=>0} b89c0b03 b89c0b03 b89c0b03 b88f5180 b89c0b03 b89c0b03 b88f5180 b89c0b03 b88f5180 - {e=>4,c=>0,a=>-24,g=>5,b=>4,d=>1,f=>2} e844a802 e844a802 e844a802 e880c540 e844a802 e844a802 e880c540 e844a802 e880c540 - {e=>1,c=>-1,a=>-37,g=>1,b=>4,d=>-3,f=>1} db7c9300 db7c9300 db7c9300 db9e9240 db7c9300 db7c9300 db9e9240 db7c9300 db9e9240 - {e=>7,c=>-2,a=>92,g=>0,b=>4,d=>-2,f=>-4} 5cb44f00 5cb44f00 5cb44f00 5c9b7800 5cb44f00 5cb44f00 5c9b7800 5cb44f00 5c9b7800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>7,c=>2,a=>93,g=>4,b=>1,d=>-3,f=>3} 5d513f02 5d513f02 5d513f02 5d2af700 5d513f02 5d513f02 5d2af700 5d513f02 5d2af700 - {e=>0,c=>-1,a=>-59,g=>5,b=>2,d=>-3,f=>-1} c57af102 c57af102 c57af102 c55e8f40 c57af102 c57af102 c55e8f40 c57af102 c55e8f40 - {e=>5,c=>-1,a=>8,g=>5,b=>2,d=>-2,f=>-1} 08bafb02 08bafb02 08bafb02 085f5f40 08bafb02 08bafb02 085f5f40 08bafb02 085f5f40 - {e=>0,c=>3,a=>-103,g=>5,b=>5,d=>1,f=>0} 995d8002 995d8002 995d8002 99ac8140 995d8002 995d8002 99ac8140 995d8002 99ac8140 - {e=>5,c=>-3,a=>114,g=>7,b=>1,d=>-4,f=>-1} 7229fb03 7229fb03 7229fb03 72365fc0 7229fb03 7229fb03 72365fc0 7229fb03 72365fc0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>2,d=>0,c=>2,h=>7,b=>5,g=>6,f=>-1} 0215760307000000 0215760307000000 0215760307000000 02a83f80e0000000 0215760307000000 0215760307000000 02a83f80e0000000 0215760307000000 02a83f80e0000000 - {e=>3,a=>-24,d=>-1,c=>-1,h=>6,b=>3,g=>2,f=>2} e8fb270106000000 e8fb270106000000 e8fb270106000000 e87fb480c0000000 e8fb270106000000 e8fb270106000000 e87fb480c0000000 e8fb270106000000 e87fb480c0000000 - {e=>6,a=>66,d=>0,c=>-3,h=>1,b=>3,g=>1,f=>-1} 422bfc0001000000 422bfc0001000000 422bfc0001000000 42746e4020000000 422bfc0001000000 422bfc0001000000 42746e4020000000 422bfc0001000000 42746e4020000000 - {e=>7,a=>83,d=>3,c=>0,h=>1,b=>1,g=>3,f=>3} 53c1be0101000000 53c1be0101000000 53c1be0101000000 5321f6c020000000 53c1be0101000000 53c1be0101000000 5321f6c020000000 53c1be0101000000 5321f6c020000000 - {e=>2,a=>47,d=>-1,c=>-1,h=>7,b=>0,g=>5,f=>3} 2ff8b50207000000 2ff8b50207000000 2ff8b50207000000 2f1fa740e0000000 2ff8b50207000000 2ff8b50207000000 2f1fa740e0000000 2ff8b50207000000 2f1fa740e0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>60,d=>-2,c=>0,h=>6,b=>2,g=>2,f=>-2,i=>-2} 3c826f0136000000 3c826f0136000000 3c826f0136000000 3c437c80d8000000 3c826f0136000000 3c826f0136000000 3c437c80d8000000 3c826f0136000000 3c437c80d8000000 - {e=>6,a=>-97,d=>0,c=>0,h=>0,b=>3,g=>4,f=>0,i=>3} 9f030c0218000000 9f030c0218000000 9f030c0218000000 9f6061000c000000 9f030c0218000000 9f030c0218000000 9f6061000c000000 9f030c0218000000 9f6061000c000000 - {e=>3,a=>88,d=>-3,c=>-4,h=>7,b=>5,g=>1,f=>-4,i=>-2} 5865c70037000000 5865c70037000000 5865c70037000000 58b2b840f8000000 5865c70037000000 5865c70037000000 58b2b840f8000000 5865c70037000000 58b2b840f8000000 - {e=>6,a=>86,d=>2,c=>0,h=>5,b=>0,g=>1,f=>3,i=>-2} 5680bc0035000000 5680bc0035000000 5680bc0035000000 56016640b8000000 5680bc0035000000 5680bc0035000000 56016640b8000000 5680bc0035000000 56016640b8000000 - {e=>0,a=>52,d=>-3,c=>-4,h=>5,b=>5,g=>0,f=>3,i=>3} 346531001d000000 346531001d000000 346531001d000000 34b28600ac000000 346531001d000000 346531001d000000 34b28600ac000000 346531001d000000 34b28600ac000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>80,d=>-2,j=>7,c=>0,h=>3,b=>2,g=>4,f=>1,i=>3} 50821702db010000 50821702db010000 50821702db010000 504333006f800000 50821702db010000 50821702db010000 504333006f800000 50821702db010000 504333006f800000 - {e=>7,a=>-43,d=>-3,j=>6,c=>1,h=>2,b=>0,g=>4,f=>0,i=>3} d5480f029a010000 d5480f029a010000 d5480f029a010000 d506f1004f000000 d5480f029a010000 d5480f029a010000 d506f1004f000000 d5480f029a010000 d506f1004f000000 - {e=>7,a=>87,d=>0,j=>3,c=>2,h=>7,b=>0,g=>7,f=>-3,i=>2} 5710de03d7000000 5710de03d7000000 5710de03d7000000 57087bc0e9800000 5710de03d7000000 5710de03d7000000 57087bc0e9800000 5710de03d7000000 57087bc0e9800000 - {e=>1,a=>57,d=>-4,j=>7,c=>-3,h=>2,b=>7,g=>4,f=>2,i=>2} 392f2302d2010000 392f2302d2010000 392f2302d2010000 39f615004b800000 392f2302d2010000 392f2302d2010000 39f615004b800000 392f2302d2010000 39f615004b800000 - {e=>1,a=>61,d=>0,j=>0,c=>-2,h=>3,b=>3,g=>7,f=>0,i=>1} 3d3382030b000000 3d3382030b000000 3d3382030b000000 3d7811c064000000 3d3382030b000000 3d3382030b000000 3d7811c064000000 3d3382030b000000 3d7811c064000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>2,a=>-111,d=>2,j=>6,c=>0,k=>2,h=>7,b=>5,g=>5,f=>-2,i=>1} 9185e4028f010200 9185e4028f010200 9185e4028f010200 91a12d40e7000200 9185e4028f010200 9185e4028f010200 91a12d40e7000200 9185e4028f010200 91a12d40e7000200 - {e=>3,a=>125,d=>-3,j=>7,c=>2,k=>102,h=>6,b=>4,g=>2,f=>-3,i=>3} 7d545701de016600 7d545701de016600 7d545701de016600 7d8aba80cf806600 7d545701de016600 7d545701de016600 7d8aba80cf806600 7d545701de016600 7d8aba80cf806600 - {e=>5,a=>-3,d=>-3,j=>4,c=>0,k=>42,h=>5,b=>0,g=>6,f=>-1,i=>-4} fd407b0325012a00 fd407b0325012a00 fd407b0325012a00 fd02df80b2002a00 fd407b0325012a00 fd407b0325012a00 fd02df80b2002a00 fd407b0325012a00 fd02df80b2002a00 - {e=>2,a=>-127,d=>0,j=>1,c=>-1,k=>70,h=>5,b=>0,g=>0,f=>1,i=>-2} 8138140075004600 8138140075004600 8138140075004600 811c2200b8804600 8138140075004600 8138140075004600 811c2200b8804600 8138140075004600 811c2200b8804600 - {e=>0,a=>43,d=>3,j=>3,c=>2,k=>93,h=>4,b=>2,g=>6,f=>1,i=>1} 2bd21003cc005d00 2bd21003cc005d00 2bd21003cc005d00 2b49838085805d00 2bd21003cc005d00 2bd21003cc005d00 2b49838085805d00 2bd21003cc005d00 2b49838085805d00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>0,a=>-82,d=>1,j=>3,l=>2,c=>-1,k=>124,h=>4,b=>3,g=>7,f=>3,i=>-4} ae7bb003e4007c02 ae7bb003e4007c02 ae7bb003e4007c02 ae7c87c091807c40 ae7bb003e4007c02 ae7bb003e4007c02 ae7c87c091807c40 ae7bb003e4007c02 ae7c87c091807c40 - {e=>7,a=>125,d=>-3,j=>6,l=>7,c=>-3,k=>33,h=>0,b=>5,g=>7,f=>2,i=>-3} 7d6daf03a8012107 7d6daf03a8012107 7d6daf03a8012107 7db6f5c0170021e0 7d6daf03a8012107 7d6daf03a8012107 7db6f5c0170021e0 7d6daf03a8012107 7db6f5c0170021e0 - {e=>0,a=>-27,d=>-1,j=>3,l=>5,c=>-1,k=>41,h=>0,b=>7,g=>6,f=>-2,i=>-2} e5ff6103f0002905 e5ff6103f0002905 e5ff6103f0002905 e5ff8d80198029a0 e5ff6103f0002905 e5ff6103f0002905 e5ff8d80198029a0 e5ff6103f0002905 e5ff8d80198029a0 - {e=>6,a=>-76,d=>-3,j=>7,l=>0,c=>0,k=>-16,h=>5,b=>7,g=>4,f=>-1,i=>2} b4477d02d501f000 b4477d02d501f000 b4477d02d501f000 b4e2ef00ab80f000 b4477d02d501f000 b4477d02d501f000 b4e2ef00ab80f000 b4477d02d501f000 b4e2ef00ab80f000 - {e=>4,a=>-66,d=>3,j=>1,l=>5,c=>2,k=>-26,h=>1,b=>6,g=>6,f=>0,i=>-1} bed608037900e605 bed608037900e605 bed608037900e605 bec9c1803c80e6a0 bed608037900e605 bed608037900e605 bec9c1803c80e6a0 bed608037900e605 bec9c1803c80e6a0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>-113,m=>3,d=>-2,j=>5,l=>3,c=>2,k=>-9,h=>0,b=>7,g=>1,f=>0,i=>1} 8f978f004801f71b 8f978f004801f71b 8f978f004801f71b 8feb70400680f76c 8f978f004801f71b 8f978f004801f71b 8feb70400680f76c 8f978f004801f71b 8feb70400680f76c - {e=>5,a=>14,m=>3,d=>-4,j=>7,l=>1,c=>-1,k=>41,h=>6,b=>4,g=>0,f=>-2,i=>-4} 0e3c6b00e6012919 0e3c6b00e6012919 0e3c6b00e6012919 0e9e5c00d380292c 0e3c6b00e6012919 0e3c6b00e6012919 0e9e5c00d380292c 0e3c6b00e6012919 0e9e5c00d380292c - {e=>1,a=>50,m=>2,d=>3,j=>7,l=>3,c=>-4,k=>-106,h=>4,b=>3,g=>0,f=>-1,i=>-4} 32e37200e4019613 32e37200e4019613 32e37200e4019613 32719e0093809668 32e37200e4019613 32e37200e4019613 32719e0093809668 32e37200e4019613 32719e0093809668 - {e=>3,a=>122,m=>2,d=>1,j=>5,l=>6,c=>-3,k=>83,h=>4,b=>0,g=>0,f=>-2,i=>2} 7a68660054015316 7a68660054015316 7a68660054015316 7a14bc008a8053c8 7a68660054015316 7a68660054015316 7a14bc008a8053c8 7a68660054015316 7a14bc008a8053c8 - {e=>4,a=>25,m=>-4,d=>1,j=>5,l=>0,c=>1,k=>115,h=>2,b=>1,g=>6,f=>1,i=>0} 1949180342017320 1949180342017320 1949180342017320 1924c38042807310 1949180342017320 1949180342017320 1924c38042807310 1949180342017320 1924c38042807310 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>7,a=>-13,m=>2,d=>-3,j=>4,l=>5,c=>-3,k=>-63,h=>6,b=>1,g=>7,f=>3,i=>3} f369b7031e01c11507000000 f369b7031e01c11507000000 f369b7031e01c11507000000 f336b7c0ce00c1a8e0000000 f369b7031e01c11507000000 f369b7031e01c11507000000 f336b7c0ce00c1a8e0000000 f369b7031e01c11507000000 f336b7c0ce00c1a8e0000000 - {e=>2,n=>2,a=>10,m=>2,d=>3,j=>4,l=>0,c=>2,k=>-15,h=>1,b=>3,g=>3,f=>-3,i=>-2} 0ad3d4013101f11002000000 0ad3d4013101f11002000000 0ad3d4013101f11002000000 0a69aac03a00f10840000000 0ad3d4013101f11002000000 0ad3d4013101f11002000000 0a69aac03a00f10840000000 0ad3d4013101f11002000000 0a69aac03a00f10840000000 - {e=>2,n=>5,a=>53,m=>-2,d=>2,j=>5,l=>1,c=>2,k=>-31,h=>5,b=>7,g=>4,f=>-3,i=>1} 359754024d01e13105000000 359754024d01e13105000000 359754024d01e13105000000 35e92b00a680e138a0000000 359754024d01e13105000000 359754024d01e13105000000 35e92b00a680e138a0000000 359754024d01e13105000000 35e92b00a680e138a0000000 - {e=>2,n=>3,a=>92,m=>3,d=>3,j=>6,l=>6,c=>-2,k=>99,h=>7,b=>3,g=>4,f=>-4,i=>-2} 5cf34402b701631e03000000 5cf34402b701631e03000000 5cf34402b701631e03000000 5c79a900fb0063cc60000000 5cf34402b701631e03000000 5cf34402b701631e03000000 5c79a900fb0063cc60000000 5cf34402b701631e03000000 5c79a900fb0063cc60000000 - {e=>2,n=>6,a=>-14,m=>1,d=>0,j=>0,l=>2,c=>-4,k=>1,h=>7,b=>7,g=>4,f=>1,i=>-3} f22714022f00010a06000000 f22714022f00010a06000000 f22714022f00010a06000000 f2f02300f4000144c0000000 f22714022f00010a06000000 f22714022f00010a06000000 f2f02300f4000144c0000000 f22714022f00010a06000000 f2f02300f4000144c0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>5,a=>61,m=>-2,d=>-4,j=>1,l=>6,c=>1,k=>-87,h=>5,b=>7,g=>7,f=>-1,o=>42,i=>1} 3d0ff1034d00a936052a0000 3d0ff1034d00a936052a0000 3d0ff1034d00a936052a0000 3de60fc0a480a9d8a02a0000 3d0ff1034d00a936052a0000 3d0ff1034d00a936052a0000 3de60fc0a480a9d8a02a0000 3d0ff1034d00a936052a0000 3de60fc0a480a9d8a02a0000 - {e=>1,n=>4,a=>116,m=>-1,d=>-4,j=>0,l=>7,c=>3,k=>-107,h=>2,b=>6,g=>5,f=>0,o=>162,i=>3} 741e83021a00953f04a20000 741e83021a00953f04a20000 741e83021a00953f04a20000 74ce11404c0095fc80a20000 741e83021a00953f04a20000 741e83021a00953f04a20000 74ce11404c0095fc80a20000 741e83021a00953f04a20000 74ce11404c0095fc80a20000 - {e=>4,n=>5,a=>114,m=>-3,d=>-2,j=>4,l=>5,c=>-2,k=>68,h=>3,b=>7,g=>3,f=>-2,o=>112,i=>-2} 72b7e9013301442d05700000 72b7e9013301442d05700000 72b7e9013301442d05700000 72fb4cc07a0044b4a0700000 72b7e9013301442d05700000 72b7e9013301442d05700000 72fb4cc07a0044b4a0700000 72b7e9013301442d05700000 72fb4cc07a0044b4a0700000 - {e=>2,n=>7,a=>-31,m=>-2,d=>-2,j=>7,l=>7,c=>-4,k=>20,h=>2,b=>1,g=>3,f=>-3,o=>162,i=>-2} e1a1d501f201143707a20000 e1a1d501f201143707a20000 e1a1d501f201143707a20000 e1332ac05b8014f8e0a20000 e1a1d501f201143707a20000 e1a1d501f201143707a20000 e1332ac05b8014f8e0a20000 e1a1d501f201143707a20000 e1332ac05b8014f8e0a20000 - {e=>2,n=>1,a=>-39,m=>-4,d=>-1,j=>4,l=>3,c=>1,k=>-123,h=>7,b=>7,g=>5,f=>1,o=>105,i=>-2} d9cf95023701852301690000 d9cf95023701852301690000 d9cf95023701852301690000 d9e7a340fa00857020690000 d9cf95023701852301690000 d9cf95023701852301690000 d9e7a340fa00857020690000 d9cf95023701852301690000 d9e7a340fa00857020690000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; }; - {a=>103,b=>3} 67000300 67000300 67000300 00676000 67000300 67000300 00676000 67000300 00676000 - {a=>38,b=>4} 26000400 26000400 26000400 00268000 26000400 26000400 00268000 26000400 00268000 - {a=>52,b=>0} 34000000 34000000 34000000 00340000 34000000 34000000 00340000 34000000 00340000 - {a=>-12,b=>3} f4ff0300 f4ff0300 f4ff0300 fff46000 f4ff0300 f4ff0300 fff46000 f4ff0300 fff46000 - {a=>5,b=>6} 05000600 05000600 05000600 0005c000 05000600 05000600 0005c000 05000600 0005c000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-92,b=>5} a4ff0500 a4ff0500 a4ff0500 ffa4a000 a4ff0500 a4ff0500 ffa4a000 a4ff0500 ffa4a000 - {c=>-2,a=>-97,b=>2} 9fff3200 9fff3200 9fff3200 ff9f5800 9fff3200 9fff3200 ff9f5800 9fff3200 ff9f5800 - {c=>3,a=>-63,b=>1} c1ff1900 c1ff1900 c1ff1900 ffc12c00 c1ff1900 c1ff1900 ffc12c00 c1ff1900 ffc12c00 - {c=>2,a=>93,b=>2} 5d001200 5d001200 5d001200 005d4800 5d001200 5d001200 005d4800 5d001200 005d4800 - {c=>2,a=>1,b=>3} 01001300 01001300 01001300 00016800 01001300 01001300 00016800 01001300 00016800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>65,b=>6,d=>-1} 4100f601 4100f601 4100f601 0041db80 4100f601 4100f601 0041db80 4100f601 0041db80 - {c=>-2,a=>107,b=>0,d=>3} 6b00f000 6b00f000 6b00f000 006b1980 6b00f000 6b00f000 006b1980 6b00f000 006b1980 - {c=>-2,a=>-7,b=>3,d=>1} f9ff7300 f9ff7300 f9ff7300 fff97880 f9ff7300 f9ff7300 fff97880 f9ff7300 fff97880 - {c=>-1,a=>-11,b=>3,d=>0} f5ff3b00 f5ff3b00 f5ff3b00 fff57c00 f5ff3b00 f5ff3b00 fff57c00 f5ff3b00 fff57c00 - {c=>-3,a=>-10,b=>7,d=>-3} f6ff6f01 f6ff6f01 f6ff6f01 fff6f680 f6ff6f01 f6ff6f01 fff6f680 f6ff6f01 fff6f680 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>7,c=>-3,a=>69,b=>7,d=>-2} 4500af0f 4500af0f 4500af0f 0045f770 4500af0f 4500af0f 0045f770 4500af0f 0045f770 - {e=>1,c=>1,a=>92,b=>7,d=>3} 5c00cf02 5c00cf02 5c00cf02 005ce590 5c00cf02 5c00cf02 005ce590 5c00cf02 005ce590 - {e=>5,c=>-3,a=>104,b=>7,d=>1} 68006f0a 68006f0a 68006f0a 0068f4d0 68006f0a 68006f0a 0068f4d0 68006f0a 0068f4d0 - {e=>6,c=>-3,a=>50,b=>7,d=>1} 32006f0c 32006f0c 32006f0c 0032f4e0 32006f0c 32006f0c 0032f4e0 32006f0c 0032f4e0 - {e=>6,c=>-3,a=>52,b=>5,d=>2} 3400ad0c 3400ad0c 3400ad0c 0034b560 3400ad0c 3400ad0c 0034b560 3400ad0c 0034b560 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>1,a=>-16,b=>7,d=>-4,f=>2} f0ff0f25 f0ff0f25 f0ff0f25 fff0e624 f0ff0f25 f0ff0f25 fff0e624 f0ff0f25 fff0e624 - {e=>3,c=>1,a=>-81,b=>2,d=>-3,f=>-2} afff4a67 afff4a67 afff4a67 ffaf46bc afff4a67 afff4a67 ffaf46bc afff4a67 ffaf46bc - {e=>0,c=>-2,a=>-7,b=>6,d=>2,f=>2} f9ffb620 f9ffb620 f9ffb620 fff9d904 f9ffb620 f9ffb620 fff9d904 f9ffb620 fff9d904 - {e=>5,c=>3,a=>46,b=>4,d=>1,f=>3} 2e005c3a 2e005c3a 2e005c3a 002e8cd6 2e005c3a 2e005c3a 002e8cd6 2e005c3a 002e8cd6 - {e=>2,c=>-4,a=>110,b=>3,d=>2,f=>-3} 6e00a354 6e00a354 6e00a354 006e712a 6e00a354 6e00a354 006e712a 6e00a354 006e712a = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>1,c=>2,a=>-118,g=>2,b=>2,d=>1,f=>1} 8aff521202000000 8aff521202000000 8aff521202000000 ff8a489240000000 8aff521202000000 8aff521202000000 ff8a489240000000 8aff521202000000 ff8a489240000000 - {e=>7,c=>-3,a=>73,g=>6,b=>3,d=>-4,f=>3} 49002b3f06000000 49002b3f06000000 49002b3f06000000 00497676c0000000 49002b3f06000000 49002b3f06000000 00497676c0000000 49002b3f06000000 00497676c0000000 - {e=>0,c=>-4,a=>51,g=>5,b=>3,d=>-1,f=>-1} 3300e37105000000 3300e37105000000 3300e37105000000 0033738ea0000000 3300e37105000000 3300e37105000000 0033738ea0000000 3300e37105000000 0033738ea0000000 - {e=>6,c=>0,a=>-60,g=>3,b=>4,d=>-3,f=>1} c4ff441d03000000 c4ff441d03000000 c4ff441d03000000 ffc482e260000000 c4ff441d03000000 c4ff441d03000000 ffc482e260000000 c4ff441d03000000 ffc482e260000000 - {e=>3,c=>-4,a=>-59,g=>0,b=>1,d=>-3,f=>3} c5ff613700000000 c5ff613700000000 c5ff613700000000 ffc532b600000000 c5ff613700000000 c5ff613700000000 ffc532b600000000 c5ff613700000000 ffc532b600000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>5,c=>-3,a=>-108,g=>3,b=>6,d=>-1,f=>-4} 94ffee4b03000000 94ffee4b03000000 94ffee4b03000000 ff94d7d860000000 94ffee4b03000000 94ffee4b03000000 ff94d7d860000000 94ffee4b03000000 ff94d7d860000000 - {e=>0,c=>1,a=>1,g=>6,b=>4,d=>-3,f=>-3} 01004c5106000000 01004c5106000000 01004c5106000000 0001868ac0000000 01004c5106000000 01004c5106000000 0001868ac0000000 01004c5106000000 0001868ac0000000 - {e=>7,c=>-3,a=>-122,g=>3,b=>2,d=>-4,f=>1} 86ff2a1f03000000 86ff2a1f03000000 86ff2a1f03000000 ff86567260000000 86ff2a1f03000000 86ff2a1f03000000 ff86567260000000 86ff2a1f03000000 ff86567260000000 - {e=>4,c=>-2,a=>112,g=>2,b=>6,d=>-4,f=>1} 7000361902000000 7000361902000000 7000361902000000 0070da4240000000 7000361902000000 7000361902000000 0070da4240000000 7000361902000000 0070da4240000000 - {e=>0,c=>-1,a=>-72,g=>6,b=>5,d=>3,f=>-4} b8fffd4006000000 b8fffd4006000000 b8fffd4006000000 ffb8bd88c0000000 b8fffd4006000000 b8fffd4006000000 ffb8bd88c0000000 b8fffd4006000000 ffb8bd88c0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>7,a=>108,d=>2,c=>0,h=>5,b=>7,g=>0,f=>3} 6c00873e0000000005000000 6c00873e0000000005000000 6c00873e0000000005000000 006ce17600000000a0000000 6c00873e0000000005000000 6c00873e0000000005000000 006ce17600000000a0000000 6c00873e0000000005000000 006ce17600000000a0000000 - {e=>3,a=>126,d=>-1,c=>3,h=>6,b=>3,g=>6,f=>-2} 7e00db670600000006000000 7e00db670600000006000000 7e00db670600000006000000 007e6fbcc0000000c0000000 7e00db670600000006000000 7e00db670600000006000000 007e6fbcc0000000c0000000 7e00db670600000006000000 007e6fbcc0000000c0000000 - {e=>0,a=>-62,d=>-2,c=>-4,h=>1,b=>5,g=>7,f=>-1} c2ffa5710700000001000000 c2ffa5710700000001000000 c2ffa5710700000001000000 ffc2b30ee000000020000000 c2ffa5710700000001000000 c2ffa5710700000001000000 ffc2b30ee000000020000000 c2ffa5710700000001000000 ffc2b30ee000000020000000 - {e=>4,a=>102,d=>2,c=>2,h=>7,b=>1,g=>3,f=>-1} 660091780300000007000000 660091780300000007000000 660091780300000007000000 0066294e60000000e0000000 660091780300000007000000 660091780300000007000000 0066294e60000000e0000000 660091780300000007000000 0066294e60000000e0000000 - {e=>5,a=>-66,d=>2,c=>-4,h=>7,b=>7,g=>7,f=>-2} beffa76a0700000007000000 beffa76a0700000007000000 beffa76a0700000007000000 ffbef15ce0000000e0000000 beffa76a0700000007000000 beffa76a0700000007000000 ffbef15ce0000000e0000000 beffa76a0700000007000000 ffbef15ce0000000e0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>114,d=>1,c=>-2,h=>7,b=>7,g=>2,f=>-1,i=>-2} 7200777e0200000037000000 7200777e0200000037000000 7200777e0200000037000000 0072f8fe40000000f8000000 7200777e0200000037000000 7200777e0200000037000000 0072f8fe40000000f8000000 7200777e0200000037000000 0072f8fe40000000f8000000 - {e=>1,a=>-112,d=>-3,c=>2,h=>5,b=>5,g=>1,f=>-2,i=>-2} 90ff55630100000035000000 90ff55630100000035000000 90ff55630100000035000000 ff90aa9c20000000b8000000 90ff55630100000035000000 90ff55630100000035000000 ff90aa9c20000000b8000000 90ff55630100000035000000 ff90aa9c20000000b8000000 - {e=>5,a=>88,d=>0,c=>1,h=>4,b=>4,g=>6,f=>-2,i=>2} 58000c6a0600000014000000 58000c6a0600000014000000 58000c6a0600000014000000 0058845cc000000088000000 58000c6a0600000014000000 58000c6a0600000014000000 0058845cc000000088000000 58000c6a0600000014000000 0058845cc000000088000000 - {e=>2,a=>-8,d=>-2,c=>-1,h=>5,b=>0,g=>4,f=>-4,i=>0} f8ffb8450400000005000000 f8ffb8450400000005000000 f8ffb8450400000005000000 fff81f2880000000a0000000 f8ffb8450400000005000000 f8ffb8450400000005000000 fff81f2880000000a0000000 f8ffb8450400000005000000 fff81f2880000000a0000000 - {e=>7,a=>-35,d=>3,c=>3,h=>0,b=>4,g=>0,f=>-2,i=>-4} ddffdc6e0000000020000000 ddffdc6e0000000020000000 ddffdc6e0000000020000000 ffdd8dfc0000000010000000 ddffdc6e0000000020000000 ddffdc6e0000000020000000 ffdd8dfc0000000010000000 ddffdc6e0000000020000000 ffdd8dfc0000000010000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-31,d=>-2,j=>5,c=>-3,h=>0,b=>0,g=>5,f=>-3,i=>3} e1ffa8510500000058010000 e1ffa8510500000058010000 e1ffa8510500000058010000 ffe1170aa00000000e800000 e1ffa8510500000058010000 e1ffa8510500000058010000 ffe1170aa00000000e800000 e1ffa8510500000058010000 ffe1170aa00000000e800000 - {e=>3,a=>0,d=>-1,j=>1,c=>-1,h=>0,b=>2,g=>1,f=>-2,i=>2} 0000fa670100000050000000 0000fa670100000050000000 0000fa670100000050000000 00005fbc2000000008800000 0000fa670100000050000000 0000fa670100000050000000 00005fbc2000000008800000 0000fa670100000050000000 00005fbc2000000008800000 - {e=>0,a=>72,d=>-1,j=>5,c=>2,h=>6,b=>5,g=>1,f=>-4,i=>-4} 4800d5410100000066010000 4800d5410100000066010000 4800d5410100000066010000 0048ab8820000000d2800000 4800d5410100000066010000 4800d5410100000066010000 0048ab8820000000d2800000 4800d5410100000066010000 0048ab8820000000d2800000 - {e=>5,a=>84,d=>1,j=>1,c=>1,h=>3,b=>5,g=>2,f=>-3,i=>2} 54004d5a0200000053000000 54004d5a0200000053000000 54004d5a0200000053000000 0054a4da4000000068800000 54004d5a0200000053000000 54004d5a0200000053000000 0054a4da4000000068800000 54004d5a0200000053000000 0054a4da4000000068800000 - {e=>2,a=>75,d=>1,j=>3,c=>1,h=>2,b=>7,g=>5,f=>-2,i=>0} 4b004f6405000000c2000000 4b004f6405000000c2000000 4b004f6405000000c2000000 004be4aca000000041800000 4b004f6405000000c2000000 4b004f6405000000c2000000 004be4aca000000041800000 4b004f6405000000c2000000 004be4aca000000041800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>7,a=>-23,d=>-3,j=>1,c=>-3,k=>-79,h=>4,b=>0,g=>6,f=>0,i=>1} e9ff680f060000004c00b100 e9ff680f060000004c00b100 e9ff680f060000004c00b100 ffe916f0c00000008480b100 e9ff680f060000004c00b100 e9ff680f060000004c00b100 ffe916f0c00000008480b100 e9ff680f060000004c00b100 ffe916f0c00000008480b100 - {e=>2,a=>-89,d=>0,j=>5,c=>1,k=>-14,h=>6,b=>6,g=>6,f=>3,i=>-3} a7ff0e34060000006e01f200 a7ff0e34060000006e01f200 a7ff0e34060000006e01f200 ffa7c426c0000000d680f200 a7ff0e34060000006e01f200 a7ff0e34060000006e01f200 ffa7c426c0000000d680f200 a7ff0e34060000006e01f200 ffa7c426c0000000d680f200 - {e=>1,a=>-23,d=>0,j=>2,c=>1,k=>-2,h=>1,b=>1,g=>5,f=>2,i=>-2} e9ff092205000000b100fe00 e9ff092205000000b100fe00 e9ff092205000000b100fe00 ffe92414a00000003900fe00 e9ff092205000000b100fe00 e9ff092205000000b100fe00 ffe92414a00000003900fe00 e9ff092205000000b100fe00 ffe92414a00000003900fe00 - {e=>7,a=>-84,d=>-2,j=>3,c=>-4,k=>1,h=>6,b=>3,g=>4,f=>-2,i=>-4} acffa36f04000000e6000100 acffa36f04000000e6000100 acffa36f04000000e6000100 ffac737c80000000d1800100 acffa36f04000000e6000100 acffa36f04000000e6000100 ffac737c80000000d1800100 acffa36f04000000e6000100 ffac737c80000000d1800100 - {e=>4,a=>-2,d=>-1,j=>3,c=>3,k=>-56,h=>3,b=>2,g=>6,f=>0,i=>-2} feffda0906000000f300c800 feffda0906000000f300c800 feffda0906000000f300c800 fffe4fc0c00000007980c800 feffda0906000000f300c800 feffda0906000000f300c800 fffe4fc0c00000007980c800 feffda0906000000f300c800 fffe4fc0c00000007980c800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>43,d=>-2,j=>3,l=>3,c=>0,k=>-20,h=>3,b=>4,g=>1,f=>1,i=>-2} 2b00841301000000f300ec03 2b00841301000000f300ec03 2b00841301000000f300ec03 002b8312200000007980ec60 2b00841301000000f300ec03 2b00841301000000f300ec03 002b8312200000007980ec60 2b00841301000000f300ec03 002b8312200000007980ec60 - {e=>1,a=>-33,d=>1,j=>3,l=>2,c=>-3,k=>77,h=>2,b=>4,g=>0,f=>2,i=>2} dfff6c2200000000d2004d02 dfff6c2200000000d2004d02 dfff6c2200000000d2004d02 ffdf94940000000049804d40 dfff6c2200000000d2004d02 dfff6c2200000000d2004d02 ffdf94940000000049804d40 dfff6c2200000000d2004d02 ffdf94940000000049804d40 - {e=>7,a=>122,d=>0,j=>5,l=>3,c=>-3,k=>-62,h=>7,b=>5,g=>3,f=>3,i=>0} 7a002d3e030000004701c203 7a002d3e030000004701c203 7a002d3e030000004701c203 007ab47660000000e280c260 7a002d3e030000004701c203 7a002d3e030000004701c203 007ab47660000000e280c260 7a002d3e030000004701c203 007ab47660000000e280c260 - {e=>4,a=>36,d=>3,j=>2,l=>1,c=>0,k=>-1,h=>6,b=>7,g=>1,f=>-3,i=>-3} 2400c75801000000ae00ff01 2400c75801000000ae00ff01 2400c75801000000ae00ff01 0024e1ca20000000d500ff20 2400c75801000000ae00ff01 2400c75801000000ae00ff01 0024e1ca20000000d500ff20 2400c75801000000ae00ff01 0024e1ca20000000d500ff20 - {e=>2,a=>126,d=>-4,j=>2,l=>3,c=>0,k=>-47,h=>2,b=>6,g=>7,f=>0,i=>-4} 7e00060507000000a200d103 7e00060507000000a200d103 7e00060507000000a200d103 007ec220e00000005100d160 7e00060507000000a200d103 7e00060507000000a200d103 007ec220e00000005100d160 7e00060507000000a200d103 007ec220e00000005100d160 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>-59,m=>-4,d=>1,j=>2,l=>7,c=>0,k=>-30,h=>2,b=>7,g=>7,f=>-1,i=>0} c5ff4770070000008200e227 c5ff4770070000008200e227 c5ff4770070000008200e227 ffc5e08ee00000004100e2f0 c5ff4770070000008200e227 c5ff4770070000008200e227 ffc5e08ee00000004100e2f0 c5ff4770070000008200e227 ffc5e08ee00000004100e2f0 - {e=>5,a=>-106,m=>-1,d=>3,j=>2,l=>5,c=>3,k=>84,h=>4,b=>3,g=>3,f=>-3,i=>-1} 96ffdb5a03000000bc00543d 96ffdb5a03000000bc00543d 96ffdb5a03000000bc00543d ff966dda600000009d0054bc 96ffdb5a03000000bc00543d 96ffdb5a03000000bc00543d ff966dda600000009d0054bc 96ffdb5a03000000bc00543d ff966dda600000009d0054bc - {e=>1,a=>41,m=>1,d=>1,j=>7,l=>5,c=>2,k=>33,h=>5,b=>7,g=>4,f=>-1,i=>-1} 2900577204000000fd01210d 2900577204000000fd01210d 2900577204000000fd01210d 0029e89e80000000bf8021a4 2900577204000000fd01210d 2900577204000000fd01210d 0029e89e80000000bf8021a4 2900577204000000fd01210d 0029e89e80000000bf8021a4 - {e=>7,a=>53,m=>0,d=>2,j=>5,l=>6,c=>0,k=>-74,h=>1,b=>1,g=>6,f=>-1,i=>-4} 3500817e060000006101b606 3500817e060000006101b606 3500817e060000006101b606 0035217ec00000003280b6c0 3500817e060000006101b606 3500817e060000006101b606 0035217ec00000003280b6c0 3500817e060000006101b606 0035217ec00000003280b6c0 - {e=>0,a=>-26,m=>0,d=>-3,j=>0,l=>6,c=>1,k=>94,h=>3,b=>2,g=>5,f=>3,i=>-2} e6ff4a310500000033005e06 e6ff4a310500000033005e06 e6ff4a310500000033005e06 ffe64686a000000078005ec0 e6ff4a310500000033005e06 e6ff4a310500000033005e06 ffe64686a000000078005ec0 e6ff4a310500000033005e06 ffe64686a000000078005ec0 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>3,a=>116,m=>1,d=>-1,j=>4,l=>5,c=>-4,k=>-99,h=>6,b=>1,g=>1,f=>-1,i=>-4} 7400e1770100000026019d0d03000000 7400e1770100000026019d0d03000000 7400e1770100000026019d0d03000000 007433be20000000d2009da460000000 7400e1770100000026019d0d03000000 7400e1770100000026019d0d03000000 007433be20000000d2009da460000000 7400e1770100000026019d0d03000000 007433be20000000d2009da460000000 - {e=>5,n=>6,a=>-60,m=>-4,d=>-1,j=>1,l=>5,c=>0,k=>-90,h=>3,b=>3,g=>2,f=>-2,i=>-3} c4ffc36b020000006b00a62506000000 c4ffc36b020000006b00a62506000000 c4ffc36b020000006b00a62506000000 ffc463dc400000007480a6b0c0000000 c4ffc36b020000006b00a62506000000 c4ffc36b020000006b00a62506000000 ffc463dc400000007480a6b0c0000000 c4ffc36b020000006b00a62506000000 ffc463dc400000007480a6b0c0000000 - {e=>1,n=>3,a=>101,m=>1,d=>1,j=>5,l=>4,c=>-1,k=>0,h=>0,b=>0,g=>3,f=>3,i=>2} 65007832030000005001000c03000000 65007832030000005001000c03000000 65007832030000005001000c03000000 00651c96600000000a80008460000000 65007832030000005001000c03000000 65007832030000005001000c03000000 00651c96600000000a80008460000000 65007832030000005001000c03000000 00651c96600000000a80008460000000 - {e=>1,n=>5,a=>-81,m=>-2,d=>1,j=>4,l=>7,c=>-3,k=>24,h=>2,b=>7,g=>4,f=>2,i=>1} afff6f22040000000a01183705000000 afff6f22040000000a01183705000000 afff6f22040000000a01183705000000 ffaff49480000000460018f8a0000000 afff6f22040000000a01183705000000 afff6f22040000000a01183705000000 ffaff49480000000460018f8a0000000 afff6f22040000000a01183705000000 ffaff49480000000460018f8a0000000 - {e=>5,n=>7,a=>69,m=>-1,d=>-4,j=>4,l=>5,c=>-3,k=>-48,h=>3,b=>1,g=>1,f=>-3,i=>1} 4500295b010000000b01d03d07000000 4500295b010000000b01d03d07000000 4500295b010000000b01d03d07000000 0045365a200000006600d0bce0000000 4500295b010000000b01d03d07000000 4500295b010000000b01d03d07000000 0045365a200000006600d0bce0000000 4500295b010000000b01d03d07000000 0045365a200000006600d0bce0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>1,a=>-4,m=>-3,d=>1,j=>6,l=>4,c=>1,k=>-26,h=>3,b=>6,g=>0,f=>3,o=>238,i=>2} fcff4e3c000000009301e62c01ee0000 fcff4e3c000000009301e62c01ee0000 fcff4e3c000000009301e62c01ee0000 fffcc4e6000000006b00e69420ee0000 fcff4e3c000000009301e62c01ee0000 fcff4e3c000000009301e62c01ee0000 fffcc4e6000000006b00e69420ee0000 fcff4e3c000000009301e62c01ee0000 fffcc4e6000000006b00e69420ee0000 - {e=>0,n=>1,a=>-68,m=>-2,d=>1,j=>5,l=>3,c=>-2,k=>121,h=>3,b=>2,g=>1,f=>-2,o=>129,i=>2} bcff7260010000005301793301810000 bcff7260010000005301793301810000 bcff7260010000005301793301810000 ffbc588c200000006a80797820810000 bcff7260010000005301793301810000 bcff7260010000005301793301810000 ffbc588c200000006a80797820810000 bcff7260010000005301793301810000 ffbc588c200000006a80797820810000 - {e=>0,n=>3,a=>-111,m=>-4,d=>2,j=>1,l=>5,c=>-4,k=>58,h=>7,b=>2,g=>1,f=>-4,o=>239,i=>-2} 91ffa2400100000077003a2503ef0000 91ffa2400100000077003a2503ef0000 91ffa2400100000077003a2503ef0000 ff91510820000000f8803ab060ef0000 91ffa2400100000077003a2503ef0000 91ffa2400100000077003a2503ef0000 ff91510820000000f8803ab060ef0000 91ffa2400100000077003a2503ef0000 ff91510820000000f8803ab060ef0000 - {e=>0,n=>5,a=>-114,m=>-2,d=>-4,j=>1,l=>2,c=>2,k=>-17,h=>7,b=>3,g=>3,f=>-3,o=>107,i=>-1} 8eff1351030000007f00ef32056b0000 8eff1351030000007f00ef32056b0000 8eff1351030000007f00ef32056b0000 ff8e6a0a60000000fc80ef58a06b0000 8eff1351030000007f00ef32056b0000 8eff1351030000007f00ef32056b0000 ff8e6a0a60000000fc80ef58a06b0000 8eff1351030000007f00ef32056b0000 ff8e6a0a60000000fc80ef58a06b0000 - {e=>1,n=>6,a=>-2,m=>1,d=>0,j=>0,l=>6,c=>1,k=>68,h=>6,b=>2,g=>4,f=>-3,o=>139,i=>1} feff0a52040000000e00440e068b0000 feff0a52040000000e00440e068b0000 feff0a52040000000e00440e068b0000 fffe441a80000000c40044c4c08b0000 feff0a52040000000e00440e068b0000 feff0a52040000000e00440e068b0000 fffe441a80000000c40044c4c08b0000 feff0a52040000000e00440e068b0000 fffe441a80000000c40044c4c08b0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; }; - {a=>109,b=>7} 6d00000007000000 6d00000007000000 6d00000007000000 0000006de0000000 6d00000007000000 6d00000007000000 0000006de0000000 6d00000007000000 0000006de0000000 - {a=>-103,b=>4} 99ffffff04000000 99ffffff04000000 99ffffff04000000 ffffff9980000000 99ffffff04000000 99ffffff04000000 ffffff9980000000 99ffffff04000000 ffffff9980000000 - {a=>111,b=>4} 6f00000004000000 6f00000004000000 6f00000004000000 0000006f80000000 6f00000004000000 6f00000004000000 0000006f80000000 6f00000004000000 0000006f80000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 ffffffc680000000 c6ffffff04000000 c6ffffff04000000 ffffffc680000000 c6ffffff04000000 ffffffc680000000 - {a=>117,b=>4} 7500000004000000 7500000004000000 7500000004000000 0000007580000000 7500000004000000 7500000004000000 0000007580000000 7500000004000000 0000007580000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>54,b=>7} 3600000027000000 3600000027000000 3600000027000000 00000036f0000000 3600000027000000 3600000027000000 00000036f0000000 3600000027000000 00000036f0000000 - {c=>-4,a=>-26,b=>7} e6ffffff27000000 e6ffffff27000000 e6ffffff27000000 ffffffe6f0000000 e6ffffff27000000 e6ffffff27000000 ffffffe6f0000000 e6ffffff27000000 ffffffe6f0000000 - {c=>1,a=>35,b=>7} 230000000f000000 230000000f000000 230000000f000000 00000023e4000000 230000000f000000 230000000f000000 00000023e4000000 230000000f000000 00000023e4000000 - {c=>-3,a=>59,b=>0} 3b00000028000000 3b00000028000000 3b00000028000000 0000003b14000000 3b00000028000000 3b00000028000000 0000003b14000000 3b00000028000000 0000003b14000000 - {c=>-3,a=>70,b=>2} 460000002a000000 460000002a000000 460000002a000000 0000004654000000 460000002a000000 460000002a000000 0000004654000000 460000002a000000 0000004654000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-61,b=>4,d=>2} c3ffffffa4000000 c3ffffffa4000000 c3ffffffa4000000 ffffffc391000000 c3ffffffa4000000 c3ffffffa4000000 ffffffc391000000 c3ffffffa4000000 ffffffc391000000 - {c=>-3,a=>79,b=>5,d=>3} 4f000000ed000000 4f000000ed000000 4f000000ed000000 0000004fb5800000 4f000000ed000000 4f000000ed000000 0000004fb5800000 4f000000ed000000 0000004fb5800000 - {c=>-3,a=>-113,b=>0,d=>-3} 8fffffff68010000 8fffffff68010000 8fffffff68010000 ffffff8f16800000 8fffffff68010000 8fffffff68010000 ffffff8f16800000 8fffffff68010000 ffffff8f16800000 - {c=>-3,a=>-20,b=>5,d=>3} ecffffffed000000 ecffffffed000000 ecffffffed000000 ffffffecb5800000 ecffffffed000000 ecffffffed000000 ffffffecb5800000 ecffffffed000000 ffffffecb5800000 - {c=>-1,a=>84,b=>7,d=>-3} 540000007f010000 540000007f010000 540000007f010000 00000054fe800000 540000007f010000 540000007f010000 00000054fe800000 540000007f010000 00000054fe800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>0,a=>-47,b=>6,d=>-1} d1ffffffc6090000 d1ffffffc6090000 d1ffffffc6090000 ffffffd1c3c00000 d1ffffffc6090000 d1ffffffc6090000 ffffffd1c3c00000 d1ffffffc6090000 ffffffd1c3c00000 - {e=>3,c=>1,a=>-93,b=>5,d=>-3} a3ffffff4d070000 a3ffffff4d070000 a3ffffff4d070000 ffffffa3a6b00000 a3ffffff4d070000 a3ffffff4d070000 ffffffa3a6b00000 a3ffffff4d070000 ffffffa3a6b00000 - {e=>1,c=>3,a=>123,b=>0,d=>-1} 7b000000d8030000 7b000000d8030000 7b000000d8030000 0000007b0f900000 7b000000d8030000 7b000000d8030000 0000007b0f900000 7b000000d8030000 0000007b0f900000 - {e=>1,c=>-1,a=>-36,b=>7,d=>3} dcffffffff020000 dcffffffff020000 dcffffffff020000 ffffffdcfd900000 dcffffffff020000 dcffffffff020000 ffffffdcfd900000 dcffffffff020000 ffffffdcfd900000 - {e=>2,c=>0,a=>-51,b=>2,d=>1} cdffffff42040000 cdffffff42040000 cdffffff42040000 ffffffcd40a00000 cdffffff42040000 cdffffff42040000 ffffffcd40a00000 cdffffff42040000 ffffffcd40a00000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>-3,a=>54,b=>4,d=>-3,f=>1} 360000006c1d0000 360000006c1d0000 360000006c1d0000 0000003696e20000 360000006c1d0000 360000006c1d0000 0000003696e20000 360000006c1d0000 0000003696e20000 - {e=>4,c=>2,a=>53,b=>2,d=>-4,f=>0} 3500000012090000 3500000012090000 3500000012090000 000000354a400000 3500000012090000 3500000012090000 000000354a400000 3500000012090000 000000354a400000 - {e=>3,c=>1,a=>-32,b=>6,d=>2,f=>1} e0ffffff8e160000 e0ffffff8e160000 e0ffffff8e160000 ffffffe0c5320000 e0ffffff8e160000 e0ffffff8e160000 ffffffe0c5320000 e0ffffff8e160000 ffffffe0c5320000 - {e=>4,c=>-4,a=>57,b=>1,d=>-1,f=>-4} 39000000e1490000 39000000e1490000 39000000e1490000 0000003933c80000 39000000e1490000 39000000e1490000 0000003933c80000 39000000e1490000 0000003933c80000 - {e=>2,c=>-2,a=>-128,b=>2,d=>0,f=>-2} 80ffffff32640000 80ffffff32640000 80ffffff32640000 ffffff80582c0000 80ffffff32640000 80ffffff32640000 ffffff80582c0000 80ffffff32640000 ffffff80582c0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>7,c=>-2,a=>-88,g=>0,b=>2,d=>3,f=>-4} a8fffffff24e0000 a8fffffff24e0000 a8fffffff24e0000 ffffffa859f80000 a8fffffff24e0000 a8fffffff24e0000 ffffffa859f80000 a8fffffff24e0000 ffffffa859f80000 - {e=>5,c=>-3,a=>90,g=>6,b=>2,d=>-1,f=>1} 5a000000ea1b0300 5a000000ea1b0300 5a000000ea1b0300 0000005a57d38000 5a000000ea1b0300 5a000000ea1b0300 0000005a57d38000 5a000000ea1b0300 0000005a57d38000 - {e=>4,c=>3,a=>68,g=>6,b=>2,d=>-1,f=>-3} 44000000da590300 44000000da590300 44000000da590300 000000444fcb8000 44000000da590300 44000000da590300 000000444fcb8000 44000000da590300 000000444fcb8000 - {e=>0,c=>3,a=>54,g=>6,b=>1,d=>-2,f=>2} 3600000099210300 3600000099210300 3600000099210300 000000362f058000 3600000099210300 3600000099210300 000000362f058000 3600000099210300 000000362f058000 - {e=>2,c=>2,a=>45,g=>3,b=>1,d=>2,f=>-4} 2d00000091c40100 2d00000091c40100 2d00000091c40100 0000002d2928c000 2d00000091c40100 2d00000091c40100 0000002d2928c000 2d00000091c40100 0000002d2928c000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>3,c=>2,a=>-87,g=>6,b=>4,d=>0,f=>-1} a9ffffff14760300 a9ffffff14760300 a9ffffff14760300 ffffffa9883f8000 a9ffffff14760300 a9ffffff14760300 ffffffa9883f8000 a9ffffff14760300 ffffffa9883f8000 - {e=>7,c=>-3,a=>103,g=>6,b=>0,d=>2,f=>-4} 67000000a84e0300 67000000a84e0300 67000000a84e0300 0000006715798000 67000000a84e0300 67000000a84e0300 0000006715798000 67000000a84e0300 0000006715798000 - {e=>2,c=>2,a=>-32,g=>2,b=>6,d=>2,f=>-2} e0ffffff96640100 e0ffffff96640100 e0ffffff96640100 ffffffe0c92c8000 e0ffffff96640100 e0ffffff96640100 ffffffe0c92c8000 e0ffffff96640100 ffffffe0c92c8000 - {e=>5,c=>0,a=>122,g=>7,b=>4,d=>-4,f=>1} 7a000000049b0300 7a000000049b0300 7a000000049b0300 0000007a8253c000 7a000000049b0300 7a000000049b0300 0000007a8253c000 7a000000049b0300 0000007a8253c000 - {e=>4,c=>-2,a=>-85,g=>0,b=>0,d=>-3,f=>-3} abffffff70590000 abffffff70590000 abffffff70590000 ffffffab1aca0000 abffffff70590000 abffffff70590000 ffffffab1aca0000 abffffff70590000 ffffffab1aca0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>2,a=>-79,d=>-4,c=>2,h=>5,b=>0,g=>4,f=>-4} b1ffffff1045020005000000 b1ffffff1045020005000000 b1ffffff1045020005000000 ffffffb10a290000a0000000 b1ffffff1045020005000000 b1ffffff1045020005000000 ffffffb10a290000a0000000 b1ffffff1045020005000000 ffffffb10a290000a0000000 - {e=>1,a=>61,d=>1,c=>-2,h=>7,b=>2,g=>4,f=>-3} 3d0000007252020007000000 3d0000007252020007000000 3d0000007252020007000000 0000003d589b0000e0000000 3d0000007252020007000000 3d0000007252020007000000 0000003d589b0000e0000000 3d0000007252020007000000 0000003d589b0000e0000000 - {e=>7,a=>-36,d=>3,c=>-2,h=>0,b=>2,g=>0,f=>-1} dcfffffff27e000000000000 dcfffffff27e000000000000 dcfffffff27e000000000000 ffffffdc59fe000000000000 dcfffffff27e000000000000 dcfffffff27e000000000000 ffffffdc59fe000000000000 dcfffffff27e000000000000 ffffffdc59fe000000000000 - {e=>3,a=>-11,d=>-2,c=>-4,h=>2,b=>6,g=>5,f=>3} f5ffffffa6b7020002000000 f5ffffffa6b7020002000000 f5ffffffa6b7020002000000 fffffff5d337400040000000 f5ffffffa6b7020002000000 f5ffffffa6b7020002000000 fffffff5d337400040000000 f5ffffffa6b7020002000000 fffffff5d337400040000000 - {e=>7,a=>-10,d=>1,c=>-3,h=>4,b=>7,g=>0,f=>3} f6ffffff6f3e000004000000 f6ffffff6f3e000004000000 f6ffffff6f3e000004000000 fffffff6f4f6000080000000 f6ffffff6f3e000004000000 f6ffffff6f3e000004000000 fffffff6f4f6000080000000 f6ffffff6f3e000004000000 fffffff6f4f6000080000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>32,d=>-2,c=>1,h=>7,b=>7,g=>0,f=>1,i=>3} 200000008f1d00001f000000 200000008f1d00001f000000 200000008f1d00001f000000 00000020e7620000ec000000 200000008f1d00001f000000 200000008f1d00001f000000 00000020e7620000ec000000 200000008f1d00001f000000 00000020e7620000ec000000 - {e=>7,a=>-98,d=>-3,c=>3,h=>1,b=>1,g=>1,f=>-1,i=>1} 9effffff59ff000009000000 9effffff59ff000009000000 9effffff59ff000009000000 ffffff9e2efe400024000000 9effffff59ff000009000000 9effffff59ff000009000000 ffffff9e2efe400024000000 9effffff59ff000009000000 ffffff9e2efe400024000000 - {e=>0,a=>-83,d=>-2,c=>-4,h=>7,b=>5,g=>5,f=>-4,i=>1} adffffffa5c102000f000000 adffffffa5c102000f000000 adffffffa5c102000f000000 ffffffadb3094000e4000000 adffffffa5c102000f000000 adffffffa5c102000f000000 ffffffadb3094000e4000000 adffffffa5c102000f000000 ffffffadb3094000e4000000 - {e=>6,a=>-52,d=>-4,c=>-4,h=>5,b=>5,g=>0,f=>-1,i=>-2} ccffffff257d000035000000 ccffffff257d000035000000 ccffffff257d000035000000 ffffffccb26e0000b8000000 ccffffff257d000035000000 ccffffff257d000035000000 ffffffccb26e0000b8000000 ccffffff257d000035000000 ffffffccb26e0000b8000000 - {e=>4,a=>123,d=>2,c=>0,h=>6,b=>7,g=>2,f=>-1,i=>0} 7b0000008778010006000000 7b0000008778010006000000 7b0000008778010006000000 0000007be14e8000c0000000 7b0000008778010006000000 7b0000008778010006000000 0000007be14e8000c0000000 7b0000008778010006000000 0000007be14e8000c0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>62,d=>-1,j=>3,c=>-2,h=>0,b=>7,g=>2,f=>1,i=>-3} 3e000000f7170100e8000000 3e000000f7170100e8000000 3e000000f7170100e8000000 0000003efbb2800015800000 3e000000f7170100e8000000 3e000000f7170100e8000000 0000003efbb2800015800000 3e000000f7170100e8000000 0000003efbb2800015800000 - {e=>6,a=>-59,d=>2,j=>5,c=>1,h=>5,b=>5,g=>7,f=>3,i=>0} c5ffffff8dbc030045010000 c5ffffff8dbc030045010000 c5ffffff8dbc030045010000 ffffffc5a567c000a2800000 c5ffffff8dbc030045010000 c5ffffff8dbc030045010000 ffffffc5a567c000a2800000 c5ffffff8dbc030045010000 ffffffc5a567c000a2800000 - {e=>6,a=>76,d=>0,j=>7,c=>2,h=>1,b=>4,g=>2,f=>1,i=>-1} 4c000000141c0100f9010000 4c000000141c0100f9010000 4c000000141c0100f9010000 0000004c886280003f800000 4c000000141c0100f9010000 4c000000141c0100f9010000 0000004c886280003f800000 4c000000141c0100f9010000 0000004c886280003f800000 - {e=>6,a=>-74,d=>0,j=>1,c=>1,h=>5,b=>6,g=>7,f=>3,i=>-1} b6ffffff0ebc03007d000000 b6ffffff0ebc03007d000000 b6ffffff0ebc03007d000000 ffffffb6c467c000bc800000 b6ffffff0ebc03007d000000 b6ffffff0ebc03007d000000 ffffffb6c467c000bc800000 b6ffffff0ebc03007d000000 ffffffb6c467c000bc800000 - {e=>0,a=>-90,d=>-4,j=>4,c=>3,h=>5,b=>5,g=>2,f=>-2,i=>0} a6ffffff1d61010005010000 a6ffffff1d61010005010000 a6ffffff1d61010005010000 ffffffa6ae0c8000a2000000 a6ffffff1d61010005010000 a6ffffff1d61010005010000 ffffffa6ae0c8000a2000000 a6ffffff1d61010005010000 ffffffa6ae0c8000a2000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>-103,d=>-1,j=>0,c=>1,k=>-31,h=>7,b=>0,g=>1,f=>1,i=>-3} 99ffffffc89d00002f00e100 99ffffffc89d00002f00e100 99ffffffc89d00002f00e100 ffffff9907e24000f400e100 99ffffffc89d00002f00e100 99ffffffc89d00002f00e100 ffffff9907e24000f400e100 99ffffffc89d00002f00e100 ffffff9907e24000f400e100 - {e=>5,a=>-2,d=>-1,j=>6,c=>0,k=>78,h=>6,b=>1,g=>4,f=>3,i=>3} feffffffc13b02009e014e00 feffffffc13b02009e014e00 feffffffc13b02009e014e00 fffffffe23d70000cf004e00 feffffffc13b02009e014e00 feffffffc13b02009e014e00 fffffffe23d70000cf004e00 feffffffc13b02009e014e00 fffffffe23d70000cf004e00 - {e=>3,a=>-110,d=>-1,j=>1,c=>2,k=>-117,h=>6,b=>1,g=>6,f=>1,i=>2} 92ffffffd117030056008b00 92ffffffd117030056008b00 92ffffffd117030056008b00 ffffff922bb38000c8808b00 92ffffffd117030056008b00 92ffffffd117030056008b00 ffffff922bb38000c8808b00 92ffffffd117030056008b00 ffffff922bb38000c8808b00 - {e=>3,a=>-42,d=>-2,j=>0,c=>-2,k=>-72,h=>4,b=>5,g=>4,f=>-4,i=>1} d6ffffffb54702000c00b800 d6ffffffb54702000c00b800 d6ffffffb54702000c00b800 ffffffd6bb3900008400b800 d6ffffffb54702000c00b800 d6ffffffb54702000c00b800 ffffffd6bb3900008400b800 d6ffffffb54702000c00b800 ffffffd6bb3900008400b800 - {e=>1,a=>117,d=>-4,j=>1,c=>-3,k=>97,h=>4,b=>0,g=>1,f=>2,i=>-3} 7500000028a300006c006100 7500000028a300006c006100 7500000028a300006c006100 000000751614400094806100 7500000028a300006c006100 7500000028a300006c006100 000000751614400094806100 7500000028a300006c006100 000000751614400094806100 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>3,a=>-57,d=>2,j=>6,l=>1,c=>0,k=>73,h=>5,b=>5,g=>3,f=>1,i=>-3} c7ffffff85960100ad014901 c7ffffff85960100ad014901 c7ffffff85960100ad014901 ffffffc7a132c000b7004920 c7ffffff85960100ad014901 c7ffffff85960100ad014901 ffffffc7a132c000b7004920 c7ffffff85960100ad014901 ffffffc7a132c000b7004920 - {e=>6,a=>-107,d=>1,j=>5,l=>4,c=>-2,k=>25,h=>2,b=>1,g=>3,f=>3,i=>3} 95ffffff71bc01005a011904 95ffffff71bc01005a011904 95ffffff71bc01005a011904 ffffff9538e6c0004e801980 95ffffff71bc01005a011904 95ffffff71bc01005a011904 ffffff9538e6c0004e801980 95ffffff71bc01005a011904 ffffff9538e6c0004e801980 - {e=>2,a=>108,d=>-3,j=>1,l=>5,c=>-3,k=>74,h=>4,b=>7,g=>4,f=>0,i=>-3} 6c0000006f0502006c004a05 6c0000006f0502006c004a05 6c0000006f0502006c004a05 0000006cf6a1000094804aa0 6c0000006f0502006c004a05 6c0000006f0502006c004a05 0000006cf6a1000094804aa0 6c0000006f0502006c004a05 0000006cf6a1000094804aa0 - {e=>7,a=>-5,d=>3,j=>2,l=>7,c=>-3,k=>54,h=>0,b=>1,g=>0,f=>-2,i=>-1} fbffffffe96e0000b8003607 fbffffffe96e0000b8003607 fbffffffe96e0000b8003607 fffffffb35fc00001d0036e0 fbffffffe96e0000b8003607 fbffffffe96e0000b8003607 fffffffb35fc00001d0036e0 fbffffffe96e0000b8003607 fffffffb35fc00001d0036e0 - {e=>0,a=>-52,d=>2,j=>2,l=>0,c=>0,k=>118,h=>7,b=>0,g=>4,f=>1,i=>3} ccffffff801002009f007600 ccffffff801002009f007600 ccffffff801002009f007600 ffffffcc01030000ed007600 ccffffff801002009f007600 ccffffff801002009f007600 ffffffcc01030000ed007600 ccffffff801002009f007600 ffffffcc01030000ed007600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>-84,m=>1,d=>0,j=>1,l=>3,c=>-2,k=>78,h=>2,b=>4,g=>7,f=>2,i=>-3} acffffff34a603006a004e0b acffffff34a603006a004e0b acffffff34a603006a004e0b ffffffac9835c00054804e64 acffffff34a603006a004e0b acffffff34a603006a004e0b ffffffac9835c00054804e64 acffffff34a603006a004e0b ffffffac9835c00054804e64 - {e=>7,a=>80,m=>-4,d=>0,j=>6,l=>1,c=>3,k=>-88,h=>3,b=>1,g=>7,f=>-3,i=>1} 5000000019de03008b01a821 5000000019de03008b01a821 5000000019de03008b01a821 000000502c7bc0006700a830 5000000019de03008b01a821 5000000019de03008b01a821 000000502c7bc0006700a830 5000000019de03008b01a821 000000502c7bc0006700a830 - {e=>6,a=>112,m=>-2,d=>1,j=>3,l=>1,c=>3,k=>69,h=>2,b=>1,g=>4,f=>-1,i=>2} 70000000597c0200d2004531 70000000597c0200d2004531 70000000597c0200d2004531 000000702cef000049804538 70000000597c0200d2004531 70000000597c0200d2004531 000000702cef000049804538 70000000597c0200d2004531 000000702cef000049804538 - {e=>1,a=>110,m=>-1,d=>0,j=>1,l=>3,c=>0,k=>-21,h=>1,b=>4,g=>0,f=>2,i=>1} 6e000000042200004900eb3b 6e000000042200004900eb3b 6e000000042200004900eb3b 0000006e801400002480eb7c 6e000000042200004900eb3b 6e000000042200004900eb3b 0000006e801400002480eb7c 6e000000042200004900eb3b 0000006e801400002480eb7c - {e=>7,a=>35,m=>-2,d=>0,j=>1,l=>1,c=>3,k=>36,h=>3,b=>4,g=>4,f=>-4,i=>-3} 230000001c4e02006b002431 230000001c4e02006b002431 230000001c4e02006b002431 000000238c79000074802438 230000001c4e02006b002431 230000001c4e02006b002431 000000238c79000074802438 230000001c4e02006b002431 000000238c79000074802438 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>2,n=>0,a=>-6,m=>3,d=>0,j=>7,l=>2,c=>-4,k=>-55,h=>7,b=>3,g=>5,f=>2,i=>-2} faffffff23a40200f701c91a00000000 faffffff23a40200f701c91a00000000 faffffff23a40200f701c91a00000000 fffffffa70254000fb80c94c00000000 faffffff23a40200f701c91a00000000 faffffff23a40200f701c91a00000000 fffffffa70254000fb80c94c00000000 faffffff23a40200f701c91a00000000 fffffffa70254000fb80c94c00000000 - {e=>1,n=>7,a=>-87,m=>0,d=>0,j=>6,l=>4,c=>-2,k=>24,h=>7,b=>2,g=>1,f=>-3,i=>-3} a9ffffff32d20000af01180407000000 a9ffffff32d20000af01180407000000 a9ffffff32d20000af01180407000000 ffffffa9581a4000f7001880e0000000 a9ffffff32d20000af01180407000000 a9ffffff32d20000af01180407000000 ffffffa9581a4000f7001880e0000000 a9ffffff32d20000af01180407000000 ffffffa9581a4000f7001880e0000000 - {e=>4,n=>4,a=>-107,m=>-1,d=>-2,j=>6,l=>0,c=>1,k=>-90,h=>5,b=>5,g=>2,f=>-4,i=>-2} 95ffffff8d490100b501a63804000000 95ffffff8d490100b501a63804000000 95ffffff8d490100b501a63804000000 ffffff95a7488000bb00a61c80000000 95ffffff8d490100b501a63804000000 95ffffff8d490100b501a63804000000 ffffff95a7488000bb00a61c80000000 95ffffff8d490100b501a63804000000 ffffff95a7488000bb00a61c80000000 - {e=>1,n=>5,a=>-24,m=>-2,d=>-4,j=>6,l=>7,c=>1,k=>-102,h=>1,b=>5,g=>0,f=>-2,i=>0} e8ffffff0d63000081019a3705000000 e8ffffff0d63000081019a3705000000 e8ffffff0d63000081019a3705000000 ffffffe8a61c000023009af8a0000000 e8ffffff0d63000081019a3705000000 e8ffffff0d63000081019a3705000000 ffffffe8a61c000023009af8a0000000 e8ffffff0d63000081019a3705000000 ffffffe8a61c000023009af8a0000000 - {e=>0,n=>4,a=>127,m=>-2,d=>-1,j=>7,l=>4,c=>-4,k=>68,h=>0,b=>1,g=>4,f=>-4,i=>-3} 7f000000e1410200e801443404000000 7f000000e1410200e801443404000000 7f000000e1410200e801443404000000 0000007f338900001780449880000000 7f000000e1410200e801443404000000 7f000000e1410200e801443404000000 0000007f338900001780449880000000 7f000000e1410200e801443404000000 0000007f338900001780449880000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>4,a=>47,m=>3,d=>0,j=>7,l=>0,c=>3,k=>-117,h=>2,b=>3,g=>0,f=>-4,o=>238,i=>-3} 2f0000001b440000ea018b1804ee0000 2f0000001b440000ea018b1804ee0000 2f0000001b440000ea018b1804ee0000 0000002f6c28000057808b0c80ee0000 2f0000001b440000ea018b1804ee0000 2f0000001b440000ea018b1804ee0000 0000002f6c28000057808b0c80ee0000 2f0000001b440000ea018b1804ee0000 0000002f6c28000057808b0c80ee0000 - {e=>1,n=>4,a=>-56,m=>-3,d=>0,j=>0,l=>3,c=>-3,k=>-65,h=>0,b=>6,g=>7,f=>-2,o=>157,i=>3} c8ffffff2ee203001800bf2b049d0000 c8ffffff2ee203001800bf2b049d0000 c8ffffff2ee203001800bf2b049d0000 ffffffc8d41dc0000c00bf74809d0000 c8ffffff2ee203001800bf2b049d0000 c8ffffff2ee203001800bf2b049d0000 ffffffc8d41dc0000c00bf74809d0000 c8ffffff2ee203001800bf2b049d0000 ffffffc8d41dc0000c00bf74809d0000 - {e=>6,n=>5,a=>44,m=>1,d=>1,j=>3,l=>1,c=>1,k=>57,h=>1,b=>7,g=>4,f=>2,o=>68,i=>2} 2c0000004f2c0200d100390905440000 2c0000004f2c0200d100390905440000 2c0000004f2c0200d100390905440000 0000002ce4e5000029803924a0440000 2c0000004f2c0200d100390905440000 2c0000004f2c0200d100390905440000 0000002ce4e5000029803924a0440000 2c0000004f2c0200d100390905440000 0000002ce4e5000029803924a0440000 - {e=>2,n=>6,a=>-122,m=>0,d=>0,j=>6,l=>6,c=>3,k=>87,h=>1,b=>2,g=>7,f=>2,o=>182,i=>3} 86ffffff1aa403009901570606b60000 86ffffff1aa403009901570606b60000 86ffffff1aa403009901570606b60000 ffffff864c25c0002f0057c0c0b60000 86ffffff1aa403009901570606b60000 86ffffff1aa403009901570606b60000 ffffff864c25c0002f0057c0c0b60000 86ffffff1aa403009901570606b60000 ffffff864c25c0002f0057c0c0b60000 - {e=>6,n=>4,a=>-93,m=>0,d=>-3,j=>5,l=>2,c=>2,k=>104,h=>6,b=>0,g=>1,f=>-3,o=>134,i=>-1} a3ffffff50dd00007e01680204860000 a3ffffff50dd00007e01680204860000 a3ffffff50dd00007e01680204860000 ffffffa30aea4000de80684080860000 a3ffffff50dd00007e01680204860000 a3ffffff50dd00007e01680204860000 ffffffa30aea4000de80684080860000 a3ffffff50dd00007e01680204860000 ffffffa30aea4000de80684080860000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; }; - {a=>92,b=>7} 5c00000007000000 5c000000000000000700000000000000 5c000000000000000700000000000000 0000005ce0000000 5c00000007000000 5c00000007000000 000000000000005ce000000000000000 5c00000007000000 0000005ce0000000 - {a=>73,b=>2} 4900000002000000 49000000000000000200000000000000 49000000000000000200000000000000 0000004940000000 4900000002000000 4900000002000000 00000000000000494000000000000000 4900000002000000 0000004940000000 - {a=>-17,b=>2} efffffff02000000 efffffffffffffff0200000000000000 efffffffffffffff0200000000000000 ffffffef40000000 efffffff02000000 efffffff02000000 ffffffffffffffef4000000000000000 efffffff02000000 ffffffef40000000 - {a=>6,b=>0} 0600000000000000 06000000000000000000000000000000 06000000000000000000000000000000 0000000600000000 0600000000000000 0600000000000000 00000000000000060000000000000000 0600000000000000 0000000600000000 - {a=>-12,b=>7} f4ffffff07000000 f4ffffffffffffff0700000000000000 f4ffffffffffffff0700000000000000 fffffff4e0000000 f4ffffff07000000 f4ffffff07000000 fffffffffffffff4e000000000000000 f4ffffff07000000 fffffff4e0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>5,b=>1} 0500000001000000 05000000000000000100000000000000 05000000000000000100000000000000 0000000520000000 0500000001000000 0500000001000000 00000000000000052000000000000000 0500000001000000 0000000520000000 - {c=>3,a=>54,b=>3} 360000001b000000 36000000000000001b00000000000000 36000000000000001b00000000000000 000000366c000000 360000001b000000 360000001b000000 00000000000000366c00000000000000 360000001b000000 000000366c000000 - {c=>3,a=>58,b=>0} 3a00000018000000 3a000000000000001800000000000000 3a000000000000001800000000000000 0000003a0c000000 3a00000018000000 3a00000018000000 000000000000003a0c00000000000000 3a00000018000000 0000003a0c000000 - {c=>2,a=>-6,b=>6} faffffff16000000 faffffffffffffff1600000000000000 faffffffffffffff1600000000000000 fffffffac8000000 faffffff16000000 faffffff16000000 fffffffffffffffac800000000000000 faffffff16000000 fffffffac8000000 - {c=>1,a=>-30,b=>2} e2ffffff0a000000 e2ffffffffffffff0a00000000000000 e2ffffffffffffff0a00000000000000 ffffffe244000000 e2ffffff0a000000 e2ffffff0a000000 ffffffffffffffe24400000000000000 e2ffffff0a000000 ffffffe244000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>3,a=>18,b=>6,d=>1} 120000005e000000 12000000000000005e00000000000000 12000000000000005e00000000000000 00000012cc800000 120000005e000000 120000005e000000 0000000000000012cc80000000000000 120000005e000000 00000012cc800000 - {c=>-1,a=>-92,b=>2,d=>-2} a4ffffffba010000 a4ffffffffffffffba01000000000000 a4ffffffffffffffba01000000000000 ffffffa45f000000 a4ffffffba010000 a4ffffffba010000 ffffffffffffffa45f00000000000000 a4ffffffba010000 ffffffa45f000000 - {c=>-1,a=>-128,b=>5,d=>3} 80fffffffd000000 80fffffffffffffffd00000000000000 80fffffffffffffffd00000000000000 ffffff80bd800000 80fffffffd000000 80fffffffd000000 ffffffffffffff80bd80000000000000 80fffffffd000000 ffffff80bd800000 - {c=>-4,a=>-90,b=>0,d=>0} a6ffffff20000000 a6ffffffffffffff2000000000000000 a6ffffffffffffff2000000000000000 ffffffa610000000 a6ffffff20000000 a6ffffff20000000 ffffffffffffffa61000000000000000 a6ffffff20000000 ffffffa610000000 - {c=>2,a=>-12,b=>2,d=>2} f4ffffff92000000 f4ffffffffffffff9200000000000000 f4ffffffffffffff9200000000000000 fffffff449000000 f4ffffff92000000 f4ffffff92000000 fffffffffffffff44900000000000000 f4ffffff92000000 fffffff449000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-2,a=>-52,b=>1,d=>-2} ccffffffb1090000 ccffffffffffffffb109000000000000 ccffffffffffffffb109000000000000 ffffffcc3b400000 ccffffffb1090000 ccffffffb1090000 ffffffffffffffcc3b40000000000000 ccffffffb1090000 ffffffcc3b400000 - {e=>3,c=>2,a=>-5,b=>6,d=>0} fbffffff16060000 fbffffffffffffff1606000000000000 fbffffffffffffff1606000000000000 fffffffbc8300000 fbffffff16060000 fbffffff16060000 fffffffffffffffbc830000000000000 fbffffff16060000 fffffffbc8300000 - {e=>5,c=>-4,a=>51,b=>1,d=>-2} 33000000a10b0000 3300000000000000a10b000000000000 3300000000000000a10b000000000000 0000003333500000 33000000a10b0000 33000000a10b0000 00000000000000333350000000000000 33000000a10b0000 0000003333500000 - {e=>2,c=>2,a=>-120,b=>6,d=>-4} 88ffffff16050000 88ffffffffffffff1605000000000000 88ffffffffffffff1605000000000000 ffffff88ca200000 88ffffff16050000 88ffffff16050000 ffffffffffffff88ca20000000000000 88ffffff16050000 ffffff88ca200000 - {e=>5,c=>1,a=>-11,b=>3,d=>2} f5ffffff8b0a0000 f5ffffffffffffff8b0a000000000000 f5ffffffffffffff8b0a000000000000 fffffff565500000 f5ffffff8b0a0000 f5ffffff8b0a0000 fffffffffffffff56550000000000000 f5ffffff8b0a0000 fffffff565500000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>-4,a=>-32,b=>4,d=>0,f=>-1} e0ffffff247c0000 e0ffffffffffffff247c000000000000 e0ffffffffffffff247c000000000000 ffffffe0906e0000 e0ffffff247c0000 e0ffffff247c0000 ffffffffffffffe0906e000000000000 e0ffffff247c0000 ffffffe0906e0000 - {e=>5,c=>2,a=>50,b=>1,d=>2,f=>1} 32000000911a0000 3200000000000000911a000000000000 3200000000000000911a000000000000 0000003229520000 32000000911a0000 32000000911a0000 00000000000000322952000000000000 32000000911a0000 0000003229520000 - {e=>7,c=>-2,a=>106,b=>5,d=>-4,f=>1} 6a000000351f0000 6a00000000000000351f000000000000 6a00000000000000351f000000000000 0000006aba720000 6a000000351f0000 6a000000351f0000 000000000000006aba72000000000000 6a000000351f0000 0000006aba720000 - {e=>4,c=>-4,a=>-26,b=>5,d=>-3,f=>-4} e6ffffff65490000 e6ffffffffffffff6549000000000000 e6ffffffffffffff6549000000000000 ffffffe6b2c80000 e6ffffff65490000 e6ffffff65490000 ffffffffffffffe6b2c8000000000000 e6ffffff65490000 ffffffe6b2c80000 - {e=>6,c=>1,a=>30,b=>1,d=>-3,f=>1} 1e000000491d0000 1e00000000000000491d000000000000 1e00000000000000491d000000000000 0000001e26e20000 1e000000491d0000 1e000000491d0000 000000000000001e26e2000000000000 1e000000491d0000 0000001e26e20000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>2,c=>-3,a=>34,g=>7,b=>0,d=>0,f=>-2} 2200000028e40300 220000000000000028e4030000000000 220000000000000028e4030000000000 00000022142dc000 2200000028e40300 2200000028e40300 0000000000000022142dc00000000000 2200000028e40300 00000022142dc000 - {e=>7,c=>1,a=>-121,g=>0,b=>5,d=>0,f=>-2} 87ffffff0d6e0000 87ffffffffffffff0d6e000000000000 87ffffffffffffff0d6e000000000000 ffffff87a47c0000 87ffffff0d6e0000 87ffffff0d6e0000 ffffffffffffff87a47c000000000000 87ffffff0d6e0000 ffffff87a47c0000 - {e=>3,c=>-3,a=>0,g=>1,b=>0,d=>2,f=>-1} 00000000a8f60000 0000000000000000a8f6000000000000 0000000000000000a8f6000000000000 00000000153e4000 00000000a8f60000 00000000a8f60000 0000000000000000153e400000000000 00000000a8f60000 00000000153e4000 - {e=>5,c=>-3,a=>-126,g=>5,b=>5,d=>-3,f=>3} 82ffffff6dbb0200 82ffffffffffffff6dbb020000000000 82ffffffffffffff6dbb020000000000 ffffff82b6d74000 82ffffff6dbb0200 82ffffff6dbb0200 ffffffffffffff82b6d7400000000000 82ffffff6dbb0200 ffffff82b6d74000 - {e=>0,c=>2,a=>-72,g=>7,b=>0,d=>3,f=>3} b8ffffffd0b00300 b8ffffffffffffffd0b0030000000000 b8ffffffffffffffd0b0030000000000 ffffffb80987c000 b8ffffffd0b00300 b8ffffffd0b00300 ffffffffffffffb80987c00000000000 b8ffffffd0b00300 ffffffb80987c000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-1,a=>16,g=>1,b=>3,d=>-4,f=>-4} 100000003bc30000 10000000000000003bc3000000000000 10000000000000003bc3000000000000 000000107e184000 100000003bc30000 100000003bc30000 00000000000000107e18400000000000 100000003bc30000 000000107e184000 - {e=>5,c=>-2,a=>-124,g=>2,b=>1,d=>3,f=>3} 84fffffff13a0100 84fffffffffffffff13a010000000000 84fffffffffffffff13a010000000000 ffffff8439d68000 84fffffff13a0100 84fffffff13a0100 ffffffffffffff8439d6800000000000 84fffffff13a0100 ffffff8439d68000 - {e=>3,c=>-4,a=>-30,g=>6,b=>6,d=>0,f=>-3} e2ffffff26560300 e2ffffffffffffff2656030000000000 e2ffffffffffffff2656030000000000 ffffffe2d03b8000 e2ffffff26560300 e2ffffff26560300 ffffffffffffffe2d03b800000000000 e2ffffff26560300 ffffffe2d03b8000 - {e=>5,c=>-4,a=>101,g=>4,b=>2,d=>2,f=>2} 65000000a22a0200 6500000000000000a22a020000000000 6500000000000000a22a020000000000 0000006551550000 65000000a22a0200 65000000a22a0200 00000000000000655155000000000000 65000000a22a0200 0000006551550000 - {e=>0,c=>1,a=>-30,g=>0,b=>0,d=>-1,f=>-1} e2ffffffc8710000 e2ffffffffffffffc871000000000000 e2ffffffffffffffc871000000000000 ffffffe2078e0000 e2ffffffc8710000 e2ffffffc8710000 ffffffffffffffe2078e000000000000 e2ffffffc8710000 ffffffe2078e0000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>-63,d=>-4,c=>-3,h=>4,b=>0,g=>7,f=>-1} c1ffffff28f7030004000000 c1ffffffffffffff28f7030004000000 c1ffffffffffffff28f7030004000000 ffffffc1163fc00080000000 c1ffffff28f7030004000000 c1ffffff28f7030004000000 ffffffffffffffc1163fc00080000000 c1ffffff28f7030004000000 ffffffc1163fc00080000000 - {e=>1,a=>-112,d=>3,c=>0,h=>7,b=>3,g=>1,f=>2} 90ffffffc3a2000007000000 90ffffffffffffffc3a2000007000000 90ffffffffffffffc3a2000007000000 ffffff9061944000e0000000 90ffffffc3a2000007000000 90ffffffc3a2000007000000 ffffffffffffff9061944000e0000000 90ffffffc3a2000007000000 ffffff9061944000e0000000 - {e=>5,a=>-65,d=>-1,c=>2,h=>5,b=>6,g=>4,f=>-2} bfffffffd66b020005000000 bfffffffffffffffd66b020005000000 bfffffffffffffffd66b020005000000 ffffffbfcbdd0000a0000000 bfffffffd66b020005000000 bfffffffd66b020005000000 ffffffffffffffbfcbdd0000a0000000 bfffffffd66b020005000000 ffffffbfcbdd0000a0000000 - {e=>7,a=>63,d=>0,c=>-4,h=>3,b=>5,g=>4,f=>1} 3f000000251e020003000000 3f00000000000000251e020003000000 3f00000000000000251e020003000000 0000003fb073000060000000 3f000000251e020003000000 3f000000251e020003000000 000000000000003fb073000060000000 3f000000251e020003000000 0000003fb073000060000000 - {e=>3,a=>-66,d=>-3,c=>3,h=>4,b=>0,g=>2,f=>-3} beffffff5857010004000000 beffffffffffffff5857010004000000 beffffffffffffff5857010004000000 ffffffbe0eba800080000000 beffffff5857010004000000 beffffff5857010004000000 ffffffffffffffbe0eba800080000000 beffffff5857010004000000 ffffffbe0eba800080000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>0,a=>-44,d=>-1,c=>-2,h=>7,b=>4,g=>5,f=>-3,i=>1} d4fffffff4d102000f000000 d4fffffffffffffff4d102000f000000 d4fffffffffffffff4d102000f000000 ffffffd49b8b4000e4000000 d4fffffff4d102000f000000 d4fffffff4d102000f000000 ffffffffffffffd49b8b4000e4000000 d4fffffff4d102000f000000 ffffffd49b8b4000e4000000 - {e=>2,a=>-106,d=>-4,c=>2,h=>0,b=>5,g=>5,f=>-3,i=>-2} 96ffffff15d5020030000000 96ffffffffffffff15d5020030000000 96ffffffffffffff15d5020030000000 ffffff96aa2b400018000000 96ffffff15d5020030000000 96ffffff15d5020030000000 ffffffffffffff96aa2b400018000000 96ffffff15d5020030000000 ffffff96aa2b400018000000 - {e=>0,a=>127,d=>-4,c=>2,h=>5,b=>2,g=>1,f=>-2,i=>-4} 7f00000012e1000025000000 7f0000000000000012e1000025000000 7f0000000000000012e1000025000000 0000007f4a0c4000b0000000 7f00000012e1000025000000 7f00000012e1000025000000 000000000000007f4a0c4000b0000000 7f00000012e1000025000000 0000007f4a0c4000b0000000 - {e=>2,a=>-89,d=>1,c=>-2,h=>5,b=>4,g=>0,f=>-2,i=>3} a7ffffff746400001d000000 a7ffffffffffffff746400001d000000 a7ffffffffffffff746400001d000000 ffffffa798ac0000ac000000 a7ffffff746400001d000000 a7ffffff746400001d000000 ffffffffffffffa798ac0000ac000000 a7ffffff746400001d000000 ffffffa798ac0000ac000000 - {e=>3,a=>86,d=>2,c=>1,h=>6,b=>4,g=>7,f=>3,i=>-4} 560000008cb6030026000000 56000000000000008cb6030026000000 56000000000000008cb6030026000000 000000568537c000d0000000 560000008cb6030026000000 560000008cb6030026000000 00000000000000568537c000d0000000 560000008cb6030026000000 000000568537c000d0000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>2,a=>68,d=>-3,j=>7,c=>-1,h=>6,b=>2,g=>2,f=>-2,i=>-1} 440000007a650100fe010000 44000000000000007a650100fe010000 44000000000000007a650100fe010000 000000445eac8000df800000 440000007a650100fe010000 440000007a650100fe010000 00000000000000445eac8000df800000 440000007a650100fe010000 000000445eac8000df800000 - {e=>5,a=>125,d=>2,j=>0,c=>2,h=>0,b=>0,g=>1,f=>2,i=>3} 7d00000090aa000018000000 7d0000000000000090aa000018000000 7d0000000000000090aa000018000000 0000007d095440000c000000 7d00000090aa000018000000 7d00000090aa000018000000 000000000000007d095440000c000000 7d00000090aa000018000000 0000007d095440000c000000 - {e=>7,a=>-98,d=>-3,j=>3,c=>1,h=>0,b=>2,g=>0,f=>3,i=>2} 9effffff4a3f0000d0000000 9effffffffffffff4a3f0000d0000000 9effffffffffffff4a3f0000d0000000 ffffff9e46f6000009800000 9effffff4a3f0000d0000000 9effffff4a3f0000d0000000 ffffffffffffff9e46f6000009800000 9effffff4a3f0000d0000000 ffffff9e46f6000009800000 - {e=>6,a=>65,d=>-4,j=>2,c=>2,h=>4,b=>4,g=>6,f=>0,i=>-1} 41000000140d0300bc000000 4100000000000000140d0300bc000000 4100000000000000140d0300bc000000 000000418a6180009d000000 41000000140d0300bc000000 41000000140d0300bc000000 00000000000000418a6180009d000000 41000000140d0300bc000000 000000418a6180009d000000 - {e=>4,a=>-43,d=>-4,j=>1,c=>0,h=>7,b=>1,g=>0,f=>1,i=>2} d5ffffff0119000057000000 d5ffffffffffffff0119000057000000 d5ffffffffffffff0119000057000000 ffffffd522420000e8800000 d5ffffff0119000057000000 d5ffffff0119000057000000 ffffffffffffffd522420000e8800000 d5ffffff0119000057000000 ffffffd522420000e8800000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>7,a=>86,d=>3,j=>2,c=>0,k=>-13,h=>7,b=>3,g=>7,f=>3,i=>-4} 56000000c3be0300a700f300 5600000000000000c3be0300a700f300 5600000000000000c3be0300a700f300 0000005661f7c000f100f300 56000000c3be0300a700f300 56000000c3be0300a700f300 000000000000005661f7c000f100f300 56000000c3be0300a700f300 0000005661f7c000f100f300 - {e=>5,a=>-12,d=>-3,j=>6,c=>-3,k=>-95,h=>0,b=>6,g=>0,f=>-2,i=>-3} f4ffffff6e6b0000a801a100 f4ffffffffffffff6e6b0000a801a100 f4ffffffffffffff6e6b0000a801a100 fffffff4d6dc00001700a100 f4ffffff6e6b0000a801a100 f4ffffff6e6b0000a801a100 fffffffffffffff4d6dc00001700a100 f4ffffff6e6b0000a801a100 fffffff4d6dc00001700a100 - {e=>6,a=>-124,d=>3,j=>3,c=>-3,k=>50,h=>6,b=>7,g=>2,f=>-1,i=>-1} 84ffffffef7c0100fe003200 84ffffffffffffffef7c0100fe003200 84ffffffffffffffef7c0100fe003200 ffffff84f5ee8000dd803200 84ffffffef7c0100fe003200 84ffffffef7c0100fe003200 ffffffffffffff84f5ee8000dd803200 84ffffffef7c0100fe003200 ffffff84f5ee8000dd803200 - {e=>2,a=>47,d=>0,j=>0,c=>-4,k=>102,h=>3,b=>7,g=>6,f=>-4,i=>2} 2f0000002744030013006600 2f000000000000002744030013006600 2f000000000000002744030013006600 0000002ff029800068006600 2f0000002744030013006600 2f0000002744030013006600 000000000000002ff029800068006600 2f0000002744030013006600 0000002ff029800068006600 - {e=>5,a=>95,d=>0,j=>6,c=>0,k=>66,h=>6,b=>6,g=>6,f=>-4,i=>-4} 5f000000064a0300a6014200 5f00000000000000064a0300a6014200 5f00000000000000064a0300a6014200 0000005fc0598000d3004200 5f000000064a0300a6014200 5f000000064a0300a6014200 000000000000005fc0598000d3004200 5f000000064a0300a6014200 0000005fc0598000d3004200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>7,a=>101,d=>-2,j=>1,l=>0,c=>-3,k=>83,h=>7,b=>0,g=>3,f=>-4,i=>2} 65000000a8cf010057005300 6500000000000000a8cf010057005300 6500000000000000a8cf010057005300 000000651778c000e8805300 65000000a8cf010057005300 65000000a8cf010057005300 00000000000000651778c000e8805300 65000000a8cf010057005300 000000651778c000e8805300 - {e=>7,a=>-82,d=>2,j=>3,l=>2,c=>1,k=>50,h=>0,b=>2,g=>7,f=>-2,i=>-2} aeffffff8aee0300f0003202 aeffffffffffffff8aee0300f0003202 aeffffffffffffff8aee0300f0003202 ffffffae457dc00019803240 aeffffff8aee0300f0003202 aeffffff8aee0300f0003202 ffffffffffffffae457dc00019803240 aeffffff8aee0300f0003202 ffffffae457dc00019803240 - {e=>5,a=>49,d=>-3,j=>1,l=>7,c=>-2,k=>-9,h=>7,b=>5,g=>5,f=>-1,i=>2} 3100000075fb02005700f707 310000000000000075fb02005700f707 310000000000000075fb02005700f707 00000031badf4000e880f7e0 3100000075fb02005700f707 3100000075fb02005700f707 0000000000000031badf4000e880f7e0 3100000075fb02005700f707 00000031badf4000e880f7e0 - {e=>0,a=>-76,d=>3,j=>0,l=>0,c=>-1,k=>-27,h=>7,b=>6,g=>6,f=>-1,i=>-4} b4fffffffe7003002700e500 b4fffffffffffffffe7003002700e500 b4fffffffffffffffe7003002700e500 ffffffb4dd8f8000f000e500 b4fffffffe7003002700e500 b4fffffffe7003002700e500 ffffffffffffffb4dd8f8000f000e500 b4fffffffe7003002700e500 ffffffb4dd8f8000f000e500 - {e=>5,a=>62,d=>2,j=>1,l=>2,c=>-1,k=>-59,h=>5,b=>1,g=>5,f=>-2,i=>-2} 3e000000b9ea02007500c502 3e00000000000000b9ea02007500c502 3e00000000000000b9ea02007500c502 0000003e3d5d4000b880c540 3e000000b9ea02007500c502 3e000000b9ea02007500c502 000000000000003e3d5d4000b880c540 3e000000b9ea02007500c502 0000003e3d5d4000b880c540 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>61,m=>-3,d=>-2,j=>7,l=>1,c=>3,k=>-49,h=>5,b=>0,g=>1,f=>-3,i=>0} 3d00000098df0000c501cf29 3d0000000000000098df0000c501cf29 3d0000000000000098df0000c501cf29 0000003d0f7a4000a380cf34 3d00000098df0000c501cf29 3d00000098df0000c501cf29 000000000000003d0f7a4000a380cf34 3d00000098df0000c501cf29 0000003d0f7a4000a380cf34 - {e=>6,a=>115,m=>-1,d=>0,j=>4,l=>2,c=>-2,k=>32,h=>7,b=>4,g=>3,f=>-2,i=>-2} 7300000034ec01003701203a 730000000000000034ec01003701203a 730000000000000034ec01003701203a 00000073986cc000fa00205c 7300000034ec01003701203a 7300000034ec01003701203a 0000000000000073986cc000fa00205c 7300000034ec01003701203a 00000073986cc000fa00205c - {e=>7,a=>74,m=>3,d=>-1,j=>6,l=>5,c=>-1,k=>34,h=>3,b=>4,g=>4,f=>2,i=>2} 4a000000fc2f02009301221d 4a00000000000000fc2f02009301221d 4a00000000000000fc2f02009301221d 0000004a9ff500006b0022ac 4a000000fc2f02009301221d 4a000000fc2f02009301221d 000000000000004a9ff500006b0022ac 4a000000fc2f02009301221d 0000004a9ff500006b0022ac - {e=>3,a=>91,m=>-3,d=>0,j=>2,l=>7,c=>-1,k=>-86,h=>5,b=>0,g=>1,f=>-1,i=>-4} 5b00000038f60000a500aa2f 5b0000000000000038f60000a500aa2f 5b0000000000000038f60000a500aa2f 0000005b1c3e4000b100aaf4 5b00000038f60000a500aa2f 5b00000038f60000a500aa2f 000000000000005b1c3e4000b100aaf4 5b00000038f60000a500aa2f 0000005b1c3e4000b100aaf4 - {e=>4,a=>-16,m=>0,d=>2,j=>2,l=>3,c=>-2,k=>-46,h=>7,b=>2,g=>0,f=>-1,i=>-3} f0ffffffb2780000af00d203 f0ffffffffffffffb2780000af00d203 f0ffffffffffffffb2780000af00d203 fffffff0594e0000f500d260 f0ffffffb2780000af00d203 f0ffffffb2780000af00d203 fffffffffffffff0594e0000f500d260 f0ffffffb2780000af00d203 fffffff0594e0000f500d260 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>1,n=>1,a=>-128,m=>-2,d=>2,j=>3,l=>2,c=>3,k=>-47,h=>3,b=>1,g=>0,f=>1,i=>0} 80ffffff99120000c300d13201000000 80ffffffffffffff99120000c300d1320100000000000000 80ffffffffffffff99120000c300d1320100000000000000 ffffff802d1200006180d15820000000 80ffffff99120000c300d13201000000 80ffffff99120000c300d13201000000 ffffffffffffff802d1200006180d1582000000000000000 80ffffff99120000c300d13201000000 ffffff802d1200006180d15820000000 - {e=>0,n=>3,a=>39,m=>2,d=>2,j=>2,l=>2,c=>-2,k=>-60,h=>2,b=>2,g=>1,f=>-4,i=>-1} 27000000b2c00000ba00c41203000000 2700000000000000b2c00000ba00c4120300000000000000 2700000000000000b2c00000ba00c4120300000000000000 00000027590840005d00c44860000000 27000000b2c00000ba00c41203000000 27000000b2c00000ba00c41203000000 0000000000000027590840005d00c4486000000000000000 27000000b2c00000ba00c41203000000 00000027590840005d00c44860000000 - {e=>0,n=>7,a=>86,m=>-3,d=>-2,j=>4,l=>4,c=>-1,k=>24,h=>1,b=>4,g=>3,f=>-2,i=>3} 56000000bce101001901182c07000000 5600000000000000bce101001901182c0700000000000000 5600000000000000bce101001901182c0700000000000000 000000569f0cc0002e001894e0000000 56000000bce101001901182c07000000 56000000bce101001901182c07000000 00000000000000569f0cc0002e001894e000000000000000 56000000bce101001901182c07000000 000000569f0cc0002e001894e0000000 - {e=>3,n=>4,a=>-28,m=>2,d=>3,j=>2,l=>5,c=>0,k=>-23,h=>7,b=>2,g=>7,f=>1,i=>1} e4ffffffc29603008f00e91504000000 e4ffffffffffffffc29603008f00e9150400000000000000 e4ffffffffffffffc29603008f00e9150400000000000000 ffffffe441b3c000e500e9a880000000 e4ffffffc29603008f00e91504000000 e4ffffffc29603008f00e91504000000 ffffffffffffffe441b3c000e500e9a88000000000000000 e4ffffffc29603008f00e91504000000 ffffffe441b3c000e500e9a880000000 - {e=>3,n=>3,a=>-127,m=>-4,d=>-2,j=>6,l=>7,c=>0,k=>51,h=>2,b=>0,g=>5,f=>-3,i=>-2} 81ffffff80d70200b201332703000000 81ffffffffffffff80d70200b20133270300000000000000 81ffffffffffffff80d70200b20133270300000000000000 ffffff81033b40005b0033f060000000 81ffffff80d70200b201332703000000 81ffffff80d70200b201332703000000 ffffffffffffff81033b40005b0033f06000000000000000 81ffffff80d70200b201332703000000 ffffff81033b40005b0033f060000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>5,a=>-107,m=>2,d=>3,j=>1,l=>1,c=>-1,k=>88,h=>1,b=>3,g=>2,f=>3,o=>104,i=>2} 95fffffffb3401005100581105680000 95fffffffffffffffb340100510058110568000000000000 95fffffffffffffffb340100510058110568000000000000 ffffff957da6800028805828a0680000 95fffffffb3401005100581105680000 95fffffffb3401005100581105680000 ffffffffffffff957da6800028805828a068000000000000 95fffffffb3401005100581105680000 ffffff957da6800028805828a0680000 - {e=>1,n=>6,a=>84,m=>-1,d=>-2,j=>3,l=>7,c=>1,k=>29,h=>2,b=>3,g=>3,f=>-2,o=>30,i=>-3} 540000008be30100ea001d3f061e0000 54000000000000008be30100ea001d3f061e000000000000 54000000000000008be30100ea001d3f061e000000000000 00000054671cc00055801dfcc01e0000 540000008be30100ea001d3f061e0000 540000008be30100ea001d3f061e0000 0000000000000054671cc00055801dfcc01e000000000000 540000008be30100ea001d3f061e0000 00000054671cc00055801dfcc01e0000 - {e=>3,n=>0,a=>79,m=>3,d=>-3,j=>2,l=>6,c=>1,k=>125,h=>1,b=>2,g=>3,f=>3,o=>59,i=>-1} 4f0000004ab70100b9007d1e003b0000 4f000000000000004ab70100b9007d1e003b000000000000 4f000000000000004ab70100b9007d1e003b000000000000 0000004f46b6c0003d007dcc003b0000 4f0000004ab70100b9007d1e003b0000 4f0000004ab70100b9007d1e003b0000 000000000000004f46b6c0003d007dcc003b000000000000 4f0000004ab70100b9007d1e003b0000 0000004f46b6c0003d007dcc003b0000 - {e=>7,n=>7,a=>112,m=>-1,d=>3,j=>4,l=>0,c=>1,k=>-29,h=>5,b=>4,g=>4,f=>-2,o=>130,i=>2} 70000000cc6e02001501e33807820000 7000000000000000cc6e02001501e3380782000000000000 7000000000000000cc6e02001501e3380782000000000000 0000007085fd0000aa00e31ce0820000 70000000cc6e02001501e33807820000 70000000cc6e02001501e33807820000 000000000000007085fd0000aa00e31ce082000000000000 70000000cc6e02001501e33807820000 0000007085fd0000aa00e31ce0820000 - {e=>7,n=>0,a=>27,m=>-1,d=>2,j=>1,l=>6,c=>-2,k=>40,h=>4,b=>0,g=>5,f=>1,o=>182,i=>-4} 1b000000b09e02006400283e00b60000 1b00000000000000b09e02006400283e00b6000000000000 1b00000000000000b09e02006400283e00b6000000000000 0000001b19734000908028dc00b60000 1b000000b09e02006400283e00b60000 1b000000b09e02006400283e00b60000 000000000000001b19734000908028dc00b6000000000000 1b000000b09e02006400283e00b60000 0000001b19734000908028dc00b60000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; }; - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 - {a=>1} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 - {a=>6} 06000000 06000000 06000000 c0000000 06000000 06000000 c0000000 06000000 c0000000 - {a=>5} 05000000 05000000 05000000 a0000000 05000000 05000000 a0000000 05000000 a0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; }; - {a=>4,b=>-3} 2c000000 2c000000 2c000000 94000000 2c000000 2c000000 94000000 2c000000 94000000 - {a=>7,b=>-4} 27000000 27000000 27000000 f0000000 27000000 27000000 f0000000 27000000 f0000000 - {a=>3,b=>-3} 2b000000 2b000000 2b000000 74000000 2b000000 2b000000 74000000 2b000000 74000000 - {a=>3,b=>-3} 2b000000 2b000000 2b000000 74000000 2b000000 2b000000 74000000 2b000000 74000000 - {a=>6,b=>-3} 2e000000 2e000000 2e000000 d4000000 2e000000 2e000000 d4000000 2e000000 d4000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>3,a=>7,b=>-3} ef000000 ef000000 ef000000 f5800000 ef000000 ef000000 f5800000 ef000000 f5800000 - {c=>-3,a=>7,b=>-3} 6f010000 6f010000 6f010000 f6800000 6f010000 6f010000 f6800000 6f010000 f6800000 - {c=>-4,a=>0,b=>2} 10010000 10010000 10010000 0a000000 10010000 10010000 0a000000 10010000 0a000000 - {c=>1,a=>0,b=>3} 58000000 58000000 58000000 0c800000 58000000 58000000 0c800000 58000000 0c800000 - {c=>-1,a=>5,b=>-2} f5010000 f5010000 f5010000 bb800000 f5010000 f5010000 bb800000 f5010000 bb800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>1,a=>5,b=>-2,d=>7} 750e0000 750e0000 750e0000 b8f00000 750e0000 750e0000 b8f00000 750e0000 b8f00000 - {c=>-3,a=>0,b=>-4,d=>1} 60030000 60030000 60030000 12900000 60030000 60030000 12900000 60030000 12900000 - {c=>-4,a=>4,b=>-2,d=>0} 34010000 34010000 34010000 9a000000 34010000 34010000 9a000000 34010000 9a000000 - {c=>0,a=>3,b=>3,d=>5} 1b0a0000 1b0a0000 1b0a0000 6c500000 1b0a0000 1b0a0000 6c500000 1b0a0000 6c500000 - {c=>-4,a=>6,b=>2,d=>3} 16070000 16070000 16070000 ca300000 16070000 16070000 ca300000 16070000 ca300000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; }; - {e=>'UE6',c=>2,a=>1,b=>-1,d=>1} b9620000 b9620000 b9620000 3d1c0000 b9620000 b9620000 3d1c0000 b9620000 3d1c0000 - {e=>'UE7',c=>-2,a=>1,b=>1,d=>0} 89710000 89710000 89710000 270e0000 89710000 89710000 270e0000 89710000 270e0000 - {e=>'UE7',c=>-4,a=>0,b=>-1,d=>4} 38790000 38790000 38790000 1e4e0000 38790000 38790000 1e4e0000 38790000 1e4e0000 - {e=>'UE0',c=>-3,a=>4,b=>-4,d=>0} 64010000 64010000 64010000 92800000 64010000 64010000 92800000 64010000 92800000 - {e=>'UE5',c=>-3,a=>5,b=>-3,d=>0} 6d510000 6d510000 6d510000 b68a0000 6d510000 6d510000 b68a0000 6d510000 b68a0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; }; - {e=>'UE2',c=>-2,a=>7,b=>1,d=>7,f=>1} 8faf0000 8faf0000 8faf0000 e7744000 8faf0000 8faf0000 e7744000 8faf0000 e7744000 - {e=>'UE3',c=>0,a=>4,b=>2,d=>4,f=>2} 14380100 14380100 14380100 88468000 14380100 14380100 88468000 14380100 88468000 - {e=>'UE2',c=>3,a=>4,b=>0,d=>0,f=>0} c4200000 c4200000 c4200000 81840000 c4200000 c4200000 81840000 c4200000 81840000 - {e=>'UE1',c=>0,a=>3,b=>1,d=>0,f=>6} 0b100300 0b100300 0b100300 64038000 0b100300 0b100300 64038000 0b100300 64038000 - {e=>'UE2',c=>3,a=>1,b=>2,d=>3,f=>5} d1a60200 d1a60200 d1a60200 29b54000 d1a60200 d1a60200 29b54000 d1a60200 29b54000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; }; - {e=>'UE1',c=>3,a=>2,b=>-3,d=>0,f=>0} ea100000 ea100000 ea100000 55820000 ea100000 ea100000 55820000 ea100000 55820000 - {e=>'UE6',c=>-2,a=>7,b=>-2,d=>7,f=>1} b7ef0000 b7ef0000 b7ef0000 fb7c4000 b7ef0000 b7ef0000 fb7c4000 b7ef0000 fb7c4000 - {e=>'UE2',c=>-2,a=>5,b=>2,d=>6,f=>5} 95ad0200 95ad0200 95ad0200 ab654000 95ad0200 95ad0200 ab654000 95ad0200 ab654000 - {e=>'UE1',c=>2,a=>1,b=>-1,d=>4,f=>6} b9180300 b9180300 b9180300 3d438000 b9180300 b9180300 3d438000 b9180300 3d438000 - {e=>'UE1',c=>3,a=>1,b=>-3,d=>3,f=>4} e9160200 e9160200 e9160200 35b30000 e9160200 e9160200 35b30000 e9160200 35b30000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>'UE6',c=>-2,a=>0,g=>0,b=>3,d=>6,f=>4} 986d020000000000 986d020000000000 986d020000000000 0f6d000000000000 986d020000000000 986d020000000000 0f6d000000000000 986d020000000000 0f6d000000000000 - {e=>'UE4',c=>2,a=>2,g=>2,b=>-4,d=>7,f=>3} a2ce010002000000 a2ce010002000000 a2ce010002000000 5178c00040000000 a2ce010002000000 a2ce010002000000 5178c00040000000 a2ce010002000000 5178c00040000000 - {e=>'UE2',c=>-3,a=>4,g=>6,b=>3,d=>6,f=>7} 5cad030006000000 5cad030006000000 5cad030006000000 8ee5c000c0000000 5cad030006000000 5cad030006000000 8ee5c000c0000000 5cad030006000000 8ee5c000c0000000 - {e=>'UE6',c=>-1,a=>7,g=>6,b=>2,d=>7,f=>6} d76f030006000000 d76f030006000000 d76f030006000000 ebfd8000c0000000 d76f030006000000 d76f030006000000 ebfd8000c0000000 d76f030006000000 ebfd8000c0000000 - {e=>'UE3',c=>-2,a=>7,g=>2,b=>-3,d=>4,f=>7} afb9030002000000 afb9030002000000 afb9030002000000 f747c00040000000 afb9030002000000 afb9030002000000 f747c00040000000 afb9030002000000 f747c00040000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>'UE2',a=>3,d=>3,c=>1,h=>2,b=>-1,g=>0,f=>2} 7b26010010000000 7b26010010000000 7b26010010000000 7cb4800008000000 7b26010010000000 7b26010010000000 7cb4800008000000 7b26010010000000 7cb4800008000000 - {e=>'UE5',a=>4,d=>6,c=>1,h=>-4,b=>-1,g=>5,f=>4} 7c5c020025000000 7c5c020025000000 7c5c020025000000 9ceb0000b0000000 7c5c020025000000 7c5c020025000000 9ceb0000b0000000 7c5c020025000000 9ceb0000b0000000 - {e=>'UE0',a=>7,d=>2,c=>3,h=>1,b=>-3,g=>2,f=>1} ef8400000a000000 ef8400000a000000 ef8400000a000000 f5a0400044000000 ef8400000a000000 ef8400000a000000 f5a0400044000000 ef8400000a000000 f5a0400044000000 - {e=>'UE0',a=>1,d=>7,c=>-3,h=>-1,b=>1,g=>3,f=>4} 490f02003b000000 490f02003b000000 490f02003b000000 26f100007c000000 490f02003b000000 490f02003b000000 26f100007c000000 490f02003b000000 26f100007c000000 - {e=>'UE1',a=>5,d=>3,c=>3,h=>2,b=>-4,g=>2,f=>5} e596020012000000 e596020012000000 e596020012000000 b1b3400048000000 e596020012000000 e596020012000000 b1b3400048000000 e596020012000000 b1b3400048000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; }; - {e=>'UE2',a=>0,d=>0,c=>-4,h=>1,b=>1,g=>0,f=>7,i=>'SEM2'} 08a1030088010000 08a1030088010000 08a1030088010000 0605c00007000000 08a1030088010000 08a1030088010000 0605c00007000000 08a1030088010000 0605c00007000000 - {e=>'UE1',a=>1,d=>7,c=>-1,h=>3,b=>2,g=>2,f=>5,i=>'SEM1'} d19f0200da010000 d19f0200da010000 d19f0200da010000 2bf340004f800000 d19f0200da010000 d19f0200da010000 2bf340004f800000 d19f0200da010000 2bf340004f800000 - {e=>'UE7',a=>7,d=>3,c=>-4,h=>3,b=>-3,g=>0,f=>5,i=>'SE0'} 2ff7020018000000 2ff7020018000000 2ff7020018000000 f63f40000c000000 2ff7020018000000 2ff7020018000000 f63f40000c000000 2ff7020018000000 f63f40000c000000 - {e=>'UE6',a=>6,d=>1,c=>3,h=>0,b=>1,g=>5,f=>5,i=>'SEM2'} cee2020085010000 cee2020085010000 cee2020085010000 c59d4000a3000000 cee2020085010000 cee2020085010000 c59d4000a3000000 cee2020085010000 c59d4000a3000000 - {e=>'UE6',a=>5,d=>4,c=>3,h=>1,b=>3,g=>2,f=>4,i=>'SE1'} dd6802004a000000 dd6802004a000000 dd6802004a000000 adcd000044800000 dd6802004a000000 dd6802004a000000 adcd000044800000 dd6802004a000000 adcd000044800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; }; - {e=>'UE4',a=>6,d=>2,j=>117,c=>2,h=>-4,b=>2,g=>0,f=>5,i=>'SE2'} 96c40200a0007500 96c40200a0007500 96c40200a0007500 c929400011007500 96c40200a0007500 96c40200a0007500 c929400011007500 96c40200a0007500 c929400011007500 - {e=>'UE1',a=>3,d=>4,j=>126,c=>3,h=>0,b=>-4,g=>2,f=>5,i=>'SEM3'} e398020042017e00 e398020042017e00 e398020042017e00 71c3400042807e00 e398020042017e00 e398020042017e00 71c3400042807e00 e398020042017e00 71c3400042807e00 - {e=>'UE4',a=>4,d=>7,j=>-36,c=>1,h=>-4,b=>-3,g=>7,f=>2,i=>'SEM2'} 6c4e0100a701dc00 6c4e0100a701dc00 6c4e0100a701dc00 94f88000f300dc00 6c4e0100a701dc00 6c4e0100a701dc00 94f88000f300dc00 6c4e0100a701dc00 94f88000f300dc00 - {e=>'UE5',a=>1,d=>1,j=>61,c=>-3,h=>-3,b=>-4,g=>4,f=>6,i=>'SEM1'} 61530300ec013d00 61530300ec013d00 61530300ec013d00 329b800097803d00 61530300ec013d00 61530300ec013d00 329b800097803d00 61530300ec013d00 329b800097803d00 - {e=>'UE6',a=>3,d=>1,j=>-91,c=>1,h=>-1,b=>-1,g=>6,f=>1,i=>'SEM4'} 7be200003e01a500 7be200003e01a500 7be200003e01a500 7c9c4000de00a500 7be200003e01a500 7be200003e01a500 7c9c4000de00a500 7be200003e01a500 7c9c4000de00a500 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; }; - {e=>'UE4',a=>1,d=>0,j=>-29,c=>-3,k=>3,h=>3,b=>-1,g=>1,f=>7,i=>'SE2'} 79c103009900e303 79c103009900e303 79c103009900e303 3e89c0002d00e360 79c103009900e303 79c103009900e303 3e89c0002d00e360 79c103009900e303 3e89c0002d00e360 - {e=>'UE7',a=>0,d=>6,j=>9,c=>1,k=>7,h=>2,b=>-4,g=>3,f=>4,i=>'SEM4'} 607c020013010907 607c020013010907 607c020013010907 10ef00006a0009e0 607c020013010907 607c020013010907 10ef00006a0009e0 607c020013010907 10ef00006a0009e0 - {e=>'UE2',a=>0,d=>2,j=>101,c=>2,k=>1,h=>-4,b=>1,g=>7,f=>1,i=>'SEM2'} 88a40000a7016501 88a40000a7016501 88a40000a7016501 05244000f3006520 88a40000a7016501 88a40000a7016501 05244000f3006520 88a40000a7016501 05244000f3006520 - {e=>'UE3',a=>0,d=>6,j=>74,c=>1,k=>1,h=>-1,b=>1,g=>4,f=>2,i=>'SE0'} 483c01003c004a01 483c01003c004a01 483c01003c004a01 04e680009c004a20 483c01003c004a01 483c01003c004a01 04e680009c004a20 483c01003c004a01 04e680009c004a20 - {e=>'UE1',a=>4,d=>7,j=>-119,c=>-3,k=>4,h=>1,b=>2,g=>7,f=>4,i=>'SEM4'} 541f02000f018904 541f02000f018904 541f02000f018904 8af30000e6008980 541f02000f018904 541f02000f018904 8af30000e6008980 541f02000f018904 8af30000e6008980 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>'UE0',a=>5,d=>7,j=>-122,l=>-3,c=>-4,k=>2,h=>1,b=>-1,g=>4,f=>3,i=>'SEM3'} 3d8f01004c01862a 3d8f01004c01862a 3d8f01004c01862a be70c00086808654 3d8f01004c01862a 3d8f01004c01862a be70c00086808654 3d8f01004c01862a be70c00086808654 - {e=>'UE0',a=>1,d=>3,j=>-34,l=>-4,c=>-3,k=>6,h=>-3,b=>-2,g=>1,f=>7,i=>'SEM1'} 71870300e901de26 71870300e901de26 71870300e901de26 3ab1c0003780ded0 71870300e901de26 71870300e901de26 3ab1c0003780ded0 71870300e901de26 3ab1c0003780ded0 - {e=>'UE1',a=>1,d=>0,j=>86,l=>-4,c=>-3,k=>3,h=>2,b=>1,g=>0,f=>0,i=>'SEM3'} 4911000050015623 4911000050015623 4911000050015623 268200000a805670 4911000050015623 4911000050015623 268200000a805670 4911000050015623 268200000a805670 - {e=>'UE1',a=>2,d=>1,j=>-57,l=>-1,c=>3,k=>5,h=>1,b=>-2,g=>7,f=>0,i=>'SE3'} f2120000cf00c73d f2120000cf00c73d f2120000cf00c73d 59920000e580c7bc f2120000cf00c73d f2120000cf00c73d 59920000e580c7bc f2120000cf00c73d 59920000e580c7bc - {e=>'UE7',a=>3,d=>1,j=>111,l=>-4,c=>-4,k=>6,h=>-3,b=>-2,g=>4,f=>3,i=>'SEM2'} 33f30100ac016f26 33f30100ac016f26 33f30100ac016f26 7a1ec00097006fd0 33f30100ac016f26 33f30100ac016f26 7a1ec00097006fd0 33f30100ac016f26 7a1ec00097006fd0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>'UE3',a=>5,m=>4,d=>5,j=>-36,l=>2,c=>0,k=>4,h=>0,b=>-3,g=>5,f=>0,i=>'SEM1'} 2d3a0000c501dc1404000000 2d3a0000c501dc1404000000 2d3a0000c501dc1404000000 b4560000a380dc8880000000 2d3a0000c501dc1404000000 2d3a0000c501dc1404000000 b4560000a380dc8880000000 2d3a0000c501dc1404000000 b4560000a380dc8880000000 - {e=>'UE7',a=>5,m=>0,d=>6,j=>-48,l=>3,c=>1,k=>3,h=>2,b=>-3,g=>2,f=>0,i=>'SE1'} 6d7c00005200d01b00000000 6d7c00005200d01b00000000 6d7c00005200d01b00000000 b4ee00004880d06c00000000 6d7c00005200d01b00000000 6d7c00005200d01b00000000 b4ee00004880d06c00000000 6d7c00005200d01b00000000 b4ee00004880d06c00000000 - {e=>'UE5',a=>6,m=>5,d=>5,j=>-112,l=>1,c=>-4,k=>5,h=>0,b=>2,g=>1,f=>3,i=>'SEM2'} 16db01008101900d05000000 16db01008101900d05000000 16db01008101900d05000000 ca5ac000230090a4a0000000 16db01008101900d05000000 16db01008101900d05000000 ca5ac000230090a4a0000000 16db01008101900d05000000 ca5ac000230090a4a0000000 - {e=>'UE3',a=>5,m=>5,d=>5,j=>-44,l=>-2,c=>-3,k=>0,h=>1,b=>-1,g=>4,f=>3,i=>'SE0'} 7dbb01000c00d43005000000 7dbb01000c00d43005000000 7dbb01000c00d43005000000 bed6c0008400d418a0000000 7dbb01000c00d43005000000 7dbb01000c00d43005000000 bed6c0008400d418a0000000 7dbb01000c00d43005000000 bed6c0008400d418a0000000 - {e=>'UE1',a=>5,m=>1,d=>7,j=>-106,l=>0,c=>-2,k=>7,h=>-4,b=>2,g=>0,f=>0,i=>'SE2'} 951f0000a000960701000000 951f0000a000960701000000 951f0000a000960701000000 ab720000110096e020000000 951f0000a000960701000000 951f0000a000960701000000 ab720000110096e020000000 951f0000a000960701000000 ab720000110096e020000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>'UE2',n=>245,a=>6,m=>3,d=>5,j=>21,l=>-3,c=>3,k=>3,h=>-2,b=>1,g=>3,f=>4,i=>'SE2'} ce2a0200b300152b03f50000 ce2a0200b300152b03f50000 ce2a0200b300152b03f50000 c5d500007900157460f50000 ce2a0200b300152b03f50000 ce2a0200b300152b03f50000 c5d500007900157460f50000 ce2a0200b300152b03f50000 c5d500007900157460f50000 - {e=>'UE4',n=>39,a=>4,m=>1,d=>1,j=>-106,l=>0,c=>-3,k=>5,h=>2,b=>1,g=>6,f=>2,i=>'SEM1'} 4c430100d601960501270000 4c430100d601960501270000 4c430100d601960501270000 86988000cb8096a020270000 4c430100d601960501270000 4c430100d601960501270000 86988000cb8096a020270000 4c430100d601960501270000 86988000cb8096a020270000 - {e=>'UE2',n=>222,a=>0,m=>0,d=>4,j=>23,l=>0,c=>-2,k=>3,h=>3,b=>-1,g=>2,f=>1,i=>'SE1'} b8a900005a00170300de0000 b8a900005a00170300de0000 b8a900005a00170300de0000 1f4440004c80176000de0000 b8a900005a00170300de0000 b8a900005a00170300de0000 1f4440004c80176000de0000 b8a900005a00170300de0000 1f4440004c80176000de0000 - {e=>'UE1',n=>14,a=>6,m=>6,d=>0,j=>-82,l=>3,c=>-4,k=>6,h=>-2,b=>-4,g=>4,f=>7,i=>'SEM4'} 269103003401ae1e060e0000 269103003401ae1e060e0000 269103003401ae1e060e0000 d203c0009a00aeccc00e0000 269103003401ae1e060e0000 269103003401ae1e060e0000 d203c0009a00aeccc00e0000 269103003401ae1e060e0000 d203c0009a00aeccc00e0000 - {e=>'UE5',n=>1,a=>2,m=>5,d=>2,j=>-12,l=>1,c=>-3,k=>4,h=>-3,b=>1,g=>0,f=>7,i=>'SEM3'} 4ad503006801f40c05010000 4ad503006801f40c05010000 4ad503006801f40c05010000 46abc0001680f484a0010000 4ad503006801f40c05010000 4ad503006801f40c05010000 46abc0001680f484a0010000 4ad503006801f40c05010000 46abc0001680f484a0010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; }; - {a=>13,b=>3} 0d030000 0d030000 0d030000 0d600000 0d030000 0d030000 0d600000 0d030000 0d600000 - {a=>-11,b=>1} f5010000 f5010000 f5010000 f5200000 f5010000 f5010000 f5200000 f5010000 f5200000 - {a=>5,b=>2} 05020000 05020000 05020000 05400000 05020000 05020000 05400000 05020000 05400000 - {a=>-65,b=>1} bf010000 bf010000 bf010000 bf200000 bf010000 bf010000 bf200000 bf010000 bf200000 - {a=>51,b=>3} 33030000 33030000 33030000 33600000 33030000 33030000 33600000 33030000 33600000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; }; - {c=>3,a=>-27,b=>4} e51c0000 e51c0000 e51c0000 e58c0000 e51c0000 e51c0000 e58c0000 e51c0000 e58c0000 - {c=>-2,a=>123,b=>4} 7b340000 7b340000 7b340000 7b980000 7b340000 7b340000 7b980000 7b340000 7b980000 - {c=>-4,a=>-38,b=>5} da250000 da250000 da250000 dab00000 da250000 da250000 dab00000 da250000 dab00000 - {c=>-3,a=>4,b=>0} 04280000 04280000 04280000 04140000 04280000 04280000 04140000 04280000 04140000 - {c=>0,a=>-104,b=>5} 98050000 98050000 98050000 98a00000 98050000 98050000 98a00000 98050000 98a00000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>-116,b=>0,d=>-2} 8cb00100 8cb00100 8cb00100 8c1b0000 8cb00100 8cb00100 8c1b0000 8cb00100 8c1b0000 - {c=>-3,a=>-33,b=>2,d=>-3} df6a0100 df6a0100 df6a0100 df568000 df6a0100 df6a0100 df568000 df6a0100 df568000 - {c=>-2,a=>-99,b=>7,d=>2} 9db70000 9db70000 9db70000 9df90000 9db70000 9db70000 9df90000 9db70000 9df90000 - {c=>-4,a=>103,b=>5,d=>-3} 67650100 67650100 67650100 67b28000 67650100 67650100 67b28000 67650100 67b28000 - {c=>1,a=>111,b=>5,d=>0} 6f0d0000 6f0d0000 6f0d0000 6fa40000 6f0d0000 6f0d0000 6fa40000 6f0d0000 6fa40000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>0,a=>17,b=>1,d=>-4} 11010300 11010300 11010300 11221000 11010300 11010300 11221000 11010300 11221000 - {e=>4,c=>-2,a=>-99,b=>6,d=>-1} 9df60900 9df60900 9df60900 9ddbc000 9df60900 9df60900 9ddbc000 9df60900 9ddbc000 - {e=>3,c=>-1,a=>-98,b=>4,d=>-1} 9efc0700 9efc0700 9efc0700 9e9fb000 9efc0700 9efc0700 9e9fb000 9efc0700 9e9fb000 - {e=>1,c=>-2,a=>-9,b=>2,d=>3} f7f20200 f7f20200 f7f20200 f7599000 f7f20200 f7f20200 f7599000 f7f20200 f7599000 - {e=>5,c=>0,a=>-8,b=>0,d=>0} f8000a00 f8000a00 f8000a00 f8005000 f8000a00 f8000a00 f8005000 f8000a00 f8005000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>5,c=>-1,a=>-128,b=>0,d=>2,f=>'UE2'} 80b82a00 80b82a00 80b82a00 801d5400 80b82a00 80b82a00 801d5400 80b82a00 801d5400 - {e=>1,c=>-1,a=>19,b=>6,d=>3,f=>'UE0'} 13fe0200 13fe0200 13fe0200 13dd9000 13fe0200 13fe0200 13dd9000 13fe0200 13dd9000 - {e=>3,c=>1,a=>-34,b=>1,d=>-3,f=>'UE2'} de492700 de492700 de492700 de26b400 de492700 de492700 de26b400 de492700 de26b400 - {e=>3,c=>3,a=>-85,b=>7,d=>1,f=>'UE4'} ab5f4600 ab5f4600 ab5f4600 abecb800 ab5f4600 ab5f4600 abecb800 ab5f4600 abecb800 - {e=>3,c=>-3,a=>14,b=>3,d=>1,f=>'UE7'} 0e6b7600 0e6b7600 0e6b7600 0e74be00 0e6b7600 0e6b7600 0e74be00 0e6b7600 0e74be00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>3,c=>-2,a=>-81,g=>5,b=>0,d=>3,f=>'UE1'} aff09602 aff09602 aff09602 af19b340 aff09602 aff09602 af19b340 aff09602 af19b340 - {e=>5,c=>3,a=>-48,g=>4,b=>5,d=>-3,f=>'UE0'} d05d0b02 d05d0b02 d05d0b02 d0aed100 d05d0b02 d05d0b02 d0aed100 d05d0b02 d0aed100 - {e=>6,c=>1,a=>72,g=>3,b=>3,d=>-3,f=>'UE4'} 484bcd01 484bcd01 484bcd01 4866e8c0 484bcd01 484bcd01 4866e8c0 484bcd01 4866e8c0 - {e=>5,c=>-4,a=>-73,g=>6,b=>4,d=>-1,f=>'UE3'} b7e43b03 b7e43b03 b7e43b03 b793d780 b7e43b03 b7e43b03 b793d780 b7e43b03 b793d780 - {e=>4,c=>-4,a=>33,g=>5,b=>5,d=>-3,f=>'UE6'} 2165e902 2165e902 2165e902 21b2cd40 2165e902 2165e902 21b2cd40 2165e902 21b2cd40 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>4,c=>2,a=>15,g=>5,b=>7,d=>1,f=>'UE1'} 0f579802 0f579802 0f579802 0fe8c340 0f579802 0f579802 0fe8c340 0f579802 0fe8c340 - {e=>6,c=>-2,a=>117,g=>0,b=>0,d=>-2,f=>'UE3'} 75b03d00 75b03d00 75b03d00 751b6600 75b03d00 75b03d00 751b6600 75b03d00 751b6600 - {e=>3,c=>2,a=>70,g=>7,b=>0,d=>2,f=>'UE0'} 46908603 46908603 46908603 460931c0 46908603 46908603 460931c0 46908603 460931c0 - {e=>7,c=>-3,a=>95,g=>4,b=>2,d=>-2,f=>'UE7'} 5faa7f02 5faa7f02 5faa7f02 5f577f00 5faa7f02 5faa7f02 5f577f00 5faa7f02 5f577f00 - {e=>3,c=>0,a=>42,g=>4,b=>7,d=>2,f=>'UE4'} 2a874602 2a874602 2a874602 2ae13900 2a874602 2a874602 2ae13900 2a874602 2ae13900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>-95,d=>0,c=>-2,h=>7,b=>4,g=>4,f=>'UE1'} a1341a0207000000 a1341a0207000000 a1341a0207000000 a1985300e0000000 a1341a0207000000 a1341a0207000000 a1985300e0000000 a1341a0207000000 a1985300e0000000 - {e=>0,a=>79,d=>3,c=>3,h=>4,b=>2,g=>0,f=>'UE4'} 4fda400004000000 4fda400004000000 4fda400004000000 4f4d880080000000 4fda400004000000 4fda400004000000 4f4d880080000000 4fda400004000000 4f4d880080000000 - {e=>4,a=>23,d=>0,c=>3,h=>5,b=>5,g=>0,f=>'UE4'} 171d480005000000 171d480005000000 171d480005000000 17ac4800a0000000 171d480005000000 171d480005000000 17ac4800a0000000 171d480005000000 17ac4800a0000000 - {e=>5,a=>-48,d=>2,c=>1,h=>4,b=>4,g=>4,f=>'UE1'} d08c1a0204000000 d08c1a0204000000 d08c1a0204000000 d085530080000000 d08c1a0204000000 d08c1a0204000000 d085530080000000 d08c1a0204000000 d085530080000000 - {e=>1,a=>-57,d=>3,c=>1,h=>5,b=>0,g=>0,f=>'UE3'} c7c8320005000000 c7c8320005000000 c7c8320005000000 c7059600a0000000 c7c8320005000000 c7c8320005000000 c7059600a0000000 c7c8320005000000 c7059600a0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>5,a=>-24,d=>-4,c=>3,h=>2,b=>2,g=>3,f=>'UE2',i=>-2} e81aab0132000000 e81aab0132000000 e81aab0132000000 e84e54c058000000 e81aab0132000000 e81aab0132000000 e84e54c058000000 e81aab0132000000 e84e54c058000000 - {e=>7,a=>25,d=>0,c=>3,h=>3,b=>2,g=>3,f=>'UE0',i=>0} 191a8e0103000000 191a8e0103000000 191a8e0103000000 194c70c060000000 191a8e0103000000 191a8e0103000000 194c70c060000000 191a8e0103000000 194c70c060000000 - {e=>3,a=>31,d=>2,c=>-1,h=>1,b=>1,g=>4,f=>'UE5',i=>1} 1fb9560209000000 1fb9560209000000 1fb9560209000000 1f3d3b0024000000 1fb9560209000000 1fb9560209000000 1f3d3b0024000000 1fb9560209000000 1f3d3b0024000000 - {e=>4,a=>21,d=>-2,c=>1,h=>4,b=>6,g=>6,f=>'UE4',i=>-2} 158e490334000000 158e490334000000 158e490334000000 15c7498098000000 158e490334000000 158e490334000000 15c7498098000000 158e490334000000 15c7498098000000 - {e=>6,a=>106,d=>-1,c=>1,h=>0,b=>0,g=>4,f=>'UE5',i=>-2} 6ac85d0230000000 6ac85d0230000000 6ac85d0230000000 6a07eb0018000000 6ac85d0230000000 6ac85d0230000000 6a07eb0018000000 6ac85d0230000000 6a07eb0018000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>-92,d=>-4,j=>'SEM4',c=>1,h=>0,b=>7,g=>4,f=>'UE4',i=>0} a40f4b0200010000 a40f4b0200010000 a40f4b0200010000 a4e6590002000000 a40f4b0200010000 a40f4b0200010000 a4e6590002000000 a40f4b0200010000 a4e6590002000000 - {e=>6,a=>89,d=>1,j=>'SEM4',c=>0,h=>5,b=>5,g=>1,f=>'UE7',i=>2} 5945fc0015010000 5945fc0015010000 5945fc0015010000 59a0ee40aa000000 5945fc0015010000 5945fc0015010000 59a0ee40aa000000 5945fc0015010000 59a0ee40aa000000 - {e=>2,a=>15,d=>0,j=>'SEM2',c=>1,h=>1,b=>4,g=>3,f=>'UE7',i=>0} 0f0cf40181010000 0f0cf40181010000 0f0cf40181010000 0f842ec023000000 0f0cf40181010000 0f0cf40181010000 0f842ec023000000 0f0cf40181010000 0f842ec023000000 - {e=>3,a=>-2,d=>3,j=>'SEM2',c=>1,h=>1,b=>3,g=>4,f=>'UE7',i=>1} fecb760289010000 fecb760289010000 fecb760289010000 fe65bf0027000000 fecb760289010000 fecb760289010000 fe65bf0027000000 fecb760289010000 fe65bf0027000000 - {e=>5,a=>113,d=>0,j=>'SE2',c=>3,h=>5,b=>4,g=>5,f=>'UE2',i=>3} 711caa029d000000 711caa029d000000 711caa029d000000 718c5540ad000000 711caa029d000000 711caa029d000000 718c5540ad000000 711caa029d000000 718c5540ad000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>-108,d=>-2,j=>'SE0',c=>3,k=>33,h=>1,b=>5,g=>1,f=>'UE4',i=>-2} 949dc90031002100 949dc90031002100 949dc90031002100 94af484038002100 949dc90031002100 949dc90031002100 94af484038002100 949dc90031002100 94af484038002100 - {e=>5,a=>-119,d=>-4,j=>'SE1',c=>-2,k=>-4,h=>2,b=>0,g=>3,f=>'UE2',i=>-4} 8930ab016200fc00 8930ab016200fc00 8930ab016200fc00 891a54c05080fc00 8930ab016200fc00 8930ab016200fc00 891a54c05080fc00 8930ab016200fc00 891a54c05080fc00 - {e=>7,a=>-38,d=>-4,j=>'SEM1',c=>1,k=>-5,h=>1,b=>7,g=>7,f=>'UE2',i=>1} da0faf03c901fb00 da0faf03c901fb00 da0faf03c901fb00 dae675c02780fb00 da0faf03c901fb00 da0faf03c901fb00 dae675c02780fb00 da0faf03c901fb00 dae675c02780fb00 - {e=>4,a=>-11,d=>0,j=>'SEM3',c=>3,k=>-84,h=>3,b=>6,g=>3,f=>'UE3',i=>2} f51eb8015301ac00 f51eb8015301ac00 f51eb8015301ac00 f5cc46c06a80ac00 f51eb8015301ac00 f51eb8015301ac00 f5cc46c06a80ac00 f51eb8015301ac00 f5cc46c06a80ac00 - {e=>0,a=>27,d=>2,j=>'SE2',c=>1,k=>-54,h=>0,b=>4,g=>1,f=>'UE4',i=>3} 1b8cc0009800ca00 1b8cc0009800ca00 1b8cc0009800ca00 1b8508400d00ca00 1b8cc0009800ca00 1b8cc0009800ca00 1b8508400d00ca00 1b8cc0009800ca00 1b8508400d00ca00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>4,a=>-97,d=>3,j=>'SEM4',l=>0,c=>-2,k=>122,h=>3,b=>1,g=>1,f=>'UE3',i=>1} 9ff1b8000b017a00 9ff1b8000b017a00 9ff1b8000b017a00 9f39c64066007a00 9ff1b8000b017a00 9ff1b8000b017a00 9f39c64066007a00 9ff1b8000b017a00 9f39c64066007a00 - {e=>4,a=>-122,d=>3,j=>'SEM2',l=>1,c=>3,k=>50,h=>0,b=>4,g=>5,f=>'UE0',i=>-3} 86dc8802a8013201 86dc8802a8013201 86dc8802a8013201 868dc14017003220 86dc8802a8013201 86dc8802a8013201 868dc14017003220 86dc8802a8013201 868dc14017003220 - {e=>1,a=>-106,d=>0,j=>'SEM1',l=>1,c=>3,k=>-92,h=>5,b=>3,g=>7,f=>'UE1',i=>1} 961b9203cd01a401 961b9203cd01a401 961b9203cd01a401 966c13c0a780a420 961b9203cd01a401 961b9203cd01a401 966c13c0a780a420 961b9203cd01a401 966c13c0a780a420 - {e=>5,a=>-50,d=>0,j=>'SE1',l=>0,c=>-2,k=>62,h=>7,b=>3,g=>6,f=>'UE5',i=>0} ce335a0347003e00 ce335a0347003e00 ce335a0347003e00 ce785b80e0803e00 ce335a0347003e00 ce335a0347003e00 ce785b80e0803e00 ce335a0347003e00 ce785b80e0803e00 - {e=>5,a=>100,d=>0,j=>'SE3',l=>3,c=>-4,k=>67,h=>1,b=>1,g=>7,f=>'UE3',i=>1} 6421ba03c9004303 6421ba03c9004303 6421ba03c9004303 643057c025804360 6421ba03c9004303 6421ba03c9004303 643057c025804360 6421ba03c9004303 643057c025804360 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>18,m=>-4,d=>-2,j=>'SE0',l=>1,c=>-3,k=>-93,h=>5,b=>2,g=>6,f=>'UE1',i=>3} 12aa17031d00a321 12aa17031d00a321 12aa17031d00a321 12573380ac00a330 12aa17031d00a321 12aa17031d00a321 12573380ac00a330 12aa17031d00a321 12573380ac00a330 - {e=>3,a=>-79,m=>-4,d=>0,j=>'SEM1',l=>5,c=>3,k=>20,h=>2,b=>5,g=>5,f=>'UE2',i=>-3} b11da602ea011425 b11da602ea011425 b11da602ea011425 b1ac3540578014b0 b11da602ea011425 b11da602ea011425 b1ac3540578014b0 b11da602ea011425 b1ac3540578014b0 - {e=>1,a=>16,m=>-1,d=>2,j=>'SEM3',l=>5,c=>1,k=>116,h=>3,b=>7,g=>5,f=>'UE1',i=>-3} 108f92026b01743d 108f92026b01743d 108f92026b01743d 10e51340768074bc 108f92026b01743d 108f92026b01743d 10e51340768074bc 108f92026b01743d 10e51340768074bc - {e=>3,a=>33,m=>-2,d=>0,j=>'SE0',l=>4,c=>3,k=>98,h=>3,b=>1,g=>6,f=>'UE6',i=>0} 2119660303006234 2119660303006234 2119660303006234 212c3d8060006298 2119660303006234 2119660303006234 212c3d8060006298 2119660303006234 212c3d8060006298 - {e=>7,a=>-14,m=>-4,d=>-2,j=>'SE2',l=>7,c=>1,k=>-62,h=>0,b=>2,g=>0,f=>'UE2',i=>-1} f28a2f00b800c227 f28a2f00b800c227 f28a2f00b800c227 f24774001d00c2f0 f28a2f00b800c227 f28a2f00b800c227 f24774001d00c2f0 f28a2f00b800c227 f24774001d00c2f0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>2,n=>0,a=>-27,m=>-4,d=>-3,j=>'SEM3',l=>3,c=>3,k=>23,h=>3,b=>6,g=>7,f=>'UE4',i=>-3} e55ec5036b01172300000000 e55ec5036b01172300000000 e55ec5036b01172300000000 e5cea9c07680177000000000 e55ec5036b01172300000000 e55ec5036b01172300000000 e5cea9c07680177000000000 e55ec5036b01172300000000 e5cea9c07680177000000000 - {e=>4,n=>7,a=>-105,m=>-4,d=>-4,j=>'SE0',l=>6,c=>2,k=>99,h=>3,b=>1,g=>6,f=>'UE0',i=>2} 971109031300632607000000 971109031300632607000000 971109031300632607000000 972a4180680063d0e0000000 971109031300632607000000 971109031300632607000000 972a4180680063d0e0000000 971109031300632607000000 972a4180680063d0e0000000 - {e=>4,n=>4,a=>96,m=>-3,d=>-3,j=>'SEM2',l=>4,c=>-1,k=>7,h=>7,b=>3,g=>5,f=>'UE3',i=>1} 607bb9028f01072c04000000 607bb9028f01072c04000000 607bb9028f01072c04000000 607ec740e700079480000000 607bb9028f01072c04000000 607bb9028f01072c04000000 607ec740e700079480000000 607bb9028f01072c04000000 607ec740e700079480000000 - {e=>0,n=>4,a=>-116,m=>-1,d=>-4,j=>'SE1',l=>1,c=>0,k=>-79,h=>4,b=>7,g=>6,f=>'UE4',i=>-2} 8c0741037400b13904000000 8c0741037400b13904000000 8c0741037400b13904000000 8ce209809880b13c80000000 8c0741037400b13904000000 8c0741037400b13904000000 8ce209809880b13c80000000 8c0741037400b13904000000 8ce209809880b13c80000000 - {e=>3,n=>0,a=>75,m=>0,d=>1,j=>'SEM4',l=>3,c=>-1,k=>-22,h=>4,b=>7,g=>7,f=>'UE1',i=>-2} 4b7f96033401ea0300000000 4b7f96033401ea0300000000 4b7f96033401ea0300000000 4bfcb3c09a00ea6000000000 4b7f96033401ea0300000000 4b7f96033401ea0300000000 4bfcb3c09a00ea6000000000 4b7f96033401ea0300000000 4bfcb3c09a00ea6000000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>0,a=>-125,m=>1,d=>-1,j=>'SE1',l=>4,c=>3,k=>75,h=>2,b=>4,g=>2,f=>'UE4',o=>207,i=>1} 83dc4f014a004b0c00cf0000 83dc4f014a004b0c00cf0000 83dc4f014a004b0c00cf0000 838ff88044804b8400cf0000 83dc4f014a004b0c00cf0000 83dc4f014a004b0c00cf0000 838ff88044804b8400cf0000 83dc4f014a004b0c00cf0000 838ff88044804b8400cf0000 - {e=>5,n=>5,a=>123,m=>2,d=>2,j=>'SEM4',l=>0,c=>-1,k=>-99,h=>5,b=>0,g=>6,f=>'UE2',o=>139,i=>0} 7bb82a0305019d10058b0000 7bb82a0305019d10058b0000 7bb82a0305019d10058b0000 7b1d5580a2009d08a08b0000 7bb82a0305019d10058b0000 7bb82a0305019d10058b0000 7b1d5580a2009d08a08b0000 7bb82a0305019d10058b0000 7b1d5580a2009d08a08b0000 - {e=>4,n=>3,a=>11,m=>-1,d=>-1,j=>'SE1',l=>7,c=>-1,k=>-112,h=>3,b=>4,g=>6,f=>'UE7',o=>200,i=>-2} 0bfc79037300903f03c80000 0bfc79037300903f03c80000 0bfc79037300903f03c80000 0b9fcf80788090fc60c80000 0bfc79037300903f03c80000 0bfc79037300903f03c80000 0b9fcf80788090fc60c80000 0bfc79037300903f03c80000 0b9fcf80788090fc60c80000 - {e=>3,n=>1,a=>-24,m=>1,d=>1,j=>'SE3',l=>4,c=>1,k=>14,h=>1,b=>5,g=>4,f=>'UE3',o=>226,i=>1} e84d3602c9000e0c01e20000 e84d3602c9000e0c01e20000 e84d3602c9000e0c01e20000 e8a4b70025800e8420e20000 e84d3602c9000e0c01e20000 e84d3602c9000e0c01e20000 e8a4b70025800e8420e20000 e84d3602c9000e0c01e20000 e8a4b70025800e8420e20000 - {e=>1,n=>3,a=>-40,m=>-4,d=>3,j=>'SE0',l=>2,c=>3,k=>-119,h=>2,b=>6,g=>1,f=>'UE3',o=>233,i=>0} d8deb2000200892203e90000 d8deb2000200892203e90000 d8deb2000200892203e90000 d8cd96404000895060e90000 d8deb2000200892203e90000 d8deb2000200892203e90000 d8cd96404000895060e90000 d8deb2000200892203e90000 d8cd96404000895060e90000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; }; - {a=>66,b=>2} 42000200 42000200 42000200 00424000 42000200 42000200 00424000 42000200 00424000 - {a=>47,b=>3} 2f000300 2f000300 2f000300 002f6000 2f000300 2f000300 002f6000 2f000300 002f6000 - {a=>34,b=>7} 22000700 22000700 22000700 0022e000 22000700 22000700 0022e000 22000700 0022e000 - {a=>-104,b=>2} 98ff0200 98ff0200 98ff0200 ff984000 98ff0200 98ff0200 ff984000 98ff0200 ff984000 - {a=>43,b=>2} 2b000200 2b000200 2b000200 002b4000 2b000200 2b000200 002b4000 2b000200 002b4000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; }; - {c=>1,a=>3,b=>3} 03000b00 03000b00 03000b00 00036400 03000b00 03000b00 00036400 03000b00 00036400 - {c=>-2,a=>65,b=>7} 41003700 41003700 41003700 0041f800 41003700 41003700 0041f800 41003700 0041f800 - {c=>-2,a=>41,b=>1} 29003100 29003100 29003100 00293800 29003100 29003100 00293800 29003100 00293800 - {c=>2,a=>111,b=>5} 6f001500 6f001500 6f001500 006fa800 6f001500 6f001500 006fa800 6f001500 006fa800 - {c=>-2,a=>11,b=>1} 0b003100 0b003100 0b003100 000b3800 0b003100 0b003100 000b3800 0b003100 000b3800 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>121,b=>6,d=>-2} 79008e01 79008e01 79008e01 0079c700 79008e01 79008e01 0079c700 79008e01 0079c700 - {c=>2,a=>-66,b=>7,d=>-3} beff5701 beff5701 beff5701 ffbeea80 beff5701 beff5701 ffbeea80 beff5701 ffbeea80 - {c=>3,a=>-37,b=>3,d=>1} dbff5b00 dbff5b00 dbff5b00 ffdb6c80 dbff5b00 dbff5b00 ffdb6c80 dbff5b00 ffdb6c80 - {c=>-1,a=>-22,b=>6,d=>-3} eaff7e01 eaff7e01 eaff7e01 ffeade80 eaff7e01 eaff7e01 ffeade80 eaff7e01 ffeade80 - {c=>-1,a=>-107,b=>1,d=>-2} 95ffb901 95ffb901 95ffb901 ff953f00 95ffb901 95ffb901 ff953f00 95ffb901 ff953f00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>3,a=>113,b=>7,d=>2} 71009f04 71009f04 71009f04 0071ed20 71009f04 71009f04 0071ed20 71009f04 0071ed20 - {e=>3,c=>2,a=>104,b=>0,d=>-2} 68009007 68009007 68009007 00680b30 68009007 68009007 00680b30 68009007 00680b30 - {e=>4,c=>-4,a=>91,b=>2,d=>-1} 5b00e209 5b00e209 5b00e209 005b53c0 5b00e209 5b00e209 005b53c0 5b00e209 005b53c0 - {e=>1,c=>0,a=>-67,b=>3,d=>0} bdff0302 bdff0302 bdff0302 ffbd6010 bdff0302 bdff0302 ffbd6010 bdff0302 ffbd6010 - {e=>6,c=>-2,a=>-125,b=>5,d=>-2} 83ffb50d 83ffb50d 83ffb50d ff83bb60 83ffb50d 83ffb50d ff83bb60 83ffb50d ff83bb60 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>-4,a=>63,b=>1,d=>-3,f=>'UE7'} 3f006179 3f006179 3f006179 003f32ce 3f006179 3f006179 003f32ce 3f006179 003f32ce - {e=>2,c=>2,a=>20,b=>1,d=>-4,f=>'UE1'} 14001115 14001115 14001115 00142a22 14001115 14001115 00142a22 14001115 00142a22 - {e=>6,c=>-3,a=>-51,b=>5,d=>1,f=>'UE1'} cdff6d1c cdff6d1c cdff6d1c ffcdb4e2 cdff6d1c cdff6d1c ffcdb4e2 cdff6d1c ffcdb4e2 - {e=>6,c=>0,a=>82,b=>2,d=>0,f=>'UE0'} 5200020c 5200020c 5200020c 00524060 5200020c 5200020c 00524060 5200020c 00524060 - {e=>5,c=>-4,a=>32,b=>4,d=>0,f=>'UE6'} 2000246a 2000246a 2000246a 0020905c 2000246a 2000246a 0020905c 2000246a 0020905c = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>0,c=>-4,a=>-51,g=>5,b=>5,d=>1,f=>'UE0'} cdff650005000000 cdff650005000000 cdff650005000000 ffcdb080a0000000 cdff650005000000 cdff650005000000 ffcdb080a0000000 cdff650005000000 ffcdb080a0000000 - {e=>3,c=>-3,a=>51,g=>5,b=>3,d=>1,f=>'UE7'} 33006b7605000000 33006b7605000000 33006b7605000000 003374bea0000000 33006b7605000000 33006b7605000000 003374bea0000000 33006b7605000000 003374bea0000000 - {e=>2,c=>-3,a=>-58,g=>5,b=>3,d=>3,f=>'UE3'} c6ffeb3405000000 c6ffeb3405000000 c6ffeb3405000000 ffc675a6a0000000 c6ffeb3405000000 c6ffeb3405000000 ffc675a6a0000000 c6ffeb3405000000 ffc675a6a0000000 - {e=>5,c=>1,a=>-74,g=>7,b=>3,d=>-2,f=>'UE3'} b6ff8b3b07000000 b6ff8b3b07000000 b6ff8b3b07000000 ffb66756e0000000 b6ff8b3b07000000 b6ff8b3b07000000 ffb66756e0000000 b6ff8b3b07000000 ffb66756e0000000 - {e=>3,c=>1,a=>90,g=>5,b=>1,d=>3,f=>'UE6'} 5a00c96605000000 5a00c96605000000 5a00c96605000000 005a25bca0000000 5a00c96605000000 5a00c96605000000 005a25bca0000000 5a00c96605000000 005a25bca0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>7,c=>-4,a=>20,g=>5,b=>1,d=>2,f=>'UE0'} 1400a10e05000000 1400a10e05000000 1400a10e05000000 00143170a0000000 1400a10e05000000 1400a10e05000000 00143170a0000000 1400a10e05000000 00143170a0000000 - {e=>3,c=>-3,a=>78,g=>5,b=>4,d=>2,f=>'UE5'} 4e00ac5605000000 4e00ac5605000000 4e00ac5605000000 004e953aa0000000 4e00ac5605000000 4e00ac5605000000 004e953aa0000000 4e00ac5605000000 004e953aa0000000 - {e=>6,c=>3,a=>-109,g=>0,b=>6,d=>2,f=>'UE4'} 93ff9e4c00000000 93ff9e4c00000000 93ff9e4c00000000 ff93cd6800000000 93ff9e4c00000000 93ff9e4c00000000 ff93cd6800000000 93ff9e4c00000000 ff93cd6800000000 - {e=>5,c=>0,a=>92,g=>2,b=>4,d=>1,f=>'UE1'} 5c00441a02000000 5c00441a02000000 5c00441a02000000 005c80d240000000 5c00441a02000000 5c00441a02000000 005c80d240000000 5c00441a02000000 005c80d240000000 - {e=>6,c=>2,a=>-108,g=>4,b=>7,d=>-1,f=>'UE4'} 94ffd74d04000000 94ffd74d04000000 94ffd74d04000000 ff94ebe880000000 94ffd74d04000000 94ffd74d04000000 ff94ebe880000000 94ffd74d04000000 ff94ebe880000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>8,d=>-1,c=>-4,h=>6,b=>1,g=>5,f=>'UE6'} 0800e1670500000006000000 0800e1670500000006000000 0800e1670500000006000000 000833bca0000000c0000000 0800e1670500000006000000 0800e1670500000006000000 000833bca0000000c0000000 0800e1670500000006000000 000833bca0000000c0000000 - {e=>4,a=>118,d=>1,c=>0,h=>2,b=>3,g=>1,f=>'UE6'} 760043680100000002000000 760043680100000002000000 760043680100000002000000 007660cc2000000040000000 760043680100000002000000 760043680100000002000000 007660cc2000000040000000 760043680100000002000000 007660cc2000000040000000 - {e=>7,a=>27,d=>-4,c=>2,h=>1,b=>4,g=>3,f=>'UE2'} 1b00142f0300000001000000 1b00142f0300000001000000 1b00142f0300000001000000 001b8a746000000020000000 1b00142f0300000001000000 1b00142f0300000001000000 001b8a746000000020000000 1b00142f0300000001000000 001b8a746000000020000000 - {e=>0,a=>91,d=>-2,c=>3,h=>3,b=>5,g=>1,f=>'UE6'} 5b009d610100000003000000 5b009d610100000003000000 5b009d610100000003000000 005baf0c2000000060000000 5b009d610100000003000000 5b009d610100000003000000 005baf0c2000000060000000 5b009d610100000003000000 005baf0c2000000060000000 - {e=>2,a=>70,d=>-3,c=>1,h=>6,b=>6,g=>5,f=>'UE4'} 46004e450500000006000000 46004e450500000006000000 46004e450500000006000000 0046c6a8a0000000c0000000 46004e450500000006000000 46004e450500000006000000 0046c6a8a0000000c0000000 46004e450500000006000000 0046c6a8a0000000c0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>-26,d=>1,c=>-1,h=>0,b=>3,g=>0,f=>'UE4',i=>-4} e6ff7b440000000020000000 e6ff7b440000000020000000 e6ff7b440000000020000000 ffe67ca80000000010000000 e6ff7b440000000020000000 e6ff7b440000000020000000 ffe67ca80000000010000000 e6ff7b440000000020000000 ffe67ca80000000010000000 - {e=>0,a=>70,d=>3,c=>0,h=>3,b=>0,g=>5,f=>'UE0',i=>1} 4600c000050000000b000000 4600c000050000000b000000 4600c000050000000b000000 00460180a000000064000000 4600c000050000000b000000 4600c000050000000b000000 00460180a000000064000000 4600c000050000000b000000 00460180a000000064000000 - {e=>1,a=>17,d=>3,c=>-4,h=>3,b=>1,g=>1,f=>'UE4',i=>-1} 1100e142010000003b000000 1100e142010000003b000000 1100e142010000003b000000 00113198200000007c000000 1100e142010000003b000000 1100e142010000003b000000 00113198200000007c000000 1100e142010000003b000000 00113198200000007c000000 - {e=>2,a=>39,d=>1,c=>1,h=>0,b=>1,g=>0,f=>'UE1',i=>0} 270049140000000000000000 270049140000000000000000 270049140000000000000000 002724a20000000000000000 270049140000000000000000 270049140000000000000000 002724a20000000000000000 270049140000000000000000 002724a20000000000000000 - {e=>6,a=>-65,d=>-2,c=>-1,h=>2,b=>6,g=>7,f=>'UE1',i=>-4} bfffbe1d0700000022000000 bfffbe1d0700000022000000 bfffbe1d0700000022000000 ffbfdf62e000000050000000 bfffbe1d0700000022000000 bfffbe1d0700000022000000 ffbfdf62e000000050000000 bfffbe1d0700000022000000 ffbfdf62e000000050000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>7,a=>118,d=>1,j=>'SE2',c=>1,h=>6,b=>3,g=>5,f=>'UE4',i=>2} 76004b4e0500000096000000 76004b4e0500000096000000 76004b4e0500000096000000 007664f8a0000000c9000000 76004b4e0500000096000000 76004b4e0500000096000000 007664f8a0000000c9000000 76004b4e0500000096000000 007664f8a0000000c9000000 - {e=>0,a=>32,d=>2,j=>'SE3',c=>2,h=>5,b=>3,g=>7,f=>'UE1',i=>-4} 2000931007000000e5000000 2000931007000000e5000000 2000931007000000e5000000 00206902e0000000b1800000 2000931007000000e5000000 2000931007000000e5000000 00206902e0000000b1800000 2000931007000000e5000000 00206902e0000000b1800000 - {e=>2,a=>88,d=>0,j=>'SEM3',c=>1,h=>5,b=>2,g=>2,f=>'UE0',i=>1} 58000a04020000004d010000 58000a04020000004d010000 58000a04020000004d010000 0058442040000000a6800000 58000a04020000004d010000 58000a04020000004d010000 0058442040000000a6800000 58000a04020000004d010000 0058442040000000a6800000 - {e=>7,a=>105,d=>-3,j=>'SE3',c=>0,h=>0,b=>3,g=>2,f=>'UE0',i=>-2} 6900430f02000000f0000000 6900430f02000000f0000000 6900430f02000000f0000000 006962f04000000019800000 6900430f02000000f0000000 6900430f02000000f0000000 006962f04000000019800000 6900430f02000000f0000000 006962f04000000019800000 - {e=>4,a=>-56,d=>-2,j=>'SE0',c=>-3,h=>4,b=>1,g=>4,f=>'UE4',i=>2} c8ffa9490400000014000000 c8ffa9490400000014000000 c8ffa9490400000014000000 ffc837488000000088000000 c8ffa9490400000014000000 c8ffa9490400000014000000 ffc837488000000088000000 c8ffa9490400000014000000 ffc837488000000088000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>0,a=>-104,d=>-4,j=>'SE0',c=>-2,k=>8,h=>1,b=>4,g=>6,f=>'UE1',i=>1} 98ff34110600000009000800 98ff34110600000009000800 98ff34110600000009000800 ff989a02c000000024000800 98ff34110600000009000800 98ff34110600000009000800 ff989a02c000000024000800 98ff34110600000009000800 ff989a02c000000024000800 - {e=>2,a=>-127,d=>-1,j=>'SE0',c=>0,k=>-15,h=>5,b=>7,g=>0,f=>'UE1',i=>-1} 81ffc715000000003d00f100 81ffc715000000003d00f100 81ffc715000000003d00f100 ff81e3a200000000bc00f100 81ffc715000000003d00f100 81ffc715000000003d00f100 ff81e3a200000000bc00f100 81ffc715000000003d00f100 ff81e3a200000000bc00f100 - {e=>0,a=>47,d=>2,j=>'SEM2',c=>-4,k=>-44,h=>0,b=>7,g=>0,f=>'UE3',i=>-3} 2f00a73000000000a801d400 2f00a73000000000a801d400 2f00a73000000000a801d400 002ff106000000001700d400 2f00a73000000000a801d400 2f00a73000000000a801d400 002ff106000000001700d400 2f00a73000000000a801d400 002ff106000000001700d400 - {e=>7,a=>116,d=>-1,j=>'SEM3',c=>-3,k=>-14,h=>3,b=>5,g=>1,f=>'UE7',i=>2} 7400ed7f010000005301f200 7400ed7f010000005301f200 7400ed7f010000005301f200 0074b7fe200000006a80f200 7400ed7f010000005301f200 7400ed7f010000005301f200 0074b7fe200000006a80f200 7400ed7f010000005301f200 0074b7fe200000006a80f200 - {e=>7,a=>45,d=>-1,j=>'SE3',c=>-4,k=>65,h=>3,b=>2,g=>6,f=>'UE0',i=>1} 2d00e20f06000000cb004100 2d00e20f06000000cb004100 2d00e20f06000000cb004100 002d53f0c000000065804100 2d00e20f06000000cb004100 2d00e20f06000000cb004100 002d53f0c000000065804100 2d00e20f06000000cb004100 002d53f0c000000065804100 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>1,a=>-38,d=>0,j=>'SEM4',l=>1,c=>3,k=>122,h=>0,b=>3,g=>6,f=>'UE0',i=>-4} daff1b020600000020017a01 daff1b020600000020017a01 daff1b020600000020017a01 ffda6c10c000000012007a20 daff1b020600000020017a01 daff1b020600000020017a01 ffda6c10c000000012007a20 daff1b020600000020017a01 ffda6c10c000000012007a20 - {e=>6,a=>-120,d=>-2,j=>'SE0',l=>0,c=>2,k=>-45,h=>4,b=>5,g=>6,f=>'UE7',i=>-1} 88ff957d060000003c00d300 88ff957d060000003c00d300 88ff957d060000003c00d300 ff88ab6ec00000009c00d300 88ff957d060000003c00d300 88ff957d060000003c00d300 ff88ab6ec00000009c00d300 88ff957d060000003c00d300 ff88ab6ec00000009c00d300 - {e=>2,a=>115,d=>3,j=>'SEM4',l=>2,c=>-1,k=>-24,h=>4,b=>3,g=>1,f=>'UE2',i=>-3} 7300fb24010000002c01e802 7300fb24010000002c01e802 7300fb24010000002c01e802 00737da4200000009600e840 7300fb24010000002c01e802 7300fb24010000002c01e802 00737da4200000009600e840 7300fb24010000002c01e802 00737da4200000009600e840 - {e=>2,a=>-120,d=>2,j=>'SEM3',l=>5,c=>-3,k=>-38,h=>3,b=>5,g=>5,f=>'UE0',i=>0} 88ffad04050000004301da05 88ffad04050000004301da05 88ffad04050000004301da05 ff88b520a00000006280daa0 88ffad04050000004301da05 88ffad04050000004301da05 ff88b520a00000006280daa0 88ffad04050000004301da05 ff88b520a00000006280daa0 - {e=>1,a=>-3,d=>3,j=>'SEM4',l=>6,c=>3,k=>-72,h=>4,b=>1,g=>3,f=>'UE4',i=>-3} fdffd942030000002c01b806 fdffd942030000002c01b806 fdffd942030000002c01b806 fffd2d98600000009600b8c0 fdffd942030000002c01b806 fdffd942030000002c01b806 fffd2d98600000009600b8c0 fdffd942030000002c01b806 fffd2d98600000009600b8c0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>-115,m=>-1,d=>1,j=>'SE1',l=>5,c=>3,k=>34,h=>4,b=>3,g=>5,f=>'UE3',i=>-1} 8dff5b30050000007c00223d 8dff5b30050000007c00223d 8dff5b30050000007c00223d ff8d6c86a00000009c8022bc 8dff5b30050000007c00223d 8dff5b30050000007c00223d ff8d6c86a00000009c8022bc 8dff5b30050000007c00223d ff8d6c86a00000009c8022bc - {e=>7,a=>101,m=>-3,d=>2,j=>'SE2',l=>7,c=>2,k=>33,h=>5,b=>4,g=>7,f=>'UE5',i=>1} 6500945e070000008d00212f 6500945e070000008d00212f 6500945e070000008d00212f 0065897ae0000000a50021f4 6500945e070000008d00212f 6500945e070000008d00212f 0065897ae0000000a50021f4 6500945e070000008d00212f 0065897ae0000000a50021f4 - {e=>4,a=>75,m=>-2,d=>-1,j=>'SE0',l=>6,c=>-4,k=>-42,h=>0,b=>5,g=>5,f=>'UE2',i=>-1} 4b00e529050000003800d636 4b00e529050000003800d636 4b00e529050000003800d636 004bb3c4a00000001c00d6d8 4b00e529050000003800d636 4b00e529050000003800d636 004bb3c4a00000001c00d6d8 4b00e529050000003800d636 004bb3c4a00000001c00d6d8 - {e=>4,a=>124,m=>-2,d=>1,j=>'SE0',l=>2,c=>2,k=>-11,h=>2,b=>2,g=>2,f=>'UE5',i=>-1} 7c005258020000003a00f532 7c005258020000003a00f532 7c005258020000003a00f532 007c48ca400000005c00f558 7c005258020000003a00f532 7c005258020000003a00f532 007c48ca400000005c00f558 7c005258020000003a00f532 007c48ca400000005c00f558 - {e=>1,a=>39,m=>-2,d=>2,j=>'SE1',l=>5,c=>0,k=>86,h=>1,b=>1,g=>0,f=>'UE6',i=>-4} 270081620000000061005635 270081620000000061005635 270081620000000061005635 0027211c00000000308056b8 270081620000000061005635 270081620000000061005635 0027211c00000000308056b8 270081620000000061005635 0027211c00000000308056b8 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>6,a=>-69,m=>-2,d=>1,j=>'SE2',l=>5,c=>3,k=>-27,h=>7,b=>0,g=>7,f=>'UE6',i=>-2} bbff586a07000000b700e53506000000 bbff586a07000000b700e53506000000 bbff586a07000000b700e53506000000 ffbb0cdce0000000f900e5b8c0000000 bbff586a07000000b700e53506000000 bbff586a07000000b700e53506000000 ffbb0cdce0000000f900e5b8c0000000 bbff586a07000000b700e53506000000 ffbb0cdce0000000f900e5b8c0000000 - {e=>5,n=>2,a=>107,m=>-3,d=>0,j=>'SE1',l=>1,c=>-4,k=>111,h=>1,b=>0,g=>4,f=>'UE6',i=>-2} 6b00206a0400000071006f2902000000 6b00206a0400000071006f2902000000 6b00206a0400000071006f2902000000 006b105c8000000038806f3440000000 6b00206a0400000071006f2902000000 6b00206a0400000071006f2902000000 006b105c8000000038806f3440000000 6b00206a0400000071006f2902000000 006b105c8000000038806f3440000000 - {e=>4,n=>7,a=>-128,m=>-2,d=>-1,j=>'SEM2',l=>7,c=>-4,k=>-5,h=>5,b=>5,g=>1,f=>'UE7',i=>-4} 80ffe57901000000a501fb3707000000 80ffe57901000000a501fb3707000000 80ffe57901000000a501fb3707000000 ff80b3ce20000000b300fbf8e0000000 80ffe57901000000a501fb3707000000 80ffe57901000000a501fb3707000000 ff80b3ce20000000b300fbf8e0000000 80ffe57901000000a501fb3707000000 ff80b3ce20000000b300fbf8e0000000 - {e=>4,n=>4,a=>-44,m=>0,d=>3,j=>'SEM3',l=>3,c=>1,k=>-62,h=>4,b=>0,g=>2,f=>'UE5',i=>-1} d4ffc858020000007c01c20304000000 d4ffc858020000007c01c20304000000 d4ffc858020000007c01c20304000000 ffd405ca400000009e80c26080000000 d4ffc858020000007c01c20304000000 d4ffc858020000007c01c20304000000 ffd405ca400000009e80c26080000000 d4ffc858020000007c01c20304000000 ffd405ca400000009e80c26080000000 - {e=>1,n=>3,a=>20,m=>0,d=>-3,j=>'SE0',l=>7,c=>3,k=>86,h=>1,b=>3,g=>2,f=>'UE2',i=>3} 14005b23020000001900560703000000 14005b23020000001900560703000000 14005b23020000001900560703000000 00146e94400000002c0056e060000000 14005b23020000001900560703000000 14005b23020000001900560703000000 00146e94400000002c0056e060000000 14005b23020000001900560703000000 00146e94400000002c0056e060000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>7,a=>-36,m=>-2,d=>-4,j=>'SEM1',l=>5,c=>-4,k=>-30,h=>6,b=>2,g=>7,f=>'UE1',o=>11,i=>-1} dcff221107000000fe01e235070b0000 dcff221107000000fe01e235070b0000 dcff221107000000fe01e235070b0000 ffdc5202e0000000df80e2b8e00b0000 dcff221107000000fe01e235070b0000 dcff221107000000fe01e235070b0000 ffdc5202e0000000df80e2b8e00b0000 dcff221107000000fe01e235070b0000 ffdc5202e0000000df80e2b8e00b0000 - {e=>1,n=>0,a=>47,m=>2,d=>-1,j=>'SE1',l=>6,c=>2,k=>19,h=>7,b=>5,g=>3,f=>'UE5',o=>117,i=>-1} 2f00d553030000007f00131600750000 2f00d553030000007f00131600750000 2f00d553030000007f00131600750000 002fab9a60000000fc8013c800750000 2f00d553030000007f00131600750000 2f00d553030000007f00131600750000 002fab9a60000000fc8013c800750000 2f00d553030000007f00131600750000 002fab9a60000000fc8013c800750000 - {e=>3,n=>4,a=>60,m=>-4,d=>0,j=>'SE0',l=>6,c=>-2,k=>48,h=>1,b=>2,g=>6,f=>'UE7',o=>42,i=>1} 3c0032760600000009003026042a0000 3c0032760600000009003026042a0000 3c0032760600000009003026042a0000 003c583ec0000000240030d0802a0000 3c0032760600000009003026042a0000 3c0032760600000009003026042a0000 003c583ec0000000240030d0802a0000 3c0032760600000009003026042a0000 003c583ec0000000240030d0802a0000 - {e=>1,n=>2,a=>116,m=>1,d=>-4,j=>'SEM2',l=>7,c=>3,k=>100,h=>0,b=>7,g=>2,f=>'UE3',o=>77,i=>-1} 74001f3302000000b801640f024d0000 74001f3302000000b801640f024d0000 74001f3302000000b801640f024d0000 0074ee16400000001f0064e4404d0000 74001f3302000000b801640f024d0000 74001f3302000000b801640f024d0000 0074ee16400000001f0064e4404d0000 74001f3302000000b801640f024d0000 0074ee16400000001f0064e4404d0000 - {e=>1,n=>7,a=>-98,m=>-3,d=>2,j=>'SEM4',l=>5,c=>0,k=>27,h=>7,b=>1,g=>1,f=>'UE2',o=>35,i=>-2} 9eff81220100000037011b2d07230000 9eff81220100000037011b2d07230000 9eff81220100000037011b2d07230000 ff9e211420000000fa001bb4e0230000 9eff81220100000037011b2d07230000 9eff81220100000037011b2d07230000 ff9e211420000000fa001bb4e0230000 9eff81220100000037011b2d07230000 ff9e211420000000fa001bb4e0230000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; }; - {a=>54,b=>7} 3600000007000000 3600000007000000 3600000007000000 00000036e0000000 3600000007000000 3600000007000000 00000036e0000000 3600000007000000 00000036e0000000 - {a=>-14,b=>1} f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 fffffff220000000 f2ffffff01000000 f2ffffff01000000 fffffff220000000 f2ffffff01000000 fffffff220000000 - {a=>8,b=>5} 0800000005000000 0800000005000000 0800000005000000 00000008a0000000 0800000005000000 0800000005000000 00000008a0000000 0800000005000000 00000008a0000000 - {a=>-128,b=>2} 80ffffff02000000 80ffffff02000000 80ffffff02000000 ffffff8040000000 80ffffff02000000 80ffffff02000000 ffffff8040000000 80ffffff02000000 ffffff8040000000 - {a=>89,b=>7} 5900000007000000 5900000007000000 5900000007000000 00000059e0000000 5900000007000000 5900000007000000 00000059e0000000 5900000007000000 00000059e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>71,b=>4} 4700000024000000 4700000024000000 4700000024000000 0000004790000000 4700000024000000 4700000024000000 0000004790000000 4700000024000000 0000004790000000 - {c=>-1,a=>22,b=>7} 160000003f000000 160000003f000000 160000003f000000 00000016fc000000 160000003f000000 160000003f000000 00000016fc000000 160000003f000000 00000016fc000000 - {c=>3,a=>6,b=>4} 060000001c000000 060000001c000000 060000001c000000 000000068c000000 060000001c000000 060000001c000000 000000068c000000 060000001c000000 000000068c000000 - {c=>0,a=>5,b=>7} 0500000007000000 0500000007000000 0500000007000000 00000005e0000000 0500000007000000 0500000007000000 00000005e0000000 0500000007000000 00000005e0000000 - {c=>-1,a=>71,b=>5} 470000003d000000 470000003d000000 470000003d000000 00000047bc000000 470000003d000000 470000003d000000 00000047bc000000 470000003d000000 00000047bc000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>-39,b=>5,d=>-4} d9ffffff2d010000 d9ffffff2d010000 d9ffffff2d010000 ffffffd9b6000000 d9ffffff2d010000 d9ffffff2d010000 ffffffd9b6000000 d9ffffff2d010000 ffffffd9b6000000 - {c=>1,a=>-63,b=>0,d=>-1} c1ffffffc8010000 c1ffffffc8010000 c1ffffffc8010000 ffffffc107800000 c1ffffffc8010000 c1ffffffc8010000 ffffffc107800000 c1ffffffc8010000 ffffffc107800000 - {c=>3,a=>-125,b=>4,d=>1} 83ffffff5c000000 83ffffff5c000000 83ffffff5c000000 ffffff838c800000 83ffffff5c000000 83ffffff5c000000 ffffff838c800000 83ffffff5c000000 ffffff838c800000 - {c=>-4,a=>-67,b=>6,d=>-1} bdffffffe6010000 bdffffffe6010000 bdffffffe6010000 ffffffbdd3800000 bdffffffe6010000 bdffffffe6010000 ffffffbdd3800000 bdffffffe6010000 ffffffbdd3800000 - {c=>3,a=>-19,b=>7,d=>-4} edffffff1f010000 edffffff1f010000 edffffff1f010000 ffffffedee000000 edffffff1f010000 edffffff1f010000 ffffffedee000000 edffffff1f010000 ffffffedee000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>-1,a=>96,b=>4,d=>1} 600000007c040000 600000007c040000 600000007c040000 000000609ca00000 600000007c040000 600000007c040000 000000609ca00000 600000007c040000 000000609ca00000 - {e=>0,c=>1,a=>-33,b=>2,d=>0} dfffffff0a000000 dfffffff0a000000 dfffffff0a000000 ffffffdf44000000 dfffffff0a000000 dfffffff0a000000 ffffffdf44000000 dfffffff0a000000 ffffffdf44000000 - {e=>1,c=>-3,a=>-123,b=>4,d=>-2} 85ffffffac030000 85ffffffac030000 85ffffffac030000 ffffff8597100000 85ffffffac030000 85ffffffac030000 ffffff8597100000 85ffffffac030000 ffffff8597100000 - {e=>2,c=>0,a=>-85,b=>3,d=>2} abffffff83040000 abffffff83040000 abffffff83040000 ffffffab61200000 abffffff83040000 abffffff83040000 ffffffab61200000 abffffff83040000 ffffffab61200000 - {e=>5,c=>2,a=>93,b=>6,d=>-3} 5d000000560b0000 5d000000560b0000 5d000000560b0000 0000005dcad00000 5d000000560b0000 5d000000560b0000 0000005dcad00000 5d000000560b0000 0000005dcad00000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>-2,a=>-117,b=>4,d=>2,f=>'UE6'} 8bffffffb4680000 8bffffffb4680000 8bffffffb4680000 ffffff8b994c0000 8bffffffb4680000 8bffffffb4680000 ffffff8b994c0000 8bffffffb4680000 ffffff8b994c0000 - {e=>2,c=>-4,a=>78,b=>0,d=>-2,f=>'UE4'} 4e000000a0450000 4e000000a0450000 4e000000a0450000 0000004e13280000 4e000000a0450000 4e000000a0450000 0000004e13280000 4e000000a0450000 0000004e13280000 - {e=>3,c=>3,a=>-102,b=>0,d=>-3,f=>'UE2'} 9affffff58270000 9affffff58270000 9affffff58270000 ffffff9a0eb40000 9affffff58270000 9affffff58270000 ffffff9a0eb40000 9affffff58270000 ffffff9a0eb40000 - {e=>3,c=>-4,a=>10,b=>2,d=>0,f=>'UE1'} 0a00000022160000 0a00000022160000 0a00000022160000 0000000a50320000 0a00000022160000 0a00000022160000 0000000a50320000 0a00000022160000 0000000a50320000 - {e=>5,c=>3,a=>112,b=>7,d=>-2,f=>'UE1'} 700000009f1b0000 700000009f1b0000 700000009f1b0000 00000070ef520000 700000009f1b0000 700000009f1b0000 00000070ef520000 700000009f1b0000 00000070ef520000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>4,c=>3,a=>77,g=>5,b=>3,d=>2,f=>'UE5'} 4d0000009bd80200 4d0000009bd80200 4d0000009bd80200 0000004d6d4b4000 4d0000009bd80200 4d0000009bd80200 0000004d6d4b4000 4d0000009bd80200 0000004d6d4b4000 - {e=>7,c=>3,a=>5,g=>6,b=>2,d=>0,f=>'UE5'} 050000001a5e0300 050000001a5e0300 050000001a5e0300 000000054c7b8000 050000001a5e0300 050000001a5e0300 000000054c7b8000 050000001a5e0300 000000054c7b8000 - {e=>7,c=>-2,a=>-24,g=>2,b=>0,d=>3,f=>'UE1'} e8fffffff01e0100 e8fffffff01e0100 e8fffffff01e0100 ffffffe819f28000 e8fffffff01e0100 e8fffffff01e0100 ffffffe819f28000 e8fffffff01e0100 ffffffe819f28000 - {e=>7,c=>3,a=>-1,g=>3,b=>6,d=>-2,f=>'UE6'} ffffffff9eef0100 ffffffff9eef0100 ffffffff9eef0100 ffffffffcf7cc000 ffffffff9eef0100 ffffffff9eef0100 ffffffffcf7cc000 ffffffff9eef0100 ffffffffcf7cc000 - {e=>1,c=>-1,a=>-111,g=>1,b=>4,d=>1,f=>'UE5'} 91ffffff7cd20000 91ffffff7cd20000 91ffffff7cd20000 ffffff919c9a4000 91ffffff7cd20000 91ffffff7cd20000 ffffff919c9a4000 91ffffff7cd20000 ffffff919c9a4000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>3,c=>-3,a=>50,g=>6,b=>2,d=>-3,f=>'UE2'} 320000006a270300 320000006a270300 320000006a270300 0000003256b58000 320000006a270300 320000006a270300 0000003256b58000 320000006a270300 0000003256b58000 - {e=>2,c=>-3,a=>47,g=>0,b=>3,d=>-3,f=>'UE1'} 2f0000006b150000 2f0000006b150000 2f0000006b150000 0000002f76a20000 2f0000006b150000 2f0000006b150000 0000002f76a20000 2f0000006b150000 0000002f76a20000 - {e=>0,c=>0,a=>-123,g=>6,b=>6,d=>-3,f=>'UE4'} 85ffffff46410300 85ffffff46410300 85ffffff46410300 ffffff85c2898000 85ffffff46410300 85ffffff46410300 ffffff85c2898000 85ffffff46410300 ffffff85c2898000 - {e=>1,c=>-2,a=>-46,g=>4,b=>5,d=>0,f=>'UE6'} d2ffffff35620200 d2ffffff35620200 d2ffffff35620200 ffffffd2b81d0000 d2ffffff35620200 d2ffffff35620200 ffffffd2b81d0000 d2ffffff35620200 ffffffd2b81d0000 - {e=>4,c=>-4,a=>41,g=>7,b=>7,d=>-2,f=>'UE3'} 29000000a7b90300 29000000a7b90300 29000000a7b90300 00000029f347c000 29000000a7b90300 29000000a7b90300 00000029f347c000 29000000a7b90300 00000029f347c000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>4,a=>-86,d=>3,c=>3,h=>2,b=>7,g=>7,f=>'UE7'} aaffffffdff8030002000000 aaffffffdff8030002000000 aaffffffdff8030002000000 ffffffaaedcfc00040000000 aaffffffdff8030002000000 aaffffffdff8030002000000 ffffffaaedcfc00040000000 aaffffffdff8030002000000 ffffffaaedcfc00040000000 - {e=>4,a=>64,d=>2,c=>1,h=>5,b=>5,g=>4,f=>'UE0'} 400000008d08020005000000 400000008d08020005000000 400000008d08020005000000 00000040a5410000a0000000 400000008d08020005000000 400000008d08020005000000 00000040a5410000a0000000 400000008d08020005000000 00000040a5410000a0000000 - {e=>4,a=>-56,d=>2,c=>-4,h=>6,b=>5,g=>1,f=>'UE6'} c8ffffffa5e8000006000000 c8ffffffa5e8000006000000 c8ffffffa5e8000006000000 ffffffc8b14c4000c0000000 c8ffffffa5e8000006000000 c8ffffffa5e8000006000000 ffffffc8b14c4000c0000000 c8ffffffa5e8000006000000 ffffffc8b14c4000c0000000 - {e=>6,a=>78,d=>3,c=>-1,h=>3,b=>0,g=>6,f=>'UE4'} 4e000000f84c030003000000 4e000000f84c030003000000 4e000000f84c030003000000 0000004e1de9800060000000 4e000000f84c030003000000 4e000000f84c030003000000 0000004e1de9800060000000 4e000000f84c030003000000 0000004e1de9800060000000 - {e=>7,a=>-101,d=>0,c=>-2,h=>6,b=>1,g=>4,f=>'UE1'} 9bffffff311e020006000000 9bffffff311e020006000000 9bffffff311e020006000000 ffffff9b38730000c0000000 9bffffff311e020006000000 9bffffff311e020006000000 ffffff9b38730000c0000000 9bffffff311e020006000000 ffffff9b38730000c0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>98,d=>1,c=>0,h=>3,b=>1,g=>0,f=>'UE5',i=>-4} 620000004158000023000000 620000004158000023000000 620000004158000023000000 0000006220ca000070000000 620000004158000023000000 620000004158000023000000 0000006220ca000070000000 620000004158000023000000 0000006220ca000070000000 - {e=>6,a=>-56,d=>-2,c=>-4,h=>6,b=>4,g=>7,f=>'UE5',i=>2} c8ffffffa4dd030016000000 c8ffffffa4dd030016000000 c8ffffffa4dd030016000000 ffffffc8936bc000c8000000 c8ffffffa4dd030016000000 c8ffffffa4dd030016000000 ffffffc8936bc000c8000000 c8ffffffa4dd030016000000 ffffffc8936bc000c8000000 - {e=>3,a=>-48,d=>0,c=>1,h=>5,b=>7,g=>5,f=>'UE1',i=>3} d0ffffff0f9602001d000000 d0ffffff0f9602001d000000 d0ffffff0f9602001d000000 ffffffd0e4334000ac000000 d0ffffff0f9602001d000000 d0ffffff0f9602001d000000 ffffffd0e4334000ac000000 d0ffffff0f9602001d000000 ffffffd0e4334000ac000000 - {e=>0,a=>-14,d=>-1,c=>-4,h=>1,b=>1,g=>4,f=>'UE1',i=>1} f2ffffffe111020009000000 f2ffffffe111020009000000 f2ffffffe111020009000000 fffffff23383000024000000 f2ffffffe111020009000000 f2ffffffe111020009000000 fffffff23383000024000000 f2ffffffe111020009000000 fffffff23383000024000000 - {e=>4,a=>-3,d=>3,c=>2,h=>1,b=>6,g=>6,f=>'UE4',i=>-2} fdffffffd648030031000000 fdffffffd648030031000000 fdffffffd648030031000000 fffffffdc9c9800038000000 fdffffffd648030031000000 fdffffffd648030031000000 fffffffdc9c9800038000000 fdffffffd648030031000000 fffffffdc9c9800038000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>7,a=>-125,d=>-1,j=>'SE0',c=>-3,h=>0,b=>3,g=>0,f=>'UE0',i=>0} 83ffffffeb0f000000000000 83ffffffeb0f000000000000 83ffffffeb0f000000000000 ffffff8377f0000000000000 83ffffffeb0f000000000000 83ffffffeb0f000000000000 ffffff8377f0000000000000 83ffffffeb0f000000000000 ffffff8377f0000000000000 - {e=>4,a=>-83,d=>1,j=>'SEM1',c=>-2,h=>0,b=>5,g=>2,f=>'UE1',i=>3} adffffff75180100d8010000 adffffff75180100d8010000 adffffff75180100d8010000 ffffffadb8c280000f800000 adffffff75180100d8010000 adffffff75180100d8010000 ffffffadb8c280000f800000 adffffff75180100d8010000 ffffffadb8c280000f800000 - {e=>1,a=>118,d=>-1,j=>'SE0',c=>1,h=>6,b=>1,g=>5,f=>'UE7',i=>0} 76000000c9f3020006000000 76000000c9f3020006000000 76000000c9f3020006000000 00000076279f4000c0000000 76000000c9f3020006000000 76000000c9f3020006000000 00000076279f4000c0000000 76000000c9f3020006000000 00000076279f4000c0000000 - {e=>1,a=>-5,d=>-4,j=>'SE0',c=>0,h=>0,b=>6,g=>3,f=>'UE3',i=>2} fbffffff06b3010010000000 fbffffff06b3010010000000 fbffffff06b3010010000000 fffffffbc216c00008000000 fbffffff06b3010010000000 fbffffff06b3010010000000 fffffffbc216c00008000000 fbffffff06b3010010000000 fffffffbc216c00008000000 - {e=>0,a=>70,d=>-3,j=>'SEM1',c=>0,h=>3,b=>5,g=>3,f=>'UE5',i=>2} 4600000045d10100d3010000 4600000045d10100d3010000 4600000045d10100d3010000 00000046a28ac0006b800000 4600000045d10100d3010000 4600000045d10100d3010000 00000046a28ac0006b800000 4600000045d10100d3010000 00000046a28ac0006b800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>0,a=>2,d=>0,j=>'SE2',c=>2,k=>37,h=>4,b=>1,g=>0,f=>'UE2',i=>0} 020000001120000084002500 020000001120000084002500 020000001120000084002500 000000022804000081002500 020000001120000084002500 020000001120000084002500 000000022804000081002500 020000001120000084002500 000000022804000081002500 - {e=>1,a=>68,d=>-2,j=>'SEM2',c=>-4,k=>-109,h=>0,b=>4,g=>2,f=>'UE5',i=>0} 44000000a453010080019300 44000000a453010080019300 44000000a453010080019300 00000044931a800003009300 44000000a453010080019300 44000000a453010080019300 00000044931a800003009300 44000000a453010080019300 00000044931a800003009300 - {e=>4,a=>117,d=>-4,j=>'SEM4',c=>2,k=>-10,h=>7,b=>3,g=>1,f=>'UE3',i=>-2} 7500000013b900003701f600 7500000013b900003701f600 7500000013b900003701f600 000000756a464000fa00f600 7500000013b900003701f600 7500000013b900003701f600 000000756a464000fa00f600 7500000013b900003701f600 000000756a464000fa00f600 - {e=>7,a=>-56,d=>-3,j=>'SE2',c=>3,k=>30,h=>7,b=>6,g=>5,f=>'UE5',i=>-1} c8ffffff5edf0200bf001e00 c8ffffff5edf0200bf001e00 c8ffffff5edf0200bf001e00 ffffffc8cefb4000fd001e00 c8ffffff5edf0200bf001e00 c8ffffff5edf0200bf001e00 ffffffc8cefb4000fd001e00 c8ffffff5edf0200bf001e00 ffffffc8cefb4000fd001e00 - {e=>1,a=>-1,d=>-2,j=>'SEM1',c=>-3,k=>-71,h=>6,b=>6,g=>3,f=>'UE2',i=>-3} ffffffffaea30100ee01b900 ffffffffaea30100ee01b900 ffffffffaea30100ee01b900 ffffffffd714c000d780b900 ffffffffaea30100ee01b900 ffffffffaea30100ee01b900 ffffffffd714c000d780b900 ffffffffaea30100ee01b900 ffffffffd714c000d780b900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>1,a=>26,d=>2,j=>'SEM1',l=>2,c=>-2,k=>-113,h=>2,b=>0,g=>0,f=>'UE7',i=>-3} 1a000000b0720000ea018f02 1a000000b0720000ea018f02 1a000000b0720000ea018f02 0000001a191e000057808f40 1a000000b0720000ea018f02 1a000000b0720000ea018f02 0000001a191e000057808f40 1a000000b0720000ea018f02 0000001a191e000057808f40 - {e=>2,a=>117,d=>-4,j=>'SE1',l=>6,c=>3,k=>-95,h=>1,b=>6,g=>4,f=>'UE0',i=>1} 750000001e0502004900a106 750000001e0502004900a106 750000001e0502004900a106 00000075ce2100002480a1c0 750000001e0502004900a106 750000001e0502004900a106 00000075ce2100002480a1c0 750000001e0502004900a106 00000075ce2100002480a1c0 - {e=>4,a=>69,d=>3,j=>'SE1',l=>7,c=>-3,k=>-103,h=>5,b=>4,g=>7,f=>'UE2',i=>-4} 45000000eca8030065009907 45000000eca8030065009907 45000000eca8030065009907 0000004595c5c000b08099e0 45000000eca8030065009907 45000000eca8030065009907 0000004595c5c000b08099e0 45000000eca8030065009907 0000004595c5c000b08099e0 - {e=>0,a=>66,d=>0,j=>'SEM1',l=>4,c=>-2,k=>-115,h=>0,b=>6,g=>2,f=>'UE6',i=>-1} 4200000036600100f8018d04 4200000036600100f8018d04 4200000036600100f8018d04 00000042d80c80001f808d80 4200000036600100f8018d04 4200000036600100f8018d04 00000042d80c80001f808d80 4200000036600100f8018d04 00000042d80c80001f808d80 - {e=>0,a=>115,d=>3,j=>'SE3',l=>6,c=>-3,k=>-110,h=>4,b=>7,g=>6,f=>'UE3',i=>1} 73000000ef300300cc009206 73000000ef300300cc009206 73000000ef300300cc009206 00000073f5878000858092c0 73000000ef300300cc009206 73000000ef300300cc009206 00000073f5878000858092c0 73000000ef300300cc009206 00000073f5878000858092c0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>20,m=>-3,d=>1,j=>'SE3',l=>5,c=>-3,k=>47,h=>7,b=>3,g=>2,f=>'UE7',i=>-4} 140000006b720100e7002f2d 140000006b720100e7002f2d 140000006b720100e7002f2d 00000014749e8000f1802fb4 140000006b720100e7002f2d 140000006b720100e7002f2d 00000014749e8000f1802fb4 140000006b720100e7002f2d 00000014749e8000f1802fb4 - {e=>5,a=>113,m=>0,d=>-2,j=>'SE3',l=>3,c=>-4,k=>63,h=>2,b=>7,g=>2,f=>'UE2',i=>2} 71000000a72b0100d2003f03 71000000a72b0100d2003f03 71000000a72b0100d2003f03 00000071f354800049803f60 71000000a72b0100d2003f03 71000000a72b0100d2003f03 00000071f354800049803f60 71000000a72b0100d2003f03 00000071f354800049803f60 - {e=>1,a=>58,m=>-1,d=>-1,j=>'SEM2',l=>1,c=>1,k=>4,h=>1,b=>2,g=>7,f=>'UE5',i=>-2} 3a000000cad30300b1010439 3a000000cad30300b1010439 3a000000cad30300b1010439 0000003a479bc0003b00043c 3a000000cad30300b1010439 3a000000cad30300b1010439 0000003a479bc0003b00043c 3a000000cad30300b1010439 0000003a479bc0003b00043c - {e=>5,a=>101,m=>0,d=>3,j=>'SEM4',l=>6,c=>-2,k=>124,h=>5,b=>7,g=>0,f=>'UE0',i=>-1} 65000000f70a00003d017c06 65000000f70a00003d017c06 65000000f70a00003d017c06 00000065f9d00000be007cc0 65000000f70a00003d017c06 65000000f70a00003d017c06 00000065f9d00000be007cc0 65000000f70a00003d017c06 00000065f9d00000be007cc0 - {e=>1,a=>73,m=>-4,d=>-1,j=>'SEM1',l=>2,c=>1,k=>-19,h=>4,b=>0,g=>5,f=>'UE3',i=>-4} 49000000c8b30200e401ed22 49000000c8b30200e401ed22 49000000c8b30200e401ed22 00000049079740009380ed50 49000000c8b30200e401ed22 49000000c8b30200e401ed22 00000049079740009380ed50 49000000c8b30200e401ed22 00000049079740009380ed50 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>1,n=>1,a=>-71,m=>-2,d=>0,j=>'SE1',l=>0,c=>-2,k=>60,h=>6,b=>4,g=>5,f=>'UE5',i=>-1} b9ffffff34d202007e003c3001000000 b9ffffff34d202007e003c3001000000 b9ffffff34d202007e003c3001000000 ffffffb9981b4000dc803c1820000000 b9ffffff34d202007e003c3001000000 b9ffffff34d202007e003c3001000000 ffffffb9981b4000dc803c1820000000 b9ffffff34d202007e003c3001000000 ffffffb9981b4000dc803c1820000000 - {e=>7,n=>5,a=>-15,m=>-1,d=>0,j=>'SEM1',l=>5,c=>-2,k=>4,h=>2,b=>3,g=>3,f=>'UE0',i=>-3} f1ffffff338e0100ea01043d05000000 f1ffffff338e0100ea01043d05000000 f1ffffff338e0100ea01043d05000000 fffffff17870c000578004bca0000000 f1ffffff338e0100ea01043d05000000 f1ffffff338e0100ea01043d05000000 fffffff17870c000578004bca0000000 f1ffffff338e0100ea01043d05000000 fffffff17870c000578004bca0000000 - {e=>6,n=>3,a=>12,m=>1,d=>3,j=>'SE3',l=>4,c=>-4,k=>116,h=>6,b=>1,g=>4,f=>'UE2',i=>-2} 0c000000e12c0200f600740c03000000 0c000000e12c0200f600740c03000000 0c000000e12c0200f600740c03000000 0000000c31e50000d980748460000000 0c000000e12c0200f600740c03000000 0c000000e12c0200f600740c03000000 0000000c31e50000d980748460000000 0c000000e12c0200f600740c03000000 0000000c31e50000d980748460000000 - {e=>5,n=>3,a=>42,m=>1,d=>-3,j=>'SE3',l=>4,c=>1,k=>-90,h=>4,b=>3,g=>6,f=>'UE3',i=>-1} 2a0000004b3b0300fc00a60c03000000 2a0000004b3b0300fc00a60c03000000 2a0000004b3b0300fc00a60c03000000 0000002a66d780009d80a68460000000 2a0000004b3b0300fc00a60c03000000 2a0000004b3b0300fc00a60c03000000 0000002a66d780009d80a68460000000 2a0000004b3b0300fc00a60c03000000 0000002a66d780009d80a68460000000 - {e=>7,n=>3,a=>55,m=>-2,d=>0,j=>'SE2',l=>0,c=>2,k=>-125,h=>4,b=>5,g=>7,f=>'UE7',i=>-4} 3700000015fe0300a400833003000000 3700000015fe0300a400833003000000 3700000015fe0300a400833003000000 00000037a87fc0009100831860000000 3700000015fe0300a400833003000000 3700000015fe0300a400833003000000 00000037a87fc0009100831860000000 3700000015fe0300a400833003000000 00000037a87fc0009100831860000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>5,a=>111,m=>-1,d=>3,j=>'SE1',l=>5,c=>-1,k=>85,h=>5,b=>0,g=>4,f=>'UE7',o=>100,i=>2} 6f000000f87e02005500553d05640000 6f000000f87e02005500553d05640000 6f000000f87e02005500553d05640000 0000006f1dff0000a88055bca0640000 6f000000f87e02005500553d05640000 6f000000f87e02005500553d05640000 0000006f1dff0000a88055bca0640000 6f000000f87e02005500553d05640000 0000006f1dff0000a88055bca0640000 - {e=>3,n=>3,a=>68,m=>3,d=>-2,j=>'SE0',l=>2,c=>3,k=>30,h=>0,b=>6,g=>3,f=>'UE0',o=>140,i=>-1} 440000009e87010038001e1a038c0000 440000009e87010038001e1a038c0000 440000009e87010038001e1a038c0000 00000044cf30c0001c001e4c608c0000 440000009e87010038001e1a038c0000 440000009e87010038001e1a038c0000 00000044cf30c0001c001e4c608c0000 440000009e87010038001e1a038c0000 00000044cf30c0001c001e4c608c0000 - {e=>1,n=>2,a=>-1,m=>2,d=>1,j=>'SE0',l=>1,c=>3,k=>-56,h=>3,b=>0,g=>3,f=>'UE1',o=>96,i=>2} ffffffff589201001300c81102600000 ffffffff589201001300c81102600000 ffffffff589201001300c81102600000 ffffffff0c92c0006800c82840600000 ffffffff589201001300c81102600000 ffffffff589201001300c81102600000 ffffffff0c92c0006800c82840600000 ffffffff589201001300c81102600000 ffffffff0c92c0006800c82840600000 - {e=>7,n=>5,a=>26,m=>3,d=>1,j=>'SEM3',l=>5,c=>-1,k=>-127,h=>0,b=>4,g=>2,f=>'UE1',o=>99,i=>-3} 1a0000007c1e01006801811d05630000 1a0000007c1e01006801811d05630000 1a0000007c1e01006801811d05630000 0000001a9cf28000168081aca0630000 1a0000007c1e01006801811d05630000 1a0000007c1e01006801811d05630000 0000001a9cf28000168081aca0630000 1a0000007c1e01006801811d05630000 0000001a9cf28000168081aca0630000 - {e=>1,n=>3,a=>-55,m=>0,d=>0,j=>'SEM1',l=>2,c=>1,k=>-1,h=>1,b=>3,g=>3,f=>'UE2',o=>164,i=>-4} c9ffffff0ba20100e101ff0203a40000 c9ffffff0ba20100e101ff0203a40000 c9ffffff0ba20100e101ff0203a40000 ffffffc96414c0003380ff4060a40000 c9ffffff0ba20100e101ff0203a40000 c9ffffff0ba20100e101ff0203a40000 ffffffc96414c0003380ff4060a40000 c9ffffff0ba20100e101ff0203a40000 ffffffc96414c0003380ff4060a40000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; }; - {a=>30,b=>3} 1e00000003000000 1e000000000000000300000000000000 1e000000000000000300000000000000 0000001e60000000 1e00000003000000 1e00000003000000 000000000000001e6000000000000000 1e00000003000000 0000001e60000000 - {a=>-14,b=>4} f2ffffff04000000 f2ffffffffffffff0400000000000000 f2ffffffffffffff0400000000000000 fffffff280000000 f2ffffff04000000 f2ffffff04000000 fffffffffffffff28000000000000000 f2ffffff04000000 fffffff280000000 - {a=>3,b=>2} 0300000002000000 03000000000000000200000000000000 03000000000000000200000000000000 0000000340000000 0300000002000000 0300000002000000 00000000000000034000000000000000 0300000002000000 0000000340000000 - {a=>98,b=>5} 6200000005000000 62000000000000000500000000000000 62000000000000000500000000000000 00000062a0000000 6200000005000000 6200000005000000 0000000000000062a000000000000000 6200000005000000 00000062a0000000 - {a=>85,b=>3} 5500000003000000 55000000000000000300000000000000 55000000000000000300000000000000 0000005560000000 5500000003000000 5500000003000000 00000000000000556000000000000000 5500000003000000 0000005560000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; }; - {c=>-1,a=>-46,b=>6} d2ffffff3e000000 d2ffffffffffffff3e00000000000000 d2ffffffffffffff3e00000000000000 ffffffd2dc000000 d2ffffff3e000000 d2ffffff3e000000 ffffffffffffffd2dc00000000000000 d2ffffff3e000000 ffffffd2dc000000 - {c=>2,a=>-36,b=>5} dcffffff15000000 dcffffffffffffff1500000000000000 dcffffffffffffff1500000000000000 ffffffdca8000000 dcffffff15000000 dcffffff15000000 ffffffffffffffdca800000000000000 dcffffff15000000 ffffffdca8000000 - {c=>-4,a=>78,b=>7} 4e00000027000000 4e000000000000002700000000000000 4e000000000000002700000000000000 0000004ef0000000 4e00000027000000 4e00000027000000 000000000000004ef000000000000000 4e00000027000000 0000004ef0000000 - {c=>-4,a=>65,b=>5} 4100000025000000 41000000000000002500000000000000 41000000000000002500000000000000 00000041b0000000 4100000025000000 4100000025000000 0000000000000041b000000000000000 4100000025000000 00000041b0000000 - {c=>-1,a=>124,b=>3} 7c0000003b000000 7c000000000000003b00000000000000 7c000000000000003b00000000000000 0000007c7c000000 7c0000003b000000 7c0000003b000000 000000000000007c7c00000000000000 7c0000003b000000 0000007c7c000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>0,a=>45,b=>2,d=>1} 2d00000042000000 2d000000000000004200000000000000 2d000000000000004200000000000000 0000002d40800000 2d00000042000000 2d00000042000000 000000000000002d4080000000000000 2d00000042000000 0000002d40800000 - {c=>0,a=>-85,b=>5,d=>0} abffffff05000000 abffffffffffffff0500000000000000 abffffffffffffff0500000000000000 ffffffaba0000000 abffffff05000000 abffffff05000000 ffffffffffffffaba000000000000000 abffffff05000000 ffffffaba0000000 - {c=>-3,a=>62,b=>0,d=>0} 3e00000028000000 3e000000000000002800000000000000 3e000000000000002800000000000000 0000003e14000000 3e00000028000000 3e00000028000000 000000000000003e1400000000000000 3e00000028000000 0000003e14000000 - {c=>3,a=>52,b=>1,d=>1} 3400000059000000 34000000000000005900000000000000 34000000000000005900000000000000 000000342c800000 3400000059000000 3400000059000000 00000000000000342c80000000000000 3400000059000000 000000342c800000 - {c=>-2,a=>17,b=>6,d=>-4} 1100000036010000 11000000000000003601000000000000 11000000000000003601000000000000 00000011da000000 1100000036010000 1100000036010000 0000000000000011da00000000000000 1100000036010000 00000011da000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-1,a=>-49,b=>1,d=>-4} cfffffff39090000 cfffffffffffffff3909000000000000 cfffffffffffffff3909000000000000 ffffffcf3e400000 cfffffff39090000 cfffffff39090000 ffffffffffffffcf3e40000000000000 cfffffff39090000 ffffffcf3e400000 - {e=>5,c=>0,a=>127,b=>4,d=>0} 7f000000040a0000 7f00000000000000040a000000000000 7f00000000000000040a000000000000 0000007f80500000 7f000000040a0000 7f000000040a0000 000000000000007f8050000000000000 7f000000040a0000 0000007f80500000 - {e=>3,c=>0,a=>28,b=>0,d=>3} 1c000000c0060000 1c00000000000000c006000000000000 1c00000000000000c006000000000000 0000001c01b00000 1c000000c0060000 1c000000c0060000 000000000000001c01b0000000000000 1c000000c0060000 0000001c01b00000 - {e=>3,c=>2,a=>42,b=>3,d=>-4} 2a00000013070000 2a000000000000001307000000000000 2a000000000000001307000000000000 0000002a6a300000 2a00000013070000 2a00000013070000 000000000000002a6a30000000000000 2a00000013070000 0000002a6a300000 - {e=>1,c=>3,a=>-60,b=>0,d=>-2} c4ffffff98030000 c4ffffffffffffff9803000000000000 c4ffffffffffffff9803000000000000 ffffffc40f100000 c4ffffff98030000 c4ffffff98030000 ffffffffffffffc40f10000000000000 c4ffffff98030000 ffffffc40f100000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>7,c=>3,a=>-108,b=>1,d=>-1,f=>'UE1'} 94ffffffd91f0000 94ffffffffffffffd91f000000000000 94ffffffffffffffd91f000000000000 ffffff942ff20000 94ffffffd91f0000 94ffffffd91f0000 ffffffffffffff942ff2000000000000 94ffffffd91f0000 ffffff942ff20000 - {e=>6,c=>-2,a=>4,b=>1,d=>-4,f=>'UE2'} 04000000312d0000 0400000000000000312d000000000000 0400000000000000312d000000000000 000000043a640000 04000000312d0000 04000000312d0000 00000000000000043a64000000000000 04000000312d0000 000000043a640000 - {e=>3,c=>-3,a=>79,b=>0,d=>-4,f=>'UE0'} 4f00000028070000 4f000000000000002807000000000000 4f000000000000002807000000000000 0000004f16300000 4f00000028070000 4f00000028070000 000000000000004f1630000000000000 4f00000028070000 0000004f16300000 - {e=>2,c=>-2,a=>45,b=>0,d=>3,f=>'UE5'} 2d000000f0540000 2d00000000000000f054000000000000 2d00000000000000f054000000000000 0000002d19aa0000 2d000000f0540000 2d000000f0540000 000000000000002d19aa000000000000 2d000000f0540000 0000002d19aa0000 - {e=>4,c=>-1,a=>18,b=>7,d=>-1,f=>'UE2'} 12000000ff290000 1200000000000000ff29000000000000 1200000000000000ff29000000000000 00000012ffc40000 12000000ff290000 12000000ff290000 0000000000000012ffc4000000000000 12000000ff290000 00000012ffc40000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>5,c=>-1,a=>107,g=>7,b=>1,d=>-2,f=>'UE5'} 6b000000b9db0300 6b00000000000000b9db030000000000 6b00000000000000b9db030000000000 0000006b3f5bc000 6b000000b9db0300 6b000000b9db0300 000000000000006b3f5bc00000000000 6b000000b9db0300 0000006b3f5bc000 - {e=>0,c=>-1,a=>-57,g=>6,b=>7,d=>-4,f=>'UE2'} c7ffffff3f210300 c7ffffffffffffff3f21030000000000 c7ffffffffffffff3f21030000000000 ffffffc7fe058000 c7ffffff3f210300 c7ffffff3f210300 ffffffffffffffc7fe05800000000000 c7ffffff3f210300 ffffffc7fe058000 - {e=>1,c=>2,a=>9,g=>5,b=>7,d=>2,f=>'UE7'} 0900000097f20200 090000000000000097f2020000000000 090000000000000097f2020000000000 00000009e91f4000 0900000097f20200 0900000097f20200 0000000000000009e91f400000000000 0900000097f20200 00000009e91f4000 - {e=>3,c=>3,a=>-7,g=>4,b=>4,d=>2,f=>'UE5'} f9ffffff9c560200 f9ffffffffffffff9c56020000000000 f9ffffffffffffff9c56020000000000 fffffff98d3b0000 f9ffffff9c560200 f9ffffff9c560200 fffffffffffffff98d3b000000000000 f9ffffff9c560200 fffffff98d3b0000 - {e=>7,c=>1,a=>-15,g=>6,b=>2,d=>2,f=>'UE0'} f1ffffff8a0e0300 f1ffffffffffffff8a0e030000000000 f1ffffffffffffff8a0e030000000000 fffffff145718000 f1ffffff8a0e0300 f1ffffff8a0e0300 fffffffffffffff14571800000000000 f1ffffff8a0e0300 fffffff145718000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-1,a=>-17,g=>2,b=>3,d=>-2,f=>'UE0'} efffffffbb030100 efffffffffffffffbb03010000000000 efffffffffffffffbb03010000000000 ffffffef7f108000 efffffffbb030100 efffffffbb030100 ffffffffffffffef7f10800000000000 efffffffbb030100 ffffffef7f108000 - {e=>7,c=>-2,a=>6,g=>1,b=>0,d=>-3,f=>'UE6'} 0600000070ef0000 060000000000000070ef000000000000 060000000000000070ef000000000000 000000061afc4000 0600000070ef0000 0600000070ef0000 00000000000000061afc400000000000 0600000070ef0000 000000061afc4000 - {e=>2,c=>3,a=>64,g=>4,b=>2,d=>2,f=>'UE1'} 400000009a140200 40000000000000009a14020000000000 40000000000000009a14020000000000 000000404d230000 400000009a140200 400000009a140200 00000000000000404d23000000000000 400000009a140200 000000404d230000 - {e=>2,c=>1,a=>58,g=>6,b=>1,d=>1,f=>'UE5'} 3a00000049540300 3a000000000000004954030000000000 3a000000000000004954030000000000 0000003a24ab8000 3a00000049540300 3a00000049540300 000000000000003a24ab800000000000 3a00000049540300 0000003a24ab8000 - {e=>0,c=>1,a=>-124,g=>4,b=>2,d=>-1,f=>'UE4'} 84ffffffca410200 84ffffffffffffffca41020000000000 84ffffffffffffffca41020000000000 ffffff8447890000 84ffffffca410200 84ffffffca410200 ffffffffffffff844789000000000000 84ffffffca410200 ffffff8447890000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>5,d=>1,c=>-3,h=>0,b=>1,g=>2,f=>'UE1'} 05000000691a010000000000 0500000000000000691a010000000000 0500000000000000691a010000000000 0000000534d2800000000000 05000000691a010000000000 05000000691a010000000000 000000000000000534d2800000000000 05000000691a010000000000 0000000534d2800000000000 - {e=>2,a=>-102,d=>-2,c=>-2,h=>5,b=>0,g=>1,f=>'UE6'} 9affffffb0e5000005000000 9affffffffffffffb0e5000005000000 9affffffffffffffb0e5000005000000 ffffff9a1b2c4000a0000000 9affffffb0e5000005000000 9affffffb0e5000005000000 ffffffffffffff9a1b2c4000a0000000 9affffffb0e5000005000000 ffffff9a1b2c4000a0000000 - {e=>5,a=>65,d=>-4,c=>0,h=>7,b=>3,g=>2,f=>'UE7'} 41000000037b010007000000 4100000000000000037b010007000000 4100000000000000037b010007000000 00000041625e8000e0000000 41000000037b010007000000 41000000037b010007000000 0000000000000041625e8000e0000000 41000000037b010007000000 00000041625e8000e0000000 - {e=>2,a=>-87,d=>3,c=>-1,h=>1,b=>7,g=>2,f=>'UE6'} a9ffffffff64010001000000 a9ffffffffffffffff64010001000000 a9ffffffffffffffff64010001000000 ffffffa9fdac800020000000 a9ffffffff64010001000000 a9ffffffff64010001000000 ffffffffffffffa9fdac800020000000 a9ffffffff64010001000000 ffffffa9fdac800020000000 - {e=>5,a=>-29,d=>2,c=>-4,h=>3,b=>6,g=>7,f=>'UE3'} e3ffffffa6ba030003000000 e3ffffffffffffffa6ba030003000000 e3ffffffffffffffa6ba030003000000 ffffffe3d157c00060000000 e3ffffffa6ba030003000000 e3ffffffa6ba030003000000 ffffffffffffffe3d157c00060000000 e3ffffffa6ba030003000000 ffffffe3d157c00060000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>-52,d=>-3,c=>2,h=>1,b=>4,g=>2,f=>'UE6',i=>3} ccffffff5463010019000000 ccffffffffffffff5463010019000000 ccffffffffffffff5463010019000000 ffffffcc8a9c80002c000000 ccffffff5463010019000000 ccffffff5463010019000000 ffffffffffffffcc8a9c80002c000000 ccffffff5463010019000000 ffffffcc8a9c80002c000000 - {e=>6,a=>-55,d=>-2,c=>2,h=>7,b=>1,g=>4,f=>'UE2',i=>-2} c9ffffff912d020037000000 c9ffffffffffffff912d020037000000 c9ffffffffffffff912d020037000000 ffffffc92b650000f8000000 c9ffffff912d020037000000 c9ffffff912d020037000000 ffffffffffffffc92b650000f8000000 c9ffffff912d020037000000 ffffffc92b650000f8000000 - {e=>3,a=>1,d=>-4,c=>3,h=>2,b=>6,g=>2,f=>'UE1',i=>0} 010000001e17010002000000 01000000000000001e17010002000000 01000000000000001e17010002000000 00000001ce32800040000000 010000001e17010002000000 010000001e17010002000000 0000000000000001ce32800040000000 010000001e17010002000000 00000001ce32800040000000 - {e=>7,a=>92,d=>1,c=>0,h=>3,b=>6,g=>4,f=>'UE3',i=>3} 5c000000463e02001b000000 5c00000000000000463e02001b000000 5c00000000000000463e02001b000000 0000005cc0f700006c000000 5c000000463e02001b000000 5c000000463e02001b000000 000000000000005cc0f700006c000000 5c000000463e02001b000000 0000005cc0f700006c000000 - {e=>4,a=>83,d=>-3,c=>-2,h=>6,b=>1,g=>6,f=>'UE5',i=>-3} 53000000715903002e000000 5300000000000000715903002e000000 5300000000000000715903002e000000 000000533acb8000d4000000 53000000715903002e000000 53000000715903002e000000 00000000000000533acb8000d4000000 53000000715903002e000000 000000533acb8000d4000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>2,a=>104,d=>1,j=>'SEM2',c=>-3,h=>4,b=>3,g=>5,f=>'UE4',i=>3} 680000006bc402009c010000 68000000000000006bc402009c010000 68000000000000006bc402009c010000 0000006874a940008f000000 680000006bc402009c010000 680000006bc402009c010000 000000000000006874a940008f000000 680000006bc402009c010000 0000006874a940008f000000 - {e=>5,a=>72,d=>-3,j=>'SE0',c=>2,h=>6,b=>2,g=>5,f=>'UE0',i=>0} 48000000528b020006000000 4800000000000000528b020006000000 4800000000000000528b020006000000 000000484ad14000c0000000 48000000528b020006000000 48000000528b020006000000 00000000000000484ad14000c0000000 48000000528b020006000000 000000484ad14000c0000000 - {e=>4,a=>-114,d=>2,j=>'SE0',c=>-4,h=>4,b=>5,g=>7,f=>'UE7',i=>3} 8effffffa5f803001c000000 8effffffffffffffa5f803001c000000 8effffffffffffffa5f803001c000000 ffffff8eb14fc0008c000000 8effffffa5f803001c000000 8effffffa5f803001c000000 ffffffffffffff8eb14fc0008c000000 8effffffa5f803001c000000 ffffff8eb14fc0008c000000 - {e=>5,a=>-114,d=>3,j=>'SE1',c=>2,h=>2,b=>5,g=>2,f=>'UE1',i=>-2} 8effffffd51a010072000000 8effffffffffffffd51a010072000000 8effffffffffffffd51a010072000000 ffffff8ea9d2800058800000 8effffffd51a010072000000 8effffffd51a010072000000 ffffffffffffff8ea9d2800058800000 8effffffd51a010072000000 ffffff8ea9d2800058800000 - {e=>7,a=>-75,d=>1,j=>'SEM3',c=>-3,h=>1,b=>7,g=>1,f=>'UE2',i=>0} b5ffffff6fae000041010000 b5ffffffffffffff6fae000041010000 b5ffffffffffffff6fae000041010000 ffffffb5f4f4400022800000 b5ffffff6fae000041010000 b5ffffff6fae000041010000 ffffffffffffffb5f4f4400022800000 b5ffffff6fae000041010000 ffffffb5f4f4400022800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>2,a=>48,d=>-2,j=>'SE3',c=>3,k=>43,h=>4,b=>2,g=>2,f=>'UE5',i=>0} 300000009a550100c4002b00 30000000000000009a550100c4002b00 30000000000000009a550100c4002b00 000000304f2a800081802b00 300000009a550100c4002b00 300000009a550100c4002b00 00000000000000304f2a800081802b00 300000009a550100c4002b00 000000304f2a800081802b00 - {e=>6,a=>-50,d=>0,j=>'SE0',c=>-1,k=>78,h=>6,b=>5,g=>5,f=>'UE6',i=>-3} ceffffff3dec02002e004e00 ceffffffffffffff3dec02002e004e00 ceffffffffffffff3dec02002e004e00 ffffffcebc6d4000d4004e00 ceffffff3dec02002e004e00 ceffffff3dec02002e004e00 ffffffffffffffcebc6d4000d4004e00 ceffffff3dec02002e004e00 ffffffcebc6d4000d4004e00 - {e=>4,a=>67,d=>0,j=>'SEM2',c=>3,k=>-96,h=>7,b=>3,g=>1,f=>'UE3',i=>2} 430000001bb800009701a000 43000000000000001bb800009701a000 43000000000000001bb800009701a000 000000436c464000eb00a000 430000001bb800009701a000 430000001bb800009701a000 00000000000000436c464000eb00a000 430000001bb800009701a000 000000436c464000eb00a000 - {e=>5,a=>-6,d=>1,j=>'SE2',c=>0,k=>69,h=>4,b=>5,g=>0,f=>'UE0',i=>-4} faffffff450a0000a4004500 faffffffffffffff450a0000a4004500 faffffffffffffff450a0000a4004500 fffffffaa0d0000091004500 faffffff450a0000a4004500 faffffff450a0000a4004500 fffffffffffffffaa0d0000091004500 faffffff450a0000a4004500 fffffffaa0d0000091004500 - {e=>7,a=>-120,d=>1,j=>'SE0',c=>-1,k=>92,h=>1,b=>5,g=>5,f=>'UE3',i=>2} 88ffffff7dbe020011005c00 88ffffffffffffff7dbe020011005c00 88ffffffffffffff7dbe020011005c00 ffffff88bcf7400028005c00 88ffffff7dbe020011005c00 88ffffff7dbe020011005c00 ffffffffffffff88bcf7400028005c00 88ffffff7dbe020011005c00 ffffff88bcf7400028005c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>3,a=>-102,d=>-2,j=>'SEM4',l=>7,c=>-3,k=>-44,h=>3,b=>3,g=>7,f=>'UE6',i=>0} 9affffffabe703000301d407 9affffffffffffffabe703000301d407 9affffffffffffffabe703000301d407 ffffff9a773dc0006200d4e0 9affffffabe703000301d407 9affffffabe703000301d407 ffffffffffffff9a773dc0006200d4e0 9affffffabe703000301d407 ffffff9a773dc0006200d4e0 - {e=>6,a=>15,d=>1,j=>'SE1',l=>1,c=>2,k=>-19,h=>5,b=>7,g=>1,f=>'UE6',i=>-2} 0f00000057ec00007500ed01 0f0000000000000057ec00007500ed01 0f0000000000000057ec00007500ed01 0000000fe8ec4000b880ed20 0f00000057ec00007500ed01 0f00000057ec00007500ed01 000000000000000fe8ec4000b880ed20 0f00000057ec00007500ed01 0000000fe8ec4000b880ed20 - {e=>2,a=>-49,d=>-1,j=>'SEM3',l=>3,c=>-2,k=>75,h=>0,b=>4,g=>7,f=>'UE3',i=>-3} cffffffff4b5030068014b03 cffffffffffffffff4b5030068014b03 cffffffffffffffff4b5030068014b03 ffffffcf9ba7c00016804b60 cffffffff4b5030068014b03 cffffffff4b5030068014b03 ffffffffffffffcf9ba7c00016804b60 cffffffff4b5030068014b03 ffffffcf9ba7c00016804b60 - {e=>6,a=>-49,d=>1,j=>'SEM2',l=>3,c=>3,k=>-128,h=>7,b=>5,g=>0,f=>'UE1',i=>2} cfffffff5d1c000097018003 cfffffffffffffff5d1c000097018003 cfffffffffffffff5d1c000097018003 ffffffcface20000eb008060 cfffffff5d1c000097018003 cfffffff5d1c000097018003 ffffffffffffffcface20000eb008060 cfffffff5d1c000097018003 ffffffcface20000eb008060 - {e=>3,a=>-61,d=>0,j=>'SEM1',l=>1,c=>1,k=>6,h=>0,b=>1,g=>3,f=>'UE0',i=>-2} c3ffffff09860100f0010601 c3ffffffffffffff09860100f0010601 c3ffffffffffffff09860100f0010601 ffffffc32430c0001b800620 c3ffffff09860100f0010601 c3ffffff09860100f0010601 ffffffffffffffc32430c0001b800620 c3ffffff09860100f0010601 ffffffc32430c0001b800620 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>101,m=>1,d=>3,j=>'SEM4',l=>0,c=>3,k=>115,h=>2,b=>1,g=>3,f=>'UE0',i=>-3} 65000000d98201002a017308 6500000000000000d98201002a017308 6500000000000000d98201002a017308 000000652d90c00056007304 65000000d98201002a017308 65000000d98201002a017308 00000000000000652d90c00056007304 65000000d98201002a017308 000000652d90c00056007304 - {e=>4,a=>-15,m=>1,d=>-3,j=>'SE2',l=>6,c=>-3,k=>-105,h=>6,b=>3,g=>5,f=>'UE5',i=>1} f1ffffff6bd902008e00970e f1ffffffffffffff6bd902008e00970e f1ffffffffffffff6bd902008e00970e fffffff176cb4000c50097c4 f1ffffff6bd902008e00970e f1ffffff6bd902008e00970e fffffffffffffff176cb4000c50097c4 f1ffffff6bd902008e00970e fffffff176cb4000c50097c4 - {e=>3,a=>111,m=>-1,d=>1,j=>'SE0',l=>6,c=>-1,k=>-84,h=>3,b=>4,g=>0,f=>'UE4',i=>-1} 6f0000007c4600003b00ac3e 6f000000000000007c4600003b00ac3e 6f000000000000007c4600003b00ac3e 0000006f9cb800007c00acdc 6f0000007c4600003b00ac3e 6f0000007c4600003b00ac3e 000000000000006f9cb800007c00acdc 6f0000007c4600003b00ac3e 0000006f9cb800007c00acdc - {e=>7,a=>-11,m=>3,d=>-4,j=>'SEM1',l=>3,c=>0,k=>-99,h=>0,b=>4,g=>4,f=>'UE4',i=>-3} f5ffffff044f0200e8019d1b f5ffffffffffffff044f0200e8019d1b f5ffffffffffffff044f0200e8019d1b fffffff58279000017809d6c f5ffffff044f0200e8019d1b f5ffffff044f0200e8019d1b fffffffffffffff58279000017809d6c f5ffffff044f0200e8019d1b fffffff58279000017809d6c - {e=>4,a=>-69,m=>-3,d=>-2,j=>'SEM3',l=>2,c=>0,k=>94,h=>2,b=>4,g=>3,f=>'UE3',i=>2} bbffffff84b9010052015e2a bbffffffffffffff84b9010052015e2a bbffffffffffffff84b9010052015e2a ffffffbb8346c0004a805e54 bbffffff84b9010052015e2a bbffffff84b9010052015e2a ffffffffffffffbb8346c0004a805e54 bbffffff84b9010052015e2a ffffffbb8346c0004a805e54 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>4,a=>-5,m=>-1,d=>-3,j=>'SE0',l=>4,c=>-3,k=>70,h=>7,b=>6,g=>4,f=>'UE5',i=>-3} fbffffff6e5b02002f00463c04000000 fbffffffffffffff6e5b02002f00463c0400000000000000 fbffffffffffffff6e5b02002f00463c0400000000000000 fffffffbd6db0000f400469c80000000 fbffffff6e5b02002f00463c04000000 fbffffff6e5b02002f00463c04000000 fffffffffffffffbd6db0000f400469c8000000000000000 fbffffff6e5b02002f00463c04000000 fffffffbd6db0000f400469c80000000 - {e=>7,n=>6,a=>108,m=>-3,d=>1,j=>'SEM3',l=>5,c=>-3,k=>-4,h=>3,b=>0,g=>6,f=>'UE6',i=>-2} 6c000000686e03007301fc2d06000000 6c00000000000000686e03007301fc2d0600000000000000 6c00000000000000686e03007301fc2d0600000000000000 0000006c14fd80007a80fcb4c0000000 6c000000686e03007301fc2d06000000 6c000000686e03007301fc2d06000000 000000000000006c14fd80007a80fcb4c000000000000000 6c000000686e03007301fc2d06000000 0000006c14fd80007a80fcb4c0000000 - {e=>3,n=>7,a=>-39,m=>-2,d=>3,j=>'SEM2',l=>2,c=>-4,k=>59,h=>1,b=>0,g=>7,f=>'UE5',i=>-4} d9ffffffe0d60300a1013b3207000000 d9ffffffffffffffe0d60300a1013b320700000000000000 d9ffffffffffffffe0d60300a1013b320700000000000000 ffffffd911bbc00033003b58e0000000 d9ffffffe0d60300a1013b3207000000 d9ffffffe0d60300a1013b3207000000 ffffffffffffffd911bbc00033003b58e000000000000000 d9ffffffe0d60300a1013b3207000000 ffffffd911bbc00033003b58e0000000 - {e=>2,n=>0,a=>-64,m=>1,d=>1,j=>'SE1',l=>0,c=>2,k=>123,h=>0,b=>7,g=>7,f=>'UE7',i=>1} c0ffffff57f4030048007b0800000000 c0ffffffffffffff57f4030048007b080000000000000000 c0ffffffffffffff57f4030048007b080000000000000000 ffffffc0e8afc00004807b0400000000 c0ffffff57f4030048007b0800000000 c0ffffff57f4030048007b0800000000 ffffffffffffffc0e8afc00004807b040000000000000000 c0ffffff57f4030048007b0800000000 ffffffc0e8afc00004807b0400000000 - {e=>5,n=>7,a=>-49,m=>-2,d=>-3,j=>'SE2',l=>0,c=>0,k=>95,h=>1,b=>5,g=>6,f=>'UE1',i=>-1} cfffffff451b0300b9005f3007000000 cfffffffffffffff451b0300b9005f300700000000000000 cfffffffffffffff451b0300b9005f300700000000000000 ffffffcfa2d380003d005f18e0000000 cfffffff451b0300b9005f3007000000 cfffffff451b0300b9005f3007000000 ffffffffffffffcfa2d380003d005f18e000000000000000 cfffffff451b0300b9005f3007000000 ffffffcfa2d380003d005f18e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>7,a=>-65,m=>-2,d=>-3,j=>'SEM3',l=>0,c=>0,k=>67,h=>5,b=>3,g=>6,f=>'UE7',o=>184,i=>3} bfffffff437d03005d01433007b80000 bfffffffffffffff437d03005d01433007b8000000000000 bfffffffffffffff437d03005d01433007b8000000000000 ffffffbf62ef8000ae804318e0b80000 bfffffff437d03005d01433007b80000 bfffffff437d03005d01433007b80000 ffffffffffffffbf62ef8000ae804318e0b8000000000000 bfffffff437d03005d01433007b80000 ffffffbf62ef8000ae804318e0b80000 - {e=>5,n=>0,a=>80,m=>-2,d=>0,j=>'SEM2',l=>4,c=>-3,k=>18,h=>7,b=>4,g=>5,f=>'UE5',o=>3,i=>1} 500000002cda02008f01123400030000 50000000000000002cda02008f0112340003000000000000 50000000000000002cda02008f0112340003000000000000 00000050945b4000e700129800030000 500000002cda02008f01123400030000 500000002cda02008f01123400030000 0000000000000050945b4000e70012980003000000000000 500000002cda02008f01123400030000 00000050945b4000e700129800030000 - {e=>5,n=>0,a=>89,m=>-1,d=>-4,j=>'SEM4',l=>6,c=>2,k=>-48,h=>0,b=>2,g=>2,f=>'UE7',o=>146,i=>2} 59000000127b01001001d03e00920000 5900000000000000127b01001001d03e0092000000000000 5900000000000000127b01001001d03e0092000000000000 000000594a5e80000a00d0dc00920000 59000000127b01001001d03e00920000 59000000127b01001001d03e00920000 00000000000000594a5e80000a00d0dc0092000000000000 59000000127b01001001d03e00920000 000000594a5e80000a00d0dc00920000 - {e=>5,n=>6,a=>-3,m=>-1,d=>0,j=>'SE1',l=>1,c=>0,k=>72,h=>1,b=>3,g=>4,f=>'UE2',o=>92,i=>2} fdffffff032a020051004839065c0000 fdffffffffffffff032a020051004839065c000000000000 fdffffffffffffff032a020051004839065c000000000000 fffffffd605500002880483cc05c0000 fdffffff032a020051004839065c0000 fdffffff032a020051004839065c0000 fffffffffffffffd605500002880483cc05c000000000000 fdffffff032a020051004839065c0000 fffffffd605500002880483cc05c0000 - {e=>3,n=>5,a=>-96,m=>-4,d=>3,j=>'SE1',l=>5,c=>-4,k=>-39,h=>0,b=>3,g=>3,f=>'UE4',o=>240,i=>-2} a0ffffffe3c601007000d92505f00000 a0ffffffffffffffe3c601007000d92505f0000000000000 a0ffffffffffffffe3c601007000d92505f0000000000000 ffffffa071b8c0001880d9b0a0f00000 a0ffffffe3c601007000d92505f00000 a0ffffffe3c601007000d92505f00000 ffffffffffffffa071b8c0001880d9b0a0f0000000000000 a0ffffffe3c601007000d92505f00000 ffffffa071b8c0001880d9b0a0f00000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; }; - {a=>3} 03000000 03000000 03000000 60000000 03000000 03000000 60000000 03000000 60000000 - {a=>4} 04000000 04000000 04000000 80000000 04000000 04000000 80000000 04000000 80000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 - {a=>2} 02000000 02000000 02000000 40000000 02000000 02000000 40000000 02000000 40000000 - {a=>0} 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; }; - {a=>5,b=>2} 15000000 15000000 15000000 a8000000 15000000 15000000 a8000000 15000000 a8000000 - {a=>6,b=>-2} 36000000 36000000 36000000 d8000000 36000000 36000000 d8000000 36000000 d8000000 - {a=>6,b=>3} 1e000000 1e000000 1e000000 cc000000 1e000000 1e000000 cc000000 1e000000 cc000000 - {a=>7,b=>3} 1f000000 1f000000 1f000000 ec000000 1f000000 1f000000 ec000000 1f000000 ec000000 - {a=>1,b=>0} 01000000 01000000 01000000 20000000 01000000 01000000 20000000 01000000 20000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>-4,a=>2,b=>-1} 3a010000 3a010000 3a010000 5e000000 3a010000 3a010000 5e000000 3a010000 5e000000 - {c=>2,a=>0,b=>2} 90000000 90000000 90000000 09000000 90000000 90000000 09000000 90000000 09000000 - {c=>-3,a=>7,b=>-4} 67010000 67010000 67010000 f2800000 67010000 67010000 f2800000 67010000 f2800000 - {c=>2,a=>3,b=>1} 8b000000 8b000000 8b000000 65000000 8b000000 8b000000 65000000 8b000000 65000000 - {c=>-4,a=>0,b=>-3} 28010000 28010000 28010000 16000000 28010000 28010000 16000000 28010000 16000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>2,a=>4,b=>0,d=>3} 84060000 84060000 84060000 81300000 84060000 84060000 81300000 84060000 81300000 - {c=>-4,a=>2,b=>2,d=>5} 120b0000 120b0000 120b0000 4a500000 120b0000 120b0000 4a500000 120b0000 4a500000 - {c=>-3,a=>2,b=>-3,d=>7} 6a0f0000 6a0f0000 6a0f0000 56f00000 6a0f0000 6a0f0000 56f00000 6a0f0000 56f00000 - {c=>1,a=>7,b=>-4,d=>1} 67020000 67020000 67020000 f0900000 67020000 67020000 f0900000 67020000 f0900000 - {c=>-2,a=>2,b=>3,d=>3} 9a070000 9a070000 9a070000 4f300000 9a070000 9a070000 4f300000 9a070000 4f300000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; }; - {e=>'UE6',c=>-4,a=>5,b=>-3,d=>1} 2d630000 2d630000 2d630000 b61c0000 2d630000 2d630000 b61c0000 2d630000 b61c0000 - {e=>'UE5',c=>1,a=>6,b=>2,d=>4} 56580000 56580000 56580000 c8ca0000 56580000 56580000 c8ca0000 56580000 c8ca0000 - {e=>'UE6',c=>-1,a=>0,b=>-4,d=>7} e06f0000 e06f0000 e06f0000 13fc0000 e06f0000 e06f0000 13fc0000 e06f0000 13fc0000 - {e=>'UE1',c=>-4,a=>4,b=>-3,d=>4} 2c190000 2c190000 2c190000 96420000 2c190000 2c190000 96420000 2c190000 96420000 - {e=>'UE1',c=>-2,a=>2,b=>2,d=>4} 92190000 92190000 92190000 4b420000 92190000 92190000 4b420000 92190000 4b420000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; }; - {e=>'UE1',c=>-4,a=>4,b=>-1,d=>3,f=>3} 3c970100 3c970100 3c970100 9e32c000 3c970100 3c970100 9e32c000 3c970100 9e32c000 - {e=>'UE3',c=>-4,a=>2,b=>-3,d=>0,f=>0} 2a310000 2a310000 2a310000 56060000 2a310000 2a310000 56060000 2a310000 56060000 - {e=>'UE0',c=>0,a=>3,b=>-3,d=>5,f=>0} 2b0a0000 2b0a0000 2b0a0000 74500000 2b0a0000 2b0a0000 74500000 2b0a0000 74500000 - {e=>'UE7',c=>1,a=>3,b=>-3,d=>3,f=>4} 6b760200 6b760200 6b760200 74bf0000 6b760200 6b760200 74bf0000 6b760200 74bf0000 - {e=>'UE7',c=>-2,a=>2,b=>3,d=>6,f=>5} 9afd0200 9afd0200 9afd0200 4f6f4000 9afd0200 9afd0200 4f6f4000 9afd0200 4f6f4000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; }; - {e=>'UE4',c=>2,a=>1,b=>-4,d=>1,f=>3} a1c20100 a1c20100 a1c20100 3118c000 a1c20100 a1c20100 3118c000 a1c20100 3118c000 - {e=>'UE7',c=>0,a=>6,b=>-4,d=>2,f=>7} 26f40300 26f40300 26f40300 d02fc000 26f40300 26f40300 d02fc000 26f40300 d02fc000 - {e=>'UE6',c=>3,a=>4,b=>-2,d=>5,f=>2} f46a0100 f46a0100 f46a0100 99dc8000 f46a0100 f46a0100 99dc8000 f46a0100 99dc8000 - {e=>'UE0',c=>-3,a=>5,b=>-2,d=>5,f=>3} 758b0100 758b0100 758b0100 bad0c000 758b0100 758b0100 bad0c000 758b0100 bad0c000 - {e=>'UE1',c=>0,a=>6,b=>0,d=>3,f=>4} 06160200 06160200 06160200 c0330000 06160200 06160200 c0330000 06160200 c0330000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>'UE4',c=>-2,a=>3,g=>3,b=>-4,d=>7,f=>5} a3cf020003000000 a3cf020003000000 a3cf020003000000 7379400060000000 a3cf020003000000 a3cf020003000000 7379400060000000 a3cf020003000000 7379400060000000 - {e=>'UE2',c=>0,a=>1,g=>7,b=>0,d=>6,f=>2} 012c010007000000 012c010007000000 012c010007000000 20648000e0000000 012c010007000000 012c010007000000 20648000e0000000 012c010007000000 20648000e0000000 - {e=>'UE2',c=>-1,a=>3,g=>7,b=>3,d=>4,f=>2} db29010007000000 db29010007000000 db29010007000000 6fc48000e0000000 db29010007000000 db29010007000000 6fc48000e0000000 db29010007000000 6fc48000e0000000 - {e=>'UE0',c=>-1,a=>4,g=>1,b=>2,d=>0,f=>0} d401000001000000 d401000001000000 d401000001000000 8b80000020000000 d401000001000000 d401000001000000 8b80000020000000 d401000001000000 8b80000020000000 - {e=>'UE1',c=>-2,a=>7,g=>4,b=>-2,d=>3,f=>6} b717030004000000 b717030004000000 b717030004000000 fb33800080000000 b717030004000000 b717030004000000 fb33800080000000 b717030004000000 fb33800080000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>'UE4',a=>1,d=>4,c=>-4,h=>-1,b=>2,g=>3,f=>1} 11c900003b000000 11c900003b000000 11c900003b000000 2a4840007c000000 11c900003b000000 11c900003b000000 2a4840007c000000 11c900003b000000 2a4840007c000000 - {e=>'UE3',a=>3,d=>3,c=>2,h=>1,b=>-3,g=>5,f=>2} ab3601000d000000 ab3601000d000000 ab3601000d000000 75368000a4000000 ab3601000d000000 ab3601000d000000 75368000a4000000 ab3601000d000000 75368000a4000000 - {e=>'UE2',a=>0,d=>4,c=>-3,h=>2,b=>1,g=>2,f=>7} 48a9030012000000 48a9030012000000 48a9030012000000 06c5c00048000000 48a9030012000000 48a9030012000000 06c5c00048000000 48a9030012000000 06c5c00048000000 - {e=>'UE4',a=>2,d=>3,c=>0,h=>-1,b=>-1,g=>2,f=>4} 3a4602003a000000 3a4602003a000000 3a4602003a000000 5c3900005c000000 3a4602003a000000 3a4602003a000000 5c3900005c000000 3a4602003a000000 5c3900005c000000 - {e=>'UE5',a=>5,d=>7,c=>0,h=>-1,b=>3,g=>1,f=>1} 1dde000039000000 1dde000039000000 1dde000039000000 ac7a40003c000000 1dde000039000000 1dde000039000000 ac7a40003c000000 1dde000039000000 ac7a40003c000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; }; - {e=>'UE4',a=>1,d=>7,c=>-3,h=>0,b=>-4,g=>4,f=>3,i=>'SEM2'} 61cf010084010000 61cf010084010000 61cf010084010000 32f8c00083000000 61cf010084010000 61cf010084010000 32f8c00083000000 61cf010084010000 32f8c00083000000 - {e=>'UE0',a=>0,d=>3,c=>1,h=>0,b=>-3,g=>6,f=>6,i=>'SE3'} 68060300c6000000 68060300c6000000 68060300c6000000 14b18000c1800000 68060300c6000000 68060300c6000000 14b18000c1800000 68060300c6000000 14b18000c1800000 - {e=>'UE5',a=>0,d=>1,c=>-2,h=>2,b=>0,g=>6,f=>0,i=>'SE3'} 80530000d6000000 80530000d6000000 80530000d6000000 031a0000c9800000 80530000d6000000 80530000d6000000 031a0000c9800000 80530000d6000000 031a0000c9800000 - {e=>'UE7',a=>5,d=>4,c=>-3,h=>-1,b=>2,g=>5,f=>6,i=>'SE2'} 55790300bd000000 55790300bd000000 55790300bd000000 aacf8000bd000000 55790300bd000000 55790300bd000000 aacf8000bd000000 55790300bd000000 aacf8000bd000000 - {e=>'UE4',a=>6,d=>1,c=>-1,h=>2,b=>-3,g=>5,f=>1,i=>'SEM4'} eec3000015010000 eec3000015010000 eec3000015010000 d7984000aa000000 eec3000015010000 eec3000015010000 d7984000aa000000 eec3000015010000 d7984000aa000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; }; - {e=>'UE2',a=>3,d=>3,j=>79,c=>-1,h=>-3,b=>2,g=>4,f=>1,i=>'SE3'} d3a70000ec004f00 d3a70000ec004f00 d3a70000ec004f00 6bb4400095804f00 d3a70000ec004f00 d3a70000ec004f00 6bb4400095804f00 d3a70000ec004f00 6bb4400095804f00 - {e=>'UE3',a=>4,d=>5,j=>33,c=>-2,h=>-4,b=>-1,g=>7,f=>7,i=>'SEM3'} bcbb030067012100 bcbb030067012100 bcbb030067012100 9f57c000f2802100 bcbb030067012100 bcbb030067012100 9f57c000f2802100 bcbb030067012100 9f57c000f2802100 - {e=>'UE3',a=>2,d=>6,j=>127,c=>-1,h=>1,b=>0,g=>1,f=>5,i=>'SEM1'} c2bd0200c9017f00 c2bd0200c9017f00 c2bd0200c9017f00 43e7400027807f00 c2bd0200c9017f00 c2bd0200c9017f00 43e7400027807f00 c2bd0200c9017f00 43e7400027807f00 - {e=>'UE7',a=>4,d=>1,j=>84,c=>2,h=>-3,b=>3,g=>7,f=>0,i=>'SEM1'} 9c720000ef015400 9c720000ef015400 9c720000ef015400 8d1e0000f7805400 9c720000ef015400 9c720000ef015400 8d1e0000f7805400 9c720000ef015400 8d1e0000f7805400 - {e=>'UE6',a=>1,d=>7,j=>37,c=>2,h=>-2,b=>0,g=>3,f=>5,i=>'SE3'} 81ee0200f3002500 81ee0200f3002500 81ee0200f3002500 217d400079802500 81ee0200f3002500 81ee0200f3002500 217d400079802500 81ee0200f3002500 217d400079802500 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; }; - {e=>'UE0',a=>7,d=>4,j=>-44,c=>0,k=>0,h=>0,b=>2,g=>5,f=>1,i=>'SEM4'} 178800000501d400 178800000501d400 178800000501d400 e8404000a200d400 178800000501d400 178800000501d400 e8404000a200d400 178800000501d400 e8404000a200d400 - {e=>'UE6',a=>0,d=>4,j=>-58,c=>2,k=>1,h=>1,b=>-2,g=>2,f=>3,i=>'SEM3'} b0e801004a01c601 b0e801004a01c601 b0e801004a01c601 194cc0004680c620 b0e801004a01c601 b0e801004a01c601 194cc0004680c620 b0e801004a01c601 194cc0004680c620 - {e=>'UE7',a=>0,d=>4,j=>-25,c=>-4,k=>2,h=>-4,b=>1,g=>6,f=>3,i=>'SEM1'} 08f90100e601e702 08f90100e601e702 08f90100e601e702 064ec000d380e740 08f90100e601e702 08f90100e601e702 064ec000d380e740 08f90100e601e702 064ec000d380e740 - {e=>'UE0',a=>0,d=>5,j=>87,c=>2,k=>4,h=>1,b=>2,g=>5,f=>4,i=>'SEM2'} 900a02008d015704 900a02008d015704 900a02008d015704 09510000a7005780 900a02008d015704 900a02008d015704 09510000a7005780 900a02008d015704 09510000a7005780 - {e=>'UE3',a=>6,d=>5,j=>-127,c=>0,k=>4,h=>2,b=>-3,g=>7,f=>6,i=>'SE0'} 2e3a030017008104 2e3a030017008104 2e3a030017008104 d4578000e8008180 2e3a030017008104 2e3a030017008104 d4578000e8008180 2e3a030017008104 d4578000e8008180 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>'UE1',a=>5,d=>7,j=>116,l=>-1,c=>2,k=>3,h=>-4,b=>0,g=>0,f=>1,i=>'SE3'} 859e0000e000743b 859e0000e000743b 859e0000e000743b a17240001180747c 859e0000e000743b 859e0000e000743b a17240001180747c 859e0000e000743b a17240001180747c - {e=>'UE0',a=>3,d=>5,j=>-63,l=>3,c=>-4,k=>7,h=>2,b=>0,g=>1,f=>1,i=>'SEM2'} 038b00009101c11f 038b00009101c11f 038b00009101c11f 625040002b00c1ec 038b00009101c11f 038b00009101c11f 625040002b00c1ec 038b00009101c11f 625040002b00c1ec - {e=>'UE1',a=>6,d=>3,j=>-79,l=>1,c=>2,k=>1,h=>-2,b=>-4,g=>5,f=>0,i=>'SE0'} a61600003500b109 a61600003500b109 a61600003500b109 d1320000b800b124 a61600003500b109 a61600003500b109 d1320000b800b124 a61600003500b109 d1320000b800b124 - {e=>'UE1',a=>4,d=>5,j=>7,l=>2,c=>-2,k=>4,h=>-4,b=>-2,g=>3,f=>7,i=>'SE1'} b49b030063000714 b49b030063000714 b49b030063000714 9b53c00070800788 b49b030063000714 b49b030063000714 9b53c00070800788 b49b030063000714 9b53c00070800788 - {e=>'UE2',a=>5,d=>0,j=>41,l=>-2,c=>-4,k=>4,h=>-1,b=>3,g=>5,f=>4,i=>'SEM2'} 1d210200bd012934 1d210200bd012934 1d210200bd012934 ae050000bf002998 1d210200bd012934 1d210200bd012934 ae050000bf002998 1d210200bd012934 ae050000bf002998 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>'UE1',a=>1,m=>3,d=>5,j=>80,l=>-4,c=>-4,k=>7,h=>-2,b=>1,g=>5,f=>1,i=>'SEM4'} 099b00003501502703000000 099b00003501502703000000 099b00003501502703000000 26524000ba0050f060000000 099b00003501502703000000 099b00003501502703000000 26524000ba0050f060000000 099b00003501502703000000 26524000ba0050f060000000 - {e=>'UE0',a=>3,m=>1,d=>7,j=>-49,l=>-4,c=>-3,k=>5,h=>0,b=>-1,g=>3,f=>5,i=>'SEM4'} 7b8f02000301cf2501000000 7b8f02000301cf2501000000 7b8f02000301cf2501000000 7ef140006200cfb020000000 7b8f02000301cf2501000000 7b8f02000301cf2501000000 7ef140006200cfb020000000 7b8f02000301cf2501000000 7ef140006200cfb020000000 - {e=>'UE5',a=>3,m=>7,d=>7,j=>100,l=>-4,c=>1,k=>4,h=>0,b=>-3,g=>1,f=>7,i=>'SE3'} 6bde0300c100642407000000 6bde0300c100642407000000 6bde0300c100642407000000 74fbc00021806490e0000000 6bde0300c100642407000000 6bde0300c100642407000000 74fbc00021806490e0000000 6bde0300c100642407000000 74fbc00021806490e0000000 - {e=>'UE5',a=>7,m=>2,d=>0,j=>-111,l=>1,c=>2,k=>6,h=>0,b=>0,g=>4,f=>7,i=>'SEM3'} 87d003004401910e02000000 87d003004401910e02000000 87d003004401910e02000000 e10bc000828091c440000000 87d003004401910e02000000 87d003004401910e02000000 e10bc000828091c440000000 87d003004401910e02000000 e10bc000828091c440000000 - {e=>'UE1',a=>6,m=>1,d=>3,j=>78,l=>-2,c=>-2,k=>1,h=>-3,b=>3,g=>4,f=>5,i=>'SE0'} 9e9702002c004e3101000000 9e9702002c004e3101000000 9e9702002c004e3101000000 cf33400094004e3820000000 9e9702002c004e3101000000 9e9702002c004e3101000000 cf33400094004e3820000000 9e9702002c004e3101000000 cf33400094004e3820000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>'UE0',n=>164,a=>0,m=>3,d=>1,j=>-21,l=>-4,c=>2,k=>3,h=>-4,b=>1,g=>0,f=>5,i=>'SE2'} 88820200a000eb2303a40000 88820200a000eb2303a40000 88820200a000eb2303a40000 051140001100eb7060a40000 88820200a000eb2303a40000 88820200a000eb2303a40000 051140001100eb7060a40000 88820200a000eb2303a40000 051140001100eb7060a40000 - {e=>'UE6',n=>235,a=>5,m=>3,d=>0,j=>122,l=>0,c=>-2,k=>5,h=>3,b=>-2,g=>6,f=>1,i=>'SEM3'} b5e100005e017a0503eb0000 b5e100005e017a0503eb0000 b5e100005e017a0503eb0000 bb0c4000ce807aa060eb0000 b5e100005e017a0503eb0000 b5e100005e017a0503eb0000 bb0c4000ce807aa060eb0000 b5e100005e017a0503eb0000 bb0c4000ce807aa060eb0000 - {e=>'UE2',n=>226,a=>5,m=>6,d=>1,j=>0,l=>0,c=>-4,k=>4,h=>3,b=>-2,g=>1,f=>5,i=>'SEM3'} 35a302005901000406e20000 35a302005901000406e20000 35a302005901000406e20000 ba1540002e800080c0e20000 35a302005901000406e20000 35a302005901000406e20000 ba1540002e800080c0e20000 35a302005901000406e20000 ba1540002e800080c0e20000 - {e=>'UE4',n=>153,a=>0,m=>7,d=>6,j=>106,l=>-2,c=>1,k=>6,h=>2,b=>2,g=>2,f=>2,i=>'SE3'} 504c0100d2006a3607990000 504c0100d2006a3607990000 504c0100d2006a3607990000 08e8800049806ad8e0990000 504c0100d2006a3607990000 504c0100d2006a3607990000 08e8800049806ad8e0990000 504c0100d2006a3607990000 08e8800049806ad8e0990000 - {e=>'UE5',n=>143,a=>3,m=>3,d=>4,j=>112,l=>3,c=>1,k=>5,h=>-4,b=>-1,g=>3,f=>7,i=>'SEM4'} 7bd803002301701d038f0000 7bd803002301701d038f0000 7bd803002301701d038f0000 7ccbc000720070ac608f0000 7bd803002301701d038f0000 7bd803002301701d038f0000 7ccbc000720070ac608f0000 7bd803002301701d038f0000 7ccbc000720070ac608f0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; }; - {a=>35,b=>4} 23040000 23040000 23040000 23800000 23040000 23040000 23800000 23040000 23800000 - {a=>-103,b=>7} 99070000 99070000 99070000 99e00000 99070000 99070000 99e00000 99070000 99e00000 - {a=>-90,b=>6} a6060000 a6060000 a6060000 a6c00000 a6060000 a6060000 a6c00000 a6060000 a6c00000 - {a=>-77,b=>1} b3010000 b3010000 b3010000 b3200000 b3010000 b3010000 b3200000 b3010000 b3200000 - {a=>73,b=>6} 49060000 49060000 49060000 49c00000 49060000 49060000 49c00000 49060000 49c00000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>8,b=>7} 08270000 08270000 08270000 08f00000 08270000 08270000 08f00000 08270000 08f00000 - {c=>-4,a=>110,b=>2} 6e220000 6e220000 6e220000 6e500000 6e220000 6e220000 6e500000 6e220000 6e500000 - {c=>0,a=>-68,b=>0} bc000000 bc000000 bc000000 bc000000 bc000000 bc000000 bc000000 bc000000 bc000000 - {c=>0,a=>7,b=>7} 07070000 07070000 07070000 07e00000 07070000 07070000 07e00000 07070000 07e00000 - {c=>1,a=>-91,b=>5} a50d0000 a50d0000 a50d0000 a5a40000 a50d0000 a50d0000 a5a40000 a50d0000 a5a40000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>-105,b=>7,d=>1} 97770000 97770000 97770000 97f88000 97770000 97770000 97f88000 97770000 97f88000 - {c=>0,a=>68,b=>2,d=>-1} 44c20100 44c20100 44c20100 44438000 44c20100 44c20100 44438000 44c20100 44438000 - {c=>3,a=>66,b=>2,d=>-4} 421a0100 421a0100 421a0100 424e0000 421a0100 421a0100 424e0000 421a0100 424e0000 - {c=>-2,a=>-3,b=>5,d=>2} fdb50000 fdb50000 fdb50000 fdb90000 fdb50000 fdb50000 fdb90000 fdb50000 fdb90000 - {c=>2,a=>-69,b=>0,d=>2} bb900000 bb900000 bb900000 bb090000 bb900000 bb900000 bb090000 bb900000 bb090000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>5,c=>-4,a=>-27,b=>0,d=>2} e5a00a00 e5a00a00 e5a00a00 e5115000 e5a00a00 e5a00a00 e5115000 e5a00a00 e5115000 - {e=>6,c=>-1,a=>67,b=>7,d=>-4} 433f0d00 433f0d00 433f0d00 43fe6000 433f0d00 433f0d00 43fe6000 433f0d00 43fe6000 - {e=>5,c=>-3,a=>-14,b=>5,d=>0} f22d0a00 f22d0a00 f22d0a00 f2b45000 f22d0a00 f22d0a00 f2b45000 f22d0a00 f2b45000 - {e=>7,c=>-3,a=>-84,b=>6,d=>0} ac2e0e00 ac2e0e00 ac2e0e00 acd47000 ac2e0e00 ac2e0e00 acd47000 ac2e0e00 acd47000 - {e=>4,c=>-1,a=>49,b=>2,d=>-1} 31fa0900 31fa0900 31fa0900 315fc000 31fa0900 31fa0900 315fc000 31fa0900 315fc000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>1,c=>2,a=>83,b=>0,d=>1,f=>'UE5'} 53505200 53505200 53505200 53089a00 53505200 53505200 53089a00 53505200 53089a00 - {e=>2,c=>-2,a=>-120,b=>2,d=>-3,f=>'UE1'} 88721500 88721500 88721500 885aa200 88721500 88721500 885aa200 88721500 885aa200 - {e=>7,c=>2,a=>-63,b=>6,d=>-1,f=>'UE4'} c1d64f00 c1d64f00 c1d64f00 c1cbf800 c1d64f00 c1d64f00 c1cbf800 c1d64f00 c1cbf800 - {e=>3,c=>2,a=>-5,b=>1,d=>-1,f=>'UE3'} fbd13700 fbd13700 fbd13700 fb2bb600 fbd13700 fbd13700 fb2bb600 fbd13700 fb2bb600 - {e=>3,c=>-1,a=>107,b=>5,d=>-1,f=>'UE2'} 6bfd2700 6bfd2700 6bfd2700 6bbfb400 6bfd2700 6bfd2700 6bbfb400 6bfd2700 6bbfb400 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>3,c=>-2,a=>0,g=>4,b=>0,d=>2,f=>'UE6'} 00b06602 00b06602 00b06602 00193d00 00b06602 00b06602 00193d00 00b06602 00193d00 - {e=>1,c=>1,a=>30,g=>6,b=>2,d=>-2,f=>'UE4'} 1e8a4303 1e8a4303 1e8a4303 1e471980 1e8a4303 1e8a4303 1e471980 1e8a4303 1e471980 - {e=>6,c=>3,a=>4,g=>1,b=>4,d=>0,f=>'UE7'} 041cfc00 041cfc00 041cfc00 048c6e40 041cfc00 041cfc00 048c6e40 041cfc00 048c6e40 - {e=>7,c=>-1,a=>-95,g=>6,b=>5,d=>1,f=>'UE6'} a17d6e03 a17d6e03 a17d6e03 a1bcfd80 a17d6e03 a17d6e03 a1bcfd80 a17d6e03 a1bcfd80 - {e=>7,c=>2,a=>-102,g=>2,b=>3,d=>2,f=>'UE3'} 9a933e01 9a933e01 9a933e01 9a697680 9a933e01 9a933e01 9a697680 9a933e01 9a697680 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>2,c=>-3,a=>17,g=>0,b=>7,d=>-4,f=>'UE0'} 112f0500 112f0500 112f0500 11f62000 112f0500 112f0500 11f62000 112f0500 11f62000 - {e=>5,c=>1,a=>-35,g=>5,b=>3,d=>0,f=>'UE7'} dd0bfa02 dd0bfa02 dd0bfa02 dd645f40 dd0bfa02 dd0bfa02 dd645f40 dd0bfa02 dd645f40 - {e=>3,c=>1,a=>-16,g=>3,b=>3,d=>-4,f=>'UE1'} f00b9701 f00b9701 f00b9701 f06632c0 f00b9701 f00b9701 f06632c0 f00b9701 f06632c0 - {e=>6,c=>3,a=>-120,g=>6,b=>3,d=>-2,f=>'UE6'} 889b6d03 889b6d03 889b6d03 886f6d80 889b6d03 889b6d03 886f6d80 889b6d03 886f6d80 - {e=>6,c=>1,a=>-121,g=>1,b=>7,d=>-4,f=>'UE3'} 870fbd00 870fbd00 870fbd00 87e66640 870fbd00 870fbd00 87e66640 870fbd00 87e66640 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>72,d=>-1,c=>-3,h=>1,b=>0,g=>2,f=>'UE5'} 48e85b0101000000 48e85b0101000000 48e85b0101000000 4817da8020000000 48e85b0101000000 48e85b0101000000 4817da8020000000 48e85b0101000000 4817da8020000000 - {e=>3,a=>-54,d=>1,c=>-4,h=>3,b=>0,g=>2,f=>'UE3'} ca60360103000000 ca60360103000000 ca60360103000000 ca10b68060000000 ca60360103000000 ca60360103000000 ca10b68060000000 ca60360103000000 ca10b68060000000 - {e=>0,a=>-29,d=>3,c=>1,h=>1,b=>2,g=>7,f=>'UE1'} e3ca900301000000 e3ca900301000000 e3ca900301000000 e34583c020000000 e3ca900301000000 e3ca900301000000 e34583c020000000 e3ca900301000000 e34583c020000000 - {e=>5,a=>60,d=>-4,c=>3,h=>1,b=>5,g=>1,f=>'UE4'} 3c1dcb0001000000 3c1dcb0001000000 3c1dcb0001000000 3cae584020000000 3c1dcb0001000000 3c1dcb0001000000 3cae584020000000 3c1dcb0001000000 3cae584020000000 - {e=>3,a=>21,d=>1,c=>0,h=>7,b=>2,g=>2,f=>'UE7'} 1542760107000000 1542760107000000 1542760107000000 1540be80e0000000 1542760107000000 1542760107000000 1540be80e0000000 1542760107000000 1540be80e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>3,a=>31,d=>-2,c=>0,h=>4,b=>1,g=>4,f=>'UE7',i=>-3} 1f8177022c000000 1f8177022c000000 1f8177022c000000 1f233f0094000000 1f8177022c000000 1f8177022c000000 1f233f0094000000 1f8177022c000000 1f233f0094000000 - {e=>7,a=>-56,d=>-4,c=>0,h=>3,b=>0,g=>6,f=>'UE0',i=>1} c8000f030b000000 c8000f030b000000 c8000f030b000000 c802718064000000 c8000f030b000000 c8000f030b000000 c802718064000000 c8000f030b000000 c802718064000000 - {e=>4,a=>-92,d=>3,c=>3,h=>0,b=>7,g=>7,f=>'UE0',i=>-2} a4df880330000000 a4df880330000000 a4df880330000000 a4edc1c018000000 a4df880330000000 a4df880330000000 a4edc1c018000000 a4df880330000000 a4edc1c018000000 - {e=>7,a=>27,d=>1,c=>-4,h=>7,b=>6,g=>4,f=>'UE1',i=>1} 1b661e020f000000 1b661e020f000000 1b661e020f000000 1bd0f300e4000000 1b661e020f000000 1b661e020f000000 1bd0f300e4000000 1b661e020f000000 1bd0f300e4000000 - {e=>0,a=>-28,d=>1,c=>1,h=>1,b=>2,g=>5,f=>'UE1',i=>2} e44a900211000000 e44a900211000000 e44a900211000000 e444834028000000 e44a900211000000 e44a900211000000 e444834028000000 e44a900211000000 e444834028000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>43,d=>-4,j=>'SEM1',c=>-2,h=>5,b=>1,g=>0,f=>'UE6',i=>0} 2b316b00c5010000 2b316b00c5010000 2b316b00c5010000 2b3a5c00a3800000 2b316b00c5010000 2b316b00c5010000 2b3a5c00a3800000 2b316b00c5010000 2b3a5c00a3800000 - {e=>1,a=>-116,d=>-3,j=>'SE2',c=>-3,h=>4,b=>4,g=>3,f=>'UE6',i=>1} 8c6ce3018c000000 8c6ce3018c000000 8c6ce3018c000000 8c969cc085000000 8c6ce3018c000000 8c6ce3018c000000 8c969cc085000000 8c6ce3018c000000 8c969cc085000000 - {e=>5,a=>-97,d=>-4,j=>'SE2',c=>0,h=>6,b=>6,g=>2,f=>'UE0',i=>2} 9f060b0196000000 9f060b0196000000 9f060b0196000000 9fc25080c9000000 9f060b0196000000 9f060b0196000000 9fc25080c9000000 9f060b0196000000 9fc25080c9000000 - {e=>3,a=>-10,d=>0,j=>'SE1',c=>-4,h=>1,b=>4,g=>4,f=>'UE7',i=>-3} f624760269000000 f624760269000000 f624760269000000 f6903f0034800000 f624760269000000 f624760269000000 f6903f0034800000 f624760269000000 f6903f0034800000 - {e=>0,a=>-83,d=>3,j=>'SEM4',c=>-1,h=>3,b=>7,g=>0,f=>'UE0',i=>2} adff000013010000 adff000013010000 adff000013010000 adfd80006a000000 adff000013010000 adff000013010000 adfd80006a000000 adff000013010000 adfd80006a000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>-72,d=>1,j=>'SEM4',c=>-2,k=>-69,h=>2,b=>2,g=>4,f=>'UE6',i=>-3} b87268022a01bb00 b87268022a01bb00 b87268022a01bb00 b858cd005600bb00 b87268022a01bb00 b87268022a01bb00 b858cd005600bb00 b87268022a01bb00 b858cd005600bb00 - {e=>3,a=>-74,d=>3,j=>'SE1',c=>1,k=>-22,h=>7,b=>7,g=>1,f=>'UE4',i=>1} b6cfc6004f00ea00 b6cfc6004f00ea00 b6cfc6004f00ea00 b6e5b840e480ea00 b6cfc6004f00ea00 b6cfc6004f00ea00 b6e5b840e480ea00 b6cfc6004f00ea00 b6e5b840e480ea00 - {e=>2,a=>-35,d=>3,j=>'SE0',c=>-3,k=>-17,h=>4,b=>5,g=>0,f=>'UE7',i=>-1} dded74003c00ef00 dded74003c00ef00 dded74003c00ef00 ddb5ae009c00ef00 dded74003c00ef00 dded74003c00ef00 ddb5ae009c00ef00 dded74003c00ef00 ddb5ae009c00ef00 - {e=>6,a=>36,d=>-4,j=>'SEM2',c=>-4,k=>-49,h=>0,b=>3,g=>4,f=>'UE3',i=>-2} 24233d02b001cf00 24233d02b001cf00 24233d02b001cf00 247267001b00cf00 24233d02b001cf00 24233d02b001cf00 247267001b00cf00 24233d02b001cf00 247267001b00cf00 - {e=>0,a=>34,d=>-3,j=>'SEM2',c=>0,k=>9,h=>2,b=>6,g=>4,f=>'UE3',i=>-1} 22463102ba010900 22463102ba010900 22463102ba010900 22c287005f000900 22463102ba010900 22463102ba010900 22c287005f000900 22463102ba010900 22c287005f000900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>7,a=>-52,d=>0,j=>'SE0',l=>6,c=>0,k=>67,h=>4,b=>1,g=>4,f=>'UE1',i=>3} cc011e021c004306 cc011e021c004306 cc011e021c004306 cc2073008c0043c0 cc011e021c004306 cc011e021c004306 cc2073008c0043c0 cc011e021c004306 cc2073008c0043c0 - {e=>0,a=>104,d=>-4,j=>'SE3',l=>4,c=>1,k=>-98,h=>7,b=>1,g=>2,f=>'UE1',i=>-1} 68091101ff009e04 68091101ff009e04 68091101ff009e04 68260280fd809e80 68091101ff009e04 68091101ff009e04 68260280fd809e80 68091101ff009e04 68260280fd809e80 - {e=>1,a=>88,d=>-1,j=>'SE2',l=>4,c=>-2,k=>51,h=>4,b=>2,g=>4,f=>'UE2',i=>-2} 58f22302b4003304 58f22302b4003304 58f22302b4003304 585b950099003380 58f22302b4003304 58f22302b4003304 585b950099003380 58f22302b4003304 585b950099003380 - {e=>2,a=>-81,d=>2,j=>'SE0',l=>2,c=>0,k=>87,h=>1,b=>1,g=>6,f=>'UE4',i=>0} af81440301005702 af81440301005702 af81440301005702 af21298020005740 af81440301005702 af81440301005702 af21298020005740 af81440301005702 af21298020005740 - {e=>5,a=>-126,d=>2,j=>'SE3',l=>6,c=>-3,k=>79,h=>0,b=>3,g=>4,f=>'UE4',i=>1} 82ab4a02c8004f06 82ab4a02c8004f06 82ab4a02c8004f06 8275590005804fc0 82ab4a02c8004f06 82ab4a02c8004f06 8275590005804fc0 82ab4a02c8004f06 8275590005804fc0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-69,m=>2,d=>2,j=>'SE1',l=>1,c=>2,k=>35,h=>6,b=>4,g=>4,f=>'UE5',i=>3} bb9458025e002311 bb9458025e002311 bb9458025e002311 bb894b00cc802328 bb9458025e002311 bb9458025e002311 bb894b00cc802328 bb9458025e002311 bb894b00cc802328 - {e=>7,a=>87,m=>-2,d=>-4,j=>'SEM4',l=>1,c=>-1,k=>1,h=>7,b=>6,g=>4,f=>'UE4',i=>2} 573e4f0217010131 573e4f0217010131 573e4f0217010131 57de7900ea000138 573e4f0217010131 573e4f0217010131 57de7900ea000138 573e4f0217010131 57de7900ea000138 - {e=>6,a=>-102,m=>1,d=>3,j=>'SEM4',l=>2,c=>-4,k=>78,h=>5,b=>7,g=>6,f=>'UE3',i=>-3} 9ae73c032d014e0a 9ae73c032d014e0a 9ae73c032d014e0a 9af1e780b6004e44 9ae73c032d014e0a 9ae73c032d014e0a 9af1e780b6004e44 9ae73c032d014e0a 9af1e780b6004e44 - {e=>0,a=>122,m=>2,d=>-1,j=>'SEM2',l=>4,c=>-1,k=>-59,h=>6,b=>4,g=>0,f=>'UE1',i=>-3} 7afc1100ae01c514 7afc1100ae01c514 7afc1100ae01c514 7a9f8200d700c588 7afc1100ae01c514 7afc1100ae01c514 7a9f8200d700c588 7afc1100ae01c514 7a9f8200d700c588 - {e=>2,a=>91,m=>2,d=>2,j=>'SEM4',l=>2,c=>0,k=>-51,h=>2,b=>4,g=>3,f=>'UE2',i=>3} 5b84a4011a01cd12 5b84a4011a01cd12 5b84a4011a01cd12 5b8124c04e00cd48 5b84a4011a01cd12 5b84a4011a01cd12 5b8124c04e00cd48 5b84a4011a01cd12 5b8124c04e00cd48 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>0,a=>40,m=>0,d=>-2,j=>'SEM1',l=>4,c=>-3,k=>69,h=>7,b=>4,g=>3,f=>'UE0',i=>-1} 28ac8d01ff01450400000000 28ac8d01ff01450400000000 28ac8d01ff01450400000000 289760c0ff80458000000000 28ac8d01ff01450400000000 28ac8d01ff01450400000000 289760c0ff80458000000000 28ac8d01ff01450400000000 289760c0ff80458000000000 - {e=>4,n=>6,a=>30,m=>1,d=>3,j=>'SEM1',l=>0,c=>-2,k=>-11,h=>4,b=>6,g=>7,f=>'UE3',i=>-1} 1ef6b803fc01f50806000000 1ef6b803fc01f50806000000 1ef6b803fc01f50806000000 1ed9c7c09f80f504c0000000 1ef6b803fc01f50806000000 1ef6b803fc01f50806000000 1ed9c7c09f80f504c0000000 1ef6b803fc01f50806000000 1ed9c7c09f80f504c0000000 - {e=>7,n=>3,a=>-38,m=>3,d=>2,j=>'SEM4',l=>2,c=>-2,k=>-84,h=>7,b=>7,g=>3,f=>'UE2',i=>3} dab7ae011f01ac1a03000000 dab7ae011f01ac1a03000000 dab7ae011f01ac1a03000000 daf974c0ee00ac4c60000000 dab7ae011f01ac1a03000000 dab7ae011f01ac1a03000000 daf974c0ee00ac4c60000000 dab7ae011f01ac1a03000000 daf974c0ee00ac4c60000000 - {e=>0,n=>3,a=>39,m=>0,d=>1,j=>'SEM3',l=>7,c=>3,k=>-120,h=>5,b=>2,g=>6,f=>'UE2',i=>3} 275a20035d01880703000000 275a20035d01880703000000 275a20035d01880703000000 274c8580ae8088e060000000 275a20035d01880703000000 275a20035d01880703000000 274c8580ae8088e060000000 275a20035d01880703000000 274c8580ae8088e060000000 - {e=>5,n=>5,a=>-10,m=>-4,d=>-1,j=>'SEM3',l=>5,c=>0,k=>23,h=>7,b=>0,g=>7,f=>'UE7',i=>0} f6c0fb034701172505000000 f6c0fb034701172505000000 f6c0fb034701172505000000 f603dfc0e28017b0a0000000 f6c0fb034701172505000000 f6c0fb034701172505000000 f603dfc0e28017b0a0000000 f6c0fb034701172505000000 f603dfc0e28017b0a0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>4,a=>-49,m=>-4,d=>-2,j=>'SE3',l=>1,c=>0,k=>-90,h=>0,b=>3,g=>1,f=>'UE1',o=>232,i=>1} cf839500c800a62104e80000 cf839500c800a62104e80000 cf839500c800a62104e80000 cf6322400580a63080e80000 cf839500c800a62104e80000 cf839500c800a62104e80000 cf6322400580a63080e80000 cf839500c800a62104e80000 cf6322400580a63080e80000 - {e=>6,n=>2,a=>4,m=>1,d=>3,j=>'SEM2',l=>1,c=>1,k=>-19,h=>7,b=>4,g=>3,f=>'UE0',o=>88,i=>1} 04cc8c018f01ed0902580000 04cc8c018f01ed0902580000 04cc8c018f01ed0902580000 0485e0c0e700ed2440580000 04cc8c018f01ed0902580000 04cc8c018f01ed0902580000 0485e0c0e700ed2440580000 04cc8c018f01ed0902580000 0485e0c0e700ed2440580000 - {e=>4,n=>7,a=>61,m=>0,d=>2,j=>'SE1',l=>6,c=>-1,k=>113,h=>2,b=>6,g=>5,f=>'UE6',o=>234,i=>2} 3dbee8025200710607ea0000 3dbee8025200710607ea0000 3dbee8025200710607ea0000 3ddd4d40488071c0e0ea0000 3dbee8025200710607ea0000 3dbee8025200710607ea0000 3ddd4d40488071c0e0ea0000 3dbee8025200710607ea0000 3ddd4d40488071c0e0ea0000 - {e=>1,n=>0,a=>-69,m=>-2,d=>2,j=>'SE0',l=>0,c=>0,k=>38,h=>4,b=>5,g=>1,f=>'UE6',o=>145,i=>-2} bb85e2003400263000910000 bb85e2003400263000910000 bb85e2003400263000910000 bba11c409800261800910000 bb85e2003400263000910000 bb85e2003400263000910000 bba11c409800261800910000 bb85e2003400263000910000 bba11c409800261800910000 - {e=>3,n=>2,a=>-1,m=>-1,d=>2,j=>'SEM3',l=>1,c=>1,k=>-52,h=>3,b=>1,g=>2,f=>'UE1',o=>195,i=>-3} ff8916016b01cc3902c30000 ff8916016b01cc3902c30000 ff8916016b01cc3902c30000 ff2532807680cc3c40c30000 ff8916016b01cc3902c30000 ff8916016b01cc3902c30000 ff2532807680cc3c40c30000 ff8916016b01cc3902c30000 ff2532807680cc3c40c30000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; }; - {a=>-117,b=>5} 8bff0500 8bff0500 8bff0500 ff8ba000 8bff0500 8bff0500 ff8ba000 8bff0500 ff8ba000 - {a=>72,b=>7} 48000700 48000700 48000700 0048e000 48000700 48000700 0048e000 48000700 0048e000 - {a=>10,b=>5} 0a000500 0a000500 0a000500 000aa000 0a000500 0a000500 000aa000 0a000500 000aa000 - {a=>-60,b=>2} c4ff0200 c4ff0200 c4ff0200 ffc44000 c4ff0200 c4ff0200 ffc44000 c4ff0200 ffc44000 - {a=>-76,b=>6} b4ff0600 b4ff0600 b4ff0600 ffb4c000 b4ff0600 b4ff0600 ffb4c000 b4ff0600 ffb4c000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>-67,b=>0} bdff2000 bdff2000 bdff2000 ffbd1000 bdff2000 bdff2000 ffbd1000 bdff2000 ffbd1000 - {c=>-3,a=>-101,b=>6} 9bff2e00 9bff2e00 9bff2e00 ff9bd400 9bff2e00 9bff2e00 ff9bd400 9bff2e00 ff9bd400 - {c=>2,a=>-19,b=>7} edff1700 edff1700 edff1700 ffede800 edff1700 edff1700 ffede800 edff1700 ffede800 - {c=>-2,a=>92,b=>7} 5c003700 5c003700 5c003700 005cf800 5c003700 5c003700 005cf800 5c003700 005cf800 - {c=>3,a=>46,b=>7} 2e001f00 2e001f00 2e001f00 002eec00 2e001f00 2e001f00 002eec00 2e001f00 002eec00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>79,b=>0,d=>0} 4f002000 4f002000 4f002000 004f1000 4f002000 4f002000 004f1000 4f002000 004f1000 - {c=>-3,a=>93,b=>4,d=>0} 5d002c00 5d002c00 5d002c00 005d9400 5d002c00 5d002c00 005d9400 5d002c00 005d9400 - {c=>-3,a=>-14,b=>5,d=>-1} f2ffed01 f2ffed01 f2ffed01 fff2b780 f2ffed01 f2ffed01 fff2b780 f2ffed01 fff2b780 - {c=>0,a=>-47,b=>4,d=>-4} d1ff0401 d1ff0401 d1ff0401 ffd18200 d1ff0401 d1ff0401 ffd18200 d1ff0401 ffd18200 - {c=>2,a=>-7,b=>5,d=>2} f9ff9500 f9ff9500 f9ff9500 fff9a900 f9ff9500 f9ff9500 fff9a900 f9ff9500 fff9a900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>6,c=>-1,a=>-71,b=>2,d=>0} b9ff3a0c b9ff3a0c b9ff3a0c ffb95c60 b9ff3a0c b9ff3a0c ffb95c60 b9ff3a0c ffb95c60 - {e=>0,c=>-1,a=>-25,b=>1,d=>3} e7fff900 e7fff900 e7fff900 ffe73d80 e7fff900 e7fff900 ffe73d80 e7fff900 ffe73d80 - {e=>0,c=>0,a=>-15,b=>4,d=>-4} f1ff0401 f1ff0401 f1ff0401 fff18200 f1ff0401 f1ff0401 fff18200 f1ff0401 fff18200 - {e=>6,c=>-1,a=>26,b=>6,d=>-3} 1a007e0d 1a007e0d 1a007e0d 001adee0 1a007e0d 1a007e0d 001adee0 1a007e0d 001adee0 - {e=>7,c=>3,a=>-24,b=>1,d=>2} e8ff990e e8ff990e e8ff990e ffe82d70 e8ff990e e8ff990e ffe82d70 e8ff990e ffe82d70 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>2,c=>-3,a=>-20,b=>5,d=>3,f=>'UE1'} ecffed14 ecffed14 ecffed14 ffecb5a2 ecffed14 ecffed14 ffecb5a2 ecffed14 ffecb5a2 - {e=>1,c=>2,a=>47,b=>6,d=>2,f=>'UE3'} 2f009632 2f009632 2f009632 002fc916 2f009632 2f009632 002fc916 2f009632 002fc916 - {e=>6,c=>1,a=>16,b=>5,d=>0,f=>'UE7'} 10000d7c 10000d7c 10000d7c 0010a46e 10000d7c 10000d7c 0010a46e 10000d7c 0010a46e - {e=>6,c=>-2,a=>102,b=>5,d=>2,f=>'UE1'} 6600b51c 6600b51c 6600b51c 0066b962 6600b51c 6600b51c 0066b962 6600b51c 0066b962 - {e=>3,c=>-3,a=>-74,b=>2,d=>-4,f=>'UE7'} b6ff2a77 b6ff2a77 b6ff2a77 ffb6563e b6ff2a77 b6ff2a77 ffb6563e b6ff2a77 ffb6563e = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>5,c=>3,a=>65,g=>2,b=>7,d=>0,f=>'UE3'} 41001f3a02000000 41001f3a02000000 41001f3a02000000 0041ec5640000000 41001f3a02000000 41001f3a02000000 0041ec5640000000 41001f3a02000000 0041ec5640000000 - {e=>1,c=>-1,a=>17,g=>4,b=>3,d=>3,f=>'UE4'} 1100fb4204000000 1100fb4204000000 1100fb4204000000 00117d9880000000 1100fb4204000000 1100fb4204000000 00117d9880000000 1100fb4204000000 00117d9880000000 - {e=>0,c=>1,a=>100,g=>1,b=>1,d=>1,f=>'UE5'} 6400495001000000 6400495001000000 6400495001000000 0064248a20000000 6400495001000000 6400495001000000 0064248a20000000 6400495001000000 0064248a20000000 - {e=>5,c=>1,a=>90,g=>5,b=>1,d=>3,f=>'UE4'} 5a00c94a05000000 5a00c94a05000000 5a00c94a05000000 005a25d8a0000000 5a00c94a05000000 5a00c94a05000000 005a25d8a0000000 5a00c94a05000000 005a25d8a0000000 - {e=>5,c=>3,a=>-34,g=>1,b=>7,d=>1,f=>'UE7'} deff5f7a01000000 deff5f7a01000000 deff5f7a01000000 ffdeecde20000000 deff5f7a01000000 deff5f7a01000000 ffdeecde20000000 deff5f7a01000000 ffdeecde20000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>6,c=>-1,a=>-29,g=>4,b=>0,d=>0,f=>'UE0'} e3ff380c04000000 e3ff380c04000000 e3ff380c04000000 ffe31c6080000000 e3ff380c04000000 e3ff380c04000000 ffe31c6080000000 e3ff380c04000000 ffe31c6080000000 - {e=>4,c=>1,a=>-112,g=>5,b=>1,d=>-4,f=>'UE6'} 90ff096905000000 90ff096905000000 90ff096905000000 ff90264ca0000000 90ff096905000000 90ff096905000000 ff90264ca0000000 90ff096905000000 ff90264ca0000000 - {e=>4,c=>-1,a=>-66,g=>1,b=>4,d=>2,f=>'UE0'} beffbc0801000000 beffbc0801000000 beffbc0801000000 ffbe9d4020000000 beffbc0801000000 beffbc0801000000 ffbe9d4020000000 beffbc0801000000 ffbe9d4020000000 - {e=>7,c=>-3,a=>-106,g=>5,b=>5,d=>-1,f=>'UE2'} 96ffed2f05000000 96ffed2f05000000 96ffed2f05000000 ff96b7f4a0000000 96ffed2f05000000 96ffed2f05000000 ff96b7f4a0000000 96ffed2f05000000 ff96b7f4a0000000 - {e=>7,c=>3,a=>-85,g=>4,b=>5,d=>-1,f=>'UE5'} abffdd5f04000000 abffdd5f04000000 abffdd5f04000000 ffabaffa80000000 abffdd5f04000000 abffdd5f04000000 ffabaffa80000000 abffdd5f04000000 ffabaffa80000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>-70,d=>3,c=>-2,h=>1,b=>7,g=>0,f=>'UE6'} bafff7620000000001000000 bafff7620000000001000000 bafff7620000000001000000 ffbaf99c0000000020000000 bafff7620000000001000000 bafff7620000000001000000 ffbaf99c0000000020000000 bafff7620000000001000000 ffbaf99c0000000020000000 - {e=>3,a=>16,d=>-2,c=>1,h=>1,b=>3,g=>7,f=>'UE2'} 10008b270700000001000000 10008b270700000001000000 10008b270700000001000000 00106734e000000020000000 10008b270700000001000000 10008b270700000001000000 00106734e000000020000000 10008b270700000001000000 00106734e000000020000000 - {e=>7,a=>34,d=>-3,c=>-1,h=>3,b=>1,g=>4,f=>'UE6'} 2200796f0400000003000000 2200796f0400000003000000 2200796f0400000003000000 00223efc8000000060000000 2200796f0400000003000000 2200796f0400000003000000 00223efc8000000060000000 2200796f0400000003000000 00223efc8000000060000000 - {e=>1,a=>15,d=>-3,c=>-1,h=>6,b=>7,g=>7,f=>'UE0'} 0f007f030700000006000000 0f007f030700000006000000 0f007f030700000006000000 000ffe90e0000000c0000000 0f007f030700000006000000 0f007f030700000006000000 000ffe90e0000000c0000000 0f007f030700000006000000 000ffe90e0000000c0000000 - {e=>5,a=>120,d=>0,c=>3,h=>7,b=>7,g=>0,f=>'UE4'} 78001f4a0000000007000000 78001f4a0000000007000000 78001f4a0000000007000000 0078ec5800000000e0000000 78001f4a0000000007000000 78001f4a0000000007000000 0078ec5800000000e0000000 78001f4a0000000007000000 0078ec5800000000e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>110,d=>1,c=>0,h=>3,b=>1,g=>7,f=>'UE3',i=>-3} 6e00413e070000002b000000 6e00413e070000002b000000 6e00413e070000002b000000 006e20f6e000000074000000 6e00413e070000002b000000 6e00413e070000002b000000 006e20f6e000000074000000 6e00413e070000002b000000 006e20f6e000000074000000 - {e=>4,a=>-31,d=>-2,c=>-4,h=>0,b=>7,g=>7,f=>'UE7',i=>-2} e1ffa7790700000030000000 e1ffa7790700000030000000 e1ffa7790700000030000000 ffe1f34ee000000018000000 e1ffa7790700000030000000 e1ffa7790700000030000000 ffe1f34ee000000018000000 e1ffa7790700000030000000 ffe1f34ee000000018000000 - {e=>6,a=>64,d=>2,c=>-1,h=>4,b=>3,g=>5,f=>'UE5',i=>-3} 4000bb5c050000002c000000 4000bb5c050000002c000000 4000bb5c050000002c000000 00407d6aa000000094000000 4000bb5c050000002c000000 4000bb5c050000002c000000 00407d6aa000000094000000 4000bb5c050000002c000000 00407d6aa000000094000000 - {e=>5,a=>100,d=>1,c=>3,h=>5,b=>4,g=>4,f=>'UE2',i=>-1} 64005c2a040000003d000000 64005c2a040000003d000000 64005c2a040000003d000000 00648cd480000000bc000000 64005c2a040000003d000000 64005c2a040000003d000000 00648cd480000000bc000000 64005c2a040000003d000000 00648cd480000000bc000000 - {e=>5,a=>-124,d=>-4,c=>-2,h=>6,b=>1,g=>4,f=>'UE4',i=>2} 84ff314b0400000016000000 84ff314b0400000016000000 84ff314b0400000016000000 ff843a5880000000c8000000 84ff314b0400000016000000 84ff314b0400000016000000 ff843a5880000000c8000000 84ff314b0400000016000000 ff843a5880000000c8000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>6,a=>-89,d=>2,j=>'SE2',c=>0,h=>7,b=>2,g=>7,f=>'UE6',i=>-4} a7ff826c07000000a7000000 a7ff826c07000000a7000000 a7ff826c07000000a7000000 ffa7416ce0000000f1000000 a7ff826c07000000a7000000 a7ff826c07000000a7000000 ffa7416ce0000000f1000000 a7ff826c07000000a7000000 ffa7416ce0000000f1000000 - {e=>6,a=>63,d=>-2,j=>'SEM1',c=>-4,h=>2,b=>6,g=>6,f=>'UE0',i=>-1} 3f00a60d06000000fa010000 3f00a60d06000000fa010000 3f00a60d06000000fa010000 003fd360c00000005f800000 3f00a60d06000000fa010000 3f00a60d06000000fa010000 003fd360c00000005f800000 3f00a60d06000000fa010000 003fd360c00000005f800000 - {e=>4,a=>93,d=>-4,j=>'SE2',c=>3,h=>7,b=>5,g=>7,f=>'UE7',i=>-1} 5d001d7907000000bf000000 5d001d7907000000bf000000 5d001d7907000000bf000000 005dae4ee0000000fd000000 5d001d7907000000bf000000 5d001d7907000000bf000000 005dae4ee0000000fd000000 5d001d7907000000bf000000 005dae4ee0000000fd000000 - {e=>4,a=>-43,d=>0,j=>'SE3',c=>-2,h=>1,b=>7,g=>6,f=>'UE6',i=>-1} d5ff376806000000f9000000 d5ff376806000000f9000000 d5ff376806000000f9000000 ffd5f84cc00000003d800000 d5ff376806000000f9000000 d5ff376806000000f9000000 ffd5f84cc00000003d800000 d5ff376806000000f9000000 ffd5f84cc00000003d800000 - {e=>1,a=>21,d=>2,j=>'SEM3',c=>-3,h=>0,b=>6,g=>4,f=>'UE4',i=>-2} 1500ae420400000070010000 1500ae420400000070010000 1500ae420400000070010000 0015d518800000001a800000 1500ae420400000070010000 1500ae420400000070010000 0015d518800000001a800000 1500ae420400000070010000 0015d518800000001a800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>124,d=>-1,j=>'SE2',c=>2,k=>-23,h=>7,b=>1,g=>2,f=>'UE4',i=>0} 7c00d149020000008700e900 7c00d149020000008700e900 7c00d149020000008700e900 007c2bc840000000e100e900 7c00d149020000008700e900 7c00d149020000008700e900 007c2bc840000000e100e900 7c00d149020000008700e900 007c2bc840000000e100e900 - {e=>6,a=>-50,d=>-3,j=>'SE2',c=>-3,k=>-66,h=>3,b=>5,g=>2,f=>'UE5',i=>1} ceff6d5d020000008b00be00 ceff6d5d020000008b00be00 ceff6d5d020000008b00be00 ffceb6ea400000006500be00 ceff6d5d020000008b00be00 ceff6d5d020000008b00be00 ffceb6ea400000006500be00 ceff6d5d020000008b00be00 ffceb6ea400000006500be00 - {e=>4,a=>31,d=>2,j=>'SEM1',c=>-4,k=>-117,h=>1,b=>4,g=>3,f=>'UE5',i=>0} 1f00a45803000000c1018b00 1f00a45803000000c1018b00 1f00a45803000000c1018b00 001f914a6000000023808b00 1f00a45803000000c1018b00 1f00a45803000000c1018b00 001f914a6000000023808b00 1f00a45803000000c1018b00 001f914a6000000023808b00 - {e=>0,a=>-107,d=>0,j=>'SEM4',c=>-3,k=>8,h=>7,b=>7,g=>5,f=>'UE5',i=>-1} 95ff2f50050000003f010800 95ff2f50050000003f010800 95ff2f50050000003f010800 ff95f40aa0000000fe000800 95ff2f50050000003f010800 95ff2f50050000003f010800 ff95f40aa0000000fe000800 95ff2f50050000003f010800 ff95f40aa0000000fe000800 - {e=>7,a=>-5,d=>1,j=>'SEM4',c=>1,k=>71,h=>4,b=>2,g=>6,f=>'UE1',i=>2} fbff4a1e0600000014014700 fbff4a1e0600000014014700 fbff4a1e0600000014014700 fffb44f2c00000008a004700 fbff4a1e0600000014014700 fbff4a1e0600000014014700 fffb44f2c00000008a004700 fbff4a1e0600000014014700 fffb44f2c00000008a004700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>2,a=>-31,d=>2,j=>'SE1',l=>0,c=>2,k=>75,h=>7,b=>1,g=>0,f=>'UE1',i=>2} e1ff91140000000057004b00 e1ff91140000000057004b00 e1ff91140000000057004b00 ffe1292200000000e8804b00 e1ff91140000000057004b00 e1ff91140000000057004b00 ffe1292200000000e8804b00 e1ff91140000000057004b00 ffe1292200000000e8804b00 - {e=>2,a=>-101,d=>-3,j=>'SEM4',l=>4,c=>-4,k=>-56,h=>0,b=>2,g=>1,f=>'UE0',i=>-3} 9bff6205010000002801c804 9bff6205010000002801c804 9bff6205010000002801c804 ff9b52a0200000001600c880 9bff6205010000002801c804 9bff6205010000002801c804 ff9b52a0200000001600c880 9bff6205010000002801c804 ff9b52a0200000001600c880 - {e=>7,a=>79,d=>1,j=>'SE2',l=>0,c=>-4,k=>87,h=>0,b=>7,g=>2,f=>'UE6',i=>-1} 4f00676e02000000b8005700 4f00676e02000000b8005700 4f00676e02000000b8005700 004ff0fc400000001d005700 4f00676e02000000b8005700 4f00676e02000000b8005700 004ff0fc400000001d005700 4f00676e02000000b8005700 004ff0fc400000001d005700 - {e=>1,a=>44,d=>1,j=>'SE0',l=>3,c=>2,k=>97,h=>7,b=>5,g=>3,f=>'UE5',i=>3} 2c005552030000001f006103 2c005552030000001f006103 2c005552030000001f006103 002ca89a60000000ec006160 2c005552030000001f006103 2c005552030000001f006103 002ca89a60000000ec006160 2c005552030000001f006103 002ca89a60000000ec006160 - {e=>3,a=>59,d=>2,j=>'SEM3',l=>5,c=>2,k=>-17,h=>0,b=>4,g=>3,f=>'UE4',i=>1} 3b009446030000004801ef05 3b009446030000004801ef05 3b009446030000004801ef05 003b8938600000000680efa0 3b009446030000004801ef05 3b009446030000004801ef05 003b8938600000000680efa0 3b009446030000004801ef05 003b8938600000000680efa0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>54,m=>-4,d=>2,j=>'SE2',l=>1,c=>1,k=>91,h=>0,b=>5,g=>5,f=>'UE5',i=>2} 36008d500500000090005b21 36008d500500000090005b21 36008d500500000090005b21 0036a50aa000000009005b30 36008d500500000090005b21 36008d500500000090005b21 0036a50aa000000009005b30 36008d500500000090005b21 0036a50aa000000009005b30 - {e=>6,a=>-109,m=>-4,d=>1,j=>'SEM1',l=>4,c=>-2,k=>111,h=>7,b=>7,g=>7,f=>'UE7',i=>0} 93ff777c07000000c7016f24 93ff777c07000000c7016f24 93ff777c07000000c7016f24 ff93f8eee0000000e3806f90 93ff777c07000000c7016f24 93ff777c07000000c7016f24 ff93f8eee0000000e3806f90 93ff777c07000000c7016f24 ff93f8eee0000000e3806f90 - {e=>4,a=>-18,m=>-1,d=>-2,j=>'SEM4',l=>7,c=>3,k=>-106,h=>2,b=>6,g=>7,f=>'UE1',i=>-4} eeff9e19070000002201963f eeff9e19070000002201963f eeff9e19070000002201963f ffeecf42e0000000520096fc eeff9e19070000002201963f eeff9e19070000002201963f ffeecf42e0000000520096fc eeff9e19070000002201963f ffeecf42e0000000520096fc - {e=>5,a=>77,m=>1,d=>1,j=>'SE2',l=>6,c=>-2,k=>-38,h=>5,b=>1,g=>6,f=>'UE2',i=>3} 4d00712a060000009d00da0e 4d00712a060000009d00da0e 4d00712a060000009d00da0e 004d38d4c0000000ad00dac4 4d00712a060000009d00da0e 4d00712a060000009d00da0e 004d38d4c0000000ad00dac4 4d00712a060000009d00da0e 004d38d4c0000000ad00dac4 - {e=>2,a=>63,m=>2,d=>0,j=>'SEM4',l=>4,c=>-3,k=>-13,h=>0,b=>2,g=>5,f=>'UE6',i=>2} 3f002a64050000001001f314 3f002a64050000001001f314 3f002a64050000001001f314 003f542ca00000000a00f388 3f002a64050000001001f314 3f002a64050000001001f314 003f542ca00000000a00f388 3f002a64050000001001f314 003f542ca00000000a00f388 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>7,n=>1,a=>6,m=>2,d=>-1,j=>'SEM1',l=>4,c=>3,k=>-96,h=>7,b=>7,g=>2,f=>'UE0',i=>-2} 0600df0f02000000f701a01401000000 0600df0f02000000f701a01401000000 0600df0f02000000f701a01401000000 0006eff040000000fb80a08820000000 0600df0f02000000f701a01401000000 0600df0f02000000f701a01401000000 0006eff040000000fb80a08820000000 0600df0f02000000f701a01401000000 0006eff040000000fb80a08820000000 - {e=>1,n=>3,a=>-28,m=>0,d=>1,j=>'SEM4',l=>5,c=>-2,k=>118,h=>2,b=>1,g=>1,f=>'UE1',i=>-2} e4ff7112010000003201760503000000 e4ff7112010000003201760503000000 e4ff7112010000003201760503000000 ffe43892200000005a0076a060000000 e4ff7112010000003201760503000000 e4ff7112010000003201760503000000 ffe43892200000005a0076a060000000 e4ff7112010000003201760503000000 ffe43892200000005a0076a060000000 - {e=>6,n=>5,a=>125,m=>-4,d=>1,j=>'SEM1',l=>3,c=>-1,k=>1,h=>5,b=>7,g=>6,f=>'UE6',i=>-1} 7d007f6c06000000fd01012305000000 7d007f6c06000000fd01012305000000 7d007f6c06000000fd01012305000000 007dfcecc0000000bf800170a0000000 7d007f6c06000000fd01012305000000 7d007f6c06000000fd01012305000000 007dfcecc0000000bf800170a0000000 7d007f6c06000000fd01012305000000 007dfcecc0000000bf800170a0000000 - {e=>3,n=>1,a=>4,m=>-4,d=>-3,j=>'SE1',l=>5,c=>-4,k=>82,h=>7,b=>3,g=>0,f=>'UE5',i=>-4} 04006357000000006700522501000000 04006357000000006700522501000000 04006357000000006700522501000000 000472ba00000000f08052b020000000 04006357000000006700522501000000 04006357000000006700522501000000 000472ba00000000f08052b020000000 04006357000000006700522501000000 000472ba00000000f08052b020000000 - {e=>4,n=>7,a=>98,m=>1,d=>1,j=>'SE2',l=>5,c=>-3,k=>-32,h=>6,b=>2,g=>3,f=>'UE5',i=>1} 62006a58030000008e00e00d07000000 62006a58030000008e00e00d07000000 62006a58030000008e00e00d07000000 006254ca60000000c500e0a4e0000000 62006a58030000008e00e00d07000000 62006a58030000008e00e00d07000000 006254ca60000000c500e0a4e0000000 62006a58030000008e00e00d07000000 006254ca60000000c500e0a4e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>5,n=>6,a=>-72,m=>-2,d=>-3,j=>'SEM1',l=>0,c=>1,k=>95,h=>2,b=>5,g=>7,f=>'UE0',o=>120,i=>-3} b8ff4d0b07000000ea015f3006780000 b8ff4d0b07000000ea015f3006780000 b8ff4d0b07000000ea015f3006780000 ffb8a6d0e000000057805f18c0780000 b8ff4d0b07000000ea015f3006780000 b8ff4d0b07000000ea015f3006780000 ffb8a6d0e000000057805f18c0780000 b8ff4d0b07000000ea015f3006780000 ffb8a6d0e000000057805f18c0780000 - {e=>2,n=>0,a=>-69,m=>-1,d=>0,j=>'SE0',l=>0,c=>1,k=>-105,h=>7,b=>6,g=>0,f=>'UE1',o=>44,i=>2} bbff0e140000000017009738002c0000 bbff0e140000000017009738002c0000 bbff0e140000000017009738002c0000 ffbbc42200000000e800971c002c0000 bbff0e140000000017009738002c0000 bbff0e140000000017009738002c0000 ffbbc42200000000e800971c002c0000 bbff0e140000000017009738002c0000 ffbbc42200000000e800971c002c0000 - {e=>0,n=>5,a=>94,m=>-3,d=>-2,j=>'SEM3',l=>4,c=>-1,k=>53,h=>7,b=>4,g=>7,f=>'UE3',o=>232,i=>3} 5e00bc31070000005f01352c05e80000 5e00bc31070000005f01352c05e80000 5e00bc31070000005f01352c05e80000 005e9f06e0000000ee803594a0e80000 5e00bc31070000005f01352c05e80000 5e00bc31070000005f01352c05e80000 005e9f06e0000000ee803594a0e80000 5e00bc31070000005f01352c05e80000 005e9f06e0000000ee803594a0e80000 - {e=>1,n=>0,a=>112,m=>-1,d=>-3,j=>'SE3',l=>4,c=>-2,k=>50,h=>1,b=>4,g=>7,f=>'UE6',o=>103,i=>1} 7000746307000000c900323c00670000 7000746307000000c900323c00670000 7000746307000000c900323c00670000 00709a9ce00000002580329c00670000 7000746307000000c900323c00670000 7000746307000000c900323c00670000 00709a9ce00000002580329c00670000 7000746307000000c900323c00670000 00709a9ce00000002580329c00670000 - {e=>7,n=>6,a=>-116,m=>1,d=>3,j=>'SEM1',l=>3,c=>0,k=>117,h=>5,b=>5,g=>7,f=>'UE0',o=>207,i=>-1} 8cffc50e07000000fd01750b06cf0000 8cffc50e07000000fd01750b06cf0000 8cffc50e07000000fd01750b06cf0000 ff8ca1f0e0000000bf807564c0cf0000 8cffc50e07000000fd01750b06cf0000 8cffc50e07000000fd01750b06cf0000 ff8ca1f0e0000000bf807564c0cf0000 8cffc50e07000000fd01750b06cf0000 ff8ca1f0e0000000bf807564c0cf0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; }; - {a=>59,b=>6} 3b00000006000000 3b00000006000000 3b00000006000000 0000003bc0000000 3b00000006000000 3b00000006000000 0000003bc0000000 3b00000006000000 0000003bc0000000 - {a=>-72,b=>6} b8ffffff06000000 b8ffffff06000000 b8ffffff06000000 ffffffb8c0000000 b8ffffff06000000 b8ffffff06000000 ffffffb8c0000000 b8ffffff06000000 ffffffb8c0000000 - {a=>-11,b=>2} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 fffffff540000000 f5ffffff02000000 f5ffffff02000000 fffffff540000000 f5ffffff02000000 fffffff540000000 - {a=>-120,b=>5} 88ffffff05000000 88ffffff05000000 88ffffff05000000 ffffff88a0000000 88ffffff05000000 88ffffff05000000 ffffff88a0000000 88ffffff05000000 ffffff88a0000000 - {a=>16,b=>4} 1000000004000000 1000000004000000 1000000004000000 0000001080000000 1000000004000000 1000000004000000 0000001080000000 1000000004000000 0000001080000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>-6,b=>5} faffffff25000000 faffffff25000000 faffffff25000000 fffffffab0000000 faffffff25000000 faffffff25000000 fffffffab0000000 faffffff25000000 fffffffab0000000 - {c=>2,a=>-12,b=>0} f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 fffffff408000000 f4ffffff10000000 f4ffffff10000000 fffffff408000000 f4ffffff10000000 fffffff408000000 - {c=>-1,a=>-6,b=>7} faffffff3f000000 faffffff3f000000 faffffff3f000000 fffffffafc000000 faffffff3f000000 faffffff3f000000 fffffffafc000000 faffffff3f000000 fffffffafc000000 - {c=>-3,a=>126,b=>1} 7e00000029000000 7e00000029000000 7e00000029000000 0000007e34000000 7e00000029000000 7e00000029000000 0000007e34000000 7e00000029000000 0000007e34000000 - {c=>-2,a=>3,b=>2} 0300000032000000 0300000032000000 0300000032000000 0000000358000000 0300000032000000 0300000032000000 0000000358000000 0300000032000000 0000000358000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>6,b=>4,d=>1} 060000006c000000 060000006c000000 060000006c000000 0000000694800000 060000006c000000 060000006c000000 0000000694800000 060000006c000000 0000000694800000 - {c=>2,a=>-111,b=>6,d=>-3} 91ffffff56010000 91ffffff56010000 91ffffff56010000 ffffff91ca800000 91ffffff56010000 91ffffff56010000 ffffff91ca800000 91ffffff56010000 ffffff91ca800000 - {c=>1,a=>-80,b=>4,d=>-3} b0ffffff4c010000 b0ffffff4c010000 b0ffffff4c010000 ffffffb086800000 b0ffffff4c010000 b0ffffff4c010000 ffffffb086800000 b0ffffff4c010000 ffffffb086800000 - {c=>3,a=>54,b=>4,d=>0} 360000001c000000 360000001c000000 360000001c000000 000000368c000000 360000001c000000 360000001c000000 000000368c000000 360000001c000000 000000368c000000 - {c=>-1,a=>-73,b=>5,d=>-4} b7ffffff3d010000 b7ffffff3d010000 b7ffffff3d010000 ffffffb7be000000 b7ffffff3d010000 b7ffffff3d010000 ffffffb7be000000 b7ffffff3d010000 ffffffb7be000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-2,a=>59,b=>4,d=>1} 3b00000074020000 3b00000074020000 3b00000074020000 0000003b98900000 3b00000074020000 3b00000074020000 0000003b98900000 3b00000074020000 0000003b98900000 - {e=>4,c=>3,a=>-20,b=>1,d=>-3} ecffffff59090000 ecffffff59090000 ecffffff59090000 ffffffec2ec00000 ecffffff59090000 ecffffff59090000 ffffffec2ec00000 ecffffff59090000 ffffffec2ec00000 - {e=>3,c=>-4,a=>59,b=>0,d=>-2} 3b000000a0070000 3b000000a0070000 3b000000a0070000 0000003b13300000 3b000000a0070000 3b000000a0070000 0000003b13300000 3b000000a0070000 0000003b13300000 - {e=>5,c=>-4,a=>-67,b=>2,d=>2} bdffffffa20a0000 bdffffffa20a0000 bdffffffa20a0000 ffffffbd51500000 bdffffffa20a0000 bdffffffa20a0000 ffffffbd51500000 bdffffffa20a0000 ffffffbd51500000 - {e=>7,c=>1,a=>-13,b=>2,d=>2} f3ffffff8a0e0000 f3ffffff8a0e0000 f3ffffff8a0e0000 fffffff345700000 f3ffffff8a0e0000 f3ffffff8a0e0000 fffffff345700000 f3ffffff8a0e0000 fffffff345700000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>3,a=>-90,b=>0,d=>-4,f=>'UE5'} a6ffffff18590000 a6ffffff18590000 a6ffffff18590000 ffffffa60e4a0000 a6ffffff18590000 a6ffffff18590000 ffffffa60e4a0000 a6ffffff18590000 ffffffa60e4a0000 - {e=>4,c=>-3,a=>-120,b=>6,d=>-4,f=>'UE3'} 88ffffff2e390000 88ffffff2e390000 88ffffff2e390000 ffffff88d6460000 88ffffff2e390000 88ffffff2e390000 ffffff88d6460000 88ffffff2e390000 ffffff88d6460000 - {e=>2,c=>2,a=>94,b=>0,d=>-1,f=>'UE7'} 5e000000d0750000 5e000000d0750000 5e000000d0750000 0000005e0bae0000 5e000000d0750000 5e000000d0750000 0000005e0bae0000 5e000000d0750000 0000005e0bae0000 - {e=>7,c=>2,a=>51,b=>2,d=>0,f=>'UE3'} 33000000123e0000 33000000123e0000 33000000123e0000 0000003348760000 33000000123e0000 33000000123e0000 0000003348760000 33000000123e0000 0000003348760000 - {e=>1,c=>-1,a=>74,b=>1,d=>1,f=>'UE6'} 4a00000079620000 4a00000079620000 4a00000079620000 0000004a3c9c0000 4a00000079620000 4a00000079620000 0000004a3c9c0000 4a00000079620000 0000004a3c9c0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>2,c=>3,a=>-102,g=>2,b=>7,d=>2,f=>'UE1'} 9affffff9f140100 9affffff9f140100 9affffff9f140100 ffffff9aed228000 9affffff9f140100 9affffff9f140100 ffffff9aed228000 9affffff9f140100 ffffff9aed228000 - {e=>5,c=>0,a=>55,g=>0,b=>3,d=>1,f=>'UE1'} 37000000431a0000 37000000431a0000 37000000431a0000 0000003760d20000 37000000431a0000 37000000431a0000 0000003760d20000 37000000431a0000 0000003760d20000 - {e=>7,c=>0,a=>-113,g=>0,b=>6,d=>-2,f=>'UE1'} 8fffffff861f0000 8fffffff861f0000 8fffffff861f0000 ffffff8fc3720000 8fffffff861f0000 8fffffff861f0000 ffffff8fc3720000 8fffffff861f0000 ffffff8fc3720000 - {e=>3,c=>3,a=>56,g=>5,b=>5,d=>-1,f=>'UE3'} 38000000ddb70200 38000000ddb70200 38000000ddb70200 00000038afb74000 38000000ddb70200 38000000ddb70200 00000038afb74000 38000000ddb70200 00000038afb74000 - {e=>4,c=>-2,a=>-74,g=>2,b=>3,d=>-1,f=>'UE4'} b6fffffff3490100 b6fffffff3490100 b6fffffff3490100 ffffffb67bc88000 b6fffffff3490100 b6fffffff3490100 ffffffb67bc88000 b6fffffff3490100 ffffffb67bc88000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-4,a=>98,g=>3,b=>6,d=>-4,f=>'UE7'} 6200000026f30100 6200000026f30100 6200000026f30100 00000062d21ec000 6200000026f30100 6200000026f30100 00000062d21ec000 6200000026f30100 00000062d21ec000 - {e=>6,c=>-1,a=>-100,g=>6,b=>1,d=>-2,f=>'UE2'} 9cffffffb92d0300 9cffffffb92d0300 9cffffffb92d0300 ffffff9c3f658000 9cffffffb92d0300 9cffffffb92d0300 ffffff9c3f658000 9cffffffb92d0300 ffffff9c3f658000 - {e=>3,c=>0,a=>-41,g=>4,b=>6,d=>1,f=>'UE2'} d7ffffff46260200 d7ffffff46260200 d7ffffff46260200 ffffffd7c0b50000 d7ffffff46260200 d7ffffff46260200 ffffffd7c0b50000 d7ffffff46260200 ffffffd7c0b50000 - {e=>3,c=>-4,a=>74,g=>2,b=>2,d=>-3,f=>'UE4'} 4a00000062470100 4a00000062470100 4a00000062470100 0000004a52b88000 4a00000062470100 4a00000062470100 0000004a52b88000 4a00000062470100 0000004a52b88000 - {e=>2,c=>2,a=>-78,g=>4,b=>4,d=>-2,f=>'UE7'} b2ffffff94750200 b2ffffff94750200 b2ffffff94750200 ffffffb28b2f0000 b2ffffff94750200 b2ffffff94750200 ffffffb28b2f0000 b2ffffff94750200 ffffffb28b2f0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>14,d=>-2,c=>-3,h=>7,b=>3,g=>7,f=>'UE6'} 0e000000abe3030007000000 0e000000abe3030007000000 0e000000abe3030007000000 0000000e771dc000e0000000 0e000000abe3030007000000 0e000000abe3030007000000 0000000e771dc000e0000000 0e000000abe3030007000000 0000000e771dc000e0000000 - {e=>5,a=>-111,d=>-2,c=>-2,h=>7,b=>0,g=>5,f=>'UE0'} 91ffffffb08b020007000000 91ffffffb08b020007000000 91ffffffb08b020007000000 ffffff911b514000e0000000 91ffffffb08b020007000000 91ffffffb08b020007000000 ffffff911b514000e0000000 91ffffffb08b020007000000 ffffff911b514000e0000000 - {e=>6,a=>68,d=>-3,c=>1,h=>7,b=>2,g=>1,f=>'UE2'} 440000004aad000007000000 440000004aad000007000000 440000004aad000007000000 0000004446e44000e0000000 440000004aad000007000000 440000004aad000007000000 0000004446e44000e0000000 440000004aad000007000000 0000004446e44000e0000000 - {e=>5,a=>-108,d=>1,c=>-3,h=>7,b=>1,g=>4,f=>'UE3'} 94ffffff693a020007000000 94ffffff693a020007000000 94ffffff693a020007000000 ffffff9434d70000e0000000 94ffffff693a020007000000 94ffffff693a020007000000 ffffff9434d70000e0000000 94ffffff693a020007000000 ffffff9434d70000e0000000 - {e=>3,a=>114,d=>-2,c=>-1,h=>6,b=>1,g=>2,f=>'UE5'} 72000000b957010006000000 72000000b957010006000000 72000000b957010006000000 000000723f3a8000c0000000 72000000b957010006000000 72000000b957010006000000 000000723f3a8000c0000000 72000000b957010006000000 000000723f3a8000c0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>-51,d=>-4,c=>2,h=>0,b=>1,g=>7,f=>'UE3',i=>-4} cdffffff11b5030020000000 cdffffff11b5030020000000 cdffffff11b5030020000000 ffffffcd2a27c00010000000 cdffffff11b5030020000000 cdffffff11b5030020000000 ffffffcd2a27c00010000000 cdffffff11b5030020000000 ffffffcd2a27c00010000000 - {e=>2,a=>-42,d=>2,c=>3,h=>7,b=>3,g=>2,f=>'UE5',i=>1} d6ffffff9b5401000f000000 d6ffffff9b5401000f000000 d6ffffff9b5401000f000000 ffffffd66d2a8000e4000000 d6ffffff9b5401000f000000 d6ffffff9b5401000f000000 ffffffd66d2a8000e4000000 d6ffffff9b5401000f000000 ffffffd66d2a8000e4000000 - {e=>1,a=>47,d=>3,c=>3,h=>1,b=>0,g=>4,f=>'UE0',i=>-4} 2f000000d802020021000000 2f000000d802020021000000 2f000000d802020021000000 0000002f0d91000030000000 2f000000d802020021000000 2f000000d802020021000000 0000002f0d91000030000000 2f000000d802020021000000 0000002f0d91000030000000 - {e=>0,a=>-80,d=>-1,c=>-4,h=>5,b=>2,g=>4,f=>'UE7',i=>0} b0ffffffe271020005000000 b0ffffffe271020005000000 b0ffffffe271020005000000 ffffffb0538f0000a0000000 b0ffffffe271020005000000 b0ffffffe271020005000000 ffffffb0538f0000a0000000 b0ffffffe271020005000000 ffffffb0538f0000a0000000 - {e=>2,a=>-76,d=>-1,c=>1,h=>5,b=>6,g=>3,f=>'UE6',i=>2} b4ffffffcee5010015000000 b4ffffffcee5010015000000 b4ffffffcee5010015000000 ffffffb4c7acc000a8000000 b4ffffffcee5010015000000 b4ffffffcee5010015000000 ffffffb4c7acc000a8000000 b4ffffffcee5010015000000 ffffffb4c7acc000a8000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>-74,d=>2,j=>'SEM1',c=>0,h=>7,b=>0,g=>2,f=>'UE7',i=>-3} b6ffffff807a0100ef010000 b6ffffff807a0100ef010000 b6ffffff807a0100ef010000 ffffffb6015e8000f7800000 b6ffffff807a0100ef010000 b6ffffff807a0100ef010000 ffffffb6015e8000f7800000 b6ffffff807a0100ef010000 ffffffb6015e8000f7800000 - {e=>5,a=>94,d=>-1,j=>'SEM4',c=>3,h=>3,b=>5,g=>2,f=>'UE6',i=>-3} 5e000000dd6b01002b010000 5e000000dd6b01002b010000 5e000000dd6b01002b010000 0000005eafdc800076000000 5e000000dd6b01002b010000 5e000000dd6b01002b010000 0000005eafdc800076000000 5e000000dd6b01002b010000 0000005eafdc800076000000 - {e=>6,a=>-63,d=>-3,j=>'SE2',c=>3,h=>3,b=>5,g=>1,f=>'UE1',i=>2} c1ffffff5d9d000093000000 c1ffffff5d9d000093000000 c1ffffff5d9d000093000000 ffffffc1aee2400069000000 c1ffffff5d9d000093000000 c1ffffff5d9d000093000000 ffffffc1aee2400069000000 c1ffffff5d9d000093000000 ffffffc1aee2400069000000 - {e=>2,a=>15,d=>3,j=>'SEM3',c=>0,h=>2,b=>4,g=>5,f=>'UE7',i=>-4} 0f000000c4f4020062010000 0f000000c4f4020062010000 0f000000c4f4020062010000 0000000f81af400052800000 0f000000c4f4020062010000 0f000000c4f4020062010000 0000000f81af400052800000 0f000000c4f4020062010000 0000000f81af400052800000 - {e=>4,a=>-16,d=>-4,j=>'SEM4',c=>-3,h=>4,b=>7,g=>2,f=>'UE3',i=>1} f0ffffff2f3901000c010000 f0ffffff2f3901000c010000 f0ffffff2f3901000c010000 fffffff0f646800086000000 f0ffffff2f3901000c010000 f0ffffff2f3901000c010000 fffffff0f646800086000000 f0ffffff2f3901000c010000 fffffff0f646800086000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>7,a=>-113,d=>0,j=>'SE3',c=>2,k=>96,h=>4,b=>7,g=>5,f=>'UE3',i=>0} 8fffffff17be0200c4006000 8fffffff17be0200c4006000 8fffffff17be0200c4006000 ffffff8fe877400081806000 8fffffff17be0200c4006000 8fffffff17be0200c4006000 ffffff8fe877400081806000 8fffffff17be0200c4006000 ffffff8fe877400081806000 - {e=>2,a=>-5,d=>-4,j=>'SEM4',c=>-1,k=>28,h=>2,b=>4,g=>0,f=>'UE0',i=>1} fbffffff3c0500000a011c00 fbffffff3c0500000a011c00 fbffffff3c0500000a011c00 fffffffb9e20000046001c00 fbffffff3c0500000a011c00 fbffffff3c0500000a011c00 fffffffb9e20000046001c00 fbffffff3c0500000a011c00 fffffffb9e20000046001c00 - {e=>5,a=>52,d=>-3,j=>'SE3',c=>-3,k=>-1,h=>2,b=>6,g=>1,f=>'UE6',i=>1} 340000006eeb0000ca00ff00 340000006eeb0000ca00ff00 340000006eeb0000ca00ff00 00000034d6dc40004580ff00 340000006eeb0000ca00ff00 340000006eeb0000ca00ff00 00000034d6dc40004580ff00 340000006eeb0000ca00ff00 00000034d6dc40004580ff00 - {e=>4,a=>-47,d=>-3,j=>'SE2',c=>2,k=>112,h=>6,b=>3,g=>2,f=>'UE3',i=>1} d1ffffff533901008e007000 d1ffffff533901008e007000 d1ffffff533901008e007000 ffffffd16ac68000c5007000 d1ffffff533901008e007000 d1ffffff533901008e007000 ffffffd16ac68000c5007000 d1ffffff533901008e007000 ffffffd16ac68000c5007000 - {e=>4,a=>-78,d=>2,j=>'SE3',c=>2,k=>55,h=>1,b=>0,g=>5,f=>'UE2',i=>1} b2ffffff90a80200c9003700 b2ffffff90a80200c9003700 b2ffffff90a80200c9003700 ffffffb20945400025803700 b2ffffff90a80200c9003700 b2ffffff90a80200c9003700 ffffffb20945400025803700 b2ffffff90a80200c9003700 ffffffb20945400025803700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>0,a=>-33,d=>-4,j=>'SEM1',l=>0,c=>-2,k=>46,h=>6,b=>0,g=>3,f=>'UE7',i=>-2} dfffffff30f10100f6012e00 dfffffff30f10100f6012e00 dfffffff30f10100f6012e00 ffffffdf1a0ec000db802e00 dfffffff30f10100f6012e00 dfffffff30f10100f6012e00 ffffffdf1a0ec000db802e00 dfffffff30f10100f6012e00 ffffffdf1a0ec000db802e00 - {e=>3,a=>78,d=>-4,j=>'SE3',l=>1,c=>-1,k=>-21,h=>5,b=>3,g=>5,f=>'UE2',i=>-3} 4e0000003ba70200ed00eb01 4e0000003ba70200ed00eb01 4e0000003ba70200ed00eb01 0000004e7e354000b580eb20 4e0000003ba70200ed00eb01 4e0000003ba70200ed00eb01 0000004e7e354000b580eb20 4e0000003ba70200ed00eb01 0000004e7e354000b580eb20 - {e=>3,a=>-6,d=>0,j=>'SE0',l=>2,c=>-1,k=>54,h=>1,b=>1,g=>0,f=>'UE6',i=>2} faffffff3966000011003602 faffffff3966000011003602 faffffff3966000011003602 fffffffa3c3c000028003640 faffffff3966000011003602 faffffff3966000011003602 fffffffa3c3c000028003640 faffffff3966000011003602 fffffffa3c3c000028003640 - {e=>3,a=>-92,d=>2,j=>'SEM2',l=>3,c=>-3,k=>28,h=>0,b=>5,g=>6,f=>'UE1',i=>0} a4ffffffad16030080011c03 a4ffffffad16030080011c03 a4ffffffad16030080011c03 ffffffa4b533800003001c60 a4ffffffad16030080011c03 a4ffffffad16030080011c03 ffffffa4b533800003001c60 a4ffffffad16030080011c03 ffffffa4b533800003001c60 - {e=>0,a=>109,d=>3,j=>'SE1',l=>7,c=>-1,k=>116,h=>4,b=>4,g=>6,f=>'UE3',i=>-3} 6d000000fc3003006c007407 6d000000fc3003006c007407 6d000000fc3003006c007407 0000006d9d878000948074e0 6d000000fc3003006c007407 6d000000fc3003006c007407 0000006d9d878000948074e0 6d000000fc3003006c007407 0000006d9d878000948074e0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>61,m=>0,d=>3,j=>'SEM3',l=>5,c=>-4,k=>-68,h=>1,b=>6,g=>5,f=>'UE4',i=>0} 3d000000e6c202004101bc05 3d000000e6c202004101bc05 3d000000e6c202004101bc05 0000003dd19940002280bca0 3d000000e6c202004101bc05 3d000000e6c202004101bc05 0000003dd19940002280bca0 3d000000e6c202004101bc05 0000003dd19940002280bca0 - {e=>2,a=>-25,m=>-1,d=>2,j=>'SE2',l=>3,c=>-2,k=>-89,h=>3,b=>3,g=>4,f=>'UE1',i=>0} e7ffffffb31402008300a73b e7ffffffb31402008300a73b e7ffffffb31402008300a73b ffffffe7792300006100a77c e7ffffffb31402008300a73b e7ffffffb31402008300a73b ffffffe7792300006100a77c e7ffffffb31402008300a73b ffffffe7792300006100a77c - {e=>2,a=>14,m=>0,d=>3,j=>'SEM3',l=>7,c=>1,k=>75,h=>6,b=>7,g=>6,f=>'UE5',i=>0} 0e000000cf54030046014b07 0e000000cf54030046014b07 0e000000cf54030046014b07 0000000ee5ab8000c2804be0 0e000000cf54030046014b07 0e000000cf54030046014b07 0000000ee5ab8000c2804be0 0e000000cf54030046014b07 0000000ee5ab8000c2804be0 - {e=>6,a=>-81,m=>-2,d=>3,j=>'SEM1',l=>1,c=>3,k=>45,h=>1,b=>0,g=>2,f=>'UE7',i=>-4} afffffffd87c0100e1012d31 afffffffd87c0100e1012d31 afffffffd87c0100e1012d31 ffffffaf0dee800033802d38 afffffffd87c0100e1012d31 afffffffd87c0100e1012d31 ffffffaf0dee800033802d38 afffffffd87c0100e1012d31 ffffffaf0dee800033802d38 - {e=>0,a=>-15,m=>-2,d=>2,j=>'SEM1',l=>6,c=>-4,k=>52,h=>4,b=>4,g=>4,f=>'UE1',i=>2} f1ffffffa4100200d4013436 f1ffffffa4100200d4013436 f1ffffffa4100200d4013436 fffffff1910300008b8034d8 f1ffffffa4100200d4013436 f1ffffffa4100200d4013436 fffffff1910300008b8034d8 f1ffffffa4100200d4013436 fffffff1910300008b8034d8 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>7,n=>3,a=>-25,m=>2,d=>0,j=>'SE0',l=>5,c=>3,k=>-128,h=>6,b=>7,g=>1,f=>'UE4',i=>2} e7ffffff1fce00001600801503000000 e7ffffff1fce00001600801503000000 e7ffffff1fce00001600801503000000 ffffffe7ec784000c80080a860000000 e7ffffff1fce00001600801503000000 e7ffffff1fce00001600801503000000 ffffffe7ec784000c80080a860000000 e7ffffff1fce00001600801503000000 ffffffe7ec784000c80080a860000000 - {e=>4,n=>1,a=>31,m=>2,d=>-1,j=>'SE2',l=>0,c=>-1,k=>-106,h=>3,b=>0,g=>2,f=>'UE7',i=>0} 1f000000f87901008300961001000000 1f000000f87901008300961001000000 1f000000f87901008300961001000000 0000001f1fce80006100960820000000 1f000000f87901008300961001000000 1f000000f87901008300961001000000 0000001f1fce80006100960820000000 1f000000f87901008300961001000000 0000001f1fce80006100960820000000 - {e=>7,n=>5,a=>42,m=>-4,d=>-4,j=>'SEM2',l=>3,c=>-4,k=>82,h=>1,b=>6,g=>7,f=>'UE0',i=>-1} 2a000000268f0300b901522305000000 2a000000268f0300b901522305000000 2a000000268f0300b901522305000000 0000002ad271c0003f005270a0000000 2a000000268f0300b901522305000000 2a000000268f0300b901522305000000 0000002ad271c0003f005270a0000000 2a000000268f0300b901522305000000 0000002ad271c0003f005270a0000000 - {e=>3,n=>5,a=>51,m=>-4,d=>2,j=>'SEM4',l=>7,c=>3,k=>-87,h=>1,b=>2,g=>0,f=>'UE5',i=>0} 330000009a5600000101a92705000000 330000009a5600000101a92705000000 330000009a5600000101a92705000000 000000334d3a00002200a9f0a0000000 330000009a5600000101a92705000000 330000009a5600000101a92705000000 000000334d3a00002200a9f0a0000000 330000009a5600000101a92705000000 000000334d3a00002200a9f0a0000000 - {e=>0,n=>7,a=>31,m=>-3,d=>2,j=>'SE1',l=>2,c=>2,k=>-41,h=>5,b=>4,g=>6,f=>'UE1',i=>2} 1f000000941003005500d72a07000000 1f000000941003005500d72a07000000 1f000000941003005500d72a07000000 0000001f89038000a880d754e0000000 1f000000941003005500d72a07000000 1f000000941003005500d72a07000000 0000001f89038000a880d754e0000000 1f000000941003005500d72a07000000 0000001f89038000a880d754e0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>6,a=>-128,m=>-1,d=>0,j=>'SE2',l=>1,c=>0,k=>-95,h=>3,b=>5,g=>7,f=>'UE6',o=>62,i=>2} 80ffffff05e003009300a139063e0000 80ffffff05e003009300a139063e0000 80ffffff05e003009300a139063e0000 ffffff80a00dc0006900a13cc03e0000 80ffffff05e003009300a139063e0000 80ffffff05e003009300a139063e0000 ffffff80a00dc0006900a13cc03e0000 80ffffff05e003009300a139063e0000 ffffff80a00dc0006900a13cc03e0000 - {e=>3,n=>5,a=>-9,m=>-4,d=>1,j=>'SEM1',l=>3,c=>3,k=>-61,h=>2,b=>6,g=>0,f=>'UE5',o=>76,i=>1} f7ffffff5e560000ca01c323054c0000 f7ffffff5e560000ca01c323054c0000 f7ffffff5e560000ca01c323054c0000 fffffff7ccba00004780c370a04c0000 f7ffffff5e560000ca01c323054c0000 f7ffffff5e560000ca01c323054c0000 fffffff7ccba00004780c370a04c0000 f7ffffff5e560000ca01c323054c0000 fffffff7ccba00004780c370a04c0000 - {e=>4,n=>7,a=>15,m=>1,d=>-2,j=>'SEM2',l=>6,c=>2,k=>-46,h=>3,b=>5,g=>4,f=>'UE0',o=>51,i=>-1} 0f00000095090200bb01d20e07330000 0f00000095090200bb01d20e07330000 0f00000095090200bb01d20e07330000 0000000fab4100007f00d2c4e0330000 0f00000095090200bb01d20e07330000 0f00000095090200bb01d20e07330000 0000000fab4100007f00d2c4e0330000 0f00000095090200bb01d20e07330000 0000000fab4100007f00d2c4e0330000 - {e=>7,n=>2,a=>-103,m=>2,d=>2,j=>'SEM3',l=>3,c=>-2,k=>75,h=>4,b=>7,g=>4,f=>'UE2',o=>76,i=>-1} 99ffffffb72e02007c014b13024c0000 99ffffffb72e02007c014b13024c0000 99ffffffb72e02007c014b13024c0000 ffffff99f97500009e804b68404c0000 99ffffffb72e02007c014b13024c0000 99ffffffb72e02007c014b13024c0000 ffffff99f97500009e804b68404c0000 99ffffffb72e02007c014b13024c0000 ffffff99f97500009e804b68404c0000 - {e=>6,n=>2,a=>-114,m=>-3,d=>-4,j=>'SEM1',l=>5,c=>-2,k=>88,h=>6,b=>0,g=>5,f=>'UE3',o=>44,i=>-3} 8effffff30bd0200ee01582d022c0000 8effffff30bd0200ee01582d022c0000 8effffff30bd0200ee01582d022c0000 ffffff8e1a674000d78058b4402c0000 8effffff30bd0200ee01582d022c0000 8effffff30bd0200ee01582d022c0000 ffffff8e1a674000d78058b4402c0000 8effffff30bd0200ee01582d022c0000 ffffff8e1a674000d78058b4402c0000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; }; - {a=>20,b=>5} 1400000005000000 14000000000000000500000000000000 14000000000000000500000000000000 00000014a0000000 1400000005000000 1400000005000000 0000000000000014a000000000000000 1400000005000000 00000014a0000000 - {a=>-55,b=>5} c9ffffff05000000 c9ffffffffffffff0500000000000000 c9ffffffffffffff0500000000000000 ffffffc9a0000000 c9ffffff05000000 c9ffffff05000000 ffffffffffffffc9a000000000000000 c9ffffff05000000 ffffffc9a0000000 - {a=>98,b=>5} 6200000005000000 62000000000000000500000000000000 62000000000000000500000000000000 00000062a0000000 6200000005000000 6200000005000000 0000000000000062a000000000000000 6200000005000000 00000062a0000000 - {a=>-119,b=>4} 89ffffff04000000 89ffffffffffffff0400000000000000 89ffffffffffffff0400000000000000 ffffff8980000000 89ffffff04000000 89ffffff04000000 ffffffffffffff898000000000000000 89ffffff04000000 ffffff8980000000 - {a=>-90,b=>0} a6ffffff00000000 a6ffffffffffffff0000000000000000 a6ffffffffffffff0000000000000000 ffffffa600000000 a6ffffff00000000 a6ffffff00000000 ffffffffffffffa60000000000000000 a6ffffff00000000 ffffffa600000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; }; - {c=>-3,a=>-84,b=>3} acffffff2b000000 acffffffffffffff2b00000000000000 acffffffffffffff2b00000000000000 ffffffac74000000 acffffff2b000000 acffffff2b000000 ffffffffffffffac7400000000000000 acffffff2b000000 ffffffac74000000 - {c=>-4,a=>5,b=>3} 0500000023000000 05000000000000002300000000000000 05000000000000002300000000000000 0000000570000000 0500000023000000 0500000023000000 00000000000000057000000000000000 0500000023000000 0000000570000000 - {c=>0,a=>-27,b=>6} e5ffffff06000000 e5ffffffffffffff0600000000000000 e5ffffffffffffff0600000000000000 ffffffe5c0000000 e5ffffff06000000 e5ffffff06000000 ffffffffffffffe5c000000000000000 e5ffffff06000000 ffffffe5c0000000 - {c=>1,a=>41,b=>1} 2900000009000000 29000000000000000900000000000000 29000000000000000900000000000000 0000002924000000 2900000009000000 2900000009000000 00000000000000292400000000000000 2900000009000000 0000002924000000 - {c=>2,a=>-56,b=>5} c8ffffff15000000 c8ffffffffffffff1500000000000000 c8ffffffffffffff1500000000000000 ffffffc8a8000000 c8ffffff15000000 c8ffffff15000000 ffffffffffffffc8a800000000000000 c8ffffff15000000 ffffffc8a8000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>38,b=>5,d=>-1} 26000000ed010000 2600000000000000ed01000000000000 2600000000000000ed01000000000000 00000026b7800000 26000000ed010000 26000000ed010000 0000000000000026b780000000000000 26000000ed010000 00000026b7800000 - {c=>-4,a=>-66,b=>1,d=>2} beffffffa1000000 beffffffffffffffa100000000000000 beffffffffffffffa100000000000000 ffffffbe31000000 beffffffa1000000 beffffffa1000000 ffffffffffffffbe3100000000000000 beffffffa1000000 ffffffbe31000000 - {c=>-2,a=>-17,b=>2,d=>0} efffffff32000000 efffffffffffffff3200000000000000 efffffffffffffff3200000000000000 ffffffef58000000 efffffff32000000 efffffff32000000 ffffffffffffffef5800000000000000 efffffff32000000 ffffffef58000000 - {c=>-3,a=>-93,b=>4,d=>3} a3ffffffec000000 a3ffffffffffffffec00000000000000 a3ffffffffffffffec00000000000000 ffffffa395800000 a3ffffffec000000 a3ffffffec000000 ffffffffffffffa39580000000000000 a3ffffffec000000 ffffffa395800000 - {c=>3,a=>83,b=>6,d=>0} 530000001e000000 53000000000000001e00000000000000 53000000000000001e00000000000000 00000053cc000000 530000001e000000 530000001e000000 0000000000000053cc00000000000000 530000001e000000 00000053cc000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>-2,a=>79,b=>7,d=>-1} 4f000000f7070000 4f00000000000000f707000000000000 4f00000000000000f707000000000000 0000004ffbb00000 4f000000f7070000 4f000000f7070000 000000000000004ffbb0000000000000 4f000000f7070000 0000004ffbb00000 - {e=>0,c=>2,a=>118,b=>4,d=>-4} 7600000014010000 76000000000000001401000000000000 76000000000000001401000000000000 000000768a000000 7600000014010000 7600000014010000 00000000000000768a00000000000000 7600000014010000 000000768a000000 - {e=>6,c=>0,a=>-24,b=>0,d=>3} e8ffffffc00c0000 e8ffffffffffffffc00c000000000000 e8ffffffffffffffc00c000000000000 ffffffe801e00000 e8ffffffc00c0000 e8ffffffc00c0000 ffffffffffffffe801e0000000000000 e8ffffffc00c0000 ffffffe801e00000 - {e=>4,c=>-1,a=>-90,b=>3,d=>-3} a6ffffff7b090000 a6ffffffffffffff7b09000000000000 a6ffffffffffffff7b09000000000000 ffffffa67ec00000 a6ffffff7b090000 a6ffffff7b090000 ffffffffffffffa67ec0000000000000 a6ffffff7b090000 ffffffa67ec00000 - {e=>3,c=>1,a=>80,b=>3,d=>2} 500000008b060000 50000000000000008b06000000000000 50000000000000008b06000000000000 0000005065300000 500000008b060000 500000008b060000 00000000000000506530000000000000 500000008b060000 0000005065300000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>0,c=>-3,a=>-26,b=>6,d=>-1,f=>'UE1'} e6ffffffee110000 e6ffffffffffffffee11000000000000 e6ffffffffffffffee11000000000000 ffffffe6d7820000 e6ffffffee110000 e6ffffffee110000 ffffffffffffffe6d782000000000000 e6ffffffee110000 ffffffe6d7820000 - {e=>4,c=>2,a=>124,b=>4,d=>-4,f=>'UE2'} 7c00000014290000 7c000000000000001429000000000000 7c000000000000001429000000000000 0000007c8a440000 7c00000014290000 7c00000014290000 000000000000007c8a44000000000000 7c00000014290000 0000007c8a440000 - {e=>7,c=>-2,a=>-9,b=>1,d=>3,f=>'UE2'} f7fffffff12e0000 f7fffffffffffffff12e000000000000 f7fffffffffffffff12e000000000000 fffffff739f40000 f7fffffff12e0000 f7fffffff12e0000 fffffffffffffff739f4000000000000 f7fffffff12e0000 fffffff739f40000 - {e=>7,c=>0,a=>122,b=>4,d=>2,f=>'UE5'} 7a000000845e0000 7a00000000000000845e000000000000 7a00000000000000845e000000000000 0000007a817a0000 7a000000845e0000 7a000000845e0000 000000000000007a817a000000000000 7a000000845e0000 0000007a817a0000 - {e=>1,c=>-4,a=>-12,b=>6,d=>-4,f=>'UE4'} f4ffffff26430000 f4ffffffffffffff2643000000000000 f4ffffffffffffff2643000000000000 fffffff4d2180000 f4ffffff26430000 f4ffffff26430000 fffffffffffffff4d218000000000000 f4ffffff26430000 fffffff4d2180000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>7,c=>-4,a=>-80,g=>7,b=>2,d=>3,f=>'UE2'} b0ffffffe2ae0300 b0ffffffffffffffe2ae030000000000 b0ffffffffffffffe2ae030000000000 ffffffb051f5c000 b0ffffffe2ae0300 b0ffffffe2ae0300 ffffffffffffffb051f5c00000000000 b0ffffffe2ae0300 ffffffb051f5c000 - {e=>1,c=>2,a=>93,g=>2,b=>1,d=>3,f=>'UE0'} 5d000000d1020100 5d00000000000000d102010000000000 5d00000000000000d102010000000000 0000005d29908000 5d000000d1020100 5d000000d1020100 000000000000005d2990800000000000 5d000000d1020100 0000005d29908000 - {e=>0,c=>0,a=>-46,g=>2,b=>3,d=>-3,f=>'UE6'} d2ffffff43610100 d2ffffffffffffff4361010000000000 d2ffffffffffffff4361010000000000 ffffffd2628c8000 d2ffffff43610100 d2ffffff43610100 ffffffffffffffd2628c800000000000 d2ffffff43610100 ffffffd2628c8000 - {e=>4,c=>1,a=>120,g=>0,b=>2,d=>1,f=>'UE6'} 780000004a680000 78000000000000004a68000000000000 78000000000000004a68000000000000 0000007844cc0000 780000004a680000 780000004a680000 000000000000007844cc000000000000 780000004a680000 0000007844cc0000 - {e=>3,c=>0,a=>19,g=>6,b=>7,d=>-4,f=>'UE0'} 1300000007070300 13000000000000000707030000000000 13000000000000000707030000000000 00000013e2318000 1300000007070300 1300000007070300 0000000000000013e231800000000000 1300000007070300 00000013e2318000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>6,c=>-2,a=>-99,g=>4,b=>1,d=>0,f=>'UE0'} 9dffffff310c0200 9dffffffffffffff310c020000000000 9dffffffffffffff310c020000000000 ffffff9d38610000 9dffffff310c0200 9dffffff310c0200 ffffffffffffff9d3861000000000000 9dffffff310c0200 ffffff9d38610000 - {e=>0,c=>0,a=>-111,g=>1,b=>4,d=>-1,f=>'UE6'} 91ffffffc4e10000 91ffffffffffffffc4e1000000000000 91ffffffffffffffc4e1000000000000 ffffff91838c4000 91ffffffc4e10000 91ffffffc4e10000 ffffffffffffff91838c400000000000 91ffffffc4e10000 ffffff91838c4000 - {e=>0,c=>1,a=>106,g=>1,b=>3,d=>3,f=>'UE0'} 6a000000cb800000 6a00000000000000cb80000000000000 6a00000000000000cb80000000000000 0000006a65804000 6a000000cb800000 6a000000cb800000 000000000000006a6580400000000000 6a000000cb800000 0000006a65804000 - {e=>4,c=>-3,a=>94,g=>0,b=>2,d=>1,f=>'UE6'} 5e0000006a680000 5e000000000000006a68000000000000 5e000000000000006a68000000000000 0000005e54cc0000 5e0000006a680000 5e0000006a680000 000000000000005e54cc000000000000 5e0000006a680000 0000005e54cc0000 - {e=>7,c=>-4,a=>-48,g=>2,b=>3,d=>2,f=>'UE6'} d0ffffffa36e0100 d0ffffffffffffffa36e010000000000 d0ffffffffffffffa36e010000000000 ffffffd0717c8000 d0ffffffa36e0100 d0ffffffa36e0100 ffffffffffffffd0717c800000000000 d0ffffffa36e0100 ffffffd0717c8000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>4,a=>-127,d=>2,c=>-2,h=>0,b=>1,g=>6,f=>'UE0'} 81ffffffb108030000000000 81ffffffffffffffb108030000000000 81ffffffffffffffb108030000000000 ffffff813941800000000000 81ffffffb108030000000000 81ffffffb108030000000000 ffffffffffffff813941800000000000 81ffffffb108030000000000 ffffff813941800000000000 - {e=>0,a=>16,d=>-2,c=>-1,h=>5,b=>0,g=>2,f=>'UE6'} 10000000b861010005000000 1000000000000000b861010005000000 1000000000000000b861010005000000 000000101f0c8000a0000000 10000000b861010005000000 10000000b861010005000000 00000000000000101f0c8000a0000000 10000000b861010005000000 000000101f0c8000a0000000 - {e=>7,a=>-107,d=>2,c=>0,h=>1,b=>6,g=>7,f=>'UE5'} 95ffffff86de030001000000 95ffffffffffffff86de030001000000 95ffffffffffffff86de030001000000 ffffff95c17bc00020000000 95ffffff86de030001000000 95ffffff86de030001000000 ffffffffffffff95c17bc00020000000 95ffffff86de030001000000 ffffff95c17bc00020000000 - {e=>3,a=>53,d=>-2,c=>0,h=>0,b=>0,g=>5,f=>'UE0'} 350000008087020000000000 35000000000000008087020000000000 35000000000000008087020000000000 000000350331400000000000 350000008087020000000000 350000008087020000000000 00000000000000350331400000000000 350000008087020000000000 000000350331400000000000 - {e=>5,a=>33,d=>3,c=>0,h=>6,b=>7,g=>3,f=>'UE7'} 21000000c7fa010006000000 2100000000000000c7fa010006000000 2100000000000000c7fa010006000000 00000021e1dec000c0000000 21000000c7fa010006000000 21000000c7fa010006000000 0000000000000021e1dec000c0000000 21000000c7fa010006000000 00000021e1dec000c0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>3,d=>0,c=>1,h=>4,b=>3,g=>2,f=>'UE0',i=>-2} 030000000b02010034000000 03000000000000000b02010034000000 03000000000000000b02010034000000 000000036410800098000000 030000000b02010034000000 030000000b02010034000000 00000000000000036410800098000000 030000000b02010034000000 000000036410800098000000 - {e=>1,a=>-126,d=>0,c=>0,h=>1,b=>1,g=>7,f=>'UE7',i=>-4} 82ffffff01f2030021000000 82ffffffffffffff01f2030021000000 82ffffffffffffff01f2030021000000 ffffff82201fc00030000000 82ffffff01f2030021000000 82ffffff01f2030021000000 ffffffffffffff82201fc00030000000 82ffffff01f2030021000000 ffffff82201fc00030000000 - {e=>2,a=>58,d=>2,c=>-2,h=>1,b=>2,g=>4,f=>'UE4',i=>0} 3a000000b244020001000000 3a00000000000000b244020001000000 3a00000000000000b244020001000000 0000003a5929000020000000 3a000000b244020001000000 3a000000b244020001000000 000000000000003a5929000020000000 3a000000b244020001000000 0000003a5929000020000000 - {e=>4,a=>66,d=>-4,c=>-3,h=>7,b=>2,g=>5,f=>'UE4',i=>-4} 420000002ac9020027000000 42000000000000002ac9020027000000 42000000000000002ac9020027000000 0000004256494000f0000000 420000002ac9020027000000 420000002ac9020027000000 000000000000004256494000f0000000 420000002ac9020027000000 0000004256494000f0000000 - {e=>5,a=>9,d=>-1,c=>3,h=>4,b=>3,g=>3,f=>'UE3',i=>3} 09000000dbbb01001c000000 0900000000000000dbbb01001c000000 0900000000000000dbbb01001c000000 000000096fd6c0008c000000 09000000dbbb01001c000000 09000000dbbb01001c000000 00000000000000096fd6c0008c000000 09000000dbbb01001c000000 000000096fd6c0008c000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>6,a=>73,d=>2,j=>'SEM3',c=>-1,h=>3,b=>0,g=>6,f=>'UE4',i=>0} 49000000b84c030043010000 4900000000000000b84c030043010000 4900000000000000b84c030043010000 000000491d69800062800000 49000000b84c030043010000 49000000b84c030043010000 00000000000000491d69800062800000 49000000b84c030043010000 000000491d69800062800000 - {e=>1,a=>24,d=>0,j=>'SEM2',c=>-3,h=>7,b=>5,g=>1,f=>'UE3',i=>3} 180000002db200009f010000 18000000000000002db200009f010000 18000000000000002db200009f010000 00000018b4164000ef000000 180000002db200009f010000 180000002db200009f010000 0000000000000018b4164000ef000000 180000002db200009f010000 00000018b4164000ef000000 - {e=>0,a=>-128,d=>0,j=>'SEM3',c=>1,h=>4,b=>7,g=>1,f=>'UE0',i=>-1} 80ffffff0f8000007c010000 80ffffffffffffff0f8000007c010000 80ffffffffffffff0f8000007c010000 ffffff80e40040009e800000 80ffffff0f8000007c010000 80ffffff0f8000007c010000 ffffffffffffff80e40040009e800000 80ffffff0f8000007c010000 ffffff80e40040009e800000 - {e=>5,a=>-96,d=>1,j=>'SE1',c=>-2,h=>4,b=>4,g=>7,f=>'UE3',i=>-2} a0ffffff74ba030074000000 a0ffffffffffffff74ba030074000000 a0ffffffffffffff74ba030074000000 ffffffa098d7c00098800000 a0ffffff74ba030074000000 a0ffffff74ba030074000000 ffffffffffffffa098d7c00098800000 a0ffffff74ba030074000000 ffffffa098d7c00098800000 - {e=>0,a=>54,d=>-1,j=>'SEM1',c=>-3,h=>3,b=>5,g=>0,f=>'UE7',i=>3} 36000000ed710000db010000 3600000000000000ed710000db010000 3600000000000000ed710000db010000 00000036b78e00006f800000 36000000ed710000db010000 36000000ed710000db010000 0000000000000036b78e00006f800000 36000000ed710000db010000 00000036b78e00006f800000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>3,a=>-71,d=>-2,j=>'SEM2',c=>-3,k=>-37,h=>1,b=>1,g=>2,f=>'UE1',i=>1} b9ffffffa91701008901db00 b9ffffffffffffffa91701008901db00 b9ffffffffffffffa91701008901db00 ffffffb9373280002700db00 b9ffffffa91701008901db00 b9ffffffa91701008901db00 ffffffffffffffb9373280002700db00 b9ffffffa91701008901db00 ffffffb9373280002700db00 - {e=>6,a=>14,d=>1,j=>'SE2',c=>-3,k=>-10,h=>2,b=>0,g=>7,f=>'UE1',i=>1} 0e000000689c03008a00f600 0e00000000000000689c03008a00f600 0e00000000000000689c03008a00f600 0000000e14e3c0004500f600 0e000000689c03008a00f600 0e000000689c03008a00f600 000000000000000e14e3c0004500f600 0e000000689c03008a00f600 0000000e14e3c0004500f600 - {e=>1,a=>-4,d=>-4,j=>'SE1',c=>0,k=>-70,h=>2,b=>0,g=>7,f=>'UE0',i=>-2} fcffffff008303007200ba00 fcffffffffffffff008303007200ba00 fcffffffffffffff008303007200ba00 fffffffc0211c0005880ba00 fcffffff008303007200ba00 fcffffff008303007200ba00 fffffffffffffffc0211c0005880ba00 fcffffff008303007200ba00 fffffffc0211c0005880ba00 - {e=>0,a=>-105,d=>0,j=>'SEM1',c=>3,k=>-94,h=>3,b=>4,g=>4,f=>'UE1',i=>1} 97ffffff1c100200cb01a200 97ffffffffffffff1c100200cb01a200 97ffffffffffffff1c100200cb01a200 ffffff978c0300006780a200 97ffffff1c100200cb01a200 97ffffff1c100200cb01a200 ffffffffffffff978c0300006780a200 97ffffff1c100200cb01a200 ffffff978c0300006780a200 - {e=>0,a=>-18,d=>3,j=>'SEM4',c=>0,k=>76,h=>6,b=>7,g=>7,f=>'UE1',i=>-3} eeffffffc79003002e014c00 eeffffffffffffffc79003002e014c00 eeffffffffffffffc79003002e014c00 ffffffeee183c000d6004c00 eeffffffc79003002e014c00 eeffffffc79003002e014c00 ffffffffffffffeee183c000d6004c00 eeffffffc79003002e014c00 ffffffeee183c000d6004c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>0,a=>-72,d=>1,j=>'SE1',l=>1,c=>2,k=>-123,h=>6,b=>0,g=>0,f=>'UE0',i=>2} b8ffffff5000000056008501 b8ffffffffffffff5000000056008501 b8ffffffffffffff5000000056008501 ffffffb808800000c8808520 b8ffffff5000000056008501 b8ffffff5000000056008501 ffffffffffffffb808800000c8808520 b8ffffff5000000056008501 ffffffb808800000c8808520 - {e=>4,a=>38,d=>0,j=>'SE3',l=>3,c=>-3,k=>109,h=>0,b=>0,g=>6,f=>'UE4',i=>-2} 2600000028480300f0006d03 260000000000000028480300f0006d03 260000000000000028480300f0006d03 000000261449800019806d60 2600000028480300f0006d03 2600000028480300f0006d03 00000000000000261449800019806d60 2600000028480300f0006d03 000000261449800019806d60 - {e=>1,a=>-38,d=>0,j=>'SEM4',l=>7,c=>1,k=>88,h=>4,b=>5,g=>1,f=>'UE2',i=>0} daffffff0da2000004015807 daffffffffffffff0da2000004015807 daffffffffffffff0da2000004015807 ffffffdaa4144000820058e0 daffffff0da2000004015807 daffffff0da2000004015807 ffffffffffffffdaa4144000820058e0 daffffff0da2000004015807 ffffffdaa4144000820058e0 - {e=>3,a=>-30,d=>-3,j=>'SEM3',l=>1,c=>0,k=>47,h=>7,b=>3,g=>4,f=>'UE1',i=>1} e2ffffff431702004f012f01 e2ffffffffffffff431702004f012f01 e2ffffffffffffff431702004f012f01 ffffffe262b30000e6802f20 e2ffffff431702004f012f01 e2ffffff431702004f012f01 ffffffffffffffe262b30000e6802f20 e2ffffff431702004f012f01 ffffffe262b30000e6802f20 - {e=>2,a=>49,d=>-4,j=>'SEM3',l=>5,c=>2,k=>101,h=>0,b=>0,g=>1,f=>'UE5',i=>-4} 3100000010d5000060016505 310000000000000010d5000060016505 310000000000000010d5000060016505 000000310a2a4000128065a0 3100000010d5000060016505 3100000010d5000060016505 00000000000000310a2a4000128065a0 3100000010d5000060016505 000000310a2a4000128065a0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>2,a=>72,m=>-1,d=>-1,j=>'SE1',l=>2,c=>-3,k=>28,h=>7,b=>0,g=>6,f=>'UE7',i=>0} 48000000e875030047001c3a 4800000000000000e875030047001c3a 4800000000000000e875030047001c3a 0000004817af8000e0801c5c 48000000e875030047001c3a 48000000e875030047001c3a 000000000000004817af8000e0801c5c 48000000e875030047001c3a 0000004817af8000e0801c5c - {e=>5,a=>-114,m=>3,d=>3,j=>'SE0',l=>7,c=>-3,k=>-79,h=>1,b=>2,g=>6,f=>'UE1',i=>2} 8effffffea1a03001100b11f 8effffffffffffffea1a03001100b11f 8effffffffffffffea1a03001100b11f ffffff8e55d380002800b1ec 8effffffea1a03001100b11f 8effffffea1a03001100b11f ffffffffffffff8e55d380002800b1ec 8effffffea1a03001100b11f ffffff8e55d380002800b1ec - {e=>6,a=>-48,m=>1,d=>-3,j=>'SE2',l=>2,c=>-3,k=>78,h=>0,b=>5,g=>1,f=>'UE7',i=>-4} d0ffffff6dfd0000a0004e0a d0ffffffffffffff6dfd0000a0004e0a d0ffffffffffffff6dfd0000a0004e0a ffffffd0b6ee400011004e44 d0ffffff6dfd0000a0004e0a d0ffffff6dfd0000a0004e0a ffffffffffffffd0b6ee400011004e44 d0ffffff6dfd0000a0004e0a ffffffd0b6ee400011004e44 - {e=>5,a=>101,m=>-2,d=>3,j=>'SE3',l=>3,c=>-3,k=>-125,h=>5,b=>4,g=>0,f=>'UE1',i=>-3} 65000000ec1a0000ed008333 6500000000000000ec1a0000ed008333 6500000000000000ec1a0000ed008333 0000006595d20000b5808378 65000000ec1a0000ed008333 65000000ec1a0000ed008333 000000000000006595d20000b5808378 65000000ec1a0000ed008333 0000006595d20000b5808378 - {e=>4,a=>-7,m=>2,d=>1,j=>'SE1',l=>7,c=>-2,k=>8,h=>4,b=>7,g=>5,f=>'UE1',i=>-2} f9ffffff7798020074000817 f9ffffffffffffff7798020074000817 f9ffffffffffffff7798020074000817 fffffff9f8c34000988008e8 f9ffffff7798020074000817 f9ffffff7798020074000817 fffffffffffffff9f8c34000988008e8 f9ffffff7798020074000817 fffffff9f8c34000988008e8 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>2,a=>-110,m=>-1,d=>3,j=>'SEM1',l=>6,c=>-3,k=>119,h=>0,b=>3,g=>3,f=>'UE4',i=>0} 92ffffffebc60100c001773e02000000 92ffffffffffffffebc60100c001773e0200000000000000 92ffffffffffffffebc60100c001773e0200000000000000 ffffff9275b8c000038077dc40000000 92ffffffebc60100c001773e02000000 92ffffffebc60100c001773e02000000 ffffffffffffff9275b8c000038077dc4000000000000000 92ffffffebc60100c001773e02000000 ffffff9275b8c000038077dc40000000 - {e=>4,n=>0,a=>-68,m=>3,d=>-1,j=>'SEM4',l=>7,c=>0,k=>57,h=>0,b=>3,g=>7,f=>'UE7',i=>-2} bcffffffc3f903003001391f00000000 bcffffffffffffffc3f903003001391f0000000000000000 bcffffffffffffffc3f903003001391f0000000000000000 ffffffbc63cfc0001a0039ec00000000 bcffffffc3f903003001391f00000000 bcffffffc3f903003001391f00000000 ffffffffffffffbc63cfc0001a0039ec0000000000000000 bcffffffc3f903003001391f00000000 ffffffbc63cfc0001a0039ec00000000 - {e=>4,n=>6,a=>-6,m=>-2,d=>-1,j=>'SE1',l=>3,c=>3,k=>127,h=>3,b=>6,g=>5,f=>'UE3',i=>2} faffffffdeb9020053007f3306000000 faffffffffffffffdeb9020053007f330600000000000000 faffffffffffffffdeb9020053007f330600000000000000 fffffffacfc7400068807f78c0000000 faffffffdeb9020053007f3306000000 faffffffdeb9020053007f3306000000 fffffffffffffffacfc7400068807f78c000000000000000 faffffffdeb9020053007f3306000000 fffffffacfc7400068807f78c0000000 - {e=>1,n=>0,a=>-116,m=>-2,d=>1,j=>'SE1',l=>7,c=>-2,k=>-82,h=>7,b=>1,g=>4,f=>'UE7',i=>3} 8cffffff717202005f00ae3700000000 8cffffffffffffff717202005f00ae370000000000000000 8cffffffffffffff717202005f00ae370000000000000000 ffffff8c389f0000ec80aef800000000 8cffffff717202005f00ae3700000000 8cffffff717202005f00ae3700000000 ffffffffffffff8c389f0000ec80aef80000000000000000 8cffffff717202005f00ae3700000000 ffffff8c389f0000ec80aef800000000 - {e=>5,n=>5,a=>122,m=>-3,d=>3,j=>'SEM2',l=>2,c=>-2,k=>31,h=>3,b=>1,g=>5,f=>'UE0',i=>1} 7a000000f18a02008b011f2a05000000 7a00000000000000f18a02008b011f2a0500000000000000 7a00000000000000f18a02008b011f2a0500000000000000 0000007a39d1400067001f54a0000000 7a000000f18a02008b011f2a05000000 7a000000f18a02008b011f2a05000000 000000000000007a39d1400067001f54a000000000000000 7a000000f18a02008b011f2a05000000 0000007a39d1400067001f54a0000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>5,n=>1,a=>-10,m=>1,d=>-1,j=>'SE2',l=>2,c=>0,k=>99,h=>6,b=>3,g=>7,f=>'UE6',o=>213,i=>-2} f6ffffffc3eb0300b600630a01d50000 f6ffffffffffffffc3eb0300b600630a01d5000000000000 f6ffffffffffffffc3eb0300b600630a01d5000000000000 fffffff663ddc000d900634420d50000 f6ffffffc3eb0300b600630a01d50000 f6ffffffc3eb0300b600630a01d50000 fffffffffffffff663ddc000d900634420d5000000000000 f6ffffffc3eb0300b600630a01d50000 fffffff663ddc000d900634420d50000 - {e=>0,n=>3,a=>53,m=>-2,d=>-1,j=>'SE1',l=>7,c=>1,k=>25,h=>3,b=>2,g=>5,f=>'UE3',o=>128,i=>3} 35000000cab102005b00193703800000 3500000000000000cab102005b0019370380000000000000 3500000000000000cab102005b0019370380000000000000 00000035478740006c8019f860800000 35000000cab102005b00193703800000 35000000cab102005b00193703800000 0000000000000035478740006c8019f86080000000000000 35000000cab102005b00193703800000 00000035478740006c8019f860800000 - {e=>5,n=>2,a=>23,m=>1,d=>-2,j=>'SEM2',l=>3,c=>-3,k=>-114,h=>1,b=>1,g=>2,f=>'UE6',o=>170,i=>-4} 17000000a96b0100a1018e0b02aa0000 1700000000000000a96b0100a1018e0b02aa000000000000 1700000000000000a96b0100a1018e0b02aa000000000000 00000017375c800033008e6440aa0000 17000000a96b0100a1018e0b02aa0000 17000000a96b0100a1018e0b02aa0000 0000000000000017375c800033008e6440aa000000000000 17000000a96b0100a1018e0b02aa0000 00000017375c800033008e6440aa0000 - {e=>7,n=>7,a=>-19,m=>-1,d=>-1,j=>'SE3',l=>2,c=>0,k=>-61,h=>3,b=>3,g=>7,f=>'UE6',o=>181,i=>-1} edffffffc3ef0300fb00c33a07b50000 edffffffffffffffc3ef0300fb00c33a07b5000000000000 edffffffffffffffc3ef0300fb00c33a07b5000000000000 ffffffed63fdc0007d80c35ce0b50000 edffffffc3ef0300fb00c33a07b50000 edffffffc3ef0300fb00c33a07b50000 ffffffffffffffed63fdc0007d80c35ce0b5000000000000 edffffffc3ef0300fb00c33a07b50000 ffffffed63fdc0007d80c35ce0b50000 - {e=>5,n=>5,a=>-62,m=>0,d=>-4,j=>'SEM4',l=>6,c=>-2,k=>-114,h=>3,b=>4,g=>6,f=>'UE0',o=>248,i=>3} c2ffffff340b03001b018e0605f80000 c2ffffffffffffff340b03001b018e0605f8000000000000 c2ffffffffffffff340b03001b018e0605f8000000000000 ffffffc29a5180006e008ec0a0f80000 c2ffffff340b03001b018e0605f80000 c2ffffff340b03001b018e0605f80000 ffffffffffffffc29a5180006e008ec0a0f8000000000000 c2ffffff340b03001b018e0605f80000 ffffffc29a5180006e008ec0a0f80000 = struct toobig { unsigned char a:2; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>1} 01 01 01 40 01000000 01 40 01 40 - {a=>1} 01 01 01 40 01000000 01 40 01 40 = struct toobig { unsigned char a:2; unsigned char b:7; }; - {a=>0,b=>93} 005d 005d 005d 00ba 005d0000 005d 00ba 005d 00ba - {a=>3,b=>125} 037d 037d 037d c0fa 037d0000 037d c0fa 037d c0fa - {a=>1,b=>103} 0167 0167 0167 40ce 01670000 0167 40ce 0167 40ce - {a=>0,b=>44} 002c 002c 002c 0058 002c0000 002c 0058 002c 0058 - {a=>2,b=>56} 0238 0238 0238 8070 02380000 0238 8070 0238 8070 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>1,b=>105} 0169 0169 0169 40d2 01690000 0169 40d2 0169 40d2 - {a=>1,b=>69} 0145 0145 0145 408a 01450000 0145 408a 0145 408a - {a=>0,b=>100} 0064 0064 0064 00c8 00640000 0064 00c8 0064 00c8 - {a=>1,b=>64} 0140 0140 0140 4080 01400000 0140 4080 0140 4080 - {a=>1,b=>29} 011d 011d 011d 403a 011d0000 011d 403a 011d 403a = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>2,a=>1,b=>120} 01780200 01780200 01780200 40f08000 01780200 01780200 40f08000 01780200 40f08000 - {c=>3,a=>3,b=>117} 03750300 03750300 03750300 c0eac000 03750300 03750300 c0eac000 03750300 c0eac000 - {c=>2,a=>3,b=>66} 03420200 03420200 03420200 c0848000 03420200 03420200 c0848000 03420200 c0848000 - {c=>2,a=>3,b=>40} 03280200 03280200 03280200 c0508000 03280200 03280200 c0508000 03280200 c0508000 - {c=>3,a=>1,b=>78} 014e0300 014e0300 014e0300 409cc000 014e0300 014e0300 409cc000 014e0300 409cc000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>1,a=>0,b=>40,d=>29011} 002801005371 002801005371 002801005371 00504000e2a6 0028010053710000 002801005371 00504000e2a6 002801005371 00504000e2a6 - {c=>1,a=>1,b=>52,d=>7870} 01340100be1e 01340100be1e 01340100be1e 406840003d7c 01340100be1e0000 01340100be1e 406840003d7c 01340100be1e 406840003d7c - {c=>3,a=>0,b=>127,d=>24484} 007f0300a45f 007f0300a45f 007f0300a45f 00fec000bf48 007f0300a45f0000 007f0300a45f 00fec000bf48 007f0300a45f 00fec000bf48 - {c=>0,a=>1,b=>117,d=>2770} 01750000d20a 01750000d20a 01750000d20a 40ea000015a4 01750000d20a0000 01750000d20a 40ea000015a4 01750000d20a 40ea000015a4 - {c=>0,a=>2,b=>117,d=>21525} 027500001554 027500001554 027500001554 80ea0000a82a 0275000015540000 027500001554 80ea0000a82a 027500001554 80ea0000a82a = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>0,a=>2,b=>47,d=>5532} 022f00009c150000 022f00009c150000 022f00009c150000 805e00002b380000 022f00009c150000 022f00009c150000 805e00002b380000 022f00009c150000 805e00002b380000 - {c=>0,a=>2,b=>53,d=>17293} 023500008d430000 023500008d430000 023500008d430000 806a0000871a0000 023500008d430000 023500008d430000 806a0000871a0000 023500008d430000 806a0000871a0000 - {c=>0,a=>0,b=>42,d=>15065} 002a0000d93a0000 002a0000d93a0000 002a0000d93a0000 0054000075b20000 002a0000d93a0000 002a0000d93a0000 0054000075b20000 002a0000d93a0000 0054000075b20000 - {c=>1,a=>2,b=>43,d=>26082} 022b0100e2650000 022b0100e2650000 022b0100e2650000 80564000cbc40000 022b0100e2650000 022b0100e2650000 80564000cbc40000 022b0100e2650000 80564000cbc40000 - {c=>2,a=>0,b=>3,d=>23011} 00030200e3590000 00030200e3590000 00030200e3590000 00068000b3c60000 00030200e3590000 00030200e3590000 00068000b3c60000 00030200e3590000 00068000b3c60000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>0,c=>2,a=>1,b=>107,d=>14008} 016b0200b836000000000000 016b0200b836000000000000 016b0200b836000000000000 40d680006d70000000000000 016b0200b836000000000000 016b0200b836000000000000 40d680006d70000000000000 016b0200b836000000000000 40d680006d70000000000000 - {e=>1,c=>1,a=>0,b=>109,d=>31882} 006d01008a7c000001000000 006d01008a7c000001000000 006d01008a7c000001000000 00da4000f914000040000000 006d01008a7c000001000000 006d01008a7c000001000000 00da4000f914000040000000 006d01008a7c000001000000 00da4000f914000040000000 - {e=>2,c=>1,a=>0,b=>83,d=>27991} 00530100576d000002000000 00530100576d000002000000 00530100576d000002000000 00a64000daae000080000000 00530100576d000002000000 00530100576d000002000000 00a64000daae000080000000 00530100576d000002000000 00a64000daae000080000000 - {e=>0,c=>3,a=>1,b=>74,d=>7214} 014a03002e1c000000000000 014a03002e1c000000000000 014a03002e1c000000000000 4094c000385c000000000000 014a03002e1c000000000000 014a03002e1c000000000000 4094c000385c000000000000 014a03002e1c000000000000 4094c000385c000000000000 - {e=>0,c=>1,a=>0,b=>93,d=>28404} 005d0100f46e000000000000 005d0100f46e000000000000 005d0100f46e000000000000 00ba4000dde8000000000000 005d0100f46e000000000000 005d0100f46e000000000000 00ba4000dde8000000000000 005d0100f46e000000000000 00ba4000dde8000000000000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>2,c=>3,a=>2,b=>66,d=>17839,f=>37720169} 02420300af4500000200000069903f02 02420300af4500000200000069903f02 02420300af4500000200000069903f02 8084c0008b5e000080000000047f20d2 02420300af4500000200000069903f02 02420300af4500000200000069903f02 8084c0008b5e000080000000047f20d2 02420300af4500000200000069903f02 8084c0008b5e000080000000047f20d2 - {e=>2,c=>0,a=>2,b=>81,d=>29158,f=>19309962} 02510000e6710000020000008aa52601 02510000e6710000020000008aa52601 02510000e6710000020000008aa52601 80a20000e3cc000080000000024d4b14 02510000e6710000020000008aa52601 02510000e6710000020000008aa52601 80a20000e3cc000080000000024d4b14 02510000e6710000020000008aa52601 80a20000e3cc000080000000024d4b14 - {e=>0,c=>1,a=>2,b=>98,d=>18169,f=>163308787} 02620100f946000000000000f3e4bb09 02620100f946000000000000f3e4bb09 02620100f946000000000000f3e4bb09 80c440008df20000000000001377c9e6 02620100f946000000000000f3e4bb09 02620100f946000000000000f3e4bb09 80c440008df20000000000001377c9e6 02620100f946000000000000f3e4bb09 80c440008df20000000000001377c9e6 - {e=>0,c=>3,a=>3,b=>41,d=>24753,f=>707702915} 03290300b16000000000000083b02e2a 03290300b16000000000000083b02e2a 03290300b16000000000000083b02e2a c052c000c162000000000000545d6106 03290300b16000000000000083b02e2a 03290300b16000000000000083b02e2a c052c000c162000000000000545d6106 03290300b16000000000000083b02e2a c052c000c162000000000000545d6106 - {e=>3,c=>0,a=>2,b=>18,d=>28569,f=>199312493} 02120000996f0000030000006d44e10b 02120000996f0000030000006d44e10b 02120000996f0000030000006d44e10b 80240000df320000c000000017c288da 02120000996f0000030000006d44e10b 02120000996f0000030000006d44e10b 80240000df320000c000000017c288da 02120000996f0000030000006d44e10b 80240000df320000c000000017c288da = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>3,c=>0,a=>3,g=>253,b=>73,d=>20290,f=>324422081} 03490000424f000003000000c1495613fd000000 03490000424f000003000000c1495613fd000000 03490000424f000003000000c1495613fd000000 c09200009e840000c000000026ac9382fd000000 03490000424f000003000000c1495613fd000000 03490000424f000003000000c1495613fd000000 c09200009e840000c000000026ac9382fd000000 03490000424f000003000000c1495613fd000000 c09200009e840000c000000026ac9382fd000000 - {e=>2,c=>1,a=>2,g=>98,b=>58,d=>14829,f=>1109100526} 023a0100ed39000002000000ee871b4262000000 023a0100ed39000002000000ee871b4262000000 023a0100ed39000002000000ee871b4262000000 8074400073da00008000000084370fdc62000000 023a0100ed39000002000000ee871b4262000000 023a0100ed39000002000000ee871b4262000000 8074400073da00008000000084370fdc62000000 023a0100ed39000002000000ee871b4262000000 8074400073da00008000000084370fdc62000000 - {e=>1,c=>2,a=>3,g=>243,b=>82,d=>31588,f=>727978398} 03520200647b0000010000009e11642bf3000000 03520200647b0000010000009e11642bf3000000 03520200647b0000010000009e11642bf3000000 c0a48000f6c800004000000056c8233cf3000000 03520200647b0000010000009e11642bf3000000 03520200647b0000010000009e11642bf3000000 c0a48000f6c800004000000056c8233cf3000000 03520200647b0000010000009e11642bf3000000 c0a48000f6c800004000000056c8233cf3000000 - {e=>1,c=>1,a=>1,g=>104,b=>26,d=>22162,f=>432784954} 011a010092560000010000003ac6cb1968000000 011a010092560000010000003ac6cb1968000000 011a010092560000010000003ac6cb1968000000 40344000ad2400004000000033978c7468000000 011a010092560000010000003ac6cb1968000000 011a010092560000010000003ac6cb1968000000 40344000ad2400004000000033978c7468000000 011a010092560000010000003ac6cb1968000000 40344000ad2400004000000033978c7468000000 - {e=>0,c=>3,a=>3,g=>167,b=>62,d=>17539,f=>1939871904} 033e03008344000000000000a018a073a7000000 033e03008344000000000000a018a073a7000000 033e03008344000000000000a018a073a7000000 c07cc0008906000000000000e7403140a7000000 033e03008344000000000000a018a073a7000000 033e03008344000000000000a018a073a7000000 c07cc0008906000000000000e7403140a7000000 033e03008344000000000000a018a073a7000000 c07cc0008906000000000000e7403140a7000000 = struct toobig { char a; unsigned char b:2; }; - {a=>-24,b=>1} e801 e801 e801 e840 e8010000 e801 e840 e801 e840 - {a=>61,b=>3} 3d03 3d03 3d03 3dc0 3d030000 3d03 3dc0 3d03 3dc0 - {a=>-95,b=>1} a101 a101 a101 a140 a1010000 a101 a140 a101 a140 - {a=>-2,b=>2} fe02 fe02 fe02 fe80 fe020000 fe02 fe80 fe02 fe80 - {a=>-71,b=>3} b903 b903 b903 b9c0 b9030000 b903 b9c0 b903 b9c0 = struct toobig { char a; unsigned char b:2; unsigned char c:7; }; - {c=>113,a=>-30,b=>1} e20171 e20171 e20171 e240e2 e2017100 e20171 e240e2 e20171 e240e2 - {c=>77,a=>93,b=>3} 5d034d 5d034d 5d034d 5dc09a 5d034d00 5d034d 5dc09a 5d034d 5dc09a - {c=>76,a=>-105,b=>0} 97004c 97004c 97004c 970098 97004c00 97004c 970098 97004c 970098 - {c=>113,a=>-106,b=>0} 960071 960071 960071 9600e2 96007100 960071 9600e2 960071 9600e2 - {c=>111,a=>21,b=>3} 15036f 15036f 15036f 15c0de 15036f00 15036f 15c0de 15036f 15c0de = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>117,a=>4,b=>0} 04007500 04007500 04007500 0400ea00 04007500 04007500 0400ea00 04007500 0400ea00 - {c=>110,a=>92,b=>1} 5c016e00 5c016e00 5c016e00 5c40dc00 5c016e00 5c016e00 5c40dc00 5c016e00 5c40dc00 - {c=>80,a=>1,b=>0} 01005000 01005000 01005000 0100a000 01005000 01005000 0100a000 01005000 0100a000 - {c=>115,a=>49,b=>0} 31007300 31007300 31007300 3100e600 31007300 31007300 3100e600 31007300 3100e600 - {c=>119,a=>-53,b=>1} cb017700 cb017700 cb017700 cb40ee00 cb017700 cb017700 cb40ee00 cb017700 cb40ee00 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>119,a=>99,b=>1,d=>2} 630177000200 630177000200 630177000200 6340ee008000 6301770002000000 630177000200 6340ee008000 630177000200 6340ee008000 - {c=>52,a=>-52,b=>2,d=>1} cc0234000100 cc0234000100 cc0234000100 cc8068004000 cc02340001000000 cc0234000100 cc8068004000 cc0234000100 cc8068004000 - {c=>59,a=>2,b=>2,d=>0} 02023b000000 02023b000000 02023b000000 028076000000 02023b0000000000 02023b000000 028076000000 02023b000000 028076000000 - {c=>25,a=>59,b=>3,d=>1} 3b0319000100 3b0319000100 3b0319000100 3bc032004000 3b03190001000000 3b0319000100 3bc032004000 3b0319000100 3bc032004000 - {c=>52,a=>-19,b=>0,d=>0} ed0034000000 ed0034000000 ed0034000000 ed0068000000 ed00340000000000 ed0034000000 ed0068000000 ed0034000000 ed0068000000 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>10626,c=>62,a=>76,b=>3,d=>2} 4c033e0002008229 4c033e0002008229 4c033e0002008229 4cc07c0080005304 4c033e0002008229 4c033e0002008229 4cc07c0080005304 4c033e0002008229 4cc07c0080005304 - {e=>16013,c=>106,a=>-123,b=>2,d=>2} 85026a0002008d3e 85026a0002008d3e 85026a0002008d3e 8580d40080007d1a 85026a0002008d3e 85026a0002008d3e 8580d40080007d1a 85026a0002008d3e 8580d40080007d1a - {e=>15778,c=>84,a=>-66,b=>1,d=>3} be0154000300a23d be0154000300a23d be0154000300a23d be40a800c0007b44 be0154000300a23d be0154000300a23d be40a800c0007b44 be0154000300a23d be40a800c0007b44 - {e=>3225,c=>25,a=>-124,b=>1,d=>1} 840119000100990c 840119000100990c 840119000100990c 8440320040001932 840119000100990c 840119000100990c 8440320040001932 840119000100990c 8440320040001932 - {e=>27218,c=>32,a=>-118,b=>0,d=>2} 8a0020000200526a 8a0020000200526a 8a0020000200526a 8a0040008000d4a4 8a0020000200526a 8a0020000200526a 8a0040008000d4a4 8a0020000200526a 8a0040008000d4a4 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>21377,c=>115,a=>-29,b=>0,d=>3} e300730003008153 e300730003008153 e300730003008153 e300e600c000a702 e300730003008153 e300730003008153 e300e600c000a702 e300730003008153 e300e600c000a702 - {e=>21700,c=>42,a=>-64,b=>3,d=>0} c0032a000000c454 c0032a000000c454 c0032a000000c454 c0c054000000a988 c0032a000000c454 c0032a000000c454 c0c054000000a988 c0032a000000c454 c0c054000000a988 - {e=>20468,c=>93,a=>104,b=>0,d=>3} 68005d000300f44f 68005d000300f44f 68005d000300f44f 6800ba00c0009fe8 68005d000300f44f 68005d000300f44f 6800ba00c0009fe8 68005d000300f44f 6800ba00c0009fe8 - {e=>31677,c=>22,a=>109,b=>2,d=>3} 6d0216000300bd7b 6d0216000300bd7b 6d0216000300bd7b 6d802c00c000f77a 6d0216000300bd7b 6d0216000300bd7b 6d802c00c000f77a 6d0216000300bd7b 6d802c00c000f77a - {e=>23636,c=>112,a=>-2,b=>1,d=>0} fe0170000000545c fe0170000000545c fe0170000000545c fe40e0000000b8a8 fe0170000000545c fe0170000000545c fe40e0000000b8a8 fe0170000000545c fe40e0000000b8a8 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>1537,c=>102,a=>-45,b=>3,d=>3,f=>0} d30366000300010600000000 d30366000300010600000000 d30366000300010600000000 d3c0cc00c0000c0200000000 d30366000300010600000000 d30366000300010600000000 d3c0cc00c0000c0200000000 d30366000300010600000000 d3c0cc00c0000c0200000000 - {e=>22539,c=>10,a=>-66,b=>3,d=>1,f=>1} be030a0001000b5801000000 be030a0001000b5801000000 be030a0001000b5801000000 bec014004000b01640000000 be030a0001000b5801000000 be030a0001000b5801000000 bec014004000b01640000000 be030a0001000b5801000000 bec014004000b01640000000 - {e=>28767,c=>112,a=>28,b=>1,d=>1,f=>1} 1c01700001005f7001000000 1c01700001005f7001000000 1c01700001005f7001000000 1c40e0004000e0be40000000 1c01700001005f7001000000 1c01700001005f7001000000 1c40e0004000e0be40000000 1c01700001005f7001000000 1c40e0004000e0be40000000 - {e=>10945,c=>37,a=>-128,b=>0,d=>0,f=>1} 800025000000c12a01000000 800025000000c12a01000000 800025000000c12a01000000 80004a000000558240000000 800025000000c12a01000000 800025000000c12a01000000 80004a000000558240000000 800025000000c12a01000000 80004a000000558240000000 - {e=>7837,c=>65,a=>-30,b=>2,d=>1,f=>2} e202410001009d1e02000000 e202410001009d1e02000000 e202410001009d1e02000000 e280820040003d3a80000000 e202410001009d1e02000000 e202410001009d1e02000000 e280820040003d3a80000000 e202410001009d1e02000000 e280820040003d3a80000000 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16952,c=>81,a=>-69,g=>1806494585,b=>0,d=>0,f=>1} bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b bb00a2000000847040000000d759d6f2 bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b bb00a2000000847040000000d759d6f2 bb005100000038420100000079ebac6b bb00a2000000847040000000d759d6f2 - {e=>22905,c=>42,a=>28,g=>718498820,b=>3,d=>3,f=>0} 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a 1cc05400c000b2f20000000055a6d808 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a 1cc05400c000b2f20000000055a6d808 1c032a000300795900000000046cd32a 1cc05400c000b2f20000000055a6d808 - {e=>25314,c=>59,a=>-52,g=>851143488,b=>3,d=>3,f=>0} cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 ccc07600c000c5c4000000006576d680 cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 ccc07600c000c5c4000000006576d680 cc033b000300e26200000000406bbb32 ccc07600c000c5c4000000006576d680 - {e=>9562,c=>91,a=>-56,g=>17470223,b=>0,d=>1,f=>0} c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 c800b60040004ab4000000000215261e c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 c800b60040004ab4000000000215261e c8005b0001005a25000000000f930a01 c800b60040004ab4000000000215261e - {e=>19455,c=>19,a=>7,g=>1006255369,b=>0,d=>2,f=>3} 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 07002600800097fec000000077f47a12 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 07002600800097fec000000077f47a12 070013000200ff4b03000000093dfa3b 07002600800097fec000000077f47a12 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>19431,a=>126,d=>3,c=>84,h=>119,b=>2,g=>10182399,f=>1} 7e0254000300e74b01000000ff5e9b0077000000 7e0254000300e74b01000000ff5e9b0077000000 7e0254000300e74b01000000ff5e9b0077000000 7e80a800c00097ce400000000136bdfe77000000 7e0254000300e74b01000000ff5e9b0077000000 7e0254000300e74b01000000ff5e9b0077000000 7e80a800c00097ce400000000136bdfe77000000 7e0254000300e74b01000000ff5e9b0077000000 7e80a800c00097ce400000000136bdfe77000000 - {e=>1236,a=>51,d=>0,c=>82,h=>240,b=>2,g=>1480777427,f=>1} 330252000000d40401000000d3de4258f0000000 330252000000d40401000000d3de4258f0000000 330252000000d40401000000d3de4258f0000000 3380a400000009a840000000b085bda6f0000000 330252000000d40401000000d3de4258f0000000 330252000000d40401000000d3de4258f0000000 3380a400000009a840000000b085bda6f0000000 330252000000d40401000000d3de4258f0000000 3380a400000009a840000000b085bda6f0000000 - {e=>30136,a=>-73,d=>2,c=>69,h=>69,b=>0,g=>579636421,f=>2} b70045000200b87502000000c58c8c2245000000 b70045000200b87502000000c58c8c2245000000 b70045000200b87502000000c58c8c2245000000 b7008a008000eb70800000004519198a45000000 b70045000200b87502000000c58c8c2245000000 b70045000200b87502000000c58c8c2245000000 b7008a008000eb70800000004519198a45000000 b70045000200b87502000000c58c8c2245000000 b7008a008000eb70800000004519198a45000000 - {e=>25530,a=>-39,d=>2,c=>73,h=>143,b=>3,g=>1327623552,f=>3} d90349000200ba630300000080ed214f8f000000 d90349000200ba630300000080ed214f8f000000 d90349000200ba630300000080ed214f8f000000 d9c092008000c774c00000009e43db008f000000 d90349000200ba630300000080ed214f8f000000 d90349000200ba630300000080ed214f8f000000 d9c092008000c774c00000009e43db008f000000 d90349000200ba630300000080ed214f8f000000 d9c092008000c774c00000009e43db008f000000 - {e=>29715,a=>81,d=>0,c=>33,h=>85,b=>0,g=>909633605,f=>1} 51002100000013740100000045e8373655000000 51002100000013740100000045e8373655000000 51002100000013740100000045e8373655000000 510042000000e826400000006c6fd08a55000000 51002100000013740100000045e8373655000000 51002100000013740100000045e8373655000000 510042000000e826400000006c6fd08a55000000 51002100000013740100000045e8373655000000 510042000000e826400000006c6fd08a55000000 = struct toobig { short a; unsigned char b:2; }; - {a=>-69,b=>3} bbff0300 bbff0300 bbff0300 ffbbc000 bbff0300 bbff0300 ffbbc000 bbff0300 ffbbc000 - {a=>-109,b=>1} 93ff0100 93ff0100 93ff0100 ff934000 93ff0100 93ff0100 ff934000 93ff0100 ff934000 - {a=>68,b=>2} 44000200 44000200 44000200 00448000 44000200 44000200 00448000 44000200 00448000 - {a=>-46,b=>1} d2ff0100 d2ff0100 d2ff0100 ffd24000 d2ff0100 d2ff0100 ffd24000 d2ff0100 ffd24000 - {a=>109,b=>0} 6d000000 6d000000 6d000000 006d0000 6d000000 6d000000 006d0000 6d000000 006d0000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; }; - {c=>54,a=>-126,b=>1} 82ff0136 82ff0136 82ff0136 ff82406c 82ff0136 82ff0136 ff82406c 82ff0136 ff82406c - {c=>117,a=>49,b=>0} 31000075 31000075 31000075 003100ea 31000075 31000075 003100ea 31000075 003100ea - {c=>60,a=>-49,b=>3} cfff033c cfff033c cfff033c ffcfc078 cfff033c cfff033c ffcfc078 cfff033c ffcfc078 - {c=>21,a=>117,b=>0} 75000015 75000015 75000015 0075002a 75000015 75000015 0075002a 75000015 0075002a - {c=>6,a=>-91,b=>2} a5ff0206 a5ff0206 a5ff0206 ffa5800c a5ff0206 a5ff0206 ffa5800c a5ff0206 ffa5800c = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>126,a=>87,b=>0} 5700007e 5700007e 5700007e 005700fc 5700007e 5700007e 005700fc 5700007e 005700fc - {c=>27,a=>-45,b=>1} d3ff011b d3ff011b d3ff011b ffd34036 d3ff011b d3ff011b ffd34036 d3ff011b ffd34036 - {c=>6,a=>-11,b=>2} f5ff0206 f5ff0206 f5ff0206 fff5800c f5ff0206 f5ff0206 fff5800c f5ff0206 fff5800c - {c=>55,a=>63,b=>0} 3f000037 3f000037 3f000037 003f006e 3f000037 3f000037 003f006e 3f000037 003f006e - {c=>121,a=>81,b=>0} 51000079 51000079 51000079 005100f2 51000079 51000079 005100f2 51000079 005100f2 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>11,a=>-34,b=>0,d=>1} deff000b0100 deff000b0100 deff000b0100 ffde00164000 deff000b01000000 deff000b0100 ffde00164000 deff000b0100 ffde00164000 - {c=>109,a=>-11,b=>2,d=>1} f5ff026d0100 f5ff026d0100 f5ff026d0100 fff580da4000 f5ff026d01000000 f5ff026d0100 fff580da4000 f5ff026d0100 fff580da4000 - {c=>79,a=>-9,b=>1,d=>2} f7ff014f0200 f7ff014f0200 f7ff014f0200 fff7409e8000 f7ff014f02000000 f7ff014f0200 fff7409e8000 f7ff014f0200 fff7409e8000 - {c=>12,a=>121,b=>3,d=>3} 7900030c0300 7900030c0300 7900030c0300 0079c018c000 7900030c03000000 7900030c0300 0079c018c000 7900030c0300 0079c018c000 - {c=>3,a=>-105,b=>1,d=>0} 97ff01030000 97ff01030000 97ff01030000 ff9740060000 97ff010300000000 97ff01030000 ff9740060000 97ff01030000 ff9740060000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>16815,c=>31,a=>-103,b=>3,d=>0} 99ff031f0000af41 99ff031f0000af41 99ff031f0000af41 ff99c03e0000835e 99ff031f0000af41 99ff031f0000af41 ff99c03e0000835e 99ff031f0000af41 ff99c03e0000835e - {e=>30240,c=>36,a=>-51,b=>1,d=>2} cdff012402002076 cdff012402002076 cdff012402002076 ffcd40488000ec40 cdff012402002076 cdff012402002076 ffcd40488000ec40 cdff012402002076 ffcd40488000ec40 - {e=>7916,c=>40,a=>47,b=>3,d=>1} 2f0003280100ec1e 2f0003280100ec1e 2f0003280100ec1e 002fc05040003dd8 2f0003280100ec1e 2f0003280100ec1e 002fc05040003dd8 2f0003280100ec1e 002fc05040003dd8 - {e=>18293,c=>39,a=>19,b=>3,d=>2} 1300032702007547 1300032702007547 1300032702007547 0013c04e80008eea 1300032702007547 1300032702007547 0013c04e80008eea 1300032702007547 0013c04e80008eea - {e=>20458,c=>127,a=>-47,b=>1,d=>3} d1ff017f0300ea4f d1ff017f0300ea4f d1ff017f0300ea4f ffd140fec0009fd4 d1ff017f0300ea4f d1ff017f0300ea4f ffd140fec0009fd4 d1ff017f0300ea4f ffd140fec0009fd4 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>4625,c=>71,a=>-47,b=>0,d=>0} d1ff004700001112 d1ff004700001112 d1ff004700001112 ffd1008e00002422 d1ff004700001112 d1ff004700001112 ffd1008e00002422 d1ff004700001112 ffd1008e00002422 - {e=>32168,c=>81,a=>26,b=>2,d=>1} 1a0002510100a87d 1a0002510100a87d 1a0002510100a87d 001a80a24000fb50 1a0002510100a87d 1a0002510100a87d 001a80a24000fb50 1a0002510100a87d 001a80a24000fb50 - {e=>16938,c=>8,a=>95,b=>0,d=>2} 5f00000802002a42 5f00000802002a42 5f00000802002a42 005f001080008454 5f00000802002a42 5f00000802002a42 005f001080008454 5f00000802002a42 005f001080008454 - {e=>7085,c=>73,a=>-59,b=>0,d=>1} c5ff00490100ad1b c5ff00490100ad1b c5ff00490100ad1b ffc500924000375a c5ff00490100ad1b c5ff00490100ad1b ffc500924000375a c5ff00490100ad1b ffc500924000375a - {e=>22949,c=>98,a=>-95,b=>2,d=>0} a1ff02620000a559 a1ff02620000a559 a1ff02620000a559 ffa180c40000b34a a1ff02620000a559 a1ff02620000a559 ffa180c40000b34a a1ff02620000a559 ffa180c40000b34a = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>15082,c=>111,a=>-95,b=>0,d=>0,f=>2} a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 ffa100de000075d480000000 a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 ffa100de000075d480000000 a1ff006f0000ea3a02000000 ffa100de000075d480000000 - {e=>2765,c=>57,a=>35,b=>3,d=>0,f=>3} 230003390000cd0a03000000 230003390000cd0a03000000 230003390000cd0a03000000 0023c0720000159ac0000000 230003390000cd0a03000000 230003390000cd0a03000000 0023c0720000159ac0000000 230003390000cd0a03000000 0023c0720000159ac0000000 - {e=>10395,c=>112,a=>-21,b=>2,d=>3,f=>1} ebff027003009b2801000000 ebff027003009b2801000000 ebff027003009b2801000000 ffeb80e0c000513640000000 ebff027003009b2801000000 ebff027003009b2801000000 ffeb80e0c000513640000000 ebff027003009b2801000000 ffeb80e0c000513640000000 - {e=>27935,c=>81,a=>-93,b=>3,d=>1,f=>3} a3ff035101001f6d03000000 a3ff035101001f6d03000000 a3ff035101001f6d03000000 ffa3c0a24000da3ec0000000 a3ff035101001f6d03000000 a3ff035101001f6d03000000 ffa3c0a24000da3ec0000000 a3ff035101001f6d03000000 ffa3c0a24000da3ec0000000 - {e=>9978,c=>10,a=>-112,b=>2,d=>1,f=>0} 90ff020a0100fa2600000000 90ff020a0100fa2600000000 90ff020a0100fa2600000000 ff90801440004df400000000 90ff020a0100fa2600000000 90ff020a0100fa2600000000 ff90801440004df400000000 90ff020a0100fa2600000000 ff90801440004df400000000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7540,c=>19,a=>-11,g=>1471494247,b=>0,d=>2,f=>2} f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 fff5002680003ae880000000af6a70ce f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 fff5002680003ae880000000af6a70ce f5ff00130200741d020000006738b557 fff5002680003ae880000000af6a70ce - {e=>21082,c=>15,a=>-52,g=>380642011,b=>2,d=>3,f=>0} ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ffcc801ec000a4b4000000002d6045b6 ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ffcc801ec000a4b4000000002d6045b6 ccff020f03005a5200000000db22b016 ffcc801ec000a4b4000000002d6045b6 - {e=>20626,c=>108,a=>-96,g=>1260212640,b=>2,d=>1,f=>2} a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b ffa080d84000a12480000000963aa340 a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b ffa080d84000a12480000000963aa340 a0ff026c0100925002000000a0511d4b ffa080d84000a12480000000963aa340 - {e=>9472,c=>8,a=>-4,g=>1691591019,b=>2,d=>1,f=>2} fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fffc801040004a0080000000c9a742d6 fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fffc801040004a0080000000c9a742d6 fcff020801000025020000006ba1d364 fffc801040004a0080000000c9a742d6 - {e=>9356,c=>8,a=>78,g=>959851153,b=>3,d=>3,f=>2} 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 004ec010c000491880000000726c5522 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 004ec010c000491880000000726c5522 4e00030803008c2402000000912a3639 004ec010c000491880000000726c5522 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>15569,a=>49,d=>0,c=>98,h=>100,b=>2,g=>783521155,f=>1} 310002620000d13c010000008395b32e64000000 310002620000d13c010000008395b32e64000000 310002620000d13c010000008395b32e64000000 003180c4000079a2400000005d672b0664000000 310002620000d13c010000008395b32e64000000 310002620000d13c010000008395b32e64000000 003180c4000079a2400000005d672b0664000000 310002620000d13c010000008395b32e64000000 003180c4000079a2400000005d672b0664000000 - {e=>16972,a=>63,d=>1,c=>69,h=>90,b=>2,g=>609013294,f=>3} 3f00024501004c42030000002ece4c245a000000 3f00024501004c42030000002ece4c245a000000 3f00024501004c42030000002ece4c245a000000 003f808a40008498c000000048999c5c5a000000 3f00024501004c42030000002ece4c245a000000 3f00024501004c42030000002ece4c245a000000 003f808a40008498c000000048999c5c5a000000 3f00024501004c42030000002ece4c245a000000 003f808a40008498c000000048999c5c5a000000 - {e=>28524,a=>82,d=>1,c=>98,h=>95,b=>0,g=>948610449,f=>0} 5200006201006c6f0000000091a58a385f000000 5200006201006c6f0000000091a58a385f000000 5200006201006c6f0000000091a58a385f000000 005200c44000ded80000000071154b225f000000 5200006201006c6f0000000091a58a385f000000 5200006201006c6f0000000091a58a385f000000 005200c44000ded80000000071154b225f000000 5200006201006c6f0000000091a58a385f000000 005200c44000ded80000000071154b225f000000 - {e=>15555,a=>-7,d=>0,c=>124,h=>184,b=>1,g=>1579365922,f=>3} f9ff017c0000c33c030000002236235eb8000000 f9ff017c0000c33c030000002236235eb8000000 f9ff017c0000c33c030000002236235eb8000000 fff940f800007986c0000000bc466c44b8000000 f9ff017c0000c33c030000002236235eb8000000 f9ff017c0000c33c030000002236235eb8000000 fff940f800007986c0000000bc466c44b8000000 f9ff017c0000c33c030000002236235eb8000000 fff940f800007986c0000000bc466c44b8000000 - {e=>30807,a=>89,d=>3,c=>74,h=>1,b=>3,g=>681792943,f=>3} 5900034a0300577803000000af55a32801000000 5900034a0300577803000000af55a32801000000 5900034a0300577803000000af55a32801000000 0059c094c000f0aec00000005146ab5e01000000 5900034a0300577803000000af55a32801000000 5900034a0300577803000000af55a32801000000 0059c094c000f0aec00000005146ab5e01000000 5900034a0300577803000000af55a32801000000 0059c094c000f0aec00000005146ab5e01000000 = struct toobig { int a; unsigned char b:2; }; - {a=>95,b=>2} 5f00000002000000 5f00000002000000 5f00000002000000 0000005f80000000 5f00000002000000 5f00000002000000 0000005f80000000 5f00000002000000 0000005f80000000 - {a=>81,b=>1} 5100000001000000 5100000001000000 5100000001000000 0000005140000000 5100000001000000 5100000001000000 0000005140000000 5100000001000000 0000005140000000 - {a=>-17,b=>1} efffffff01000000 efffffff01000000 efffffff01000000 ffffffef40000000 efffffff01000000 efffffff01000000 ffffffef40000000 efffffff01000000 ffffffef40000000 - {a=>-1,b=>2} ffffffff02000000 ffffffff02000000 ffffffff02000000 ffffffff80000000 ffffffff02000000 ffffffff02000000 ffffffff80000000 ffffffff02000000 ffffffff80000000 - {a=>117,b=>2} 7500000002000000 7500000002000000 7500000002000000 0000007580000000 7500000002000000 7500000002000000 0000007580000000 7500000002000000 0000007580000000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; }; - {c=>67,a=>69,b=>0} 4500000000430000 4500000000430000 4500000000430000 0000004500860000 4500000000430000 4500000000430000 0000004500860000 4500000000430000 0000004500860000 - {c=>61,a=>-71,b=>3} b9ffffff033d0000 b9ffffff033d0000 b9ffffff033d0000 ffffffb9c07a0000 b9ffffff033d0000 b9ffffff033d0000 ffffffb9c07a0000 b9ffffff033d0000 ffffffb9c07a0000 - {c=>36,a=>-65,b=>0} bfffffff00240000 bfffffff00240000 bfffffff00240000 ffffffbf00480000 bfffffff00240000 bfffffff00240000 ffffffbf00480000 bfffffff00240000 ffffffbf00480000 - {c=>115,a=>-65,b=>2} bfffffff02730000 bfffffff02730000 bfffffff02730000 ffffffbf80e60000 bfffffff02730000 bfffffff02730000 ffffffbf80e60000 bfffffff02730000 ffffffbf80e60000 - {c=>98,a=>-9,b=>1} f7ffffff01620000 f7ffffff01620000 f7ffffff01620000 fffffff740c40000 f7ffffff01620000 f7ffffff01620000 fffffff740c40000 f7ffffff01620000 fffffff740c40000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>110,a=>-90,b=>2} a6ffffff026e0000 a6ffffff026e0000 a6ffffff026e0000 ffffffa680dc0000 a6ffffff026e0000 a6ffffff026e0000 ffffffa680dc0000 a6ffffff026e0000 ffffffa680dc0000 - {c=>89,a=>109,b=>3} 6d00000003590000 6d00000003590000 6d00000003590000 0000006dc0b20000 6d00000003590000 6d00000003590000 0000006dc0b20000 6d00000003590000 0000006dc0b20000 - {c=>119,a=>55,b=>2} 3700000002770000 3700000002770000 3700000002770000 0000003780ee0000 3700000002770000 3700000002770000 0000003780ee0000 3700000002770000 0000003780ee0000 - {c=>78,a=>-95,b=>2} a1ffffff024e0000 a1ffffff024e0000 a1ffffff024e0000 ffffffa1809c0000 a1ffffff024e0000 a1ffffff024e0000 ffffffa1809c0000 a1ffffff024e0000 ffffffa1809c0000 - {c=>108,a=>-76,b=>2} b4ffffff026c0000 b4ffffff026c0000 b4ffffff026c0000 ffffffb480d80000 b4ffffff026c0000 b4ffffff026c0000 ffffffb480d80000 b4ffffff026c0000 ffffffb480d80000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>67,a=>-11,b=>2,d=>2} f5ffffff02430200 f5ffffff02430200 f5ffffff02430200 fffffff580868000 f5ffffff02430200 f5ffffff02430200 fffffff580868000 f5ffffff02430200 fffffff580868000 - {c=>94,a=>-43,b=>2,d=>0} d5ffffff025e0000 d5ffffff025e0000 d5ffffff025e0000 ffffffd580bc0000 d5ffffff025e0000 d5ffffff025e0000 ffffffd580bc0000 d5ffffff025e0000 ffffffd580bc0000 - {c=>13,a=>12,b=>0,d=>3} 0c000000000d0300 0c000000000d0300 0c000000000d0300 0000000c001ac000 0c000000000d0300 0c000000000d0300 0000000c001ac000 0c000000000d0300 0000000c001ac000 - {c=>20,a=>75,b=>1,d=>3} 4b00000001140300 4b00000001140300 4b00000001140300 0000004b4028c000 4b00000001140300 4b00000001140300 0000004b4028c000 4b00000001140300 0000004b4028c000 - {c=>16,a=>99,b=>2,d=>0} 6300000002100000 6300000002100000 6300000002100000 0000006380200000 6300000002100000 6300000002100000 0000006380200000 6300000002100000 0000006380200000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>15944,c=>81,a=>-88,b=>1,d=>1} a8ffffff01510100483e0000 a8ffffff01510100483e0000 a8ffffff01510100483e0000 ffffffa840a240007c900000 a8ffffff01510100483e0000 a8ffffff01510100483e0000 ffffffa840a240007c900000 a8ffffff01510100483e0000 ffffffa840a240007c900000 - {e=>28784,c=>113,a=>-26,b=>3,d=>2} e6ffffff0371020070700000 e6ffffff0371020070700000 e6ffffff0371020070700000 ffffffe6c0e28000e0e00000 e6ffffff0371020070700000 e6ffffff0371020070700000 ffffffe6c0e28000e0e00000 e6ffffff0371020070700000 ffffffe6c0e28000e0e00000 - {e=>25323,c=>4,a=>3,b=>2,d=>3} 0300000002040300eb620000 0300000002040300eb620000 0300000002040300eb620000 000000038008c000c5d60000 0300000002040300eb620000 0300000002040300eb620000 000000038008c000c5d60000 0300000002040300eb620000 000000038008c000c5d60000 - {e=>5631,c=>25,a=>126,b=>2,d=>2} 7e00000002190200ff150000 7e00000002190200ff150000 7e00000002190200ff150000 0000007e803280002bfe0000 7e00000002190200ff150000 7e00000002190200ff150000 0000007e803280002bfe0000 7e00000002190200ff150000 0000007e803280002bfe0000 - {e=>30242,c=>81,a=>43,b=>1,d=>2} 2b0000000151020022760000 2b0000000151020022760000 2b0000000151020022760000 0000002b40a28000ec440000 2b0000000151020022760000 2b0000000151020022760000 0000002b40a28000ec440000 2b0000000151020022760000 0000002b40a28000ec440000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>26399,c=>49,a=>-62,b=>2,d=>1} c2ffffff023101001f670000 c2ffffff023101001f670000 c2ffffff023101001f670000 ffffffc280624000ce3e0000 c2ffffff023101001f670000 c2ffffff023101001f670000 ffffffc280624000ce3e0000 c2ffffff023101001f670000 ffffffc280624000ce3e0000 - {e=>29626,c=>6,a=>-98,b=>2,d=>1} 9effffff02060100ba730000 9effffff02060100ba730000 9effffff02060100ba730000 ffffff9e800c4000e7740000 9effffff02060100ba730000 9effffff02060100ba730000 ffffff9e800c4000e7740000 9effffff02060100ba730000 ffffff9e800c4000e7740000 - {e=>10198,c=>108,a=>64,b=>2,d=>1} 40000000026c0100d6270000 40000000026c0100d6270000 40000000026c0100d6270000 0000004080d840004fac0000 40000000026c0100d6270000 40000000026c0100d6270000 0000004080d840004fac0000 40000000026c0100d6270000 0000004080d840004fac0000 - {e=>10521,c=>124,a=>34,b=>0,d=>3} 22000000007c030019290000 22000000007c030019290000 22000000007c030019290000 0000002200f8c00052320000 22000000007c030019290000 22000000007c030019290000 0000002200f8c00052320000 22000000007c030019290000 0000002200f8c00052320000 - {e=>25536,c=>37,a=>88,b=>3,d=>3} 5800000003250300c0630000 5800000003250300c0630000 5800000003250300c0630000 00000058c04ac000c7800000 5800000003250300c0630000 5800000003250300c0630000 00000058c04ac000c7800000 5800000003250300c0630000 00000058c04ac000c7800000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>22897,c=>65,a=>-113,b=>1,d=>3,f=>2} 8fffffff014103007159000002000000 8fffffff014103007159000002000000 8fffffff014103007159000002000000 ffffff8f4082c000b2e2000080000000 8fffffff014103007159000002000000 8fffffff014103007159000002000000 ffffff8f4082c000b2e2000080000000 8fffffff014103007159000002000000 ffffff8f4082c000b2e2000080000000 - {e=>28655,c=>21,a=>107,b=>1,d=>3,f=>0} 6b00000001150300ef6f000000000000 6b00000001150300ef6f000000000000 6b00000001150300ef6f000000000000 0000006b402ac000dfde000000000000 6b00000001150300ef6f000000000000 6b00000001150300ef6f000000000000 0000006b402ac000dfde000000000000 6b00000001150300ef6f000000000000 0000006b402ac000dfde000000000000 - {e=>11486,c=>82,a=>27,b=>0,d=>2,f=>1} 1b00000000520200de2c000001000000 1b00000000520200de2c000001000000 1b00000000520200de2c000001000000 0000001b00a4800059bc000040000000 1b00000000520200de2c000001000000 1b00000000520200de2c000001000000 0000001b00a4800059bc000040000000 1b00000000520200de2c000001000000 0000001b00a4800059bc000040000000 - {e=>8829,c=>47,a=>-44,b=>2,d=>1,f=>3} d4ffffff022f01007d22000003000000 d4ffffff022f01007d22000003000000 d4ffffff022f01007d22000003000000 ffffffd4805e400044fa0000c0000000 d4ffffff022f01007d22000003000000 d4ffffff022f01007d22000003000000 ffffffd4805e400044fa0000c0000000 d4ffffff022f01007d22000003000000 ffffffd4805e400044fa0000c0000000 - {e=>24395,c=>33,a=>-122,b=>1,d=>0,f=>0} 86ffffff012100004b5f000000000000 86ffffff012100004b5f000000000000 86ffffff012100004b5f000000000000 ffffff8640420000be96000000000000 86ffffff012100004b5f000000000000 86ffffff012100004b5f000000000000 ffffff8640420000be96000000000000 86ffffff012100004b5f000000000000 ffffff8640420000be96000000000000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>21026,c=>66,a=>92,g=>1659281310,b=>0,d=>2,f=>1} 5c0000000042020022520000010000009e9fe662 5c0000000042020022520000010000009e9fe662 5c0000000042020022520000010000009e9fe662 0000005c00848000a444000040000000c5cd3f3c 5c0000000042020022520000010000009e9fe662 5c0000000042020022520000010000009e9fe662 0000005c00848000a444000040000000c5cd3f3c 5c0000000042020022520000010000009e9fe662 0000005c00848000a444000040000000c5cd3f3c - {e=>12920,c=>104,a=>10,g=>2107984876,b=>2,d=>2,f=>2} 0a000000026802007832000002000000ec4ba57d 0a000000026802007832000002000000ec4ba57d 0a000000026802007832000002000000ec4ba57d 0000000a80d0800064f0000080000000fb4a97d8 0a000000026802007832000002000000ec4ba57d 0a000000026802007832000002000000ec4ba57d 0000000a80d0800064f0000080000000fb4a97d8 0a000000026802007832000002000000ec4ba57d 0000000a80d0800064f0000080000000fb4a97d8 - {e=>3821,c=>93,a=>-11,g=>664990743,b=>1,d=>0,f=>0} f5ffffff015d0000ed0e00000000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 fffffff540ba00001dda0000000000004f45e82e f5ffffff015d0000ed0e00000000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 fffffff540ba00001dda0000000000004f45e82e f5ffffff015d0000ed0e00000000000017f4a227 fffffff540ba00001dda0000000000004f45e82e - {e=>5353,c=>99,a=>-47,g=>171749847,b=>0,d=>1,f=>1} d1ffffff00630100e914000001000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a ffffffd100c6400029d2000040000000147963ae d1ffffff00630100e914000001000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a ffffffd100c6400029d2000040000000147963ae d1ffffff00630100e914000001000000d7b13c0a ffffffd100c6400029d2000040000000147963ae - {e=>3580,c=>89,a=>24,g=>668072177,b=>3,d=>3,f=>0} 1800000003590300fc0d000000000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 00000018c0b2c0001bf80000000000004fa3f1e2 1800000003590300fc0d000000000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 00000018c0b2c0001bf80000000000004fa3f1e2 1800000003590300fc0d000000000000f1f8d127 00000018c0b2c0001bf80000000000004fa3f1e2 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>26214,a=>3,d=>3,c=>2,h=>13,b=>0,g=>1018602210,f=>1} 03000000000203006666000001000000e2a2b63c0d000000 03000000000203006666000001000000e2a2b63c0d000000 03000000000203006666000001000000e2a2b63c0d000000 000000030004c000cccc000040000000796d45c40d000000 03000000000203006666000001000000e2a2b63c0d000000 03000000000203006666000001000000e2a2b63c0d000000 000000030004c000cccc000040000000796d45c40d000000 03000000000203006666000001000000e2a2b63c0d000000 000000030004c000cccc000040000000796d45c40d000000 - {e=>1638,a=>90,d=>0,c=>29,h=>15,b=>0,g=>1932291266,f=>2} 5a000000001d00006606000002000000c26c2c730f000000 5a000000001d00006606000002000000c26c2c730f000000 5a000000001d00006606000002000000c26c2c730f000000 0000005a003a00000ccc000080000000e658d9840f000000 5a000000001d00006606000002000000c26c2c730f000000 5a000000001d00006606000002000000c26c2c730f000000 0000005a003a00000ccc000080000000e658d9840f000000 5a000000001d00006606000002000000c26c2c730f000000 0000005a003a00000ccc000080000000e658d9840f000000 - {e=>19392,a=>98,d=>2,c=>117,h=>142,b=>2,g=>1646528382,f=>3} 6200000002750200c04b0000030000007e0724628e000000 6200000002750200c04b0000030000007e0724628e000000 6200000002750200c04b0000030000007e0724628e000000 0000006280ea800097800000c0000000c4480efc8e000000 6200000002750200c04b0000030000007e0724628e000000 6200000002750200c04b0000030000007e0724628e000000 0000006280ea800097800000c0000000c4480efc8e000000 6200000002750200c04b0000030000007e0724628e000000 0000006280ea800097800000c0000000c4480efc8e000000 - {e=>9394,a=>18,d=>2,c=>23,h=>96,b=>0,g=>1695469510,f=>0} 1200000000170200b224000000000000c6cf0e6560000000 1200000000170200b224000000000000c6cf0e6560000000 1200000000170200b224000000000000c6cf0e6560000000 00000012002e80004964000000000000ca1d9f8c60000000 1200000000170200b224000000000000c6cf0e6560000000 1200000000170200b224000000000000c6cf0e6560000000 00000012002e80004964000000000000ca1d9f8c60000000 1200000000170200b224000000000000c6cf0e6560000000 00000012002e80004964000000000000ca1d9f8c60000000 - {e=>21676,a=>69,d=>2,c=>106,h=>240,b=>1,g=>2126836617,f=>2} 45000000016a0200ac5400000200000089f3c47ef0000000 45000000016a0200ac5400000200000089f3c47ef0000000 45000000016a0200ac5400000200000089f3c47ef0000000 0000004540d48000a958000080000000fd89e712f0000000 45000000016a0200ac5400000200000089f3c47ef0000000 45000000016a0200ac5400000200000089f3c47ef0000000 0000004540d48000a958000080000000fd89e712f0000000 45000000016a0200ac5400000200000089f3c47ef0000000 0000004540d48000a958000080000000fd89e712f0000000 = struct toobig { long a; unsigned char b:2; }; - {a=>-12,b=>2} f4ffffff02000000 f4ffffffffffffff0200000000000000 f4ffffffffffffff0200000000000000 fffffff480000000 f4ffffff02000000 f4ffffff02000000 fffffffffffffff48000000000000000 f4ffffff02000000 fffffff480000000 - {a=>0,b=>1} 0000000001000000 00000000000000000100000000000000 00000000000000000100000000000000 0000000040000000 0000000001000000 0000000001000000 00000000000000004000000000000000 0000000001000000 0000000040000000 - {a=>60,b=>2} 3c00000002000000 3c000000000000000200000000000000 3c000000000000000200000000000000 0000003c80000000 3c00000002000000 3c00000002000000 000000000000003c8000000000000000 3c00000002000000 0000003c80000000 - {a=>61,b=>3} 3d00000003000000 3d000000000000000300000000000000 3d000000000000000300000000000000 0000003dc0000000 3d00000003000000 3d00000003000000 000000000000003dc000000000000000 3d00000003000000 0000003dc0000000 - {a=>122,b=>1} 7a00000001000000 7a000000000000000100000000000000 7a000000000000000100000000000000 0000007a40000000 7a00000001000000 7a00000001000000 000000000000007a4000000000000000 7a00000001000000 0000007a40000000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; }; - {c=>127,a=>-21,b=>2} ebffffff027f0000 ebffffffffffffff027f000000000000 ebffffffffffffff027f000000000000 ffffffeb80fe0000 ebffffff027f0000 ebffffff027f0000 ffffffffffffffeb80fe000000000000 ebffffff027f0000 ffffffeb80fe0000 - {c=>6,a=>-60,b=>0} c4ffffff00060000 c4ffffffffffffff0006000000000000 c4ffffffffffffff0006000000000000 ffffffc4000c0000 c4ffffff00060000 c4ffffff00060000 ffffffffffffffc4000c000000000000 c4ffffff00060000 ffffffc4000c0000 - {c=>118,a=>-112,b=>2} 90ffffff02760000 90ffffffffffffff0276000000000000 90ffffffffffffff0276000000000000 ffffff9080ec0000 90ffffff02760000 90ffffff02760000 ffffffffffffff9080ec000000000000 90ffffff02760000 ffffff9080ec0000 - {c=>100,a=>-92,b=>3} a4ffffff03640000 a4ffffffffffffff0364000000000000 a4ffffffffffffff0364000000000000 ffffffa4c0c80000 a4ffffff03640000 a4ffffff03640000 ffffffffffffffa4c0c8000000000000 a4ffffff03640000 ffffffa4c0c80000 - {c=>11,a=>123,b=>1} 7b000000010b0000 7b00000000000000010b000000000000 7b00000000000000010b000000000000 0000007b40160000 7b000000010b0000 7b000000010b0000 000000000000007b4016000000000000 7b000000010b0000 0000007b40160000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>82,a=>18,b=>3} 1200000003520000 12000000000000000352000000000000 12000000000000000352000000000000 00000012c0a40000 1200000003520000 1200000003520000 0000000000000012c0a4000000000000 1200000003520000 00000012c0a40000 - {c=>34,a=>45,b=>2} 2d00000002220000 2d000000000000000222000000000000 2d000000000000000222000000000000 0000002d80440000 2d00000002220000 2d00000002220000 000000000000002d8044000000000000 2d00000002220000 0000002d80440000 - {c=>18,a=>-66,b=>2} beffffff02120000 beffffffffffffff0212000000000000 beffffffffffffff0212000000000000 ffffffbe80240000 beffffff02120000 beffffff02120000 ffffffffffffffbe8024000000000000 beffffff02120000 ffffffbe80240000 - {c=>41,a=>53,b=>1} 3500000001290000 35000000000000000129000000000000 35000000000000000129000000000000 0000003540520000 3500000001290000 3500000001290000 00000000000000354052000000000000 3500000001290000 0000003540520000 - {c=>97,a=>60,b=>0} 3c00000000610000 3c000000000000000061000000000000 3c000000000000000061000000000000 0000003c00c20000 3c00000000610000 3c00000000610000 000000000000003c00c2000000000000 3c00000000610000 0000003c00c20000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>124,a=>18,b=>1,d=>1} 12000000017c0100 1200000000000000017c010000000000 1200000000000000017c010000000000 0000001240f84000 12000000017c0100 12000000017c0100 000000000000001240f8400000000000 12000000017c0100 0000001240f84000 - {c=>4,a=>-25,b=>3,d=>0} e7ffffff03040000 e7ffffffffffffff0304000000000000 e7ffffffffffffff0304000000000000 ffffffe7c0080000 e7ffffff03040000 e7ffffff03040000 ffffffffffffffe7c008000000000000 e7ffffff03040000 ffffffe7c0080000 - {c=>9,a=>8,b=>0,d=>2} 0800000000090200 08000000000000000009020000000000 08000000000000000009020000000000 0000000800128000 0800000000090200 0800000000090200 00000000000000080012800000000000 0800000000090200 0000000800128000 - {c=>74,a=>-10,b=>2,d=>3} f6ffffff024a0300 f6ffffffffffffff024a030000000000 f6ffffffffffffff024a030000000000 fffffff68094c000 f6ffffff024a0300 f6ffffff024a0300 fffffffffffffff68094c00000000000 f6ffffff024a0300 fffffff68094c000 - {c=>20,a=>-100,b=>0,d=>3} 9cffffff00140300 9cffffffffffffff0014030000000000 9cffffffffffffff0014030000000000 ffffff9c0028c000 9cffffff00140300 9cffffff00140300 ffffffffffffff9c0028c00000000000 9cffffff00140300 ffffff9c0028c000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>8288,c=>27,a=>27,b=>1,d=>0} 1b000000011b000060200000 1b00000000000000011b000060200000 1b00000000000000011b000060200000 0000001b4036000040c00000 1b000000011b000060200000 1b000000011b000060200000 000000000000001b4036000040c00000 1b000000011b000060200000 0000001b4036000040c00000 - {e=>31476,c=>62,a=>15,b=>2,d=>0} 0f000000023e0000f47a0000 0f00000000000000023e0000f47a0000 0f00000000000000023e0000f47a0000 0000000f807c0000f5e80000 0f000000023e0000f47a0000 0f000000023e0000f47a0000 000000000000000f807c0000f5e80000 0f000000023e0000f47a0000 0000000f807c0000f5e80000 - {e=>28645,c=>102,a=>-2,b=>0,d=>3} feffffff00660300e56f0000 feffffffffffffff00660300e56f0000 feffffffffffffff00660300e56f0000 fffffffe00ccc000dfca0000 feffffff00660300e56f0000 feffffff00660300e56f0000 fffffffffffffffe00ccc000dfca0000 feffffff00660300e56f0000 fffffffe00ccc000dfca0000 - {e=>5175,c=>47,a=>123,b=>3,d=>3} 7b000000032f030037140000 7b00000000000000032f030037140000 7b00000000000000032f030037140000 0000007bc05ec000286e0000 7b000000032f030037140000 7b000000032f030037140000 000000000000007bc05ec000286e0000 7b000000032f030037140000 0000007bc05ec000286e0000 - {e=>3986,c=>9,a=>92,b=>2,d=>2} 5c00000002090200920f0000 5c0000000000000002090200920f0000 5c0000000000000002090200920f0000 0000005c801280001f240000 5c00000002090200920f0000 5c00000002090200920f0000 000000000000005c801280001f240000 5c00000002090200920f0000 0000005c801280001f240000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>26564,c=>47,a=>75,b=>2,d=>1} 4b000000022f0100c4670000 4b00000000000000022f0100c4670000 4b00000000000000022f0100c4670000 0000004b805e4000cf880000 4b000000022f0100c4670000 4b000000022f0100c4670000 000000000000004b805e4000cf880000 4b000000022f0100c4670000 0000004b805e4000cf880000 - {e=>13162,c=>83,a=>-7,b=>3,d=>2} f9ffffff035302006a330000 f9ffffffffffffff035302006a330000 f9ffffffffffffff035302006a330000 fffffff9c0a6800066d40000 f9ffffff035302006a330000 f9ffffff035302006a330000 fffffffffffffff9c0a6800066d40000 f9ffffff035302006a330000 fffffff9c0a6800066d40000 - {e=>21769,c=>111,a=>-87,b=>3,d=>2} a9ffffff036f020009550000 a9ffffffffffffff036f020009550000 a9ffffffffffffff036f020009550000 ffffffa9c0de8000aa120000 a9ffffff036f020009550000 a9ffffff036f020009550000 ffffffffffffffa9c0de8000aa120000 a9ffffff036f020009550000 ffffffa9c0de8000aa120000 - {e=>5436,c=>68,a=>-101,b=>3,d=>0} 9bffffff034400003c150000 9bffffffffffffff034400003c150000 9bffffffffffffff034400003c150000 ffffff9bc08800002a780000 9bffffff034400003c150000 9bffffff034400003c150000 ffffffffffffff9bc08800002a780000 9bffffff034400003c150000 ffffff9bc08800002a780000 - {e=>13380,c=>90,a=>86,b=>2,d=>0} 56000000025a000044340000 5600000000000000025a000044340000 5600000000000000025a000044340000 0000005680b4000068880000 56000000025a000044340000 56000000025a000044340000 000000000000005680b4000068880000 56000000025a000044340000 0000005680b4000068880000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>23505,c=>0,a=>-30,b=>2,d=>3,f=>3} e2ffffff02000300d15b000003000000 e2ffffffffffffff02000300d15b00000300000000000000 e2ffffffffffffff02000300d15b00000300000000000000 ffffffe28000c000b7a20000c0000000 e2ffffff02000300d15b000003000000 e2ffffff02000300d15b000003000000 ffffffffffffffe28000c000b7a20000c000000000000000 e2ffffff02000300d15b000003000000 ffffffe28000c000b7a20000c0000000 - {e=>29524,c=>34,a=>72,b=>2,d=>2,f=>0} 48000000022202005473000000000000 480000000000000002220200547300000000000000000000 480000000000000002220200547300000000000000000000 0000004880448000e6a8000000000000 48000000022202005473000000000000 48000000022202005473000000000000 000000000000004880448000e6a800000000000000000000 48000000022202005473000000000000 0000004880448000e6a8000000000000 - {e=>8502,c=>60,a=>85,b=>1,d=>1,f=>1} 55000000013c01003621000001000000 5500000000000000013c0100362100000100000000000000 5500000000000000013c0100362100000100000000000000 0000005540784000426c000040000000 55000000013c01003621000001000000 55000000013c01003621000001000000 000000000000005540784000426c00004000000000000000 55000000013c01003621000001000000 0000005540784000426c000040000000 - {e=>3686,c=>42,a=>-13,b=>2,d=>0,f=>1} f3ffffff022a0000660e000001000000 f3ffffffffffffff022a0000660e00000100000000000000 f3ffffffffffffff022a0000660e00000100000000000000 fffffff3805400001ccc000040000000 f3ffffff022a0000660e000001000000 f3ffffff022a0000660e000001000000 fffffffffffffff3805400001ccc00004000000000000000 f3ffffff022a0000660e000001000000 fffffff3805400001ccc000040000000 - {e=>26261,c=>48,a=>-62,b=>1,d=>0,f=>1} c2ffffff013000009566000001000000 c2ffffffffffffff01300000956600000100000000000000 c2ffffffffffffff01300000956600000100000000000000 ffffffc240600000cd2a000040000000 c2ffffff013000009566000001000000 c2ffffff013000009566000001000000 ffffffffffffffc240600000cd2a00004000000000000000 c2ffffff013000009566000001000000 ffffffc240600000cd2a000040000000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>25271,c=>5,a=>23,g=>1549434592,b=>0,d=>0,f=>3} 1700000000050000b762000003000000e07e5a5c 170000000000000000050000b762000003000000e07e5a5c 170000000000000000050000b762000003000000e07e5a5c 00000017000a0000c56e0000c0000000b8b4fdc0 1700000000050000b762000003000000e07e5a5c 1700000000050000b762000003000000e07e5a5c 0000000000000017000a0000c56e0000c0000000b8b4fdc0 1700000000050000b762000003000000e07e5a5c 00000017000a0000c56e0000c0000000b8b4fdc0 - {e=>29769,c=>70,a=>53,g=>485498167,b=>3,d=>3,f=>3} 35000000034603004974000003000000371df01c 3500000000000000034603004974000003000000371df01c 3500000000000000034603004974000003000000371df01c 00000035c08cc000e8920000c000000039e03a6e 35000000034603004974000003000000371df01c 35000000034603004974000003000000371df01c 0000000000000035c08cc000e8920000c000000039e03a6e 35000000034603004974000003000000371df01c 00000035c08cc000e8920000c000000039e03a6e - {e=>4324,c=>68,a=>105,g=>554750747,b=>0,d=>0,f=>1} 6900000000440000e4100000010000001bd31021 690000000000000000440000e4100000010000001bd31021 690000000000000000440000e4100000010000001bd31021 000000690088000021c80000400000004221a636 6900000000440000e4100000010000001bd31021 6900000000440000e4100000010000001bd31021 00000000000000690088000021c80000400000004221a636 6900000000440000e4100000010000001bd31021 000000690088000021c80000400000004221a636 - {e=>17511,c=>94,a=>58,g=>250165519,b=>2,d=>2,f=>3} 3a000000025e020067440000030000000f39e90e 3a00000000000000025e020067440000030000000f39e90e 3a00000000000000025e020067440000030000000f39e90e 0000003a80bc800088ce0000c00000001dd2721e 3a000000025e020067440000030000000f39e90e 3a000000025e020067440000030000000f39e90e 000000000000003a80bc800088ce0000c00000001dd2721e 3a000000025e020067440000030000000f39e90e 0000003a80bc800088ce0000c00000001dd2721e - {e=>14283,c=>79,a=>-97,g=>1714885120,b=>1,d=>2,f=>1} 9fffffff014f0200cb3700000100000000123766 9fffffffffffffff014f0200cb3700000100000000123766 9fffffffffffffff014f0200cb3700000100000000123766 ffffff9f409e80006f96000040000000cc6e2400 9fffffff014f0200cb3700000100000000123766 9fffffff014f0200cb3700000100000000123766 ffffffffffffff9f409e80006f96000040000000cc6e2400 9fffffff014f0200cb3700000100000000123766 ffffff9f409e80006f96000040000000cc6e2400 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22593,a=>-105,d=>2,c=>125,h=>86,b=>2,g=>490502662,f=>2} 97ffffff027d02004158000002000000067a3c1d56000000 97ffffffffffffff027d02004158000002000000067a3c1d5600000000000000 97ffffffffffffff027d02004158000002000000067a3c1d5600000000000000 ffffff9780fa8000b0820000800000003a78f40c56000000 97ffffff027d02004158000002000000067a3c1d56000000 97ffffff027d02004158000002000000067a3c1d56000000 ffffffffffffff9780fa8000b0820000800000003a78f40c5600000000000000 97ffffff027d02004158000002000000067a3c1d56000000 ffffff9780fa8000b0820000800000003a78f40c56000000 - {e=>22467,a=>-25,d=>0,c=>60,h=>208,b=>0,g=>371229021,f=>0} e7ffffff003c0000c3570000000000005d812016d0000000 e7ffffffffffffff003c0000c3570000000000005d812016d000000000000000 e7ffffffffffffff003c0000c3570000000000005d812016d000000000000000 ffffffe700780000af860000000000002c4102bad0000000 e7ffffff003c0000c3570000000000005d812016d0000000 e7ffffff003c0000c3570000000000005d812016d0000000 ffffffffffffffe700780000af860000000000002c4102bad000000000000000 e7ffffff003c0000c3570000000000005d812016d0000000 ffffffe700780000af860000000000002c4102bad0000000 - {e=>31600,a=>-7,d=>2,c=>78,h=>234,b=>0,g=>1056003073,f=>2} f9ffffff004e0200707b0000020000000154f13eea000000 f9ffffffffffffff004e0200707b0000020000000154f13eea00000000000000 f9ffffffffffffff004e0200707b0000020000000154f13eea00000000000000 fffffff9009c8000f6e00000800000007de2a802ea000000 f9ffffff004e0200707b0000020000000154f13eea000000 f9ffffff004e0200707b0000020000000154f13eea000000 fffffffffffffff9009c8000f6e00000800000007de2a802ea00000000000000 f9ffffff004e0200707b0000020000000154f13eea000000 fffffff9009c8000f6e00000800000007de2a802ea000000 - {e=>12252,a=>38,d=>2,c=>1,h=>15,b=>1,g=>1441179725,f=>2} 2600000001010200dc2f0000020000004da8e6550f000000 260000000000000001010200dc2f0000020000004da8e6550f00000000000000 260000000000000001010200dc2f0000020000004da8e6550f00000000000000 00000026400280005fb8000080000000abcd509a0f000000 2600000001010200dc2f0000020000004da8e6550f000000 2600000001010200dc2f0000020000004da8e6550f000000 0000000000000026400280005fb8000080000000abcd509a0f00000000000000 2600000001010200dc2f0000020000004da8e6550f000000 00000026400280005fb8000080000000abcd509a0f000000 - {e=>29268,a=>28,d=>0,c=>18,h=>157,b=>1,g=>2064430442,f=>1} 1c0000000112000054720000010000006ab50c7b9d000000 1c000000000000000112000054720000010000006ab50c7b9d00000000000000 1c000000000000000112000054720000010000006ab50c7b9d00000000000000 0000001c40240000e4a8000040000000f6196ad49d000000 1c0000000112000054720000010000006ab50c7b9d000000 1c0000000112000054720000010000006ab50c7b9d000000 000000000000001c40240000e4a8000040000000f6196ad49d00000000000000 1c0000000112000054720000010000006ab50c7b9d000000 0000001c40240000e4a8000040000000f6196ad49d000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>1} 01 01 01 40 01000000 01 40 01 40 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>3,b=>122} 037a 037a 037a c0f4 037a0000 037a c0f4 037a c0f4 - {a=>0,b=>7} 0007 0007 0007 000e 00070000 0007 000e 0007 000e - {a=>3,b=>2} 0302 0302 0302 c004 03020000 0302 c004 0302 c004 - {a=>1,b=>102} 0166 0166 0166 40cc 01660000 0166 40cc 0166 40cc - {a=>1,b=>57} 0139 0139 0139 4072 01390000 0139 4072 0139 4072 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>3,b=>86} 0356 0356 0356 c0ac 03560000 0356 c0ac 0356 c0ac - {a=>2,b=>116} 0274 0274 0274 80e8 02740000 0274 80e8 0274 80e8 - {a=>2,b=>29} 021d 021d 021d 803a 021d0000 021d 803a 021d 803a - {a=>3,b=>95} 035f 035f 035f c0be 035f0000 035f c0be 035f c0be - {a=>1,b=>22} 0116 0116 0116 402c 01160000 0116 402c 0116 402c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>0,a=>1,b=>74} 014a0000 014a0000 014a0000 40940000 014a0000 014a0000 40940000 014a0000 40940000 - {c=>0,a=>2,b=>114} 02720000 02720000 02720000 80e40000 02720000 02720000 80e40000 02720000 80e40000 - {c=>2,a=>3,b=>123} 037b0200 037b0200 037b0200 c0f68000 037b0200 037b0200 c0f68000 037b0200 c0f68000 - {c=>1,a=>2,b=>78} 024e0100 024e0100 024e0100 809c4000 024e0100 024e0100 809c4000 024e0100 809c4000 - {c=>1,a=>2,b=>67} 02430100 02430100 02430100 80864000 02430100 02430100 80864000 02430100 80864000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>0,a=>2,b=>89,d=>17148} 02590000fc42 02590000fc42 02590000fc42 80b2000085f8 02590000fc420000 02590000fc42 80b2000085f8 02590000fc42 80b2000085f8 - {c=>3,a=>3,b=>1,d=>7923} 03010300f31e 03010300f31e 03010300f31e c002c0003de6 03010300f31e0000 03010300f31e c002c0003de6 03010300f31e c002c0003de6 - {c=>3,a=>3,b=>36,d=>24620} 032403002c60 032403002c60 032403002c60 c048c000c058 032403002c600000 032403002c60 c048c000c058 032403002c60 c048c000c058 - {c=>1,a=>1,b=>110,d=>27219} 016e0100536a 016e0100536a 016e0100536a 40dc4000d4a6 016e0100536a0000 016e0100536a 40dc4000d4a6 016e0100536a 40dc4000d4a6 - {c=>1,a=>2,b=>119,d=>25127} 027701002762 027701002762 027701002762 80ee4000c44e 0277010027620000 027701002762 80ee4000c44e 027701002762 80ee4000c44e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>2,a=>1,b=>55,d=>24370} 01370200325f0000 01370200325f0000 01370200325f0000 406e8000be640000 01370200325f0000 01370200325f0000 406e8000be640000 01370200325f0000 406e8000be640000 - {c=>3,a=>1,b=>76,d=>484} 014c0300e4010000 014c0300e4010000 014c0300e4010000 4098c00003c80000 014c0300e4010000 014c0300e4010000 4098c00003c80000 014c0300e4010000 4098c00003c80000 - {c=>3,a=>0,b=>72,d=>28441} 00480300196f0000 00480300196f0000 00480300196f0000 0090c000de320000 00480300196f0000 00480300196f0000 0090c000de320000 00480300196f0000 0090c000de320000 - {c=>0,a=>1,b=>4,d=>20335} 010400006f4f0000 010400006f4f0000 010400006f4f0000 400800009ede0000 010400006f4f0000 010400006f4f0000 400800009ede0000 010400006f4f0000 400800009ede0000 - {c=>1,a=>3,b=>108,d=>25748} 036c010094640000 036c010094640000 036c010094640000 c0d84000c9280000 036c010094640000 036c010094640000 c0d84000c9280000 036c010094640000 c0d84000c9280000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>2,c=>1,a=>3,b=>25,d=>14129} 031901003137000002000000 031901003137000002000000 031901003137000002000000 c03240006e62000080000000 031901003137000002000000 031901003137000002000000 c03240006e62000080000000 031901003137000002000000 c03240006e62000080000000 - {e=>2,c=>1,a=>0,b=>43,d=>29105} 002b0100b171000002000000 002b0100b171000002000000 002b0100b171000002000000 00564000e362000080000000 002b0100b171000002000000 002b0100b171000002000000 00564000e362000080000000 002b0100b171000002000000 00564000e362000080000000 - {e=>2,c=>0,a=>2,b=>27,d=>17807} 021b00008f45000002000000 021b00008f45000002000000 021b00008f45000002000000 803600008b1e000080000000 021b00008f45000002000000 021b00008f45000002000000 803600008b1e000080000000 021b00008f45000002000000 803600008b1e000080000000 - {e=>3,c=>0,a=>0,b=>93,d=>809} 005d00002903000003000000 005d00002903000003000000 005d00002903000003000000 00ba000006520000c0000000 005d00002903000003000000 005d00002903000003000000 00ba000006520000c0000000 005d00002903000003000000 00ba000006520000c0000000 - {e=>0,c=>3,a=>1,b=>44,d=>30562} 012c03006277000000000000 012c03006277000000000000 012c03006277000000000000 4058c000eec4000000000000 012c03006277000000000000 012c03006277000000000000 4058c000eec4000000000000 012c03006277000000000000 4058c000eec4000000000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>3,c=>2,a=>2,b=>10,d=>5501,f=>1254374167} 020a02007d15000003000000173bc44a 020a02007d15000003000000173bc44a 020a02007d15000003000000173bc44a 801480002afa0000c00000009588762e 020a02007d15000003000000173bc44a 020a02007d15000003000000173bc44a 801480002afa0000c00000009588762e 020a02007d15000003000000173bc44a 801480002afa0000c00000009588762e - {e=>0,c=>3,a=>3,b=>108,d=>4783,f=>549387562} 036c0300af120000000000002afdbe20 036c0300af120000000000002afdbe20 036c0300af120000000000002afdbe20 c0d8c000255e000000000000417dfa54 036c0300af120000000000002afdbe20 036c0300af120000000000002afdbe20 c0d8c000255e000000000000417dfa54 036c0300af120000000000002afdbe20 c0d8c000255e000000000000417dfa54 - {e=>2,c=>1,a=>1,b=>71,d=>5216,f=>457981324} 0147010060140000020000008c3d4c1b 0147010060140000020000008c3d4c1b 0147010060140000020000008c3d4c1b 408e400028c000008000000036987b18 0147010060140000020000008c3d4c1b 0147010060140000020000008c3d4c1b 408e400028c000008000000036987b18 0147010060140000020000008c3d4c1b 408e400028c000008000000036987b18 - {e=>0,c=>1,a=>0,b=>108,d=>3389,f=>260729659} 006c01003d0d0000000000003b6b8a0f 006c01003d0d0000000000003b6b8a0f 006c01003d0d0000000000003b6b8a0f 00d840001a7a0000000000001f14d676 006c01003d0d0000000000003b6b8a0f 006c01003d0d0000000000003b6b8a0f 00d840001a7a0000000000001f14d676 006c01003d0d0000000000003b6b8a0f 00d840001a7a0000000000001f14d676 - {e=>2,c=>3,a=>3,b=>78,d=>9795,f=>22588338} 034e03004326000002000000b2ab5801 034e03004326000002000000b2ab5801 034e03004326000002000000b2ab5801 c09cc0004c8600008000000002b15764 034e03004326000002000000b2ab5801 034e03004326000002000000b2ab5801 c09cc0004c8600008000000002b15764 034e03004326000002000000b2ab5801 c09cc0004c8600008000000002b15764 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>0,c=>0,a=>3,g=>96,b=>9,d=>3499,f=>226878349} 03090000ab0d0000000000008de3850d60000000 03090000ab0d0000000000008de3850d60000000 03090000ab0d0000000000008de3850d60000000 c01200001b560000000000001b0bc71a60000000 03090000ab0d0000000000008de3850d60000000 03090000ab0d0000000000008de3850d60000000 c01200001b560000000000001b0bc71a60000000 03090000ab0d0000000000008de3850d60000000 c01200001b560000000000001b0bc71a60000000 - {e=>2,c=>0,a=>0,g=>93,b=>30,d=>5449,f=>524944825} 001e00004915000002000000b9054a1f5d000000 001e00004915000002000000b9054a1f5d000000 001e00004915000002000000b9054a1f5d000000 003c00002a920000800000003e940b725d000000 001e00004915000002000000b9054a1f5d000000 001e00004915000002000000b9054a1f5d000000 003c00002a920000800000003e940b725d000000 001e00004915000002000000b9054a1f5d000000 003c00002a920000800000003e940b725d000000 - {e=>3,c=>2,a=>0,g=>121,b=>95,d=>26776,f=>1524019449} 005f02009868000003000000f9b0d65a79000000 005f02009868000003000000f9b0d65a79000000 005f02009868000003000000f9b0d65a79000000 00be8000d1300000c0000000b5ad61f279000000 005f02009868000003000000f9b0d65a79000000 005f02009868000003000000f9b0d65a79000000 00be8000d1300000c0000000b5ad61f279000000 005f02009868000003000000f9b0d65a79000000 00be8000d1300000c0000000b5ad61f279000000 - {e=>0,c=>1,a=>1,g=>154,b=>21,d=>23517,f=>1699556351} 01150100dd5b000000000000ff2b4d659a000000 01150100dd5b000000000000ff2b4d659a000000 01150100dd5b000000000000ff2b4d659a000000 402a4000b7ba000000000000ca9a57fe9a000000 01150100dd5b000000000000ff2b4d659a000000 01150100dd5b000000000000ff2b4d659a000000 402a4000b7ba000000000000ca9a57fe9a000000 01150100dd5b000000000000ff2b4d659a000000 402a4000b7ba000000000000ca9a57fe9a000000 - {e=>0,c=>0,a=>1,g=>149,b=>13,d=>27687,f=>223666191} 010d0000276c0000000000000fe0540d95000000 010d0000276c0000000000000fe0540d95000000 010d0000276c0000000000000fe0540d95000000 401a0000d84e0000000000001aa9c01e95000000 010d0000276c0000000000000fe0540d95000000 010d0000276c0000000000000fe0540d95000000 401a0000d84e0000000000001aa9c01e95000000 010d0000276c0000000000000fe0540d95000000 401a0000d84e0000000000001aa9c01e95000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>-93,b=>2} a302 a302 a302 a380 a3020000 a302 a380 a302 a380 - {a=>-56,b=>0} c800 c800 c800 c800 c8000000 c800 c800 c800 c800 - {a=>-79,b=>1} b101 b101 b101 b140 b1010000 b101 b140 b101 b140 - {a=>-126,b=>2} 8202 8202 8202 8280 82020000 8202 8280 8202 8280 - {a=>44,b=>0} 2c00 2c00 2c00 2c00 2c000000 2c00 2c00 2c00 2c00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>88,a=>99,b=>0} 630058 630058 630058 6300b0 63005800 630058 6300b0 630058 6300b0 - {c=>14,a=>-42,b=>3} d6030e d6030e d6030e d6c01c d6030e00 d6030e d6c01c d6030e d6c01c - {c=>110,a=>-33,b=>2} df026e df026e df026e df80dc df026e00 df026e df80dc df026e df80dc - {c=>83,a=>37,b=>3} 250353 250353 250353 25c0a6 25035300 250353 25c0a6 250353 25c0a6 - {c=>75,a=>2,b=>0} 02004b 02004b 02004b 020096 02004b00 02004b 020096 02004b 020096 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>63,a=>-71,b=>0} b9003f00 b9003f00 b9003f00 b9007e00 b9003f00 b9003f00 b9007e00 b9003f00 b9007e00 - {c=>61,a=>68,b=>0} 44003d00 44003d00 44003d00 44007a00 44003d00 44003d00 44007a00 44003d00 44007a00 - {c=>111,a=>-7,b=>1} f9016f00 f9016f00 f9016f00 f940de00 f9016f00 f9016f00 f940de00 f9016f00 f940de00 - {c=>6,a=>-14,b=>3} f2030600 f2030600 f2030600 f2c00c00 f2030600 f2030600 f2c00c00 f2030600 f2c00c00 - {c=>25,a=>42,b=>0} 2a001900 2a001900 2a001900 2a003200 2a001900 2a001900 2a003200 2a001900 2a003200 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>78,a=>-62,b=>3,d=>2} c2034e000200 c2034e000200 c2034e000200 c2c09c008000 c2034e0002000000 c2034e000200 c2c09c008000 c2034e000200 c2c09c008000 - {c=>120,a=>110,b=>1,d=>1} 6e0178000100 6e0178000100 6e0178000100 6e40f0004000 6e01780001000000 6e0178000100 6e40f0004000 6e0178000100 6e40f0004000 - {c=>125,a=>-39,b=>1,d=>2} d9017d000200 d9017d000200 d9017d000200 d940fa008000 d9017d0002000000 d9017d000200 d940fa008000 d9017d000200 d940fa008000 - {c=>49,a=>-83,b=>1,d=>3} ad0131000300 ad0131000300 ad0131000300 ad406200c000 ad01310003000000 ad0131000300 ad406200c000 ad0131000300 ad406200c000 - {c=>102,a=>-96,b=>2,d=>3} a00266000300 a00266000300 a00266000300 a080cc00c000 a002660003000000 a00266000300 a080cc00c000 a00266000300 a080cc00c000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>11659,c=>16,a=>72,b=>3,d=>2} 4803100002008b2d 4803100002008b2d 4803100002008b2d 48c0200080005b16 4803100002008b2d 4803100002008b2d 48c0200080005b16 4803100002008b2d 48c0200080005b16 - {e=>3023,c=>30,a=>121,b=>2,d=>1} 79021e000100cf0b 79021e000100cf0b 79021e000100cf0b 79803c004000179e 79021e000100cf0b 79021e000100cf0b 79803c004000179e 79021e000100cf0b 79803c004000179e - {e=>8049,c=>55,a=>-115,b=>1,d=>2} 8d0137000200711f 8d0137000200711f 8d0137000200711f 8d406e0080003ee2 8d0137000200711f 8d0137000200711f 8d406e0080003ee2 8d0137000200711f 8d406e0080003ee2 - {e=>11589,c=>80,a=>-12,b=>1,d=>1} f40150000100452d f40150000100452d f40150000100452d f440a00040005a8a f40150000100452d f40150000100452d f440a00040005a8a f40150000100452d f440a00040005a8a - {e=>1954,c=>66,a=>-32,b=>0,d=>0} e00042000000a207 e00042000000a207 e00042000000a207 e000840000000f44 e00042000000a207 e00042000000a207 e000840000000f44 e00042000000a207 e000840000000f44 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>5026,c=>9,a=>122,b=>2,d=>3} 7a0209000300a213 7a0209000300a213 7a0209000300a213 7a801200c0002744 7a0209000300a213 7a0209000300a213 7a801200c0002744 7a0209000300a213 7a801200c0002744 - {e=>31797,c=>98,a=>-83,b=>0,d=>2} ad0062000200357c ad0062000200357c ad0062000200357c ad00c4008000f86a ad0062000200357c ad0062000200357c ad00c4008000f86a ad0062000200357c ad00c4008000f86a - {e=>10931,c=>103,a=>-107,b=>2,d=>2} 950267000200b32a 950267000200b32a 950267000200b32a 9580ce0080005566 950267000200b32a 950267000200b32a 9580ce0080005566 950267000200b32a 9580ce0080005566 - {e=>6859,c=>82,a=>6,b=>1,d=>3} 060152000300cb1a 060152000300cb1a 060152000300cb1a 0640a400c0003596 060152000300cb1a 060152000300cb1a 0640a400c0003596 060152000300cb1a 0640a400c0003596 - {e=>27967,c=>53,a=>90,b=>1,d=>2} 5a01350002003f6d 5a01350002003f6d 5a01350002003f6d 5a406a008000da7e 5a01350002003f6d 5a01350002003f6d 5a406a008000da7e 5a01350002003f6d 5a406a008000da7e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>32078,c=>33,a=>90,b=>0,d=>1,f=>1} 5a00210001004e7d01000000 5a00210001004e7d01000000 5a00210001004e7d01000000 5a0042004000fa9c40000000 5a00210001004e7d01000000 5a00210001004e7d01000000 5a0042004000fa9c40000000 5a00210001004e7d01000000 5a0042004000fa9c40000000 - {e=>30999,c=>21,a=>-47,b=>1,d=>1,f=>2} d10115000100177902000000 d10115000100177902000000 d10115000100177902000000 d1402a004000f22e80000000 d10115000100177902000000 d10115000100177902000000 d1402a004000f22e80000000 d10115000100177902000000 d1402a004000f22e80000000 - {e=>5469,c=>52,a=>117,b=>0,d=>2,f=>0} 7500340002005d1500000000 7500340002005d1500000000 7500340002005d1500000000 7500680080002aba00000000 7500340002005d1500000000 7500340002005d1500000000 7500680080002aba00000000 7500340002005d1500000000 7500680080002aba00000000 - {e=>30192,c=>87,a=>-54,b=>3,d=>3,f=>1} ca0357000300f07501000000 ca0357000300f07501000000 ca0357000300f07501000000 cac0ae00c000ebe040000000 ca0357000300f07501000000 ca0357000300f07501000000 cac0ae00c000ebe040000000 ca0357000300f07501000000 cac0ae00c000ebe040000000 - {e=>5881,c=>2,a=>23,b=>1,d=>3,f=>0} 170102000300f91600000000 170102000300f91600000000 170102000300f91600000000 17400400c0002df200000000 170102000300f91600000000 170102000300f91600000000 17400400c0002df200000000 170102000300f91600000000 17400400c0002df200000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16281,c=>25,a=>111,g=>1820714982,b=>1,d=>0,f=>0} 6f0119000000993f00000000e6e7856c 6f0119000000993f00000000e6e7856c 6f0119000000993f00000000e6e7856c 6f40320000007f3200000000d90bcfcc 6f0119000000993f00000000e6e7856c 6f0119000000993f00000000e6e7856c 6f40320000007f3200000000d90bcfcc 6f0119000000993f00000000e6e7856c 6f40320000007f3200000000d90bcfcc - {e=>6891,c=>53,a=>-40,g=>97596344,b=>2,d=>2,f=>0} d80235000200eb1a00000000b833d105 d80235000200eb1a00000000b833d105 d80235000200eb1a00000000b833d105 d8806a00800035d6000000000ba26770 d80235000200eb1a00000000b833d105 d80235000200eb1a00000000b833d105 d8806a00800035d6000000000ba26770 d80235000200eb1a00000000b833d105 d8806a00800035d6000000000ba26770 - {e=>3360,c=>31,a=>63,g=>761179706,b=>1,d=>0,f=>0} 3f011f000000200d000000003aae5e2d 3f011f000000200d000000003aae5e2d 3f011f000000200d000000003aae5e2d 3f403e0000001a40000000005abd5c74 3f011f000000200d000000003aae5e2d 3f011f000000200d000000003aae5e2d 3f403e0000001a40000000005abd5c74 3f011f000000200d000000003aae5e2d 3f403e0000001a40000000005abd5c74 - {e=>16476,c=>63,a=>-85,g=>512020589,b=>3,d=>0,f=>3} ab033f0000005c40030000006dd0841e ab033f0000005c40030000006dd0841e ab033f0000005c40030000006dd0841e abc07e00000080b8c00000003d09a0da ab033f0000005c40030000006dd0841e ab033f0000005c40030000006dd0841e abc07e00000080b8c00000003d09a0da ab033f0000005c40030000006dd0841e abc07e00000080b8c00000003d09a0da - {e=>15061,c=>102,a=>-67,g=>473075273,b=>1,d=>1,f=>0} bd0166000100d53a00000000498e321c bd0166000100d53a00000000498e321c bd0166000100d53a00000000498e321c bd40cc00400075aa0000000038651c92 bd0166000100d53a00000000498e321c bd0166000100d53a00000000498e321c bd40cc00400075aa0000000038651c92 bd0166000100d53a00000000498e321c bd40cc00400075aa0000000038651c92 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22977,a=>-2,d=>2,c=>83,h=>109,b=>1,g=>868418545,f=>3} fe0153000200c15903000000f103c3336d000000 fe0153000200c15903000000f103c3336d000000 fe0153000200c15903000000f103c3336d000000 fe40a6008000b382c0000000678607e26d000000 fe0153000200c15903000000f103c3336d000000 fe0153000200c15903000000f103c3336d000000 fe40a6008000b382c0000000678607e26d000000 fe0153000200c15903000000f103c3336d000000 fe40a6008000b382c0000000678607e26d000000 - {e=>12366,a=>-40,d=>0,c=>7,h=>103,b=>1,g=>1323876095,f=>1} d801070000004e3001000000ffbee84e67000000 d801070000004e3001000000ffbee84e67000000 d801070000004e3001000000ffbee84e67000000 d8400e000000609c400000009dd17dfe67000000 d801070000004e3001000000ffbee84e67000000 d801070000004e3001000000ffbee84e67000000 d8400e000000609c400000009dd17dfe67000000 d801070000004e3001000000ffbee84e67000000 d8400e000000609c400000009dd17dfe67000000 - {e=>28796,a=>-113,d=>1,c=>90,h=>201,b=>3,g=>1452786621,f=>3} 8f035a0001007c7003000000bdc39756c9000000 8f035a0001007c7003000000bdc39756c9000000 8f035a0001007c7003000000bdc39756c9000000 8fc0b4004000e0f8c0000000ad2f877ac9000000 8f035a0001007c7003000000bdc39756c9000000 8f035a0001007c7003000000bdc39756c9000000 8fc0b4004000e0f8c0000000ad2f877ac9000000 8f035a0001007c7003000000bdc39756c9000000 8fc0b4004000e0f8c0000000ad2f877ac9000000 - {e=>11159,a=>98,d=>2,c=>57,h=>40,b=>0,g=>1298924782,f=>1} 620039000200972b01000000ee046c4d28000000 620039000200972b01000000ee046c4d28000000 620039000200972b01000000ee046c4d28000000 620072008000572e400000009ad809dc28000000 620039000200972b01000000ee046c4d28000000 620039000200972b01000000ee046c4d28000000 620072008000572e400000009ad809dc28000000 620039000200972b01000000ee046c4d28000000 620072008000572e400000009ad809dc28000000 - {e=>2986,a=>35,d=>3,c=>121,h=>161,b=>3,g=>287355737,f=>1} 230379000300aa0b0100000059b32011a1000000 230379000300aa0b0100000059b32011a1000000 230379000300aa0b0100000059b32011a1000000 23c0f200c000175440000000224166b2a1000000 230379000300aa0b0100000059b32011a1000000 230379000300aa0b0100000059b32011a1000000 23c0f200c000175440000000224166b2a1000000 230379000300aa0b0100000059b32011a1000000 23c0f200c000175440000000224166b2a1000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>36,b=>2} 24000200 24000200 24000200 00248000 24000200 24000200 00248000 24000200 00248000 - {a=>-42,b=>0} d6ff0000 d6ff0000 d6ff0000 ffd60000 d6ff0000 d6ff0000 ffd60000 d6ff0000 ffd60000 - {a=>52,b=>2} 34000200 34000200 34000200 00348000 34000200 34000200 00348000 34000200 00348000 - {a=>52,b=>2} 34000200 34000200 34000200 00348000 34000200 34000200 00348000 34000200 00348000 - {a=>-48,b=>1} d0ff0100 d0ff0100 d0ff0100 ffd04000 d0ff0100 d0ff0100 ffd04000 d0ff0100 ffd04000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>9,a=>-31,b=>1} e1ff0109 e1ff0109 e1ff0109 ffe14012 e1ff0109 e1ff0109 ffe14012 e1ff0109 ffe14012 - {c=>116,a=>-67,b=>0} bdff0074 bdff0074 bdff0074 ffbd00e8 bdff0074 bdff0074 ffbd00e8 bdff0074 ffbd00e8 - {c=>96,a=>-109,b=>3} 93ff0360 93ff0360 93ff0360 ff93c0c0 93ff0360 93ff0360 ff93c0c0 93ff0360 ff93c0c0 - {c=>112,a=>110,b=>1} 6e000170 6e000170 6e000170 006e40e0 6e000170 6e000170 006e40e0 6e000170 006e40e0 - {c=>85,a=>-99,b=>1} 9dff0155 9dff0155 9dff0155 ff9d40aa 9dff0155 9dff0155 ff9d40aa 9dff0155 ff9d40aa = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>59,a=>-96,b=>3} a0ff033b a0ff033b a0ff033b ffa0c076 a0ff033b a0ff033b ffa0c076 a0ff033b ffa0c076 - {c=>67,a=>-103,b=>2} 99ff0243 99ff0243 99ff0243 ff998086 99ff0243 99ff0243 ff998086 99ff0243 ff998086 - {c=>92,a=>-115,b=>1} 8dff015c 8dff015c 8dff015c ff8d40b8 8dff015c 8dff015c ff8d40b8 8dff015c ff8d40b8 - {c=>64,a=>19,b=>0} 13000040 13000040 13000040 00130080 13000040 13000040 00130080 13000040 00130080 - {c=>112,a=>95,b=>0} 5f000070 5f000070 5f000070 005f00e0 5f000070 5f000070 005f00e0 5f000070 005f00e0 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>78,a=>-30,b=>0,d=>1} e2ff004e0100 e2ff004e0100 e2ff004e0100 ffe2009c4000 e2ff004e01000000 e2ff004e0100 ffe2009c4000 e2ff004e0100 ffe2009c4000 - {c=>18,a=>106,b=>3,d=>1} 6a0003120100 6a0003120100 6a0003120100 006ac0244000 6a00031201000000 6a0003120100 006ac0244000 6a0003120100 006ac0244000 - {c=>55,a=>-74,b=>1,d=>2} b6ff01370200 b6ff01370200 b6ff01370200 ffb6406e8000 b6ff013702000000 b6ff01370200 ffb6406e8000 b6ff01370200 ffb6406e8000 - {c=>73,a=>20,b=>2,d=>0} 140002490000 140002490000 140002490000 001480920000 1400024900000000 140002490000 001480920000 140002490000 001480920000 - {c=>17,a=>-82,b=>2,d=>0} aeff02110000 aeff02110000 aeff02110000 ffae80220000 aeff021100000000 aeff02110000 ffae80220000 aeff02110000 ffae80220000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>23152,c=>68,a=>35,b=>3,d=>1} 230003440100705a 230003440100705a 230003440100705a 0023c0884000b4e0 230003440100705a 230003440100705a 0023c0884000b4e0 230003440100705a 0023c0884000b4e0 - {e=>11271,c=>14,a=>65,b=>1,d=>1} 4100010e0100072c 4100010e0100072c 4100010e0100072c 0041401c4000580e 4100010e0100072c 4100010e0100072c 0041401c4000580e 4100010e0100072c 0041401c4000580e - {e=>14141,c=>13,a=>16,b=>1,d=>2} 1000010d02003d37 1000010d02003d37 1000010d02003d37 0010401a80006e7a 1000010d02003d37 1000010d02003d37 0010401a80006e7a 1000010d02003d37 0010401a80006e7a - {e=>13679,c=>79,a=>119,b=>3,d=>0} 7700034f00006f35 7700034f00006f35 7700034f00006f35 0077c09e00006ade 7700034f00006f35 7700034f00006f35 0077c09e00006ade 7700034f00006f35 0077c09e00006ade - {e=>32421,c=>57,a=>49,b=>1,d=>0} 310001390000a57e 310001390000a57e 310001390000a57e 003140720000fd4a 310001390000a57e 310001390000a57e 003140720000fd4a 310001390000a57e 003140720000fd4a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>13261,c=>104,a=>-64,b=>3,d=>2} c0ff03680200cd33 c0ff03680200cd33 c0ff03680200cd33 ffc0c0d08000679a c0ff03680200cd33 c0ff03680200cd33 ffc0c0d08000679a c0ff03680200cd33 ffc0c0d08000679a - {e=>14081,c=>16,a=>118,b=>2,d=>0} 7600021000000137 7600021000000137 7600021000000137 0076802000006e02 7600021000000137 7600021000000137 0076802000006e02 7600021000000137 0076802000006e02 - {e=>18138,c=>125,a=>-105,b=>3,d=>3} 97ff037d0300da46 97ff037d0300da46 97ff037d0300da46 ff97c0fac0008db4 97ff037d0300da46 97ff037d0300da46 ff97c0fac0008db4 97ff037d0300da46 ff97c0fac0008db4 - {e=>10748,c=>38,a=>-13,b=>0,d=>0} f3ff00260000fc29 f3ff00260000fc29 f3ff00260000fc29 fff3004c000053f8 f3ff00260000fc29 f3ff00260000fc29 fff3004c000053f8 f3ff00260000fc29 fff3004c000053f8 - {e=>2078,c=>92,a=>59,b=>0,d=>1} 3b00005c01001e08 3b00005c01001e08 3b00005c01001e08 003b00b84000103c 3b00005c01001e08 3b00005c01001e08 003b00b84000103c 3b00005c01001e08 003b00b84000103c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>7575,c=>96,a=>14,b=>1,d=>2,f=>0} 0e0001600200971d00000000 0e0001600200971d00000000 0e0001600200971d00000000 000e40c080003b2e00000000 0e0001600200971d00000000 0e0001600200971d00000000 000e40c080003b2e00000000 0e0001600200971d00000000 000e40c080003b2e00000000 - {e=>14550,c=>56,a=>-116,b=>1,d=>0,f=>0} 8cff01380000d63800000000 8cff01380000d63800000000 8cff01380000d63800000000 ff8c4070000071ac00000000 8cff01380000d63800000000 8cff01380000d63800000000 ff8c4070000071ac00000000 8cff01380000d63800000000 ff8c4070000071ac00000000 - {e=>31077,c=>102,a=>118,b=>0,d=>3,f=>0} 760000660300657900000000 760000660300657900000000 760000660300657900000000 007600ccc000f2ca00000000 760000660300657900000000 760000660300657900000000 007600ccc000f2ca00000000 760000660300657900000000 007600ccc000f2ca00000000 - {e=>14802,c=>1,a=>-81,b=>2,d=>0,f=>3} afff02010000d23903000000 afff02010000d23903000000 afff02010000d23903000000 ffaf8002000073a4c0000000 afff02010000d23903000000 afff02010000d23903000000 ffaf8002000073a4c0000000 afff02010000d23903000000 ffaf8002000073a4c0000000 - {e=>14877,c=>55,a=>26,b=>2,d=>2,f=>2} 1a00023702001d3a02000000 1a00023702001d3a02000000 1a00023702001d3a02000000 001a806e8000743a80000000 1a00023702001d3a02000000 1a00023702001d3a02000000 001a806e8000743a80000000 1a00023702001d3a02000000 001a806e8000743a80000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7844,c=>54,a=>27,g=>751275513,b=>0,d=>2,f=>1} 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 001b006c80003d4840000000598f1bf2 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 001b006c80003d4840000000598f1bf2 1b0000360200a41e01000000f98dc72c 001b006c80003d4840000000598f1bf2 - {e=>11268,c=>97,a=>-121,g=>109432832,b=>2,d=>3,f=>3} 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 ff8780c2c0005808c00000000d0ba000 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 ff8780c2c0005808c00000000d0ba000 87ff02610300042c0300000000d08506 ff8780c2c0005808c00000000d0ba000 - {e=>23652,c=>90,a=>107,g=>836655276,b=>1,d=>3,f=>1} 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 006b40b4c000b8c84000000063bcb158 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 006b40b4c000b8c84000000063bcb158 6b00015a0300645c01000000ac58de31 006b40b4c000b8c84000000063bcb158 - {e=>29274,c=>92,a=>101,g=>1563176679,b=>1,d=>1,f=>1} 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 006540b84000e4b440000000ba585dce 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 006540b84000e4b440000000ba585dce 6500015c01005a7201000000e72e2c5d 006540b84000e4b440000000ba585dce - {e=>24723,c=>105,a=>-77,g=>980506780,b=>0,d=>3,f=>2} b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a ffb300d2c000c1268000000074e2b138 b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a ffb300d2c000c1268000000074e2b138 b3ff006903009360020000009c58713a ffb300d2c000c1268000000074e2b138 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>17518,a=>-39,d=>3,c=>91,h=>162,b=>3,g=>1543066247,f=>1} d9ff035b03006e44010000008752f95ba2000000 d9ff035b03006e44010000008752f95ba2000000 d9ff035b03006e44010000008752f95ba2000000 ffd9c0b6c00088dc40000000b7f2a50ea2000000 d9ff035b03006e44010000008752f95ba2000000 d9ff035b03006e44010000008752f95ba2000000 ffd9c0b6c00088dc40000000b7f2a50ea2000000 d9ff035b03006e44010000008752f95ba2000000 ffd9c0b6c00088dc40000000b7f2a50ea2000000 - {e=>8378,a=>71,d=>1,c=>66,h=>137,b=>0,g=>834780984,f=>3} 470000420100ba200300000038bfc13189000000 470000420100ba200300000038bfc13189000000 470000420100ba200300000038bfc13189000000 0047008440004174c000000063837e7089000000 470000420100ba200300000038bfc13189000000 470000420100ba200300000038bfc13189000000 0047008440004174c000000063837e7089000000 470000420100ba200300000038bfc13189000000 0047008440004174c000000063837e7089000000 - {e=>28729,a=>-103,d=>3,c=>19,h=>150,b=>3,g=>458128972,f=>2} 99ff031303003970020000004c7e4e1b96000000 99ff031303003970020000004c7e4e1b96000000 99ff031303003970020000004c7e4e1b96000000 ff99c026c000e07280000000369cfc9896000000 99ff031303003970020000004c7e4e1b96000000 99ff031303003970020000004c7e4e1b96000000 ff99c026c000e07280000000369cfc9896000000 99ff031303003970020000004c7e4e1b96000000 ff99c026c000e07280000000369cfc9896000000 - {e=>2388,a=>86,d=>2,c=>85,h=>7,b=>2,g=>1947211790,f=>3} 5600025502005409030000000e18107407000000 5600025502005409030000000e18107407000000 5600025502005409030000000e18107407000000 005680aa800012a8c0000000e820301c07000000 5600025502005409030000000e18107407000000 5600025502005409030000000e18107407000000 005680aa800012a8c0000000e820301c07000000 5600025502005409030000000e18107407000000 005680aa800012a8c0000000e820301c07000000 - {e=>25964,a=>-72,d=>2,c=>127,h=>252,b=>3,g=>338601299,f=>3} b8ff037f02006c650300000053a52e14fc000000 b8ff037f02006c650300000053a52e14fc000000 b8ff037f02006c650300000053a52e14fc000000 ffb8c0fe8000cad8c0000000285d4aa6fc000000 b8ff037f02006c650300000053a52e14fc000000 b8ff037f02006c650300000053a52e14fc000000 ffb8c0fe8000cad8c0000000285d4aa6fc000000 b8ff037f02006c650300000053a52e14fc000000 ffb8c0fe8000cad8c0000000285d4aa6fc000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>23,b=>3} 1700000003000000 1700000003000000 1700000003000000 00000017c0000000 1700000003000000 1700000003000000 00000017c0000000 1700000003000000 00000017c0000000 - {a=>93,b=>0} 5d00000000000000 5d00000000000000 5d00000000000000 0000005d00000000 5d00000000000000 5d00000000000000 0000005d00000000 5d00000000000000 0000005d00000000 - {a=>82,b=>3} 5200000003000000 5200000003000000 5200000003000000 00000052c0000000 5200000003000000 5200000003000000 00000052c0000000 5200000003000000 00000052c0000000 - {a=>-120,b=>3} 88ffffff03000000 88ffffff03000000 88ffffff03000000 ffffff88c0000000 88ffffff03000000 88ffffff03000000 ffffff88c0000000 88ffffff03000000 ffffff88c0000000 - {a=>-6,b=>2} faffffff02000000 faffffff02000000 faffffff02000000 fffffffa80000000 faffffff02000000 faffffff02000000 fffffffa80000000 faffffff02000000 fffffffa80000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>118,a=>39,b=>1} 2700000001760000 2700000001760000 2700000001760000 0000002740ec0000 2700000001760000 2700000001760000 0000002740ec0000 2700000001760000 0000002740ec0000 - {c=>36,a=>70,b=>1} 4600000001240000 4600000001240000 4600000001240000 0000004640480000 4600000001240000 4600000001240000 0000004640480000 4600000001240000 0000004640480000 - {c=>28,a=>12,b=>1} 0c000000011c0000 0c000000011c0000 0c000000011c0000 0000000c40380000 0c000000011c0000 0c000000011c0000 0000000c40380000 0c000000011c0000 0000000c40380000 - {c=>0,a=>-92,b=>0} a4ffffff00000000 a4ffffff00000000 a4ffffff00000000 ffffffa400000000 a4ffffff00000000 a4ffffff00000000 ffffffa400000000 a4ffffff00000000 ffffffa400000000 - {c=>54,a=>84,b=>0} 5400000000360000 5400000000360000 5400000000360000 00000054006c0000 5400000000360000 5400000000360000 00000054006c0000 5400000000360000 00000054006c0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>29,a=>0,b=>1} 00000000011d0000 00000000011d0000 00000000011d0000 00000000403a0000 00000000011d0000 00000000011d0000 00000000403a0000 00000000011d0000 00000000403a0000 - {c=>42,a=>-2,b=>3} feffffff032a0000 feffffff032a0000 feffffff032a0000 fffffffec0540000 feffffff032a0000 feffffff032a0000 fffffffec0540000 feffffff032a0000 fffffffec0540000 - {c=>79,a=>100,b=>2} 64000000024f0000 64000000024f0000 64000000024f0000 00000064809e0000 64000000024f0000 64000000024f0000 00000064809e0000 64000000024f0000 00000064809e0000 - {c=>46,a=>-76,b=>2} b4ffffff022e0000 b4ffffff022e0000 b4ffffff022e0000 ffffffb4805c0000 b4ffffff022e0000 b4ffffff022e0000 ffffffb4805c0000 b4ffffff022e0000 ffffffb4805c0000 - {c=>57,a=>13,b=>3} 0d00000003390000 0d00000003390000 0d00000003390000 0000000dc0720000 0d00000003390000 0d00000003390000 0000000dc0720000 0d00000003390000 0000000dc0720000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>42,a=>54,b=>1,d=>3} 36000000012a0300 36000000012a0300 36000000012a0300 000000364054c000 36000000012a0300 36000000012a0300 000000364054c000 36000000012a0300 000000364054c000 - {c=>23,a=>120,b=>3,d=>1} 7800000003170100 7800000003170100 7800000003170100 00000078c02e4000 7800000003170100 7800000003170100 00000078c02e4000 7800000003170100 00000078c02e4000 - {c=>65,a=>67,b=>3,d=>3} 4300000003410300 4300000003410300 4300000003410300 00000043c082c000 4300000003410300 4300000003410300 00000043c082c000 4300000003410300 00000043c082c000 - {c=>36,a=>-14,b=>0,d=>2} f2ffffff00240200 f2ffffff00240200 f2ffffff00240200 fffffff200488000 f2ffffff00240200 f2ffffff00240200 fffffff200488000 f2ffffff00240200 fffffff200488000 - {c=>6,a=>61,b=>2,d=>3} 3d00000002060300 3d00000002060300 3d00000002060300 0000003d800cc000 3d00000002060300 3d00000002060300 0000003d800cc000 3d00000002060300 0000003d800cc000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>6171,c=>80,a=>-30,b=>1,d=>0} e2ffffff015000001b180000 e2ffffff015000001b180000 e2ffffff015000001b180000 ffffffe240a0000030360000 e2ffffff015000001b180000 e2ffffff015000001b180000 ffffffe240a0000030360000 e2ffffff015000001b180000 ffffffe240a0000030360000 - {e=>13986,c=>17,a=>16,b=>2,d=>1} 1000000002110100a2360000 1000000002110100a2360000 1000000002110100a2360000 00000010802240006d440000 1000000002110100a2360000 1000000002110100a2360000 00000010802240006d440000 1000000002110100a2360000 00000010802240006d440000 - {e=>10321,c=>77,a=>-41,b=>2,d=>1} d7ffffff024d010051280000 d7ffffff024d010051280000 d7ffffff024d010051280000 ffffffd7809a400050a20000 d7ffffff024d010051280000 d7ffffff024d010051280000 ffffffd7809a400050a20000 d7ffffff024d010051280000 ffffffd7809a400050a20000 - {e=>4855,c=>52,a=>-59,b=>2,d=>2} c5ffffff02340200f7120000 c5ffffff02340200f7120000 c5ffffff02340200f7120000 ffffffc58068800025ee0000 c5ffffff02340200f7120000 c5ffffff02340200f7120000 ffffffc58068800025ee0000 c5ffffff02340200f7120000 ffffffc58068800025ee0000 - {e=>4433,c=>3,a=>-57,b=>2,d=>2} c7ffffff0203020051110000 c7ffffff0203020051110000 c7ffffff0203020051110000 ffffffc78006800022a20000 c7ffffff0203020051110000 c7ffffff0203020051110000 ffffffc78006800022a20000 c7ffffff0203020051110000 ffffffc78006800022a20000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>924,c=>33,a=>-21,b=>0,d=>1} ebffffff002101009c030000 ebffffff002101009c030000 ebffffff002101009c030000 ffffffeb0042400007380000 ebffffff002101009c030000 ebffffff002101009c030000 ffffffeb0042400007380000 ebffffff002101009c030000 ffffffeb0042400007380000 - {e=>6351,c=>54,a=>-34,b=>1,d=>0} deffffff01360000cf180000 deffffff01360000cf180000 deffffff01360000cf180000 ffffffde406c0000319e0000 deffffff01360000cf180000 deffffff01360000cf180000 ffffffde406c0000319e0000 deffffff01360000cf180000 ffffffde406c0000319e0000 - {e=>1879,c=>52,a=>35,b=>1,d=>1} 230000000134010057070000 230000000134010057070000 230000000134010057070000 00000023406840000eae0000 230000000134010057070000 230000000134010057070000 00000023406840000eae0000 230000000134010057070000 00000023406840000eae0000 - {e=>8238,c=>76,a=>32,b=>2,d=>1} 20000000024c01002e200000 20000000024c01002e200000 20000000024c01002e200000 0000002080984000405c0000 20000000024c01002e200000 20000000024c01002e200000 0000002080984000405c0000 20000000024c01002e200000 0000002080984000405c0000 - {e=>31420,c=>54,a=>0,b=>1,d=>3} 0000000001360300bc7a0000 0000000001360300bc7a0000 0000000001360300bc7a0000 00000000406cc000f5780000 0000000001360300bc7a0000 0000000001360300bc7a0000 00000000406cc000f5780000 0000000001360300bc7a0000 00000000406cc000f5780000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>26010,c=>9,a=>2,b=>3,d=>0,f=>0} 02000000030900009a65000000000000 02000000030900009a65000000000000 02000000030900009a65000000000000 00000002c0120000cb34000000000000 02000000030900009a65000000000000 02000000030900009a65000000000000 00000002c0120000cb34000000000000 02000000030900009a65000000000000 00000002c0120000cb34000000000000 - {e=>2064,c=>80,a=>-119,b=>3,d=>3,f=>3} 89ffffff035003001008000003000000 89ffffff035003001008000003000000 89ffffff035003001008000003000000 ffffff89c0a0c00010200000c0000000 89ffffff035003001008000003000000 89ffffff035003001008000003000000 ffffff89c0a0c00010200000c0000000 89ffffff035003001008000003000000 ffffff89c0a0c00010200000c0000000 - {e=>31255,c=>2,a=>-82,b=>0,d=>0,f=>2} aeffffff00020000177a000002000000 aeffffff00020000177a000002000000 aeffffff00020000177a000002000000 ffffffae00040000f42e000080000000 aeffffff00020000177a000002000000 aeffffff00020000177a000002000000 ffffffae00040000f42e000080000000 aeffffff00020000177a000002000000 ffffffae00040000f42e000080000000 - {e=>3569,c=>113,a=>86,b=>2,d=>2,f=>1} 5600000002710200f10d000001000000 5600000002710200f10d000001000000 5600000002710200f10d000001000000 0000005680e280001be2000040000000 5600000002710200f10d000001000000 5600000002710200f10d000001000000 0000005680e280001be2000040000000 5600000002710200f10d000001000000 0000005680e280001be2000040000000 - {e=>17551,c=>23,a=>-128,b=>1,d=>3,f=>3} 80ffffff011703008f44000003000000 80ffffff011703008f44000003000000 80ffffff011703008f44000003000000 ffffff80402ec000891e0000c0000000 80ffffff011703008f44000003000000 80ffffff011703008f44000003000000 ffffff80402ec000891e0000c0000000 80ffffff011703008f44000003000000 ffffff80402ec000891e0000c0000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>22897,c=>67,a=>93,g=>236819416,b=>2,d=>0,f=>0} 5d000000024300007159000000000000d8931d0e 5d000000024300007159000000000000d8931d0e 5d000000024300007159000000000000d8931d0e 0000005d80860000b2e20000000000001c3b27b0 5d000000024300007159000000000000d8931d0e 5d000000024300007159000000000000d8931d0e 0000005d80860000b2e20000000000001c3b27b0 5d000000024300007159000000000000d8931d0e 0000005d80860000b2e20000000000001c3b27b0 - {e=>31111,c=>74,a=>119,g=>1459711425,b=>2,d=>1,f=>3} 77000000024a01008779000003000000c16d0157 77000000024a01008779000003000000c16d0157 77000000024a01008779000003000000c16d0157 0000007780944000f30e0000c0000000ae02db82 77000000024a01008779000003000000c16d0157 77000000024a01008779000003000000c16d0157 0000007780944000f30e0000c0000000ae02db82 77000000024a01008779000003000000c16d0157 0000007780944000f30e0000c0000000ae02db82 - {e=>13989,c=>102,a=>70,g=>1058309672,b=>3,d=>0,f=>2} 4600000003660000a5360000020000002886143f 4600000003660000a5360000020000002886143f 4600000003660000a5360000020000002886143f 00000046c0cc00006d4a0000800000007e290c50 4600000003660000a5360000020000002886143f 4600000003660000a5360000020000002886143f 00000046c0cc00006d4a0000800000007e290c50 4600000003660000a5360000020000002886143f 00000046c0cc00006d4a0000800000007e290c50 - {e=>26791,c=>57,a=>7,g=>1365065929,b=>1,d=>2,f=>1} 0700000001390200a768000001000000c9405d51 0700000001390200a768000001000000c9405d51 0700000001390200a768000001000000c9405d51 0000000740728000d14e000040000000a2ba8192 0700000001390200a768000001000000c9405d51 0700000001390200a768000001000000c9405d51 0000000740728000d14e000040000000a2ba8192 0700000001390200a768000001000000c9405d51 0000000740728000d14e000040000000a2ba8192 - {e=>6858,c=>70,a=>-7,g=>1686921269,b=>3,d=>3,f=>1} f9ffffff03460300ca1a00000100000035608c64 f9ffffff03460300ca1a00000100000035608c64 f9ffffff03460300ca1a00000100000035608c64 fffffff9c08cc0003594000040000000c918c06a f9ffffff03460300ca1a00000100000035608c64 f9ffffff03460300ca1a00000100000035608c64 fffffff9c08cc0003594000040000000c918c06a f9ffffff03460300ca1a00000100000035608c64 fffffff9c08cc0003594000040000000c918c06a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>32326,a=>82,d=>2,c=>71,h=>163,b=>1,g=>1658102310,f=>1} 5200000001470200467e00000100000026a2d462a3000000 5200000001470200467e00000100000026a2d462a3000000 5200000001470200467e00000100000026a2d462a3000000 00000052408e8000fc8c000040000000c5a9444ca3000000 5200000001470200467e00000100000026a2d462a3000000 5200000001470200467e00000100000026a2d462a3000000 00000052408e8000fc8c000040000000c5a9444ca3000000 5200000001470200467e00000100000026a2d462a3000000 00000052408e8000fc8c000040000000c5a9444ca3000000 - {e=>6558,a=>54,d=>0,c=>114,h=>224,b=>0,g=>240808537,f=>1} 36000000007200009e1900000100000059725a0ee0000000 36000000007200009e1900000100000059725a0ee0000000 36000000007200009e1900000100000059725a0ee0000000 0000003600e40000333c0000400000001cb4e4b2e0000000 36000000007200009e1900000100000059725a0ee0000000 36000000007200009e1900000100000059725a0ee0000000 0000003600e40000333c0000400000001cb4e4b2e0000000 36000000007200009e1900000100000059725a0ee0000000 0000003600e40000333c0000400000001cb4e4b2e0000000 - {e=>7128,a=>-105,d=>3,c=>78,h=>139,b=>2,g=>1841705631,f=>2} 97ffffff024e0300d81b0000020000009f32c66d8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 ffffff97809cc00037b0000080000000db8c653e8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 ffffff97809cc00037b0000080000000db8c653e8b000000 97ffffff024e0300d81b0000020000009f32c66d8b000000 ffffff97809cc00037b0000080000000db8c653e8b000000 - {e=>30661,a=>87,d=>2,c=>117,h=>158,b=>1,g=>176849329,f=>1} 5700000001750200c577000001000000b1818a0a9e000000 5700000001750200c577000001000000b1818a0a9e000000 5700000001750200c577000001000000b1818a0a9e000000 0000005740ea8000ef8a000040000000151503629e000000 5700000001750200c577000001000000b1818a0a9e000000 5700000001750200c577000001000000b1818a0a9e000000 0000005740ea8000ef8a000040000000151503629e000000 5700000001750200c577000001000000b1818a0a9e000000 0000005740ea8000ef8a000040000000151503629e000000 - {e=>20458,a=>-35,d=>3,c=>6,h=>255,b=>3,g=>1305982333,f=>0} ddffffff03060300ea4f0000000000007db5d74dff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ffffffddc00cc0009fd40000000000009baf6afaff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ffffffddc00cc0009fd40000000000009baf6afaff000000 ddffffff03060300ea4f0000000000007db5d74dff000000 ffffffddc00cc0009fd40000000000009baf6afaff000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>-94,b=>3} a2ffffff03000000 a2ffffffffffffff0300000000000000 a2ffffffffffffff0300000000000000 ffffffa2c0000000 a2ffffff03000000 a2ffffff03000000 ffffffffffffffa2c000000000000000 a2ffffff03000000 ffffffa2c0000000 - {a=>-70,b=>3} baffffff03000000 baffffffffffffff0300000000000000 baffffffffffffff0300000000000000 ffffffbac0000000 baffffff03000000 baffffff03000000 ffffffffffffffbac000000000000000 baffffff03000000 ffffffbac0000000 - {a=>-56,b=>0} c8ffffff00000000 c8ffffffffffffff0000000000000000 c8ffffffffffffff0000000000000000 ffffffc800000000 c8ffffff00000000 c8ffffff00000000 ffffffffffffffc80000000000000000 c8ffffff00000000 ffffffc800000000 - {a=>42,b=>1} 2a00000001000000 2a000000000000000100000000000000 2a000000000000000100000000000000 0000002a40000000 2a00000001000000 2a00000001000000 000000000000002a4000000000000000 2a00000001000000 0000002a40000000 - {a=>80,b=>0} 5000000000000000 50000000000000000000000000000000 50000000000000000000000000000000 0000005000000000 5000000000000000 5000000000000000 00000000000000500000000000000000 5000000000000000 0000005000000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>70,a=>33,b=>2} 2100000002460000 21000000000000000246000000000000 21000000000000000246000000000000 00000021808c0000 2100000002460000 2100000002460000 0000000000000021808c000000000000 2100000002460000 00000021808c0000 - {c=>99,a=>28,b=>2} 1c00000002630000 1c000000000000000263000000000000 1c000000000000000263000000000000 0000001c80c60000 1c00000002630000 1c00000002630000 000000000000001c80c6000000000000 1c00000002630000 0000001c80c60000 - {c=>31,a=>-81,b=>3} afffffff031f0000 afffffffffffffff031f000000000000 afffffffffffffff031f000000000000 ffffffafc03e0000 afffffff031f0000 afffffff031f0000 ffffffffffffffafc03e000000000000 afffffff031f0000 ffffffafc03e0000 - {c=>60,a=>50,b=>1} 32000000013c0000 3200000000000000013c000000000000 3200000000000000013c000000000000 0000003240780000 32000000013c0000 32000000013c0000 00000000000000324078000000000000 32000000013c0000 0000003240780000 - {c=>63,a=>-105,b=>3} 97ffffff033f0000 97ffffffffffffff033f000000000000 97ffffffffffffff033f000000000000 ffffff97c07e0000 97ffffff033f0000 97ffffff033f0000 ffffffffffffff97c07e000000000000 97ffffff033f0000 ffffff97c07e0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>48,a=>-2,b=>1} feffffff01300000 feffffffffffffff0130000000000000 feffffffffffffff0130000000000000 fffffffe40600000 feffffff01300000 feffffff01300000 fffffffffffffffe4060000000000000 feffffff01300000 fffffffe40600000 - {c=>12,a=>35,b=>1} 23000000010c0000 2300000000000000010c000000000000 2300000000000000010c000000000000 0000002340180000 23000000010c0000 23000000010c0000 00000000000000234018000000000000 23000000010c0000 0000002340180000 - {c=>66,a=>83,b=>0} 5300000000420000 53000000000000000042000000000000 53000000000000000042000000000000 0000005300840000 5300000000420000 5300000000420000 00000000000000530084000000000000 5300000000420000 0000005300840000 - {c=>88,a=>9,b=>0} 0900000000580000 09000000000000000058000000000000 09000000000000000058000000000000 0000000900b00000 0900000000580000 0900000000580000 000000000000000900b0000000000000 0900000000580000 0000000900b00000 - {c=>96,a=>41,b=>1} 2900000001600000 29000000000000000160000000000000 29000000000000000160000000000000 0000002940c00000 2900000001600000 2900000001600000 000000000000002940c0000000000000 2900000001600000 0000002940c00000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>116,a=>-52,b=>3,d=>2} ccffffff03740200 ccffffffffffffff0374020000000000 ccffffffffffffff0374020000000000 ffffffccc0e88000 ccffffff03740200 ccffffff03740200 ffffffffffffffccc0e8800000000000 ccffffff03740200 ffffffccc0e88000 - {c=>2,a=>-30,b=>3,d=>2} e2ffffff03020200 e2ffffffffffffff0302020000000000 e2ffffffffffffff0302020000000000 ffffffe2c0048000 e2ffffff03020200 e2ffffff03020200 ffffffffffffffe2c004800000000000 e2ffffff03020200 ffffffe2c0048000 - {c=>22,a=>31,b=>3,d=>2} 1f00000003160200 1f000000000000000316020000000000 1f000000000000000316020000000000 0000001fc02c8000 1f00000003160200 1f00000003160200 000000000000001fc02c800000000000 1f00000003160200 0000001fc02c8000 - {c=>103,a=>99,b=>1,d=>1} 6300000001670100 63000000000000000167010000000000 63000000000000000167010000000000 0000006340ce4000 6300000001670100 6300000001670100 000000000000006340ce400000000000 6300000001670100 0000006340ce4000 - {c=>110,a=>-15,b=>0,d=>3} f1ffffff006e0300 f1ffffffffffffff006e030000000000 f1ffffffffffffff006e030000000000 fffffff100dcc000 f1ffffff006e0300 f1ffffff006e0300 fffffffffffffff100dcc00000000000 f1ffffff006e0300 fffffff100dcc000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>13673,c=>84,a=>122,b=>1,d=>3} 7a0000000154030069350000 7a000000000000000154030069350000 7a000000000000000154030069350000 0000007a40a8c0006ad20000 7a0000000154030069350000 7a0000000154030069350000 000000000000007a40a8c0006ad20000 7a0000000154030069350000 0000007a40a8c0006ad20000 - {e=>31547,c=>111,a=>-80,b=>1,d=>0} b0ffffff016f00003b7b0000 b0ffffffffffffff016f00003b7b0000 b0ffffffffffffff016f00003b7b0000 ffffffb040de0000f6760000 b0ffffff016f00003b7b0000 b0ffffff016f00003b7b0000 ffffffffffffffb040de0000f6760000 b0ffffff016f00003b7b0000 ffffffb040de0000f6760000 - {e=>19845,c=>63,a=>77,b=>1,d=>3} 4d000000013f0300854d0000 4d00000000000000013f0300854d0000 4d00000000000000013f0300854d0000 0000004d407ec0009b0a0000 4d000000013f0300854d0000 4d000000013f0300854d0000 000000000000004d407ec0009b0a0000 4d000000013f0300854d0000 0000004d407ec0009b0a0000 - {e=>6913,c=>104,a=>127,b=>2,d=>1} 7f00000002680100011b0000 7f0000000000000002680100011b0000 7f0000000000000002680100011b0000 0000007f80d0400036020000 7f00000002680100011b0000 7f00000002680100011b0000 000000000000007f80d0400036020000 7f00000002680100011b0000 0000007f80d0400036020000 - {e=>16426,c=>0,a=>57,b=>1,d=>0} 39000000010000002a400000 3900000000000000010000002a400000 3900000000000000010000002a400000 000000394000000080540000 39000000010000002a400000 39000000010000002a400000 00000000000000394000000080540000 39000000010000002a400000 000000394000000080540000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>30485,c=>17,a=>-61,b=>1,d=>2} c3ffffff0111020015770000 c3ffffffffffffff0111020015770000 c3ffffffffffffff0111020015770000 ffffffc340228000ee2a0000 c3ffffff0111020015770000 c3ffffff0111020015770000 ffffffffffffffc340228000ee2a0000 c3ffffff0111020015770000 ffffffc340228000ee2a0000 - {e=>4491,c=>69,a=>-114,b=>1,d=>3} 8effffff014503008b110000 8effffffffffffff014503008b110000 8effffffffffffff014503008b110000 ffffff8e408ac00023160000 8effffff014503008b110000 8effffff014503008b110000 ffffffffffffff8e408ac00023160000 8effffff014503008b110000 ffffff8e408ac00023160000 - {e=>1064,c=>91,a=>-67,b=>0,d=>0} bdffffff005b000028040000 bdffffffffffffff005b000028040000 bdffffffffffffff005b000028040000 ffffffbd00b6000008500000 bdffffff005b000028040000 bdffffff005b000028040000 ffffffffffffffbd00b6000008500000 bdffffff005b000028040000 ffffffbd00b6000008500000 - {e=>26263,c=>40,a=>2,b=>2,d=>1} 020000000228010097660000 02000000000000000228010097660000 02000000000000000228010097660000 0000000280504000cd2e0000 020000000228010097660000 020000000228010097660000 000000000000000280504000cd2e0000 020000000228010097660000 0000000280504000cd2e0000 - {e=>1533,c=>107,a=>-62,b=>3,d=>3} c2ffffff036b0300fd050000 c2ffffffffffffff036b0300fd050000 c2ffffffffffffff036b0300fd050000 ffffffc2c0d6c0000bfa0000 c2ffffff036b0300fd050000 c2ffffff036b0300fd050000 ffffffffffffffc2c0d6c0000bfa0000 c2ffffff036b0300fd050000 ffffffc2c0d6c0000bfa0000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>6622,c=>119,a=>103,b=>2,d=>1,f=>3} 6700000002770100de19000003000000 670000000000000002770100de1900000300000000000000 670000000000000002770100de1900000300000000000000 0000006780ee400033bc0000c0000000 6700000002770100de19000003000000 6700000002770100de19000003000000 000000000000006780ee400033bc0000c000000000000000 6700000002770100de19000003000000 0000006780ee400033bc0000c0000000 - {e=>7645,c=>92,a=>55,b=>0,d=>1,f=>3} 37000000005c0100dd1d000003000000 3700000000000000005c0100dd1d00000300000000000000 3700000000000000005c0100dd1d00000300000000000000 0000003700b840003bba0000c0000000 37000000005c0100dd1d000003000000 37000000005c0100dd1d000003000000 000000000000003700b840003bba0000c000000000000000 37000000005c0100dd1d000003000000 0000003700b840003bba0000c0000000 - {e=>23069,c=>56,a=>60,b=>3,d=>0,f=>2} 3c000000033800001d5a000002000000 3c00000000000000033800001d5a00000200000000000000 3c00000000000000033800001d5a00000200000000000000 0000003cc0700000b43a000080000000 3c000000033800001d5a000002000000 3c000000033800001d5a000002000000 000000000000003cc0700000b43a00008000000000000000 3c000000033800001d5a000002000000 0000003cc0700000b43a000080000000 - {e=>27949,c=>1,a=>-7,b=>2,d=>3,f=>3} f9ffffff020103002d6d000003000000 f9ffffffffffffff020103002d6d00000300000000000000 f9ffffffffffffff020103002d6d00000300000000000000 fffffff98002c000da5a0000c0000000 f9ffffff020103002d6d000003000000 f9ffffff020103002d6d000003000000 fffffffffffffff98002c000da5a0000c000000000000000 f9ffffff020103002d6d000003000000 fffffff98002c000da5a0000c0000000 - {e=>11648,c=>90,a=>72,b=>2,d=>3,f=>1} 48000000025a0300802d000001000000 4800000000000000025a0300802d00000100000000000000 4800000000000000025a0300802d00000100000000000000 0000004880b4c0005b00000040000000 48000000025a0300802d000001000000 48000000025a0300802d000001000000 000000000000004880b4c0005b0000004000000000000000 48000000025a0300802d000001000000 0000004880b4c0005b00000040000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>20058,c=>21,a=>-54,g=>527765798,b=>2,d=>1,f=>2} caffffff021501005a4e0000020000002611751f caffffffffffffff021501005a4e0000020000002611751f caffffffffffffff021501005a4e0000020000002611751f ffffffca802a40009cb40000800000003eea224c caffffff021501005a4e0000020000002611751f caffffff021501005a4e0000020000002611751f ffffffffffffffca802a40009cb40000800000003eea224c caffffff021501005a4e0000020000002611751f ffffffca802a40009cb40000800000003eea224c - {e=>31782,c=>68,a=>19,g=>946001649,b=>3,d=>0,f=>3} 1300000003440000267c000003000000f1d66238 130000000000000003440000267c000003000000f1d66238 130000000000000003440000267c000003000000f1d66238 00000013c0880000f84c0000c000000070c5ade2 1300000003440000267c000003000000f1d66238 1300000003440000267c000003000000f1d66238 0000000000000013c0880000f84c0000c000000070c5ade2 1300000003440000267c000003000000f1d66238 00000013c0880000f84c0000c000000070c5ade2 - {e=>7380,c=>37,a=>-52,g=>464958575,b=>2,d=>3,f=>1} ccffffff02250300d41c0000010000006fb4b61b ccffffffffffffff02250300d41c0000010000006fb4b61b ccffffffffffffff02250300d41c0000010000006fb4b61b ffffffcc804ac00039a8000040000000376d68de ccffffff02250300d41c0000010000006fb4b61b ccffffff02250300d41c0000010000006fb4b61b ffffffffffffffcc804ac00039a8000040000000376d68de ccffffff02250300d41c0000010000006fb4b61b ffffffcc804ac00039a8000040000000376d68de - {e=>21112,c=>42,a=>42,g=>906361925,b=>1,d=>0,f=>2} 2a000000012a0000785200000200000045fc0536 2a00000000000000012a0000785200000200000045fc0536 2a00000000000000012a0000785200000200000045fc0536 0000002a40540000a4f00000800000006c0bf88a 2a000000012a0000785200000200000045fc0536 2a000000012a0000785200000200000045fc0536 000000000000002a40540000a4f00000800000006c0bf88a 2a000000012a0000785200000200000045fc0536 0000002a40540000a4f00000800000006c0bf88a - {e=>30855,c=>1,a=>53,g=>1190588411,b=>0,d=>0,f=>1} 35000000000100008778000001000000fbeff646 3500000000000000000100008778000001000000fbeff646 3500000000000000000100008778000001000000fbeff646 0000003500020000f10e0000400000008deddff6 35000000000100008778000001000000fbeff646 35000000000100008778000001000000fbeff646 000000000000003500020000f10e0000400000008deddff6 35000000000100008778000001000000fbeff646 0000003500020000f10e0000400000008deddff6 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>12949,a=>112,d=>2,c=>46,h=>27,b=>1,g=>348067209,f=>0} 70000000012e020095320000000000008915bf141b000000 7000000000000000012e020095320000000000008915bf141b00000000000000 7000000000000000012e020095320000000000008915bf141b00000000000000 00000070405c8000652a000000000000297e2b121b000000 70000000012e020095320000000000008915bf141b000000 70000000012e020095320000000000008915bf141b000000 0000000000000070405c8000652a000000000000297e2b121b00000000000000 70000000012e020095320000000000008915bf141b000000 00000070405c8000652a000000000000297e2b121b000000 - {e=>12614,a=>-75,d=>0,c=>88,h=>124,b=>2,g=>2115801870,f=>3} b5ffffff0258000046310000030000000e931c7e7c000000 b5ffffffffffffff0258000046310000030000000e931c7e7c00000000000000 b5ffffffffffffff0258000046310000030000000e931c7e7c00000000000000 ffffffb580b00000628c0000c0000000fc39261c7c000000 b5ffffff0258000046310000030000000e931c7e7c000000 b5ffffff0258000046310000030000000e931c7e7c000000 ffffffffffffffb580b00000628c0000c0000000fc39261c7c00000000000000 b5ffffff0258000046310000030000000e931c7e7c000000 ffffffb580b00000628c0000c0000000fc39261c7c000000 - {e=>22026,a=>-26,d=>1,c=>44,h=>122,b=>2,g=>1176974089,f=>1} e6ffffff022c01000a56000001000000093327467a000000 e6ffffffffffffff022c01000a56000001000000093327467a00000000000000 e6ffffffffffffff022c01000a56000001000000093327467a00000000000000 ffffffe680584000ac140000400000008c4e66127a000000 e6ffffff022c01000a56000001000000093327467a000000 e6ffffff022c01000a56000001000000093327467a000000 ffffffffffffffe680584000ac140000400000008c4e66127a00000000000000 e6ffffff022c01000a56000001000000093327467a000000 ffffffe680584000ac140000400000008c4e66127a000000 - {e=>23544,a=>64,d=>3,c=>24,h=>65,b=>3,g=>598810224,f=>3} 4000000003180300f85b000003000000701eb12341000000 400000000000000003180300f85b000003000000701eb1234100000000000000 400000000000000003180300f85b000003000000701eb1234100000000000000 00000040c030c000b7f00000c000000047623ce041000000 4000000003180300f85b000003000000701eb12341000000 4000000003180300f85b000003000000701eb12341000000 0000000000000040c030c000b7f00000c000000047623ce04100000000000000 4000000003180300f85b000003000000701eb12341000000 00000040c030c000b7f00000c000000047623ce041000000 - {e=>30624,a=>65,d=>0,c=>53,h=>114,b=>1,g=>378284213,f=>2} 4100000001350000a077000002000000b5288c1672000000 410000000000000001350000a077000002000000b5288c167200000000000000 410000000000000001350000a077000002000000b5288c167200000000000000 00000041406a0000ef400000800000002d18516a72000000 4100000001350000a077000002000000b5288c1672000000 4100000001350000a077000002000000b5288c1672000000 0000000000000041406a0000ef400000800000002d18516a7200000000000000 4100000001350000a077000002000000b5288c1672000000 00000041406a0000ef400000800000002d18516a72000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>0} 00 00 00 00 00000000 00 00 00 00 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>1} 01 01 01 40 01000000 01 40 01 40 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>1,b=>60} 013c 013c 013c 4078 013c0000 013c 4078 013c 4078 - {a=>3,b=>93} 035d 035d 035d c0ba 035d0000 035d c0ba 035d c0ba - {a=>3,b=>13} 030d 030d 030d c01a 030d0000 030d c01a 030d c01a - {a=>0,b=>66} 0042 0042 0042 0084 00420000 0042 0084 0042 0084 - {a=>0,b=>56} 0038 0038 0038 0070 00380000 0038 0070 0038 0070 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>2,b=>26} 021a 021a 021a 8034 021a0000 021a 8034 021a 8034 - {a=>1,b=>51} 0133 0133 0133 4066 01330000 0133 4066 0133 4066 - {a=>0,b=>90} 005a 005a 005a 00b4 005a0000 005a 00b4 005a 00b4 - {a=>0,b=>63} 003f 003f 003f 007e 003f0000 003f 007e 003f 007e - {a=>3,b=>46} 032e 032e 032e c05c 032e0000 032e c05c 032e c05c = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>0,a=>3,b=>10} 030a0000 030a0000 030a0000 c0140000 030a0000 030a0000 c0140000 030a0000 c0140000 - {c=>2,a=>1,b=>22} 01160200 01160200 01160200 402c8000 01160200 01160200 402c8000 01160200 402c8000 - {c=>2,a=>3,b=>21} 03150200 03150200 03150200 c02a8000 03150200 03150200 c02a8000 03150200 c02a8000 - {c=>3,a=>1,b=>40} 01280300 01280300 01280300 4050c000 01280300 01280300 4050c000 01280300 4050c000 - {c=>3,a=>2,b=>35} 02230300 02230300 02230300 8046c000 02230300 02230300 8046c000 02230300 8046c000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>1,a=>3,b=>106,d=>4863} 036a0100ff12 036a0100ff12 036a0100ff12 c0d4400025fe 036a0100ff120000 036a0100ff12 c0d4400025fe 036a0100ff12 c0d4400025fe - {c=>2,a=>3,b=>103,d=>15834} 03670200da3d 03670200da3d 03670200da3d c0ce80007bb4 03670200da3d0000 03670200da3d c0ce80007bb4 03670200da3d c0ce80007bb4 - {c=>2,a=>0,b=>63,d=>15070} 003f0200de3a 003f0200de3a 003f0200de3a 007e800075bc 003f0200de3a0000 003f0200de3a 007e800075bc 003f0200de3a 007e800075bc - {c=>2,a=>3,b=>122,d=>25867} 037a02000b65 037a02000b65 037a02000b65 c0f48000ca16 037a02000b650000 037a02000b65 c0f48000ca16 037a02000b65 c0f48000ca16 - {c=>3,a=>3,b=>3,d=>19726} 030303000e4d 030303000e4d 030303000e4d c006c0009a1c 030303000e4d0000 030303000e4d c006c0009a1c 030303000e4d c006c0009a1c = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>3,a=>2,b=>61,d=>16632} 023d0300f8400000 023d0300f8400000 023d0300f8400000 807ac00081f00000 023d0300f8400000 023d0300f8400000 807ac00081f00000 023d0300f8400000 807ac00081f00000 - {c=>3,a=>2,b=>27,d=>3303} 021b0300e70c0000 021b0300e70c0000 021b0300e70c0000 8036c00019ce0000 021b0300e70c0000 021b0300e70c0000 8036c00019ce0000 021b0300e70c0000 8036c00019ce0000 - {c=>3,a=>0,b=>104,d=>32422} 00680300a67e0000 00680300a67e0000 00680300a67e0000 00d0c000fd4c0000 00680300a67e0000 00680300a67e0000 00d0c000fd4c0000 00680300a67e0000 00d0c000fd4c0000 - {c=>2,a=>2,b=>11,d=>4097} 020b020001100000 020b020001100000 020b020001100000 8016800020020000 020b020001100000 020b020001100000 8016800020020000 020b020001100000 8016800020020000 - {c=>0,a=>2,b=>22,d=>2075} 021600001b080000 021600001b080000 021600001b080000 802c000010360000 021600001b080000 021600001b080000 802c000010360000 021600001b080000 802c000010360000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>3,c=>2,a=>3,b=>70,d=>22538} 034602000a58000003000000 034602000a58000003000000 034602000a58000003000000 c08c8000b0140000c0000000 034602000a58000003000000 034602000a58000003000000 c08c8000b0140000c0000000 034602000a58000003000000 c08c8000b0140000c0000000 - {e=>1,c=>0,a=>2,b=>126,d=>20675} 027e0000c350000001000000 027e0000c350000001000000 027e0000c350000001000000 80fc0000a186000040000000 027e0000c350000001000000 027e0000c350000001000000 80fc0000a186000040000000 027e0000c350000001000000 80fc0000a186000040000000 - {e=>2,c=>0,a=>1,b=>97,d=>22568} 016100002858000002000000 016100002858000002000000 016100002858000002000000 40c20000b050000080000000 016100002858000002000000 016100002858000002000000 40c20000b050000080000000 016100002858000002000000 40c20000b050000080000000 - {e=>2,c=>0,a=>3,b=>84,d=>1178} 035400009a04000002000000 035400009a04000002000000 035400009a04000002000000 c0a800000934000080000000 035400009a04000002000000 035400009a04000002000000 c0a800000934000080000000 035400009a04000002000000 c0a800000934000080000000 - {e=>0,c=>3,a=>0,b=>125,d=>500} 007d0300f401000000000000 007d0300f401000000000000 007d0300f401000000000000 00fac00003e8000000000000 007d0300f401000000000000 007d0300f401000000000000 00fac00003e8000000000000 007d0300f401000000000000 00fac00003e8000000000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>3,c=>3,a=>1,b=>44,d=>24620,f=>1808311042} 012c03002c6000000300000002a3c86b 012c03002c6000000300000002a3c86b 012c03002c6000000300000002a3c86b 4058c000c0580000c0000000d7914604 012c03002c6000000300000002a3c86b 012c03002c6000000300000002a3c86b 4058c000c0580000c0000000d7914604 012c03002c6000000300000002a3c86b 4058c000c0580000c0000000d7914604 - {e=>1,c=>2,a=>1,b=>25,d=>25227,f=>801958710} 011902008b6200000100000036ebcc2f 011902008b6200000100000036ebcc2f 011902008b6200000100000036ebcc2f 40328000c5160000400000005f99d66c 011902008b6200000100000036ebcc2f 011902008b6200000100000036ebcc2f 40328000c5160000400000005f99d66c 011902008b6200000100000036ebcc2f 40328000c5160000400000005f99d66c - {e=>1,c=>3,a=>3,b=>101,d=>18705,f=>1451666857} 036503001149000001000000a9ad8656 036503001149000001000000a9ad8656 036503001149000001000000a9ad8656 c0cac0009222000040000000ad0d5b52 036503001149000001000000a9ad8656 036503001149000001000000a9ad8656 c0cac0009222000040000000ad0d5b52 036503001149000001000000a9ad8656 c0cac0009222000040000000ad0d5b52 - {e=>0,c=>1,a=>3,b=>11,d=>27785,f=>1658211394} 030b0100896c000000000000424cd662 030b0100896c000000000000424cd662 030b0100896c000000000000424cd662 c0164000d912000000000000c5ac9884 030b0100896c000000000000424cd662 030b0100896c000000000000424cd662 c0164000d912000000000000c5ac9884 030b0100896c000000000000424cd662 c0164000d912000000000000c5ac9884 - {e=>2,c=>3,a=>2,b=>99,d=>30270,f=>922018987} 026303003e76000002000000abe4f436 026303003e76000002000000abe4f436 026303003e76000002000000abe4f436 80c6c000ec7c0000800000006de9c956 026303003e76000002000000abe4f436 026303003e76000002000000abe4f436 80c6c000ec7c0000800000006de9c956 026303003e76000002000000abe4f436 80c6c000ec7c0000800000006de9c956 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>2,c=>1,a=>3,g=>159,b=>94,d=>10039,f=>410307155} 035e0100372700000200000053ca74189f000000 035e0100372700000200000053ca74189f000000 035e0100372700000200000053ca74189f000000 c0bc40004e6e00008000000030e994a69f000000 035e0100372700000200000053ca74189f000000 035e0100372700000200000053ca74189f000000 c0bc40004e6e00008000000030e994a69f000000 035e0100372700000200000053ca74189f000000 c0bc40004e6e00008000000030e994a69f000000 - {e=>2,c=>1,a=>2,g=>50,b=>106,d=>11247,f=>668484590} 026a0100ef2b000002000000ee43d82732000000 026a0100ef2b000002000000ee43d82732000000 026a0100ef2b000002000000ee43d82732000000 80d4400057de0000800000004fb087dc32000000 026a0100ef2b000002000000ee43d82732000000 026a0100ef2b000002000000ee43d82732000000 80d4400057de0000800000004fb087dc32000000 026a0100ef2b000002000000ee43d82732000000 80d4400057de0000800000004fb087dc32000000 - {e=>0,c=>0,a=>3,g=>181,b=>49,d=>12908,f=>38446332} 033100006c32000000000000fca44a02b5000000 033100006c32000000000000fca44a02b5000000 033100006c32000000000000fca44a02b5000000 c062000064d8000000000000049549f8b5000000 033100006c32000000000000fca44a02b5000000 033100006c32000000000000fca44a02b5000000 c062000064d8000000000000049549f8b5000000 033100006c32000000000000fca44a02b5000000 c062000064d8000000000000049549f8b5000000 - {e=>0,c=>2,a=>0,g=>106,b=>119,d=>27698,f=>1629435493} 00770200326c00000000000065361f616a000000 00770200326c00000000000065361f616a000000 00770200326c00000000000065361f616a000000 00ee8000d864000000000000c23e6cca6a000000 00770200326c00000000000065361f616a000000 00770200326c00000000000065361f616a000000 00ee8000d864000000000000c23e6cca6a000000 00770200326c00000000000065361f616a000000 00ee8000d864000000000000c23e6cca6a000000 - {e=>3,c=>2,a=>3,g=>36,b=>28,d=>17585,f=>1462750237} 031c0200b1440000030000001dcc2f5724000000 031c0200b1440000030000001dcc2f5724000000 031c0200b1440000030000001dcc2f5724000000 c038800089620000c0000000ae5f983a24000000 031c0200b1440000030000001dcc2f5724000000 031c0200b1440000030000001dcc2f5724000000 c038800089620000c0000000ae5f983a24000000 031c0200b1440000030000001dcc2f5724000000 c038800089620000c0000000ae5f983a24000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>97,b=>0} 6100 6100 6100 6100 61000000 6100 6100 6100 6100 - {a=>-113,b=>1} 8f01 8f01 8f01 8f40 8f010000 8f01 8f40 8f01 8f40 - {a=>97,b=>1} 6101 6101 6101 6140 61010000 6101 6140 6101 6140 - {a=>43,b=>0} 2b00 2b00 2b00 2b00 2b000000 2b00 2b00 2b00 2b00 - {a=>8,b=>2} 0802 0802 0802 0880 08020000 0802 0880 0802 0880 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>121,a=>95,b=>1} 5f0179 5f0179 5f0179 5f40f2 5f017900 5f0179 5f40f2 5f0179 5f40f2 - {c=>47,a=>-39,b=>1} d9012f d9012f d9012f d9405e d9012f00 d9012f d9405e d9012f d9405e - {c=>126,a=>-116,b=>3} 8c037e 8c037e 8c037e 8cc0fc 8c037e00 8c037e 8cc0fc 8c037e 8cc0fc - {c=>60,a=>-8,b=>3} f8033c f8033c f8033c f8c078 f8033c00 f8033c f8c078 f8033c f8c078 - {c=>50,a=>-3,b=>3} fd0332 fd0332 fd0332 fdc064 fd033200 fd0332 fdc064 fd0332 fdc064 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>91,a=>-79,b=>2} b1025b00 b1025b00 b1025b00 b180b600 b1025b00 b1025b00 b180b600 b1025b00 b180b600 - {c=>51,a=>-12,b=>1} f4013300 f4013300 f4013300 f4406600 f4013300 f4013300 f4406600 f4013300 f4406600 - {c=>113,a=>104,b=>2} 68027100 68027100 68027100 6880e200 68027100 68027100 6880e200 68027100 6880e200 - {c=>40,a=>105,b=>3} 69032800 69032800 69032800 69c05000 69032800 69032800 69c05000 69032800 69c05000 - {c=>3,a=>-77,b=>3} b3030300 b3030300 b3030300 b3c00600 b3030300 b3030300 b3c00600 b3030300 b3c00600 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>80,a=>-57,b=>1,d=>2} c70150000200 c70150000200 c70150000200 c740a0008000 c701500002000000 c70150000200 c740a0008000 c70150000200 c740a0008000 - {c=>73,a=>13,b=>2,d=>0} 0d0249000000 0d0249000000 0d0249000000 0d8092000000 0d02490000000000 0d0249000000 0d8092000000 0d0249000000 0d8092000000 - {c=>36,a=>-29,b=>0,d=>0} e30024000000 e30024000000 e30024000000 e30048000000 e300240000000000 e30024000000 e30048000000 e30024000000 e30048000000 - {c=>123,a=>-35,b=>1,d=>3} dd017b000300 dd017b000300 dd017b000300 dd40f600c000 dd017b0003000000 dd017b000300 dd40f600c000 dd017b000300 dd40f600c000 - {c=>124,a=>10,b=>3,d=>0} 0a037c000000 0a037c000000 0a037c000000 0ac0f8000000 0a037c0000000000 0a037c000000 0ac0f8000000 0a037c000000 0ac0f8000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>28834,c=>110,a=>-15,b=>3,d=>3} f1036e000300a270 f1036e000300a270 f1036e000300a270 f1c0dc00c000e144 f1036e000300a270 f1036e000300a270 f1c0dc00c000e144 f1036e000300a270 f1c0dc00c000e144 - {e=>1691,c=>38,a=>110,b=>1,d=>3} 6e01260003009b06 6e01260003009b06 6e01260003009b06 6e404c00c0000d36 6e01260003009b06 6e01260003009b06 6e404c00c0000d36 6e01260003009b06 6e404c00c0000d36 - {e=>28902,c=>77,a=>121,b=>0,d=>0} 79004d000000e670 79004d000000e670 79004d000000e670 79009a000000e1cc 79004d000000e670 79004d000000e670 79009a000000e1cc 79004d000000e670 79009a000000e1cc - {e=>5288,c=>45,a=>70,b=>1,d=>3} 46012d000300a814 46012d000300a814 46012d000300a814 46405a00c0002950 46012d000300a814 46012d000300a814 46405a00c0002950 46012d000300a814 46405a00c0002950 - {e=>5983,c=>60,a=>35,b=>2,d=>1} 23023c0001005f17 23023c0001005f17 23023c0001005f17 2380780040002ebe 23023c0001005f17 23023c0001005f17 2380780040002ebe 23023c0001005f17 2380780040002ebe = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>22747,c=>99,a=>17,b=>0,d=>3} 110063000300db58 110063000300db58 110063000300db58 1100c600c000b1b6 110063000300db58 110063000300db58 1100c600c000b1b6 110063000300db58 1100c600c000b1b6 - {e=>8890,c=>116,a=>111,b=>3,d=>0} 6f0374000000ba22 6f0374000000ba22 6f0374000000ba22 6fc0e80000004574 6f0374000000ba22 6f0374000000ba22 6fc0e80000004574 6f0374000000ba22 6fc0e80000004574 - {e=>26859,c=>36,a=>-47,b=>3,d=>0} d10324000000eb68 d10324000000eb68 d10324000000eb68 d1c048000000d1d6 d10324000000eb68 d10324000000eb68 d1c048000000d1d6 d10324000000eb68 d1c048000000d1d6 - {e=>4561,c=>1,a=>-82,b=>1,d=>2} ae0101000200d111 ae0101000200d111 ae0101000200d111 ae400200800023a2 ae0101000200d111 ae0101000200d111 ae400200800023a2 ae0101000200d111 ae400200800023a2 - {e=>862,c=>125,a=>22,b=>1,d=>3} 16017d0003005e03 16017d0003005e03 16017d0003005e03 1640fa00c00006bc 16017d0003005e03 16017d0003005e03 1640fa00c00006bc 16017d0003005e03 1640fa00c00006bc = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>7083,c=>105,a=>101,b=>1,d=>1,f=>1} 650169000100ab1b01000000 650169000100ab1b01000000 650169000100ab1b01000000 6540d2004000375640000000 650169000100ab1b01000000 650169000100ab1b01000000 6540d2004000375640000000 650169000100ab1b01000000 6540d2004000375640000000 - {e=>26777,c=>7,a=>85,b=>2,d=>2,f=>0} 550207000200996800000000 550207000200996800000000 550207000200996800000000 55800e008000d13200000000 550207000200996800000000 550207000200996800000000 55800e008000d13200000000 550207000200996800000000 55800e008000d13200000000 - {e=>2370,c=>62,a=>-56,b=>3,d=>0,f=>0} c8033e000000420900000000 c8033e000000420900000000 c8033e000000420900000000 c8c07c000000128400000000 c8033e000000420900000000 c8033e000000420900000000 c8c07c000000128400000000 c8033e000000420900000000 c8c07c000000128400000000 - {e=>17701,c=>23,a=>112,b=>0,d=>2,f=>0} 700017000200254500000000 700017000200254500000000 700017000200254500000000 70002e0080008a4a00000000 700017000200254500000000 700017000200254500000000 70002e0080008a4a00000000 700017000200254500000000 70002e0080008a4a00000000 - {e=>7327,c=>107,a=>105,b=>0,d=>1,f=>1} 69006b0001009f1c01000000 69006b0001009f1c01000000 69006b0001009f1c01000000 6900d6004000393e40000000 69006b0001009f1c01000000 69006b0001009f1c01000000 6900d6004000393e40000000 69006b0001009f1c01000000 6900d6004000393e40000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>25941,c=>65,a=>-78,g=>738858833,b=>0,d=>1,f=>3} b2004100010055650300000051170a2c b2004100010055650300000051170a2c b2004100010055650300000051170a2c b20082004000caaac000000058142ea2 b2004100010055650300000051170a2c b2004100010055650300000051170a2c b20082004000caaac000000058142ea2 b2004100010055650300000051170a2c b20082004000caaac000000058142ea2 - {e=>16369,c=>84,a=>23,g=>253726160,b=>2,d=>3,f=>0} 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 1780a800c0007fe2000000001e3f1ba0 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 1780a800c0007fe2000000001e3f1ba0 170254000300f13f00000000d08d1f0f 1780a800c0007fe2000000001e3f1ba0 - {e=>20549,c=>68,a=>-90,g=>1840050508,b=>0,d=>3,f=>2} a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a6008800c000a08a80000000db59e298 a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a6008800c000a08a80000000db59e298 a600440003004550020000004cf1ac6d a6008800c000a08a80000000db59e298 - {e=>4229,c=>122,a=>68,g=>163350911,b=>3,d=>1,f=>3} 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44c0f4004000210ac0000000137912fe 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44c0f4004000210ac0000000137912fe 44037a0001008510030000007f89bc09 44c0f4004000210ac0000000137912fe - {e=>2131,c=>18,a=>-48,g=>1460988621,b=>3,d=>3,f=>1} d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d0c02400c00010a640000000ae29d59a d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d0c02400c00010a640000000ae29d59a d00312000300530801000000cdea1457 d0c02400c00010a640000000ae29d59a = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>28672,a=>-38,d=>3,c=>3,h=>230,b=>0,g=>1572591659,f=>3} da00030003000070030000002bd8bb5de6000000 da00030003000070030000002bd8bb5de6000000 da00030003000070030000002bd8bb5de6000000 da000600c000e000c0000000bb77b056e6000000 da00030003000070030000002bd8bb5de6000000 da00030003000070030000002bd8bb5de6000000 da000600c000e000c0000000bb77b056e6000000 da00030003000070030000002bd8bb5de6000000 da000600c000e000c0000000bb77b056e6000000 - {e=>21420,a=>6,d=>3,c=>126,h=>29,b=>1,g=>1987843785,f=>2} 06017e000300ac5302000000c9167c761d000000 06017e000300ac5302000000c9167c761d000000 06017e000300ac5302000000c9167c761d000000 0640fc00c000a75880000000ecf82d921d000000 06017e000300ac5302000000c9167c761d000000 06017e000300ac5302000000c9167c761d000000 0640fc00c000a75880000000ecf82d921d000000 06017e000300ac5302000000c9167c761d000000 0640fc00c000a75880000000ecf82d921d000000 - {e=>24974,a=>83,d=>3,c=>26,h=>197,b=>0,g=>375167546,f=>0} 53001a0003008e61000000003a9a5c16c5000000 53001a0003008e61000000003a9a5c16c5000000 53001a0003008e61000000003a9a5c16c5000000 53003400c000c31c000000002cb93474c5000000 53001a0003008e61000000003a9a5c16c5000000 53001a0003008e61000000003a9a5c16c5000000 53003400c000c31c000000002cb93474c5000000 53001a0003008e61000000003a9a5c16c5000000 53003400c000c31c000000002cb93474c5000000 - {e=>10987,a=>91,d=>0,c=>96,h=>171,b=>1,g=>1441248927,f=>3} 5b0160000000eb2a030000009fb6e755ab000000 5b0160000000eb2a030000009fb6e755ab000000 5b0160000000eb2a030000009fb6e755ab000000 5b40c000000055d6c0000000abcf6d3eab000000 5b0160000000eb2a030000009fb6e755ab000000 5b0160000000eb2a030000009fb6e755ab000000 5b40c000000055d6c0000000abcf6d3eab000000 5b0160000000eb2a030000009fb6e755ab000000 5b40c000000055d6c0000000abcf6d3eab000000 - {e=>7107,a=>62,d=>3,c=>84,h=>49,b=>0,g=>1539603978,f=>0} 3e0054000300c31b000000000a7ec45b31000000 3e0054000300c31b000000000a7ec45b31000000 3e0054000300c31b000000000a7ec45b31000000 3e00a800c000378600000000b788fc1431000000 3e0054000300c31b000000000a7ec45b31000000 3e0054000300c31b000000000a7ec45b31000000 3e00a800c000378600000000b788fc1431000000 3e0054000300c31b000000000a7ec45b31000000 3e00a800c000378600000000b788fc1431000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>-78,b=>1} b2ff0100 b2ff0100 b2ff0100 ffb24000 b2ff0100 b2ff0100 ffb24000 b2ff0100 ffb24000 - {a=>-18,b=>2} eeff0200 eeff0200 eeff0200 ffee8000 eeff0200 eeff0200 ffee8000 eeff0200 ffee8000 - {a=>3,b=>3} 03000300 03000300 03000300 0003c000 03000300 03000300 0003c000 03000300 0003c000 - {a=>-8,b=>0} f8ff0000 f8ff0000 f8ff0000 fff80000 f8ff0000 f8ff0000 fff80000 f8ff0000 fff80000 - {a=>114,b=>1} 72000100 72000100 72000100 00724000 72000100 72000100 00724000 72000100 00724000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>46,a=>40,b=>3} 2800032e 2800032e 2800032e 0028c05c 2800032e 2800032e 0028c05c 2800032e 0028c05c - {c=>26,a=>116,b=>1} 7400011a 7400011a 7400011a 00744034 7400011a 7400011a 00744034 7400011a 00744034 - {c=>116,a=>-66,b=>3} beff0374 beff0374 beff0374 ffbec0e8 beff0374 beff0374 ffbec0e8 beff0374 ffbec0e8 - {c=>45,a=>-35,b=>2} ddff022d ddff022d ddff022d ffdd805a ddff022d ddff022d ffdd805a ddff022d ffdd805a - {c=>30,a=>75,b=>3} 4b00031e 4b00031e 4b00031e 004bc03c 4b00031e 4b00031e 004bc03c 4b00031e 004bc03c = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>51,a=>56,b=>2} 38000233 38000233 38000233 00388066 38000233 38000233 00388066 38000233 00388066 - {c=>76,a=>38,b=>0} 2600004c 2600004c 2600004c 00260098 2600004c 2600004c 00260098 2600004c 00260098 - {c=>31,a=>-74,b=>3} b6ff031f b6ff031f b6ff031f ffb6c03e b6ff031f b6ff031f ffb6c03e b6ff031f ffb6c03e - {c=>95,a=>53,b=>0} 3500005f 3500005f 3500005f 003500be 3500005f 3500005f 003500be 3500005f 003500be - {c=>65,a=>-118,b=>2} 8aff0241 8aff0241 8aff0241 ff8a8082 8aff0241 8aff0241 ff8a8082 8aff0241 ff8a8082 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>104,a=>-99,b=>1,d=>3} 9dff01680300 9dff01680300 9dff01680300 ff9d40d0c000 9dff016803000000 9dff01680300 ff9d40d0c000 9dff01680300 ff9d40d0c000 - {c=>113,a=>-77,b=>0,d=>3} b3ff00710300 b3ff00710300 b3ff00710300 ffb300e2c000 b3ff007103000000 b3ff00710300 ffb300e2c000 b3ff00710300 ffb300e2c000 - {c=>38,a=>119,b=>1,d=>3} 770001260300 770001260300 770001260300 0077404cc000 7700012603000000 770001260300 0077404cc000 770001260300 0077404cc000 - {c=>120,a=>-5,b=>0,d=>0} fbff00780000 fbff00780000 fbff00780000 fffb00f00000 fbff007800000000 fbff00780000 fffb00f00000 fbff00780000 fffb00f00000 - {c=>94,a=>-19,b=>3,d=>2} edff035e0200 edff035e0200 edff035e0200 ffedc0bc8000 edff035e02000000 edff035e0200 ffedc0bc8000 edff035e0200 ffedc0bc8000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>9932,c=>43,a=>-80,b=>2,d=>3} b0ff022b0300cc26 b0ff022b0300cc26 b0ff022b0300cc26 ffb08056c0004d98 b0ff022b0300cc26 b0ff022b0300cc26 ffb08056c0004d98 b0ff022b0300cc26 ffb08056c0004d98 - {e=>30764,c=>117,a=>-54,b=>0,d=>2} caff007502002c78 caff007502002c78 caff007502002c78 ffca00ea8000f058 caff007502002c78 caff007502002c78 ffca00ea8000f058 caff007502002c78 ffca00ea8000f058 - {e=>13093,c=>118,a=>118,b=>3,d=>0} 7600037600002533 7600037600002533 7600037600002533 0076c0ec0000664a 7600037600002533 7600037600002533 0076c0ec0000664a 7600037600002533 0076c0ec0000664a - {e=>20007,c=>75,a=>-56,b=>3,d=>2} c8ff034b0200274e c8ff034b0200274e c8ff034b0200274e ffc8c09680009c4e c8ff034b0200274e c8ff034b0200274e ffc8c09680009c4e c8ff034b0200274e ffc8c09680009c4e - {e=>29692,c=>120,a=>45,b=>1,d=>3} 2d0001780300fc73 2d0001780300fc73 2d0001780300fc73 002d40f0c000e7f8 2d0001780300fc73 2d0001780300fc73 002d40f0c000e7f8 2d0001780300fc73 002d40f0c000e7f8 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>1707,c=>51,a=>-92,b=>2,d=>0} a4ff02330000ab06 a4ff02330000ab06 a4ff02330000ab06 ffa4806600000d56 a4ff02330000ab06 a4ff02330000ab06 ffa4806600000d56 a4ff02330000ab06 ffa4806600000d56 - {e=>22195,c=>16,a=>-106,b=>0,d=>3} 96ff00100300b356 96ff00100300b356 96ff00100300b356 ff960020c000ad66 96ff00100300b356 96ff00100300b356 ff960020c000ad66 96ff00100300b356 ff960020c000ad66 - {e=>26092,c=>101,a=>-52,b=>3,d=>0} ccff03650000ec65 ccff03650000ec65 ccff03650000ec65 ffccc0ca0000cbd8 ccff03650000ec65 ccff03650000ec65 ffccc0ca0000cbd8 ccff03650000ec65 ffccc0ca0000cbd8 - {e=>10767,c=>23,a=>120,b=>3,d=>0} 7800031700000f2a 7800031700000f2a 7800031700000f2a 0078c02e0000541e 7800031700000f2a 7800031700000f2a 0078c02e0000541e 7800031700000f2a 0078c02e0000541e - {e=>22371,c=>42,a=>97,b=>0,d=>3} 6100002a03006357 6100002a03006357 6100002a03006357 00610054c000aec6 6100002a03006357 6100002a03006357 00610054c000aec6 6100002a03006357 00610054c000aec6 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>5426,c=>73,a=>107,b=>1,d=>2,f=>3} 6b0001490200321503000000 6b0001490200321503000000 6b0001490200321503000000 006b409280002a64c0000000 6b0001490200321503000000 6b0001490200321503000000 006b409280002a64c0000000 6b0001490200321503000000 006b409280002a64c0000000 - {e=>25684,c=>82,a=>-99,b=>3,d=>2,f=>1} 9dff03520200546401000000 9dff03520200546401000000 9dff03520200546401000000 ff9dc0a48000c8a840000000 9dff03520200546401000000 9dff03520200546401000000 ff9dc0a48000c8a840000000 9dff03520200546401000000 ff9dc0a48000c8a840000000 - {e=>5420,c=>23,a=>75,b=>2,d=>1,f=>0} 4b00021701002c1500000000 4b00021701002c1500000000 4b00021701002c1500000000 004b802e40002a5800000000 4b00021701002c1500000000 4b00021701002c1500000000 004b802e40002a5800000000 4b00021701002c1500000000 004b802e40002a5800000000 - {e=>2354,c=>11,a=>-63,b=>0,d=>1,f=>3} c1ff000b0100320903000000 c1ff000b0100320903000000 c1ff000b0100320903000000 ffc1001640001264c0000000 c1ff000b0100320903000000 c1ff000b0100320903000000 ffc1001640001264c0000000 c1ff000b0100320903000000 ffc1001640001264c0000000 - {e=>14868,c=>64,a=>-6,b=>1,d=>3,f=>0} faff01400300143a00000000 faff01400300143a00000000 faff01400300143a00000000 fffa4080c000742800000000 faff01400300143a00000000 faff01400300143a00000000 fffa4080c000742800000000 faff01400300143a00000000 fffa4080c000742800000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7432,c=>46,a=>-97,g=>1876506977,b=>1,d=>2,f=>0} 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f ff9f405c80003a1000000000dfb272c2 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f ff9f405c80003a1000000000dfb272c2 9fff012e0200081d000000006139d96f ff9f405c80003a1000000000dfb272c2 - {e=>19949,c=>124,a=>32,g=>396727791,b=>2,d=>1,f=>2} 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 002080f840009bda800000002f4b2bde 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 002080f840009bda800000002f4b2bde 2000027c0100ed4d02000000ef95a517 002080f840009bda800000002f4b2bde - {e=>1774,c=>10,a=>110,g=>861455959,b=>0,d=>3,f=>3} 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 006e0014c0000ddcc000000066b18cae 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 006e0014c0000ddcc000000066b18cae 6e00000a0300ee060300000057c65833 006e0014c0000ddcc000000066b18cae - {e=>17159,c=>124,a=>-113,g=>2079899019,b=>2,d=>3,f=>0} 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b ff8f80f8c000860e00000000f7f17b16 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b ff8f80f8c000860e00000000f7f17b16 8fff027c03000743000000008bbdf87b ff8f80f8c000860e00000000f7f17b16 - {e=>30127,c=>49,a=>-70,g=>1975146991,b=>0,d=>0,f=>3} baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 ffba00620000eb5ec0000000eb74b3de baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 ffba00620000eb5ec0000000eb74b3de baff00310000af7503000000ef59ba75 ffba00620000eb5ec0000000eb74b3de = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>3,a=>85,d=>1,c=>69,h=>236,b=>0,g=>486067682,f=>2} 550000450100030002000000e2cdf81cec000000 550000450100030002000000e2cdf81cec000000 550000450100030002000000e2cdf81cec000000 0055008a400000068000000039f19bc4ec000000 550000450100030002000000e2cdf81cec000000 550000450100030002000000e2cdf81cec000000 0055008a400000068000000039f19bc4ec000000 550000450100030002000000e2cdf81cec000000 0055008a400000068000000039f19bc4ec000000 - {e=>30273,a=>-71,d=>3,c=>51,h=>105,b=>2,g=>1361574005,f=>3} b9ff0233030041760300000075f8275169000000 b9ff0233030041760300000075f8275169000000 b9ff0233030041760300000075f8275169000000 ffb98066c000ec82c0000000a24ff0ea69000000 b9ff0233030041760300000075f8275169000000 b9ff0233030041760300000075f8275169000000 ffb98066c000ec82c0000000a24ff0ea69000000 b9ff0233030041760300000075f8275169000000 ffb98066c000ec82c0000000a24ff0ea69000000 - {e=>25503,a=>-67,d=>3,c=>19,h=>175,b=>1,g=>190963807,f=>1} bdff011303009f63010000005fe0610baf000000 bdff011303009f63010000005fe0610baf000000 bdff011303009f63010000005fe0610baf000000 ffbd4026c000c73e4000000016c3c0beaf000000 bdff011303009f63010000005fe0610baf000000 bdff011303009f63010000005fe0610baf000000 ffbd4026c000c73e4000000016c3c0beaf000000 bdff011303009f63010000005fe0610baf000000 ffbd4026c000c73e4000000016c3c0beaf000000 - {e=>18177,a=>-30,d=>1,c=>47,h=>200,b=>1,g=>976748818,f=>3} e2ff012f01000147030000001201383ac8000000 e2ff012f01000147030000001201383ac8000000 e2ff012f01000147030000001201383ac8000000 ffe2405e40008e02c000000074700224c8000000 e2ff012f01000147030000001201383ac8000000 e2ff012f01000147030000001201383ac8000000 ffe2405e40008e02c000000074700224c8000000 e2ff012f01000147030000001201383ac8000000 ffe2405e40008e02c000000074700224c8000000 - {e=>29900,a=>97,d=>1,c=>20,h=>124,b=>0,g=>261624382,f=>3} 610000140100cc74030000003e12980f7c000000 610000140100cc74030000003e12980f7c000000 610000140100cc74030000003e12980f7c000000 006100284000e998c00000001f30247c7c000000 610000140100cc74030000003e12980f7c000000 610000140100cc74030000003e12980f7c000000 006100284000e998c00000001f30247c7c000000 610000140100cc74030000003e12980f7c000000 006100284000e998c00000001f30247c7c000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>-90,b=>3} a6ffffff03000000 a6ffffff03000000 a6ffffff03000000 ffffffa6c0000000 a6ffffff03000000 a6ffffff03000000 ffffffa6c0000000 a6ffffff03000000 ffffffa6c0000000 - {a=>41,b=>1} 2900000001000000 2900000001000000 2900000001000000 0000002940000000 2900000001000000 2900000001000000 0000002940000000 2900000001000000 0000002940000000 - {a=>-89,b=>0} a7ffffff00000000 a7ffffff00000000 a7ffffff00000000 ffffffa700000000 a7ffffff00000000 a7ffffff00000000 ffffffa700000000 a7ffffff00000000 ffffffa700000000 - {a=>96,b=>0} 6000000000000000 6000000000000000 6000000000000000 0000006000000000 6000000000000000 6000000000000000 0000006000000000 6000000000000000 0000006000000000 - {a=>-20,b=>3} ecffffff03000000 ecffffff03000000 ecffffff03000000 ffffffecc0000000 ecffffff03000000 ecffffff03000000 ffffffecc0000000 ecffffff03000000 ffffffecc0000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>30,a=>-27,b=>1} e5ffffff011e0000 e5ffffff011e0000 e5ffffff011e0000 ffffffe5403c0000 e5ffffff011e0000 e5ffffff011e0000 ffffffe5403c0000 e5ffffff011e0000 ffffffe5403c0000 - {c=>124,a=>-69,b=>0} bbffffff007c0000 bbffffff007c0000 bbffffff007c0000 ffffffbb00f80000 bbffffff007c0000 bbffffff007c0000 ffffffbb00f80000 bbffffff007c0000 ffffffbb00f80000 - {c=>28,a=>-28,b=>0} e4ffffff001c0000 e4ffffff001c0000 e4ffffff001c0000 ffffffe400380000 e4ffffff001c0000 e4ffffff001c0000 ffffffe400380000 e4ffffff001c0000 ffffffe400380000 - {c=>99,a=>50,b=>0} 3200000000630000 3200000000630000 3200000000630000 0000003200c60000 3200000000630000 3200000000630000 0000003200c60000 3200000000630000 0000003200c60000 - {c=>63,a=>-67,b=>3} bdffffff033f0000 bdffffff033f0000 bdffffff033f0000 ffffffbdc07e0000 bdffffff033f0000 bdffffff033f0000 ffffffbdc07e0000 bdffffff033f0000 ffffffbdc07e0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>26,a=>-54,b=>2} caffffff021a0000 caffffff021a0000 caffffff021a0000 ffffffca80340000 caffffff021a0000 caffffff021a0000 ffffffca80340000 caffffff021a0000 ffffffca80340000 - {c=>38,a=>126,b=>2} 7e00000002260000 7e00000002260000 7e00000002260000 0000007e804c0000 7e00000002260000 7e00000002260000 0000007e804c0000 7e00000002260000 0000007e804c0000 - {c=>107,a=>-7,b=>0} f9ffffff006b0000 f9ffffff006b0000 f9ffffff006b0000 fffffff900d60000 f9ffffff006b0000 f9ffffff006b0000 fffffff900d60000 f9ffffff006b0000 fffffff900d60000 - {c=>13,a=>98,b=>3} 62000000030d0000 62000000030d0000 62000000030d0000 00000062c01a0000 62000000030d0000 62000000030d0000 00000062c01a0000 62000000030d0000 00000062c01a0000 - {c=>97,a=>84,b=>2} 5400000002610000 5400000002610000 5400000002610000 0000005480c20000 5400000002610000 5400000002610000 0000005480c20000 5400000002610000 0000005480c20000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>110,a=>-46,b=>1,d=>2} d2ffffff016e0200 d2ffffff016e0200 d2ffffff016e0200 ffffffd240dc8000 d2ffffff016e0200 d2ffffff016e0200 ffffffd240dc8000 d2ffffff016e0200 ffffffd240dc8000 - {c=>99,a=>-7,b=>1,d=>1} f9ffffff01630100 f9ffffff01630100 f9ffffff01630100 fffffff940c64000 f9ffffff01630100 f9ffffff01630100 fffffff940c64000 f9ffffff01630100 fffffff940c64000 - {c=>88,a=>-1,b=>1,d=>2} ffffffff01580200 ffffffff01580200 ffffffff01580200 ffffffff40b08000 ffffffff01580200 ffffffff01580200 ffffffff40b08000 ffffffff01580200 ffffffff40b08000 - {c=>65,a=>-40,b=>0,d=>2} d8ffffff00410200 d8ffffff00410200 d8ffffff00410200 ffffffd800828000 d8ffffff00410200 d8ffffff00410200 ffffffd800828000 d8ffffff00410200 ffffffd800828000 - {c=>59,a=>-76,b=>0,d=>0} b4ffffff003b0000 b4ffffff003b0000 b4ffffff003b0000 ffffffb400760000 b4ffffff003b0000 b4ffffff003b0000 ffffffb400760000 b4ffffff003b0000 ffffffb400760000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>32442,c=>51,a=>3,b=>0,d=>0} 0300000000330000ba7e0000 0300000000330000ba7e0000 0300000000330000ba7e0000 0000000300660000fd740000 0300000000330000ba7e0000 0300000000330000ba7e0000 0000000300660000fd740000 0300000000330000ba7e0000 0000000300660000fd740000 - {e=>9995,c=>67,a=>48,b=>2,d=>2} 30000000024302000b270000 30000000024302000b270000 30000000024302000b270000 00000030808680004e160000 30000000024302000b270000 30000000024302000b270000 00000030808680004e160000 30000000024302000b270000 00000030808680004e160000 - {e=>29590,c=>74,a=>75,b=>0,d=>2} 4b000000004a020096730000 4b000000004a020096730000 4b000000004a020096730000 0000004b00948000e72c0000 4b000000004a020096730000 4b000000004a020096730000 0000004b00948000e72c0000 4b000000004a020096730000 0000004b00948000e72c0000 - {e=>31156,c=>54,a=>-49,b=>1,d=>3} cfffffff01360300b4790000 cfffffff01360300b4790000 cfffffff01360300b4790000 ffffffcf406cc000f3680000 cfffffff01360300b4790000 cfffffff01360300b4790000 ffffffcf406cc000f3680000 cfffffff01360300b4790000 ffffffcf406cc000f3680000 - {e=>29653,c=>12,a=>-35,b=>3,d=>0} ddffffff030c0000d5730000 ddffffff030c0000d5730000 ddffffff030c0000d5730000 ffffffddc0180000e7aa0000 ddffffff030c0000d5730000 ddffffff030c0000d5730000 ffffffddc0180000e7aa0000 ddffffff030c0000d5730000 ffffffddc0180000e7aa0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>29970,c=>42,a=>-35,b=>0,d=>2} ddffffff002a020012750000 ddffffff002a020012750000 ddffffff002a020012750000 ffffffdd00548000ea240000 ddffffff002a020012750000 ddffffff002a020012750000 ffffffdd00548000ea240000 ddffffff002a020012750000 ffffffdd00548000ea240000 - {e=>5805,c=>46,a=>15,b=>0,d=>0} 0f000000002e0000ad160000 0f000000002e0000ad160000 0f000000002e0000ad160000 0000000f005c00002d5a0000 0f000000002e0000ad160000 0f000000002e0000ad160000 0000000f005c00002d5a0000 0f000000002e0000ad160000 0000000f005c00002d5a0000 - {e=>32451,c=>91,a=>82,b=>3,d=>1} 52000000035b0100c37e0000 52000000035b0100c37e0000 52000000035b0100c37e0000 00000052c0b64000fd860000 52000000035b0100c37e0000 52000000035b0100c37e0000 00000052c0b64000fd860000 52000000035b0100c37e0000 00000052c0b64000fd860000 - {e=>4579,c=>50,a=>-33,b=>2,d=>1} dfffffff02320100e3110000 dfffffff02320100e3110000 dfffffff02320100e3110000 ffffffdf8064400023c60000 dfffffff02320100e3110000 dfffffff02320100e3110000 ffffffdf8064400023c60000 dfffffff02320100e3110000 ffffffdf8064400023c60000 - {e=>21164,c=>115,a=>-64,b=>0,d=>2} c0ffffff00730200ac520000 c0ffffff00730200ac520000 c0ffffff00730200ac520000 ffffffc000e68000a5580000 c0ffffff00730200ac520000 c0ffffff00730200ac520000 ffffffc000e68000a5580000 c0ffffff00730200ac520000 ffffffc000e68000a5580000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>23029,c=>127,a=>-67,b=>1,d=>3,f=>0} bdffffff017f0300f559000000000000 bdffffff017f0300f559000000000000 bdffffff017f0300f559000000000000 ffffffbd40fec000b3ea000000000000 bdffffff017f0300f559000000000000 bdffffff017f0300f559000000000000 ffffffbd40fec000b3ea000000000000 bdffffff017f0300f559000000000000 ffffffbd40fec000b3ea000000000000 - {e=>16590,c=>24,a=>-103,b=>2,d=>3,f=>0} 99ffffff02180300ce40000000000000 99ffffff02180300ce40000000000000 99ffffff02180300ce40000000000000 ffffff998030c000819c000000000000 99ffffff02180300ce40000000000000 99ffffff02180300ce40000000000000 ffffff998030c000819c000000000000 99ffffff02180300ce40000000000000 ffffff998030c000819c000000000000 - {e=>6342,c=>83,a=>-124,b=>3,d=>2,f=>3} 84ffffff03530200c618000003000000 84ffffff03530200c618000003000000 84ffffff03530200c618000003000000 ffffff84c0a68000318c0000c0000000 84ffffff03530200c618000003000000 84ffffff03530200c618000003000000 ffffff84c0a68000318c0000c0000000 84ffffff03530200c618000003000000 ffffff84c0a68000318c0000c0000000 - {e=>20449,c=>25,a=>51,b=>1,d=>2,f=>0} 3300000001190200e14f000000000000 3300000001190200e14f000000000000 3300000001190200e14f000000000000 00000033403280009fc2000000000000 3300000001190200e14f000000000000 3300000001190200e14f000000000000 00000033403280009fc2000000000000 3300000001190200e14f000000000000 00000033403280009fc2000000000000 - {e=>6146,c=>52,a=>40,b=>2,d=>0,f=>3} 28000000023400000218000003000000 28000000023400000218000003000000 28000000023400000218000003000000 000000288068000030040000c0000000 28000000023400000218000003000000 28000000023400000218000003000000 000000288068000030040000c0000000 28000000023400000218000003000000 000000288068000030040000c0000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>3892,c=>48,a=>-46,g=>316743879,b=>2,d=>1,f=>3} d2ffffff02300100340f000003000000c720e112 d2ffffff02300100340f000003000000c720e112 d2ffffff02300100340f000003000000c720e112 ffffffd2806040001e680000c000000025c2418e d2ffffff02300100340f000003000000c720e112 d2ffffff02300100340f000003000000c720e112 ffffffd2806040001e680000c000000025c2418e d2ffffff02300100340f000003000000c720e112 ffffffd2806040001e680000c000000025c2418e - {e=>26400,c=>46,a=>-27,g=>151740613,b=>2,d=>3,f=>1} e5ffffff022e03002067000001000000c5600b09 e5ffffff022e03002067000001000000c5600b09 e5ffffff022e03002067000001000000c5600b09 ffffffe5805cc000ce400000400000001216c18a e5ffffff022e03002067000001000000c5600b09 e5ffffff022e03002067000001000000c5600b09 ffffffe5805cc000ce400000400000001216c18a e5ffffff022e03002067000001000000c5600b09 ffffffe5805cc000ce400000400000001216c18a - {e=>26192,c=>62,a=>24,g=>1861908220,b=>2,d=>0,f=>3} 18000000023e00005066000003000000fc76fa6e 18000000023e00005066000003000000fc76fa6e 18000000023e00005066000003000000fc76fa6e 00000018807c0000cca00000c0000000ddf4edf8 18000000023e00005066000003000000fc76fa6e 18000000023e00005066000003000000fc76fa6e 00000018807c0000cca00000c0000000ddf4edf8 18000000023e00005066000003000000fc76fa6e 00000018807c0000cca00000c0000000ddf4edf8 - {e=>21869,c=>35,a=>48,g=>1165253908,b=>2,d=>3,f=>1} 30000000022303006d55000001000000145d7445 30000000022303006d55000001000000145d7445 30000000022303006d55000001000000145d7445 000000308046c000aada0000400000008ae8ba28 30000000022303006d55000001000000145d7445 30000000022303006d55000001000000145d7445 000000308046c000aada0000400000008ae8ba28 30000000022303006d55000001000000145d7445 000000308046c000aada0000400000008ae8ba28 - {e=>31408,c=>111,a=>30,g=>1811810369,b=>1,d=>0,f=>0} 1e000000016f0000b07a0000000000004108fe6b 1e000000016f0000b07a0000000000004108fe6b 1e000000016f0000b07a0000000000004108fe6b 0000001e40de0000f560000000000000d7fc1082 1e000000016f0000b07a0000000000004108fe6b 1e000000016f0000b07a0000000000004108fe6b 0000001e40de0000f560000000000000d7fc1082 1e000000016f0000b07a0000000000004108fe6b 0000001e40de0000f560000000000000d7fc1082 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22792,a=>69,d=>0,c=>81,h=>223,b=>0,g=>1807892872,f=>2} 450000000051000008590000020000008841c26bdf000000 450000000051000008590000020000008841c26bdf000000 450000000051000008590000020000008841c26bdf000000 0000004500a20000b210000080000000d7848310df000000 450000000051000008590000020000008841c26bdf000000 450000000051000008590000020000008841c26bdf000000 0000004500a20000b210000080000000d7848310df000000 450000000051000008590000020000008841c26bdf000000 0000004500a20000b210000080000000d7848310df000000 - {e=>6988,a=>-93,d=>1,c=>27,h=>182,b=>3,g=>374359030,f=>1} a3ffffff031b01004c1b000001000000f6435016b6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 ffffffa3c036400036980000400000002ca087ecb6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 ffffffa3c036400036980000400000002ca087ecb6000000 a3ffffff031b01004c1b000001000000f6435016b6000000 ffffffa3c036400036980000400000002ca087ecb6000000 - {e=>14822,a=>-84,d=>0,c=>16,h=>181,b=>0,g=>1852459803,f=>2} acffffff00100000e6390000020000001b4b6a6eb5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 ffffffac0020000073cc000080000000dcd49636b5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 ffffffac0020000073cc000080000000dcd49636b5000000 acffffff00100000e6390000020000001b4b6a6eb5000000 ffffffac0020000073cc000080000000dcd49636b5000000 - {e=>21205,a=>118,d=>1,c=>107,h=>123,b=>2,g=>1241312097,f=>2} 76000000026b0100d55200000200000061ebfc497b000000 76000000026b0100d55200000200000061ebfc497b000000 76000000026b0100d55200000200000061ebfc497b000000 0000007680d64000a5aa00008000000093f9d6c27b000000 76000000026b0100d55200000200000061ebfc497b000000 76000000026b0100d55200000200000061ebfc497b000000 0000007680d64000a5aa00008000000093f9d6c27b000000 76000000026b0100d55200000200000061ebfc497b000000 0000007680d64000a5aa00008000000093f9d6c27b000000 - {e=>15889,a=>-72,d=>3,c=>115,h=>148,b=>3,g=>812033748,f=>2} b8ffffff03730300113e000002000000d4a6663094000000 b8ffffff03730300113e000002000000d4a6663094000000 b8ffffff03730300113e000002000000d4a6663094000000 ffffffb8c0e6c0007c2200008000000060cd4da894000000 b8ffffff03730300113e000002000000d4a6663094000000 b8ffffff03730300113e000002000000d4a6663094000000 ffffffb8c0e6c0007c2200008000000060cd4da894000000 b8ffffff03730300113e000002000000d4a6663094000000 ffffffb8c0e6c0007c2200008000000060cd4da894000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>-83,b=>1} adffffff01000000 adffffffffffffff0100000000000000 adffffffffffffff0100000000000000 ffffffad40000000 adffffff01000000 adffffff01000000 ffffffffffffffad4000000000000000 adffffff01000000 ffffffad40000000 - {a=>-66,b=>2} beffffff02000000 beffffffffffffff0200000000000000 beffffffffffffff0200000000000000 ffffffbe80000000 beffffff02000000 beffffff02000000 ffffffffffffffbe8000000000000000 beffffff02000000 ffffffbe80000000 - {a=>29,b=>2} 1d00000002000000 1d000000000000000200000000000000 1d000000000000000200000000000000 0000001d80000000 1d00000002000000 1d00000002000000 000000000000001d8000000000000000 1d00000002000000 0000001d80000000 - {a=>3,b=>3} 0300000003000000 03000000000000000300000000000000 03000000000000000300000000000000 00000003c0000000 0300000003000000 0300000003000000 0000000000000003c000000000000000 0300000003000000 00000003c0000000 - {a=>96,b=>0} 6000000000000000 60000000000000000000000000000000 60000000000000000000000000000000 0000006000000000 6000000000000000 6000000000000000 00000000000000600000000000000000 6000000000000000 0000006000000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>65,a=>58,b=>1} 3a00000001410000 3a000000000000000141000000000000 3a000000000000000141000000000000 0000003a40820000 3a00000001410000 3a00000001410000 000000000000003a4082000000000000 3a00000001410000 0000003a40820000 - {c=>69,a=>121,b=>3} 7900000003450000 79000000000000000345000000000000 79000000000000000345000000000000 00000079c08a0000 7900000003450000 7900000003450000 0000000000000079c08a000000000000 7900000003450000 00000079c08a0000 - {c=>64,a=>43,b=>0} 2b00000000400000 2b000000000000000040000000000000 2b000000000000000040000000000000 0000002b00800000 2b00000000400000 2b00000000400000 000000000000002b0080000000000000 2b00000000400000 0000002b00800000 - {c=>119,a=>-117,b=>3} 8bffffff03770000 8bffffffffffffff0377000000000000 8bffffffffffffff0377000000000000 ffffff8bc0ee0000 8bffffff03770000 8bffffff03770000 ffffffffffffff8bc0ee000000000000 8bffffff03770000 ffffff8bc0ee0000 - {c=>121,a=>-9,b=>2} f7ffffff02790000 f7ffffffffffffff0279000000000000 f7ffffffffffffff0279000000000000 fffffff780f20000 f7ffffff02790000 f7ffffff02790000 fffffffffffffff780f2000000000000 f7ffffff02790000 fffffff780f20000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>105,a=>-106,b=>1} 96ffffff01690000 96ffffffffffffff0169000000000000 96ffffffffffffff0169000000000000 ffffff9640d20000 96ffffff01690000 96ffffff01690000 ffffffffffffff9640d2000000000000 96ffffff01690000 ffffff9640d20000 - {c=>123,a=>94,b=>1} 5e000000017b0000 5e00000000000000017b000000000000 5e00000000000000017b000000000000 0000005e40f60000 5e000000017b0000 5e000000017b0000 000000000000005e40f6000000000000 5e000000017b0000 0000005e40f60000 - {c=>116,a=>-82,b=>1} aeffffff01740000 aeffffffffffffff0174000000000000 aeffffffffffffff0174000000000000 ffffffae40e80000 aeffffff01740000 aeffffff01740000 ffffffffffffffae40e8000000000000 aeffffff01740000 ffffffae40e80000 - {c=>123,a=>72,b=>2} 48000000027b0000 4800000000000000027b000000000000 4800000000000000027b000000000000 0000004880f60000 48000000027b0000 48000000027b0000 000000000000004880f6000000000000 48000000027b0000 0000004880f60000 - {c=>73,a=>-126,b=>3} 82ffffff03490000 82ffffffffffffff0349000000000000 82ffffffffffffff0349000000000000 ffffff82c0920000 82ffffff03490000 82ffffff03490000 ffffffffffffff82c092000000000000 82ffffff03490000 ffffff82c0920000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>95,a=>0,b=>2,d=>1} 00000000025f0100 0000000000000000025f010000000000 0000000000000000025f010000000000 0000000080be4000 00000000025f0100 00000000025f0100 000000000000000080be400000000000 00000000025f0100 0000000080be4000 - {c=>66,a=>121,b=>3,d=>3} 7900000003420300 79000000000000000342030000000000 79000000000000000342030000000000 00000079c084c000 7900000003420300 7900000003420300 0000000000000079c084c00000000000 7900000003420300 00000079c084c000 - {c=>26,a=>99,b=>2,d=>2} 63000000021a0200 6300000000000000021a020000000000 6300000000000000021a020000000000 0000006380348000 63000000021a0200 63000000021a0200 00000000000000638034800000000000 63000000021a0200 0000006380348000 - {c=>88,a=>98,b=>0,d=>1} 6200000000580100 62000000000000000058010000000000 62000000000000000058010000000000 0000006200b04000 6200000000580100 6200000000580100 000000000000006200b0400000000000 6200000000580100 0000006200b04000 - {c=>3,a=>-14,b=>2,d=>3} f2ffffff02030300 f2ffffffffffffff0203030000000000 f2ffffffffffffff0203030000000000 fffffff28006c000 f2ffffff02030300 f2ffffff02030300 fffffffffffffff28006c00000000000 f2ffffff02030300 fffffff28006c000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>9767,c=>60,a=>-61,b=>1,d=>2} c3ffffff013c020027260000 c3ffffffffffffff013c020027260000 c3ffffffffffffff013c020027260000 ffffffc3407880004c4e0000 c3ffffff013c020027260000 c3ffffff013c020027260000 ffffffffffffffc3407880004c4e0000 c3ffffff013c020027260000 ffffffc3407880004c4e0000 - {e=>12740,c=>73,a=>45,b=>1,d=>0} 2d00000001490000c4310000 2d0000000000000001490000c4310000 2d0000000000000001490000c4310000 0000002d4092000063880000 2d00000001490000c4310000 2d00000001490000c4310000 000000000000002d4092000063880000 2d00000001490000c4310000 0000002d4092000063880000 - {e=>19242,c=>24,a=>3,b=>2,d=>3} 03000000021803002a4b0000 0300000000000000021803002a4b0000 0300000000000000021803002a4b0000 000000038030c00096540000 03000000021803002a4b0000 03000000021803002a4b0000 00000000000000038030c00096540000 03000000021803002a4b0000 000000038030c00096540000 - {e=>22616,c=>113,a=>104,b=>2,d=>0} 680000000271000058580000 68000000000000000271000058580000 68000000000000000271000058580000 0000006880e20000b0b00000 680000000271000058580000 680000000271000058580000 000000000000006880e20000b0b00000 680000000271000058580000 0000006880e20000b0b00000 - {e=>25298,c=>80,a=>59,b=>3,d=>0} 3b00000003500000d2620000 3b0000000000000003500000d2620000 3b0000000000000003500000d2620000 0000003bc0a00000c5a40000 3b00000003500000d2620000 3b00000003500000d2620000 000000000000003bc0a00000c5a40000 3b00000003500000d2620000 0000003bc0a00000c5a40000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>20592,c=>52,a=>-37,b=>2,d=>2} dbffffff0234020070500000 dbffffffffffffff0234020070500000 dbffffffffffffff0234020070500000 ffffffdb80688000a0e00000 dbffffff0234020070500000 dbffffff0234020070500000 ffffffffffffffdb80688000a0e00000 dbffffff0234020070500000 ffffffdb80688000a0e00000 - {e=>276,c=>125,a=>90,b=>3,d=>0} 5a000000037d000014010000 5a00000000000000037d000014010000 5a00000000000000037d000014010000 0000005ac0fa000002280000 5a000000037d000014010000 5a000000037d000014010000 000000000000005ac0fa000002280000 5a000000037d000014010000 0000005ac0fa000002280000 - {e=>32279,c=>46,a=>100,b=>2,d=>3} 64000000022e0300177e0000 6400000000000000022e0300177e0000 6400000000000000022e0300177e0000 00000064805cc000fc2e0000 64000000022e0300177e0000 64000000022e0300177e0000 0000000000000064805cc000fc2e0000 64000000022e0300177e0000 00000064805cc000fc2e0000 - {e=>25090,c=>74,a=>5,b=>1,d=>2} 05000000014a020002620000 0500000000000000014a020002620000 0500000000000000014a020002620000 0000000540948000c4040000 05000000014a020002620000 05000000014a020002620000 000000000000000540948000c4040000 05000000014a020002620000 0000000540948000c4040000 - {e=>3865,c=>84,a=>-99,b=>0,d=>1} 9dffffff00540100190f0000 9dffffffffffffff00540100190f0000 9dffffffffffffff00540100190f0000 ffffff9d00a840001e320000 9dffffff00540100190f0000 9dffffff00540100190f0000 ffffffffffffff9d00a840001e320000 9dffffff00540100190f0000 ffffff9d00a840001e320000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>21175,c=>59,a=>-120,b=>1,d=>1,f=>3} 88ffffff013b0100b752000003000000 88ffffffffffffff013b0100b75200000300000000000000 88ffffffffffffff013b0100b75200000300000000000000 ffffff8840764000a56e0000c0000000 88ffffff013b0100b752000003000000 88ffffff013b0100b752000003000000 ffffffffffffff8840764000a56e0000c000000000000000 88ffffff013b0100b752000003000000 ffffff8840764000a56e0000c0000000 - {e=>28600,c=>26,a=>40,b=>1,d=>0,f=>3} 28000000011a0000b86f000003000000 2800000000000000011a0000b86f00000300000000000000 2800000000000000011a0000b86f00000300000000000000 0000002840340000df700000c0000000 28000000011a0000b86f000003000000 28000000011a0000b86f000003000000 000000000000002840340000df700000c000000000000000 28000000011a0000b86f000003000000 0000002840340000df700000c0000000 - {e=>28585,c=>40,a=>111,b=>2,d=>1,f=>0} 6f00000002280100a96f000000000000 6f0000000000000002280100a96f00000000000000000000 6f0000000000000002280100a96f00000000000000000000 0000006f80504000df52000000000000 6f00000002280100a96f000000000000 6f00000002280100a96f000000000000 000000000000006f80504000df5200000000000000000000 6f00000002280100a96f000000000000 0000006f80504000df52000000000000 - {e=>5446,c=>49,a=>-10,b=>0,d=>3,f=>2} f6ffffff003103004615000002000000 f6ffffffffffffff00310300461500000200000000000000 f6ffffffffffffff00310300461500000200000000000000 fffffff60062c0002a8c000080000000 f6ffffff003103004615000002000000 f6ffffff003103004615000002000000 fffffffffffffff60062c0002a8c00008000000000000000 f6ffffff003103004615000002000000 fffffff60062c0002a8c000080000000 - {e=>8086,c=>115,a=>71,b=>1,d=>3,f=>2} 4700000001730300961f000002000000 470000000000000001730300961f00000200000000000000 470000000000000001730300961f00000200000000000000 0000004740e6c0003f2c000080000000 4700000001730300961f000002000000 4700000001730300961f000002000000 000000000000004740e6c0003f2c00008000000000000000 4700000001730300961f000002000000 0000004740e6c0003f2c000080000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>2515,c=>39,a=>-81,g=>1557846639,b=>0,d=>2,f=>0} afffffff00270200d3090000000000006fdada5c afffffffffffffff00270200d3090000000000006fdada5c afffffffffffffff00270200d3090000000000006fdada5c ffffffaf004e800013a6000000000000b9b5b4de afffffff00270200d3090000000000006fdada5c afffffff00270200d3090000000000006fdada5c ffffffffffffffaf004e800013a6000000000000b9b5b4de afffffff00270200d3090000000000006fdada5c ffffffaf004e800013a6000000000000b9b5b4de - {e=>24554,c=>76,a=>-55,g=>397475554,b=>0,d=>3,f=>1} c9ffffff004c0300ea5f000001000000e2feb017 c9ffffffffffffff004c0300ea5f000001000000e2feb017 c9ffffffffffffff004c0300ea5f000001000000e2feb017 ffffffc90098c000bfd40000400000002f61fdc4 c9ffffff004c0300ea5f000001000000e2feb017 c9ffffff004c0300ea5f000001000000e2feb017 ffffffffffffffc90098c000bfd40000400000002f61fdc4 c9ffffff004c0300ea5f000001000000e2feb017 ffffffc90098c000bfd40000400000002f61fdc4 - {e=>21564,c=>75,a=>-60,g=>1965999580,b=>1,d=>1,f=>0} c4ffffff014b01003c54000000000000dcc52e75 c4ffffffffffffff014b01003c54000000000000dcc52e75 c4ffffffffffffff014b01003c54000000000000dcc52e75 ffffffc440964000a878000000000000ea5d8bb8 c4ffffff014b01003c54000000000000dcc52e75 c4ffffff014b01003c54000000000000dcc52e75 ffffffffffffffc440964000a878000000000000ea5d8bb8 c4ffffff014b01003c54000000000000dcc52e75 ffffffc440964000a878000000000000ea5d8bb8 - {e=>4819,c=>95,a=>5,g=>1426045861,b=>2,d=>3,f=>0} 05000000025f0300d312000000000000a5bbff54 0500000000000000025f0300d312000000000000a5bbff54 0500000000000000025f0300d312000000000000a5bbff54 0000000580bec00025a6000000000000a9ff774a 05000000025f0300d312000000000000a5bbff54 05000000025f0300d312000000000000a5bbff54 000000000000000580bec00025a6000000000000a9ff774a 05000000025f0300d312000000000000a5bbff54 0000000580bec00025a6000000000000a9ff774a - {e=>9300,c=>73,a=>-128,g=>2026652952,b=>2,d=>2,f=>0} 80ffffff0249020054240000000000001845cc78 80ffffffffffffff0249020054240000000000001845cc78 80ffffffffffffff0249020054240000000000001845cc78 ffffff808092800048a8000000000000f1988a30 80ffffff0249020054240000000000001845cc78 80ffffff0249020054240000000000001845cc78 ffffffffffffff808092800048a8000000000000f1988a30 80ffffff0249020054240000000000001845cc78 ffffff808092800048a8000000000000f1988a30 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>21952,a=>-109,d=>2,c=>25,h=>45,b=>2,g=>1114185827,f=>3} 93ffffff02190200c055000003000000632069422d000000 93ffffffffffffff02190200c055000003000000632069422d00000000000000 93ffffffffffffff02190200c055000003000000632069422d00000000000000 ffffff9380328000ab800000c000000084d240c62d000000 93ffffff02190200c055000003000000632069422d000000 93ffffff02190200c055000003000000632069422d000000 ffffffffffffff9380328000ab800000c000000084d240c62d00000000000000 93ffffff02190200c055000003000000632069422d000000 ffffff9380328000ab800000c000000084d240c62d000000 - {e=>26940,a=>-113,d=>2,c=>52,h=>252,b=>0,g=>1775585392,f=>2} 8fffffff003402003c690000020000007048d569fc000000 8fffffffffffffff003402003c690000020000007048d569fc00000000000000 8fffffffffffffff003402003c690000020000007048d569fc00000000000000 ffffff8f00688000d278000080000000d3aa90e0fc000000 8fffffff003402003c690000020000007048d569fc000000 8fffffff003402003c690000020000007048d569fc000000 ffffffffffffff8f00688000d278000080000000d3aa90e0fc00000000000000 8fffffff003402003c690000020000007048d569fc000000 ffffff8f00688000d278000080000000d3aa90e0fc000000 - {e=>15281,a=>-108,d=>2,c=>32,h=>104,b=>0,g=>334972013,f=>0} 94ffffff00200200b13b0000000000006d44f71368000000 94ffffffffffffff00200200b13b0000000000006d44f7136800000000000000 94ffffffffffffff00200200b13b0000000000006d44f7136800000000000000 ffffff9400408000776200000000000027ee88da68000000 94ffffff00200200b13b0000000000006d44f71368000000 94ffffff00200200b13b0000000000006d44f71368000000 ffffffffffffff9400408000776200000000000027ee88da6800000000000000 94ffffff00200200b13b0000000000006d44f71368000000 ffffff9400408000776200000000000027ee88da68000000 - {e=>2768,a=>-8,d=>2,c=>44,h=>179,b=>0,g=>1813704477,f=>2} f8ffffff002c0200d00a0000020000001def1a6cb3000000 f8ffffffffffffff002c0200d00a0000020000001def1a6cb300000000000000 f8ffffffffffffff002c0200d00a0000020000001def1a6cb300000000000000 fffffff80058800015a0000080000000d835de3ab3000000 f8ffffff002c0200d00a0000020000001def1a6cb3000000 f8ffffff002c0200d00a0000020000001def1a6cb3000000 fffffffffffffff80058800015a0000080000000d835de3ab300000000000000 f8ffffff002c0200d00a0000020000001def1a6cb3000000 fffffff80058800015a0000080000000d835de3ab3000000 - {e=>4766,a=>-98,d=>1,c=>110,h=>87,b=>3,g=>1617177070,f=>1} 9effffff036e01009e12000001000000ee29646057000000 9effffffffffffff036e01009e12000001000000ee2964605700000000000000 9effffffffffffff036e01009e12000001000000ee2964605700000000000000 ffffff9ec0dc4000253c000040000000c0c853dc57000000 9effffff036e01009e12000001000000ee29646057000000 9effffff036e01009e12000001000000ee29646057000000 ffffffffffffff9ec0dc4000253c000040000000c0c853dc5700000000000000 9effffff036e01009e12000001000000ee29646057000000 ffffff9ec0dc4000253c000040000000c0c853dc57000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>1} 01 01 01 40 01000000 01 40 01 40 - {a=>2} 02 02 02 80 02000000 02 80 02 80 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 - {a=>3} 03 03 03 c0 03000000 03 c0 03 c0 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>1,b=>53} 0135 0135 0135 406a 01350000 0135 406a 0135 406a - {a=>1,b=>50} 0132 0132 0132 4064 01320000 0132 4064 0132 4064 - {a=>1,b=>123} 017b 017b 017b 40f6 017b0000 017b 40f6 017b 40f6 - {a=>1,b=>14} 010e 010e 010e 401c 010e0000 010e 401c 010e 401c - {a=>1,b=>30} 011e 011e 011e 403c 011e0000 011e 403c 011e 403c = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>0,b=>46} 002e 002e 002e 005c 002e0000 002e 005c 002e 005c - {a=>0,b=>81} 0051 0051 0051 00a2 00510000 0051 00a2 0051 00a2 - {a=>2,b=>74} 024a 024a 024a 8094 024a0000 024a 8094 024a 8094 - {a=>0,b=>65} 0041 0041 0041 0082 00410000 0041 0082 0041 0082 - {a=>2,b=>109} 026d 026d 026d 80da 026d0000 026d 80da 026d 80da = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>3,a=>2,b=>16} 02100300 02100300 02100300 8020c000 02100300 02100300 8020c000 02100300 8020c000 - {c=>1,a=>2,b=>62} 023e0100 023e0100 023e0100 807c4000 023e0100 023e0100 807c4000 023e0100 807c4000 - {c=>3,a=>1,b=>111} 016f0300 016f0300 016f0300 40dec000 016f0300 016f0300 40dec000 016f0300 40dec000 - {c=>1,a=>1,b=>68} 01440100 01440100 01440100 40884000 01440100 01440100 40884000 01440100 40884000 - {c=>2,a=>2,b=>45} 022d0200 022d0200 022d0200 805a8000 022d0200 022d0200 805a8000 022d0200 805a8000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>3,a=>1,b=>26,d=>16785} 011a03009141 011a03009141 011a03009141 4034c0008322 011a030091410000 011a03009141 4034c0008322 011a03009141 4034c0008322 - {c=>1,a=>2,b=>72,d=>27478} 02480100566b 02480100566b 02480100566b 80904000d6ac 02480100566b0000 02480100566b 80904000d6ac 02480100566b 80904000d6ac - {c=>0,a=>2,b=>38,d=>5575} 02260000c715 02260000c715 02260000c715 804c00002b8e 02260000c7150000 02260000c715 804c00002b8e 02260000c715 804c00002b8e - {c=>0,a=>0,b=>9,d=>15309} 00090000cd3b 00090000cd3b 00090000cd3b 00120000779a 00090000cd3b0000 00090000cd3b 00120000779a 00090000cd3b 00120000779a - {c=>1,a=>0,b=>50,d=>15196} 003201005c3b 003201005c3b 003201005c3b 0064400076b8 003201005c3b0000 003201005c3b 0064400076b8 003201005c3b 0064400076b8 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>3,a=>0,b=>45,d=>19854} 002d03008e4d0000 002d03008e4d0000 002d03008e4d0000 005ac0009b1c0000 002d03008e4d0000 002d03008e4d0000 005ac0009b1c0000 002d03008e4d0000 005ac0009b1c0000 - {c=>1,a=>1,b=>98,d=>13023} 01620100df320000 01620100df320000 01620100df320000 40c4400065be0000 01620100df320000 01620100df320000 40c4400065be0000 01620100df320000 40c4400065be0000 - {c=>0,a=>0,b=>60,d=>21600} 003c000060540000 003c000060540000 003c000060540000 00780000a8c00000 003c000060540000 003c000060540000 00780000a8c00000 003c000060540000 00780000a8c00000 - {c=>0,a=>3,b=>66,d=>5095} 03420000e7130000 03420000e7130000 03420000e7130000 c084000027ce0000 03420000e7130000 03420000e7130000 c084000027ce0000 03420000e7130000 c084000027ce0000 - {c=>1,a=>2,b=>6,d=>28001} 02060100616d0000 02060100616d0000 02060100616d0000 800c4000dac20000 02060100616d0000 02060100616d0000 800c4000dac20000 02060100616d0000 800c4000dac20000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>3,c=>3,a=>0,b=>58,d=>11881} 003a0300692e000003000000 003a0300692e000003000000 003a0300692e000003000000 0074c0005cd20000c0000000 003a0300692e000003000000 003a0300692e000003000000 0074c0005cd20000c0000000 003a0300692e000003000000 0074c0005cd20000c0000000 - {e=>1,c=>2,a=>3,b=>55,d=>28258} 03370200626e000001000000 03370200626e000001000000 03370200626e000001000000 c06e8000dcc4000040000000 03370200626e000001000000 03370200626e000001000000 c06e8000dcc4000040000000 03370200626e000001000000 c06e8000dcc4000040000000 - {e=>0,c=>2,a=>0,b=>80,d=>21967} 00500200cf55000000000000 00500200cf55000000000000 00500200cf55000000000000 00a08000ab9e000000000000 00500200cf55000000000000 00500200cf55000000000000 00a08000ab9e000000000000 00500200cf55000000000000 00a08000ab9e000000000000 - {e=>3,c=>1,a=>2,b=>45,d=>10113} 022d01008127000003000000 022d01008127000003000000 022d01008127000003000000 805a40004f020000c0000000 022d01008127000003000000 022d01008127000003000000 805a40004f020000c0000000 022d01008127000003000000 805a40004f020000c0000000 - {e=>2,c=>1,a=>1,b=>95,d=>17218} 015f01004243000002000000 015f01004243000002000000 015f01004243000002000000 40be40008684000080000000 015f01004243000002000000 015f01004243000002000000 40be40008684000080000000 015f01004243000002000000 40be40008684000080000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>0,c=>2,a=>3,b=>80,d=>2111,f=>1422571903} 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 c0a08000107e000000000000a99572fe 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 c0a08000107e000000000000a99572fe 035002003f080000000000007fb9ca54 c0a08000107e000000000000a99572fe - {e=>2,c=>1,a=>3,b=>64,d=>2000,f=>1965034422} 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 c08040000fa0000080000000ea40176c 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 c08040000fa0000080000000ea40176c 03400100d007000002000000b60b2075 c08040000fa0000080000000ea40176c - {e=>2,c=>3,a=>1,b=>54,d=>28927,f=>969485170} 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 406cc000e1fe000080000000739256e4 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 406cc000e1fe000080000000739256e4 01360300ff70000002000000722bc939 406cc000e1fe000080000000739256e4 - {e=>2,c=>1,a=>3,b=>123,d=>20823,f=>1458057064} 037b01005751000002000000682fe856 037b01005751000002000000682fe856 037b01005751000002000000682fe856 c0f64000a2ae000080000000add05ed0 037b01005751000002000000682fe856 037b01005751000002000000682fe856 c0f64000a2ae000080000000add05ed0 037b01005751000002000000682fe856 c0f64000a2ae000080000000add05ed0 - {e=>1,c=>2,a=>0,b=>6,d=>12501,f=>1351383989} 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 000c800061aa000040000000a118f76a 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 000c800061aa000040000000a118f76a 00060200d530000001000000b57b8c50 000c800061aa000040000000a118f76a = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>0,c=>2,a=>3,g=>84,b=>89,d=>9214,f=>106393136} 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 c0b2800047fc0000000000000caedc6054000000 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 c0b2800047fc0000000000000caedc6054000000 03590200fe23000000000000306e570654000000 c0b2800047fc0000000000000caedc6054000000 - {e=>0,c=>1,a=>3,g=>127,b=>82,d=>23276,f=>741050135} 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 c0a44000b5d800000000000058570e2e7f000000 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 c0a44000b5d800000000000058570e2e7f000000 03520100ec5a00000000000017872b2c7f000000 c0a44000b5d800000000000058570e2e7f000000 - {e=>1,c=>2,a=>3,g=>51,b=>86,d=>27154,f=>843170060} 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 c0ac8000d4240000400000006483821833000000 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 c0ac8000d4240000400000006483821833000000 03560200126a0000010000000cc1413233000000 c0ac8000d4240000400000006483821833000000 - {e=>2,c=>0,a=>1,g=>50,b=>109,d=>21142,f=>302068161} 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 40da0000a52c0000800000002402638232000000 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 40da0000a52c0000800000002402638232000000 016d00009652000002000000c131011232000000 40da0000a52c0000800000002402638232000000 - {e=>0,c=>0,a=>0,g=>115,b=>39,d=>28818,f=>1653939669} 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 004e0000e124000000000000c52a3baa73000000 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 004e0000e124000000000000c52a3baa73000000 002700009270000000000000d51d956273000000 004e0000e124000000000000c52a3baa73000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>127,b=>3} 7f03 7f03 7f03 7fc0 7f030000 7f03 7fc0 7f03 7fc0 - {a=>80,b=>3} 5003 5003 5003 50c0 50030000 5003 50c0 5003 50c0 - {a=>-62,b=>3} c203 c203 c203 c2c0 c2030000 c203 c2c0 c203 c2c0 - {a=>-100,b=>0} 9c00 9c00 9c00 9c00 9c000000 9c00 9c00 9c00 9c00 - {a=>14,b=>0} 0e00 0e00 0e00 0e00 0e000000 0e00 0e00 0e00 0e00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>39,a=>-40,b=>3} d80327 d80327 d80327 d8c04e d8032700 d80327 d8c04e d80327 d8c04e - {c=>16,a=>1,b=>2} 010210 010210 010210 018020 01021000 010210 018020 010210 018020 - {c=>127,a=>117,b=>2} 75027f 75027f 75027f 7580fe 75027f00 75027f 7580fe 75027f 7580fe - {c=>19,a=>-78,b=>3} b20313 b20313 b20313 b2c026 b2031300 b20313 b2c026 b20313 b2c026 - {c=>78,a=>-31,b=>3} e1034e e1034e e1034e e1c09c e1034e00 e1034e e1c09c e1034e e1c09c = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>49,a=>86,b=>0} 56003100 56003100 56003100 56006200 56003100 56003100 56006200 56003100 56006200 - {c=>37,a=>-76,b=>0} b4002500 b4002500 b4002500 b4004a00 b4002500 b4002500 b4004a00 b4002500 b4004a00 - {c=>41,a=>-78,b=>1} b2012900 b2012900 b2012900 b2405200 b2012900 b2012900 b2405200 b2012900 b2405200 - {c=>48,a=>-122,b=>1} 86013000 86013000 86013000 86406000 86013000 86013000 86406000 86013000 86406000 - {c=>80,a=>38,b=>1} 26015000 26015000 26015000 2640a000 26015000 26015000 2640a000 26015000 2640a000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>64,a=>67,b=>0,d=>3} 430040000300 430040000300 430040000300 43008000c000 4300400003000000 430040000300 43008000c000 430040000300 43008000c000 - {c=>7,a=>32,b=>0,d=>3} 200007000300 200007000300 200007000300 20000e00c000 2000070003000000 200007000300 20000e00c000 200007000300 20000e00c000 - {c=>48,a=>-66,b=>2,d=>3} be0230000300 be0230000300 be0230000300 be806000c000 be02300003000000 be0230000300 be806000c000 be0230000300 be806000c000 - {c=>36,a=>98,b=>1,d=>0} 620124000000 620124000000 620124000000 624048000000 6201240000000000 620124000000 624048000000 620124000000 624048000000 - {c=>52,a=>-93,b=>0,d=>0} a30034000000 a30034000000 a30034000000 a30068000000 a300340000000000 a30034000000 a30068000000 a30034000000 a30068000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>26785,c=>119,a=>-1,b=>1,d=>0} ff0177000000a168 ff0177000000a168 ff0177000000a168 ff40ee000000d142 ff0177000000a168 ff0177000000a168 ff40ee000000d142 ff0177000000a168 ff40ee000000d142 - {e=>21340,c=>96,a=>-74,b=>2,d=>0} b602600000005c53 b602600000005c53 b602600000005c53 b680c0000000a6b8 b602600000005c53 b602600000005c53 b680c0000000a6b8 b602600000005c53 b680c0000000a6b8 - {e=>28806,c=>61,a=>26,b=>3,d=>1} 1a033d0001008670 1a033d0001008670 1a033d0001008670 1ac07a004000e10c 1a033d0001008670 1a033d0001008670 1ac07a004000e10c 1a033d0001008670 1ac07a004000e10c - {e=>28589,c=>26,a=>-114,b=>2,d=>2} 8e021a000200ad6f 8e021a000200ad6f 8e021a000200ad6f 8e8034008000df5a 8e021a000200ad6f 8e021a000200ad6f 8e8034008000df5a 8e021a000200ad6f 8e8034008000df5a - {e=>26902,c=>48,a=>-95,b=>0,d=>1} a100300001001669 a100300001001669 a100300001001669 a10060004000d22c a100300001001669 a100300001001669 a10060004000d22c a100300001001669 a10060004000d22c = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>3552,c=>17,a=>-7,b=>2,d=>3} f90211000300e00d f90211000300e00d f90211000300e00d f9802200c0001bc0 f90211000300e00d f90211000300e00d f9802200c0001bc0 f90211000300e00d f9802200c0001bc0 - {e=>26031,c=>93,a=>25,b=>2,d=>2} 19025d000200af65 19025d000200af65 19025d000200af65 1980ba008000cb5e 19025d000200af65 19025d000200af65 1980ba008000cb5e 19025d000200af65 1980ba008000cb5e - {e=>22073,c=>127,a=>50,b=>3,d=>2} 32037f0002003956 32037f0002003956 32037f0002003956 32c0fe008000ac72 32037f0002003956 32037f0002003956 32c0fe008000ac72 32037f0002003956 32c0fe008000ac72 - {e=>2767,c=>28,a=>125,b=>3,d=>0} 7d031c000000cf0a 7d031c000000cf0a 7d031c000000cf0a 7dc038000000159e 7d031c000000cf0a 7d031c000000cf0a 7dc038000000159e 7d031c000000cf0a 7dc038000000159e - {e=>13191,c=>78,a=>100,b=>1,d=>0} 64014e0000008733 64014e0000008733 64014e0000008733 64409c000000670e 64014e0000008733 64014e0000008733 64409c000000670e 64014e0000008733 64409c000000670e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>30976,c=>57,a=>34,b=>3,d=>1,f=>2} 220339000100007902000000 220339000100007902000000 220339000100007902000000 22c072004000f20080000000 220339000100007902000000 220339000100007902000000 22c072004000f20080000000 220339000100007902000000 22c072004000f20080000000 - {e=>6346,c=>73,a=>-3,b=>3,d=>2,f=>2} fd0349000200ca1802000000 fd0349000200ca1802000000 fd0349000200ca1802000000 fdc092008000319480000000 fd0349000200ca1802000000 fd0349000200ca1802000000 fdc092008000319480000000 fd0349000200ca1802000000 fdc092008000319480000000 - {e=>6949,c=>88,a=>-4,b=>0,d=>0,f=>1} fc0058000000251b01000000 fc0058000000251b01000000 fc0058000000251b01000000 fc00b0000000364a40000000 fc0058000000251b01000000 fc0058000000251b01000000 fc00b0000000364a40000000 fc0058000000251b01000000 fc00b0000000364a40000000 - {e=>28006,c=>111,a=>-33,b=>1,d=>1,f=>2} df016f000100666d02000000 df016f000100666d02000000 df016f000100666d02000000 df40de004000dacc80000000 df016f000100666d02000000 df016f000100666d02000000 df40de004000dacc80000000 df016f000100666d02000000 df40de004000dacc80000000 - {e=>14019,c=>108,a=>-96,b=>0,d=>2,f=>0} a0006c000200c33600000000 a0006c000200c33600000000 a0006c000200c33600000000 a000d80080006d8600000000 a0006c000200c33600000000 a0006c000200c33600000000 a000d80080006d8600000000 a0006c000200c33600000000 a000d80080006d8600000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>9791,c=>22,a=>-47,g=>647164236,b=>2,d=>2,f=>1} d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d1802c0080004c7e400000004d25e298 d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d1802c0080004c7e400000004d25e298 d102160002003f26010000004cf19226 d1802c0080004c7e400000004d25e298 - {e=>27793,c=>21,a=>-62,g=>1814066393,b=>1,d=>3,f=>1} c20115000300916c01000000d974206c c20115000300916c01000000d974206c c20115000300916c01000000d974206c c2402a00c000d92240000000d840e9b2 c20115000300916c01000000d974206c c20115000300916c01000000d974206c c2402a00c000d92240000000d840e9b2 c20115000300916c01000000d974206c c2402a00c000d92240000000d840e9b2 - {e=>21047,c=>89,a=>-117,g=>455211358,b=>1,d=>2,f=>2} 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b40b2008000a46e800000003643f2bc 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b40b2008000a46e800000003643f2bc 8b01590002003752020000005ef9211b 8b40b2008000a46e800000003643f2bc - {e=>17235,c=>47,a=>-82,g=>2001830733,b=>1,d=>1,f=>0} ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae405e00400086a600000000eea3069a ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae405e00400086a600000000eea3069a ae012f0001005343000000004d835177 ae405e00400086a600000000eea3069a - {e=>1178,c=>72,a=>-128,g=>1850197261,b=>3,d=>2,f=>2} 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 80c090008000093480000000dc8f8a1a 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 80c090008000093480000000dc8f8a1a 8003480002009a04020000000dc5476e 80c090008000093480000000dc8f8a1a = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>4992,a=>101,d=>0,c=>45,h=>179,b=>3,g=>1764834428,f=>2} 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65c05a000000270080000000d26278f8b3000000 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65c05a000000270080000000d26278f8b3000000 65032d0000008013020000007c3c3169b3000000 65c05a000000270080000000d26278f8b3000000 - {e=>28162,a=>-27,d=>2,c=>19,h=>16,b=>1,g=>1368222481,f=>3} e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e54026008000dc04c0000000a31ad62210000000 e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e54026008000dc04c0000000a31ad62210000000 e50113000200026e03000000116b8d5110000000 e54026008000dc04c0000000a31ad62210000000 - {e=>9500,a=>102,d=>2,c=>48,h=>250,b=>2,g=>153279384,f=>3} 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6680600080004a38c00000001245b730fa000000 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6680600080004a38c00000001245b730fa000000 6602300002001c250300000098db2209fa000000 6680600080004a38c00000001245b730fa000000 - {e=>6190,a=>-9,d=>3,c=>84,h=>49,b=>1,g=>1357610161,f=>0} f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f740a800c000305c00000000a1d6f96231000000 f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f740a800c000305c00000000a1d6f96231000000 f701540003002e1800000000b17ceb5031000000 f740a800c000305c00000000a1d6f96231000000 - {e=>18540,a=>-57,d=>3,c=>110,h=>172,b=>1,g=>1540619102,f=>1} c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c740dc00c00090d840000000b7a7f6bcac000000 c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c740dc00c00090d840000000b7a7f6bcac000000 c7016e0003006c48010000005efbd35bac000000 c740dc00c00090d840000000b7a7f6bcac000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>12,b=>0} 0c000000 0c000000 0c000000 000c0000 0c000000 0c000000 000c0000 0c000000 000c0000 - {a=>56,b=>0} 38000000 38000000 38000000 00380000 38000000 38000000 00380000 38000000 00380000 - {a=>-4,b=>1} fcff0100 fcff0100 fcff0100 fffc4000 fcff0100 fcff0100 fffc4000 fcff0100 fffc4000 - {a=>-26,b=>1} e6ff0100 e6ff0100 e6ff0100 ffe64000 e6ff0100 e6ff0100 ffe64000 e6ff0100 ffe64000 - {a=>108,b=>0} 6c000000 6c000000 6c000000 006c0000 6c000000 6c000000 006c0000 6c000000 006c0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>4,a=>-80,b=>3} b0ff0304 b0ff0304 b0ff0304 ffb0c008 b0ff0304 b0ff0304 ffb0c008 b0ff0304 ffb0c008 - {c=>37,a=>1,b=>1} 01000125 01000125 01000125 0001404a 01000125 01000125 0001404a 01000125 0001404a - {c=>79,a=>-80,b=>2} b0ff024f b0ff024f b0ff024f ffb0809e b0ff024f b0ff024f ffb0809e b0ff024f ffb0809e - {c=>19,a=>36,b=>0} 24000013 24000013 24000013 00240026 24000013 24000013 00240026 24000013 00240026 - {c=>71,a=>74,b=>3} 4a000347 4a000347 4a000347 004ac08e 4a000347 4a000347 004ac08e 4a000347 004ac08e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>100,a=>40,b=>1} 28000164 28000164 28000164 002840c8 28000164 28000164 002840c8 28000164 002840c8 - {c=>34,a=>-110,b=>1} 92ff0122 92ff0122 92ff0122 ff924044 92ff0122 92ff0122 ff924044 92ff0122 ff924044 - {c=>74,a=>109,b=>2} 6d00024a 6d00024a 6d00024a 006d8094 6d00024a 6d00024a 006d8094 6d00024a 006d8094 - {c=>106,a=>85,b=>3} 5500036a 5500036a 5500036a 0055c0d4 5500036a 5500036a 0055c0d4 5500036a 0055c0d4 - {c=>103,a=>-49,b=>2} cfff0267 cfff0267 cfff0267 ffcf80ce cfff0267 cfff0267 ffcf80ce cfff0267 ffcf80ce = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>65,a=>120,b=>3,d=>2} 780003410200 780003410200 780003410200 0078c0828000 7800034102000000 780003410200 0078c0828000 780003410200 0078c0828000 - {c=>0,a=>-65,b=>1,d=>0} bfff01000000 bfff01000000 bfff01000000 ffbf40000000 bfff010000000000 bfff01000000 ffbf40000000 bfff01000000 ffbf40000000 - {c=>45,a=>-28,b=>3,d=>3} e4ff032d0300 e4ff032d0300 e4ff032d0300 ffe4c05ac000 e4ff032d03000000 e4ff032d0300 ffe4c05ac000 e4ff032d0300 ffe4c05ac000 - {c=>47,a=>-69,b=>0,d=>1} bbff002f0100 bbff002f0100 bbff002f0100 ffbb005e4000 bbff002f01000000 bbff002f0100 ffbb005e4000 bbff002f0100 ffbb005e4000 - {c=>58,a=>-126,b=>2,d=>3} 82ff023a0300 82ff023a0300 82ff023a0300 ff828074c000 82ff023a03000000 82ff023a0300 ff828074c000 82ff023a0300 ff828074c000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>23184,c=>121,a=>-111,b=>3,d=>2} 91ff03790200905a 91ff03790200905a 91ff03790200905a ff91c0f28000b520 91ff03790200905a 91ff03790200905a ff91c0f28000b520 91ff03790200905a ff91c0f28000b520 - {e=>10634,c=>6,a=>0,b=>0,d=>1} 0000000601008a29 0000000601008a29 0000000601008a29 0000000c40005314 0000000601008a29 0000000601008a29 0000000c40005314 0000000601008a29 0000000c40005314 - {e=>1052,c=>95,a=>-110,b=>0,d=>3} 92ff005f03001c04 92ff005f03001c04 92ff005f03001c04 ff9200bec0000838 92ff005f03001c04 92ff005f03001c04 ff9200bec0000838 92ff005f03001c04 ff9200bec0000838 - {e=>30124,c=>4,a=>-80,b=>0,d=>1} b0ff00040100ac75 b0ff00040100ac75 b0ff00040100ac75 ffb000084000eb58 b0ff00040100ac75 b0ff00040100ac75 ffb000084000eb58 b0ff00040100ac75 ffb000084000eb58 - {e=>6111,c=>70,a=>-3,b=>0,d=>2} fdff00460200df17 fdff00460200df17 fdff00460200df17 fffd008c80002fbe fdff00460200df17 fdff00460200df17 fffd008c80002fbe fdff00460200df17 fffd008c80002fbe = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>27293,c=>0,a=>6,b=>1,d=>1} 0600010001009d6a 0600010001009d6a 0600010001009d6a 000640004000d53a 0600010001009d6a 0600010001009d6a 000640004000d53a 0600010001009d6a 000640004000d53a - {e=>7905,c=>88,a=>-84,b=>2,d=>1} acff02580100e11e acff02580100e11e acff02580100e11e ffac80b040003dc2 acff02580100e11e acff02580100e11e ffac80b040003dc2 acff02580100e11e ffac80b040003dc2 - {e=>25121,c=>6,a=>8,b=>1,d=>3} 0800010603002162 0800010603002162 0800010603002162 0008400cc000c442 0800010603002162 0800010603002162 0008400cc000c442 0800010603002162 0008400cc000c442 - {e=>31153,c=>31,a=>-128,b=>0,d=>1} 80ff001f0100b179 80ff001f0100b179 80ff001f0100b179 ff80003e4000f362 80ff001f0100b179 80ff001f0100b179 ff80003e4000f362 80ff001f0100b179 ff80003e4000f362 - {e=>26840,c=>3,a=>-81,b=>0,d=>1} afff00030100d868 afff00030100d868 afff00030100d868 ffaf00064000d1b0 afff00030100d868 afff00030100d868 ffaf00064000d1b0 afff00030100d868 ffaf00064000d1b0 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>14623,c=>76,a=>81,b=>1,d=>0,f=>0} 5100014c00001f3900000000 5100014c00001f3900000000 5100014c00001f3900000000 005140980000723e00000000 5100014c00001f3900000000 5100014c00001f3900000000 005140980000723e00000000 5100014c00001f3900000000 005140980000723e00000000 - {e=>15019,c=>26,a=>124,b=>1,d=>1,f=>0} 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 007c40344000755600000000 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 007c40344000755600000000 7c00011a0100ab3a00000000 007c40344000755600000000 - {e=>20293,c=>73,a=>-24,b=>3,d=>1,f=>2} e8ff03490100454f02000000 e8ff03490100454f02000000 e8ff03490100454f02000000 ffe8c09240009e8a80000000 e8ff03490100454f02000000 e8ff03490100454f02000000 ffe8c09240009e8a80000000 e8ff03490100454f02000000 ffe8c09240009e8a80000000 - {e=>10913,c=>40,a=>116,b=>1,d=>3,f=>3} 740001280300a12a03000000 740001280300a12a03000000 740001280300a12a03000000 00744050c0005542c0000000 740001280300a12a03000000 740001280300a12a03000000 00744050c0005542c0000000 740001280300a12a03000000 00744050c0005542c0000000 - {e=>7039,c=>44,a=>-19,b=>1,d=>3,f=>3} edff012c03007f1b03000000 edff012c03007f1b03000000 edff012c03007f1b03000000 ffed4058c00036fec0000000 edff012c03007f1b03000000 edff012c03007f1b03000000 ffed4058c00036fec0000000 edff012c03007f1b03000000 ffed4058c00036fec0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>24746,c=>73,a=>96,g=>1050064470,b=>1,d=>2,f=>3} 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 006040928000c154c00000007d2d6cac 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 006040928000c154c00000007d2d6cac 600001490200aa600300000056b6963e 006040928000c154c00000007d2d6cac - {e=>3803,c=>22,a=>94,g=>1842484087,b=>1,d=>2,f=>1} 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 005e402c80001db640000000dba426ee 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 005e402c80001db640000000dba426ee 5e0001160200db0e010000007713d26d 005e402c80001db640000000dba426ee - {e=>214,c=>123,a=>77,g=>1848243584,b=>0,d=>3,f=>3} 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 004d00f6c00001acc0000000dc53eb00 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 004d00f6c00001acc0000000dc53eb00 4d00007b0300d6000300000080f5296e 004d00f6c00001acc0000000dc53eb00 - {e=>26881,c=>70,a=>-34,g=>434815639,b=>2,d=>3,f=>2} deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 ffde808cc000d2028000000033d5852e deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 ffde808cc000d2028000000033d5852e deff0246030001690200000097c2ea19 ffde808cc000d2028000000033d5852e - {e=>29110,c=>65,a=>70,g=>1149188362,b=>3,d=>1,f=>1} 460003410100b671010000000a397f44 460003410100b671010000000a397f44 460003410100b671010000000a397f44 0046c0824000e36c4000000088fe7214 460003410100b671010000000a397f44 460003410100b671010000000a397f44 0046c0824000e36c4000000088fe7214 460003410100b671010000000a397f44 0046c0824000e36c4000000088fe7214 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>14421,a=>-30,d=>3,c=>26,h=>141,b=>1,g=>4188654,f=>3} e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 ffe24034c00070aac0000000007fd3dc8d000000 e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 ffe24034c00070aac0000000007fd3dc8d000000 e2ff011a0300553803000000eee93f008d000000 ffe24034c00070aac0000000007fd3dc8d000000 - {e=>8456,a=>9,d=>3,c=>14,h=>64,b=>1,g=>622335221,f=>2} 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0009401cc0004210800000004a3029ea40000000 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0009401cc0004210800000004a3029ea40000000 0900010e0300082102000000f514182540000000 0009401cc0004210800000004a3029ea40000000 - {e=>4776,a=>81,d=>2,c=>60,h=>86,b=>1,g=>767737936,f=>2} 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 0051407880002550800000005b8580a056000000 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 0051407880002550800000005b8580a056000000 5100013c0200a8120200000050c0c22d56000000 0051407880002550800000005b8580a056000000 - {e=>23388,a=>-75,d=>2,c=>8,h=>15,b=>3,g=>884282703,f=>1} b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 ffb5c0108000b6b840000000696a2a9e0f000000 b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 ffb5c0108000b6b840000000696a2a9e0f000000 b5ff030802005c5b010000004f15b5340f000000 ffb5c0108000b6b840000000696a2a9e0f000000 - {e=>12562,a=>25,d=>1,c=>64,h=>193,b=>0,g=>817252271,f=>0} 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 001900804000622400000000616c8f5ec1000000 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 001900804000622400000000616c8f5ec1000000 190000400100123100000000af47b630c1000000 001900804000622400000000616c8f5ec1000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>103,b=>3} 6700000003000000 6700000003000000 6700000003000000 00000067c0000000 6700000003000000 6700000003000000 00000067c0000000 6700000003000000 00000067c0000000 - {a=>40,b=>0} 2800000000000000 2800000000000000 2800000000000000 0000002800000000 2800000000000000 2800000000000000 0000002800000000 2800000000000000 0000002800000000 - {a=>49,b=>1} 3100000001000000 3100000001000000 3100000001000000 0000003140000000 3100000001000000 3100000001000000 0000003140000000 3100000001000000 0000003140000000 - {a=>21,b=>0} 1500000000000000 1500000000000000 1500000000000000 0000001500000000 1500000000000000 1500000000000000 0000001500000000 1500000000000000 0000001500000000 - {a=>111,b=>0} 6f00000000000000 6f00000000000000 6f00000000000000 0000006f00000000 6f00000000000000 6f00000000000000 0000006f00000000 6f00000000000000 0000006f00000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>103,a=>-126,b=>1} 82ffffff01670000 82ffffff01670000 82ffffff01670000 ffffff8240ce0000 82ffffff01670000 82ffffff01670000 ffffff8240ce0000 82ffffff01670000 ffffff8240ce0000 - {c=>66,a=>-92,b=>1} a4ffffff01420000 a4ffffff01420000 a4ffffff01420000 ffffffa440840000 a4ffffff01420000 a4ffffff01420000 ffffffa440840000 a4ffffff01420000 ffffffa440840000 - {c=>11,a=>61,b=>0} 3d000000000b0000 3d000000000b0000 3d000000000b0000 0000003d00160000 3d000000000b0000 3d000000000b0000 0000003d00160000 3d000000000b0000 0000003d00160000 - {c=>87,a=>-84,b=>2} acffffff02570000 acffffff02570000 acffffff02570000 ffffffac80ae0000 acffffff02570000 acffffff02570000 ffffffac80ae0000 acffffff02570000 ffffffac80ae0000 - {c=>62,a=>-50,b=>2} ceffffff023e0000 ceffffff023e0000 ceffffff023e0000 ffffffce807c0000 ceffffff023e0000 ceffffff023e0000 ffffffce807c0000 ceffffff023e0000 ffffffce807c0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>107,a=>0,b=>0} 00000000006b0000 00000000006b0000 00000000006b0000 0000000000d60000 00000000006b0000 00000000006b0000 0000000000d60000 00000000006b0000 0000000000d60000 - {c=>118,a=>-118,b=>1} 8affffff01760000 8affffff01760000 8affffff01760000 ffffff8a40ec0000 8affffff01760000 8affffff01760000 ffffff8a40ec0000 8affffff01760000 ffffff8a40ec0000 - {c=>69,a=>-37,b=>1} dbffffff01450000 dbffffff01450000 dbffffff01450000 ffffffdb408a0000 dbffffff01450000 dbffffff01450000 ffffffdb408a0000 dbffffff01450000 ffffffdb408a0000 - {c=>30,a=>91,b=>2} 5b000000021e0000 5b000000021e0000 5b000000021e0000 0000005b803c0000 5b000000021e0000 5b000000021e0000 0000005b803c0000 5b000000021e0000 0000005b803c0000 - {c=>29,a=>124,b=>0} 7c000000001d0000 7c000000001d0000 7c000000001d0000 0000007c003a0000 7c000000001d0000 7c000000001d0000 0000007c003a0000 7c000000001d0000 0000007c003a0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>61,a=>67,b=>2,d=>0} 43000000023d0000 43000000023d0000 43000000023d0000 00000043807a0000 43000000023d0000 43000000023d0000 00000043807a0000 43000000023d0000 00000043807a0000 - {c=>127,a=>17,b=>2,d=>1} 11000000027f0100 11000000027f0100 11000000027f0100 0000001180fe4000 11000000027f0100 11000000027f0100 0000001180fe4000 11000000027f0100 0000001180fe4000 - {c=>119,a=>32,b=>1,d=>1} 2000000001770100 2000000001770100 2000000001770100 0000002040ee4000 2000000001770100 2000000001770100 0000002040ee4000 2000000001770100 0000002040ee4000 - {c=>65,a=>-115,b=>0,d=>2} 8dffffff00410200 8dffffff00410200 8dffffff00410200 ffffff8d00828000 8dffffff00410200 8dffffff00410200 ffffff8d00828000 8dffffff00410200 ffffff8d00828000 - {c=>83,a=>98,b=>1,d=>1} 6200000001530100 6200000001530100 6200000001530100 0000006240a64000 6200000001530100 6200000001530100 0000006240a64000 6200000001530100 0000006240a64000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>5523,c=>25,a=>-32,b=>3,d=>2} e0ffffff0319020093150000 e0ffffff0319020093150000 e0ffffff0319020093150000 ffffffe0c03280002b260000 e0ffffff0319020093150000 e0ffffff0319020093150000 ffffffe0c03280002b260000 e0ffffff0319020093150000 ffffffe0c03280002b260000 - {e=>17834,c=>17,a=>118,b=>3,d=>1} 7600000003110100aa450000 7600000003110100aa450000 7600000003110100aa450000 00000076c02240008b540000 7600000003110100aa450000 7600000003110100aa450000 00000076c02240008b540000 7600000003110100aa450000 00000076c02240008b540000 - {e=>25877,c=>64,a=>-78,b=>2,d=>3} b2ffffff0240030015650000 b2ffffff0240030015650000 b2ffffff0240030015650000 ffffffb28080c000ca2a0000 b2ffffff0240030015650000 b2ffffff0240030015650000 ffffffb28080c000ca2a0000 b2ffffff0240030015650000 ffffffb28080c000ca2a0000 - {e=>5816,c=>42,a=>71,b=>2,d=>3} 47000000022a0300b8160000 47000000022a0300b8160000 47000000022a0300b8160000 000000478054c0002d700000 47000000022a0300b8160000 47000000022a0300b8160000 000000478054c0002d700000 47000000022a0300b8160000 000000478054c0002d700000 - {e=>29371,c=>34,a=>49,b=>0,d=>0} 3100000000220000bb720000 3100000000220000bb720000 3100000000220000bb720000 0000003100440000e5760000 3100000000220000bb720000 3100000000220000bb720000 0000003100440000e5760000 3100000000220000bb720000 0000003100440000e5760000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>24240,c=>104,a=>-100,b=>1,d=>0} 9cffffff01680000b05e0000 9cffffff01680000b05e0000 9cffffff01680000b05e0000 ffffff9c40d00000bd600000 9cffffff01680000b05e0000 9cffffff01680000b05e0000 ffffff9c40d00000bd600000 9cffffff01680000b05e0000 ffffff9c40d00000bd600000 - {e=>12831,c=>111,a=>9,b=>1,d=>3} 09000000016f03001f320000 09000000016f03001f320000 09000000016f03001f320000 0000000940dec000643e0000 09000000016f03001f320000 09000000016f03001f320000 0000000940dec000643e0000 09000000016f03001f320000 0000000940dec000643e0000 - {e=>30312,c=>91,a=>97,b=>1,d=>2} 61000000015b020068760000 61000000015b020068760000 61000000015b020068760000 0000006140b68000ecd00000 61000000015b020068760000 61000000015b020068760000 0000006140b68000ecd00000 61000000015b020068760000 0000006140b68000ecd00000 - {e=>10363,c=>58,a=>-82,b=>1,d=>0} aeffffff013a00007b280000 aeffffff013a00007b280000 aeffffff013a00007b280000 ffffffae4074000050f60000 aeffffff013a00007b280000 aeffffff013a00007b280000 ffffffae4074000050f60000 aeffffff013a00007b280000 ffffffae4074000050f60000 - {e=>29377,c=>72,a=>39,b=>0,d=>0} 2700000000480000c1720000 2700000000480000c1720000 2700000000480000c1720000 0000002700900000e5820000 2700000000480000c1720000 2700000000480000c1720000 0000002700900000e5820000 2700000000480000c1720000 0000002700900000e5820000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>17692,c=>26,a=>9,b=>2,d=>0,f=>3} 09000000021a00001c45000003000000 09000000021a00001c45000003000000 09000000021a00001c45000003000000 00000009803400008a380000c0000000 09000000021a00001c45000003000000 09000000021a00001c45000003000000 00000009803400008a380000c0000000 09000000021a00001c45000003000000 00000009803400008a380000c0000000 - {e=>27254,c=>68,a=>-9,b=>3,d=>1,f=>2} f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 fffffff7c0884000d4ec000080000000 f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 fffffff7c0884000d4ec000080000000 f7ffffff03440100766a000002000000 fffffff7c0884000d4ec000080000000 - {e=>6512,c=>116,a=>59,b=>0,d=>3,f=>0} 3b000000007403007019000000000000 3b000000007403007019000000000000 3b000000007403007019000000000000 0000003b00e8c00032e0000000000000 3b000000007403007019000000000000 3b000000007403007019000000000000 0000003b00e8c00032e0000000000000 3b000000007403007019000000000000 0000003b00e8c00032e0000000000000 - {e=>1930,c=>119,a=>83,b=>0,d=>0,f=>3} 53000000007700008a07000003000000 53000000007700008a07000003000000 53000000007700008a07000003000000 0000005300ee00000f140000c0000000 53000000007700008a07000003000000 53000000007700008a07000003000000 0000005300ee00000f140000c0000000 53000000007700008a07000003000000 0000005300ee00000f140000c0000000 - {e=>15816,c=>57,a=>52,b=>1,d=>3,f=>3} 3400000001390300c83d000003000000 3400000001390300c83d000003000000 3400000001390300c83d000003000000 000000344072c0007b900000c0000000 3400000001390300c83d000003000000 3400000001390300c83d000003000000 000000344072c0007b900000c0000000 3400000001390300c83d000003000000 000000344072c0007b900000c0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>30223,c=>33,a=>-100,g=>121180495,b=>1,d=>2,f=>0} 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 ffffff9c40428000ec1e0000000000000e72229e 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 ffffff9c40428000ec1e0000000000000e72229e 9cffffff012102000f760000000000004f113907 ffffff9c40428000ec1e0000000000000e72229e - {e=>18201,c=>67,a=>-52,g=>392025226,b=>0,d=>0,f=>2} ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ffffffcc008600008e320000800000002ebba914 ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ffffffcc008600008e320000800000002ebba914 ccffffff0043000019470000020000008ad45d17 ffffffcc008600008e320000800000002ebba914 - {e=>17360,c=>19,a=>-73,g=>394570984,b=>1,d=>1,f=>3} b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 ffffffb74026400087a00000c00000002f0959d0 b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 ffffffb74026400087a00000c00000002f0959d0 b7ffffff01130100d043000003000000e8ac8417 ffffffb74026400087a00000c00000002f0959d0 - {e=>10287,c=>34,a=>-106,g=>498558563,b=>2,d=>3,f=>3} 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d ffffff968044c000505e0000c00000003b6eccc6 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d ffffff968044c000505e0000c00000003b6eccc6 96ffffff022203002f280000030000006366b71d ffffff968044c000505e0000c00000003b6eccc6 - {e=>9740,c=>45,a=>86,g=>1880755291,b=>1,d=>0,f=>2} 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 00000056405a00004c18000080000000e03418b6 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 00000056405a00004c18000080000000e03418b6 56000000012d00000c260000020000005b0c1a70 00000056405a00004c18000080000000e03418b6 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>23079,a=>112,d=>1,c=>76,h=>172,b=>0,g=>635357675,f=>2} 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 0000007000984000b44e0000800000004bbd93d6ac000000 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 0000007000984000b44e0000800000004bbd93d6ac000000 70000000004c0100275a000002000000ebc9de25ac000000 0000007000984000b44e0000800000004bbd93d6ac000000 - {e=>26130,a=>-73,d=>3,c=>118,h=>116,b=>0,g=>1812500274,f=>1} b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 ffffffb700ecc000cc24000040000000d8111e6474000000 b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 ffffffb700ecc000cc24000040000000d8111e6474000000 b7ffffff007603001266000001000000328f086c74000000 ffffffb700ecc000cc24000040000000d8111e6474000000 - {e=>24159,a=>-26,d=>2,c=>104,h=>134,b=>0,g=>700333779,f=>0} e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 ffffffe600d08000bcbe000000000000537c7da686000000 e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 ffffffe600d08000bcbe000000000000537c7da686000000 e6ffffff006802005f5e000000000000d33ebe2986000000 ffffffe600d08000bcbe000000000000537c7da686000000 - {e=>2660,a=>-41,d=>2,c=>126,h=>49,b=>2,g=>1088641385,f=>0} d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 ffffffd780fc800014c800000000000081c6b2d231000000 d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 ffffffd780fc800014c800000000000081c6b2d231000000 d7ffffff027e0200640a0000000000006959e34031000000 ffffffd780fc800014c800000000000081c6b2d231000000 - {e=>25739,a=>-16,d=>2,c=>114,h=>244,b=>1,g=>1079005221,f=>1} f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 fffffff040e48000c91600004000000080a0a04af4000000 f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 fffffff040e48000c91600004000000080a0a04af4000000 f0ffffff017202008b6400000100000025505040f4000000 fffffff040e48000c91600004000000080a0a04af4000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>90,b=>1} 5a00000001000000 5a000000000000000100000000000000 5a000000000000000100000000000000 0000005a40000000 5a00000001000000 5a00000001000000 000000000000005a4000000000000000 5a00000001000000 0000005a40000000 - {a=>-80,b=>0} b0ffffff00000000 b0ffffffffffffff0000000000000000 b0ffffffffffffff0000000000000000 ffffffb000000000 b0ffffff00000000 b0ffffff00000000 ffffffffffffffb00000000000000000 b0ffffff00000000 ffffffb000000000 - {a=>68,b=>2} 4400000002000000 44000000000000000200000000000000 44000000000000000200000000000000 0000004480000000 4400000002000000 4400000002000000 00000000000000448000000000000000 4400000002000000 0000004480000000 - {a=>-83,b=>3} adffffff03000000 adffffffffffffff0300000000000000 adffffffffffffff0300000000000000 ffffffadc0000000 adffffff03000000 adffffff03000000 ffffffffffffffadc000000000000000 adffffff03000000 ffffffadc0000000 - {a=>-41,b=>3} d7ffffff03000000 d7ffffffffffffff0300000000000000 d7ffffffffffffff0300000000000000 ffffffd7c0000000 d7ffffff03000000 d7ffffff03000000 ffffffffffffffd7c000000000000000 d7ffffff03000000 ffffffd7c0000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>109,a=>96,b=>1} 60000000016d0000 6000000000000000016d000000000000 6000000000000000016d000000000000 0000006040da0000 60000000016d0000 60000000016d0000 000000000000006040da000000000000 60000000016d0000 0000006040da0000 - {c=>31,a=>-56,b=>2} c8ffffff021f0000 c8ffffffffffffff021f000000000000 c8ffffffffffffff021f000000000000 ffffffc8803e0000 c8ffffff021f0000 c8ffffff021f0000 ffffffffffffffc8803e000000000000 c8ffffff021f0000 ffffffc8803e0000 - {c=>61,a=>16,b=>3} 10000000033d0000 1000000000000000033d000000000000 1000000000000000033d000000000000 00000010c07a0000 10000000033d0000 10000000033d0000 0000000000000010c07a000000000000 10000000033d0000 00000010c07a0000 - {c=>108,a=>110,b=>1} 6e000000016c0000 6e00000000000000016c000000000000 6e00000000000000016c000000000000 0000006e40d80000 6e000000016c0000 6e000000016c0000 000000000000006e40d8000000000000 6e000000016c0000 0000006e40d80000 - {c=>19,a=>38,b=>3} 2600000003130000 26000000000000000313000000000000 26000000000000000313000000000000 00000026c0260000 2600000003130000 2600000003130000 0000000000000026c026000000000000 2600000003130000 00000026c0260000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>11,a=>-122,b=>1} 86ffffff010b0000 86ffffffffffffff010b000000000000 86ffffffffffffff010b000000000000 ffffff8640160000 86ffffff010b0000 86ffffff010b0000 ffffffffffffff864016000000000000 86ffffff010b0000 ffffff8640160000 - {c=>97,a=>16,b=>1} 1000000001610000 10000000000000000161000000000000 10000000000000000161000000000000 0000001040c20000 1000000001610000 1000000001610000 000000000000001040c2000000000000 1000000001610000 0000001040c20000 - {c=>80,a=>-128,b=>2} 80ffffff02500000 80ffffffffffffff0250000000000000 80ffffffffffffff0250000000000000 ffffff8080a00000 80ffffff02500000 80ffffff02500000 ffffffffffffff8080a0000000000000 80ffffff02500000 ffffff8080a00000 - {c=>14,a=>123,b=>0} 7b000000000e0000 7b00000000000000000e000000000000 7b00000000000000000e000000000000 0000007b001c0000 7b000000000e0000 7b000000000e0000 000000000000007b001c000000000000 7b000000000e0000 0000007b001c0000 - {c=>103,a=>47,b=>2} 2f00000002670000 2f000000000000000267000000000000 2f000000000000000267000000000000 0000002f80ce0000 2f00000002670000 2f00000002670000 000000000000002f80ce000000000000 2f00000002670000 0000002f80ce0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>34,a=>-101,b=>0,d=>3} 9bffffff00220300 9bffffffffffffff0022030000000000 9bffffffffffffff0022030000000000 ffffff9b0044c000 9bffffff00220300 9bffffff00220300 ffffffffffffff9b0044c00000000000 9bffffff00220300 ffffff9b0044c000 - {c=>68,a=>-41,b=>0,d=>2} d7ffffff00440200 d7ffffffffffffff0044020000000000 d7ffffffffffffff0044020000000000 ffffffd700888000 d7ffffff00440200 d7ffffff00440200 ffffffffffffffd70088800000000000 d7ffffff00440200 ffffffd700888000 - {c=>43,a=>8,b=>0,d=>3} 08000000002b0300 0800000000000000002b030000000000 0800000000000000002b030000000000 000000080056c000 08000000002b0300 08000000002b0300 00000000000000080056c00000000000 08000000002b0300 000000080056c000 - {c=>1,a=>-35,b=>1,d=>1} ddffffff01010100 ddffffffffffffff0101010000000000 ddffffffffffffff0101010000000000 ffffffdd40024000 ddffffff01010100 ddffffff01010100 ffffffffffffffdd4002400000000000 ddffffff01010100 ffffffdd40024000 - {c=>76,a=>104,b=>1,d=>0} 68000000014c0000 6800000000000000014c000000000000 6800000000000000014c000000000000 0000006840980000 68000000014c0000 68000000014c0000 00000000000000684098000000000000 68000000014c0000 0000006840980000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>24942,c=>46,a=>6,b=>3,d=>1} 06000000032e01006e610000 0600000000000000032e01006e610000 0600000000000000032e01006e610000 00000006c05c4000c2dc0000 06000000032e01006e610000 06000000032e01006e610000 0000000000000006c05c4000c2dc0000 06000000032e01006e610000 00000006c05c4000c2dc0000 - {e=>21474,c=>50,a=>-44,b=>1,d=>1} d4ffffff01320100e2530000 d4ffffffffffffff01320100e2530000 d4ffffffffffffff01320100e2530000 ffffffd440644000a7c40000 d4ffffff01320100e2530000 d4ffffff01320100e2530000 ffffffffffffffd440644000a7c40000 d4ffffff01320100e2530000 ffffffd440644000a7c40000 - {e=>3529,c=>20,a=>82,b=>2,d=>1} 5200000002140100c90d0000 520000000000000002140100c90d0000 520000000000000002140100c90d0000 00000052802840001b920000 5200000002140100c90d0000 5200000002140100c90d0000 0000000000000052802840001b920000 5200000002140100c90d0000 00000052802840001b920000 - {e=>17185,c=>27,a=>101,b=>1,d=>1} 65000000011b010021430000 6500000000000000011b010021430000 6500000000000000011b010021430000 000000654036400086420000 65000000011b010021430000 65000000011b010021430000 00000000000000654036400086420000 65000000011b010021430000 000000654036400086420000 - {e=>16801,c=>73,a=>65,b=>2,d=>0} 4100000002490000a1410000 410000000000000002490000a1410000 410000000000000002490000a1410000 000000418092000083420000 4100000002490000a1410000 4100000002490000a1410000 00000000000000418092000083420000 4100000002490000a1410000 000000418092000083420000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>19824,c=>4,a=>-13,b=>0,d=>3} f3ffffff00040300704d0000 f3ffffffffffffff00040300704d0000 f3ffffffffffffff00040300704d0000 fffffff30008c0009ae00000 f3ffffff00040300704d0000 f3ffffff00040300704d0000 fffffffffffffff30008c0009ae00000 f3ffffff00040300704d0000 fffffff30008c0009ae00000 - {e=>26529,c=>110,a=>-18,b=>0,d=>0} eeffffff006e0000a1670000 eeffffffffffffff006e0000a1670000 eeffffffffffffff006e0000a1670000 ffffffee00dc0000cf420000 eeffffff006e0000a1670000 eeffffff006e0000a1670000 ffffffffffffffee00dc0000cf420000 eeffffff006e0000a1670000 ffffffee00dc0000cf420000 - {e=>19156,c=>80,a=>-61,b=>3,d=>3} c3ffffff03500300d44a0000 c3ffffffffffffff03500300d44a0000 c3ffffffffffffff03500300d44a0000 ffffffc3c0a0c00095a80000 c3ffffff03500300d44a0000 c3ffffff03500300d44a0000 ffffffffffffffc3c0a0c00095a80000 c3ffffff03500300d44a0000 ffffffc3c0a0c00095a80000 - {e=>3691,c=>27,a=>-58,b=>3,d=>1} c6ffffff031b01006b0e0000 c6ffffffffffffff031b01006b0e0000 c6ffffffffffffff031b01006b0e0000 ffffffc6c03640001cd60000 c6ffffff031b01006b0e0000 c6ffffff031b01006b0e0000 ffffffffffffffc6c03640001cd60000 c6ffffff031b01006b0e0000 ffffffc6c03640001cd60000 - {e=>19252,c=>104,a=>-126,b=>0,d=>3} 82ffffff00680300344b0000 82ffffffffffffff00680300344b0000 82ffffffffffffff00680300344b0000 ffffff8200d0c00096680000 82ffffff00680300344b0000 82ffffff00680300344b0000 ffffffffffffff8200d0c00096680000 82ffffff00680300344b0000 ffffff8200d0c00096680000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>26648,c=>18,a=>21,b=>0,d=>0,f=>3} 15000000001200001868000003000000 150000000000000000120000186800000300000000000000 150000000000000000120000186800000300000000000000 0000001500240000d0300000c0000000 15000000001200001868000003000000 15000000001200001868000003000000 000000000000001500240000d0300000c000000000000000 15000000001200001868000003000000 0000001500240000d0300000c0000000 - {e=>4058,c=>41,a=>53,b=>2,d=>1,f=>1} 3500000002290100da0f000001000000 350000000000000002290100da0f00000100000000000000 350000000000000002290100da0f00000100000000000000 00000035805240001fb4000040000000 3500000002290100da0f000001000000 3500000002290100da0f000001000000 0000000000000035805240001fb400004000000000000000 3500000002290100da0f000001000000 00000035805240001fb4000040000000 - {e=>32076,c=>52,a=>69,b=>0,d=>3,f=>0} 45000000003403004c7d000000000000 4500000000000000003403004c7d00000000000000000000 4500000000000000003403004c7d00000000000000000000 000000450068c000fa98000000000000 45000000003403004c7d000000000000 45000000003403004c7d000000000000 00000000000000450068c000fa9800000000000000000000 45000000003403004c7d000000000000 000000450068c000fa98000000000000 - {e=>1444,c=>19,a=>67,b=>0,d=>3,f=>2} 4300000000130300a405000002000000 430000000000000000130300a40500000200000000000000 430000000000000000130300a40500000200000000000000 000000430026c0000b48000080000000 4300000000130300a405000002000000 4300000000130300a405000002000000 00000000000000430026c0000b4800008000000000000000 4300000000130300a405000002000000 000000430026c0000b48000080000000 - {e=>24969,c=>106,a=>-88,b=>3,d=>1,f=>2} a8ffffff036a01008961000002000000 a8ffffffffffffff036a0100896100000200000000000000 a8ffffffffffffff036a0100896100000200000000000000 ffffffa8c0d44000c312000080000000 a8ffffff036a01008961000002000000 a8ffffff036a01008961000002000000 ffffffffffffffa8c0d44000c31200008000000000000000 a8ffffff036a01008961000002000000 ffffffa8c0d44000c312000080000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16632,c=>60,a=>-40,g=>1817886941,b=>2,d=>3,f=>0} d8ffffff023c0300f840000000000000ddc05a6c d8ffffffffffffff023c0300f840000000000000ddc05a6c d8ffffffffffffff023c0300f840000000000000ddc05a6c ffffffd88078c00081f0000000000000d8b581ba d8ffffff023c0300f840000000000000ddc05a6c d8ffffff023c0300f840000000000000ddc05a6c ffffffffffffffd88078c00081f0000000000000d8b581ba d8ffffff023c0300f840000000000000ddc05a6c ffffffd88078c00081f0000000000000d8b581ba - {e=>473,c=>72,a=>-41,g=>52496826,b=>2,d=>0,f=>3} d7ffffff02480000d901000003000000ba092103 d7ffffffffffffff02480000d901000003000000ba092103 d7ffffffffffffff02480000d901000003000000ba092103 ffffffd78090000003b20000c000000006421374 d7ffffff02480000d901000003000000ba092103 d7ffffff02480000d901000003000000ba092103 ffffffffffffffd78090000003b20000c000000006421374 d7ffffff02480000d901000003000000ba092103 ffffffd78090000003b20000c000000006421374 - {e=>11344,c=>93,a=>112,g=>612815542,b=>2,d=>3,f=>3} 70000000025d0300502c000003000000b6d28624 7000000000000000025d0300502c000003000000b6d28624 7000000000000000025d0300502c000003000000b6d28624 0000007080bac00058a00000c0000000490da56c 70000000025d0300502c000003000000b6d28624 70000000025d0300502c000003000000b6d28624 000000000000007080bac00058a00000c0000000490da56c 70000000025d0300502c000003000000b6d28624 0000007080bac00058a00000c0000000490da56c - {e=>19196,c=>13,a=>-21,g=>359321552,b=>3,d=>0,f=>1} ebffffff030d0000fc4a000001000000d0cf6a15 ebffffffffffffff030d0000fc4a000001000000d0cf6a15 ebffffffffffffff030d0000fc4a000001000000d0cf6a15 ffffffebc01a000095f80000400000002ad59fa0 ebffffff030d0000fc4a000001000000d0cf6a15 ebffffff030d0000fc4a000001000000d0cf6a15 ffffffffffffffebc01a000095f80000400000002ad59fa0 ebffffff030d0000fc4a000001000000d0cf6a15 ffffffebc01a000095f80000400000002ad59fa0 - {e=>17883,c=>107,a=>108,g=>578088007,b=>3,d=>0,f=>1} 6c000000036b0000db4500000100000047ec7422 6c00000000000000036b0000db4500000100000047ec7422 6c00000000000000036b0000db4500000100000047ec7422 0000006cc0d600008bb600004000000044e9d88e 6c000000036b0000db4500000100000047ec7422 6c000000036b0000db4500000100000047ec7422 000000000000006cc0d600008bb600004000000044e9d88e 6c000000036b0000db4500000100000047ec7422 0000006cc0d600008bb600004000000044e9d88e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>12541,a=>64,d=>0,c=>105,h=>135,b=>2,g=>30539544,f=>0} 4000000002690000fd3000000000000018ffd10187000000 400000000000000002690000fd3000000000000018ffd1018700000000000000 400000000000000002690000fd3000000000000018ffd1018700000000000000 0000004080d2000061fa00000000000003a3fe3087000000 4000000002690000fd3000000000000018ffd10187000000 4000000002690000fd3000000000000018ffd10187000000 000000000000004080d2000061fa00000000000003a3fe308700000000000000 4000000002690000fd3000000000000018ffd10187000000 0000004080d2000061fa00000000000003a3fe3087000000 - {e=>20492,a=>-87,d=>3,c=>8,h=>213,b=>1,g=>1628818689,f=>3} a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffffffffffff010803000c5000000300000001cd1561d500000000000000 a9ffffffffffffff010803000c5000000300000001cd1561d500000000000000 ffffffa94010c000a0180000c0000000c22b9a02d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 ffffffffffffffa94010c000a0180000c0000000c22b9a02d500000000000000 a9ffffff010803000c5000000300000001cd1561d5000000 ffffffa94010c000a0180000c0000000c22b9a02d5000000 - {e=>19965,a=>102,d=>3,c=>44,h=>160,b=>1,g=>1186990891,f=>0} 66000000012c0300fd4d0000000000002b0bc046a0000000 6600000000000000012c0300fd4d0000000000002b0bc046a000000000000000 6600000000000000012c0300fd4d0000000000002b0bc046a000000000000000 000000664058c0009bfa0000000000008d801656a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 00000000000000664058c0009bfa0000000000008d801656a000000000000000 66000000012c0300fd4d0000000000002b0bc046a0000000 000000664058c0009bfa0000000000008d801656a0000000 - {e=>4623,a=>123,d=>0,c=>12,h=>32,b=>0,g=>776268733,f=>1} 7b000000000c00000f12000001000000bdeb442e20000000 7b00000000000000000c00000f12000001000000bdeb442e2000000000000000 7b00000000000000000c00000f12000001000000bdeb442e2000000000000000 0000007b00180000241e0000400000005c89d77a20000000 7b000000000c00000f12000001000000bdeb442e20000000 7b000000000c00000f12000001000000bdeb442e20000000 000000000000007b00180000241e0000400000005c89d77a2000000000000000 7b000000000c00000f12000001000000bdeb442e20000000 0000007b00180000241e0000400000005c89d77a20000000 - {e=>32210,a=>87,d=>3,c=>96,h=>9,b=>0,g=>416850484,f=>1} 5700000000600300d27d00000100000034a2d81809000000 570000000000000000600300d27d00000100000034a2d8180900000000000000 570000000000000000600300d27d00000100000034a2d8180900000000000000 0000005700c0c000fba400004000000031b1446809000000 5700000000600300d27d00000100000034a2d81809000000 5700000000600300d27d00000100000034a2d81809000000 000000000000005700c0c000fba400004000000031b144680900000000000000 5700000000600300d27d00000100000034a2d81809000000 0000005700c0c000fba400004000000031b1446809000000 = Convert-Binary-C-0.76/tests/502_bfmicrosoft.t0000644000175000001440000414714111550664621017457 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:27 +0200 $ # $Revision: 9 $ # $Source: /tests/502_bfmicrosoft.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 9031; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $BIN = $] < 5.006 ? '%x' : '%08b'; my @compiler = ( { 'name' => 'MSWin32/cl_pack01', 'config' => { 'Define' => [ 'PACK_PAREN=1' ], 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 1, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Microsoft' }, 'CompoundAlignment' => 1 } }, { 'name' => 'MSWin32/cl_pack02', 'config' => { 'Define' => [ 'PACK_PAREN=1' ], 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 2, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Microsoft' }, 'CompoundAlignment' => 1 } }, { 'name' => 'MSWin32/cl_pack04', 'config' => { 'Define' => [ 'PACK_PAREN=1' ], 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 4, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Microsoft' }, 'CompoundAlignment' => 1 } }, { 'name' => 'MSWin32/cl_plain', 'config' => { 'Define' => [ 'PACK_PAREN=1' ], 'LongSize' => 4, 'IntSize' => 4, 'ByteOrder' => 'LittleEndian', 'ShortSize' => 2, 'DoubleSize' => 8, 'CharSize' => 1, 'PointerSize' => 4, 'EnumSize' => 4, 'FloatSize' => 4, 'Alignment' => 8, 'LongLongSize' => 8, 'LongDoubleSize' => 8, 'HasCPPComments' => 1, 'Bitfields' => { 'Engine' => 'Microsoft' }, 'CompoundAlignment' => 1 } } ); my @c = eval { map { Convert::Binary::C->new(Bitfields => {Engine => 'Generic'}, EnumType => 'String', %{$_->{config}}) } @compiler }; is($@, '', "failed to create Convert::Binary::C objects"); sub debug { $ENV{CBC_TEST_DEBUG} and diag(@_); } sub showbits { join ' ', map { sprintf $BIN, $_ } unpack "C*", shift; } sub get_data { my $want = shift || 'list'; my $term = shift || '[-=]'; local $_; my @lines; while () { if (/^($term)$/) { $term = $1; last; } push @lines, $_ } if ($want eq 'list') { chomp @lines; return $term, @lines; } return $term, join('', @lines); } sub reccmp { my($ref, $val) = @_; unless (defined $ref and defined $val) { return defined($ref) == defined($val); } ref $ref or return $ref eq $val; if (ref $ref eq 'ARRAY') { @$ref == @$val or return 0; for (0..$#$ref) { reccmp($ref->[$_], $val->[$_]) or return 0; } } elsif (ref $ref eq 'HASH') { @{[keys %$ref]} == @{[keys %$val]} or return 0; for (keys %$ref) { reccmp($ref->{$_}, $val->{$_}) or return 0; } } else { return 0 } return 1; } while (1) { my(undef, $code) = get_data('block'); last if $code !~ /\S/; debug("Code:\n$code"); eval { $_->clean->parse($code) for @c }; is($@, '', 'parse code') or diag($code); is(scalar $c[0]->compound_names, 1, join(', ', $c[0]->compound_names)); my($type) = $c[0]->compound_names; while (1) { my($term, $init, @packed) = get_data; debug("Init: $init"); my $data = eval $init; my $succ = 0; for (@packed) { $_ = pack "H*", $_ } for my $i (0 .. $#packed) { debug("Compiler: [$i] $compiler[$i]{name}"); $c[$i]->sizeof($type) == length($packed[$i]) and $succ++; my $p = $c[$i]->pack($type, $data); if ($p eq $packed[$i]) { $succ++; } else { diag("[$i] $compiler[$i]{name}\n", $code, "data = $init\n", "expected: ", showbits($packed[$i]), "\n", " got: ", showbits($p), "\n"); } my $u = $c[$i]->unpack($type, $packed[$i]); if (reccmp($data, $u)) { $succ++; } else { diag("[$i] $compiler[$i]{name}\n", $code, "data = $init\n"); eval { require Data::Dumper; diag(Data::Dumper->Dump([$data, $u], [qw(*expected *got)])); }; } } is($succ, 3*@packed, "$type ($init)"); last if $term eq '='; } } __DATA__ struct basic { unsigned int a:9; }; - {a=>509} fd010000 fd010000 fd010000 fd010000 - {a=>352} 60010000 60010000 60010000 60010000 - {a=>349} 5d010000 5d010000 5d010000 5d010000 - {a=>398} 8e010000 8e010000 8e010000 8e010000 - {a=>453} c5010000 c5010000 c5010000 c5010000 = struct basic { unsigned int a:9; unsigned int b:2; }; - {a=>228,b=>3} e4060000 e4060000 e4060000 e4060000 - {a=>163,b=>0} a3000000 a3000000 a3000000 a3000000 - {a=>333,b=>3} 4d070000 4d070000 4d070000 4d070000 - {a=>495,b=>3} ef070000 ef070000 ef070000 ef070000 - {a=>193,b=>3} c1060000 c1060000 c1060000 c1060000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; }; - {a=>115,b=>1} 73020000 73020000 73020000 73020000 - {a=>283,b=>0} 1b010000 1b010000 1b010000 1b010000 - {a=>12,b=>1} 0c020000 0c020000 0c020000 0c020000 - {a=>417,b=>3} a1070000 a1070000 a1070000 a1070000 - {a=>129,b=>2} 81040000 81040000 81040000 81040000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; unsigned int c:2; }; - {c=>1,a=>473,b=>1} d9430000 d9430000 d9430000 d9430000 - {c=>2,a=>149,b=>2} 95840000 95840000 95840000 95840000 - {c=>3,a=>227,b=>2} e3c40000 e3c40000 e3c40000 e3c40000 - {c=>0,a=>114,b=>0} 72000000 72000000 72000000 72000000 - {c=>2,a=>83,b=>3} 53860000 53860000 53860000 53860000 = struct basic { unsigned int a:9; unsigned int b:2; unsigned int :3; unsigned int c:2; unsigned int d; }; - {c=>0,a=>134,b=>3,d=>231} 86060000e7000000 86060000e7000000 86060000e7000000 86060000e7000000 - {c=>0,a=>60,b=>0,d=>10} 3c0000000a000000 3c0000000a000000 3c0000000a000000 3c0000000a000000 - {c=>2,a=>170,b=>2,d=>252} aa840000fc000000 aa840000fc000000 aa840000fc000000 aa840000fc000000 - {c=>3,a=>53,b=>1,d=>248} 35c20000f8000000 35c20000f8000000 35c20000f8000000 35c20000f8000000 - {c=>3,a=>74,b=>3,d=>85} 4ac6000055000000 4ac6000055000000 4ac6000055000000 4ac6000055000000 = struct basic { char a; unsigned int b:9; }; - {a=>95,b=>334} 5f4e010000 5f004e010000 5f0000004e010000 5f0000004e010000 - {a=>43,b=>139} 2b8b000000 2b008b000000 2b0000008b000000 2b0000008b000000 - {a=>103,b=>500} 67f4010000 6700f4010000 67000000f4010000 67000000f4010000 - {a=>-82,b=>491} aeeb010000 ae00eb010000 ae000000eb010000 ae000000eb010000 - {a=>-81,b=>456} afc8010000 af00c8010000 af000000c8010000 af000000c8010000 = struct basic { char a; unsigned int b:9; unsigned int c:2; }; - {c=>1,a=>62,b=>455} 3ec7030000 3e00c7030000 3e000000c7030000 3e000000c7030000 - {c=>0,a=>-46,b=>32} d220000000 d20020000000 d200000020000000 d200000020000000 - {c=>0,a=>55,b=>501} 37f5010000 3700f5010000 37000000f5010000 37000000f5010000 - {c=>3,a=>72,b=>97} 4861060000 480061060000 4800000061060000 4800000061060000 - {c=>3,a=>91,b=>180} 5bb4060000 5b00b4060000 5b000000b4060000 5b000000b4060000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-64,b=>1} c001020000 c00001020000 c000000001020000 c000000001020000 - {c=>3,a=>43,b=>409} 2b99070000 2b0099070000 2b00000099070000 2b00000099070000 - {c=>1,a=>-30,b=>413} e29d030000 e2009d030000 e20000009d030000 e20000009d030000 - {c=>3,a=>107,b=>399} 6b8f070000 6b008f070000 6b0000008f070000 6b0000008f070000 - {c=>2,a=>-59,b=>474} c5da050000 c500da050000 c5000000da050000 c5000000da050000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>0,a=>-60,b=>352,d=>2} c460810000 c40060810000 c400000060810000 c400000060810000 - {c=>1,a=>89,b=>103,d=>2} 5967820000 590067820000 5900000067820000 5900000067820000 - {c=>0,a=>31,b=>136,d=>2} 1f88800000 1f0088800000 1f00000088800000 1f00000088800000 - {c=>0,a=>-103,b=>343,d=>0} 9957010000 990057010000 9900000057010000 9900000057010000 - {c=>2,a=>-102,b=>358,d=>0} 9a66050000 9a0066050000 9a00000066050000 9a00000066050000 = struct basic { char a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>205,c=>0,a=>57,b=>85,d=>3} 3955c00000cd000000 390055c00000cd000000 3900000055c00000cd000000 3900000055c00000cd000000 - {e=>218,c=>2,a=>-89,b=>129,d=>1} a781440000da000000 a70081440000da000000 a700000081440000da000000 a700000081440000da000000 - {e=>90,c=>3,a=>105,b=>77,d=>1} 694d4600005a000000 69004d4600005a000000 690000004d4600005a000000 690000004d4600005a000000 - {e=>82,c=>3,a=>89,b=>507,d=>0} 59fb07000052000000 5900fb07000052000000 59000000fb07000052000000 59000000fb07000052000000 - {e=>10,c=>1,a=>-7,b=>126,d=>0} f97e0200000a000000 f9007e0200000a000000 f90000007e0200000a000000 f90000007e0200000a000000 = struct basic { short a; unsigned int b:9; }; - {a=>44,b=>211} 2c00d3000000 2c00d3000000 2c000000d3000000 2c000000d3000000 - {a=>106,b=>55} 6a0037000000 6a0037000000 6a00000037000000 6a00000037000000 - {a=>-99,b=>100} 9dff64000000 9dff64000000 9dff000064000000 9dff000064000000 - {a=>-25,b=>17} e7ff11000000 e7ff11000000 e7ff000011000000 e7ff000011000000 - {a=>-60,b=>31} c4ff1f000000 c4ff1f000000 c4ff00001f000000 c4ff00001f000000 = struct basic { short a; unsigned int b:9; unsigned int c:2; }; - {c=>0,a=>-3,b=>65} fdff41000000 fdff41000000 fdff000041000000 fdff000041000000 - {c=>3,a=>127,b=>141} 7f008d060000 7f008d060000 7f0000008d060000 7f0000008d060000 - {c=>1,a=>-53,b=>123} cbff7b020000 cbff7b020000 cbff00007b020000 cbff00007b020000 - {c=>3,a=>-110,b=>69} 92ff45060000 92ff45060000 92ff000045060000 92ff000045060000 - {c=>1,a=>-63,b=>183} c1ffb7020000 c1ffb7020000 c1ff0000b7020000 c1ff0000b7020000 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-32,b=>280} e0ff18030000 e0ff18030000 e0ff000018030000 e0ff000018030000 - {c=>0,a=>-76,b=>473} b4ffd9010000 b4ffd9010000 b4ff0000d9010000 b4ff0000d9010000 - {c=>2,a=>-60,b=>271} c4ff0f050000 c4ff0f050000 c4ff00000f050000 c4ff00000f050000 - {c=>1,a=>72,b=>50} 480032020000 480032020000 4800000032020000 4800000032020000 - {c=>1,a=>-97,b=>440} 9fffb8030000 9fffb8030000 9fff0000b8030000 9fff0000b8030000 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>3,a=>-78,b=>286,d=>1} b2ff1e470000 b2ff1e470000 b2ff00001e470000 b2ff00001e470000 - {c=>2,a=>-105,b=>330,d=>3} 97ff4ac50000 97ff4ac50000 97ff00004ac50000 97ff00004ac50000 - {c=>0,a=>73,b=>33,d=>1} 490021400000 490021400000 4900000021400000 4900000021400000 - {c=>0,a=>-67,b=>463,d=>2} bdffcf810000 bdffcf810000 bdff0000cf810000 bdff0000cf810000 - {c=>0,a=>87,b=>452,d=>2} 5700c4810000 5700c4810000 57000000c4810000 57000000c4810000 = struct basic { short a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>78,c=>2,a=>-39,b=>178,d=>3} d9ffb2c400004e000000 d9ffb2c400004e000000 d9ff0000b2c400004e000000 d9ff0000b2c400004e000000 - {e=>4,c=>2,a=>51,b=>65,d=>2} 33004184000004000000 33004184000004000000 330000004184000004000000 330000004184000004000000 - {e=>225,c=>1,a=>-16,b=>99,d=>1} f0ff63420000e1000000 f0ff63420000e1000000 f0ff000063420000e1000000 f0ff000063420000e1000000 - {e=>23,c=>0,a=>-1,b=>254,d=>0} fffffe00000017000000 fffffe00000017000000 ffff0000fe00000017000000 ffff0000fe00000017000000 - {e=>75,c=>0,a=>7,b=>128,d=>1} 0700804000004b000000 0700804000004b000000 07000000804000004b000000 07000000804000004b000000 = struct basic { int a; unsigned int b:9; }; - {a=>26,b=>294} 1a00000026010000 1a00000026010000 1a00000026010000 1a00000026010000 - {a=>120,b=>54} 7800000036000000 7800000036000000 7800000036000000 7800000036000000 - {a=>-16,b=>377} f0ffffff79010000 f0ffffff79010000 f0ffffff79010000 f0ffffff79010000 - {a=>38,b=>179} 26000000b3000000 26000000b3000000 26000000b3000000 26000000b3000000 - {a=>116,b=>289} 7400000021010000 7400000021010000 7400000021010000 7400000021010000 = struct basic { int a; unsigned int b:9; unsigned int c:2; }; - {c=>1,a=>49,b=>430} 31000000ae030000 31000000ae030000 31000000ae030000 31000000ae030000 - {c=>3,a=>118,b=>459} 76000000cb070000 76000000cb070000 76000000cb070000 76000000cb070000 - {c=>0,a=>1,b=>148} 0100000094000000 0100000094000000 0100000094000000 0100000094000000 - {c=>0,a=>-80,b=>164} b0ffffffa4000000 b0ffffffa4000000 b0ffffffa4000000 b0ffffffa4000000 - {c=>3,a=>-5,b=>38} fbffffff26060000 fbffffff26060000 fbffffff26060000 fbffffff26060000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>0,a=>73,b=>253} 49000000fd000000 49000000fd000000 49000000fd000000 49000000fd000000 - {c=>3,a=>91,b=>302} 5b0000002e070000 5b0000002e070000 5b0000002e070000 5b0000002e070000 - {c=>3,a=>30,b=>58} 1e0000003a060000 1e0000003a060000 1e0000003a060000 1e0000003a060000 - {c=>0,a=>-109,b=>436} 93ffffffb4010000 93ffffffb4010000 93ffffffb4010000 93ffffffb4010000 - {c=>3,a=>-89,b=>300} a7ffffff2c070000 a7ffffff2c070000 a7ffffff2c070000 a7ffffff2c070000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>2,a=>-81,b=>332,d=>0} afffffff4c050000 afffffff4c050000 afffffff4c050000 afffffff4c050000 - {c=>0,a=>-118,b=>311,d=>3} 8affffff37c10000 8affffff37c10000 8affffff37c10000 8affffff37c10000 - {c=>2,a=>93,b=>362,d=>1} 5d0000006a450000 5d0000006a450000 5d0000006a450000 5d0000006a450000 - {c=>0,a=>122,b=>370,d=>0} 7a00000072010000 7a00000072010000 7a00000072010000 7a00000072010000 - {c=>2,a=>87,b=>107,d=>2} 570000006b840000 570000006b840000 570000006b840000 570000006b840000 = struct basic { int a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>246,c=>1,a=>109,b=>275,d=>1} 6d00000013430000f6000000 6d00000013430000f6000000 6d00000013430000f6000000 6d00000013430000f6000000 - {e=>120,c=>3,a=>80,b=>215,d=>2} 50000000d786000078000000 50000000d786000078000000 50000000d786000078000000 50000000d786000078000000 - {e=>236,c=>0,a=>88,b=>484,d=>2} 58000000e4810000ec000000 58000000e4810000ec000000 58000000e4810000ec000000 58000000e4810000ec000000 - {e=>9,c=>1,a=>-20,b=>117,d=>2} ecffffff7582000009000000 ecffffff7582000009000000 ecffffff7582000009000000 ecffffff7582000009000000 - {e=>135,c=>3,a=>126,b=>333,d=>1} 7e0000004d47000087000000 7e0000004d47000087000000 7e0000004d47000087000000 7e0000004d47000087000000 = struct basic { long a; unsigned int b:9; }; - {a=>-90,b=>99} a6ffffff63000000 a6ffffff63000000 a6ffffff63000000 a6ffffff63000000 - {a=>18,b=>50} 1200000032000000 1200000032000000 1200000032000000 1200000032000000 - {a=>-120,b=>264} 88ffffff08010000 88ffffff08010000 88ffffff08010000 88ffffff08010000 - {a=>23,b=>32} 1700000020000000 1700000020000000 1700000020000000 1700000020000000 - {a=>42,b=>321} 2a00000041010000 2a00000041010000 2a00000041010000 2a00000041010000 = struct basic { long a; unsigned int b:9; unsigned int c:2; }; - {c=>3,a=>37,b=>303} 250000002f070000 250000002f070000 250000002f070000 250000002f070000 - {c=>3,a=>-87,b=>458} a9ffffffca070000 a9ffffffca070000 a9ffffffca070000 a9ffffffca070000 - {c=>3,a=>-86,b=>453} aaffffffc5070000 aaffffffc5070000 aaffffffc5070000 aaffffffc5070000 - {c=>0,a=>96,b=>71} 6000000047000000 6000000047000000 6000000047000000 6000000047000000 - {c=>0,a=>-46,b=>254} d2fffffffe000000 d2fffffffe000000 d2fffffffe000000 d2fffffffe000000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; }; - {c=>1,a=>-123,b=>56} 85ffffff38020000 85ffffff38020000 85ffffff38020000 85ffffff38020000 - {c=>1,a=>-36,b=>276} dcffffff14030000 dcffffff14030000 dcffffff14030000 dcffffff14030000 - {c=>2,a=>26,b=>453} 1a000000c5050000 1a000000c5050000 1a000000c5050000 1a000000c5050000 - {c=>0,a=>95,b=>479} 5f000000df010000 5f000000df010000 5f000000df010000 5f000000df010000 - {c=>1,a=>28,b=>16} 1c00000010020000 1c00000010020000 1c00000010020000 1c00000010020000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; }; - {c=>3,a=>-75,b=>292,d=>0} b5ffffff24070000 b5ffffff24070000 b5ffffff24070000 b5ffffff24070000 - {c=>0,a=>24,b=>330,d=>0} 180000004a010000 180000004a010000 180000004a010000 180000004a010000 - {c=>3,a=>2,b=>332,d=>1} 020000004c470000 020000004c470000 020000004c470000 020000004c470000 - {c=>2,a=>74,b=>257,d=>1} 4a00000001450000 4a00000001450000 4a00000001450000 4a00000001450000 - {c=>2,a=>106,b=>208,d=>3} 6a000000d0c40000 6a000000d0c40000 6a000000d0c40000 6a000000d0c40000 = struct basic { long a; unsigned int b:9; unsigned int c:2; unsigned int :3; unsigned int d:2; unsigned int e; }; - {e=>118,c=>0,a=>26,b=>490,d=>2} 1a000000ea81000076000000 1a000000ea81000076000000 1a000000ea81000076000000 1a000000ea81000076000000 - {e=>200,c=>0,a=>6,b=>418,d=>1} 06000000a2410000c8000000 06000000a2410000c8000000 06000000a2410000c8000000 06000000a2410000c8000000 - {e=>40,c=>1,a=>41,b=>444,d=>2} 29000000bc83000028000000 29000000bc83000028000000 29000000bc83000028000000 29000000bc83000028000000 - {e=>154,c=>0,a=>0,b=>88,d=>3} 0000000058c000009a000000 0000000058c000009a000000 0000000058c000009a000000 0000000058c000009a000000 - {e=>163,c=>3,a=>-5,b=>393,d=>0} fbffffff89070000a3000000 fbffffff89070000a3000000 fbffffff89070000a3000000 fbffffff89070000a3000000 = struct uchar { unsigned char a:1; }; - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 = struct uchar { unsigned char a:1; unsigned char b:1; }; - {a=>1,b=>0} 01 01 01 01 - {a=>1,b=>1} 03 03 03 03 - {a=>0,b=>0} 00 00 00 00 - {a=>1,b=>1} 03 03 03 03 - {a=>0,b=>1} 02 02 02 02 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>1,b=>1} 07 07 07 07 - {c=>1,a=>0,b=>0} 04 04 04 04 - {c=>0,a=>0,b=>0} 00 00 00 00 - {c=>1,a=>1,b=>1} 07 07 07 07 - {c=>1,a=>1,b=>0} 05 05 05 05 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>0,b=>1,d=>1} 0e 0e 0e 0e - {c=>0,a=>1,b=>0,d=>0} 01 01 01 01 - {c=>0,a=>0,b=>1,d=>1} 0a 0a 0a 0a - {c=>1,a=>0,b=>0,d=>1} 0c 0c 0c 0c - {c=>0,a=>1,b=>0,d=>0} 01 01 01 01 = struct uchar { unsigned char a:1; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned int e; }; - {e=>111,c=>1,a=>1,b=>1,d=>1} 0f6f000000 0f006f000000 0f0000006f000000 0f0000006f000000 - {e=>24,c=>0,a=>0,b=>1,d=>0} 0218000000 020018000000 0200000018000000 0200000018000000 - {e=>185,c=>0,a=>0,b=>1,d=>0} 02b9000000 0200b9000000 02000000b9000000 02000000b9000000 - {e=>229,c=>1,a=>0,b=>1,d=>1} 0ee5000000 0e00e5000000 0e000000e5000000 0e000000e5000000 - {e=>255,c=>0,a=>1,b=>0,d=>1} 09ff000000 0900ff000000 09000000ff000000 09000000ff000000 = struct uchar { char a; unsigned char b:1; }; - {a=>-120,b=>1} 8801 8801 8801 8801 - {a=>70,b=>0} 4600 4600 4600 4600 - {a=>81,b=>0} 5100 5100 5100 5100 - {a=>56,b=>1} 3801 3801 3801 3801 - {a=>126,b=>0} 7e00 7e00 7e00 7e00 = struct uchar { char a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>16,b=>1} 1003 1003 1003 1003 - {c=>0,a=>90,b=>1} 5a01 5a01 5a01 5a01 - {c=>0,a=>-85,b=>0} ab00 ab00 ab00 ab00 - {c=>0,a=>74,b=>1} 4a01 4a01 4a01 4a01 - {c=>0,a=>-127,b=>0} 8100 8100 8100 8100 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>-84,b=>0,d=>1} ac06 ac06 ac06 ac06 - {c=>1,a=>-93,b=>1,d=>0} a303 a303 a303 a303 - {c=>1,a=>-94,b=>1,d=>1} a207 a207 a207 a207 - {c=>1,a=>116,b=>0,d=>0} 7402 7402 7402 7402 - {c=>1,a=>92,b=>0,d=>1} 5c06 5c06 5c06 5c06 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>1,c=>0,a=>-104,b=>1,d=>0} 9809 9809 9809 9809 - {e=>0,c=>1,a=>-94,b=>0,d=>0} a202 a202 a202 a202 - {e=>0,c=>0,a=>113,b=>1,d=>0} 7101 7101 7101 7101 - {e=>1,c=>0,a=>25,b=>1,d=>1} 190d 190d 190d 190d - {e=>0,c=>0,a=>-21,b=>1,d=>1} eb05 eb05 eb05 eb05 = struct uchar { char a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>1,c=>1,a=>58,b=>1,d=>0,f=>7} 3a0b07000000 3a0b07000000 3a0b000007000000 3a0b000007000000 - {e=>0,c=>0,a=>9,b=>0,d=>1,f=>220} 0904dc000000 0904dc000000 09040000dc000000 09040000dc000000 - {e=>0,c=>1,a=>123,b=>1,d=>0,f=>59} 7b033b000000 7b033b000000 7b0300003b000000 7b0300003b000000 - {e=>0,c=>1,a=>-113,b=>1,d=>1,f=>172} 8f07ac000000 8f07ac000000 8f070000ac000000 8f070000ac000000 - {e=>0,c=>1,a=>75,b=>0,d=>1,f=>175} 4b06af000000 4b06af000000 4b060000af000000 4b060000af000000 = struct uchar { short a; unsigned char b:1; }; - {a=>-46,b=>1} d2ff01 d2ff0100 d2ff0100 d2ff0100 - {a=>32,b=>1} 200001 20000100 20000100 20000100 - {a=>-26,b=>0} e6ff00 e6ff0000 e6ff0000 e6ff0000 - {a=>122,b=>0} 7a0000 7a000000 7a000000 7a000000 - {a=>-51,b=>0} cdff00 cdff0000 cdff0000 cdff0000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>14,b=>0} 0e0002 0e000200 0e000200 0e000200 - {c=>1,a=>-41,b=>0} d7ff02 d7ff0200 d7ff0200 d7ff0200 - {c=>1,a=>-93,b=>1} a3ff03 a3ff0300 a3ff0300 a3ff0300 - {c=>0,a=>-76,b=>1} b4ff01 b4ff0100 b4ff0100 b4ff0100 - {c=>0,a=>-111,b=>0} 91ff00 91ff0000 91ff0000 91ff0000 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>0,a=>7,b=>1,d=>0} 070001 07000100 07000100 07000100 - {c=>0,a=>64,b=>0,d=>0} 400000 40000000 40000000 40000000 - {c=>1,a=>7,b=>0,d=>0} 070002 07000200 07000200 07000200 - {c=>1,a=>-72,b=>1,d=>1} b8ff07 b8ff0700 b8ff0700 b8ff0700 - {c=>1,a=>62,b=>0,d=>1} 3e0006 3e000600 3e000600 3e000600 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>1,a=>-108,b=>1,d=>0} 94ff03 94ff0300 94ff0300 94ff0300 - {e=>1,c=>0,a=>-125,b=>1,d=>0} 83ff09 83ff0900 83ff0900 83ff0900 - {e=>0,c=>1,a=>52,b=>1,d=>0} 340003 34000300 34000300 34000300 - {e=>0,c=>0,a=>-93,b=>0,d=>0} a3ff00 a3ff0000 a3ff0000 a3ff0000 - {e=>1,c=>0,a=>-128,b=>0,d=>1} 80ff0c 80ff0c00 80ff0c00 80ff0c00 = struct uchar { short a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>0,a=>72,b=>1,d=>1,f=>111} 4800056f000000 480005006f000000 480005006f000000 480005006f000000 - {e=>0,c=>1,a=>-44,b=>0,d=>0,f=>40} d4ff0228000000 d4ff020028000000 d4ff020028000000 d4ff020028000000 - {e=>1,c=>1,a=>121,b=>1,d=>0,f=>41} 79000b29000000 79000b0029000000 79000b0029000000 79000b0029000000 - {e=>0,c=>1,a=>-68,b=>1,d=>0,f=>136} bcff0388000000 bcff030088000000 bcff030088000000 bcff030088000000 - {e=>0,c=>0,a=>-73,b=>1,d=>0,f=>25} b7ff0119000000 b7ff010019000000 b7ff010019000000 b7ff010019000000 = struct uchar { int a; unsigned char b:1; }; - {a=>-57,b=>0} c7ffffff00 c7ffffff0000 c7ffffff00000000 c7ffffff00000000 - {a=>-29,b=>0} e3ffffff00 e3ffffff0000 e3ffffff00000000 e3ffffff00000000 - {a=>-23,b=>0} e9ffffff00 e9ffffff0000 e9ffffff00000000 e9ffffff00000000 - {a=>-128,b=>1} 80ffffff01 80ffffff0100 80ffffff01000000 80ffffff01000000 - {a=>-58,b=>0} c6ffffff00 c6ffffff0000 c6ffffff00000000 c6ffffff00000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-78,b=>1} b2ffffff03 b2ffffff0300 b2ffffff03000000 b2ffffff03000000 - {c=>0,a=>-100,b=>1} 9cffffff01 9cffffff0100 9cffffff01000000 9cffffff01000000 - {c=>0,a=>-27,b=>0} e5ffffff00 e5ffffff0000 e5ffffff00000000 e5ffffff00000000 - {c=>1,a=>-123,b=>1} 85ffffff03 85ffffff0300 85ffffff03000000 85ffffff03000000 - {c=>0,a=>-84,b=>0} acffffff00 acffffff0000 acffffff00000000 acffffff00000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>82,b=>0,d=>0} 5200000002 520000000200 5200000002000000 5200000002000000 - {c=>0,a=>20,b=>0,d=>1} 1400000004 140000000400 1400000004000000 1400000004000000 - {c=>1,a=>95,b=>0,d=>0} 5f00000002 5f0000000200 5f00000002000000 5f00000002000000 - {c=>0,a=>71,b=>0,d=>0} 4700000000 470000000000 4700000000000000 4700000000000000 - {c=>1,a=>-38,b=>0,d=>0} daffffff02 daffffff0200 daffffff02000000 daffffff02000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>0,a=>-32,b=>1,d=>1} e0ffffff05 e0ffffff0500 e0ffffff05000000 e0ffffff05000000 - {e=>0,c=>1,a=>-34,b=>1,d=>1} deffffff07 deffffff0700 deffffff07000000 deffffff07000000 - {e=>1,c=>1,a=>70,b=>1,d=>1} 460000000f 460000000f00 460000000f000000 460000000f000000 - {e=>0,c=>1,a=>127,b=>1,d=>1} 7f00000007 7f0000000700 7f00000007000000 7f00000007000000 - {e=>1,c=>0,a=>54,b=>1,d=>1} 360000000d 360000000d00 360000000d000000 360000000d000000 = struct uchar { int a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>0,a=>-63,b=>1,d=>1,f=>112} c1ffffff0570000000 c1ffffff050070000000 c1ffffff0500000070000000 c1ffffff0500000070000000 - {e=>0,c=>1,a=>-107,b=>0,d=>0,f=>190} 95ffffff02be000000 95ffffff0200be000000 95ffffff02000000be000000 95ffffff02000000be000000 - {e=>0,c=>0,a=>-47,b=>1,d=>1,f=>78} d1ffffff054e000000 d1ffffff05004e000000 d1ffffff050000004e000000 d1ffffff050000004e000000 - {e=>1,c=>0,a=>65,b=>1,d=>1,f=>14} 410000000d0e000000 410000000d000e000000 410000000d0000000e000000 410000000d0000000e000000 - {e=>1,c=>0,a=>52,b=>0,d=>1,f=>169} 340000000ca9000000 340000000c00a9000000 340000000c000000a9000000 340000000c000000a9000000 = struct uchar { long a; unsigned char b:1; }; - {a=>118,b=>0} 7600000000 760000000000 7600000000000000 7600000000000000 - {a=>-95,b=>1} a1ffffff01 a1ffffff0100 a1ffffff01000000 a1ffffff01000000 - {a=>38,b=>0} 2600000000 260000000000 2600000000000000 2600000000000000 - {a=>50,b=>0} 3200000000 320000000000 3200000000000000 3200000000000000 - {a=>81,b=>0} 5100000000 510000000000 5100000000000000 5100000000000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>97,b=>0} 6100000000 610000000000 6100000000000000 6100000000000000 - {c=>0,a=>-20,b=>0} ecffffff00 ecffffff0000 ecffffff00000000 ecffffff00000000 - {c=>0,a=>-81,b=>0} afffffff00 afffffff0000 afffffff00000000 afffffff00000000 - {c=>0,a=>75,b=>0} 4b00000000 4b0000000000 4b00000000000000 4b00000000000000 - {c=>0,a=>-108,b=>1} 94ffffff01 94ffffff0100 94ffffff01000000 94ffffff01000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; }; - {c=>1,a=>101,b=>1,d=>0} 6500000003 650000000300 6500000003000000 6500000003000000 - {c=>0,a=>-71,b=>0,d=>1} b9ffffff04 b9ffffff0400 b9ffffff04000000 b9ffffff04000000 - {c=>1,a=>-61,b=>0,d=>1} c3ffffff06 c3ffffff0600 c3ffffff06000000 c3ffffff06000000 - {c=>1,a=>-98,b=>0,d=>1} 9effffff06 9effffff0600 9effffff06000000 9effffff06000000 - {c=>0,a=>86,b=>0,d=>0} 5600000000 560000000000 5600000000000000 5600000000000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; }; - {e=>0,c=>1,a=>-117,b=>1,d=>1} 8bffffff07 8bffffff0700 8bffffff07000000 8bffffff07000000 - {e=>1,c=>0,a=>47,b=>1,d=>1} 2f0000000d 2f0000000d00 2f0000000d000000 2f0000000d000000 - {e=>1,c=>1,a=>-116,b=>0,d=>0} 8cffffff0a 8cffffff0a00 8cffffff0a000000 8cffffff0a000000 - {e=>1,c=>1,a=>-118,b=>0,d=>1} 8affffff0e 8affffff0e00 8affffff0e000000 8affffff0e000000 - {e=>1,c=>1,a=>-38,b=>0,d=>1} daffffff0e daffffff0e00 daffffff0e000000 daffffff0e000000 = struct uchar { long a; unsigned char b:1; unsigned char c:1; unsigned char d:1; unsigned char e:1; unsigned int f; }; - {e=>0,c=>1,a=>-47,b=>0,d=>1,f=>41} d1ffffff0629000000 d1ffffff060029000000 d1ffffff0600000029000000 d1ffffff0600000029000000 - {e=>0,c=>1,a=>-89,b=>1,d=>0,f=>152} a7ffffff0398000000 a7ffffff030098000000 a7ffffff0300000098000000 a7ffffff0300000098000000 - {e=>1,c=>1,a=>114,b=>1,d=>1,f=>37} 720000000f25000000 720000000f0025000000 720000000f00000025000000 720000000f00000025000000 - {e=>1,c=>1,a=>127,b=>1,d=>1,f=>22} 7f0000000f16000000 7f0000000f0016000000 7f0000000f00000016000000 7f0000000f00000016000000 - {e=>0,c=>0,a=>-95,b=>1,d=>0,f=>125} a1ffffff017d000000 a1ffffff01007d000000 a1ffffff010000007d000000 a1ffffff010000007d000000 = struct ushort { unsigned short a:1; }; - {a=>1} 0100 0100 0100 0100 - {a=>1} 0100 0100 0100 0100 - {a=>0} 0000 0000 0000 0000 - {a=>0} 0000 0000 0000 0000 - {a=>0} 0000 0000 0000 0000 = struct ushort { unsigned short a:1; unsigned short b:1; }; - {a=>1,b=>1} 0300 0300 0300 0300 - {a=>0,b=>0} 0000 0000 0000 0000 - {a=>1,b=>0} 0100 0100 0100 0100 - {a=>0,b=>0} 0000 0000 0000 0000 - {a=>0,b=>1} 0200 0200 0200 0200 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; }; - {c=>1,a=>0,b=>1} 0600 0600 0600 0600 - {c=>0,a=>1,b=>1} 0300 0300 0300 0300 - {c=>1,a=>0,b=>1} 0600 0600 0600 0600 - {c=>0,a=>0,b=>1} 0200 0200 0200 0200 - {c=>1,a=>0,b=>1} 0600 0600 0600 0600 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>0,b=>0,d=>1} 0800 0800 0800 0800 - {c=>1,a=>1,b=>1,d=>0} 0700 0700 0700 0700 - {c=>1,a=>1,b=>1,d=>1} 0f00 0f00 0f00 0f00 - {c=>1,a=>1,b=>0,d=>0} 0500 0500 0500 0500 - {c=>1,a=>0,b=>0,d=>0} 0400 0400 0400 0400 = struct ushort { unsigned short a:1; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned int e; }; - {e=>78,c=>1,a=>0,b=>0,d=>1} 0c004e000000 0c004e000000 0c0000004e000000 0c0000004e000000 - {e=>118,c=>1,a=>1,b=>0,d=>0} 050076000000 050076000000 0500000076000000 0500000076000000 - {e=>65,c=>0,a=>0,b=>1,d=>1} 0a0041000000 0a0041000000 0a00000041000000 0a00000041000000 - {e=>216,c=>0,a=>0,b=>1,d=>1} 0a00d8000000 0a00d8000000 0a000000d8000000 0a000000d8000000 - {e=>98,c=>0,a=>0,b=>1,d=>1} 0a0062000000 0a0062000000 0a00000062000000 0a00000062000000 = struct ushort { char a; unsigned short b:1; }; - {a=>22,b=>1} 160100 16000100 16000100 16000100 - {a=>-76,b=>0} b40000 b4000000 b4000000 b4000000 - {a=>101,b=>1} 650100 65000100 65000100 65000100 - {a=>110,b=>0} 6e0000 6e000000 6e000000 6e000000 - {a=>19,b=>1} 130100 13000100 13000100 13000100 = struct ushort { char a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>103,b=>1} 670100 67000100 67000100 67000100 - {c=>1,a=>-109,b=>1} 930300 93000300 93000300 93000300 - {c=>1,a=>-16,b=>0} f00200 f0000200 f0000200 f0000200 - {c=>1,a=>124,b=>1} 7c0300 7c000300 7c000300 7c000300 - {c=>1,a=>109,b=>0} 6d0200 6d000200 6d000200 6d000200 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>-25,b=>1,d=>0} e70100 e7000100 e7000100 e7000100 - {c=>1,a=>-79,b=>0,d=>0} b10200 b1000200 b1000200 b1000200 - {c=>1,a=>102,b=>0,d=>1} 660600 66000600 66000600 66000600 - {c=>0,a=>125,b=>1,d=>1} 7d0500 7d000500 7d000500 7d000500 - {c=>0,a=>5,b=>1,d=>1} 050500 05000500 05000500 05000500 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>1,c=>0,a=>9,b=>1,d=>0} 090900 09000900 09000900 09000900 - {e=>1,c=>0,a=>44,b=>1,d=>1} 2c0d00 2c000d00 2c000d00 2c000d00 - {e=>0,c=>0,a=>44,b=>0,d=>0} 2c0000 2c000000 2c000000 2c000000 - {e=>1,c=>1,a=>-13,b=>0,d=>1} f30e00 f3000e00 f3000e00 f3000e00 - {e=>0,c=>1,a=>-2,b=>0,d=>0} fe0200 fe000200 fe000200 fe000200 = struct ushort { char a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>1,c=>1,a=>107,b=>1,d=>0,f=>112} 6b0b0070000000 6b000b0070000000 6b000b0070000000 6b000b0070000000 - {e=>0,c=>1,a=>-68,b=>1,d=>1,f=>129} bc070081000000 bc00070081000000 bc00070081000000 bc00070081000000 - {e=>0,c=>0,a=>72,b=>1,d=>1,f=>226} 480500e2000000 48000500e2000000 48000500e2000000 48000500e2000000 - {e=>0,c=>0,a=>-102,b=>0,d=>1,f=>147} 9a040093000000 9a00040093000000 9a00040093000000 9a00040093000000 - {e=>1,c=>1,a=>-25,b=>1,d=>1,f=>7} e70f0007000000 e7000f0007000000 e7000f0007000000 e7000f0007000000 = struct ushort { short a; unsigned short b:1; }; - {a=>89,b=>1} 59000100 59000100 59000100 59000100 - {a=>-24,b=>0} e8ff0000 e8ff0000 e8ff0000 e8ff0000 - {a=>53,b=>1} 35000100 35000100 35000100 35000100 - {a=>60,b=>1} 3c000100 3c000100 3c000100 3c000100 - {a=>-33,b=>1} dfff0100 dfff0100 dfff0100 dfff0100 = struct ushort { short a; unsigned short b:1; unsigned short c:1; }; - {c=>1,a=>-21,b=>0} ebff0200 ebff0200 ebff0200 ebff0200 - {c=>0,a=>65,b=>0} 41000000 41000000 41000000 41000000 - {c=>0,a=>-82,b=>0} aeff0000 aeff0000 aeff0000 aeff0000 - {c=>1,a=>-45,b=>0} d3ff0200 d3ff0200 d3ff0200 d3ff0200 - {c=>1,a=>-105,b=>0} 97ff0200 97ff0200 97ff0200 97ff0200 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>5,b=>1,d=>1} 05000500 05000500 05000500 05000500 - {c=>1,a=>-68,b=>1,d=>0} bcff0300 bcff0300 bcff0300 bcff0300 - {c=>1,a=>-4,b=>0,d=>0} fcff0200 fcff0200 fcff0200 fcff0200 - {c=>1,a=>122,b=>1,d=>1} 7a000700 7a000700 7a000700 7a000700 - {c=>1,a=>-64,b=>1,d=>0} c0ff0300 c0ff0300 c0ff0300 c0ff0300 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>1,c=>1,a=>96,b=>1,d=>1} 60000f00 60000f00 60000f00 60000f00 - {e=>0,c=>0,a=>-110,b=>1,d=>0} 92ff0100 92ff0100 92ff0100 92ff0100 - {e=>1,c=>1,a=>-47,b=>1,d=>0} d1ff0b00 d1ff0b00 d1ff0b00 d1ff0b00 - {e=>0,c=>1,a=>71,b=>1,d=>0} 47000300 47000300 47000300 47000300 - {e=>1,c=>1,a=>-110,b=>1,d=>1} 92ff0f00 92ff0f00 92ff0f00 92ff0f00 = struct ushort { short a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>-77,b=>1,d=>0,f=>56} b3ff030038000000 b3ff030038000000 b3ff030038000000 b3ff030038000000 - {e=>0,c=>0,a=>108,b=>1,d=>1,f=>82} 6c00050052000000 6c00050052000000 6c00050052000000 6c00050052000000 - {e=>0,c=>0,a=>4,b=>1,d=>1,f=>96} 0400050060000000 0400050060000000 0400050060000000 0400050060000000 - {e=>0,c=>0,a=>93,b=>1,d=>1,f=>28} 5d0005001c000000 5d0005001c000000 5d0005001c000000 5d0005001c000000 - {e=>1,c=>0,a=>40,b=>1,d=>1,f=>174} 28000d00ae000000 28000d00ae000000 28000d00ae000000 28000d00ae000000 = struct ushort { int a; unsigned short b:1; }; - {a=>88,b=>1} 580000000100 580000000100 5800000001000000 5800000001000000 - {a=>-118,b=>1} 8affffff0100 8affffff0100 8affffff01000000 8affffff01000000 - {a=>122,b=>1} 7a0000000100 7a0000000100 7a00000001000000 7a00000001000000 - {a=>-125,b=>0} 83ffffff0000 83ffffff0000 83ffffff00000000 83ffffff00000000 - {a=>-83,b=>0} adffffff0000 adffffff0000 adffffff00000000 adffffff00000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>-73,b=>1} b7ffffff0100 b7ffffff0100 b7ffffff01000000 b7ffffff01000000 - {c=>1,a=>41,b=>0} 290000000200 290000000200 2900000002000000 2900000002000000 - {c=>0,a=>-10,b=>0} f6ffffff0000 f6ffffff0000 f6ffffff00000000 f6ffffff00000000 - {c=>1,a=>46,b=>1} 2e0000000300 2e0000000300 2e00000003000000 2e00000003000000 - {c=>0,a=>91,b=>1} 5b0000000100 5b0000000100 5b00000001000000 5b00000001000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>62,b=>1,d=>1} 3e0000000500 3e0000000500 3e00000005000000 3e00000005000000 - {c=>1,a=>-98,b=>1,d=>1} 9effffff0700 9effffff0700 9effffff07000000 9effffff07000000 - {c=>0,a=>-94,b=>0,d=>0} a2ffffff0000 a2ffffff0000 a2ffffff00000000 a2ffffff00000000 - {c=>0,a=>36,b=>1,d=>0} 240000000100 240000000100 2400000001000000 2400000001000000 - {c=>1,a=>-4,b=>0,d=>1} fcffffff0600 fcffffff0600 fcffffff06000000 fcffffff06000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>0,c=>0,a=>96,b=>0,d=>0} 600000000000 600000000000 6000000000000000 6000000000000000 - {e=>1,c=>0,a=>127,b=>1,d=>0} 7f0000000900 7f0000000900 7f00000009000000 7f00000009000000 - {e=>1,c=>0,a=>40,b=>0,d=>0} 280000000800 280000000800 2800000008000000 2800000008000000 - {e=>1,c=>0,a=>96,b=>0,d=>1} 600000000c00 600000000c00 600000000c000000 600000000c000000 - {e=>0,c=>0,a=>-42,b=>0,d=>1} d6ffffff0400 d6ffffff0400 d6ffffff04000000 d6ffffff04000000 = struct ushort { int a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>15,b=>0,d=>0,f=>0} 0f000000020000000000 0f000000020000000000 0f0000000200000000000000 0f0000000200000000000000 - {e=>1,c=>0,a=>-90,b=>1,d=>1,f=>104} a6ffffff0d0068000000 a6ffffff0d0068000000 a6ffffff0d00000068000000 a6ffffff0d00000068000000 - {e=>1,c=>0,a=>-53,b=>1,d=>0,f=>14} cbffffff09000e000000 cbffffff09000e000000 cbffffff090000000e000000 cbffffff090000000e000000 - {e=>0,c=>1,a=>41,b=>0,d=>1,f=>247} 290000000600f7000000 290000000600f7000000 2900000006000000f7000000 2900000006000000f7000000 - {e=>1,c=>1,a=>-21,b=>0,d=>0,f=>111} ebffffff0a006f000000 ebffffff0a006f000000 ebffffff0a0000006f000000 ebffffff0a0000006f000000 = struct ushort { long a; unsigned short b:1; }; - {a=>-109,b=>0} 93ffffff0000 93ffffff0000 93ffffff00000000 93ffffff00000000 - {a=>68,b=>1} 440000000100 440000000100 4400000001000000 4400000001000000 - {a=>-127,b=>0} 81ffffff0000 81ffffff0000 81ffffff00000000 81ffffff00000000 - {a=>-101,b=>1} 9bffffff0100 9bffffff0100 9bffffff01000000 9bffffff01000000 - {a=>65,b=>1} 410000000100 410000000100 4100000001000000 4100000001000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; }; - {c=>0,a=>-118,b=>0} 8affffff0000 8affffff0000 8affffff00000000 8affffff00000000 - {c=>0,a=>98,b=>1} 620000000100 620000000100 6200000001000000 6200000001000000 - {c=>0,a=>20,b=>0} 140000000000 140000000000 1400000000000000 1400000000000000 - {c=>0,a=>-71,b=>0} b9ffffff0000 b9ffffff0000 b9ffffff00000000 b9ffffff00000000 - {c=>0,a=>-104,b=>1} 98ffffff0100 98ffffff0100 98ffffff01000000 98ffffff01000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; }; - {c=>0,a=>31,b=>1,d=>1} 1f0000000500 1f0000000500 1f00000005000000 1f00000005000000 - {c=>1,a=>105,b=>0,d=>1} 690000000600 690000000600 6900000006000000 6900000006000000 - {c=>1,a=>-124,b=>1,d=>0} 84ffffff0300 84ffffff0300 84ffffff03000000 84ffffff03000000 - {c=>1,a=>11,b=>1,d=>1} 0b0000000700 0b0000000700 0b00000007000000 0b00000007000000 - {c=>1,a=>21,b=>0,d=>1} 150000000600 150000000600 1500000006000000 1500000006000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; }; - {e=>0,c=>0,a=>51,b=>0,d=>0} 330000000000 330000000000 3300000000000000 3300000000000000 - {e=>1,c=>1,a=>16,b=>1,d=>1} 100000000f00 100000000f00 100000000f000000 100000000f000000 - {e=>1,c=>1,a=>-30,b=>1,d=>1} e2ffffff0f00 e2ffffff0f00 e2ffffff0f000000 e2ffffff0f000000 - {e=>1,c=>0,a=>-27,b=>1,d=>0} e5ffffff0900 e5ffffff0900 e5ffffff09000000 e5ffffff09000000 - {e=>0,c=>0,a=>44,b=>1,d=>1} 2c0000000500 2c0000000500 2c00000005000000 2c00000005000000 = struct ushort { long a; unsigned short b:1; unsigned short c:1; unsigned short d:1; unsigned short e:1; unsigned int f; }; - {e=>0,c=>1,a=>-43,b=>1,d=>0,f=>98} d5ffffff030062000000 d5ffffff030062000000 d5ffffff0300000062000000 d5ffffff0300000062000000 - {e=>1,c=>0,a=>-40,b=>1,d=>1,f=>138} d8ffffff0d008a000000 d8ffffff0d008a000000 d8ffffff0d0000008a000000 d8ffffff0d0000008a000000 - {e=>1,c=>0,a=>14,b=>1,d=>1,f=>44} 0e0000000d002c000000 0e0000000d002c000000 0e0000000d0000002c000000 0e0000000d0000002c000000 - {e=>1,c=>1,a=>-30,b=>1,d=>0,f=>32} e2ffffff0b0020000000 e2ffffff0b0020000000 e2ffffff0b00000020000000 e2ffffff0b00000020000000 - {e=>0,c=>1,a=>87,b=>0,d=>1,f=>216} 570000000600d8000000 570000000600d8000000 5700000006000000d8000000 5700000006000000d8000000 = struct uint { unsigned int a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 01000000 = struct uint { unsigned int a:1; unsigned int b:1; }; - {a=>0,b=>1} 02000000 02000000 02000000 02000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>0,b=>1} 02000000 02000000 02000000 02000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 02000000 - {c=>1,a=>1,b=>0} 05000000 05000000 05000000 05000000 - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 03000000 - {c=>1,a=>0,b=>0} 04000000 04000000 04000000 04000000 - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 02000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>1,b=>1,d=>0} 03000000 03000000 03000000 03000000 - {c=>0,a=>0,b=>0,d=>0} 00000000 00000000 00000000 00000000 - {c=>1,a=>0,b=>0,d=>1} 0c000000 0c000000 0c000000 0c000000 - {c=>0,a=>0,b=>1,d=>0} 02000000 02000000 02000000 02000000 - {c=>1,a=>0,b=>1,d=>0} 06000000 06000000 06000000 06000000 = struct uint { unsigned int a:1; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned char e; }; - {e=>191,c=>1,a=>1,b=>1,d=>1} 0f000000bf 0f000000bf00 0f000000bf000000 0f000000bf000000 - {e=>169,c=>0,a=>1,b=>0,d=>0} 01000000a9 01000000a900 01000000a9000000 01000000a9000000 - {e=>146,c=>0,a=>1,b=>1,d=>0} 0300000092 030000009200 0300000092000000 0300000092000000 - {e=>101,c=>1,a=>1,b=>0,d=>0} 0500000065 050000006500 0500000065000000 0500000065000000 - {e=>214,c=>0,a=>0,b=>1,d=>0} 02000000d6 02000000d600 02000000d6000000 02000000d6000000 = struct uint { char a; unsigned int b:1; }; - {a=>75,b=>1} 4b01000000 4b0001000000 4b00000001000000 4b00000001000000 - {a=>-108,b=>1} 9401000000 940001000000 9400000001000000 9400000001000000 - {a=>-66,b=>0} be00000000 be0000000000 be00000000000000 be00000000000000 - {a=>70,b=>0} 4600000000 460000000000 4600000000000000 4600000000000000 - {a=>42,b=>0} 2a00000000 2a0000000000 2a00000000000000 2a00000000000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-100,b=>1} 9c03000000 9c0003000000 9c00000003000000 9c00000003000000 - {c=>1,a=>93,b=>0} 5d02000000 5d0002000000 5d00000002000000 5d00000002000000 - {c=>1,a=>40,b=>0} 2802000000 280002000000 2800000002000000 2800000002000000 - {c=>1,a=>-20,b=>1} ec03000000 ec0003000000 ec00000003000000 ec00000003000000 - {c=>1,a=>5,b=>0} 0502000000 050002000000 0500000002000000 0500000002000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>-26,b=>0,d=>0} e600000000 e60000000000 e600000000000000 e600000000000000 - {c=>0,a=>-121,b=>0,d=>0} 8700000000 870000000000 8700000000000000 8700000000000000 - {c=>1,a=>2,b=>0,d=>1} 0206000000 020006000000 0200000006000000 0200000006000000 - {c=>1,a=>-54,b=>1,d=>0} ca03000000 ca0003000000 ca00000003000000 ca00000003000000 - {c=>1,a=>79,b=>0,d=>0} 4f02000000 4f0002000000 4f00000002000000 4f00000002000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>0,c=>1,a=>123,b=>0,d=>1} 7b06000000 7b0006000000 7b00000006000000 7b00000006000000 - {e=>0,c=>0,a=>-85,b=>1,d=>0} ab01000000 ab0001000000 ab00000001000000 ab00000001000000 - {e=>0,c=>1,a=>108,b=>1,d=>0} 6c03000000 6c0003000000 6c00000003000000 6c00000003000000 - {e=>0,c=>0,a=>5,b=>1,d=>0} 0501000000 050001000000 0500000001000000 0500000001000000 - {e=>1,c=>0,a=>37,b=>0,d=>0} 2508000000 250008000000 2500000008000000 2500000008000000 = struct uint { char a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>1,c=>1,a=>-3,b=>0,d=>0,f=>33} fd0a00000021 fd000a0000002100 fd0000000a00000021000000 fd0000000a00000021000000 - {e=>1,c=>0,a=>-54,b=>1,d=>1,f=>25} ca0d00000019 ca000d0000001900 ca0000000d00000019000000 ca0000000d00000019000000 - {e=>1,c=>1,a=>99,b=>0,d=>0,f=>1} 630a00000001 63000a0000000100 630000000a00000001000000 630000000a00000001000000 - {e=>0,c=>0,a=>36,b=>0,d=>1,f=>171} 2404000000ab 240004000000ab00 2400000004000000ab000000 2400000004000000ab000000 - {e=>0,c=>0,a=>-112,b=>0,d=>1,f=>44} 90040000002c 9000040000002c00 90000000040000002c000000 90000000040000002c000000 = struct uint { short a; unsigned int b:1; }; - {a=>17,b=>1} 110001000000 110001000000 1100000001000000 1100000001000000 - {a=>-109,b=>0} 93ff00000000 93ff00000000 93ff000000000000 93ff000000000000 - {a=>66,b=>1} 420001000000 420001000000 4200000001000000 4200000001000000 - {a=>15,b=>0} 0f0000000000 0f0000000000 0f00000000000000 0f00000000000000 - {a=>67,b=>1} 430001000000 430001000000 4300000001000000 4300000001000000 = struct uint { short a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-17,b=>0} efff02000000 efff02000000 efff000002000000 efff000002000000 - {c=>0,a=>-96,b=>0} a0ff00000000 a0ff00000000 a0ff000000000000 a0ff000000000000 - {c=>0,a=>19,b=>0} 130000000000 130000000000 1300000000000000 1300000000000000 - {c=>1,a=>-75,b=>1} b5ff03000000 b5ff03000000 b5ff000003000000 b5ff000003000000 - {c=>0,a=>-26,b=>1} e6ff01000000 e6ff01000000 e6ff000001000000 e6ff000001000000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>-128,b=>0,d=>1} 80ff04000000 80ff04000000 80ff000004000000 80ff000004000000 - {c=>0,a=>6,b=>0,d=>1} 060004000000 060004000000 0600000004000000 0600000004000000 - {c=>1,a=>-76,b=>1,d=>0} b4ff03000000 b4ff03000000 b4ff000003000000 b4ff000003000000 - {c=>0,a=>-60,b=>1,d=>0} c4ff01000000 c4ff01000000 c4ff000001000000 c4ff000001000000 - {c=>1,a=>-102,b=>1,d=>1} 9aff07000000 9aff07000000 9aff000007000000 9aff000007000000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>0,c=>0,a=>-11,b=>0,d=>1} f5ff04000000 f5ff04000000 f5ff000004000000 f5ff000004000000 - {e=>1,c=>0,a=>-23,b=>1,d=>1} e9ff0d000000 e9ff0d000000 e9ff00000d000000 e9ff00000d000000 - {e=>1,c=>1,a=>81,b=>0,d=>0} 51000a000000 51000a000000 510000000a000000 510000000a000000 - {e=>0,c=>0,a=>16,b=>0,d=>0} 100000000000 100000000000 1000000000000000 1000000000000000 - {e=>1,c=>1,a=>90,b=>1,d=>0} 5a000b000000 5a000b000000 5a0000000b000000 5a0000000b000000 = struct uint { short a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>0,c=>1,a=>108,b=>0,d=>1,f=>91} 6c00060000005b 6c00060000005b00 6c000000060000005b000000 6c000000060000005b000000 - {e=>0,c=>0,a=>113,b=>1,d=>0,f=>123} 7100010000007b 7100010000007b00 71000000010000007b000000 71000000010000007b000000 - {e=>0,c=>0,a=>-118,b=>1,d=>1,f=>27} 8aff050000001b 8aff050000001b00 8aff0000050000001b000000 8aff0000050000001b000000 - {e=>0,c=>0,a=>105,b=>1,d=>1,f=>227} 690005000000e3 690005000000e300 6900000005000000e3000000 6900000005000000e3000000 - {e=>0,c=>1,a=>58,b=>0,d=>0,f=>37} 3a000200000025 3a00020000002500 3a0000000200000025000000 3a0000000200000025000000 = struct uint { int a; unsigned int b:1; }; - {a=>123,b=>0} 7b00000000000000 7b00000000000000 7b00000000000000 7b00000000000000 - {a=>-82,b=>1} aeffffff01000000 aeffffff01000000 aeffffff01000000 aeffffff01000000 - {a=>-71,b=>0} b9ffffff00000000 b9ffffff00000000 b9ffffff00000000 b9ffffff00000000 - {a=>-16,b=>0} f0ffffff00000000 f0ffffff00000000 f0ffffff00000000 f0ffffff00000000 - {a=>82,b=>0} 5200000000000000 5200000000000000 5200000000000000 5200000000000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>-82,b=>1} aeffffff01000000 aeffffff01000000 aeffffff01000000 aeffffff01000000 - {c=>1,a=>76,b=>1} 4c00000003000000 4c00000003000000 4c00000003000000 4c00000003000000 - {c=>0,a=>90,b=>1} 5a00000001000000 5a00000001000000 5a00000001000000 5a00000001000000 - {c=>0,a=>-87,b=>1} a9ffffff01000000 a9ffffff01000000 a9ffffff01000000 a9ffffff01000000 - {c=>1,a=>-70,b=>0} baffffff02000000 baffffff02000000 baffffff02000000 baffffff02000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>0,a=>103,b=>1,d=>1} 6700000005000000 6700000005000000 6700000005000000 6700000005000000 - {c=>0,a=>-102,b=>1,d=>0} 9affffff01000000 9affffff01000000 9affffff01000000 9affffff01000000 - {c=>1,a=>8,b=>1,d=>1} 0800000007000000 0800000007000000 0800000007000000 0800000007000000 - {c=>1,a=>24,b=>0,d=>1} 1800000006000000 1800000006000000 1800000006000000 1800000006000000 - {c=>0,a=>-37,b=>1,d=>1} dbffffff05000000 dbffffff05000000 dbffffff05000000 dbffffff05000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>73,b=>0,d=>0} 490000000a000000 490000000a000000 490000000a000000 490000000a000000 - {e=>0,c=>0,a=>-47,b=>1,d=>1} d1ffffff05000000 d1ffffff05000000 d1ffffff05000000 d1ffffff05000000 - {e=>1,c=>1,a=>105,b=>0,d=>1} 690000000e000000 690000000e000000 690000000e000000 690000000e000000 - {e=>1,c=>0,a=>39,b=>1,d=>1} 270000000d000000 270000000d000000 270000000d000000 270000000d000000 - {e=>0,c=>1,a=>-19,b=>0,d=>0} edffffff02000000 edffffff02000000 edffffff02000000 edffffff02000000 = struct uint { int a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>0,c=>1,a=>-13,b=>0,d=>0,f=>179} f3ffffff02000000b3 f3ffffff02000000b300 f3ffffff02000000b3000000 f3ffffff02000000b3000000 - {e=>0,c=>1,a=>-50,b=>0,d=>1,f=>86} ceffffff0600000056 ceffffff060000005600 ceffffff0600000056000000 ceffffff0600000056000000 - {e=>1,c=>1,a=>127,b=>0,d=>1,f=>197} 7f0000000e000000c5 7f0000000e000000c500 7f0000000e000000c5000000 7f0000000e000000c5000000 - {e=>0,c=>1,a=>22,b=>0,d=>1,f=>205} 1600000006000000cd 1600000006000000cd00 1600000006000000cd000000 1600000006000000cd000000 - {e=>1,c=>1,a=>-24,b=>1,d=>0,f=>208} e8ffffff0b000000d0 e8ffffff0b000000d000 e8ffffff0b000000d0000000 e8ffffff0b000000d0000000 = struct uint { long a; unsigned int b:1; }; - {a=>125,b=>0} 7d00000000000000 7d00000000000000 7d00000000000000 7d00000000000000 - {a=>76,b=>0} 4c00000000000000 4c00000000000000 4c00000000000000 4c00000000000000 - {a=>118,b=>1} 7600000001000000 7600000001000000 7600000001000000 7600000001000000 - {a=>39,b=>1} 2700000001000000 2700000001000000 2700000001000000 2700000001000000 - {a=>117,b=>0} 7500000000000000 7500000000000000 7500000000000000 7500000000000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>96,b=>1} 6000000001000000 6000000001000000 6000000001000000 6000000001000000 - {c=>0,a=>85,b=>0} 5500000000000000 5500000000000000 5500000000000000 5500000000000000 - {c=>0,a=>-120,b=>1} 88ffffff01000000 88ffffff01000000 88ffffff01000000 88ffffff01000000 - {c=>1,a=>46,b=>1} 2e00000003000000 2e00000003000000 2e00000003000000 2e00000003000000 - {c=>1,a=>-15,b=>1} f1ffffff03000000 f1ffffff03000000 f1ffffff03000000 f1ffffff03000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; }; - {c=>1,a=>86,b=>0,d=>0} 5600000002000000 5600000002000000 5600000002000000 5600000002000000 - {c=>0,a=>-29,b=>1,d=>1} e3ffffff05000000 e3ffffff05000000 e3ffffff05000000 e3ffffff05000000 - {c=>0,a=>97,b=>1,d=>0} 6100000001000000 6100000001000000 6100000001000000 6100000001000000 - {c=>1,a=>92,b=>1,d=>0} 5c00000003000000 5c00000003000000 5c00000003000000 5c00000003000000 - {c=>1,a=>-52,b=>0,d=>1} ccffffff06000000 ccffffff06000000 ccffffff06000000 ccffffff06000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>46,b=>1,d=>0} 2e0000000b000000 2e0000000b000000 2e0000000b000000 2e0000000b000000 - {e=>0,c=>1,a=>6,b=>0,d=>1} 0600000006000000 0600000006000000 0600000006000000 0600000006000000 - {e=>0,c=>1,a=>-88,b=>1,d=>0} a8ffffff03000000 a8ffffff03000000 a8ffffff03000000 a8ffffff03000000 - {e=>1,c=>1,a=>61,b=>0,d=>0} 3d0000000a000000 3d0000000a000000 3d0000000a000000 3d0000000a000000 - {e=>1,c=>1,a=>-91,b=>0,d=>1} a5ffffff0e000000 a5ffffff0e000000 a5ffffff0e000000 a5ffffff0e000000 = struct uint { long a; unsigned int b:1; unsigned int c:1; unsigned int d:1; unsigned int e:1; unsigned char f; }; - {e=>1,c=>0,a=>0,b=>0,d=>0,f=>3} 000000000800000003 00000000080000000300 000000000800000003000000 000000000800000003000000 - {e=>1,c=>0,a=>-78,b=>1,d=>0,f=>176} b2ffffff09000000b0 b2ffffff09000000b000 b2ffffff09000000b0000000 b2ffffff09000000b0000000 - {e=>0,c=>1,a=>-121,b=>1,d=>1,f=>153} 87ffffff0700000099 87ffffff070000009900 87ffffff0700000099000000 87ffffff0700000099000000 - {e=>0,c=>1,a=>-50,b=>1,d=>0,f=>143} ceffffff030000008f ceffffff030000008f00 ceffffff030000008f000000 ceffffff030000008f000000 - {e=>0,c=>1,a=>-106,b=>0,d=>0,f=>229} 96ffffff02000000e5 96ffffff02000000e500 96ffffff02000000e5000000 96ffffff02000000e5000000 = struct ulong { unsigned long a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>0} 00000000 00000000 00000000 00000000 = struct ulong { unsigned long a:1; unsigned long b:1; }; - {a=>0,b=>0} 00000000 00000000 00000000 00000000 - {a=>1,b=>1} 03000000 03000000 03000000 03000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>1,b=>1} 03000000 03000000 03000000 03000000 - {a=>0,b=>1} 02000000 02000000 02000000 02000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; }; - {c=>0,a=>0,b=>0} 00000000 00000000 00000000 00000000 - {c=>0,a=>1,b=>1} 03000000 03000000 03000000 03000000 - {c=>0,a=>0,b=>1} 02000000 02000000 02000000 02000000 - {c=>1,a=>0,b=>1} 06000000 06000000 06000000 06000000 - {c=>1,a=>0,b=>0} 04000000 04000000 04000000 04000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>1,a=>1,b=>1,d=>0} 07000000 07000000 07000000 07000000 - {c=>1,a=>0,b=>0,d=>0} 04000000 04000000 04000000 04000000 - {c=>0,a=>1,b=>1,d=>1} 0b000000 0b000000 0b000000 0b000000 - {c=>0,a=>1,b=>0,d=>0} 01000000 01000000 01000000 01000000 - {c=>1,a=>0,b=>1,d=>0} 06000000 06000000 06000000 06000000 = struct ulong { unsigned long a:1; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned char e; }; - {e=>171,c=>0,a=>1,b=>0,d=>0} 01000000ab 01000000ab00 01000000ab000000 01000000ab000000 - {e=>112,c=>0,a=>0,b=>0,d=>0} 0000000070 000000007000 0000000070000000 0000000070000000 - {e=>62,c=>0,a=>0,b=>0,d=>1} 080000003e 080000003e00 080000003e000000 080000003e000000 - {e=>210,c=>0,a=>0,b=>1,d=>1} 0a000000d2 0a000000d200 0a000000d2000000 0a000000d2000000 - {e=>159,c=>1,a=>0,b=>1,d=>1} 0e0000009f 0e0000009f00 0e0000009f000000 0e0000009f000000 = struct ulong { char a; unsigned long b:1; }; - {a=>-121,b=>1} 8701000000 870001000000 8700000001000000 8700000001000000 - {a=>50,b=>1} 3201000000 320001000000 3200000001000000 3200000001000000 - {a=>-89,b=>1} a701000000 a70001000000 a700000001000000 a700000001000000 - {a=>92,b=>0} 5c00000000 5c0000000000 5c00000000000000 5c00000000000000 - {a=>-41,b=>0} d700000000 d70000000000 d700000000000000 d700000000000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>-46,b=>1} d203000000 d20003000000 d200000003000000 d200000003000000 - {c=>0,a=>-85,b=>0} ab00000000 ab0000000000 ab00000000000000 ab00000000000000 - {c=>0,a=>78,b=>0} 4e00000000 4e0000000000 4e00000000000000 4e00000000000000 - {c=>0,a=>-50,b=>0} ce00000000 ce0000000000 ce00000000000000 ce00000000000000 - {c=>1,a=>-57,b=>1} c703000000 c70003000000 c700000003000000 c700000003000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-7,b=>0,d=>1} f904000000 f90004000000 f900000004000000 f900000004000000 - {c=>0,a=>69,b=>0,d=>0} 4500000000 450000000000 4500000000000000 4500000000000000 - {c=>1,a=>78,b=>1,d=>1} 4e07000000 4e0007000000 4e00000007000000 4e00000007000000 - {c=>1,a=>19,b=>0,d=>0} 1302000000 130002000000 1300000002000000 1300000002000000 - {c=>1,a=>-18,b=>1,d=>0} ee03000000 ee0003000000 ee00000003000000 ee00000003000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>0,a=>-82,b=>1,d=>1} ae0d000000 ae000d000000 ae0000000d000000 ae0000000d000000 - {e=>1,c=>1,a=>125,b=>0,d=>1} 7d0e000000 7d000e000000 7d0000000e000000 7d0000000e000000 - {e=>1,c=>1,a=>-119,b=>0,d=>1} 890e000000 89000e000000 890000000e000000 890000000e000000 - {e=>1,c=>1,a=>39,b=>0,d=>1} 270e000000 27000e000000 270000000e000000 270000000e000000 - {e=>0,c=>1,a=>14,b=>0,d=>0} 0e02000000 0e0002000000 0e00000002000000 0e00000002000000 = struct ulong { char a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>-3,b=>1,d=>0,f=>197} fd09000000c5 fd0009000000c500 fd00000009000000c5000000 fd00000009000000c5000000 - {e=>0,c=>1,a=>87,b=>0,d=>0,f=>225} 5702000000e1 570002000000e100 5700000002000000e1000000 5700000002000000e1000000 - {e=>0,c=>1,a=>-120,b=>1,d=>1,f=>123} 88070000007b 8800070000007b00 88000000070000007b000000 88000000070000007b000000 - {e=>1,c=>0,a=>-101,b=>0,d=>0,f=>120} 9b0800000078 9b00080000007800 9b0000000800000078000000 9b0000000800000078000000 - {e=>1,c=>1,a=>13,b=>0,d=>1,f=>245} 0d0e000000f5 0d000e000000f500 0d0000000e000000f5000000 0d0000000e000000f5000000 = struct ulong { short a; unsigned long b:1; }; - {a=>-34,b=>1} deff01000000 deff01000000 deff000001000000 deff000001000000 - {a=>-97,b=>1} 9fff01000000 9fff01000000 9fff000001000000 9fff000001000000 - {a=>125,b=>0} 7d0000000000 7d0000000000 7d00000000000000 7d00000000000000 - {a=>-4,b=>1} fcff01000000 fcff01000000 fcff000001000000 fcff000001000000 - {a=>-46,b=>0} d2ff00000000 d2ff00000000 d2ff000000000000 d2ff000000000000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; }; - {c=>0,a=>54,b=>1} 360001000000 360001000000 3600000001000000 3600000001000000 - {c=>1,a=>25,b=>1} 190003000000 190003000000 1900000003000000 1900000003000000 - {c=>1,a=>-112,b=>1} 90ff03000000 90ff03000000 90ff000003000000 90ff000003000000 - {c=>0,a=>53,b=>1} 350001000000 350001000000 3500000001000000 3500000001000000 - {c=>0,a=>-72,b=>0} b8ff00000000 b8ff00000000 b8ff000000000000 b8ff000000000000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-37,b=>0,d=>1} dbff04000000 dbff04000000 dbff000004000000 dbff000004000000 - {c=>1,a=>59,b=>0,d=>1} 3b0006000000 3b0006000000 3b00000006000000 3b00000006000000 - {c=>1,a=>-10,b=>1,d=>1} f6ff07000000 f6ff07000000 f6ff000007000000 f6ff000007000000 - {c=>0,a=>-39,b=>1,d=>0} d9ff01000000 d9ff01000000 d9ff000001000000 d9ff000001000000 - {c=>0,a=>26,b=>0,d=>1} 1a0004000000 1a0004000000 1a00000004000000 1a00000004000000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>77,b=>1,d=>0} 4d000b000000 4d000b000000 4d0000000b000000 4d0000000b000000 - {e=>0,c=>0,a=>71,b=>1,d=>1} 470005000000 470005000000 4700000005000000 4700000005000000 - {e=>1,c=>0,a=>12,b=>1,d=>0} 0c0009000000 0c0009000000 0c00000009000000 0c00000009000000 - {e=>1,c=>1,a=>-120,b=>1,d=>1} 88ff0f000000 88ff0f000000 88ff00000f000000 88ff00000f000000 - {e=>0,c=>0,a=>-106,b=>0,d=>1} 96ff04000000 96ff04000000 96ff000004000000 96ff000004000000 = struct ulong { short a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>93,b=>1,d=>0,f=>203} 5d000b000000cb 5d000b000000cb00 5d0000000b000000cb000000 5d0000000b000000cb000000 - {e=>1,c=>1,a=>-61,b=>1,d=>0,f=>222} c3ff0b000000de c3ff0b000000de00 c3ff00000b000000de000000 c3ff00000b000000de000000 - {e=>0,c=>1,a=>-4,b=>0,d=>0,f=>177} fcff02000000b1 fcff02000000b100 fcff000002000000b1000000 fcff000002000000b1000000 - {e=>0,c=>1,a=>-34,b=>1,d=>1,f=>92} deff070000005c deff070000005c00 deff0000070000005c000000 deff0000070000005c000000 - {e=>0,c=>1,a=>6,b=>0,d=>1,f=>117} 06000600000075 0600060000007500 060000000600000075000000 060000000600000075000000 = struct ulong { int a; unsigned long b:1; }; - {a=>20,b=>1} 1400000001000000 1400000001000000 1400000001000000 1400000001000000 - {a=>-70,b=>1} baffffff01000000 baffffff01000000 baffffff01000000 baffffff01000000 - {a=>-124,b=>0} 84ffffff00000000 84ffffff00000000 84ffffff00000000 84ffffff00000000 - {a=>-106,b=>0} 96ffffff00000000 96ffffff00000000 96ffffff00000000 96ffffff00000000 - {a=>25,b=>1} 1900000001000000 1900000001000000 1900000001000000 1900000001000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>42,b=>0} 2a00000002000000 2a00000002000000 2a00000002000000 2a00000002000000 - {c=>1,a=>-120,b=>1} 88ffffff03000000 88ffffff03000000 88ffffff03000000 88ffffff03000000 - {c=>1,a=>-122,b=>1} 86ffffff03000000 86ffffff03000000 86ffffff03000000 86ffffff03000000 - {c=>0,a=>-34,b=>0} deffffff00000000 deffffff00000000 deffffff00000000 deffffff00000000 - {c=>0,a=>-40,b=>0} d8ffffff00000000 d8ffffff00000000 d8ffffff00000000 d8ffffff00000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>44,b=>1,d=>0} 2c00000001000000 2c00000001000000 2c00000001000000 2c00000001000000 - {c=>1,a=>119,b=>1,d=>0} 7700000003000000 7700000003000000 7700000003000000 7700000003000000 - {c=>1,a=>30,b=>1,d=>0} 1e00000003000000 1e00000003000000 1e00000003000000 1e00000003000000 - {c=>0,a=>-76,b=>0,d=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 - {c=>1,a=>71,b=>0,d=>1} 4700000006000000 4700000006000000 4700000006000000 4700000006000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>0,c=>0,a=>-96,b=>1,d=>0} a0ffffff01000000 a0ffffff01000000 a0ffffff01000000 a0ffffff01000000 - {e=>0,c=>0,a=>112,b=>1,d=>0} 7000000001000000 7000000001000000 7000000001000000 7000000001000000 - {e=>1,c=>0,a=>-48,b=>1,d=>0} d0ffffff09000000 d0ffffff09000000 d0ffffff09000000 d0ffffff09000000 - {e=>0,c=>0,a=>101,b=>0,d=>0} 6500000000000000 6500000000000000 6500000000000000 6500000000000000 - {e=>0,c=>0,a=>113,b=>1,d=>1} 7100000005000000 7100000005000000 7100000005000000 7100000005000000 = struct ulong { int a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>53,b=>0,d=>1,f=>237} 350000000e000000ed 350000000e000000ed00 350000000e000000ed000000 350000000e000000ed000000 - {e=>1,c=>0,a=>-64,b=>1,d=>0,f=>197} c0ffffff09000000c5 c0ffffff09000000c500 c0ffffff09000000c5000000 c0ffffff09000000c5000000 - {e=>0,c=>1,a=>-88,b=>1,d=>0,f=>178} a8ffffff03000000b2 a8ffffff03000000b200 a8ffffff03000000b2000000 a8ffffff03000000b2000000 - {e=>1,c=>1,a=>-104,b=>0,d=>1,f=>185} 98ffffff0e000000b9 98ffffff0e000000b900 98ffffff0e000000b9000000 98ffffff0e000000b9000000 - {e=>1,c=>1,a=>121,b=>0,d=>1,f=>176} 790000000e000000b0 790000000e000000b000 790000000e000000b0000000 790000000e000000b0000000 = struct ulong { long a; unsigned long b:1; }; - {a=>123,b=>0} 7b00000000000000 7b00000000000000 7b00000000000000 7b00000000000000 - {a=>-51,b=>1} cdffffff01000000 cdffffff01000000 cdffffff01000000 cdffffff01000000 - {a=>123,b=>0} 7b00000000000000 7b00000000000000 7b00000000000000 7b00000000000000 - {a=>-16,b=>1} f0ffffff01000000 f0ffffff01000000 f0ffffff01000000 f0ffffff01000000 - {a=>-33,b=>1} dfffffff01000000 dfffffff01000000 dfffffff01000000 dfffffff01000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; }; - {c=>1,a=>65,b=>1} 4100000003000000 4100000003000000 4100000003000000 4100000003000000 - {c=>1,a=>108,b=>0} 6c00000002000000 6c00000002000000 6c00000002000000 6c00000002000000 - {c=>1,a=>-3,b=>1} fdffffff03000000 fdffffff03000000 fdffffff03000000 fdffffff03000000 - {c=>0,a=>48,b=>1} 3000000001000000 3000000001000000 3000000001000000 3000000001000000 - {c=>0,a=>39,b=>0} 2700000000000000 2700000000000000 2700000000000000 2700000000000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; }; - {c=>0,a=>-118,b=>0,d=>1} 8affffff04000000 8affffff04000000 8affffff04000000 8affffff04000000 - {c=>1,a=>-68,b=>1,d=>1} bcffffff07000000 bcffffff07000000 bcffffff07000000 bcffffff07000000 - {c=>0,a=>-88,b=>1,d=>1} a8ffffff05000000 a8ffffff05000000 a8ffffff05000000 a8ffffff05000000 - {c=>0,a=>-79,b=>0,d=>1} b1ffffff04000000 b1ffffff04000000 b1ffffff04000000 b1ffffff04000000 - {c=>1,a=>-62,b=>0,d=>0} c2ffffff02000000 c2ffffff02000000 c2ffffff02000000 c2ffffff02000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-102,b=>1,d=>0} 9affffff0b000000 9affffff0b000000 9affffff0b000000 9affffff0b000000 - {e=>1,c=>0,a=>-99,b=>1,d=>0} 9dffffff09000000 9dffffff09000000 9dffffff09000000 9dffffff09000000 - {e=>0,c=>0,a=>3,b=>0,d=>0} 0300000000000000 0300000000000000 0300000000000000 0300000000000000 - {e=>1,c=>0,a=>6,b=>1,d=>0} 0600000009000000 0600000009000000 0600000009000000 0600000009000000 - {e=>0,c=>1,a=>105,b=>0,d=>0} 6900000002000000 6900000002000000 6900000002000000 6900000002000000 = struct ulong { long a; unsigned long b:1; unsigned long c:1; unsigned long d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>73,b=>1,d=>1,f=>147} 490000000d00000093 490000000d0000009300 490000000d00000093000000 490000000d00000093000000 - {e=>0,c=>1,a=>9,b=>0,d=>0,f=>160} 0900000002000000a0 0900000002000000a000 0900000002000000a0000000 0900000002000000a0000000 - {e=>0,c=>1,a=>78,b=>1,d=>1,f=>51} 4e0000000700000033 4e000000070000003300 4e0000000700000033000000 4e0000000700000033000000 - {e=>1,c=>0,a=>96,b=>1,d=>1,f=>245} 600000000d000000f5 600000000d000000f500 600000000d000000f5000000 600000000d000000f5000000 - {e=>0,c=>0,a=>101,b=>1,d=>1,f=>35} 650000000500000023 65000000050000002300 650000000500000023000000 650000000500000023000000 = struct umixed { unsigned char a:1; }; - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 = struct umixed { unsigned char a:1; unsigned short b:1; }; - {a=>0,b=>0} 000000 00000000 00000000 00000000 - {a=>0,b=>1} 000100 00000100 00000100 00000100 - {a=>0,b=>0} 000000 00000000 00000000 00000000 - {a=>0,b=>1} 000100 00000100 00000100 00000100 - {a=>1,b=>0} 010000 01000000 01000000 01000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; }; - {c=>0,a=>1,b=>1} 01010000000000 0100010000000000 0100010000000000 0100010000000000 - {c=>1,a=>0,b=>0} 00000001000000 0000000001000000 0000000001000000 0000000001000000 - {c=>1,a=>0,b=>1} 00010001000000 0000010001000000 0000010001000000 0000010001000000 - {c=>0,a=>1,b=>1} 01010000000000 0100010000000000 0100010000000000 0100010000000000 - {c=>0,a=>0,b=>0} 00000000000000 0000000000000000 0000000000000000 0000000000000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; unsigned long d:1; }; - {c=>1,a=>1,b=>0,d=>1} 01000003000000 0100000003000000 0100000003000000 0100000003000000 - {c=>0,a=>0,b=>0,d=>1} 00000002000000 0000000002000000 0000000002000000 0000000002000000 - {c=>1,a=>1,b=>0,d=>1} 01000003000000 0100000003000000 0100000003000000 0100000003000000 - {c=>0,a=>0,b=>1,d=>0} 00010000000000 0000010000000000 0000010000000000 0000010000000000 - {c=>0,a=>0,b=>1,d=>1} 00010002000000 0000010002000000 0000010002000000 0000010002000000 = struct umixed { unsigned char a:1; unsigned short b:1; unsigned int c:1; unsigned long d:1; unsigned char e; }; - {e=>216,c=>0,a=>1,b=>0,d=>1} 01000002000000d8 0100000002000000d800 0100000002000000d8000000 0100000002000000d8000000 - {e=>111,c=>0,a=>0,b=>1,d=>0} 000100000000006f 00000100000000006f00 00000100000000006f000000 00000100000000006f000000 - {e=>156,c=>1,a=>0,b=>0,d=>0} 000000010000009c 00000000010000009c00 00000000010000009c000000 00000000010000009c000000 - {e=>93,c=>0,a=>0,b=>1,d=>0} 000100000000005d 00000100000000005d00 00000100000000005d000000 00000100000000005d000000 - {e=>187,c=>0,a=>0,b=>1,d=>0} 00010000000000bb 0000010000000000bb00 0000010000000000bb000000 0000010000000000bb000000 = struct umixed { char a; unsigned char b:1; }; - {a=>122,b=>0} 7a00 7a00 7a00 7a00 - {a=>102,b=>0} 6600 6600 6600 6600 - {a=>105,b=>0} 6900 6900 6900 6900 - {a=>6,b=>1} 0601 0601 0601 0601 - {a=>110,b=>0} 6e00 6e00 6e00 6e00 = struct umixed { char a; unsigned char b:1; unsigned short c:1; }; - {c=>0,a=>-64,b=>0} c0000000 c0000000 c0000000 c0000000 - {c=>0,a=>92,b=>1} 5c010000 5c010000 5c010000 5c010000 - {c=>1,a=>-60,b=>1} c4010100 c4010100 c4010100 c4010100 - {c=>0,a=>0,b=>0} 00000000 00000000 00000000 00000000 - {c=>0,a=>-90,b=>1} a6010000 a6010000 a6010000 a6010000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>43,b=>0,d=>1} 2b00010001000000 2b00010001000000 2b00010001000000 2b00010001000000 - {c=>0,a=>65,b=>1,d=>1} 4101000001000000 4101000001000000 4101000001000000 4101000001000000 - {c=>1,a=>-28,b=>0,d=>1} e400010001000000 e400010001000000 e400010001000000 e400010001000000 - {c=>1,a=>-67,b=>1,d=>0} bd01010000000000 bd01010000000000 bd01010000000000 bd01010000000000 - {c=>1,a=>-56,b=>0,d=>1} c800010001000000 c800010001000000 c800010001000000 c800010001000000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-36,b=>0,d=>0} dc00010002000000 dc00010002000000 dc00010002000000 dc00010002000000 - {e=>1,c=>1,a=>-40,b=>1,d=>1} d801010003000000 d801010003000000 d801010003000000 d801010003000000 - {e=>0,c=>1,a=>56,b=>0,d=>1} 3800010001000000 3800010001000000 3800010001000000 3800010001000000 - {e=>0,c=>1,a=>18,b=>1,d=>0} 1201010000000000 1201010000000000 1201010000000000 1201010000000000 - {e=>1,c=>0,a=>-68,b=>1,d=>0} bc01000002000000 bc01000002000000 bc01000002000000 bc01000002000000 = struct umixed { char a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>77,b=>0,d=>0,f=>112} 4d0001000200000070 4d000100020000007000 4d0001000200000070000000 4d0001000200000070000000 - {e=>1,c=>0,a=>115,b=>0,d=>1,f=>9} 730000000300000009 73000000030000000900 730000000300000009000000 730000000300000009000000 - {e=>0,c=>0,a=>-25,b=>0,d=>0,f=>91} e7000000000000005b e7000000000000005b00 e7000000000000005b000000 e7000000000000005b000000 - {e=>0,c=>0,a=>-68,b=>1,d=>0,f=>5} bc0100000000000005 bc010000000000000500 bc0100000000000005000000 bc0100000000000005000000 - {e=>0,c=>1,a=>86,b=>0,d=>0,f=>30} 56000100000000001e 56000100000000001e00 56000100000000001e000000 56000100000000001e000000 = struct umixed { short a; unsigned char b:1; }; - {a=>49,b=>0} 310000 31000000 31000000 31000000 - {a=>84,b=>1} 540001 54000100 54000100 54000100 - {a=>-73,b=>0} b7ff00 b7ff0000 b7ff0000 b7ff0000 - {a=>92,b=>0} 5c0000 5c000000 5c000000 5c000000 - {a=>76,b=>0} 4c0000 4c000000 4c000000 4c000000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; }; - {c=>1,a=>-69,b=>0} bbff000100 bbff00000100 bbff00000100 bbff00000100 - {c=>1,a=>103,b=>0} 6700000100 670000000100 670000000100 670000000100 - {c=>0,a=>-68,b=>0} bcff000000 bcff00000000 bcff00000000 bcff00000000 - {c=>0,a=>-31,b=>0} e1ff000000 e1ff00000000 e1ff00000000 e1ff00000000 - {c=>0,a=>87,b=>1} 5700010000 570001000000 570001000000 570001000000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>0,a=>-26,b=>1,d=>0} e6ff01000000000000 e6ff0100000000000000 e6ff01000000000000000000 e6ff01000000000000000000 - {c=>1,a=>41,b=>0,d=>1} 290000010001000000 29000000010001000000 290000000100000001000000 290000000100000001000000 - {c=>0,a=>47,b=>1,d=>1} 2f0001000001000000 2f000100000001000000 2f0001000000000001000000 2f0001000000000001000000 - {c=>0,a=>-115,b=>0,d=>0} 8dff00000000000000 8dff0000000000000000 8dff00000000000000000000 8dff00000000000000000000 - {c=>1,a=>16,b=>1,d=>0} 100001010000000000 10000100010000000000 100001000100000000000000 100001000100000000000000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>-24,b=>0,d=>0} e8ff00010002000000 e8ff0000010002000000 e8ff00000100000002000000 e8ff00000100000002000000 - {e=>1,c=>1,a=>-4,b=>1,d=>0} fcff01010002000000 fcff0100010002000000 fcff01000100000002000000 fcff01000100000002000000 - {e=>0,c=>0,a=>-80,b=>1,d=>0} b0ff01000000000000 b0ff0100000000000000 b0ff01000000000000000000 b0ff01000000000000000000 - {e=>0,c=>0,a=>18,b=>1,d=>0} 120001000000000000 12000100000000000000 120001000000000000000000 120001000000000000000000 - {e=>0,c=>0,a=>-46,b=>1,d=>0} d2ff01000000000000 d2ff0100000000000000 d2ff01000000000000000000 d2ff01000000000000000000 = struct umixed { short a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>5,b=>0,d=>0,f=>113} 05000001000200000071 050000000100020000007100 05000000010000000200000071000000 05000000010000000200000071000000 - {e=>0,c=>0,a=>67,b=>1,d=>1,f=>126} 4300010000010000007e 430001000000010000007e00 4300010000000000010000007e000000 4300010000000000010000007e000000 - {e=>0,c=>0,a=>49,b=>0,d=>1,f=>165} 310000000001000000a5 31000000000001000000a500 310000000000000001000000a5000000 310000000000000001000000a5000000 - {e=>1,c=>0,a=>0,b=>0,d=>1,f=>40} 00000000000300000028 000000000000030000002800 00000000000000000300000028000000 00000000000000000300000028000000 - {e=>0,c=>1,a=>66,b=>0,d=>1,f=>177} 420000010001000000b1 42000000010001000000b100 420000000100000001000000b1000000 420000000100000001000000b1000000 = struct umixed { int a; unsigned char b:1; }; - {a=>-94,b=>0} a2ffffff00 a2ffffff0000 a2ffffff00000000 a2ffffff00000000 - {a=>-14,b=>0} f2ffffff00 f2ffffff0000 f2ffffff00000000 f2ffffff00000000 - {a=>-40,b=>0} d8ffffff00 d8ffffff0000 d8ffffff00000000 d8ffffff00000000 - {a=>89,b=>0} 5900000000 590000000000 5900000000000000 5900000000000000 - {a=>-2,b=>1} feffffff01 feffffff0100 feffffff01000000 feffffff01000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; }; - {c=>0,a=>114,b=>1} 72000000010000 7200000001000000 7200000001000000 7200000001000000 - {c=>1,a=>-68,b=>1} bcffffff010100 bcffffff01000100 bcffffff01000100 bcffffff01000100 - {c=>0,a=>60,b=>1} 3c000000010000 3c00000001000000 3c00000001000000 3c00000001000000 - {c=>0,a=>-105,b=>1} 97ffffff010000 97ffffff01000000 97ffffff01000000 97ffffff01000000 - {c=>1,a=>-90,b=>0} a6ffffff000100 a6ffffff00000100 a6ffffff00000100 a6ffffff00000100 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>44,b=>0,d=>1} 2c00000000010001000000 2c0000000000010001000000 2c0000000000010001000000 2c0000000000010001000000 - {c=>1,a=>-90,b=>0,d=>0} a6ffffff00010000000000 a6ffffff0000010000000000 a6ffffff0000010000000000 a6ffffff0000010000000000 - {c=>1,a=>-11,b=>0,d=>0} f5ffffff00010000000000 f5ffffff0000010000000000 f5ffffff0000010000000000 f5ffffff0000010000000000 - {c=>1,a=>18,b=>1,d=>1} 1200000001010001000000 120000000100010001000000 120000000100010001000000 120000000100010001000000 - {c=>0,a=>-25,b=>0,d=>0} e7ffffff00000000000000 e7ffffff0000000000000000 e7ffffff0000000000000000 e7ffffff0000000000000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>0,c=>0,a=>-47,b=>1,d=>0} d1ffffff01000000000000 d1ffffff0100000000000000 d1ffffff0100000000000000 d1ffffff0100000000000000 - {e=>0,c=>1,a=>-12,b=>0,d=>1} f4ffffff00010001000000 f4ffffff0000010001000000 f4ffffff0000010001000000 f4ffffff0000010001000000 - {e=>1,c=>1,a=>-74,b=>1,d=>0} b6ffffff01010002000000 b6ffffff0100010002000000 b6ffffff0100010002000000 b6ffffff0100010002000000 - {e=>1,c=>1,a=>-49,b=>1,d=>0} cfffffff01010002000000 cfffffff0100010002000000 cfffffff0100010002000000 cfffffff0100010002000000 - {e=>1,c=>1,a=>61,b=>1,d=>0} 3d00000001010002000000 3d0000000100010002000000 3d0000000100010002000000 3d0000000100010002000000 = struct umixed { int a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>1,a=>-19,b=>0,d=>0,f=>112} edffffff0001000200000070 edffffff00000100020000007000 edffffff000001000200000070000000 edffffff000001000200000070000000 - {e=>1,c=>0,a=>-74,b=>1,d=>0,f=>149} b6ffffff0100000200000095 b6ffffff01000000020000009500 b6ffffff010000000200000095000000 b6ffffff010000000200000095000000 - {e=>0,c=>1,a=>-124,b=>1,d=>1,f=>78} 84ffffff010100010000004e 84ffffff01000100010000004e00 84ffffff01000100010000004e000000 84ffffff01000100010000004e000000 - {e=>1,c=>0,a=>-25,b=>0,d=>0,f=>222} e7ffffff00000002000000de e7ffffff0000000002000000de00 e7ffffff0000000002000000de000000 e7ffffff0000000002000000de000000 - {e=>0,c=>0,a=>127,b=>1,d=>0,f=>81} 7f0000000100000000000051 7f00000001000000000000005100 7f000000010000000000000051000000 7f000000010000000000000051000000 = struct umixed { long a; unsigned char b:1; }; - {a=>127,b=>0} 7f00000000 7f0000000000 7f00000000000000 7f00000000000000 - {a=>66,b=>1} 4200000001 420000000100 4200000001000000 4200000001000000 - {a=>13,b=>1} 0d00000001 0d0000000100 0d00000001000000 0d00000001000000 - {a=>114,b=>0} 7200000000 720000000000 7200000000000000 7200000000000000 - {a=>-73,b=>1} b7ffffff01 b7ffffff0100 b7ffffff01000000 b7ffffff01000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; }; - {c=>1,a=>105,b=>0} 69000000000100 6900000000000100 6900000000000100 6900000000000100 - {c=>1,a=>-8,b=>0} f8ffffff000100 f8ffffff00000100 f8ffffff00000100 f8ffffff00000100 - {c=>0,a=>5,b=>0} 05000000000000 0500000000000000 0500000000000000 0500000000000000 - {c=>1,a=>-123,b=>0} 85ffffff000100 85ffffff00000100 85ffffff00000100 85ffffff00000100 - {c=>1,a=>103,b=>1} 67000000010100 6700000001000100 6700000001000100 6700000001000100 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; }; - {c=>1,a=>-17,b=>1,d=>0} efffffff01010000000000 efffffff0100010000000000 efffffff0100010000000000 efffffff0100010000000000 - {c=>1,a=>-127,b=>1,d=>0} 81ffffff01010000000000 81ffffff0100010000000000 81ffffff0100010000000000 81ffffff0100010000000000 - {c=>1,a=>102,b=>1,d=>1} 6600000001010001000000 660000000100010001000000 660000000100010001000000 660000000100010001000000 - {c=>1,a=>-88,b=>1,d=>1} a8ffffff01010001000000 a8ffffff0100010001000000 a8ffffff0100010001000000 a8ffffff0100010001000000 - {c=>1,a=>15,b=>1,d=>1} 0f00000001010001000000 0f0000000100010001000000 0f0000000100010001000000 0f0000000100010001000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; }; - {e=>1,c=>1,a=>118,b=>1,d=>1} 7600000001010003000000 760000000100010003000000 760000000100010003000000 760000000100010003000000 - {e=>1,c=>0,a=>-90,b=>0,d=>1} a6ffffff00000003000000 a6ffffff0000000003000000 a6ffffff0000000003000000 a6ffffff0000000003000000 - {e=>0,c=>0,a=>103,b=>0,d=>0} 6700000000000000000000 670000000000000000000000 670000000000000000000000 670000000000000000000000 - {e=>0,c=>1,a=>-84,b=>0,d=>1} acffffff00010001000000 acffffff0000010001000000 acffffff0000010001000000 acffffff0000010001000000 - {e=>1,c=>1,a=>92,b=>0,d=>0} 5c00000000010002000000 5c0000000000010002000000 5c0000000000010002000000 5c0000000000010002000000 = struct umixed { long a; unsigned char b:1; unsigned short c:1; unsigned int d:1; unsigned long e:1; unsigned char f; }; - {e=>1,c=>0,a=>51,b=>0,d=>0,f=>187} 3300000000000002000000bb 330000000000000002000000bb00 330000000000000002000000bb000000 330000000000000002000000bb000000 - {e=>0,c=>1,a=>-115,b=>1,d=>1,f=>46} 8dffffff010100010000002e 8dffffff01000100010000002e00 8dffffff01000100010000002e000000 8dffffff01000100010000002e000000 - {e=>1,c=>0,a=>105,b=>0,d=>0,f=>59} 69000000000000020000003b 6900000000000000020000003b00 6900000000000000020000003b000000 6900000000000000020000003b000000 - {e=>1,c=>1,a=>-128,b=>0,d=>1,f=>86} 80ffffff0001000300000056 80ffffff00000100030000005600 80ffffff000001000300000056000000 80ffffff000001000300000056000000 - {e=>1,c=>1,a=>24,b=>1,d=>1,f=>117} 180000000101000300000075 1800000001000100030000007500 18000000010001000300000075000000 18000000010001000300000075000000 = struct smixed { signed char a:1; }; - {a=>-1} 01 01 01 01 - {a=>-1} 01 01 01 01 - {a=>-1} 01 01 01 01 - {a=>-1} 01 01 01 01 - {a=>-1} 01 01 01 01 = struct smixed { signed char a:1; signed short b:1; }; - {a=>0,b=>0} 000000 00000000 00000000 00000000 - {a=>-1,b=>0} 010000 01000000 01000000 01000000 - {a=>0,b=>-1} 000100 00000100 00000100 00000100 - {a=>0,b=>-1} 000100 00000100 00000100 00000100 - {a=>0,b=>-1} 000100 00000100 00000100 00000100 = struct smixed { signed char a:1; signed short b:1; signed int c:1; }; - {c=>0,a=>0,b=>-1} 00010000000000 0000010000000000 0000010000000000 0000010000000000 - {c=>-1,a=>-1,b=>0} 01000001000000 0100000001000000 0100000001000000 0100000001000000 - {c=>0,a=>0,b=>-1} 00010000000000 0000010000000000 0000010000000000 0000010000000000 - {c=>-1,a=>0,b=>0} 00000001000000 0000000001000000 0000000001000000 0000000001000000 - {c=>0,a=>0,b=>0} 00000000000000 0000000000000000 0000000000000000 0000000000000000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; signed long d:1; }; - {c=>-1,a=>-1,b=>-1,d=>-1} 01010003000000 0100010003000000 0100010003000000 0100010003000000 - {c=>0,a=>-1,b=>0,d=>0} 01000000000000 0100000000000000 0100000000000000 0100000000000000 - {c=>-1,a=>0,b=>-1,d=>-1} 00010003000000 0000010003000000 0000010003000000 0000010003000000 - {c=>-1,a=>-1,b=>0,d=>0} 01000001000000 0100000001000000 0100000001000000 0100000001000000 - {c=>0,a=>-1,b=>0,d=>-1} 01000002000000 0100000002000000 0100000002000000 0100000002000000 = struct smixed { signed char a:1; signed short b:1; signed int c:1; signed long d:1; signed int e; }; - {e=>-8,c=>0,a=>-1,b=>0,d=>-1} 01000002000000f8ffffff 0100000002000000f8ffffff 0100000002000000f8ffffff 0100000002000000f8ffffff - {e=>93,c=>-1,a=>0,b=>-1,d=>0} 000100010000005d000000 00000100010000005d000000 00000100010000005d000000 00000100010000005d000000 - {e=>98,c=>-1,a=>-1,b=>-1,d=>-1} 0101000300000062000000 010001000300000062000000 010001000300000062000000 010001000300000062000000 - {e=>-79,c=>0,a=>0,b=>-1,d=>-1} 00010002000000b1ffffff 0000010002000000b1ffffff 0000010002000000b1ffffff 0000010002000000b1ffffff - {e=>-60,c=>-1,a=>0,b=>0,d=>-1} 00000003000000c4ffffff 0000000003000000c4ffffff 0000000003000000c4ffffff 0000000003000000c4ffffff = struct smixed { char a; signed char b:1; }; - {a=>28,b=>0} 1c00 1c00 1c00 1c00 - {a=>-89,b=>-1} a701 a701 a701 a701 - {a=>52,b=>-1} 3401 3401 3401 3401 - {a=>91,b=>0} 5b00 5b00 5b00 5b00 - {a=>-106,b=>0} 9600 9600 9600 9600 = struct smixed { char a; signed char b:1; signed short c:1; }; - {c=>-1,a=>-38,b=>0} da000100 da000100 da000100 da000100 - {c=>0,a=>-57,b=>-1} c7010000 c7010000 c7010000 c7010000 - {c=>-1,a=>-94,b=>-1} a2010100 a2010100 a2010100 a2010100 - {c=>-1,a=>107,b=>-1} 6b010100 6b010100 6b010100 6b010100 - {c=>0,a=>-95,b=>0} a1000000 a1000000 a1000000 a1000000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>35,b=>-1,d=>0} 2301000000000000 2301000000000000 2301000000000000 2301000000000000 - {c=>-1,a=>-97,b=>-1,d=>0} 9f01010000000000 9f01010000000000 9f01010000000000 9f01010000000000 - {c=>0,a=>79,b=>-1,d=>-1} 4f01000001000000 4f01000001000000 4f01000001000000 4f01000001000000 - {c=>0,a=>-2,b=>0,d=>-1} fe00000001000000 fe00000001000000 fe00000001000000 fe00000001000000 - {c=>-1,a=>52,b=>-1,d=>0} 3401010000000000 3401010000000000 3401010000000000 3401010000000000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>0,c=>0,a=>63,b=>-1,d=>-1} 3f01000001000000 3f01000001000000 3f01000001000000 3f01000001000000 - {e=>-1,c=>0,a=>105,b=>0,d=>-1} 6900000003000000 6900000003000000 6900000003000000 6900000003000000 - {e=>0,c=>-1,a=>84,b=>0,d=>-1} 5400010001000000 5400010001000000 5400010001000000 5400010001000000 - {e=>-1,c=>0,a=>40,b=>-1,d=>-1} 2801000003000000 2801000003000000 2801000003000000 2801000003000000 - {e=>0,c=>0,a=>114,b=>-1,d=>0} 7201000000000000 7201000000000000 7201000000000000 7201000000000000 = struct smixed { char a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>-50,b=>-1,d=>-1,f=>37} ce0101000300000025000000 ce0101000300000025000000 ce0101000300000025000000 ce0101000300000025000000 - {e=>-1,c=>-1,a=>-111,b=>-1,d=>-1,f=>-13} 9101010003000000f3ffffff 9101010003000000f3ffffff 9101010003000000f3ffffff 9101010003000000f3ffffff - {e=>0,c=>0,a=>-7,b=>0,d=>-1,f=>-107} f90000000100000095ffffff f90000000100000095ffffff f90000000100000095ffffff f90000000100000095ffffff - {e=>0,c=>-1,a=>8,b=>0,d=>-1,f=>-10} 0800010001000000f6ffffff 0800010001000000f6ffffff 0800010001000000f6ffffff 0800010001000000f6ffffff - {e=>-1,c=>-1,a=>-89,b=>0,d=>-1,f=>127} a7000100030000007f000000 a7000100030000007f000000 a7000100030000007f000000 a7000100030000007f000000 = struct smixed { short a; signed char b:1; }; - {a=>-94,b=>-1} a2ff01 a2ff0100 a2ff0100 a2ff0100 - {a=>19,b=>-1} 130001 13000100 13000100 13000100 - {a=>-68,b=>-1} bcff01 bcff0100 bcff0100 bcff0100 - {a=>-102,b=>-1} 9aff01 9aff0100 9aff0100 9aff0100 - {a=>-111,b=>-1} 91ff01 91ff0100 91ff0100 91ff0100 = struct smixed { short a; signed char b:1; signed short c:1; }; - {c=>-1,a=>41,b=>0} 2900000100 290000000100 290000000100 290000000100 - {c=>-1,a=>99,b=>0} 6300000100 630000000100 630000000100 630000000100 - {c=>-1,a=>-58,b=>0} c6ff000100 c6ff00000100 c6ff00000100 c6ff00000100 - {c=>-1,a=>28,b=>0} 1c00000100 1c0000000100 1c0000000100 1c0000000100 - {c=>-1,a=>-117,b=>0} 8bff000100 8bff00000100 8bff00000100 8bff00000100 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>-1,a=>114,b=>-1,d=>-1} 720001010001000000 72000100010001000000 720001000100000001000000 720001000100000001000000 - {c=>0,a=>-58,b=>-1,d=>-1} c6ff01000001000000 c6ff0100000001000000 c6ff01000000000001000000 c6ff01000000000001000000 - {c=>-1,a=>15,b=>-1,d=>0} 0f0001010000000000 0f000100010000000000 0f0001000100000000000000 0f0001000100000000000000 - {c=>0,a=>-98,b=>0,d=>0} 9eff00000000000000 9eff0000000000000000 9eff00000000000000000000 9eff00000000000000000000 - {c=>-1,a=>26,b=>0,d=>0} 1a0000010000000000 1a000000010000000000 1a0000000100000000000000 1a0000000100000000000000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>-1,c=>0,a=>-4,b=>0,d=>0} fcff00000002000000 fcff0000000002000000 fcff00000000000002000000 fcff00000000000002000000 - {e=>-1,c=>0,a=>6,b=>0,d=>-1} 060000000003000000 06000000000003000000 060000000000000003000000 060000000000000003000000 - {e=>0,c=>-1,a=>40,b=>-1,d=>-1} 280001010001000000 28000100010001000000 280001000100000001000000 280001000100000001000000 - {e=>-1,c=>0,a=>32,b=>-1,d=>0} 200001000002000000 20000100000002000000 200001000000000002000000 200001000000000002000000 - {e=>0,c=>-1,a=>-119,b=>0,d=>-1} 89ff00010001000000 89ff0000010001000000 89ff00000100000001000000 89ff00000100000001000000 = struct smixed { short a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>0,c=>0,a=>-8,b=>-1,d=>-1,f=>-2} f8ff01000001000000feffffff f8ff0100000001000000feffffff f8ff01000000000001000000feffffff f8ff01000000000001000000feffffff - {e=>-1,c=>0,a=>-61,b=>-1,d=>0,f=>-61} c3ff01000002000000c3ffffff c3ff0100000002000000c3ffffff c3ff01000000000002000000c3ffffff c3ff01000000000002000000c3ffffff - {e=>0,c=>0,a=>63,b=>-1,d=>-1,f=>-95} 3f0001000001000000a1ffffff 3f000100000001000000a1ffffff 3f0001000000000001000000a1ffffff 3f0001000000000001000000a1ffffff - {e=>0,c=>0,a=>60,b=>0,d=>0,f=>92} 3c00000000000000005c000000 3c0000000000000000005c000000 3c00000000000000000000005c000000 3c00000000000000000000005c000000 - {e=>0,c=>-1,a=>-67,b=>0,d=>-1,f=>19} bdff0001000100000013000000 bdff000001000100000013000000 bdff0000010000000100000013000000 bdff0000010000000100000013000000 = struct smixed { int a; signed char b:1; }; - {a=>95,b=>-1} 5f00000001 5f0000000100 5f00000001000000 5f00000001000000 - {a=>50,b=>0} 3200000000 320000000000 3200000000000000 3200000000000000 - {a=>-64,b=>-1} c0ffffff01 c0ffffff0100 c0ffffff01000000 c0ffffff01000000 - {a=>-33,b=>-1} dfffffff01 dfffffff0100 dfffffff01000000 dfffffff01000000 - {a=>-44,b=>-1} d4ffffff01 d4ffffff0100 d4ffffff01000000 d4ffffff01000000 = struct smixed { int a; signed char b:1; signed short c:1; }; - {c=>0,a=>-115,b=>0} 8dffffff000000 8dffffff00000000 8dffffff00000000 8dffffff00000000 - {c=>-1,a=>-6,b=>0} faffffff000100 faffffff00000100 faffffff00000100 faffffff00000100 - {c=>0,a=>40,b=>-1} 28000000010000 2800000001000000 2800000001000000 2800000001000000 - {c=>-1,a=>-100,b=>-1} 9cffffff010100 9cffffff01000100 9cffffff01000100 9cffffff01000100 - {c=>-1,a=>-26,b=>-1} e6ffffff010100 e6ffffff01000100 e6ffffff01000100 e6ffffff01000100 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>111,b=>-1,d=>0} 6f00000001000000000000 6f0000000100000000000000 6f0000000100000000000000 6f0000000100000000000000 - {c=>-1,a=>-15,b=>-1,d=>0} f1ffffff01010000000000 f1ffffff0100010000000000 f1ffffff0100010000000000 f1ffffff0100010000000000 - {c=>-1,a=>27,b=>-1,d=>0} 1b00000001010000000000 1b0000000100010000000000 1b0000000100010000000000 1b0000000100010000000000 - {c=>0,a=>95,b=>-1,d=>0} 5f00000001000000000000 5f0000000100000000000000 5f0000000100000000000000 5f0000000100000000000000 - {c=>0,a=>40,b=>0,d=>0} 2800000000000000000000 280000000000000000000000 280000000000000000000000 280000000000000000000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>0,c=>0,a=>106,b=>0,d=>-1} 6a00000000000001000000 6a0000000000000001000000 6a0000000000000001000000 6a0000000000000001000000 - {e=>0,c=>0,a=>-60,b=>-1,d=>-1} c4ffffff01000001000000 c4ffffff0100000001000000 c4ffffff0100000001000000 c4ffffff0100000001000000 - {e=>-1,c=>-1,a=>21,b=>0,d=>-1} 1500000000010003000000 150000000000010003000000 150000000000010003000000 150000000000010003000000 - {e=>-1,c=>-1,a=>12,b=>0,d=>0} 0c00000000010002000000 0c0000000000010002000000 0c0000000000010002000000 0c0000000000010002000000 - {e=>0,c=>-1,a=>-11,b=>-1,d=>-1} f5ffffff01010001000000 f5ffffff0100010001000000 f5ffffff0100010001000000 f5ffffff0100010001000000 = struct smixed { int a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>1,b=>-1,d=>-1,f=>-92} 0100000001010003000000a4ffffff 010000000100010003000000a4ffffff 010000000100010003000000a4ffffff 010000000100010003000000a4ffffff - {e=>-1,c=>-1,a=>-79,b=>0,d=>0,f=>47} b1ffffff000100020000002f000000 b1ffffff00000100020000002f000000 b1ffffff00000100020000002f000000 b1ffffff00000100020000002f000000 - {e=>-1,c=>-1,a=>81,b=>-1,d=>0,f=>-106} 510000000101000200000096ffffff 51000000010001000200000096ffffff 51000000010001000200000096ffffff 51000000010001000200000096ffffff - {e=>0,c=>0,a=>15,b=>0,d=>-1,f=>2} 0f0000000000000100000002000000 0f000000000000000100000002000000 0f000000000000000100000002000000 0f000000000000000100000002000000 - {e=>0,c=>0,a=>91,b=>-1,d=>0,f=>98} 5b0000000100000000000062000000 5b000000010000000000000062000000 5b000000010000000000000062000000 5b000000010000000000000062000000 = struct smixed { long a; signed char b:1; }; - {a=>60,b=>-1} 3c00000001 3c0000000100 3c00000001000000 3c00000001000000 - {a=>125,b=>-1} 7d00000001 7d0000000100 7d00000001000000 7d00000001000000 - {a=>-23,b=>-1} e9ffffff01 e9ffffff0100 e9ffffff01000000 e9ffffff01000000 - {a=>-14,b=>-1} f2ffffff01 f2ffffff0100 f2ffffff01000000 f2ffffff01000000 - {a=>51,b=>0} 3300000000 330000000000 3300000000000000 3300000000000000 = struct smixed { long a; signed char b:1; signed short c:1; }; - {c=>-1,a=>-105,b=>-1} 97ffffff010100 97ffffff01000100 97ffffff01000100 97ffffff01000100 - {c=>0,a=>31,b=>0} 1f000000000000 1f00000000000000 1f00000000000000 1f00000000000000 - {c=>0,a=>43,b=>0} 2b000000000000 2b00000000000000 2b00000000000000 2b00000000000000 - {c=>0,a=>-128,b=>0} 80ffffff000000 80ffffff00000000 80ffffff00000000 80ffffff00000000 - {c=>-1,a=>101,b=>0} 65000000000100 6500000000000100 6500000000000100 6500000000000100 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; }; - {c=>0,a=>18,b=>0,d=>-1} 1200000000000001000000 120000000000000001000000 120000000000000001000000 120000000000000001000000 - {c=>-1,a=>-93,b=>-1,d=>0} a3ffffff01010000000000 a3ffffff0100010000000000 a3ffffff0100010000000000 a3ffffff0100010000000000 - {c=>-1,a=>-110,b=>-1,d=>-1} 92ffffff01010001000000 92ffffff0100010001000000 92ffffff0100010001000000 92ffffff0100010001000000 - {c=>-1,a=>-52,b=>0,d=>-1} ccffffff00010001000000 ccffffff0000010001000000 ccffffff0000010001000000 ccffffff0000010001000000 - {c=>0,a=>120,b=>-1,d=>-1} 7800000001000001000000 780000000100000001000000 780000000100000001000000 780000000100000001000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; }; - {e=>-1,c=>-1,a=>-121,b=>0,d=>-1} 87ffffff00010003000000 87ffffff0000010003000000 87ffffff0000010003000000 87ffffff0000010003000000 - {e=>0,c=>0,a=>-86,b=>0,d=>-1} aaffffff00000001000000 aaffffff0000000001000000 aaffffff0000000001000000 aaffffff0000000001000000 - {e=>-1,c=>0,a=>115,b=>-1,d=>0} 7300000001000002000000 730000000100000002000000 730000000100000002000000 730000000100000002000000 - {e=>-1,c=>-1,a=>26,b=>-1,d=>-1} 1a00000001010003000000 1a0000000100010003000000 1a0000000100010003000000 1a0000000100010003000000 - {e=>-1,c=>-1,a=>-108,b=>-1,d=>-1} 94ffffff01010003000000 94ffffff0100010003000000 94ffffff0100010003000000 94ffffff0100010003000000 = struct smixed { long a; signed char b:1; signed short c:1; signed int d:1; signed long e:1; signed int f; }; - {e=>-1,c=>-1,a=>26,b=>0,d=>-1,f=>-117} 1a000000000100030000008bffffff 1a00000000000100030000008bffffff 1a00000000000100030000008bffffff 1a00000000000100030000008bffffff - {e=>-1,c=>0,a=>-97,b=>0,d=>-1,f=>99} 9fffffff0000000300000063000000 9fffffff000000000300000063000000 9fffffff000000000300000063000000 9fffffff000000000300000063000000 - {e=>0,c=>-1,a=>-23,b=>-1,d=>0,f=>63} e9ffffff010100000000003f000000 e9ffffff01000100000000003f000000 e9ffffff01000100000000003f000000 e9ffffff01000100000000003f000000 - {e=>0,c=>-1,a=>95,b=>0,d=>-1,f=>108} 5f000000000100010000006c000000 5f00000000000100010000006c000000 5f00000000000100010000006c000000 5f00000000000100010000006c000000 - {e=>-1,c=>0,a=>-97,b=>0,d=>0,f=>86} 9fffffff0000000200000056000000 9fffffff000000000200000056000000 9fffffff000000000200000056000000 9fffffff000000000200000056000000 = struct mixed { unsigned char a:1; }; - {a=>1} 01 01 01 01 - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>0} 00 00 00 00 = struct mixed { unsigned char a:1; signed char b:1; }; - {a=>0,b=>-1} 02 02 02 02 - {a=>1,b=>0} 01 01 01 01 - {a=>0,b=>0} 00 00 00 00 - {a=>1,b=>0} 01 01 01 01 - {a=>1,b=>0} 01 01 01 01 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; }; - {c=>1,a=>0,b=>0} 000100 00000100 00000100 00000100 - {c=>1,a=>1,b=>-1} 030100 03000100 03000100 03000100 - {c=>1,a=>0,b=>0} 000100 00000100 00000100 00000100 - {c=>1,a=>1,b=>-1} 030100 03000100 03000100 03000100 - {c=>1,a=>0,b=>-1} 020100 02000100 02000100 02000100 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; }; - {c=>0,a=>1,b=>0,d=>-1} 010200 01000200 01000200 01000200 - {c=>0,a=>1,b=>0,d=>-1} 010200 01000200 01000200 01000200 - {c=>0,a=>1,b=>-1,d=>0} 030000 03000000 03000000 03000000 - {c=>1,a=>1,b=>-1,d=>0} 030100 03000100 03000100 03000100 - {c=>1,a=>0,b=>-1,d=>-1} 020300 02000300 02000300 02000300 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; }; - {e=>1,c=>1,a=>0,b=>-1,d=>-1} 02030001000000 0200030001000000 0200030001000000 0200030001000000 - {e=>0,c=>1,a=>1,b=>-1,d=>-1} 03030000000000 0300030000000000 0300030000000000 0300030000000000 - {e=>1,c=>1,a=>0,b=>0,d=>0} 00010001000000 0000010001000000 0000010001000000 0000010001000000 - {e=>0,c=>1,a=>1,b=>0,d=>-1} 01030000000000 0100030000000000 0100030000000000 0100030000000000 - {e=>0,c=>0,a=>1,b=>0,d=>-1} 01020000000000 0100020000000000 0100020000000000 0100020000000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; }; - {e=>0,c=>0,a=>0,b=>0,d=>-1,f=>-1} 00020002000000 0000020002000000 0000020002000000 0000020002000000 - {e=>0,c=>0,a=>1,b=>0,d=>-1,f=>-1} 01020002000000 0100020002000000 0100020002000000 0100020002000000 - {e=>0,c=>1,a=>0,b=>-1,d=>-1,f=>-1} 02030002000000 0200030002000000 0200030002000000 0200030002000000 - {e=>1,c=>0,a=>0,b=>-1,d=>-1,f=>0} 02020001000000 0200020001000000 0200020001000000 0200020001000000 - {e=>0,c=>0,a=>0,b=>0,d=>0,f=>-1} 00000002000000 0000000002000000 0000000002000000 0000000002000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; }; - {e=>0,c=>0,a=>0,g=>0,b=>-1,d=>0,f=>0} 02000000000000 0200000000000000 0200000000000000 0200000000000000 - {e=>1,c=>0,a=>1,g=>0,b=>0,d=>-1,f=>-1} 01020003000000 0100020003000000 0100020003000000 0100020003000000 - {e=>1,c=>0,a=>1,g=>1,b=>0,d=>0,f=>0} 01000005000000 0100000005000000 0100000005000000 0100000005000000 - {e=>0,c=>0,a=>1,g=>0,b=>-1,d=>-1,f=>0} 03020000000000 0300020000000000 0300020000000000 0300020000000000 - {e=>0,c=>1,a=>0,g=>1,b=>-1,d=>0,f=>0} 02010004000000 0200010004000000 0200010004000000 0200010004000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; signed long h:1; }; - {e=>1,a=>1,d=>-1,c=>1,h=>0,b=>-1,g=>1,f=>-1} 03030007000000 0300030007000000 0300030007000000 0300030007000000 - {e=>0,a=>0,d=>-1,c=>1,h=>0,b=>0,g=>0,f=>0} 00030000000000 0000030000000000 0000030000000000 0000030000000000 - {e=>1,a=>0,d=>-1,c=>0,h=>-1,b=>0,g=>1,f=>0} 0002000d000000 000002000d000000 000002000d000000 000002000d000000 - {e=>1,a=>0,d=>-1,c=>0,h=>-1,b=>0,g=>0,f=>0} 00020009000000 0000020009000000 0000020009000000 0000020009000000 - {e=>1,a=>1,d=>0,c=>1,h=>0,b=>-1,g=>0,f=>0} 03010001000000 0300010001000000 0300010001000000 0300010001000000 = struct mixed { unsigned char a:1; signed char b:1; unsigned short c:1; signed short d:1; unsigned int e:1; signed int f:1; unsigned long g:1; signed long h:1; unsigned char i; }; - {e=>1,a=>0,d=>-1,c=>1,h=>-1,b=>-1,g=>0,f=>-1,i=>162} 0203000b000000a2 020003000b000000a200 020003000b000000a2000000 020003000b000000a2000000 - {e=>1,a=>1,d=>0,c=>0,h=>0,b=>-1,g=>0,f=>0,i=>113} 0300000100000071 03000000010000007100 030000000100000071000000 030000000100000071000000 - {e=>0,a=>1,d=>0,c=>1,h=>0,b=>0,g=>1,f=>-1,i=>177} 01010006000000b1 0100010006000000b100 0100010006000000b1000000 0100010006000000b1000000 - {e=>0,a=>1,d=>-1,c=>1,h=>0,b=>0,g=>1,f=>-1,i=>254} 01030006000000fe 0100030006000000fe00 0100030006000000fe000000 0100030006000000fe000000 - {e=>1,a=>0,d=>-1,c=>0,h=>0,b=>0,g=>0,f=>-1,i=>196} 00020003000000c4 0000020003000000c400 0000020003000000c4000000 0000020003000000c4000000 = struct mixed { char a; unsigned char b:1; }; - {a=>59,b=>1} 3b01 3b01 3b01 3b01 - {a=>126,b=>1} 7e01 7e01 7e01 7e01 - {a=>58,b=>1} 3a01 3a01 3a01 3a01 - {a=>84,b=>0} 5400 5400 5400 5400 - {a=>-59,b=>1} c501 c501 c501 c501 = struct mixed { char a; unsigned char b:1; signed char c:1; }; - {c=>0,a=>-8,b=>1} f801 f801 f801 f801 - {c=>-1,a=>-61,b=>1} c303 c303 c303 c303 - {c=>0,a=>38,b=>0} 2600 2600 2600 2600 - {c=>0,a=>103,b=>1} 6701 6701 6701 6701 - {c=>0,a=>-74,b=>0} b600 b600 b600 b600 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>-1,a=>-94,b=>0,d=>0} a2020000 a2020000 a2020000 a2020000 - {c=>0,a=>18,b=>1,d=>0} 12010000 12010000 12010000 12010000 - {c=>0,a=>83,b=>1,d=>1} 53010100 53010100 53010100 53010100 - {c=>-1,a=>41,b=>1,d=>1} 29030100 29030100 29030100 29030100 - {c=>-1,a=>28,b=>0,d=>1} 1c020100 1c020100 1c020100 1c020100 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>-1,a=>112,b=>1,d=>0} 70030000 70030000 70030000 70030000 - {e=>-1,c=>0,a=>72,b=>1,d=>1} 48010300 48010300 48010300 48010300 - {e=>-1,c=>0,a=>33,b=>0,d=>1} 21000300 21000300 21000300 21000300 - {e=>-1,c=>-1,a=>57,b=>1,d=>0} 39030200 39030200 39030200 39030200 - {e=>0,c=>0,a=>99,b=>1,d=>1} 63010100 63010100 63010100 63010100 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>0,a=>-16,b=>0,d=>0,f=>1} f000000001000000 f000000001000000 f000000001000000 f000000001000000 - {e=>0,c=>0,a=>35,b=>0,d=>1,f=>1} 2300010001000000 2300010001000000 2300010001000000 2300010001000000 - {e=>0,c=>-1,a=>24,b=>1,d=>0,f=>1} 1803000001000000 1803000001000000 1803000001000000 1803000001000000 - {e=>-1,c=>0,a=>-56,b=>0,d=>1,f=>1} c800030001000000 c800030001000000 c800030001000000 c800030001000000 - {e=>0,c=>0,a=>-67,b=>1,d=>0,f=>0} bd01000000000000 bd01000000000000 bd01000000000000 bd01000000000000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>0,a=>-105,g=>0,b=>0,d=>0,f=>0} 9700020000000000 9700020000000000 9700020000000000 9700020000000000 - {e=>0,c=>-1,a=>101,g=>-1,b=>0,d=>0,f=>0} 6502000002000000 6502000002000000 6502000002000000 6502000002000000 - {e=>0,c=>0,a=>-86,g=>-1,b=>0,d=>1,f=>0} aa00010002000000 aa00010002000000 aa00010002000000 aa00010002000000 - {e=>0,c=>-1,a=>-47,g=>-1,b=>0,d=>0,f=>0} d102000002000000 d102000002000000 d102000002000000 d102000002000000 - {e=>0,c=>0,a=>117,g=>-1,b=>1,d=>0,f=>0} 7501000002000000 7501000002000000 7501000002000000 7501000002000000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>77,d=>0,c=>0,h=>0,b=>1,g=>0,f=>1} 4d01020001000000 4d01020001000000 4d01020001000000 4d01020001000000 - {e=>-1,a=>-38,d=>1,c=>-1,h=>1,b=>0,g=>0,f=>0} da02030004000000 da02030004000000 da02030004000000 da02030004000000 - {e=>-1,a=>-89,d=>0,c=>0,h=>1,b=>1,g=>-1,f=>1} a701020007000000 a701020007000000 a701020007000000 a701020007000000 - {e=>0,a=>-55,d=>1,c=>-1,h=>1,b=>1,g=>-1,f=>1} c903010007000000 c903010007000000 c903010007000000 c903010007000000 - {e=>0,a=>76,d=>0,c=>-1,h=>0,b=>0,g=>-1,f=>1} 4c02000003000000 4c02000003000000 4c02000003000000 4c02000003000000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>0,a=>51,d=>1,c=>0,h=>1,b=>1,g=>-1,f=>0,i=>-1} 330101000e000000 330101000e000000 330101000e000000 330101000e000000 - {e=>0,a=>101,d=>0,c=>-1,h=>1,b=>0,g=>-1,f=>0,i=>-1} 650200000e000000 650200000e000000 650200000e000000 650200000e000000 - {e=>0,a=>-74,d=>1,c=>-1,h=>0,b=>0,g=>0,f=>0,i=>0} b602010000000000 b602010000000000 b602010000000000 b602010000000000 - {e=>0,a=>124,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 7c03010009000000 7c03010009000000 7c03010009000000 7c03010009000000 - {e=>-1,a=>24,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} 1803020001000000 1803020001000000 1803020001000000 1803020001000000 = struct mixed { char a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-115,d=>0,j=>73,c=>-1,h=>1,b=>0,g=>0,f=>0,i=>-1} 8d0202000c00000049 8d0202000c0000004900 8d0202000c00000049000000 8d0202000c00000049000000 - {e=>0,a=>112,d=>0,j=>186,c=>0,h=>1,b=>0,g=>0,f=>1,i=>0} 7000000005000000ba 7000000005000000ba00 7000000005000000ba000000 7000000005000000ba000000 - {e=>0,a=>27,d=>0,j=>247,c=>-1,h=>1,b=>1,g=>0,f=>1,i=>0} 1b03000005000000f7 1b03000005000000f700 1b03000005000000f7000000 1b03000005000000f7000000 - {e=>-1,a=>0,d=>1,j=>68,c=>-1,h=>1,b=>0,g=>0,f=>0,i=>0} 000203000400000044 00020300040000004400 000203000400000044000000 000203000400000044000000 - {e=>-1,a=>116,d=>0,j=>30,c=>-1,h=>1,b=>0,g=>-1,f=>1,i=>0} 74020200070000001e 74020200070000001e00 74020200070000001e000000 74020200070000001e000000 = struct mixed { short a; unsigned char b:1; }; - {a=>43,b=>0} 2b0000 2b000000 2b000000 2b000000 - {a=>-77,b=>0} b3ff00 b3ff0000 b3ff0000 b3ff0000 - {a=>-127,b=>0} 81ff00 81ff0000 81ff0000 81ff0000 - {a=>-70,b=>0} baff00 baff0000 baff0000 baff0000 - {a=>-21,b=>0} ebff00 ebff0000 ebff0000 ebff0000 = struct mixed { short a; unsigned char b:1; signed char c:1; }; - {c=>0,a=>1,b=>1} 010001 01000100 01000100 01000100 - {c=>-1,a=>-65,b=>0} bfff02 bfff0200 bfff0200 bfff0200 - {c=>0,a=>-122,b=>0} 86ff00 86ff0000 86ff0000 86ff0000 - {c=>-1,a=>-8,b=>1} f8ff03 f8ff0300 f8ff0300 f8ff0300 - {c=>-1,a=>50,b=>1} 320003 32000300 32000300 32000300 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>0,a=>24,b=>1,d=>1} 1800010100 180001000100 180001000100 180001000100 - {c=>0,a=>-41,b=>0,d=>1} d7ff000100 d7ff00000100 d7ff00000100 d7ff00000100 - {c=>-1,a=>-82,b=>0,d=>0} aeff020000 aeff02000000 aeff02000000 aeff02000000 - {c=>0,a=>124,b=>1,d=>0} 7c00010000 7c0001000000 7c0001000000 7c0001000000 - {c=>0,a=>-85,b=>0,d=>1} abff000100 abff00000100 abff00000100 abff00000100 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>-1,c=>0,a=>92,b=>1,d=>0} 5c00010200 5c0001000200 5c0001000200 5c0001000200 - {e=>0,c=>0,a=>104,b=>1,d=>0} 6800010000 680001000000 680001000000 680001000000 - {e=>-1,c=>-1,a=>-96,b=>1,d=>0} a0ff030200 a0ff03000200 a0ff03000200 a0ff03000200 - {e=>0,c=>0,a=>-66,b=>0,d=>1} beff000100 beff00000100 beff00000100 beff00000100 - {e=>0,c=>0,a=>126,b=>0,d=>0} 7e00000000 7e0000000000 7e0000000000 7e0000000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>0,a=>-15,b=>1,d=>1,f=>1} f1ff01010001000000 f1ff0100010001000000 f1ff01000100000001000000 f1ff01000100000001000000 - {e=>-1,c=>-1,a=>15,b=>0,d=>0,f=>1} 0f0002020001000000 0f000200020001000000 0f0002000200000001000000 0f0002000200000001000000 - {e=>-1,c=>-1,a=>75,b=>1,d=>1,f=>1} 4b0003030001000000 4b000300030001000000 4b0003000300000001000000 4b0003000300000001000000 - {e=>0,c=>0,a=>127,b=>0,d=>0,f=>1} 7f0000000001000000 7f000000000001000000 7f0000000000000001000000 7f0000000000000001000000 - {e=>-1,c=>-1,a=>0,b=>0,d=>0,f=>0} 000002020000000000 00000200020000000000 000002000200000000000000 000002000200000000000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>0,a=>-96,g=>0,b=>0,d=>1,f=>0} a0ff00030000000000 a0ff0000030000000000 a0ff00000300000000000000 a0ff00000300000000000000 - {e=>-1,c=>-1,a=>-116,g=>-1,b=>0,d=>1,f=>1} 8cff02030003000000 8cff0200030003000000 8cff02000300000003000000 8cff02000300000003000000 - {e=>0,c=>0,a=>16,g=>0,b=>1,d=>0,f=>1} 100001000001000000 10000100000001000000 100001000000000001000000 100001000000000001000000 - {e=>-1,c=>0,a=>108,g=>-1,b=>1,d=>0,f=>1} 6c0001020003000000 6c000100020003000000 6c0001000200000003000000 6c0001000200000003000000 - {e=>-1,c=>0,a=>89,g=>0,b=>1,d=>1,f=>0} 590001030000000000 59000100030000000000 590001000300000000000000 590001000300000000000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>0,a=>-94,d=>1,c=>0,h=>1,b=>0,g=>0,f=>0} a2ff00010004000000 a2ff0000010004000000 a2ff00000100000004000000 a2ff00000100000004000000 - {e=>-1,a=>-38,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>1} daff01030003000000 daff0100030003000000 daff01000300000003000000 daff01000300000003000000 - {e=>0,a=>-42,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>0} d6ff00000002000000 d6ff0000000002000000 d6ff00000000000002000000 d6ff00000000000002000000 - {e=>0,a=>-80,d=>0,c=>0,h=>1,b=>0,g=>0,f=>0} b0ff00000004000000 b0ff0000000004000000 b0ff00000000000004000000 b0ff00000000000004000000 - {e=>0,a=>-7,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1} f9ff01000005000000 f9ff0100000005000000 f9ff01000000000005000000 f9ff01000000000005000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>-1,a=>106,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} 6a0003030001000000 6a000300030001000000 6a0003000300000001000000 6a0003000300000001000000 - {e=>0,a=>10,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>-1} 0a000000000e000000 0a00000000000e000000 0a000000000000000e000000 0a000000000000000e000000 - {e=>-1,a=>93,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0,i=>0} 5d0000030000000000 5d000000030000000000 5d0000000300000000000000 5d0000000300000000000000 - {e=>-1,a=>-24,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1,i=>0} e8ff01020005000000 e8ff0100020005000000 e8ff01000200000005000000 e8ff01000200000005000000 - {e=>0,a=>-98,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>1,i=>-1} 9eff0000000f000000 9eff000000000f000000 9eff0000000000000f000000 9eff0000000000000f000000 = struct mixed { short a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-30,d=>0,j=>167,c=>0,h=>1,b=>1,g=>0,f=>0,i=>0} e2ff01020004000000a7 e2ff0100020004000000a700 e2ff01000200000004000000a7000000 e2ff01000200000004000000a7000000 - {e=>0,a=>34,d=>1,j=>13,c=>0,h=>1,b=>1,g=>0,f=>0,i=>-1} 22000101000c0000000d 2200010001000c0000000d00 22000100010000000c0000000d000000 22000100010000000c0000000d000000 - {e=>-1,a=>-125,d=>0,j=>209,c=>0,h=>0,b=>0,g=>0,f=>0,i=>0} 83ff00020000000000d1 83ff0000020000000000d100 83ff00000200000000000000d1000000 83ff00000200000000000000d1000000 - {e=>0,a=>57,d=>0,j=>197,c=>0,h=>0,b=>0,g=>-1,f=>1,i=>-1} 39000000000b000000c5 3900000000000b000000c500 39000000000000000b000000c5000000 39000000000000000b000000c5000000 - {e=>-1,a=>101,d=>1,j=>141,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 6500030300090000008d 650003000300090000008d00 6500030003000000090000008d000000 6500030003000000090000008d000000 = struct mixed { int a; unsigned char b:1; }; - {a=>59,b=>1} 3b00000001 3b0000000100 3b00000001000000 3b00000001000000 - {a=>25,b=>0} 1900000000 190000000000 1900000000000000 1900000000000000 - {a=>-69,b=>1} bbffffff01 bbffffff0100 bbffffff01000000 bbffffff01000000 - {a=>106,b=>0} 6a00000000 6a0000000000 6a00000000000000 6a00000000000000 - {a=>112,b=>1} 7000000001 700000000100 7000000001000000 7000000001000000 = struct mixed { int a; unsigned char b:1; signed char c:1; }; - {c=>-1,a=>17,b=>0} 1100000002 110000000200 1100000002000000 1100000002000000 - {c=>-1,a=>-75,b=>1} b5ffffff03 b5ffffff0300 b5ffffff03000000 b5ffffff03000000 - {c=>-1,a=>86,b=>0} 5600000002 560000000200 5600000002000000 5600000002000000 - {c=>0,a=>-126,b=>1} 82ffffff01 82ffffff0100 82ffffff01000000 82ffffff01000000 - {c=>-1,a=>49,b=>1} 3100000003 310000000300 3100000003000000 3100000003000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>-1,a=>-126,b=>0,d=>0} 82ffffff020000 82ffffff02000000 82ffffff02000000 82ffffff02000000 - {c=>0,a=>-97,b=>0,d=>1} 9fffffff000100 9fffffff00000100 9fffffff00000100 9fffffff00000100 - {c=>0,a=>25,b=>0,d=>0} 19000000000000 1900000000000000 1900000000000000 1900000000000000 - {c=>0,a=>-28,b=>1,d=>1} e4ffffff010100 e4ffffff01000100 e4ffffff01000100 e4ffffff01000100 - {c=>-1,a=>112,b=>1,d=>0} 70000000030000 7000000003000000 7000000003000000 7000000003000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>-1,a=>122,b=>0,d=>1} 7a000000020100 7a00000002000100 7a00000002000100 7a00000002000100 - {e=>-1,c=>-1,a=>-41,b=>1,d=>0} d7ffffff030200 d7ffffff03000200 d7ffffff03000200 d7ffffff03000200 - {e=>-1,c=>-1,a=>67,b=>0,d=>0} 43000000020200 4300000002000200 4300000002000200 4300000002000200 - {e=>0,c=>0,a=>-109,b=>0,d=>1} 93ffffff000100 93ffffff00000100 93ffffff00000100 93ffffff00000100 - {e=>0,c=>0,a=>-80,b=>1,d=>0} b0ffffff010000 b0ffffff01000000 b0ffffff01000000 b0ffffff01000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>0,c=>-1,a=>-35,b=>1,d=>0,f=>0} ddffffff03000000000000 ddffffff0300000000000000 ddffffff0300000000000000 ddffffff0300000000000000 - {e=>-1,c=>-1,a=>-61,b=>0,d=>0,f=>0} c3ffffff02020000000000 c3ffffff0200020000000000 c3ffffff0200020000000000 c3ffffff0200020000000000 - {e=>0,c=>0,a=>94,b=>0,d=>0,f=>1} 5e00000000000001000000 5e0000000000000001000000 5e0000000000000001000000 5e0000000000000001000000 - {e=>0,c=>-1,a=>-17,b=>0,d=>0,f=>0} efffffff02000000000000 efffffff0200000000000000 efffffff0200000000000000 efffffff0200000000000000 - {e=>-1,c=>-1,a=>-4,b=>0,d=>1,f=>0} fcffffff02030000000000 fcffffff0200030000000000 fcffffff0200030000000000 fcffffff0200030000000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>-1,c=>-1,a=>66,g=>0,b=>0,d=>0,f=>1} 4200000002020001000000 420000000200020001000000 420000000200020001000000 420000000200020001000000 - {e=>0,c=>-1,a=>88,g=>-1,b=>0,d=>1,f=>1} 5800000002010003000000 580000000200010003000000 580000000200010003000000 580000000200010003000000 - {e=>-1,c=>0,a=>22,g=>0,b=>0,d=>0,f=>0} 1600000000020000000000 160000000000020000000000 160000000000020000000000 160000000000020000000000 - {e=>0,c=>-1,a=>54,g=>-1,b=>0,d=>0,f=>1} 3600000002000003000000 360000000200000003000000 360000000200000003000000 360000000200000003000000 - {e=>-1,c=>-1,a=>98,g=>-1,b=>0,d=>0,f=>0} 6200000002020002000000 620000000200020002000000 620000000200020002000000 620000000200020002000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>-102,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>0} 9affffff01030002000000 9affffff0100030002000000 9affffff0100030002000000 9affffff0100030002000000 - {e=>-1,a=>84,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0} 5400000000030000000000 540000000000030000000000 540000000000030000000000 540000000000030000000000 - {e=>-1,a=>-63,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>0} c1ffffff03030000000000 c1ffffff0300030000000000 c1ffffff0300030000000000 c1ffffff0300030000000000 - {e=>0,a=>-36,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>1} dcffffff01000003000000 dcffffff0100000003000000 dcffffff0100000003000000 dcffffff0100000003000000 - {e=>0,a=>17,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>0} 1100000001000002000000 110000000100000002000000 110000000100000002000000 110000000100000002000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>0,a=>98,d=>1,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>-1} 620000000001000e000000 62000000000001000e000000 62000000000001000e000000 62000000000001000e000000 - {e=>0,a=>-97,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>-1} 9fffffff03000009000000 9fffffff0300000009000000 9fffffff0300000009000000 9fffffff0300000009000000 - {e=>-1,a=>15,d=>1,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>0} 0f00000002030001000000 0f0000000200030001000000 0f0000000200030001000000 0f0000000200030001000000 - {e=>-1,a=>-3,d=>0,c=>-1,h=>0,b=>1,g=>0,f=>1,i=>0} fdffffff03020001000000 fdffffff0300020001000000 fdffffff0300020001000000 fdffffff0300020001000000 - {e=>0,a=>101,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>1,i=>-1} 650000000001000b000000 65000000000001000b000000 65000000000001000b000000 65000000000001000b000000 = struct mixed { int a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-121,d=>1,j=>162,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>0} 87ffffff00030006000000a2 87ffffff0000030006000000a200 87ffffff0000030006000000a2000000 87ffffff0000030006000000a2000000 - {e=>0,a=>-14,d=>1,j=>104,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>-1} f2ffffff0201000900000068 f2ffffff02000100090000006800 f2ffffff020001000900000068000000 f2ffffff020001000900000068000000 - {e=>-1,a=>4,d=>0,j=>93,c=>-1,h=>0,b=>0,g=>0,f=>1,i=>0} 04000000020200010000005d 0400000002000200010000005d00 0400000002000200010000005d000000 0400000002000200010000005d000000 - {e=>-1,a=>17,d=>0,j=>133,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} 110000000102000000000085 1100000001000200000000008500 11000000010002000000000085000000 11000000010002000000000085000000 - {e=>0,a=>56,d=>0,j=>65,c=>-1,h=>0,b=>0,g=>-1,f=>0,i=>-1} 380000000200000a00000041 38000000020000000a0000004100 38000000020000000a00000041000000 38000000020000000a00000041000000 = struct mixed { long a; unsigned char b:1; }; - {a=>99,b=>1} 6300000001 630000000100 6300000001000000 6300000001000000 - {a=>8,b=>0} 0800000000 080000000000 0800000000000000 0800000000000000 - {a=>-122,b=>0} 86ffffff00 86ffffff0000 86ffffff00000000 86ffffff00000000 - {a=>-2,b=>1} feffffff01 feffffff0100 feffffff01000000 feffffff01000000 - {a=>102,b=>0} 6600000000 660000000000 6600000000000000 6600000000000000 = struct mixed { long a; unsigned char b:1; signed char c:1; }; - {c=>-1,a=>96,b=>0} 6000000002 600000000200 6000000002000000 6000000002000000 - {c=>-1,a=>59,b=>0} 3b00000002 3b0000000200 3b00000002000000 3b00000002000000 - {c=>-1,a=>120,b=>1} 7800000003 780000000300 7800000003000000 7800000003000000 - {c=>0,a=>-13,b=>1} f3ffffff01 f3ffffff0100 f3ffffff01000000 f3ffffff01000000 - {c=>0,a=>-28,b=>0} e4ffffff00 e4ffffff0000 e4ffffff00000000 e4ffffff00000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; }; - {c=>0,a=>109,b=>1,d=>0} 6d000000010000 6d00000001000000 6d00000001000000 6d00000001000000 - {c=>0,a=>107,b=>0,d=>0} 6b000000000000 6b00000000000000 6b00000000000000 6b00000000000000 - {c=>0,a=>28,b=>1,d=>1} 1c000000010100 1c00000001000100 1c00000001000100 1c00000001000100 - {c=>0,a=>72,b=>0,d=>1} 48000000000100 4800000000000100 4800000000000100 4800000000000100 - {c=>0,a=>-52,b=>0,d=>1} ccffffff000100 ccffffff00000100 ccffffff00000100 ccffffff00000100 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; }; - {e=>0,c=>0,a=>25,b=>0,d=>1} 19000000000100 1900000000000100 1900000000000100 1900000000000100 - {e=>-1,c=>-1,a=>59,b=>1,d=>1} 3b000000030300 3b00000003000300 3b00000003000300 3b00000003000300 - {e=>-1,c=>0,a=>124,b=>0,d=>1} 7c000000000300 7c00000000000300 7c00000000000300 7c00000000000300 - {e=>-1,c=>0,a=>74,b=>0,d=>0} 4a000000000200 4a00000000000200 4a00000000000200 4a00000000000200 - {e=>-1,c=>0,a=>-39,b=>0,d=>1} d9ffffff000300 d9ffffff00000300 d9ffffff00000300 d9ffffff00000300 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; }; - {e=>-1,c=>-1,a=>-33,b=>0,d=>0,f=>0} dfffffff02020000000000 dfffffff0200020000000000 dfffffff0200020000000000 dfffffff0200020000000000 - {e=>0,c=>0,a=>-57,b=>1,d=>0,f=>0} c7ffffff01000000000000 c7ffffff0100000000000000 c7ffffff0100000000000000 c7ffffff0100000000000000 - {e=>0,c=>-1,a=>-10,b=>0,d=>1,f=>0} f6ffffff02010000000000 f6ffffff0200010000000000 f6ffffff0200010000000000 f6ffffff0200010000000000 - {e=>0,c=>-1,a=>52,b=>0,d=>0,f=>1} 3400000002000001000000 340000000200000001000000 340000000200000001000000 340000000200000001000000 - {e=>-1,c=>0,a=>127,b=>0,d=>0,f=>0} 7f00000000020000000000 7f0000000000020000000000 7f0000000000020000000000 7f0000000000020000000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; }; - {e=>0,c=>-1,a=>-7,g=>0,b=>0,d=>0,f=>1} f9ffffff02000001000000 f9ffffff0200000001000000 f9ffffff0200000001000000 f9ffffff0200000001000000 - {e=>0,c=>0,a=>18,g=>-1,b=>1,d=>0,f=>1} 1200000001000003000000 120000000100000003000000 120000000100000003000000 120000000100000003000000 - {e=>-1,c=>-1,a=>84,g=>0,b=>0,d=>1,f=>1} 5400000002030001000000 540000000200030001000000 540000000200030001000000 540000000200030001000000 - {e=>0,c=>-1,a=>21,g=>0,b=>0,d=>1,f=>0} 1500000002010000000000 150000000200010000000000 150000000200010000000000 150000000200010000000000 - {e=>-1,c=>-1,a=>-2,g=>-1,b=>1,d=>0,f=>1} feffffff03020003000000 feffffff0300020003000000 feffffff0300020003000000 feffffff0300020003000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; }; - {e=>-1,a=>11,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1} 0b00000001020005000000 0b0000000100020005000000 0b0000000100020005000000 0b0000000100020005000000 - {e=>0,a=>-17,d=>0,c=>0,h=>1,b=>0,g=>0,f=>0} efffffff00000004000000 efffffff0000000004000000 efffffff0000000004000000 efffffff0000000004000000 - {e=>-1,a=>2,d=>1,c=>-1,h=>0,b=>1,g=>0,f=>0} 0200000003030000000000 020000000300030000000000 020000000300030000000000 020000000300030000000000 - {e=>0,a=>6,d=>1,c=>-1,h=>0,b=>1,g=>-1,f=>1} 0600000003010003000000 060000000300010003000000 060000000300010003000000 060000000300010003000000 - {e=>0,a=>103,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>0} 6700000001000002000000 670000000100000002000000 670000000100000002000000 670000000100000002000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; }; - {e=>-1,a=>-66,d=>0,c=>0,h=>0,b=>1,g=>0,f=>1,i=>-1} beffffff01020009000000 beffffff0100020009000000 beffffff0100020009000000 beffffff0100020009000000 - {e=>0,a=>-106,d=>0,c=>0,h=>1,b=>0,g=>-1,f=>0,i=>0} 96ffffff00000006000000 96ffffff0000000006000000 96ffffff0000000006000000 96ffffff0000000006000000 - {e=>-1,a=>-86,d=>0,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} aaffffff01020000000000 aaffffff0100020000000000 aaffffff0100020000000000 aaffffff0100020000000000 - {e=>-1,a=>-98,d=>0,c=>0,h=>0,b=>0,g=>0,f=>1,i=>0} 9effffff00020001000000 9effffff0000020001000000 9effffff0000020001000000 9effffff0000020001000000 - {e=>0,a=>40,d=>0,c=>0,h=>1,b=>1,g=>0,f=>1,i=>0} 2800000001000005000000 280000000100000005000000 280000000100000005000000 280000000100000005000000 = struct mixed { long a; unsigned char b:1; signed char c:1; unsigned short d:1; signed short e:1; unsigned int f:1; signed int g:1; unsigned long h:1; signed long i:1; unsigned char j; }; - {e=>-1,a=>-49,d=>1,j=>205,c=>0,h=>0,b=>1,g=>0,f=>1,i=>-1} cfffffff01030009000000cd cfffffff0100030009000000cd00 cfffffff0100030009000000cd000000 cfffffff0100030009000000cd000000 - {e=>-1,a=>126,d=>0,j=>0,c=>-1,h=>1,b=>1,g=>-1,f=>0,i=>0} 7e0000000302000600000000 7e00000003000200060000000000 7e000000030002000600000000000000 7e000000030002000600000000000000 - {e=>0,a=>-31,d=>0,j=>105,c=>-1,h=>0,b=>1,g=>0,f=>0,i=>-1} e1ffffff0300000800000069 e1ffffff03000000080000006900 e1ffffff030000000800000069000000 e1ffffff030000000800000069000000 - {e=>-1,a=>-1,d=>1,j=>21,c=>-1,h=>0,b=>1,g=>-1,f=>0,i=>0} ffffffff0303000200000015 ffffffff03000300020000001500 ffffffff030003000200000015000000 ffffffff030003000200000015000000 - {e=>-1,a=>99,d=>0,j=>132,c=>0,h=>0,b=>0,g=>0,f=>1,i=>0} 630000000002000100000084 6300000000000200010000008400 63000000000002000100000084000000 63000000000002000100000084000000 = struct force_align1 { unsigned char a:1; }; - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 = struct force_align1 { unsigned char a:1; unsigned char b:1; }; - {a=>1,b=>1} 03 03 03 03 - {a=>1,b=>1} 03 03 03 03 - {a=>0,b=>1} 02 02 02 02 - {a=>0,b=>1} 02 02 02 02 - {a=>1,b=>1} 03 03 03 03 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; }; - {a=>0,b=>0} 00 00 00 00 - {a=>0,b=>1} 02 02 02 02 - {a=>0,b=>0} 00 00 00 00 - {a=>1,b=>1} 03 03 03 03 - {a=>1,b=>0} 01 01 01 01 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; unsigned char c:1; }; - {c=>1,a=>1,b=>0} 0101 0101 0101 0101 - {c=>1,a=>1,b=>1} 0301 0301 0301 0301 - {c=>0,a=>1,b=>1} 0300 0300 0300 0300 - {c=>0,a=>0,b=>0} 0000 0000 0000 0000 - {c=>0,a=>1,b=>0} 0100 0100 0100 0100 = struct force_align1 { unsigned char a:1; unsigned char b:1; unsigned char :0; unsigned char c:1; unsigned int d; }; - {c=>0,a=>0,b=>1,d=>114} 020072000000 020072000000 0200000072000000 0200000072000000 - {c=>0,a=>1,b=>0,d=>177} 0100b1000000 0100b1000000 01000000b1000000 01000000b1000000 - {c=>1,a=>1,b=>1,d=>163} 0301a3000000 0301a3000000 03010000a3000000 03010000a3000000 - {c=>0,a=>0,b=>1,d=>180} 0200b4000000 0200b4000000 02000000b4000000 02000000b4000000 - {c=>0,a=>1,b=>0,d=>131} 010083000000 010083000000 0100000083000000 0100000083000000 = struct force_align1 { char a; unsigned char b:1; }; - {a=>105,b=>1} 6901 6901 6901 6901 - {a=>-17,b=>1} ef01 ef01 ef01 ef01 - {a=>-128,b=>1} 8001 8001 8001 8001 - {a=>35,b=>0} 2300 2300 2300 2300 - {a=>-120,b=>0} 8800 8800 8800 8800 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>87,b=>0} 5700 5700 5700 5700 - {c=>0,a=>12,b=>1} 0c01 0c01 0c01 0c01 - {c=>0,a=>107,b=>0} 6b00 6b00 6b00 6b00 - {c=>1,a=>-100,b=>0} 9c02 9c02 9c02 9c02 - {c=>1,a=>-61,b=>0} c302 c302 c302 c302 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>0,a=>-59,b=>0} c500 c500 c500 c500 - {c=>0,a=>-128,b=>0} 8000 8000 8000 8000 - {c=>0,a=>-43,b=>1} d501 d501 d501 d501 - {c=>0,a=>55,b=>0} 3700 3700 3700 3700 - {c=>0,a=>-27,b=>1} e501 e501 e501 e501 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>-22,b=>1,d=>0} ea0300 ea0300 ea0300 ea0300 - {c=>1,a=>115,b=>1,d=>0} 730300 730300 730300 730300 - {c=>1,a=>-2,b=>0,d=>0} fe0200 fe0200 fe0200 fe0200 - {c=>0,a=>-40,b=>1,d=>0} d80100 d80100 d80100 d80100 - {c=>1,a=>52,b=>0,d=>0} 340200 340200 340200 340200 = struct force_align1 { char a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>84,c=>0,a=>-2,b=>1,d=>1} fe010154000000 fe01010054000000 fe01010054000000 fe01010054000000 - {e=>26,c=>1,a=>-22,b=>0,d=>1} ea02011a000000 ea0201001a000000 ea0201001a000000 ea0201001a000000 - {e=>229,c=>0,a=>-4,b=>1,d=>0} fc0100e5000000 fc010000e5000000 fc010000e5000000 fc010000e5000000 - {e=>140,c=>0,a=>-121,b=>0,d=>1} 8700018c000000 870001008c000000 870001008c000000 870001008c000000 - {e=>135,c=>0,a=>23,b=>0,d=>0} 17000087000000 1700000087000000 1700000087000000 1700000087000000 = struct force_align1 { short a; unsigned char b:1; }; - {a=>108,b=>1} 6c0001 6c000100 6c000100 6c000100 - {a=>-114,b=>0} 8eff00 8eff0000 8eff0000 8eff0000 - {a=>64,b=>1} 400001 40000100 40000100 40000100 - {a=>19,b=>1} 130001 13000100 13000100 13000100 - {a=>-123,b=>0} 85ff00 85ff0000 85ff0000 85ff0000 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; }; - {c=>0,a=>-11,b=>1} f5ff01 f5ff0100 f5ff0100 f5ff0100 - {c=>1,a=>90,b=>0} 5a0002 5a000200 5a000200 5a000200 - {c=>0,a=>107,b=>0} 6b0000 6b000000 6b000000 6b000000 - {c=>0,a=>-75,b=>1} b5ff01 b5ff0100 b5ff0100 b5ff0100 - {c=>1,a=>-80,b=>0} b0ff02 b0ff0200 b0ff0200 b0ff0200 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>1,a=>105,b=>1} 690003 69000300 69000300 69000300 - {c=>0,a=>49,b=>1} 310001 31000100 31000100 31000100 - {c=>1,a=>37,b=>0} 250002 25000200 25000200 25000200 - {c=>0,a=>-82,b=>0} aeff00 aeff0000 aeff0000 aeff0000 - {c=>1,a=>-88,b=>1} a8ff03 a8ff0300 a8ff0300 a8ff0300 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>0,a=>-121,b=>1,d=>0} 87ff0100 87ff0100 87ff0100 87ff0100 - {c=>1,a=>80,b=>0,d=>1} 50000201 50000201 50000201 50000201 - {c=>0,a=>-79,b=>1,d=>1} b1ff0101 b1ff0101 b1ff0101 b1ff0101 - {c=>0,a=>106,b=>1,d=>0} 6a000100 6a000100 6a000100 6a000100 - {c=>1,a=>113,b=>0,d=>1} 71000201 71000201 71000201 71000201 = struct force_align1 { short a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>56,c=>0,a=>80,b=>0,d=>0} 5000000038000000 5000000038000000 5000000038000000 5000000038000000 - {e=>189,c=>1,a=>6,b=>1,d=>1} 06000301bd000000 06000301bd000000 06000301bd000000 06000301bd000000 - {e=>198,c=>1,a=>-106,b=>0,d=>0} 96ff0200c6000000 96ff0200c6000000 96ff0200c6000000 96ff0200c6000000 - {e=>167,c=>1,a=>-17,b=>1,d=>0} efff0300a7000000 efff0300a7000000 efff0300a7000000 efff0300a7000000 - {e=>89,c=>0,a=>-78,b=>1,d=>0} b2ff010059000000 b2ff010059000000 b2ff010059000000 b2ff010059000000 = struct force_align1 { int a; unsigned char b:1; }; - {a=>19,b=>1} 1300000001 130000000100 1300000001000000 1300000001000000 - {a=>79,b=>0} 4f00000000 4f0000000000 4f00000000000000 4f00000000000000 - {a=>-101,b=>1} 9bffffff01 9bffffff0100 9bffffff01000000 9bffffff01000000 - {a=>11,b=>1} 0b00000001 0b0000000100 0b00000001000000 0b00000001000000 - {a=>79,b=>0} 4f00000000 4f0000000000 4f00000000000000 4f00000000000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-25,b=>0} e7ffffff02 e7ffffff0200 e7ffffff02000000 e7ffffff02000000 - {c=>1,a=>-98,b=>0} 9effffff02 9effffff0200 9effffff02000000 9effffff02000000 - {c=>0,a=>-118,b=>0} 8affffff00 8affffff0000 8affffff00000000 8affffff00000000 - {c=>1,a=>-46,b=>1} d2ffffff03 d2ffffff0300 d2ffffff03000000 d2ffffff03000000 - {c=>0,a=>92,b=>0} 5c00000000 5c0000000000 5c00000000000000 5c00000000000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>0,a=>27,b=>1} 1b00000001 1b0000000100 1b00000001000000 1b00000001000000 - {c=>1,a=>71,b=>1} 4700000003 470000000300 4700000003000000 4700000003000000 - {c=>0,a=>53,b=>0} 3500000000 350000000000 3500000000000000 3500000000000000 - {c=>0,a=>-126,b=>1} 82ffffff01 82ffffff0100 82ffffff01000000 82ffffff01000000 - {c=>0,a=>-59,b=>1} c5ffffff01 c5ffffff0100 c5ffffff01000000 c5ffffff01000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>49,b=>1,d=>0} 310000000300 310000000300 3100000003000000 3100000003000000 - {c=>1,a=>-97,b=>0,d=>0} 9fffffff0200 9fffffff0200 9fffffff02000000 9fffffff02000000 - {c=>1,a=>114,b=>1,d=>1} 720000000301 720000000301 7200000003010000 7200000003010000 - {c=>0,a=>-38,b=>1,d=>0} daffffff0100 daffffff0100 daffffff01000000 daffffff01000000 - {c=>0,a=>-74,b=>0,d=>0} b6ffffff0000 b6ffffff0000 b6ffffff00000000 b6ffffff00000000 = struct force_align1 { int a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>174,c=>0,a=>102,b=>0,d=>1} 660000000001ae000000 660000000001ae000000 6600000000010000ae000000 6600000000010000ae000000 - {e=>77,c=>1,a=>85,b=>0,d=>0} 5500000002004d000000 5500000002004d000000 55000000020000004d000000 55000000020000004d000000 - {e=>97,c=>1,a=>-95,b=>0,d=>1} a1ffffff020161000000 a1ffffff020161000000 a1ffffff0201000061000000 a1ffffff0201000061000000 - {e=>21,c=>1,a=>-30,b=>0,d=>1} e2ffffff020115000000 e2ffffff020115000000 e2ffffff0201000015000000 e2ffffff0201000015000000 - {e=>169,c=>0,a=>-9,b=>1,d=>0} f7ffffff0100a9000000 f7ffffff0100a9000000 f7ffffff01000000a9000000 f7ffffff01000000a9000000 = struct force_align1 { long a; unsigned char b:1; }; - {a=>67,b=>0} 4300000000 430000000000 4300000000000000 4300000000000000 - {a=>122,b=>0} 7a00000000 7a0000000000 7a00000000000000 7a00000000000000 - {a=>104,b=>0} 6800000000 680000000000 6800000000000000 6800000000000000 - {a=>-99,b=>0} 9dffffff00 9dffffff0000 9dffffff00000000 9dffffff00000000 - {a=>-11,b=>1} f5ffffff01 f5ffffff0100 f5ffffff01000000 f5ffffff01000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; }; - {c=>1,a=>-95,b=>0} a1ffffff02 a1ffffff0200 a1ffffff02000000 a1ffffff02000000 - {c=>0,a=>74,b=>1} 4a00000001 4a0000000100 4a00000001000000 4a00000001000000 - {c=>0,a=>31,b=>1} 1f00000001 1f0000000100 1f00000001000000 1f00000001000000 - {c=>0,a=>-31,b=>1} e1ffffff01 e1ffffff0100 e1ffffff01000000 e1ffffff01000000 - {c=>0,a=>47,b=>1} 2f00000001 2f0000000100 2f00000001000000 2f00000001000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; }; - {c=>1,a=>-52,b=>0} ccffffff02 ccffffff0200 ccffffff02000000 ccffffff02000000 - {c=>1,a=>9,b=>0} 0900000002 090000000200 0900000002000000 0900000002000000 - {c=>1,a=>9,b=>1} 0900000003 090000000300 0900000003000000 0900000003000000 - {c=>1,a=>32,b=>1} 2000000003 200000000300 2000000003000000 2000000003000000 - {c=>1,a=>-30,b=>0} e2ffffff02 e2ffffff0200 e2ffffff02000000 e2ffffff02000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; }; - {c=>1,a=>-45,b=>1,d=>0} d3ffffff0300 d3ffffff0300 d3ffffff03000000 d3ffffff03000000 - {c=>0,a=>44,b=>0,d=>0} 2c0000000000 2c0000000000 2c00000000000000 2c00000000000000 - {c=>1,a=>88,b=>1,d=>1} 580000000301 580000000301 5800000003010000 5800000003010000 - {c=>1,a=>99,b=>0,d=>0} 630000000200 630000000200 6300000002000000 6300000002000000 - {c=>1,a=>94,b=>1,d=>0} 5e0000000300 5e0000000300 5e00000003000000 5e00000003000000 = struct force_align1 { long a; unsigned char b:1; unsigned char c:1; unsigned char :0; unsigned char d:1; unsigned int e; }; - {e=>84,c=>1,a=>-57,b=>0,d=>1} c7ffffff020154000000 c7ffffff020154000000 c7ffffff0201000054000000 c7ffffff0201000054000000 - {e=>202,c=>0,a=>-67,b=>0,d=>1} bdffffff0001ca000000 bdffffff0001ca000000 bdffffff00010000ca000000 bdffffff00010000ca000000 - {e=>108,c=>0,a=>108,b=>1,d=>0} 6c00000001006c000000 6c00000001006c000000 6c000000010000006c000000 6c000000010000006c000000 - {e=>5,c=>0,a=>51,b=>1,d=>0} 33000000010005000000 33000000010005000000 330000000100000005000000 330000000100000005000000 - {e=>228,c=>0,a=>-15,b=>0,d=>0} f1ffffff0000e4000000 f1ffffff0000e4000000 f1ffffff00000000e4000000 f1ffffff00000000e4000000 = struct force_align2 { unsigned char a:2; }; - {a=>2} 02 02 02 02 - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>3} 03 03 03 03 - {a=>3} 03 03 03 03 = struct force_align2 { unsigned char a:2; unsigned char b:2; }; - {a=>0,b=>3} 0c 0c 0c 0c - {a=>0,b=>1} 04 04 04 04 - {a=>2,b=>3} 0e 0e 0e 0e - {a=>2,b=>1} 06 06 06 06 - {a=>3,b=>3} 0f 0f 0f 0f = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; }; - {a=>0,b=>0} 00 00 00 00 - {a=>0,b=>1} 04 04 04 04 - {a=>1,b=>3} 0d 0d 0d 0d - {a=>2,b=>0} 02 02 02 02 - {a=>0,b=>2} 08 08 08 08 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; unsigned char c:2; }; - {c=>1,a=>1,b=>3} 0d01 0d01 0d01 0d01 - {c=>2,a=>2,b=>1} 0602 0602 0602 0602 - {c=>1,a=>2,b=>0} 0201 0201 0201 0201 - {c=>2,a=>3,b=>3} 0f02 0f02 0f02 0f02 - {c=>0,a=>1,b=>3} 0d00 0d00 0d00 0d00 = struct force_align2 { unsigned char a:2; unsigned char b:2; unsigned char :0; unsigned char c:2; unsigned short d; }; - {c=>0,a=>1,b=>0,d=>112} 01007000 01007000 01007000 01007000 - {c=>0,a=>3,b=>3,d=>128} 0f008000 0f008000 0f008000 0f008000 - {c=>1,a=>2,b=>0,d=>190} 0201be00 0201be00 0201be00 0201be00 - {c=>0,a=>3,b=>2,d=>63} 0b003f00 0b003f00 0b003f00 0b003f00 - {c=>2,a=>2,b=>2,d=>241} 0a02f100 0a02f100 0a02f100 0a02f100 = struct force_align2 { char a; unsigned char b:2; }; - {a=>74,b=>1} 4a01 4a01 4a01 4a01 - {a=>-7,b=>1} f901 f901 f901 f901 - {a=>102,b=>1} 6601 6601 6601 6601 - {a=>10,b=>3} 0a03 0a03 0a03 0a03 - {a=>-7,b=>2} f902 f902 f902 f902 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; }; - {c=>3,a=>7,b=>1} 070d 070d 070d 070d - {c=>3,a=>50,b=>0} 320c 320c 320c 320c - {c=>2,a=>-125,b=>0} 8308 8308 8308 8308 - {c=>2,a=>-32,b=>0} e008 e008 e008 e008 - {c=>1,a=>68,b=>0} 4404 4404 4404 4404 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>2,a=>-127,b=>0} 8108 8108 8108 8108 - {c=>1,a=>-27,b=>0} e504 e504 e504 e504 - {c=>2,a=>30,b=>1} 1e09 1e09 1e09 1e09 - {c=>0,a=>-25,b=>1} e701 e701 e701 e701 - {c=>2,a=>-15,b=>1} f109 f109 f109 f109 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>1,a=>75,b=>1,d=>2} 4b0502 4b0502 4b0502 4b0502 - {c=>1,a=>18,b=>1,d=>3} 120503 120503 120503 120503 - {c=>2,a=>-39,b=>2,d=>0} d90a00 d90a00 d90a00 d90a00 - {c=>3,a=>-91,b=>2,d=>0} a50e00 a50e00 a50e00 a50e00 - {c=>1,a=>60,b=>1,d=>0} 3c0500 3c0500 3c0500 3c0500 = struct force_align2 { char a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>11,c=>2,a=>39,b=>0,d=>2} 2708020b00 270802000b00 270802000b00 270802000b00 - {e=>219,c=>0,a=>42,b=>3,d=>1} 2a0301db00 2a030100db00 2a030100db00 2a030100db00 - {e=>154,c=>0,a=>-14,b=>1,d=>1} f201019a00 f20101009a00 f20101009a00 f20101009a00 - {e=>86,c=>1,a=>20,b=>3,d=>1} 1407015600 140701005600 140701005600 140701005600 - {e=>7,c=>0,a=>-109,b=>1,d=>1} 9301010700 930101000700 930101000700 930101000700 = struct force_align2 { short a; unsigned char b:2; }; - {a=>-77,b=>0} b3ff00 b3ff0000 b3ff0000 b3ff0000 - {a=>32,b=>1} 200001 20000100 20000100 20000100 - {a=>-116,b=>3} 8cff03 8cff0300 8cff0300 8cff0300 - {a=>127,b=>2} 7f0002 7f000200 7f000200 7f000200 - {a=>47,b=>2} 2f0002 2f000200 2f000200 2f000200 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; }; - {c=>1,a=>-56,b=>2} c8ff06 c8ff0600 c8ff0600 c8ff0600 - {c=>1,a=>96,b=>0} 600004 60000400 60000400 60000400 - {c=>1,a=>-89,b=>1} a7ff05 a7ff0500 a7ff0500 a7ff0500 - {c=>1,a=>-121,b=>1} 87ff05 87ff0500 87ff0500 87ff0500 - {c=>2,a=>80,b=>3} 50000b 50000b00 50000b00 50000b00 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>0,a=>-50,b=>1} ceff01 ceff0100 ceff0100 ceff0100 - {c=>3,a=>26,b=>0} 1a000c 1a000c00 1a000c00 1a000c00 - {c=>2,a=>-116,b=>2} 8cff0a 8cff0a00 8cff0a00 8cff0a00 - {c=>3,a=>-72,b=>2} b8ff0e b8ff0e00 b8ff0e00 b8ff0e00 - {c=>1,a=>87,b=>2} 570006 57000600 57000600 57000600 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>0,a=>-94,b=>1,d=>3} a2ff0103 a2ff0103 a2ff0103 a2ff0103 - {c=>0,a=>-117,b=>0,d=>1} 8bff0001 8bff0001 8bff0001 8bff0001 - {c=>2,a=>18,b=>2,d=>2} 12000a02 12000a02 12000a02 12000a02 - {c=>3,a=>-15,b=>0,d=>0} f1ff0c00 f1ff0c00 f1ff0c00 f1ff0c00 - {c=>0,a=>-39,b=>2,d=>3} d9ff0203 d9ff0203 d9ff0203 d9ff0203 = struct force_align2 { short a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>213,c=>2,a=>98,b=>3,d=>0} 62000b00d500 62000b00d500 62000b00d500 62000b00d500 - {e=>183,c=>3,a=>104,b=>2,d=>0} 68000e00b700 68000e00b700 68000e00b700 68000e00b700 - {e=>152,c=>3,a=>68,b=>3,d=>1} 44000f019800 44000f019800 44000f019800 44000f019800 - {e=>117,c=>0,a=>83,b=>2,d=>1} 530002017500 530002017500 530002017500 530002017500 - {e=>183,c=>0,a=>-82,b=>3,d=>3} aeff0303b700 aeff0303b700 aeff0303b700 aeff0303b700 = struct force_align2 { int a; unsigned char b:2; }; - {a=>-20,b=>3} ecffffff03 ecffffff0300 ecffffff03000000 ecffffff03000000 - {a=>123,b=>1} 7b00000001 7b0000000100 7b00000001000000 7b00000001000000 - {a=>-106,b=>0} 96ffffff00 96ffffff0000 96ffffff00000000 96ffffff00000000 - {a=>6,b=>3} 0600000003 060000000300 0600000003000000 0600000003000000 - {a=>60,b=>0} 3c00000000 3c0000000000 3c00000000000000 3c00000000000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; }; - {c=>2,a=>55,b=>0} 3700000008 370000000800 3700000008000000 3700000008000000 - {c=>2,a=>-128,b=>3} 80ffffff0b 80ffffff0b00 80ffffff0b000000 80ffffff0b000000 - {c=>3,a=>-119,b=>3} 89ffffff0f 89ffffff0f00 89ffffff0f000000 89ffffff0f000000 - {c=>2,a=>46,b=>0} 2e00000008 2e0000000800 2e00000008000000 2e00000008000000 - {c=>2,a=>-13,b=>2} f3ffffff0a f3ffffff0a00 f3ffffff0a000000 f3ffffff0a000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>3,a=>-72,b=>3} b8ffffff0f b8ffffff0f00 b8ffffff0f000000 b8ffffff0f000000 - {c=>3,a=>31,b=>0} 1f0000000c 1f0000000c00 1f0000000c000000 1f0000000c000000 - {c=>0,a=>105,b=>1} 6900000001 690000000100 6900000001000000 6900000001000000 - {c=>2,a=>74,b=>1} 4a00000009 4a0000000900 4a00000009000000 4a00000009000000 - {c=>0,a=>12,b=>1} 0c00000001 0c0000000100 0c00000001000000 0c00000001000000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>2,a=>-93,b=>0,d=>3} a3ffffff0803 a3ffffff0803 a3ffffff08030000 a3ffffff08030000 - {c=>0,a=>-88,b=>2,d=>0} a8ffffff0200 a8ffffff0200 a8ffffff02000000 a8ffffff02000000 - {c=>0,a=>89,b=>3,d=>0} 590000000300 590000000300 5900000003000000 5900000003000000 - {c=>1,a=>-61,b=>2,d=>1} c3ffffff0601 c3ffffff0601 c3ffffff06010000 c3ffffff06010000 - {c=>0,a=>-21,b=>0,d=>1} ebffffff0001 ebffffff0001 ebffffff00010000 ebffffff00010000 = struct force_align2 { int a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>23,c=>0,a=>-79,b=>1,d=>3} b1ffffff01031700 b1ffffff01031700 b1ffffff01031700 b1ffffff01031700 - {e=>106,c=>2,a=>-36,b=>0,d=>0} dcffffff08006a00 dcffffff08006a00 dcffffff08006a00 dcffffff08006a00 - {e=>139,c=>3,a=>114,b=>3,d=>3} 720000000f038b00 720000000f038b00 720000000f038b00 720000000f038b00 - {e=>151,c=>2,a=>-110,b=>0,d=>3} 92ffffff08039700 92ffffff08039700 92ffffff08039700 92ffffff08039700 - {e=>15,c=>1,a=>-72,b=>0,d=>3} b8ffffff04030f00 b8ffffff04030f00 b8ffffff04030f00 b8ffffff04030f00 = struct force_align2 { long a; unsigned char b:2; }; - {a=>-86,b=>1} aaffffff01 aaffffff0100 aaffffff01000000 aaffffff01000000 - {a=>-16,b=>0} f0ffffff00 f0ffffff0000 f0ffffff00000000 f0ffffff00000000 - {a=>-65,b=>2} bfffffff02 bfffffff0200 bfffffff02000000 bfffffff02000000 - {a=>2,b=>2} 0200000002 020000000200 0200000002000000 0200000002000000 - {a=>-85,b=>2} abffffff02 abffffff0200 abffffff02000000 abffffff02000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; }; - {c=>3,a=>-105,b=>2} 97ffffff0e 97ffffff0e00 97ffffff0e000000 97ffffff0e000000 - {c=>1,a=>14,b=>1} 0e00000005 0e0000000500 0e00000005000000 0e00000005000000 - {c=>1,a=>-120,b=>2} 88ffffff06 88ffffff0600 88ffffff06000000 88ffffff06000000 - {c=>2,a=>67,b=>3} 430000000b 430000000b00 430000000b000000 430000000b000000 - {c=>1,a=>85,b=>0} 5500000004 550000000400 5500000004000000 5500000004000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; }; - {c=>1,a=>113,b=>1} 7100000005 710000000500 7100000005000000 7100000005000000 - {c=>0,a=>-59,b=>2} c5ffffff02 c5ffffff0200 c5ffffff02000000 c5ffffff02000000 - {c=>2,a=>115,b=>1} 7300000009 730000000900 7300000009000000 7300000009000000 - {c=>1,a=>-97,b=>3} 9fffffff07 9fffffff0700 9fffffff07000000 9fffffff07000000 - {c=>2,a=>38,b=>2} 260000000a 260000000a00 260000000a000000 260000000a000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; }; - {c=>2,a=>14,b=>0,d=>0} 0e0000000800 0e0000000800 0e00000008000000 0e00000008000000 - {c=>3,a=>-56,b=>0,d=>3} c8ffffff0c03 c8ffffff0c03 c8ffffff0c030000 c8ffffff0c030000 - {c=>1,a=>84,b=>0,d=>2} 540000000402 540000000402 5400000004020000 5400000004020000 - {c=>1,a=>-54,b=>2,d=>0} caffffff0600 caffffff0600 caffffff06000000 caffffff06000000 - {c=>0,a=>61,b=>2,d=>0} 3d0000000200 3d0000000200 3d00000002000000 3d00000002000000 = struct force_align2 { long a; unsigned char b:2; unsigned char c:2; unsigned char :0; unsigned char d:2; unsigned short e; }; - {e=>109,c=>0,a=>66,b=>0,d=>1} 4200000000016d00 4200000000016d00 4200000000016d00 4200000000016d00 - {e=>167,c=>2,a=>-15,b=>2,d=>0} f1ffffff0a00a700 f1ffffff0a00a700 f1ffffff0a00a700 f1ffffff0a00a700 - {e=>39,c=>1,a=>92,b=>1,d=>3} 5c00000005032700 5c00000005032700 5c00000005032700 5c00000005032700 - {e=>135,c=>3,a=>-67,b=>0,d=>2} bdffffff0c028700 bdffffff0c028700 bdffffff0c028700 bdffffff0c028700 - {e=>180,c=>1,a=>38,b=>0,d=>0} 260000000400b400 260000000400b400 260000000400b400 260000000400b400 = struct mixed1 { unsigned int a:1; }; - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>0} 00000000 00000000 00000000 00000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; }; - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>1,b=>1} 03000000 03000000 03000000 03000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; }; - {a=>0,b=>1} 02000000 02000000 02000000 02000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>0,b=>1} 02000000 02000000 02000000 02000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 - {a=>1,b=>1} 03000000 03000000 03000000 03000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; }; - {c=>1,a=>0,b=>0} 0000000001000000 0000000001000000 0000000001000000 0000000001000000 - {c=>1,a=>1,b=>1} 0300000001000000 0300000001000000 0300000001000000 0300000001000000 - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 0100000000000000 - {c=>0,a=>0,b=>1} 0200000000000000 0200000000000000 0200000000000000 0200000000000000 - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 0100000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; }; - {c=>0,a=>1,b=>1,d=>0} 0300000000000000 0300000000000000 0300000000000000 0300000000000000 - {c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 0300000002000000 - {c=>1,a=>0,b=>0,d=>0} 0000000001000000 0000000001000000 0000000001000000 0000000001000000 - {c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 0300000002000000 - {c=>0,a=>1,b=>0,d=>0} 0100000000000000 0100000000000000 0100000000000000 0100000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; }; - {e=>0,c=>0,a=>0,b=>1,d=>0} 0200000000000000 0200000000000000 0200000000000000 0200000000000000 - {e=>-1,c=>0,a=>0,b=>1,d=>-1} 0200000006000000 0200000006000000 0200000006000000 0200000006000000 - {e=>0,c=>0,a=>1,b=>1,d=>-1} 0300000002000000 0300000002000000 0300000002000000 0300000002000000 - {e=>-1,c=>1,a=>1,b=>0,d=>-1} 0100000007000000 0100000007000000 0100000007000000 0100000007000000 - {e=>0,c=>0,a=>0,b=>0,d=>0} 0000000000000000 0000000000000000 0000000000000000 0000000000000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; }; - {e=>-1,c=>0,a=>1,b=>0,d=>-1} 0100000006000000 0100000006000000 0100000006000000 0100000006000000 - {e=>0,c=>1,a=>1,b=>0,d=>0} 0100000001000000 0100000001000000 0100000001000000 0100000001000000 - {e=>-1,c=>0,a=>1,b=>0,d=>0} 0100000004000000 0100000004000000 0100000004000000 0100000004000000 - {e=>0,c=>1,a=>0,b=>1,d=>-1} 0200000003000000 0200000003000000 0200000003000000 0200000003000000 - {e=>-1,c=>1,a=>1,b=>1,d=>-1} 0300000007000000 0300000007000000 0300000007000000 0300000007000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; }; - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 020000000700000001000000 - {e=>-1,c=>0,a=>0,b=>1,d=>0,f=>-1} 020000000400000001000000 020000000400000001000000 020000000400000001000000 020000000400000001000000 - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 020000000700000001000000 - {e=>0,c=>1,a=>0,b=>0,d=>0,f=>-1} 000000000100000001000000 000000000100000001000000 000000000100000001000000 000000000100000001000000 - {e=>-1,c=>1,a=>0,b=>1,d=>-1,f=>-1} 020000000700000001000000 020000000700000001000000 020000000700000001000000 020000000700000001000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; }; - {e=>0,c=>1,a=>1,g=>-1,b=>1,d=>-1,f=>-1} 030000000300000003000000 030000000300000003000000 030000000300000003000000 030000000300000003000000 - {e=>0,c=>0,a=>1,g=>-1,b=>1,d=>0,f=>-1} 030000000000000003000000 030000000000000003000000 030000000000000003000000 030000000000000003000000 - {e=>0,c=>0,a=>0,g=>-1,b=>0,d=>0,f=>-1} 000000000000000003000000 000000000000000003000000 000000000000000003000000 000000000000000003000000 - {e=>0,c=>1,a=>1,g=>0,b=>1,d=>0,f=>0} 030000000100000000000000 030000000100000000000000 030000000100000000000000 030000000100000000000000 - {e=>0,c=>1,a=>0,g=>-1,b=>1,d=>0,f=>0} 020000000100000002000000 020000000100000002000000 020000000100000002000000 020000000100000002000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; }; - {e=>0,a=>1,d=>-1,c=>0,h=>0,b=>1,g=>-1,f=>-1} 030000000200000003000000 030000000200000003000000 030000000200000003000000 030000000200000003000000 - {e=>0,a=>0,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1} 020000000000000007000000 020000000000000007000000 020000000000000007000000 020000000000000007000000 - {e=>0,a=>0,d=>-1,c=>1,h=>0,b=>1,g=>-1,f=>0} 020000000300000002000000 020000000300000002000000 020000000300000002000000 020000000300000002000000 - {e=>0,a=>0,d=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0} 000000000300000006000000 000000000300000006000000 000000000300000006000000 000000000300000006000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>1,g=>0,f=>-1} 030000000200000005000000 030000000200000005000000 030000000200000005000000 030000000200000005000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; }; - {e=>0,a=>1,d=>0,c=>0,h=>-1,b=>0,g=>0,f=>-1} 010000000000000005000000 010000000000000005000000 010000000000000005000000 010000000000000005000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>0,g=>0,f=>-1} 010000000200000005000000 010000000200000005000000 010000000200000005000000 010000000200000005000000 - {e=>-1,a=>0,d=>0,c=>0,h=>0,b=>1,g=>0,f=>-1} 020000000400000001000000 020000000400000001000000 020000000400000001000000 020000000400000001000000 - {e=>0,a=>1,d=>-1,c=>0,h=>-1,b=>1,g=>0,f=>-1} 030000000200000005000000 030000000200000005000000 030000000200000005000000 030000000200000005000000 - {e=>-1,a=>1,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>-1} 010000000400000003000000 010000000400000003000000 010000000400000003000000 010000000400000003000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; int i:1; }; - {e=>-1,a=>1,d=>0,c=>1,h=>-1,b=>0,g=>-1,f=>-1,i=>0} 01000000050000000700000000000000 01000000050000000700000000000000 01000000050000000700000000000000 01000000050000000700000000000000 - {e=>0,a=>1,d=>0,c=>0,h=>-1,b=>0,g=>0,f=>-1,i=>0} 01000000000000000500000000000000 01000000000000000500000000000000 01000000000000000500000000000000 01000000000000000500000000000000 - {e=>0,a=>1,d=>-1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} 01000000030000000500000000000000 01000000030000000500000000000000 01000000030000000500000000000000 01000000030000000500000000000000 - {e=>0,a=>1,d=>-1,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 03000000030000000500000000000000 03000000030000000500000000000000 03000000030000000500000000000000 03000000030000000500000000000000 - {e=>-1,a=>1,d=>-1,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 01000000060000000600000001000000 01000000060000000600000001000000 01000000060000000600000001000000 01000000060000000600000001000000 = struct mixed1 { unsigned int a:1; unsigned int b:1; unsigned int :0; unsigned int c:1; signed int d:1; signed int e:1; signed int :0; signed int f:1; int g:1; int h:1; int :0; int i:1; long j; }; - {e=>-1,a=>0,d=>-1,j=>95,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 000000000600000006000000010000005f000000 000000000600000006000000010000005f000000 000000000600000006000000010000005f000000 000000000600000006000000010000005f000000 - {e=>-1,a=>0,d=>0,j=>6,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 0200000005000000050000000000000006000000 0200000005000000050000000000000006000000 0200000005000000050000000000000006000000 0200000005000000050000000000000006000000 - {e=>0,a=>1,d=>-1,j=>2,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>-1} 0300000003000000010000000100000002000000 0300000003000000010000000100000002000000 0300000003000000010000000100000002000000 0300000003000000010000000100000002000000 - {e=>0,a=>1,d=>0,j=>29,c=>0,h=>0,b=>1,g=>0,f=>0,i=>-1} 030000000000000000000000010000001d000000 030000000000000000000000010000001d000000 030000000000000000000000010000001d000000 030000000000000000000000010000001d000000 - {e=>0,a=>0,d=>-1,j=>-28,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffff 02000000020000000700000000000000e4ffffff = struct mixed1 { char a; unsigned int b:1; }; - {a=>110,b=>1} 6e01000000 6e0001000000 6e00000001000000 6e00000001000000 - {a=>-117,b=>1} 8b01000000 8b0001000000 8b00000001000000 8b00000001000000 - {a=>-103,b=>0} 9900000000 990000000000 9900000000000000 9900000000000000 - {a=>-42,b=>0} d600000000 d60000000000 d600000000000000 d600000000000000 - {a=>71,b=>1} 4701000000 470001000000 4700000001000000 4700000001000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>53,b=>0} 3500000000 350000000000 3500000000000000 3500000000000000 - {c=>1,a=>5,b=>1} 0503000000 050003000000 0500000003000000 0500000003000000 - {c=>0,a=>-80,b=>0} b000000000 b00000000000 b000000000000000 b000000000000000 - {c=>1,a=>100,b=>0} 6402000000 640002000000 6400000002000000 6400000002000000 - {c=>1,a=>-94,b=>1} a203000000 a20003000000 a200000003000000 a200000003000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>-121,b=>1} 8701000000 870001000000 8700000001000000 8700000001000000 - {c=>0,a=>-57,b=>1} c701000000 c70001000000 c700000001000000 c700000001000000 - {c=>0,a=>37,b=>1} 2501000000 250001000000 2500000001000000 2500000001000000 - {c=>1,a=>37,b=>1} 2503000000 250003000000 2500000003000000 2500000003000000 - {c=>0,a=>-110,b=>0} 9200000000 920000000000 9200000000000000 9200000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>43,b=>0,d=>0} 2b0000000000000000 2b000000000000000000 2b0000000000000000000000 2b0000000000000000000000 - {c=>1,a=>72,b=>1,d=>0} 480300000000000000 48000300000000000000 480000000300000000000000 480000000300000000000000 - {c=>1,a=>70,b=>0,d=>0} 460200000000000000 46000200000000000000 460000000200000000000000 460000000200000000000000 - {c=>1,a=>50,b=>1,d=>0} 320300000000000000 32000300000000000000 320000000300000000000000 320000000300000000000000 - {c=>0,a=>104,b=>0,d=>0} 680000000000000000 68000000000000000000 680000000000000000000000 680000000000000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>0,c=>0,a=>48,b=>1,d=>1} 300100000001000000 30000100000001000000 300000000100000001000000 300000000100000001000000 - {e=>-1,c=>0,a=>-115,b=>1,d=>0} 8d0100000002000000 8d000100000002000000 8d0000000100000002000000 8d0000000100000002000000 - {e=>-1,c=>1,a=>-71,b=>0,d=>1} b90200000003000000 b9000200000003000000 b90000000200000003000000 b90000000200000003000000 - {e=>-1,c=>0,a=>38,b=>0,d=>0} 260000000002000000 26000000000002000000 260000000000000002000000 260000000000000002000000 - {e=>-1,c=>1,a=>110,b=>0,d=>0} 6e0200000002000000 6e000200000002000000 6e0000000200000002000000 6e0000000200000002000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>0,c=>0,a=>-12,b=>0,d=>1,f=>0} f40000000001000000 f4000000000001000000 f40000000000000001000000 f40000000000000001000000 - {e=>0,c=>0,a=>5,b=>0,d=>1,f=>0} 050000000001000000 05000000000001000000 050000000000000001000000 050000000000000001000000 - {e=>-1,c=>1,a=>47,b=>0,d=>0,f=>0} 2f0200000002000000 2f000200000002000000 2f0000000200000002000000 2f0000000200000002000000 - {e=>-1,c=>1,a=>87,b=>0,d=>0,f=>-1} 570200000006000000 57000200000006000000 570000000200000006000000 570000000200000006000000 - {e=>0,c=>0,a=>-26,b=>1,d=>1,f=>0} e60100000001000000 e6000100000001000000 e60000000100000001000000 e60000000100000001000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-46,b=>1,d=>1,f=>0} d20100000001000000 d2000100000001000000 d20000000100000001000000 d20000000100000001000000 - {e=>-1,c=>0,a=>-8,b=>1,d=>1,f=>0} f80100000003000000 f8000100000003000000 f80000000100000003000000 f80000000100000003000000 - {e=>-1,c=>1,a=>-104,b=>1,d=>0,f=>-1} 980300000006000000 98000300000006000000 980000000300000006000000 980000000300000006000000 - {e=>0,c=>1,a=>111,b=>1,d=>1,f=>0} 6f0300000001000000 6f000300000001000000 6f0000000300000001000000 6f0000000300000001000000 - {e=>-1,c=>1,a=>66,b=>1,d=>0,f=>-1} 420300000006000000 42000300000006000000 420000000300000006000000 420000000300000006000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>0,a=>33,g=>0,b=>1,d=>1,f=>-1} 21010000000500000000000000 2100010000000500000000000000 21000000010000000500000000000000 21000000010000000500000000000000 - {e=>0,c=>1,a=>-26,g=>0,b=>1,d=>1,f=>-1} e6030000000500000000000000 e600030000000500000000000000 e6000000030000000500000000000000 e6000000030000000500000000000000 - {e=>-1,c=>1,a=>-58,g=>0,b=>0,d=>1,f=>-1} c6020000000700000000000000 c600020000000700000000000000 c6000000020000000700000000000000 c6000000020000000700000000000000 - {e=>0,c=>1,a=>-27,g=>-1,b=>0,d=>0,f=>-1} e5020000000400000001000000 e500020000000400000001000000 e5000000020000000400000001000000 e5000000020000000400000001000000 - {e=>-1,c=>1,a=>-33,g=>0,b=>0,d=>1,f=>0} df020000000300000000000000 df00020000000300000000000000 df000000020000000300000000000000 df000000020000000300000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>40,d=>0,c=>1,h=>0,b=>1,g=>0,f=>0} 28030000000200000000000000 2800030000000200000000000000 28000000030000000200000000000000 28000000030000000200000000000000 - {e=>-1,a=>123,d=>0,c=>0,h=>0,b=>1,g=>-1,f=>-1} 7b010000000600000001000000 7b00010000000600000001000000 7b000000010000000600000001000000 7b000000010000000600000001000000 - {e=>-1,a=>102,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1} 66020000000600000001000000 6600020000000600000001000000 66000000020000000600000001000000 66000000020000000600000001000000 - {e=>0,a=>-10,d=>1,c=>1,h=>-1,b=>1,g=>0,f=>-1} f6030000000500000002000000 f600030000000500000002000000 f6000000030000000500000002000000 f6000000030000000500000002000000 - {e=>0,a=>49,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1} 31000000000500000001000000 3100000000000500000001000000 31000000000000000500000001000000 31000000000000000500000001000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>-11,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>-1} f5030000000300000007000000 f500030000000300000007000000 f5000000030000000300000007000000 f5000000030000000300000007000000 - {e=>0,a=>-102,d=>0,c=>0,h=>0,b=>0,g=>-1,f=>-1,i=>0} 9a000000000400000001000000 9a00000000000400000001000000 9a000000000000000400000001000000 9a000000000000000400000001000000 - {e=>0,a=>-33,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>0,i=>0} df000000000100000002000000 df00000000000100000002000000 df000000000000000100000002000000 df000000000000000100000002000000 - {e=>-1,a=>-96,d=>1,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} a0010000000300000000000000 a000010000000300000000000000 a0000000010000000300000000000000 a0000000010000000300000000000000 - {e=>-1,a=>125,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>-1} 7d020000000700000006000000 7d00020000000700000006000000 7d000000020000000700000006000000 7d000000020000000700000006000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>-1,a=>-41,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} d7010000000600000007000000 d700010000000600000007000000 d7000000010000000600000007000000 d7000000010000000600000007000000 - {e=>-1,a=>51,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 33010000000700000003000000 3300010000000700000003000000 33000000010000000700000003000000 33000000010000000700000003000000 - {e=>0,a=>43,d=>0,c=>0,h=>0,b=>1,g=>0,f=>-1,i=>-1} 2b010000000400000004000000 2b00010000000400000004000000 2b000000010000000400000004000000 2b000000010000000400000004000000 - {e=>0,a=>33,d=>0,c=>1,h=>-1,b=>0,g=>0,f=>0,i=>-1} 21020000000000000006000000 2100020000000000000006000000 21000000020000000000000006000000 21000000020000000000000006000000 - {e=>-1,a=>-111,d=>1,c=>1,h=>0,b=>0,g=>0,f=>-1,i=>0} 91020000000700000000000000 9100020000000700000000000000 91000000020000000700000000000000 91000000020000000700000000000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>-1,a=>-32,d=>0,j=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>0} e002000000020000000300000001000000 e00002000000020000000300000001000000 e000000002000000020000000300000001000000 e000000002000000020000000300000001000000 - {e=>0,a=>-11,d=>0,j=>0,c=>1,h=>0,b=>1,g=>-1,f=>-1,i=>-1} f503000000040000000500000000000000 f50003000000040000000500000000000000 f500000003000000040000000500000000000000 f500000003000000040000000500000000000000 - {e=>0,a=>-110,d=>1,j=>-1,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>-1} 9203000000010000000700000001000000 920003000000010000000700000001000000 9200000003000000010000000700000001000000 9200000003000000010000000700000001000000 - {e=>-1,a=>-1,d=>0,j=>-1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>-1} ff02000000020000000700000001000000 ff0002000000020000000700000001000000 ff00000002000000020000000700000001000000 ff00000002000000020000000700000001000000 - {e=>0,a=>-47,d=>0,j=>-1,c=>1,h=>0,b=>1,g=>0,f=>0,i=>-1} d103000000000000000400000001000000 d10003000000000000000400000001000000 d100000003000000000000000400000001000000 d100000003000000000000000400000001000000 = struct mixed1 { char a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>0,a=>-103,d=>1,j=>0,c=>1,k=>81,h=>0,b=>1,g=>0,f=>0,i=>0} 990300000001000000000000000000000051000000 99000300000001000000000000000000000051000000 990000000300000001000000000000000000000051000000 990000000300000001000000000000000000000051000000 - {e=>0,a=>5,d=>0,j=>0,c=>1,k=>-43,h=>0,b=>0,g=>0,f=>-1,i=>-1} 0502000000040000000400000000000000d5ffffff 050002000000040000000400000000000000d5ffffff 0500000002000000040000000400000000000000d5ffffff 0500000002000000040000000400000000000000d5ffffff - {e=>0,a=>48,d=>0,j=>0,c=>1,k=>-96,h=>0,b=>0,g=>0,f=>-1,i=>0} 3002000000040000000000000000000000a0ffffff 300002000000040000000000000000000000a0ffffff 3000000002000000040000000000000000000000a0ffffff 3000000002000000040000000000000000000000a0ffffff - {e=>-1,a=>113,d=>0,j=>-1,c=>1,k=>-112,h=>-1,b=>1,g=>0,f=>-1,i=>0} 710300000006000000020000000100000090ffffff 71000300000006000000020000000100000090ffffff 710000000300000006000000020000000100000090ffffff 710000000300000006000000020000000100000090ffffff - {e=>0,a=>124,d=>1,j=>-1,c=>1,k=>62,h=>0,b=>0,g=>0,f=>-1,i=>0} 7c020000000500000000000000010000003e000000 7c00020000000500000000000000010000003e000000 7c000000020000000500000000000000010000003e000000 7c000000020000000500000000000000010000003e000000 = struct mixed1 { short a; unsigned int b:1; }; - {a=>110,b=>1} 6e0001000000 6e0001000000 6e00000001000000 6e00000001000000 - {a=>-33,b=>1} dfff01000000 dfff01000000 dfff000001000000 dfff000001000000 - {a=>-68,b=>0} bcff00000000 bcff00000000 bcff000000000000 bcff000000000000 - {a=>-44,b=>1} d4ff01000000 d4ff01000000 d4ff000001000000 d4ff000001000000 - {a=>94,b=>0} 5e0000000000 5e0000000000 5e00000000000000 5e00000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; }; - {c=>1,a=>-20,b=>1} ecff03000000 ecff03000000 ecff000003000000 ecff000003000000 - {c=>1,a=>-53,b=>1} cbff03000000 cbff03000000 cbff000003000000 cbff000003000000 - {c=>1,a=>123,b=>0} 7b0002000000 7b0002000000 7b00000002000000 7b00000002000000 - {c=>1,a=>-52,b=>0} ccff02000000 ccff02000000 ccff000002000000 ccff000002000000 - {c=>1,a=>93,b=>0} 5d0002000000 5d0002000000 5d00000002000000 5d00000002000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>1,a=>110,b=>0} 6e0002000000 6e0002000000 6e00000002000000 6e00000002000000 - {c=>0,a=>51,b=>0} 330000000000 330000000000 3300000000000000 3300000000000000 - {c=>0,a=>118,b=>0} 760000000000 760000000000 7600000000000000 7600000000000000 - {c=>1,a=>27,b=>1} 1b0003000000 1b0003000000 1b00000003000000 1b00000003000000 - {c=>0,a=>-97,b=>1} 9fff01000000 9fff01000000 9fff000001000000 9fff000001000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>1,a=>102,b=>1,d=>0} 66000300000000000000 66000300000000000000 660000000300000000000000 660000000300000000000000 - {c=>0,a=>-89,b=>1,d=>0} a7ff0100000000000000 a7ff0100000000000000 a7ff00000100000000000000 a7ff00000100000000000000 - {c=>1,a=>37,b=>0,d=>0} 25000200000000000000 25000200000000000000 250000000200000000000000 250000000200000000000000 - {c=>1,a=>111,b=>1,d=>0} 6f000300000000000000 6f000300000000000000 6f0000000300000000000000 6f0000000300000000000000 - {c=>0,a=>33,b=>0,d=>0} 21000000000000000000 21000000000000000000 210000000000000000000000 210000000000000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>0,c=>1,a=>-77,b=>0,d=>0} b3ff0200000000000000 b3ff0200000000000000 b3ff00000200000000000000 b3ff00000200000000000000 - {e=>-1,c=>0,a=>73,b=>1,d=>1} 49000100000003000000 49000100000003000000 490000000100000003000000 490000000100000003000000 - {e=>-1,c=>0,a=>50,b=>1,d=>0} 32000100000002000000 32000100000002000000 320000000100000002000000 320000000100000002000000 - {e=>0,c=>1,a=>-125,b=>0,d=>1} 83ff0200000001000000 83ff0200000001000000 83ff00000200000001000000 83ff00000200000001000000 - {e=>0,c=>0,a=>55,b=>1,d=>0} 37000100000000000000 37000100000000000000 370000000100000000000000 370000000100000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>0,c=>1,a=>-25,b=>1,d=>1,f=>-1} e7ff0300000005000000 e7ff0300000005000000 e7ff00000300000005000000 e7ff00000300000005000000 - {e=>0,c=>0,a=>110,b=>0,d=>0,f=>-1} 6e000000000004000000 6e000000000004000000 6e0000000000000004000000 6e0000000000000004000000 - {e=>0,c=>0,a=>-28,b=>1,d=>0,f=>0} e4ff0100000000000000 e4ff0100000000000000 e4ff00000100000000000000 e4ff00000100000000000000 - {e=>0,c=>1,a=>38,b=>1,d=>1,f=>0} 26000300000001000000 26000300000001000000 260000000300000001000000 260000000300000001000000 - {e=>-1,c=>0,a=>38,b=>0,d=>1,f=>-1} 26000000000007000000 26000000000007000000 260000000000000007000000 260000000000000007000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-35,b=>1,d=>1,f=>-1} ddff0100000005000000 ddff0100000005000000 ddff00000100000005000000 ddff00000100000005000000 - {e=>0,c=>0,a=>-82,b=>0,d=>0,f=>0} aeff0000000000000000 aeff0000000000000000 aeff00000000000000000000 aeff00000000000000000000 - {e=>0,c=>0,a=>-124,b=>1,d=>0,f=>0} 84ff0100000000000000 84ff0100000000000000 84ff00000100000000000000 84ff00000100000000000000 - {e=>0,c=>0,a=>-50,b=>0,d=>1,f=>0} ceff0000000001000000 ceff0000000001000000 ceff00000000000001000000 ceff00000000000001000000 - {e=>-1,c=>1,a=>-121,b=>0,d=>0,f=>-1} 87ff0200000006000000 87ff0200000006000000 87ff00000200000006000000 87ff00000200000006000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>-1,c=>1,a=>39,g=>0,b=>1,d=>1,f=>0} 2700030000000300000000000000 2700030000000300000000000000 27000000030000000300000000000000 27000000030000000300000000000000 - {e=>-1,c=>0,a=>-21,g=>0,b=>0,d=>0,f=>0} ebff000000000200000000000000 ebff000000000200000000000000 ebff0000000000000200000000000000 ebff0000000000000200000000000000 - {e=>-1,c=>1,a=>-9,g=>-1,b=>1,d=>0,f=>0} f7ff030000000200000001000000 f7ff030000000200000001000000 f7ff0000030000000200000001000000 f7ff0000030000000200000001000000 - {e=>0,c=>0,a=>39,g=>-1,b=>0,d=>1,f=>0} 2700000000000100000001000000 2700000000000100000001000000 27000000000000000100000001000000 27000000000000000100000001000000 - {e=>0,c=>0,a=>-23,g=>0,b=>1,d=>1,f=>0} e9ff010000000100000000000000 e9ff010000000100000000000000 e9ff0000010000000100000000000000 e9ff0000010000000100000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>-109,d=>1,c=>1,h=>0,b=>0,g=>0,f=>-1} 93ff020000000700000000000000 93ff020000000700000000000000 93ff0000020000000700000000000000 93ff0000020000000700000000000000 - {e=>0,a=>113,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>-1} 7100000000000500000002000000 7100000000000500000002000000 71000000000000000500000002000000 71000000000000000500000002000000 - {e=>-1,a=>115,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>0} 7300010000000300000003000000 7300010000000300000003000000 73000000010000000300000003000000 73000000010000000300000003000000 - {e=>0,a=>86,d=>1,c=>0,h=>0,b=>0,g=>0,f=>0} 5600000000000100000000000000 5600000000000100000000000000 56000000000000000100000000000000 56000000000000000100000000000000 - {e=>-1,a=>-14,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>0} f2ff030000000300000003000000 f2ff030000000300000003000000 f2ff0000030000000300000003000000 f2ff0000030000000300000003000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>97,d=>1,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>0} 6100000000000300000003000000 6100000000000300000003000000 61000000000000000300000003000000 61000000000000000300000003000000 - {e=>0,a=>-1,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>0} ffff010000000000000002000000 ffff010000000000000002000000 ffff0000010000000000000002000000 ffff0000010000000000000002000000 - {e=>-1,a=>62,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>0,i=>-1} 3e00000000000300000005000000 3e00000000000300000005000000 3e000000000000000300000005000000 3e000000000000000300000005000000 - {e=>0,a=>-110,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>-1} 92ff010000000000000006000000 92ff010000000000000006000000 92ff0000010000000000000006000000 92ff0000010000000000000006000000 - {e=>0,a=>-40,d=>1,c=>0,h=>-1,b=>0,g=>0,f=>-1,i=>0} d8ff000000000500000002000000 d8ff000000000500000002000000 d8ff0000000000000500000002000000 d8ff0000000000000500000002000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>-1,a=>-48,d=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>0} d0ff020000000200000000000000 d0ff020000000200000000000000 d0ff0000020000000200000000000000 d0ff0000020000000200000000000000 - {e=>0,a=>27,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 1b00000000000500000005000000 1b00000000000500000005000000 1b000000000000000500000005000000 1b000000000000000500000005000000 - {e=>0,a=>47,d=>1,c=>0,h=>-1,b=>1,g=>0,f=>0,i=>-1} 2f00010000000100000006000000 2f00010000000100000006000000 2f000000010000000100000006000000 2f000000010000000100000006000000 - {e=>-1,a=>24,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 1800030000000600000007000000 1800030000000600000007000000 18000000030000000600000007000000 18000000030000000600000007000000 - {e=>0,a=>-105,d=>1,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>0} 97ff020000000100000003000000 97ff020000000100000003000000 97ff0000020000000100000003000000 97ff0000020000000100000003000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>-1,a=>-24,d=>0,j=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>0} e8ff02000000020000000000000000000000 e8ff02000000020000000000000000000000 e8ff000002000000020000000000000000000000 e8ff000002000000020000000000000000000000 - {e=>-1,a=>-22,d=>0,j=>0,c=>1,h=>0,b=>0,g=>-1,f=>0,i=>0} eaff02000000020000000100000000000000 eaff02000000020000000100000000000000 eaff000002000000020000000100000000000000 eaff000002000000020000000100000000000000 - {e=>0,a=>-38,d=>0,j=>-1,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} daff01000000040000000300000001000000 daff01000000040000000300000001000000 daff000001000000040000000300000001000000 daff000001000000040000000300000001000000 - {e=>0,a=>72,d=>1,j=>0,c=>1,h=>-1,b=>1,g=>0,f=>-1,i=>0} 480003000000050000000200000000000000 480003000000050000000200000000000000 4800000003000000050000000200000000000000 4800000003000000050000000200000000000000 - {e=>0,a=>-62,d=>0,j=>0,c=>0,h=>0,b=>1,g=>-1,f=>-1,i=>0} c2ff01000000040000000100000000000000 c2ff01000000040000000100000000000000 c2ff000001000000040000000100000000000000 c2ff000001000000040000000100000000000000 = struct mixed1 { short a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>-1,a=>29,d=>0,j=>-1,c=>1,k=>-52,h=>-1,b=>1,g=>0,f=>0,i=>0} 1d0003000000020000000200000001000000ccffffff 1d0003000000020000000200000001000000ccffffff 1d00000003000000020000000200000001000000ccffffff 1d00000003000000020000000200000001000000ccffffff - {e=>0,a=>71,d=>0,j=>-1,c=>0,k=>11,h=>0,b=>0,g=>0,f=>0,i=>-1} 4700000000000000000004000000010000000b000000 4700000000000000000004000000010000000b000000 47000000000000000000000004000000010000000b000000 47000000000000000000000004000000010000000b000000 - {e=>-1,a=>7,d=>0,j=>0,c=>0,k=>101,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 07000000000002000000070000000000000065000000 07000000000002000000070000000000000065000000 070000000000000002000000070000000000000065000000 070000000000000002000000070000000000000065000000 - {e=>-1,a=>-19,d=>1,j=>0,c=>0,k=>8,h=>-1,b=>1,g=>0,f=>0,i=>-1} edff0100000003000000060000000000000008000000 edff0100000003000000060000000000000008000000 edff00000100000003000000060000000000000008000000 edff00000100000003000000060000000000000008000000 - {e=>-1,a=>71,d=>1,j=>0,c=>0,k=>-64,h=>0,b=>1,g=>-1,f=>-1,i=>-1} 470001000000070000000500000000000000c0ffffff 470001000000070000000500000000000000c0ffffff 4700000001000000070000000500000000000000c0ffffff 4700000001000000070000000500000000000000c0ffffff = struct mixed1 { int a; unsigned int b:1; }; - {a=>-120,b=>0} 88ffffff00000000 88ffffff00000000 88ffffff00000000 88ffffff00000000 - {a=>-74,b=>1} b6ffffff01000000 b6ffffff01000000 b6ffffff01000000 b6ffffff01000000 - {a=>-4,b=>1} fcffffff01000000 fcffffff01000000 fcffffff01000000 fcffffff01000000 - {a=>-89,b=>0} a7ffffff00000000 a7ffffff00000000 a7ffffff00000000 a7ffffff00000000 - {a=>95,b=>0} 5f00000000000000 5f00000000000000 5f00000000000000 5f00000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>124,b=>1} 7c00000001000000 7c00000001000000 7c00000001000000 7c00000001000000 - {c=>0,a=>97,b=>1} 6100000001000000 6100000001000000 6100000001000000 6100000001000000 - {c=>0,a=>-1,b=>0} ffffffff00000000 ffffffff00000000 ffffffff00000000 ffffffff00000000 - {c=>0,a=>-59,b=>0} c5ffffff00000000 c5ffffff00000000 c5ffffff00000000 c5ffffff00000000 - {c=>1,a=>23,b=>1} 1700000003000000 1700000003000000 1700000003000000 1700000003000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>1,b=>0} 0100000000000000 0100000000000000 0100000000000000 0100000000000000 - {c=>0,a=>-43,b=>1} d5ffffff01000000 d5ffffff01000000 d5ffffff01000000 d5ffffff01000000 - {c=>0,a=>-32,b=>1} e0ffffff01000000 e0ffffff01000000 e0ffffff01000000 e0ffffff01000000 - {c=>0,a=>-65,b=>1} bfffffff01000000 bfffffff01000000 bfffffff01000000 bfffffff01000000 - {c=>0,a=>-14,b=>0} f2ffffff00000000 f2ffffff00000000 f2ffffff00000000 f2ffffff00000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>89,b=>0,d=>0} 590000000000000000000000 590000000000000000000000 590000000000000000000000 590000000000000000000000 - {c=>0,a=>-30,b=>0,d=>1} e2ffffff0000000001000000 e2ffffff0000000001000000 e2ffffff0000000001000000 e2ffffff0000000001000000 - {c=>1,a=>-6,b=>0,d=>0} faffffff0200000000000000 faffffff0200000000000000 faffffff0200000000000000 faffffff0200000000000000 - {c=>1,a=>-16,b=>1,d=>0} f0ffffff0300000000000000 f0ffffff0300000000000000 f0ffffff0300000000000000 f0ffffff0300000000000000 - {c=>0,a=>94,b=>1,d=>1} 5e0000000100000001000000 5e0000000100000001000000 5e0000000100000001000000 5e0000000100000001000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>-1,c=>0,a=>-26,b=>1,d=>1} e6ffffff0100000003000000 e6ffffff0100000003000000 e6ffffff0100000003000000 e6ffffff0100000003000000 - {e=>0,c=>0,a=>-38,b=>1,d=>0} daffffff0100000000000000 daffffff0100000000000000 daffffff0100000000000000 daffffff0100000000000000 - {e=>-1,c=>1,a=>82,b=>1,d=>1} 520000000300000003000000 520000000300000003000000 520000000300000003000000 520000000300000003000000 - {e=>-1,c=>1,a=>-3,b=>1,d=>0} fdffffff0300000002000000 fdffffff0300000002000000 fdffffff0300000002000000 fdffffff0300000002000000 - {e=>-1,c=>1,a=>104,b=>0,d=>1} 680000000200000003000000 680000000200000003000000 680000000200000003000000 680000000200000003000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>-1,c=>0,a=>-49,b=>0,d=>1,f=>0} cfffffff0000000003000000 cfffffff0000000003000000 cfffffff0000000003000000 cfffffff0000000003000000 - {e=>-1,c=>1,a=>-85,b=>0,d=>1,f=>-1} abffffff0200000007000000 abffffff0200000007000000 abffffff0200000007000000 abffffff0200000007000000 - {e=>0,c=>1,a=>-109,b=>0,d=>0,f=>0} 93ffffff0200000000000000 93ffffff0200000000000000 93ffffff0200000000000000 93ffffff0200000000000000 - {e=>0,c=>0,a=>109,b=>0,d=>0,f=>0} 6d0000000000000000000000 6d0000000000000000000000 6d0000000000000000000000 6d0000000000000000000000 - {e=>0,c=>1,a=>-3,b=>0,d=>0,f=>0} fdffffff0200000000000000 fdffffff0200000000000000 fdffffff0200000000000000 fdffffff0200000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>0,a=>-89,b=>0,d=>0,f=>-1} a7ffffff0000000004000000 a7ffffff0000000004000000 a7ffffff0000000004000000 a7ffffff0000000004000000 - {e=>-1,c=>0,a=>-6,b=>1,d=>1,f=>0} faffffff0100000003000000 faffffff0100000003000000 faffffff0100000003000000 faffffff0100000003000000 - {e=>0,c=>0,a=>-60,b=>0,d=>1,f=>0} c4ffffff0000000001000000 c4ffffff0000000001000000 c4ffffff0000000001000000 c4ffffff0000000001000000 - {e=>-1,c=>1,a=>-65,b=>0,d=>1,f=>0} bfffffff0200000003000000 bfffffff0200000003000000 bfffffff0200000003000000 bfffffff0200000003000000 - {e=>0,c=>0,a=>-92,b=>0,d=>0,f=>-1} a4ffffff0000000004000000 a4ffffff0000000004000000 a4ffffff0000000004000000 a4ffffff0000000004000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>1,a=>23,g=>0,b=>0,d=>0,f=>0} 17000000020000000000000000000000 17000000020000000000000000000000 17000000020000000000000000000000 17000000020000000000000000000000 - {e=>0,c=>0,a=>-110,g=>-1,b=>1,d=>1,f=>0} 92ffffff010000000100000001000000 92ffffff010000000100000001000000 92ffffff010000000100000001000000 92ffffff010000000100000001000000 - {e=>0,c=>1,a=>6,g=>0,b=>0,d=>1,f=>-1} 06000000020000000500000000000000 06000000020000000500000000000000 06000000020000000500000000000000 06000000020000000500000000000000 - {e=>-1,c=>0,a=>-15,g=>-1,b=>0,d=>1,f=>0} f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 f1ffffff000000000300000001000000 - {e=>-1,c=>1,a=>-105,g=>-1,b=>1,d=>1,f=>-1} 97ffffff030000000700000001000000 97ffffff030000000700000001000000 97ffffff030000000700000001000000 97ffffff030000000700000001000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>-67,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1} bdffffff030000000600000003000000 bdffffff030000000600000003000000 bdffffff030000000600000003000000 bdffffff030000000600000003000000 - {e=>0,a=>16,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1} 10000000020000000400000001000000 10000000020000000400000001000000 10000000020000000400000001000000 10000000020000000400000001000000 - {e=>0,a=>75,d=>0,c=>0,h=>0,b=>0,g=>0,f=>-1} 4b000000000000000400000000000000 4b000000000000000400000000000000 4b000000000000000400000000000000 4b000000000000000400000000000000 - {e=>-1,a=>-78,d=>0,c=>1,h=>0,b=>1,g=>-1,f=>0} b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 b2ffffff030000000200000001000000 - {e=>0,a=>50,d=>1,c=>1,h=>0,b=>1,g=>0,f=>0} 32000000030000000100000000000000 32000000030000000100000000000000 32000000030000000100000000000000 32000000030000000100000000000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>0,a=>45,d=>0,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 2d000000020000000400000005000000 2d000000020000000400000005000000 2d000000020000000400000005000000 2d000000020000000400000005000000 - {e=>0,a=>-65,d=>1,c=>1,h=>-1,b=>0,g=>-1,f=>-1,i=>0} bfffffff020000000500000003000000 bfffffff020000000500000003000000 bfffffff020000000500000003000000 bfffffff020000000500000003000000 - {e=>-1,a=>5,d=>0,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>0} 05000000030000000600000000000000 05000000030000000600000000000000 05000000030000000600000000000000 05000000030000000600000000000000 - {e=>-1,a=>53,d=>1,c=>0,h=>-1,b=>1,g=>0,f=>-1,i=>-1} 35000000010000000700000006000000 35000000010000000700000006000000 35000000010000000700000006000000 35000000010000000700000006000000 - {e=>-1,a=>-98,d=>0,c=>1,h=>-1,b=>1,g=>0,f=>0,i=>-1} 9effffff030000000200000006000000 9effffff030000000200000006000000 9effffff030000000200000006000000 9effffff030000000200000006000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>0,a=>79,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} 4f000000010000000000000003000000 4f000000010000000000000003000000 4f000000010000000000000003000000 4f000000010000000000000003000000 - {e=>0,a=>-115,d=>1,c=>0,h=>0,b=>1,g=>0,f=>-1,i=>-1} 8dffffff010000000500000004000000 8dffffff010000000500000004000000 8dffffff010000000500000004000000 8dffffff010000000500000004000000 - {e=>-1,a=>-69,d=>0,c=>1,h=>-1,b=>1,g=>-1,f=>0,i=>0} bbffffff030000000200000003000000 bbffffff030000000200000003000000 bbffffff030000000200000003000000 bbffffff030000000200000003000000 - {e=>-1,a=>0,d=>0,c=>1,h=>0,b=>1,g=>-1,f=>0,i=>-1} 00000000030000000200000005000000 00000000030000000200000005000000 00000000030000000200000005000000 00000000030000000200000005000000 - {e=>-1,a=>34,d=>1,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>-1} 22000000030000000700000004000000 22000000030000000700000004000000 22000000030000000700000004000000 22000000030000000700000004000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>0,a=>67,d=>0,j=>0,c=>1,h=>0,b=>1,g=>0,f=>-1,i=>0} 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 4300000003000000040000000000000000000000 - {e=>0,a=>23,d=>0,j=>-1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 1700000002000000040000000500000001000000 - {e=>0,a=>89,d=>0,j=>0,c=>0,h=>-1,b=>0,g=>-1,f=>-1,i=>0} 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 5900000000000000040000000300000000000000 - {e=>0,a=>-97,d=>0,j=>0,c=>1,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 9fffffff02000000000000000700000000000000 - {e=>0,a=>-76,d=>1,j=>-1,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 b4ffffff01000000010000000300000001000000 = struct mixed1 { int a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>0,a=>-74,d=>1,j=>0,c=>1,k=>96,h=>0,b=>1,g=>-1,f=>0,i=>0} b6ffffff0300000001000000010000000000000060000000 b6ffffff0300000001000000010000000000000060000000 b6ffffff0300000001000000010000000000000060000000 b6ffffff0300000001000000010000000000000060000000 - {e=>0,a=>89,d=>1,j=>0,c=>0,k=>-51,h=>0,b=>0,g=>-1,f=>0,i=>-1} 5900000000000000010000000500000000000000cdffffff 5900000000000000010000000500000000000000cdffffff 5900000000000000010000000500000000000000cdffffff 5900000000000000010000000500000000000000cdffffff - {e=>-1,a=>48,d=>0,j=>0,c=>0,k=>116,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 300000000000000002000000070000000000000074000000 300000000000000002000000070000000000000074000000 300000000000000002000000070000000000000074000000 300000000000000002000000070000000000000074000000 - {e=>0,a=>-74,d=>0,j=>0,c=>1,k=>59,h=>0,b=>1,g=>0,f=>-1,i=>0} b6ffffff030000000400000000000000000000003b000000 b6ffffff030000000400000000000000000000003b000000 b6ffffff030000000400000000000000000000003b000000 b6ffffff030000000400000000000000000000003b000000 - {e=>-1,a=>63,d=>1,j=>-1,c=>0,k=>49,h=>0,b=>0,g=>-1,f=>0,i=>0} 3f0000000000000003000000010000000100000031000000 3f0000000000000003000000010000000100000031000000 3f0000000000000003000000010000000100000031000000 3f0000000000000003000000010000000100000031000000 = struct mixed1 { long a; unsigned int b:1; }; - {a=>-77,b=>1} b3ffffff01000000 b3ffffff01000000 b3ffffff01000000 b3ffffff01000000 - {a=>-4,b=>0} fcffffff00000000 fcffffff00000000 fcffffff00000000 fcffffff00000000 - {a=>106,b=>1} 6a00000001000000 6a00000001000000 6a00000001000000 6a00000001000000 - {a=>-44,b=>1} d4ffffff01000000 d4ffffff01000000 d4ffffff01000000 d4ffffff01000000 - {a=>-88,b=>1} a8ffffff01000000 a8ffffff01000000 a8ffffff01000000 a8ffffff01000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; }; - {c=>0,a=>-69,b=>1} bbffffff01000000 bbffffff01000000 bbffffff01000000 bbffffff01000000 - {c=>0,a=>-85,b=>1} abffffff01000000 abffffff01000000 abffffff01000000 abffffff01000000 - {c=>0,a=>33,b=>1} 2100000001000000 2100000001000000 2100000001000000 2100000001000000 - {c=>1,a=>40,b=>1} 2800000003000000 2800000003000000 2800000003000000 2800000003000000 - {c=>0,a=>-14,b=>1} f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; }; - {c=>0,a=>-30,b=>0} e2ffffff00000000 e2ffffff00000000 e2ffffff00000000 e2ffffff00000000 - {c=>0,a=>-60,b=>0} c4ffffff00000000 c4ffffff00000000 c4ffffff00000000 c4ffffff00000000 - {c=>1,a=>57,b=>0} 3900000002000000 3900000002000000 3900000002000000 3900000002000000 - {c=>1,a=>11,b=>0} 0b00000002000000 0b00000002000000 0b00000002000000 0b00000002000000 - {c=>1,a=>-73,b=>1} b7ffffff03000000 b7ffffff03000000 b7ffffff03000000 b7ffffff03000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; }; - {c=>0,a=>-46,b=>0,d=>1} d2ffffff0000000001000000 d2ffffff0000000001000000 d2ffffff0000000001000000 d2ffffff0000000001000000 - {c=>0,a=>27,b=>0,d=>0} 1b0000000000000000000000 1b0000000000000000000000 1b0000000000000000000000 1b0000000000000000000000 - {c=>1,a=>1,b=>1,d=>0} 010000000300000000000000 010000000300000000000000 010000000300000000000000 010000000300000000000000 - {c=>1,a=>71,b=>0,d=>0} 470000000200000000000000 470000000200000000000000 470000000200000000000000 470000000200000000000000 - {c=>0,a=>-14,b=>1,d=>1} f2ffffff0100000001000000 f2ffffff0100000001000000 f2ffffff0100000001000000 f2ffffff0100000001000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; }; - {e=>-1,c=>1,a=>19,b=>0,d=>0} 130000000200000002000000 130000000200000002000000 130000000200000002000000 130000000200000002000000 - {e=>-1,c=>1,a=>70,b=>0,d=>1} 460000000200000003000000 460000000200000003000000 460000000200000003000000 460000000200000003000000 - {e=>-1,c=>1,a=>-112,b=>1,d=>0} 90ffffff0300000002000000 90ffffff0300000002000000 90ffffff0300000002000000 90ffffff0300000002000000 - {e=>0,c=>0,a=>90,b=>0,d=>1} 5a0000000000000001000000 5a0000000000000001000000 5a0000000000000001000000 5a0000000000000001000000 - {e=>-1,c=>1,a=>-16,b=>1,d=>0} f0ffffff0300000002000000 f0ffffff0300000002000000 f0ffffff0300000002000000 f0ffffff0300000002000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; }; - {e=>-1,c=>1,a=>92,b=>0,d=>0,f=>-1} 5c0000000200000006000000 5c0000000200000006000000 5c0000000200000006000000 5c0000000200000006000000 - {e=>0,c=>1,a=>-112,b=>1,d=>0,f=>0} 90ffffff0300000000000000 90ffffff0300000000000000 90ffffff0300000000000000 90ffffff0300000000000000 - {e=>-1,c=>0,a=>-75,b=>1,d=>1,f=>0} b5ffffff0100000003000000 b5ffffff0100000003000000 b5ffffff0100000003000000 b5ffffff0100000003000000 - {e=>0,c=>0,a=>-54,b=>1,d=>1,f=>-1} caffffff0100000005000000 caffffff0100000005000000 caffffff0100000005000000 caffffff0100000005000000 - {e=>0,c=>0,a=>-3,b=>0,d=>0,f=>-1} fdffffff0000000004000000 fdffffff0000000004000000 fdffffff0000000004000000 fdffffff0000000004000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; }; - {e=>0,c=>1,a=>99,b=>1,d=>0,f=>0} 630000000300000000000000 630000000300000000000000 630000000300000000000000 630000000300000000000000 - {e=>0,c=>1,a=>121,b=>1,d=>1,f=>0} 790000000300000001000000 790000000300000001000000 790000000300000001000000 790000000300000001000000 - {e=>0,c=>1,a=>101,b=>0,d=>0,f=>-1} 650000000200000004000000 650000000200000004000000 650000000200000004000000 650000000200000004000000 - {e=>0,c=>1,a=>-100,b=>0,d=>0,f=>0} 9cffffff0200000000000000 9cffffff0200000000000000 9cffffff0200000000000000 9cffffff0200000000000000 - {e=>0,c=>1,a=>-59,b=>0,d=>1,f=>0} c5ffffff0200000001000000 c5ffffff0200000001000000 c5ffffff0200000001000000 c5ffffff0200000001000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; }; - {e=>0,c=>0,a=>73,g=>-1,b=>1,d=>1,f=>-1} 49000000010000000500000001000000 49000000010000000500000001000000 49000000010000000500000001000000 49000000010000000500000001000000 - {e=>0,c=>0,a=>11,g=>0,b=>1,d=>0,f=>0} 0b000000010000000000000000000000 0b000000010000000000000000000000 0b000000010000000000000000000000 0b000000010000000000000000000000 - {e=>-1,c=>0,a=>-31,g=>-1,b=>1,d=>1,f=>0} e1ffffff010000000300000001000000 e1ffffff010000000300000001000000 e1ffffff010000000300000001000000 e1ffffff010000000300000001000000 - {e=>-1,c=>0,a=>-124,g=>-1,b=>1,d=>1,f=>-1} 84ffffff010000000700000001000000 84ffffff010000000700000001000000 84ffffff010000000700000001000000 84ffffff010000000700000001000000 - {e=>-1,c=>0,a=>-42,g=>0,b=>1,d=>0,f=>-1} d6ffffff010000000600000000000000 d6ffffff010000000600000000000000 d6ffffff010000000600000000000000 d6ffffff010000000600000000000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; }; - {e=>-1,a=>86,d=>0,c=>0,h=>0,b=>0,g=>0,f=>-1} 56000000000000000600000000000000 56000000000000000600000000000000 56000000000000000600000000000000 56000000000000000600000000000000 - {e=>-1,a=>-97,d=>1,c=>0,h=>0,b=>0,g=>-1,f=>-1} 9fffffff000000000700000001000000 9fffffff000000000700000001000000 9fffffff000000000700000001000000 9fffffff000000000700000001000000 - {e=>0,a=>18,d=>0,c=>1,h=>-1,b=>0,g=>0,f=>0} 12000000020000000000000002000000 12000000020000000000000002000000 12000000020000000000000002000000 12000000020000000000000002000000 - {e=>0,a=>-102,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>0} 9affffff010000000000000003000000 9affffff010000000000000003000000 9affffff010000000000000003000000 9affffff010000000000000003000000 - {e=>0,a=>-36,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>0} dcffffff010000000000000002000000 dcffffff010000000000000002000000 dcffffff010000000000000002000000 dcffffff010000000000000002000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; }; - {e=>-1,a=>83,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 53000000030000000700000003000000 53000000030000000700000003000000 53000000030000000700000003000000 53000000030000000700000003000000 - {e=>0,a=>35,d=>1,c=>0,h=>0,b=>1,g=>-1,f=>0,i=>0} 23000000010000000100000001000000 23000000010000000100000001000000 23000000010000000100000001000000 23000000010000000100000001000000 - {e=>-1,a=>-48,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} d0ffffff020000000700000002000000 d0ffffff020000000700000002000000 d0ffffff020000000700000002000000 d0ffffff020000000700000002000000 - {e=>-1,a=>47,d=>1,c=>1,h=>-1,b=>0,g=>0,f=>0,i=>0} 2f000000020000000300000002000000 2f000000020000000300000002000000 2f000000020000000300000002000000 2f000000020000000300000002000000 - {e=>-1,a=>-92,d=>1,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>0} a4ffffff010000000300000003000000 a4ffffff010000000300000003000000 a4ffffff010000000300000003000000 a4ffffff010000000300000003000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; }; - {e=>0,a=>-32,d=>0,c=>0,h=>-1,b=>1,g=>-1,f=>-1,i=>0} e0ffffff010000000400000003000000 e0ffffff010000000400000003000000 e0ffffff010000000400000003000000 e0ffffff010000000400000003000000 - {e=>0,a=>-105,d=>1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>-1} 97ffffff020000000500000005000000 97ffffff020000000500000005000000 97ffffff020000000500000005000000 97ffffff020000000500000005000000 - {e=>0,a=>95,d=>1,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 5f000000030000000500000007000000 5f000000030000000500000007000000 5f000000030000000500000007000000 5f000000030000000500000007000000 - {e=>-1,a=>-81,d=>0,c=>0,h=>0,b=>1,g=>0,f=>0,i=>0} afffffff010000000200000000000000 afffffff010000000200000000000000 afffffff010000000200000000000000 afffffff010000000200000000000000 - {e=>-1,a=>54,d=>0,c=>0,h=>-1,b=>0,g=>-1,f=>0,i=>-1} 36000000000000000200000007000000 36000000000000000200000007000000 36000000000000000200000007000000 36000000000000000200000007000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; }; - {e=>0,a=>-112,d=>0,j=>0,c=>1,h=>0,b=>1,g=>-1,f=>0,i=>-1} 90ffffff03000000000000000500000000000000 90ffffff03000000000000000500000000000000 90ffffff03000000000000000500000000000000 90ffffff03000000000000000500000000000000 - {e=>0,a=>39,d=>0,j=>0,c=>1,h=>-1,b=>1,g=>-1,f=>-1,i=>0} 2700000003000000040000000300000000000000 2700000003000000040000000300000000000000 2700000003000000040000000300000000000000 2700000003000000040000000300000000000000 - {e=>-1,a=>113,d=>1,j=>-1,c=>1,h=>-1,b=>0,g=>0,f=>-1,i=>0} 7100000002000000070000000200000001000000 7100000002000000070000000200000001000000 7100000002000000070000000200000001000000 7100000002000000070000000200000001000000 - {e=>0,a=>118,d=>1,j=>0,c=>1,h=>0,b=>0,g=>0,f=>0,i=>-1} 7600000002000000010000000400000000000000 7600000002000000010000000400000000000000 7600000002000000010000000400000000000000 7600000002000000010000000400000000000000 - {e=>-1,a=>80,d=>0,j=>-1,c=>1,h=>0,b=>0,g=>-1,f=>-1,i=>0} 5000000002000000060000000100000001000000 5000000002000000060000000100000001000000 5000000002000000060000000100000001000000 5000000002000000060000000100000001000000 = struct mixed1 { long a; unsigned int b:1; unsigned int c:1; unsigned int :0; unsigned int d:1; signed int e:1; signed int f:1; signed int :0; signed int g:1; int h:1; int i:1; int :0; int j:1; long k; }; - {e=>-1,a=>2,d=>0,j=>0,c=>1,k=>-79,h=>0,b=>1,g=>0,f=>0,i=>0} 0200000003000000020000000000000000000000b1ffffff 0200000003000000020000000000000000000000b1ffffff 0200000003000000020000000000000000000000b1ffffff 0200000003000000020000000000000000000000b1ffffff - {e=>0,a=>-88,d=>1,j=>0,c=>1,k=>-90,h=>0,b=>0,g=>-1,f=>0,i=>0} a8ffffff02000000010000000100000000000000a6ffffff a8ffffff02000000010000000100000000000000a6ffffff a8ffffff02000000010000000100000000000000a6ffffff a8ffffff02000000010000000100000000000000a6ffffff - {e=>0,a=>-63,d=>0,j=>-1,c=>1,k=>22,h=>-1,b=>0,g=>0,f=>-1,i=>0} c1ffffff0200000004000000020000000100000016000000 c1ffffff0200000004000000020000000100000016000000 c1ffffff0200000004000000020000000100000016000000 c1ffffff0200000004000000020000000100000016000000 - {e=>0,a=>23,d=>1,j=>0,c=>1,k=>21,h=>0,b=>1,g=>-1,f=>-1,i=>0} 170000000300000005000000010000000000000015000000 170000000300000005000000010000000000000015000000 170000000300000005000000010000000000000015000000 170000000300000005000000010000000000000015000000 - {e=>-1,a=>84,d=>1,j=>-1,c=>1,k=>47,h=>0,b=>1,g=>-1,f=>0,i=>-1} 54000000030000000300000005000000010000002f000000 54000000030000000300000005000000010000002f000000 54000000030000000300000005000000010000002f000000 54000000030000000300000005000000010000002f000000 = struct mixed2 { unsigned int a:2; }; - {a=>1} 01000000 01000000 01000000 01000000 - {a=>2} 02000000 02000000 02000000 02000000 - {a=>2} 02000000 02000000 02000000 02000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>0} 00000000 00000000 00000000 00000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; }; - {a=>0,b=>0} 00000000 00000000 00000000 00000000 - {a=>0,b=>2} 08000000 08000000 08000000 08000000 - {a=>3,b=>3} 0f000000 0f000000 0f000000 0f000000 - {a=>2,b=>1} 06000000 06000000 06000000 06000000 - {a=>0,b=>0} 00000000 00000000 00000000 00000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; }; - {a=>2,b=>1} 06000000 06000000 06000000 06000000 - {a=>0,b=>3} 0c000000 0c000000 0c000000 0c000000 - {a=>2,b=>2} 0a000000 0a000000 0a000000 0a000000 - {a=>3,b=>0} 03000000 03000000 03000000 03000000 - {a=>3,b=>1} 07000000 07000000 07000000 07000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; }; - {c=>0,a=>3,b=>2} 0b00000000000000 0b00000000000000 0b00000000000000 0b00000000000000 - {c=>2,a=>2,b=>3} 0e00000002000000 0e00000002000000 0e00000002000000 0e00000002000000 - {c=>3,a=>2,b=>2} 0a00000003000000 0a00000003000000 0a00000003000000 0a00000003000000 - {c=>1,a=>2,b=>3} 0e00000001000000 0e00000001000000 0e00000001000000 0e00000001000000 - {c=>1,a=>0,b=>1} 0400000001000000 0400000001000000 0400000001000000 0400000001000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; }; - {c=>0,a=>2,b=>2,d=>-1} 0a0000000c000000 0a0000000c000000 0a0000000c000000 0a0000000c000000 - {c=>1,a=>0,b=>1,d=>0} 0400000001000000 0400000001000000 0400000001000000 0400000001000000 - {c=>2,a=>2,b=>1,d=>0} 0600000002000000 0600000002000000 0600000002000000 0600000002000000 - {c=>2,a=>0,b=>2,d=>0} 0800000002000000 0800000002000000 0800000002000000 0800000002000000 - {c=>1,a=>1,b=>3,d=>0} 0d00000001000000 0d00000001000000 0d00000001000000 0d00000001000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; }; - {e=>1,c=>0,a=>1,b=>2,d=>-2} 0900000018000000 0900000018000000 0900000018000000 0900000018000000 - {e=>0,c=>1,a=>0,b=>2,d=>-1} 080000000d000000 080000000d000000 080000000d000000 080000000d000000 - {e=>-2,c=>3,a=>3,b=>1,d=>1} 0700000027000000 0700000027000000 0700000027000000 0700000027000000 - {e=>1,c=>3,a=>0,b=>1,d=>-1} 040000001f000000 040000001f000000 040000001f000000 040000001f000000 - {e=>-2,c=>0,a=>0,b=>3,d=>-2} 0c00000028000000 0c00000028000000 0c00000028000000 0c00000028000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; }; - {e=>-1,c=>3,a=>2,b=>1,d=>1} 0600000037000000 0600000037000000 0600000037000000 0600000037000000 - {e=>-2,c=>0,a=>1,b=>2,d=>-2} 0900000028000000 0900000028000000 0900000028000000 0900000028000000 - {e=>0,c=>3,a=>2,b=>2,d=>0} 0a00000003000000 0a00000003000000 0a00000003000000 0a00000003000000 - {e=>1,c=>2,a=>1,b=>2,d=>-2} 090000001a000000 090000001a000000 090000001a000000 090000001a000000 - {e=>1,c=>2,a=>2,b=>3,d=>0} 0e00000012000000 0e00000012000000 0e00000012000000 0e00000012000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; }; - {e=>0,c=>1,a=>2,b=>3,d=>0,f=>-1} 0e0000000100000003000000 0e0000000100000003000000 0e0000000100000003000000 0e0000000100000003000000 - {e=>0,c=>0,a=>0,b=>2,d=>-1,f=>1} 080000000c00000001000000 080000000c00000001000000 080000000c00000001000000 080000000c00000001000000 - {e=>0,c=>2,a=>0,b=>0,d=>0,f=>-2} 000000000200000002000000 000000000200000002000000 000000000200000002000000 000000000200000002000000 - {e=>-2,c=>3,a=>2,b=>1,d=>-2,f=>-2} 060000002b00000002000000 060000002b00000002000000 060000002b00000002000000 060000002b00000002000000 - {e=>-2,c=>2,a=>0,b=>3,d=>-2,f=>-1} 0c0000002a00000003000000 0c0000002a00000003000000 0c0000002a00000003000000 0c0000002a00000003000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; }; - {e=>0,c=>2,a=>1,g=>-1,b=>3,d=>1,f=>-1} 0d000000060000000f000000 0d000000060000000f000000 0d000000060000000f000000 0d000000060000000f000000 - {e=>1,c=>2,a=>2,g=>1,b=>2,d=>1,f=>1} 0a0000001600000005000000 0a0000001600000005000000 0a0000001600000005000000 0a0000001600000005000000 - {e=>0,c=>2,a=>2,g=>-1,b=>2,d=>-2,f=>-1} 0a0000000a0000000f000000 0a0000000a0000000f000000 0a0000000a0000000f000000 0a0000000a0000000f000000 - {e=>-2,c=>0,a=>2,g=>-2,b=>1,d=>-1,f=>1} 060000002c00000009000000 060000002c00000009000000 060000002c00000009000000 060000002c00000009000000 - {e=>-1,c=>3,a=>1,g=>-1,b=>0,d=>0,f=>0} 01000000330000000c000000 01000000330000000c000000 01000000330000000c000000 01000000330000000c000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; }; - {e=>-2,a=>0,d=>1,c=>2,h=>-1,b=>1,g=>-2,f=>-2} 04000000260000003a000000 04000000260000003a000000 04000000260000003a000000 04000000260000003a000000 - {e=>-2,a=>0,d=>1,c=>0,h=>0,b=>0,g=>1,f=>0} 000000002400000004000000 000000002400000004000000 000000002400000004000000 000000002400000004000000 - {e=>1,a=>1,d=>1,c=>1,h=>0,b=>0,g=>-1,f=>-2} 01000000150000000e000000 01000000150000000e000000 01000000150000000e000000 01000000150000000e000000 - {e=>0,a=>3,d=>0,c=>0,h=>1,b=>2,g=>0,f=>1} 0b0000000000000011000000 0b0000000000000011000000 0b0000000000000011000000 0b0000000000000011000000 - {e=>-1,a=>1,d=>0,c=>1,h=>0,b=>0,g=>0,f=>0} 010000003100000000000000 010000003100000000000000 010000003100000000000000 010000003100000000000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; }; - {e=>-2,a=>0,d=>0,c=>0,h=>-1,b=>1,g=>0,f=>-2} 040000002000000032000000 040000002000000032000000 040000002000000032000000 040000002000000032000000 - {e=>0,a=>3,d=>-2,c=>2,h=>-1,b=>3,g=>-1,f=>-2} 0f0000000a0000003e000000 0f0000000a0000003e000000 0f0000000a0000003e000000 0f0000000a0000003e000000 - {e=>-1,a=>0,d=>0,c=>1,h=>-1,b=>0,g=>-1,f=>0} 00000000310000003c000000 00000000310000003c000000 00000000310000003c000000 00000000310000003c000000 - {e=>0,a=>3,d=>-2,c=>0,h=>1,b=>2,g=>-2,f=>1} 0b0000000800000019000000 0b0000000800000019000000 0b0000000800000019000000 0b0000000800000019000000 - {e=>-1,a=>2,d=>0,c=>1,h=>1,b=>0,g=>0,f=>1} 020000003100000011000000 020000003100000011000000 020000003100000011000000 020000003100000011000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; int i:2; }; - {e=>0,a=>0,d=>0,c=>2,h=>-1,b=>2,g=>1,f=>0,i=>1} 08000000020000003400000001000000 08000000020000003400000001000000 08000000020000003400000001000000 08000000020000003400000001000000 - {e=>0,a=>0,d=>-2,c=>0,h=>-1,b=>0,g=>-2,f=>1,i=>1} 00000000080000003900000001000000 00000000080000003900000001000000 00000000080000003900000001000000 00000000080000003900000001000000 - {e=>-1,a=>2,d=>0,c=>0,h=>0,b=>1,g=>-2,f=>0,i=>-1} 06000000300000000800000003000000 06000000300000000800000003000000 06000000300000000800000003000000 06000000300000000800000003000000 - {e=>1,a=>0,d=>0,c=>2,h=>0,b=>2,g=>1,f=>0,i=>1} 08000000120000000400000001000000 08000000120000000400000001000000 08000000120000000400000001000000 08000000120000000400000001000000 - {e=>0,a=>3,d=>-1,c=>0,h=>-1,b=>2,g=>-2,f=>0,i=>-2} 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 0b0000000c0000003800000002000000 = struct mixed2 { unsigned int a:2; unsigned int b:2; unsigned int :0; unsigned int c:2; signed int d:2; signed int e:2; signed int :0; signed int f:2; int g:2; int h:2; int :0; int i:2; int j; }; - {e=>-2,a=>1,d=>0,j=>11,c=>0,h=>-2,b=>1,g=>1,f=>-1,i=>-1} 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 050000002000000027000000030000000b000000 - {e=>1,a=>2,d=>-2,j=>76,c=>3,h=>-1,b=>1,g=>0,f=>-1,i=>1} 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 060000001b00000033000000010000004c000000 - {e=>1,a=>3,d=>0,j=>-66,c=>0,h=>-2,b=>3,g=>-2,f=>-1,i=>-2} 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff 0f000000100000002b00000002000000beffffff - {e=>-1,a=>0,d=>0,j=>-99,c=>1,h=>0,b=>1,g=>-2,f=>0,i=>1} 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff 040000003100000008000000010000009dffffff - {e=>-1,a=>2,d=>1,j=>94,c=>3,h=>-2,b=>3,g=>1,f=>-2,i=>-2} 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 0e0000003700000026000000020000005e000000 = struct mixed2 { char a; unsigned int b:2; }; - {a=>-56,b=>3} c803000000 c80003000000 c800000003000000 c800000003000000 - {a=>127,b=>0} 7f00000000 7f0000000000 7f00000000000000 7f00000000000000 - {a=>43,b=>2} 2b02000000 2b0002000000 2b00000002000000 2b00000002000000 - {a=>-28,b=>1} e401000000 e40001000000 e400000001000000 e400000001000000 - {a=>38,b=>0} 2600000000 260000000000 2600000000000000 2600000000000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; }; - {c=>0,a=>35,b=>1} 2301000000 230001000000 2300000001000000 2300000001000000 - {c=>0,a=>53,b=>3} 3503000000 350003000000 3500000003000000 3500000003000000 - {c=>3,a=>120,b=>0} 780c000000 78000c000000 780000000c000000 780000000c000000 - {c=>3,a=>-123,b=>1} 850d000000 85000d000000 850000000d000000 850000000d000000 - {c=>1,a=>29,b=>3} 1d07000000 1d0007000000 1d00000007000000 1d00000007000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>2,a=>79,b=>2} 4f0a000000 4f000a000000 4f0000000a000000 4f0000000a000000 - {c=>1,a=>-102,b=>2} 9a06000000 9a0006000000 9a00000006000000 9a00000006000000 - {c=>0,a=>-112,b=>1} 9001000000 900001000000 9000000001000000 9000000001000000 - {c=>0,a=>86,b=>0} 5600000000 560000000000 5600000000000000 5600000000000000 - {c=>2,a=>-112,b=>2} 900a000000 90000a000000 900000000a000000 900000000a000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>1,a=>9,b=>1,d=>2} 090500000002000000 09000500000002000000 090000000500000002000000 090000000500000002000000 - {c=>2,a=>-42,b=>0,d=>3} d60800000003000000 d6000800000003000000 d60000000800000003000000 d60000000800000003000000 - {c=>2,a=>65,b=>2,d=>2} 410a00000002000000 41000a00000002000000 410000000a00000002000000 410000000a00000002000000 - {c=>1,a=>-14,b=>2,d=>0} f20600000000000000 f2000600000000000000 f20000000600000000000000 f20000000600000000000000 - {c=>3,a=>-69,b=>1,d=>1} bb0d00000001000000 bb000d00000001000000 bb0000000d00000001000000 bb0000000d00000001000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>0,c=>1,a=>-38,b=>2,d=>1} da0600000001000000 da000600000001000000 da0000000600000001000000 da0000000600000001000000 - {e=>0,c=>0,a=>66,b=>2,d=>1} 420200000001000000 42000200000001000000 420000000200000001000000 420000000200000001000000 - {e=>1,c=>2,a=>-56,b=>1,d=>2} c80900000006000000 c8000900000006000000 c80000000900000006000000 c80000000900000006000000 - {e=>-1,c=>1,a=>120,b=>1,d=>2} 78050000000e000000 7800050000000e000000 78000000050000000e000000 78000000050000000e000000 - {e=>0,c=>2,a=>62,b=>0,d=>3} 3e0800000003000000 3e000800000003000000 3e0000000800000003000000 3e0000000800000003000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>1,c=>3,a=>-41,b=>1,d=>2,f=>0} d70d00000006000000 d7000d00000006000000 d70000000d00000006000000 d70000000d00000006000000 - {e=>-2,c=>2,a=>100,b=>2,d=>1,f=>1} 640a00000019000000 64000a00000019000000 640000000a00000019000000 640000000a00000019000000 - {e=>1,c=>0,a=>86,b=>0,d=>3,f=>1} 560000000017000000 56000000000017000000 560000000000000017000000 560000000000000017000000 - {e=>1,c=>3,a=>-89,b=>3,d=>2,f=>-2} a70f00000026000000 a7000f00000026000000 a70000000f00000026000000 a70000000f00000026000000 - {e=>-1,c=>3,a=>-109,b=>3,d=>0,f=>1} 930f0000001c000000 93000f0000001c000000 930000000f0000001c000000 930000000f0000001c000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>-2,c=>0,a=>-11,b=>1,d=>3,f=>1} f5010000001b000000 f500010000001b000000 f5000000010000001b000000 f5000000010000001b000000 - {e=>-2,c=>0,a=>11,b=>0,d=>0,f=>1} 0b0000000018000000 0b000000000018000000 0b0000000000000018000000 0b0000000000000018000000 - {e=>0,c=>3,a=>100,b=>1,d=>3,f=>0} 640d00000003000000 64000d00000003000000 640000000d00000003000000 640000000d00000003000000 - {e=>0,c=>3,a=>-21,b=>2,d=>0,f=>-2} eb0e00000020000000 eb000e00000020000000 eb0000000e00000020000000 eb0000000e00000020000000 - {e=>1,c=>0,a=>-82,b=>1,d=>1,f=>-1} ae0100000035000000 ae000100000035000000 ae0000000100000035000000 ae0000000100000035000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>1,c=>1,a=>-87,g=>-2,b=>0,d=>0,f=>0} a9040000000400000002000000 a900040000000400000002000000 a9000000040000000400000002000000 a9000000040000000400000002000000 - {e=>-2,c=>1,a=>1,g=>-2,b=>0,d=>0,f=>-2} 01040000002800000002000000 0100040000002800000002000000 01000000040000002800000002000000 01000000040000002800000002000000 - {e=>-1,c=>2,a=>107,g=>-2,b=>3,d=>3,f=>-1} 6b0b0000003f00000002000000 6b000b0000003f00000002000000 6b0000000b0000003f00000002000000 6b0000000b0000003f00000002000000 - {e=>-1,c=>1,a=>-44,g=>0,b=>0,d=>0,f=>-1} d4040000003c00000000000000 d400040000003c00000000000000 d4000000040000003c00000000000000 d4000000040000003c00000000000000 - {e=>-1,c=>2,a=>-40,g=>-1,b=>0,d=>3,f=>0} d8080000000f00000003000000 d800080000000f00000003000000 d8000000080000000f00000003000000 d8000000080000000f00000003000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>-2,a=>30,d=>2,c=>0,h=>-1,b=>1,g=>-2,f=>-1} 1e010000003a0000000e000000 1e00010000003a0000000e000000 1e000000010000003a0000000e000000 1e000000010000003a0000000e000000 - {e=>1,a=>52,d=>3,c=>0,h=>-2,b=>2,g=>0,f=>0} 34020000000700000008000000 3400020000000700000008000000 34000000020000000700000008000000 34000000020000000700000008000000 - {e=>1,a=>-125,d=>2,c=>2,h=>1,b=>0,g=>1,f=>-1} 83080000003600000005000000 8300080000003600000005000000 83000000080000003600000005000000 83000000080000003600000005000000 - {e=>-1,a=>70,d=>0,c=>3,h=>-1,b=>3,g=>1,f=>-1} 460f0000003c0000000d000000 46000f0000003c0000000d000000 460000000f0000003c0000000d000000 460000000f0000003c0000000d000000 - {e=>0,a=>-57,d=>2,c=>3,h=>1,b=>0,g=>-1,f=>-1} c70c0000003200000007000000 c7000c0000003200000007000000 c70000000c0000003200000007000000 c70000000c0000003200000007000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-2,a=>122,d=>0,c=>1,h=>0,b=>1,g=>0,f=>0,i=>-2} 7a050000000800000020000000 7a00050000000800000020000000 7a000000050000000800000020000000 7a000000050000000800000020000000 - {e=>-2,a=>76,d=>3,c=>3,h=>-1,b=>2,g=>0,f=>-1,i=>-1} 4c0e0000003b0000003c000000 4c000e0000003b0000003c000000 4c0000000e0000003b0000003c000000 4c0000000e0000003b0000003c000000 - {e=>1,a=>56,d=>3,c=>2,h=>-1,b=>3,g=>-1,f=>1,i=>0} 380b000000170000000f000000 38000b000000170000000f000000 380000000b000000170000000f000000 380000000b000000170000000f000000 - {e=>-2,a=>79,d=>0,c=>1,h=>1,b=>2,g=>-2,f=>0,i=>1} 4f060000000800000016000000 4f00060000000800000016000000 4f000000060000000800000016000000 4f000000060000000800000016000000 - {e=>1,a=>-87,d=>2,c=>1,h=>-1,b=>1,g=>0,f=>0,i=>0} a905000000060000000c000000 a90005000000060000000c000000 a900000005000000060000000c000000 a900000005000000060000000c000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>-1,a=>-90,d=>0,c=>2,h=>1,b=>2,g=>0,f=>-2,i=>-2} a60a0000002c00000024000000 a6000a0000002c00000024000000 a60000000a0000002c00000024000000 a60000000a0000002c00000024000000 - {e=>-2,a=>-119,d=>1,c=>0,h=>0,b=>2,g=>-2,f=>-1,i=>1} 89020000003900000012000000 8900020000003900000012000000 89000000020000003900000012000000 89000000020000003900000012000000 - {e=>1,a=>108,d=>3,c=>3,h=>0,b=>3,g=>-1,f=>-1,i=>1} 6c0f0000003700000013000000 6c000f0000003700000013000000 6c0000000f0000003700000013000000 6c0000000f0000003700000013000000 - {e=>0,a=>-126,d=>0,c=>3,h=>1,b=>2,g=>-2,f=>0,i=>-1} 820e0000000000000036000000 82000e0000000000000036000000 820000000e0000000000000036000000 820000000e0000000000000036000000 - {e=>1,a=>-120,d=>2,c=>2,h=>0,b=>1,g=>-2,f=>0,i=>-1} 88090000000600000032000000 8800090000000600000032000000 88000000090000000600000032000000 88000000090000000600000032000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>1,a=>-105,d=>3,j=>1,c=>3,h=>0,b=>1,g=>-2,f=>-2,i=>0} 970d000000270000000200000001000000 97000d000000270000000200000001000000 970000000d000000270000000200000001000000 970000000d000000270000000200000001000000 - {e=>0,a=>32,d=>0,j=>0,c=>2,h=>1,b=>2,g=>1,f=>-1,i=>-1} 200a000000300000003500000000000000 20000a000000300000003500000000000000 200000000a000000300000003500000000000000 200000000a000000300000003500000000000000 - {e=>1,a=>57,d=>1,j=>-2,c=>2,h=>-1,b=>1,g=>-2,f=>-2,i=>1} 3909000000250000001e00000002000000 390009000000250000001e00000002000000 3900000009000000250000001e00000002000000 3900000009000000250000001e00000002000000 - {e=>0,a=>59,d=>3,j=>-1,c=>0,h=>-2,b=>1,g=>0,f=>1,i=>-2} 3b01000000130000002800000003000000 3b0001000000130000002800000003000000 3b00000001000000130000002800000003000000 3b00000001000000130000002800000003000000 - {e=>-2,a=>68,d=>0,j=>1,c=>0,h=>1,b=>3,g=>0,f=>-2,i=>0} 4403000000280000000400000001000000 440003000000280000000400000001000000 4400000003000000280000000400000001000000 4400000003000000280000000400000001000000 = struct mixed2 { char a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>1,a=>-55,d=>1,j=>-2,c=>3,k=>111,h=>-1,b=>1,g=>-1,f=>0,i=>-1} c90d000000050000003f000000020000006f000000 c9000d000000050000003f000000020000006f000000 c90000000d000000050000003f000000020000006f000000 c90000000d000000050000003f000000020000006f000000 - {e=>-2,a=>-69,d=>3,j=>0,c=>0,k=>-83,h=>0,b=>3,g=>0,f=>-1,i=>1} bb030000003b0000001000000000000000adffffff bb00030000003b0000001000000000000000adffffff bb000000030000003b0000001000000000000000adffffff bb000000030000003b0000001000000000000000adffffff - {e=>0,a=>110,d=>0,j=>0,c=>3,k=>116,h=>-1,b=>3,g=>-2,f=>1,i=>-1} 6e0f000000100000003e0000000000000074000000 6e000f000000100000003e0000000000000074000000 6e0000000f000000100000003e0000000000000074000000 6e0000000f000000100000003e0000000000000074000000 - {e=>0,a=>-42,d=>1,j=>-1,c=>0,k=>92,h=>-1,b=>2,g=>1,f=>-2,i=>-2} d602000000210000002d000000030000005c000000 d60002000000210000002d000000030000005c000000 d600000002000000210000002d000000030000005c000000 d600000002000000210000002d000000030000005c000000 - {e=>-1,a=>-34,d=>0,j=>-2,c=>3,k=>22,h=>-2,b=>2,g=>-1,f=>0,i=>0} de0e0000000c0000000b0000000200000016000000 de000e0000000c0000000b0000000200000016000000 de0000000e0000000c0000000b0000000200000016000000 de0000000e0000000c0000000b0000000200000016000000 = struct mixed2 { short a; unsigned int b:2; }; - {a=>-36,b=>3} dcff03000000 dcff03000000 dcff000003000000 dcff000003000000 - {a=>77,b=>0} 4d0000000000 4d0000000000 4d00000000000000 4d00000000000000 - {a=>-125,b=>0} 83ff00000000 83ff00000000 83ff000000000000 83ff000000000000 - {a=>33,b=>0} 210000000000 210000000000 2100000000000000 2100000000000000 - {a=>18,b=>3} 120003000000 120003000000 1200000003000000 1200000003000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>39,b=>2} 27000a000000 27000a000000 270000000a000000 270000000a000000 - {c=>2,a=>-73,b=>3} b7ff0b000000 b7ff0b000000 b7ff00000b000000 b7ff00000b000000 - {c=>2,a=>12,b=>1} 0c0009000000 0c0009000000 0c00000009000000 0c00000009000000 - {c=>1,a=>107,b=>2} 6b0006000000 6b0006000000 6b00000006000000 6b00000006000000 - {c=>0,a=>-10,b=>2} f6ff02000000 f6ff02000000 f6ff000002000000 f6ff000002000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>0,a=>-15,b=>0} f1ff00000000 f1ff00000000 f1ff000000000000 f1ff000000000000 - {c=>2,a=>-103,b=>1} 99ff09000000 99ff09000000 99ff000009000000 99ff000009000000 - {c=>0,a=>106,b=>3} 6a0003000000 6a0003000000 6a00000003000000 6a00000003000000 - {c=>0,a=>77,b=>3} 4d0003000000 4d0003000000 4d00000003000000 4d00000003000000 - {c=>0,a=>-60,b=>2} c4ff02000000 c4ff02000000 c4ff000002000000 c4ff000002000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>3,a=>-90,b=>2,d=>1} a6ff0e00000001000000 a6ff0e00000001000000 a6ff00000e00000001000000 a6ff00000e00000001000000 - {c=>1,a=>-112,b=>3,d=>1} 90ff0700000001000000 90ff0700000001000000 90ff00000700000001000000 90ff00000700000001000000 - {c=>3,a=>-67,b=>0,d=>1} bdff0c00000001000000 bdff0c00000001000000 bdff00000c00000001000000 bdff00000c00000001000000 - {c=>1,a=>-2,b=>0,d=>3} feff0400000003000000 feff0400000003000000 feff00000400000003000000 feff00000400000003000000 - {c=>0,a=>-45,b=>1,d=>1} d3ff0100000001000000 d3ff0100000001000000 d3ff00000100000001000000 d3ff00000100000001000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>-1,c=>2,a=>-104,b=>2,d=>0} 98ff0a0000000c000000 98ff0a0000000c000000 98ff00000a0000000c000000 98ff00000a0000000c000000 - {e=>-2,c=>1,a=>-128,b=>3,d=>2} 80ff070000000a000000 80ff070000000a000000 80ff0000070000000a000000 80ff0000070000000a000000 - {e=>1,c=>3,a=>-119,b=>2,d=>1} 89ff0e00000005000000 89ff0e00000005000000 89ff00000e00000005000000 89ff00000e00000005000000 - {e=>-1,c=>3,a=>31,b=>1,d=>0} 1f000d0000000c000000 1f000d0000000c000000 1f0000000d0000000c000000 1f0000000d0000000c000000 - {e=>-1,c=>0,a=>-28,b=>1,d=>0} e4ff010000000c000000 e4ff010000000c000000 e4ff0000010000000c000000 e4ff0000010000000c000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>-1,c=>0,a=>15,b=>3,d=>0,f=>-2} 0f00030000002c000000 0f00030000002c000000 0f000000030000002c000000 0f000000030000002c000000 - {e=>-1,c=>2,a=>-51,b=>3,d=>1,f=>0} cdff0b0000000d000000 cdff0b0000000d000000 cdff00000b0000000d000000 cdff00000b0000000d000000 - {e=>-1,c=>2,a=>-69,b=>1,d=>3,f=>1} bbff090000001f000000 bbff090000001f000000 bbff0000090000001f000000 bbff0000090000001f000000 - {e=>1,c=>3,a=>121,b=>2,d=>1,f=>0} 79000e00000005000000 79000e00000005000000 790000000e00000005000000 790000000e00000005000000 - {e=>0,c=>2,a=>17,b=>3,d=>3,f=>-1} 11000b00000033000000 11000b00000033000000 110000000b00000033000000 110000000b00000033000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>0,c=>1,a=>-102,b=>2,d=>2,f=>-1} 9aff0600000032000000 9aff0600000032000000 9aff00000600000032000000 9aff00000600000032000000 - {e=>-2,c=>2,a=>-45,b=>2,d=>2,f=>-2} d3ff0a0000002a000000 d3ff0a0000002a000000 d3ff00000a0000002a000000 d3ff00000a0000002a000000 - {e=>-2,c=>3,a=>1,b=>0,d=>1,f=>-1} 01000c00000039000000 01000c00000039000000 010000000c00000039000000 010000000c00000039000000 - {e=>1,c=>1,a=>-70,b=>0,d=>1,f=>0} baff0400000005000000 baff0400000005000000 baff00000400000005000000 baff00000400000005000000 - {e=>0,c=>3,a=>-67,b=>3,d=>2,f=>-2} bdff0f00000022000000 bdff0f00000022000000 bdff00000f00000022000000 bdff00000f00000022000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>-1,c=>1,a=>-14,g=>-2,b=>2,d=>3,f=>0} f2ff060000000f00000002000000 f2ff060000000f00000002000000 f2ff0000060000000f00000002000000 f2ff0000060000000f00000002000000 - {e=>0,c=>2,a=>-82,g=>-2,b=>2,d=>0,f=>0} aeff0a0000000000000002000000 aeff0a0000000000000002000000 aeff00000a0000000000000002000000 aeff00000a0000000000000002000000 - {e=>1,c=>1,a=>-117,g=>-1,b=>0,d=>3,f=>0} 8bff040000000700000003000000 8bff040000000700000003000000 8bff0000040000000700000003000000 8bff0000040000000700000003000000 - {e=>1,c=>3,a=>-88,g=>1,b=>3,d=>0,f=>0} a8ff0f0000000400000001000000 a8ff0f0000000400000001000000 a8ff00000f0000000400000001000000 a8ff00000f0000000400000001000000 - {e=>0,c=>3,a=>38,g=>0,b=>3,d=>1,f=>-1} 26000f0000003100000000000000 26000f0000003100000000000000 260000000f0000003100000000000000 260000000f0000003100000000000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>0,a=>14,d=>3,c=>1,h=>-2,b=>2,g=>-2,f=>-2} 0e0006000000230000000a000000 0e0006000000230000000a000000 0e00000006000000230000000a000000 0e00000006000000230000000a000000 - {e=>1,a=>73,d=>0,c=>0,h=>-1,b=>3,g=>0,f=>0} 490003000000040000000c000000 490003000000040000000c000000 4900000003000000040000000c000000 4900000003000000040000000c000000 - {e=>-2,a=>5,d=>2,c=>1,h=>-1,b=>2,g=>1,f=>-2} 0500060000002a0000000d000000 0500060000002a0000000d000000 05000000060000002a0000000d000000 05000000060000002a0000000d000000 - {e=>0,a=>-57,d=>2,c=>0,h=>-1,b=>0,g=>0,f=>1} c7ff00000000120000000c000000 c7ff00000000120000000c000000 c7ff000000000000120000000c000000 c7ff000000000000120000000c000000 - {e=>-1,a=>-21,d=>0,c=>3,h=>-1,b=>0,g=>-1,f=>1} ebff0c0000001c0000000f000000 ebff0c0000001c0000000f000000 ebff00000c0000001c0000000f000000 ebff00000c0000001c0000000f000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-2,a=>64,d=>3,c=>1,h=>1,b=>0,g=>1,f=>0,i=>-2} 4000040000000b00000025000000 4000040000000b00000025000000 40000000040000000b00000025000000 40000000040000000b00000025000000 - {e=>-1,a=>-28,d=>2,c=>0,h=>-2,b=>3,g=>-1,f=>-1,i=>-1} e4ff030000003e0000003b000000 e4ff030000003e0000003b000000 e4ff0000030000003e0000003b000000 e4ff0000030000003e0000003b000000 - {e=>-1,a=>16,d=>0,c=>1,h=>0,b=>2,g=>-1,f=>1,i=>-1} 1000060000001c00000033000000 1000060000001c00000033000000 10000000060000001c00000033000000 10000000060000001c00000033000000 - {e=>1,a=>-116,d=>0,c=>2,h=>-1,b=>3,g=>0,f=>-2,i=>0} 8cff0b000000240000000c000000 8cff0b000000240000000c000000 8cff00000b000000240000000c000000 8cff00000b000000240000000c000000 - {e=>0,a=>-24,d=>0,c=>0,h=>-1,b=>1,g=>1,f=>-2,i=>0} e8ff01000000200000000d000000 e8ff01000000200000000d000000 e8ff000001000000200000000d000000 e8ff000001000000200000000d000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-98,d=>3,c=>1,h=>-2,b=>3,g=>-2,f=>1,i=>-1} 9eff07000000130000003a000000 9eff07000000130000003a000000 9eff000007000000130000003a000000 9eff000007000000130000003a000000 - {e=>1,a=>87,d=>3,c=>2,h=>-1,b=>2,g=>-1,f=>-2,i=>-1} 57000a000000270000003f000000 57000a000000270000003f000000 570000000a000000270000003f000000 570000000a000000270000003f000000 - {e=>1,a=>-69,d=>2,c=>1,h=>0,b=>3,g=>0,f=>-2,i=>-1} bbff070000002600000030000000 bbff070000002600000030000000 bbff0000070000002600000030000000 bbff0000070000002600000030000000 - {e=>-1,a=>-28,d=>3,c=>0,h=>-1,b=>1,g=>-1,f=>0,i=>-2} e4ff010000000f0000002f000000 e4ff010000000f0000002f000000 e4ff0000010000000f0000002f000000 e4ff0000010000000f0000002f000000 - {e=>0,a=>58,d=>3,c=>3,h=>0,b=>3,g=>-2,f=>-1,i=>0} 3a000f0000003300000002000000 3a000f0000003300000002000000 3a0000000f0000003300000002000000 3a0000000f0000003300000002000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>0,a=>-102,d=>3,j=>-2,c=>1,h=>0,b=>2,g=>0,f=>0,i=>-1} 9aff06000000030000003000000002000000 9aff06000000030000003000000002000000 9aff000006000000030000003000000002000000 9aff000006000000030000003000000002000000 - {e=>-1,a=>-12,d=>1,j=>1,c=>1,h=>-2,b=>0,g=>-2,f=>1,i=>-2} f4ff040000001d0000002a00000001000000 f4ff040000001d0000002a00000001000000 f4ff0000040000001d0000002a00000001000000 f4ff0000040000001d0000002a00000001000000 - {e=>-2,a=>98,d=>3,j=>1,c=>0,h=>0,b=>0,g=>-1,f=>-2,i=>-2} 6200000000002b0000002300000001000000 6200000000002b0000002300000001000000 62000000000000002b0000002300000001000000 62000000000000002b0000002300000001000000 - {e=>-1,a=>-38,d=>3,j=>-1,c=>1,h=>-1,b=>1,g=>-2,f=>0,i=>1} daff050000000f0000001e00000003000000 daff050000000f0000001e00000003000000 daff0000050000000f0000001e00000003000000 daff0000050000000f0000001e00000003000000 - {e=>1,a=>0,d=>2,j=>-2,c=>1,h=>0,b=>2,g=>1,f=>-2,i=>0} 000006000000260000000100000002000000 000006000000260000000100000002000000 0000000006000000260000000100000002000000 0000000006000000260000000100000002000000 = struct mixed2 { short a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>-1,a=>-67,d=>0,j=>-2,c=>2,k=>-19,h=>1,b=>0,g=>0,f=>-1,i=>1} bdff080000003c0000001400000002000000edffffff bdff080000003c0000001400000002000000edffffff bdff0000080000003c0000001400000002000000edffffff bdff0000080000003c0000001400000002000000edffffff - {e=>0,a=>-109,d=>2,j=>0,c=>1,k=>116,h=>0,b=>0,g=>1,f=>1,i=>-1} 93ff0400000012000000310000000000000074000000 93ff0400000012000000310000000000000074000000 93ff00000400000012000000310000000000000074000000 93ff00000400000012000000310000000000000074000000 - {e=>0,a=>102,d=>0,j=>1,c=>3,k=>116,h=>1,b=>2,g=>0,f=>1,i=>1} 66000e00000010000000140000000100000074000000 66000e00000010000000140000000100000074000000 660000000e00000010000000140000000100000074000000 660000000e00000010000000140000000100000074000000 - {e=>0,a=>27,d=>1,j=>-1,c=>0,k=>-116,h=>-2,b=>2,g=>1,f=>-1,i=>-1} 1b00020000003100000039000000030000008cffffff 1b00020000003100000039000000030000008cffffff 1b000000020000003100000039000000030000008cffffff 1b000000020000003100000039000000030000008cffffff - {e=>1,a=>-68,d=>0,j=>-1,c=>3,k=>-47,h=>-1,b=>1,g=>0,f=>0,i=>-2} bcff0d000000040000002c00000003000000d1ffffff bcff0d000000040000002c00000003000000d1ffffff bcff00000d000000040000002c00000003000000d1ffffff bcff00000d000000040000002c00000003000000d1ffffff = struct mixed2 { int a; unsigned int b:2; }; - {a=>-99,b=>3} 9dffffff03000000 9dffffff03000000 9dffffff03000000 9dffffff03000000 - {a=>-83,b=>3} adffffff03000000 adffffff03000000 adffffff03000000 adffffff03000000 - {a=>15,b=>2} 0f00000002000000 0f00000002000000 0f00000002000000 0f00000002000000 - {a=>60,b=>1} 3c00000001000000 3c00000001000000 3c00000001000000 3c00000001000000 - {a=>15,b=>2} 0f00000002000000 0f00000002000000 0f00000002000000 0f00000002000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>64,b=>2} 400000000a000000 400000000a000000 400000000a000000 400000000a000000 - {c=>3,a=>21,b=>3} 150000000f000000 150000000f000000 150000000f000000 150000000f000000 - {c=>1,a=>88,b=>1} 5800000005000000 5800000005000000 5800000005000000 5800000005000000 - {c=>2,a=>-84,b=>2} acffffff0a000000 acffffff0a000000 acffffff0a000000 acffffff0a000000 - {c=>3,a=>127,b=>2} 7f0000000e000000 7f0000000e000000 7f0000000e000000 7f0000000e000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>0,a=>-11,b=>2} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 - {c=>1,a=>-114,b=>1} 8effffff05000000 8effffff05000000 8effffff05000000 8effffff05000000 - {c=>3,a=>-66,b=>1} beffffff0d000000 beffffff0d000000 beffffff0d000000 beffffff0d000000 - {c=>2,a=>-101,b=>1} 9bffffff09000000 9bffffff09000000 9bffffff09000000 9bffffff09000000 - {c=>2,a=>51,b=>3} 330000000b000000 330000000b000000 330000000b000000 330000000b000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>3,a=>71,b=>3,d=>2} 470000000f00000002000000 470000000f00000002000000 470000000f00000002000000 470000000f00000002000000 - {c=>0,a=>-59,b=>3,d=>2} c5ffffff0300000002000000 c5ffffff0300000002000000 c5ffffff0300000002000000 c5ffffff0300000002000000 - {c=>1,a=>-34,b=>1,d=>2} deffffff0500000002000000 deffffff0500000002000000 deffffff0500000002000000 deffffff0500000002000000 - {c=>1,a=>-50,b=>0,d=>2} ceffffff0400000002000000 ceffffff0400000002000000 ceffffff0400000002000000 ceffffff0400000002000000 - {c=>2,a=>98,b=>3,d=>1} 620000000b00000001000000 620000000b00000001000000 620000000b00000001000000 620000000b00000001000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>0,c=>2,a=>-115,b=>0,d=>3} 8dffffff0800000003000000 8dffffff0800000003000000 8dffffff0800000003000000 8dffffff0800000003000000 - {e=>0,c=>2,a=>120,b=>0,d=>1} 780000000800000001000000 780000000800000001000000 780000000800000001000000 780000000800000001000000 - {e=>-1,c=>3,a=>-67,b=>0,d=>1} bdffffff0c0000000d000000 bdffffff0c0000000d000000 bdffffff0c0000000d000000 bdffffff0c0000000d000000 - {e=>-2,c=>2,a=>52,b=>2,d=>0} 340000000a00000008000000 340000000a00000008000000 340000000a00000008000000 340000000a00000008000000 - {e=>-1,c=>2,a=>94,b=>3,d=>2} 5e0000000b0000000e000000 5e0000000b0000000e000000 5e0000000b0000000e000000 5e0000000b0000000e000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>0,c=>3,a=>-74,b=>1,d=>1,f=>1} b6ffffff0d00000011000000 b6ffffff0d00000011000000 b6ffffff0d00000011000000 b6ffffff0d00000011000000 - {e=>-1,c=>3,a=>117,b=>2,d=>1,f=>1} 750000000e0000001d000000 750000000e0000001d000000 750000000e0000001d000000 750000000e0000001d000000 - {e=>1,c=>1,a=>-117,b=>0,d=>2,f=>-2} 8bffffff0400000026000000 8bffffff0400000026000000 8bffffff0400000026000000 8bffffff0400000026000000 - {e=>-2,c=>1,a=>-90,b=>1,d=>0,f=>-2} a6ffffff0500000028000000 a6ffffff0500000028000000 a6ffffff0500000028000000 a6ffffff0500000028000000 - {e=>-1,c=>2,a=>41,b=>0,d=>3,f=>0} 29000000080000000f000000 29000000080000000f000000 29000000080000000f000000 29000000080000000f000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>0,c=>3,a=>-75,b=>1,d=>1,f=>0} b5ffffff0d00000001000000 b5ffffff0d00000001000000 b5ffffff0d00000001000000 b5ffffff0d00000001000000 - {e=>1,c=>3,a=>-74,b=>1,d=>1,f=>0} b6ffffff0d00000005000000 b6ffffff0d00000005000000 b6ffffff0d00000005000000 b6ffffff0d00000005000000 - {e=>-2,c=>0,a=>7,b=>2,d=>2,f=>0} 07000000020000000a000000 07000000020000000a000000 07000000020000000a000000 07000000020000000a000000 - {e=>-1,c=>0,a=>-14,b=>3,d=>2,f=>-1} f2ffffff030000003e000000 f2ffffff030000003e000000 f2ffffff030000003e000000 f2ffffff030000003e000000 - {e=>0,c=>2,a=>-68,b=>1,d=>3,f=>-2} bcffffff0900000023000000 bcffffff0900000023000000 bcffffff0900000023000000 bcffffff0900000023000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>-1,c=>0,a=>-121,g=>-2,b=>1,d=>0,f=>-2} 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 87ffffff010000002c00000002000000 - {e=>-2,c=>2,a=>125,g=>-2,b=>3,d=>3,f=>-2} 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 7d0000000b0000002b00000002000000 - {e=>-2,c=>0,a=>23,g=>-2,b=>0,d=>0,f=>1} 17000000000000001800000002000000 17000000000000001800000002000000 17000000000000001800000002000000 17000000000000001800000002000000 - {e=>-2,c=>0,a=>-89,g=>1,b=>2,d=>2,f=>-1} a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 a7ffffff020000003a00000001000000 - {e=>-1,c=>3,a=>46,g=>1,b=>1,d=>1,f=>0} 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 2e0000000d0000000d00000001000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>-2,a=>-37,d=>1,c=>1,h=>0,b=>0,g=>1,f=>-1} dbffffff040000003900000001000000 dbffffff040000003900000001000000 dbffffff040000003900000001000000 dbffffff040000003900000001000000 - {e=>0,a=>-96,d=>3,c=>3,h=>1,b=>0,g=>-2,f=>1} a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 a0ffffff0c0000001300000006000000 - {e=>-1,a=>-27,d=>1,c=>3,h=>-1,b=>1,g=>1,f=>-1} e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 e5ffffff0d0000003d0000000d000000 - {e=>-2,a=>-117,d=>3,c=>2,h=>-2,b=>1,g=>-1,f=>-2} 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 8bffffff090000002b0000000b000000 - {e=>1,a=>-10,d=>0,c=>0,h=>-2,b=>0,g=>1,f=>1} f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 f6ffffff000000001400000009000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>1,a=>-4,d=>3,c=>3,h=>-2,b=>0,g=>1,f=>-1,i=>-1} fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 fcffffff0c0000003700000039000000 - {e=>0,a=>98,d=>2,c=>2,h=>0,b=>2,g=>0,f=>1,i=>-2} 620000000a0000001200000020000000 620000000a0000001200000020000000 620000000a0000001200000020000000 620000000a0000001200000020000000 - {e=>1,a=>40,d=>3,c=>2,h=>1,b=>3,g=>0,f=>-1,i=>1} 280000000b0000003700000014000000 280000000b0000003700000014000000 280000000b0000003700000014000000 280000000b0000003700000014000000 - {e=>0,a=>-91,d=>0,c=>3,h=>0,b=>2,g=>-1,f=>-1,i=>-1} a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 a5ffffff0e0000003000000033000000 - {e=>0,a=>111,d=>2,c=>1,h=>-1,b=>0,g=>-2,f=>-2,i=>-1} 6f00000004000000220000003e000000 6f00000004000000220000003e000000 6f00000004000000220000003e000000 6f00000004000000220000003e000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-110,d=>2,c=>3,h=>-1,b=>1,g=>0,f=>-2,i=>0} 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 92ffffff0d000000220000000c000000 - {e=>-2,a=>-48,d=>1,c=>0,h=>-2,b=>3,g=>1,f=>0,i=>1} d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 d0ffffff030000000900000019000000 - {e=>-1,a=>107,d=>3,c=>3,h=>0,b=>3,g=>1,f=>1,i=>0} 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 6b0000000f0000001f00000001000000 - {e=>-1,a=>23,d=>3,c=>0,h=>-2,b=>0,g=>0,f=>0,i=>1} 17000000000000000f00000018000000 17000000000000000f00000018000000 17000000000000000f00000018000000 17000000000000000f00000018000000 - {e=>-2,a=>-85,d=>3,c=>2,h=>0,b=>1,g=>0,f=>-1,i=>1} abffffff090000003b00000010000000 abffffff090000003b00000010000000 abffffff090000003b00000010000000 abffffff090000003b00000010000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>0,a=>-100,d=>3,j=>-1,c=>2,h=>-1,b=>1,g=>-1,f=>-1,i=>-1} 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 9cffffff09000000330000003f00000003000000 - {e=>1,a=>18,d=>0,j=>1,c=>2,h=>-2,b=>2,g=>1,f=>-2,i=>0} 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 120000000a000000240000000900000001000000 - {e=>-2,a=>-36,d=>1,j=>0,c=>0,h=>-2,b=>2,g=>-1,f=>0,i=>-1} dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 dcffffff02000000090000003b00000000000000 - {e=>1,a=>-45,d=>0,j=>0,c=>0,h=>0,b=>0,g=>1,f=>0,i=>-1} d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 d3ffffff00000000040000003100000000000000 - {e=>-2,a=>103,d=>3,j=>-2,c=>0,h=>1,b=>0,g=>1,f=>0,i=>1} 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 67000000000000000b0000001500000002000000 = struct mixed2 { int a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>-2,a=>108,d=>3,j=>-2,c=>0,k=>-117,h=>1,b=>0,g=>1,f=>-1,i=>-1} 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff 6c000000000000003b00000035000000020000008bffffff - {e=>-1,a=>43,d=>1,j=>-1,c=>1,k=>16,h=>-2,b=>2,g=>-2,f=>-2,i=>1} 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 2b000000060000002d0000001a0000000300000010000000 - {e=>1,a=>-38,d=>0,j=>0,c=>3,k=>-25,h=>-1,b=>0,g=>-1,f=>0,i=>1} daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff daffffff0c000000040000001f00000000000000e7ffffff - {e=>0,a=>-93,d=>3,j=>0,c=>1,k=>23,h=>-2,b=>1,g=>-1,f=>0,i=>0} a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 a3ffffff05000000030000000b0000000000000017000000 - {e=>0,a=>108,d=>2,j=>-1,c=>1,k=>90,h=>-2,b=>0,g=>-2,f=>0,i=>1} 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 6c00000004000000020000001a000000030000005a000000 = struct mixed2 { long a; unsigned int b:2; }; - {a=>25,b=>0} 1900000000000000 1900000000000000 1900000000000000 1900000000000000 - {a=>-13,b=>2} f3ffffff02000000 f3ffffff02000000 f3ffffff02000000 f3ffffff02000000 - {a=>-45,b=>3} d3ffffff03000000 d3ffffff03000000 d3ffffff03000000 d3ffffff03000000 - {a=>-4,b=>0} fcffffff00000000 fcffffff00000000 fcffffff00000000 fcffffff00000000 - {a=>121,b=>3} 7900000003000000 7900000003000000 7900000003000000 7900000003000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; }; - {c=>2,a=>-103,b=>2} 99ffffff0a000000 99ffffff0a000000 99ffffff0a000000 99ffffff0a000000 - {c=>1,a=>15,b=>2} 0f00000006000000 0f00000006000000 0f00000006000000 0f00000006000000 - {c=>2,a=>30,b=>1} 1e00000009000000 1e00000009000000 1e00000009000000 1e00000009000000 - {c=>0,a=>77,b=>1} 4d00000001000000 4d00000001000000 4d00000001000000 4d00000001000000 - {c=>0,a=>35,b=>3} 2300000003000000 2300000003000000 2300000003000000 2300000003000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; }; - {c=>3,a=>24,b=>2} 180000000e000000 180000000e000000 180000000e000000 180000000e000000 - {c=>1,a=>20,b=>0} 1400000004000000 1400000004000000 1400000004000000 1400000004000000 - {c=>3,a=>-15,b=>2} f1ffffff0e000000 f1ffffff0e000000 f1ffffff0e000000 f1ffffff0e000000 - {c=>1,a=>8,b=>1} 0800000005000000 0800000005000000 0800000005000000 0800000005000000 - {c=>3,a=>79,b=>3} 4f0000000f000000 4f0000000f000000 4f0000000f000000 4f0000000f000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; }; - {c=>1,a=>-41,b=>3,d=>0} d7ffffff0700000000000000 d7ffffff0700000000000000 d7ffffff0700000000000000 d7ffffff0700000000000000 - {c=>0,a=>89,b=>3,d=>2} 590000000300000002000000 590000000300000002000000 590000000300000002000000 590000000300000002000000 - {c=>1,a=>72,b=>2,d=>1} 480000000600000001000000 480000000600000001000000 480000000600000001000000 480000000600000001000000 - {c=>3,a=>-32,b=>1,d=>2} e0ffffff0d00000002000000 e0ffffff0d00000002000000 e0ffffff0d00000002000000 e0ffffff0d00000002000000 - {c=>1,a=>96,b=>0,d=>0} 600000000400000000000000 600000000400000000000000 600000000400000000000000 600000000400000000000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; }; - {e=>-2,c=>1,a=>52,b=>3,d=>1} 340000000700000009000000 340000000700000009000000 340000000700000009000000 340000000700000009000000 - {e=>-1,c=>2,a=>-124,b=>2,d=>3} 84ffffff0a0000000f000000 84ffffff0a0000000f000000 84ffffff0a0000000f000000 84ffffff0a0000000f000000 - {e=>-1,c=>1,a=>-79,b=>2,d=>1} b1ffffff060000000d000000 b1ffffff060000000d000000 b1ffffff060000000d000000 b1ffffff060000000d000000 - {e=>0,c=>0,a=>-70,b=>2,d=>2} baffffff0200000002000000 baffffff0200000002000000 baffffff0200000002000000 baffffff0200000002000000 - {e=>-1,c=>0,a=>-18,b=>2,d=>1} eeffffff020000000d000000 eeffffff020000000d000000 eeffffff020000000d000000 eeffffff020000000d000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; }; - {e=>-1,c=>2,a=>-31,b=>0,d=>2,f=>1} e1ffffff080000001e000000 e1ffffff080000001e000000 e1ffffff080000001e000000 e1ffffff080000001e000000 - {e=>0,c=>2,a=>-103,b=>2,d=>1,f=>0} 99ffffff0a00000001000000 99ffffff0a00000001000000 99ffffff0a00000001000000 99ffffff0a00000001000000 - {e=>-1,c=>2,a=>51,b=>3,d=>1,f=>-1} 330000000b0000003d000000 330000000b0000003d000000 330000000b0000003d000000 330000000b0000003d000000 - {e=>1,c=>3,a=>-94,b=>0,d=>0,f=>-1} a2ffffff0c00000034000000 a2ffffff0c00000034000000 a2ffffff0c00000034000000 a2ffffff0c00000034000000 - {e=>-1,c=>3,a=>-14,b=>0,d=>2,f=>-2} f2ffffff0c0000002e000000 f2ffffff0c0000002e000000 f2ffffff0c0000002e000000 f2ffffff0c0000002e000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; }; - {e=>-2,c=>0,a=>80,b=>1,d=>0,f=>0} 500000000100000008000000 500000000100000008000000 500000000100000008000000 500000000100000008000000 - {e=>1,c=>2,a=>12,b=>1,d=>1,f=>-2} 0c0000000900000025000000 0c0000000900000025000000 0c0000000900000025000000 0c0000000900000025000000 - {e=>-2,c=>0,a=>-50,b=>2,d=>3,f=>-1} ceffffff020000003b000000 ceffffff020000003b000000 ceffffff020000003b000000 ceffffff020000003b000000 - {e=>-1,c=>1,a=>95,b=>3,d=>2,f=>-1} 5f000000070000003e000000 5f000000070000003e000000 5f000000070000003e000000 5f000000070000003e000000 - {e=>1,c=>2,a=>99,b=>0,d=>3,f=>0} 630000000800000007000000 630000000800000007000000 630000000800000007000000 630000000800000007000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; }; - {e=>1,c=>2,a=>-83,g=>-2,b=>3,d=>2,f=>1} adffffff0b0000001600000002000000 adffffff0b0000001600000002000000 adffffff0b0000001600000002000000 adffffff0b0000001600000002000000 - {e=>1,c=>2,a=>21,g=>-2,b=>3,d=>1,f=>1} 150000000b0000001500000002000000 150000000b0000001500000002000000 150000000b0000001500000002000000 150000000b0000001500000002000000 - {e=>0,c=>2,a=>90,g=>0,b=>0,d=>2,f=>1} 5a000000080000001200000000000000 5a000000080000001200000000000000 5a000000080000001200000000000000 5a000000080000001200000000000000 - {e=>-2,c=>3,a=>-13,g=>-2,b=>2,d=>2,f=>-2} f3ffffff0e0000002a00000002000000 f3ffffff0e0000002a00000002000000 f3ffffff0e0000002a00000002000000 f3ffffff0e0000002a00000002000000 - {e=>-2,c=>0,a=>125,g=>-1,b=>1,d=>1,f=>-2} 7d000000010000002900000003000000 7d000000010000002900000003000000 7d000000010000002900000003000000 7d000000010000002900000003000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; }; - {e=>1,a=>-118,d=>0,c=>1,h=>0,b=>2,g=>0,f=>1} 8affffff060000001400000000000000 8affffff060000001400000000000000 8affffff060000001400000000000000 8affffff060000001400000000000000 - {e=>-1,a=>-22,d=>2,c=>1,h=>-2,b=>0,g=>-2,f=>-1} eaffffff040000003e0000000a000000 eaffffff040000003e0000000a000000 eaffffff040000003e0000000a000000 eaffffff040000003e0000000a000000 - {e=>0,a=>35,d=>2,c=>2,h=>1,b=>0,g=>-1,f=>0} 23000000080000000200000007000000 23000000080000000200000007000000 23000000080000000200000007000000 23000000080000000200000007000000 - {e=>1,a=>109,d=>0,c=>0,h=>0,b=>0,g=>1,f=>0} 6d000000000000000400000001000000 6d000000000000000400000001000000 6d000000000000000400000001000000 6d000000000000000400000001000000 - {e=>1,a=>67,d=>1,c=>1,h=>0,b=>0,g=>-2,f=>0} 43000000040000000500000002000000 43000000040000000500000002000000 43000000040000000500000002000000 43000000040000000500000002000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; }; - {e=>-1,a=>-88,d=>2,c=>3,h=>-1,b=>3,g=>-2,f=>0,i=>-1} a8ffffff0f0000000e0000003e000000 a8ffffff0f0000000e0000003e000000 a8ffffff0f0000000e0000003e000000 a8ffffff0f0000000e0000003e000000 - {e=>-1,a=>117,d=>0,c=>2,h=>-1,b=>2,g=>-1,f=>0,i=>0} 750000000a0000000c0000000f000000 750000000a0000000c0000000f000000 750000000a0000000c0000000f000000 750000000a0000000c0000000f000000 - {e=>-1,a=>119,d=>1,c=>0,h=>-1,b=>2,g=>1,f=>-2,i=>1} 77000000020000002d0000001d000000 77000000020000002d0000001d000000 77000000020000002d0000001d000000 77000000020000002d0000001d000000 - {e=>0,a=>-126,d=>1,c=>2,h=>1,b=>2,g=>0,f=>0,i=>-2} 82ffffff0a0000000100000024000000 82ffffff0a0000000100000024000000 82ffffff0a0000000100000024000000 82ffffff0a0000000100000024000000 - {e=>-1,a=>-78,d=>3,c=>2,h=>-2,b=>2,g=>-2,f=>-1,i=>1} b2ffffff0a0000003f0000001a000000 b2ffffff0a0000003f0000001a000000 b2ffffff0a0000003f0000001a000000 b2ffffff0a0000003f0000001a000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; }; - {e=>0,a=>-53,d=>0,c=>3,h=>-1,b=>1,g=>1,f=>1,i=>0} cbffffff0d000000100000000d000000 cbffffff0d000000100000000d000000 cbffffff0d000000100000000d000000 cbffffff0d000000100000000d000000 - {e=>-2,a=>-108,d=>2,c=>0,h=>-1,b=>2,g=>-1,f=>0,i=>-2} 94ffffff020000000a0000002f000000 94ffffff020000000a0000002f000000 94ffffff020000000a0000002f000000 94ffffff020000000a0000002f000000 - {e=>1,a=>-117,d=>1,c=>1,h=>0,b=>1,g=>-2,f=>0,i=>-1} 8bffffff050000000500000032000000 8bffffff050000000500000032000000 8bffffff050000000500000032000000 8bffffff050000000500000032000000 - {e=>1,a=>121,d=>1,c=>1,h=>-2,b=>0,g=>1,f=>0,i=>1} 79000000040000000500000019000000 79000000040000000500000019000000 79000000040000000500000019000000 79000000040000000500000019000000 - {e=>-2,a=>-2,d=>1,c=>3,h=>-2,b=>0,g=>-1,f=>-2,i=>-2} feffffff0c000000290000002b000000 feffffff0c000000290000002b000000 feffffff0c000000290000002b000000 feffffff0c000000290000002b000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; }; - {e=>-1,a=>65,d=>2,j=>-1,c=>3,h=>0,b=>0,g=>1,f=>0,i=>0} 410000000c0000000e0000000100000003000000 410000000c0000000e0000000100000003000000 410000000c0000000e0000000100000003000000 410000000c0000000e0000000100000003000000 - {e=>-1,a=>68,d=>0,j=>1,c=>0,h=>-2,b=>2,g=>-1,f=>-2,i=>-1} 44000000020000002c0000003b00000001000000 44000000020000002c0000003b00000001000000 44000000020000002c0000003b00000001000000 44000000020000002c0000003b00000001000000 - {e=>1,a=>15,d=>3,j=>0,c=>0,h=>-1,b=>3,g=>1,f=>-2,i=>-1} 0f00000003000000270000003d00000000000000 0f00000003000000270000003d00000000000000 0f00000003000000270000003d00000000000000 0f00000003000000270000003d00000000000000 - {e=>-1,a=>-76,d=>3,j=>-2,c=>3,h=>1,b=>2,g=>1,f=>-2,i=>1} b4ffffff0e0000002f0000001500000002000000 b4ffffff0e0000002f0000001500000002000000 b4ffffff0e0000002f0000001500000002000000 b4ffffff0e0000002f0000001500000002000000 - {e=>-1,a=>65,d=>3,j=>1,c=>1,h=>0,b=>2,g=>0,f=>0,i=>0} 41000000060000000f0000000000000001000000 41000000060000000f0000000000000001000000 41000000060000000f0000000000000001000000 41000000060000000f0000000000000001000000 = struct mixed2 { long a; unsigned int b:2; unsigned int c:2; unsigned int :0; unsigned int d:2; signed int e:2; signed int f:2; signed int :0; signed int g:2; int h:2; int i:2; int :0; int j:2; int k; }; - {e=>1,a=>-49,d=>0,j=>-2,c=>3,k=>-42,h=>1,b=>0,g=>-2,f=>1,i=>-2} cfffffff0c000000140000002600000002000000d6ffffff cfffffff0c000000140000002600000002000000d6ffffff cfffffff0c000000140000002600000002000000d6ffffff cfffffff0c000000140000002600000002000000d6ffffff - {e=>0,a=>91,d=>3,j=>-2,c=>2,k=>-107,h=>0,b=>3,g=>-2,f=>-2,i=>0} 5b0000000b00000023000000020000000200000095ffffff 5b0000000b00000023000000020000000200000095ffffff 5b0000000b00000023000000020000000200000095ffffff 5b0000000b00000023000000020000000200000095ffffff - {e=>-1,a=>119,d=>0,j=>-1,c=>2,k=>-75,h=>0,b=>0,g=>0,f=>0,i=>1} 77000000080000000c0000001000000003000000b5ffffff 77000000080000000c0000001000000003000000b5ffffff 77000000080000000c0000001000000003000000b5ffffff 77000000080000000c0000001000000003000000b5ffffff - {e=>1,a=>56,d=>2,j=>-2,c=>1,k=>-42,h=>-2,b=>2,g=>0,f=>-1,i=>0} 3800000006000000360000000800000002000000d6ffffff 3800000006000000360000000800000002000000d6ffffff 3800000006000000360000000800000002000000d6ffffff 3800000006000000360000000800000002000000d6ffffff - {e=>0,a=>47,d=>2,j=>1,c=>3,k=>-15,h=>-1,b=>0,g=>-1,f=>0,i=>1} 2f0000000c000000020000001f00000001000000f1ffffff 2f0000000c000000020000001f00000001000000f1ffffff 2f0000000c000000020000001f00000001000000f1ffffff 2f0000000c000000020000001f00000001000000f1ffffff = struct uch_wrap { unsigned char a:3; }; - {a=>1} 01 01 01 01 - {a=>4} 04 04 04 04 - {a=>3} 03 03 03 03 - {a=>1} 01 01 01 01 - {a=>7} 07 07 07 07 = struct uch_wrap { unsigned char a:3; unsigned char b:3; }; - {a=>1,b=>3} 19 19 19 19 - {a=>0,b=>4} 20 20 20 20 - {a=>1,b=>6} 31 31 31 31 - {a=>5,b=>4} 25 25 25 25 - {a=>0,b=>4} 20 20 20 20 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>7,b=>7} 3f04 3f04 3f04 3f04 - {c=>7,a=>3,b=>3} 1b07 1b07 1b07 1b07 - {c=>0,a=>6,b=>5} 2e00 2e00 2e00 2e00 - {c=>3,a=>5,b=>3} 1d03 1d03 1d03 1d03 - {c=>5,a=>6,b=>1} 0e05 0e05 0e05 0e05 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>2,a=>2,b=>6,d=>2} 3212 3212 3212 3212 - {c=>3,a=>2,b=>5,d=>7} 2a3b 2a3b 2a3b 2a3b - {c=>2,a=>6,b=>7,d=>2} 3e12 3e12 3e12 3e12 - {c=>7,a=>6,b=>6,d=>4} 3627 3627 3627 3627 - {c=>7,a=>2,b=>2,d=>7} 123f 123f 123f 123f = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>6,c=>0,a=>7,b=>2,d=>5} 172806 172806 172806 172806 - {e=>0,c=>7,a=>1,b=>5,d=>5} 292f00 292f00 292f00 292f00 - {e=>7,c=>4,a=>7,b=>7,d=>7} 3f3c07 3f3c07 3f3c07 3f3c07 - {e=>2,c=>2,a=>2,b=>6,d=>6} 323202 323202 323202 323202 - {e=>0,c=>5,a=>6,b=>6,d=>5} 362d00 362d00 362d00 362d00 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>2,c=>2,a=>0,b=>7,d=>5,f=>4} 382a22 382a22 382a22 382a22 - {e=>1,c=>5,a=>1,b=>5,d=>5,f=>5} 292d29 292d29 292d29 292d29 - {e=>5,c=>7,a=>1,b=>7,d=>6,f=>4} 393725 393725 393725 393725 - {e=>5,c=>6,a=>6,b=>1,d=>4,f=>1} 0e260d 0e260d 0e260d 0e260d - {e=>6,c=>2,a=>7,b=>1,d=>6,f=>3} 0f321e 0f321e 0f321e 0f321e = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>7,c=>4,a=>5,g=>0,b=>1,d=>1,f=>1} 0d0c0f00 0d0c0f00 0d0c0f00 0d0c0f00 - {e=>3,c=>4,a=>6,g=>2,b=>4,d=>2,f=>0} 26140302 26140302 26140302 26140302 - {e=>2,c=>4,a=>7,g=>6,b=>6,d=>4,f=>6} 37243206 37243206 37243206 37243206 - {e=>0,c=>6,a=>3,g=>0,b=>1,d=>6,f=>1} 0b360800 0b360800 0b360800 0b360800 - {e=>3,c=>7,a=>0,g=>4,b=>4,d=>1,f=>4} 200f2304 200f2304 200f2304 200f2304 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>1,a=>1,d=>4,c=>6,h=>5,b=>3,g=>5,f=>5} 1926292d 1926292d 1926292d 1926292d - {e=>7,a=>4,d=>6,c=>1,h=>0,b=>0,g=>0,f=>3} 04311f00 04311f00 04311f00 04311f00 - {e=>2,a=>6,d=>4,c=>1,h=>5,b=>4,g=>6,f=>3} 26211a2e 26211a2e 26211a2e 26211a2e - {e=>1,a=>2,d=>6,c=>2,h=>6,b=>4,g=>3,f=>0} 22320133 22320133 22320133 22320133 - {e=>0,a=>1,d=>0,c=>3,h=>5,b=>3,g=>4,f=>5} 1903282c 1903282c 1903282c 1903282c = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>6,d=>7,c=>0,h=>5,b=>3,g=>6,f=>2,i=>5} 1e38142e05 1e38142e05 1e38142e05 1e38142e05 - {e=>7,a=>3,d=>1,c=>0,h=>0,b=>2,g=>5,f=>6,i=>6} 1308370506 1308370506 1308370506 1308370506 - {e=>3,a=>2,d=>4,c=>3,h=>6,b=>2,g=>7,f=>7,i=>6} 12233b3706 12233b3706 12233b3706 12233b3706 - {e=>0,a=>3,d=>7,c=>1,h=>7,b=>7,g=>0,f=>4,i=>0} 3b39203800 3b39203800 3b39203800 3b39203800 - {e=>5,a=>7,d=>0,c=>1,h=>3,b=>7,g=>3,f=>6,i=>1} 3f01351b01 3f01351b01 3f01351b01 3f01351b01 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>3,a=>6,d=>1,j=>4,c=>0,h=>4,b=>1,g=>5,f=>4,i=>1} 0e08232521 0e08232521 0e08232521 0e08232521 - {e=>6,a=>1,d=>1,j=>1,c=>2,h=>3,b=>4,g=>0,f=>5,i=>1} 210a2e1809 210a2e1809 210a2e1809 210a2e1809 - {e=>5,a=>2,d=>6,j=>3,c=>7,h=>0,b=>7,g=>1,f=>7,i=>3} 3a373d011b 3a373d011b 3a373d011b 3a373d011b - {e=>6,a=>1,d=>3,j=>3,c=>5,h=>6,b=>1,g=>5,f=>3,i=>7} 091d1e351f 091d1e351f 091d1e351f 091d1e351f - {e=>4,a=>0,d=>5,j=>4,c=>5,h=>2,b=>1,g=>1,f=>1,i=>2} 082d0c1122 082d0c1122 082d0c1122 082d0c1122 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>0,a=>4,d=>4,j=>1,c=>3,k=>2,h=>3,b=>4,g=>2,f=>6,i=>2} 2423301a0a02 2423301a0a02 2423301a0a02 2423301a0a02 - {e=>1,a=>6,d=>5,j=>4,c=>0,k=>1,h=>7,b=>1,g=>4,f=>7,i=>2} 0e28393c2201 0e28393c2201 0e28393c2201 0e28393c2201 - {e=>6,a=>3,d=>6,j=>5,c=>4,k=>1,h=>2,b=>1,g=>2,f=>2,i=>7} 0b3416122f01 0b3416122f01 0b3416122f01 0b3416122f01 - {e=>4,a=>2,d=>5,j=>1,c=>2,k=>7,h=>0,b=>0,g=>1,f=>0,i=>4} 022a04010c07 022a04010c07 022a04010c07 022a04010c07 - {e=>5,a=>0,d=>0,j=>4,c=>6,k=>4,h=>1,b=>3,g=>4,f=>2,i=>2} 1806150c2204 1806150c2204 1806150c2204 1806150c2204 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>1,a=>4,d=>2,j=>3,l=>2,c=>1,k=>0,h=>2,b=>4,g=>2,f=>4,i=>7} 241121121f10 241121121f10 241121121f10 241121121f10 - {e=>3,a=>2,d=>1,j=>0,l=>7,c=>0,k=>0,h=>5,b=>2,g=>6,f=>1,i=>0} 12080b2e0038 12080b2e0038 12080b2e0038 12080b2e0038 - {e=>7,a=>6,d=>5,j=>3,l=>2,c=>7,k=>0,h=>4,b=>0,g=>7,f=>1,i=>5} 062f0f271d10 062f0f271d10 062f0f271d10 062f0f271d10 - {e=>0,a=>3,d=>3,j=>3,l=>1,c=>5,k=>4,h=>3,b=>4,g=>3,f=>5,i=>7} 231d281b1f0c 231d281b1f0c 231d281b1f0c 231d281b1f0c - {e=>2,a=>2,d=>6,j=>1,l=>1,c=>6,k=>7,h=>3,b=>7,g=>5,f=>4,i=>0} 3a36221d080f 3a36221d080f 3a36221d080f 3a36221d080f = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>3,a=>6,m=>7,d=>3,j=>4,l=>4,c=>2,k=>2,h=>5,b=>7,g=>6,f=>2,i=>3} 3e1a132e232207 3e1a132e232207 3e1a132e232207 3e1a132e232207 - {e=>2,a=>3,m=>0,d=>7,j=>7,l=>0,c=>2,k=>3,h=>1,b=>2,g=>1,f=>7,i=>7} 133a3a093f0300 133a3a093f0300 133a3a093f0300 133a3a093f0300 - {e=>3,a=>7,m=>0,d=>4,j=>6,l=>5,c=>1,k=>6,h=>2,b=>5,g=>7,f=>5,i=>1} 2f212b17312e00 2f212b17312e00 2f212b17312e00 2f212b17312e00 - {e=>6,a=>5,m=>3,d=>0,j=>1,l=>5,c=>1,k=>3,h=>0,b=>6,g=>4,f=>4,i=>2} 350126040a2b03 350126040a2b03 350126040a2b03 350126040a2b03 - {e=>3,a=>3,m=>1,d=>1,j=>3,l=>4,c=>1,k=>6,h=>6,b=>1,g=>4,f=>1,i=>4} 0b090b341c2601 0b090b341c2601 0b090b341c2601 0b090b341c2601 = struct uch_wrap { unsigned char a:3; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; short n; }; - {e=>1,n=>106,a=>2,m=>4,d=>4,j=>1,l=>4,c=>1,k=>6,h=>1,b=>0,g=>4,f=>7,i=>1} 0221390c0926046a00 0221390c092604006a00 0221390c092604006a00 0221390c092604006a00 - {e=>4,n=>74,a=>5,m=>5,d=>7,j=>0,l=>4,c=>0,k=>0,h=>4,b=>7,g=>2,f=>7,i=>5} 3d383c220520054a00 3d383c22052005004a00 3d383c22052005004a00 3d383c22052005004a00 - {e=>7,n=>-6,a=>5,m=>1,d=>2,j=>6,l=>5,c=>2,k=>2,h=>7,b=>2,g=>0,f=>0,i=>7} 15120738372a01faff 15120738372a0100faff 15120738372a0100faff 15120738372a0100faff - {e=>7,n=>-54,a=>2,m=>1,d=>4,j=>7,l=>3,c=>1,k=>2,h=>1,b=>2,g=>0,f=>5,i=>3} 12212f083b1a01caff 12212f083b1a0100caff 12212f083b1a0100caff 12212f083b1a0100caff - {e=>6,n=>118,a=>5,m=>6,d=>0,j=>7,l=>4,c=>2,k=>6,h=>3,b=>6,g=>4,f=>7,i=>0} 35023e1c3826067600 35023e1c382606007600 35023e1c382606007600 35023e1c382606007600 = struct uch_wrap { char a; unsigned char b:3; }; - {a=>-70,b=>6} ba06 ba06 ba06 ba06 - {a=>-97,b=>5} 9f05 9f05 9f05 9f05 - {a=>-15,b=>0} f100 f100 f100 f100 - {a=>-44,b=>0} d400 d400 d400 d400 - {a=>102,b=>7} 6607 6607 6607 6607 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>32,b=>5} 2035 2035 2035 2035 - {c=>5,a=>-69,b=>3} bb2b bb2b bb2b bb2b - {c=>3,a=>90,b=>2} 5a1a 5a1a 5a1a 5a1a - {c=>5,a=>80,b=>6} 502e 502e 502e 502e - {c=>6,a=>117,b=>3} 7533 7533 7533 7533 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>1,a=>4,b=>6,d=>2} 040e02 040e02 040e02 040e02 - {c=>7,a=>-20,b=>1,d=>3} ec3903 ec3903 ec3903 ec3903 - {c=>2,a=>127,b=>1,d=>3} 7f1103 7f1103 7f1103 7f1103 - {c=>6,a=>-48,b=>4,d=>4} d03404 d03404 d03404 d03404 - {c=>4,a=>-78,b=>2,d=>5} b22205 b22205 b22205 b22205 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>3,c=>0,a=>120,b=>7,d=>7} 78071f 78071f 78071f 78071f - {e=>6,c=>6,a=>-75,b=>2,d=>3} b53233 b53233 b53233 b53233 - {e=>3,c=>2,a=>-61,b=>6,d=>7} c3161f c3161f c3161f c3161f - {e=>1,c=>0,a=>59,b=>7,d=>2} 3b070a 3b070a 3b070a 3b070a - {e=>2,c=>4,a=>61,b=>4,d=>6} 3d2416 3d2416 3d2416 3d2416 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>1,c=>4,a=>48,b=>5,d=>6,f=>3} 30250e03 30250e03 30250e03 30250e03 - {e=>6,c=>0,a=>-47,b=>4,d=>5,f=>3} d1043503 d1043503 d1043503 d1043503 - {e=>5,c=>1,a=>-5,b=>4,d=>1,f=>0} fb0c2900 fb0c2900 fb0c2900 fb0c2900 - {e=>6,c=>2,a=>106,b=>7,d=>3,f=>4} 6a173304 6a173304 6a173304 6a173304 - {e=>5,c=>5,a=>-105,b=>3,d=>6,f=>3} 972b2e03 972b2e03 972b2e03 972b2e03 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>4,c=>1,a=>71,g=>5,b=>0,d=>7,f=>0} 47082728 47082728 47082728 47082728 - {e=>6,c=>7,a=>36,g=>5,b=>1,d=>5,f=>4} 2439352c 2439352c 2439352c 2439352c - {e=>3,c=>5,a=>-22,g=>5,b=>5,d=>4,f=>1} ea2d1c29 ea2d1c29 ea2d1c29 ea2d1c29 - {e=>6,c=>2,a=>43,g=>6,b=>0,d=>2,f=>0} 2b103230 2b103230 2b103230 2b103230 - {e=>0,c=>1,a=>-119,g=>0,b=>4,d=>4,f=>1} 890c0401 890c0401 890c0401 890c0401 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>6,a=>88,d=>3,c=>5,h=>1,b=>3,g=>7,f=>2} 582b333a01 582b333a01 582b333a01 582b333a01 - {e=>3,a=>-69,d=>7,c=>6,h=>7,b=>3,g=>7,f=>4} bb331f3c07 bb331f3c07 bb331f3c07 bb331f3c07 - {e=>7,a=>-30,d=>6,c=>4,h=>5,b=>0,g=>7,f=>3} e2203e3b05 e2203e3b05 e2203e3b05 e2203e3b05 - {e=>6,a=>-16,d=>6,c=>7,h=>5,b=>2,g=>1,f=>6} f03a360e05 f03a360e05 f03a360e05 f03a360e05 - {e=>1,a=>72,d=>2,c=>1,h=>1,b=>5,g=>1,f=>6} 480d0a0e01 480d0a0e01 480d0a0e01 480d0a0e01 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>2,a=>-92,d=>4,c=>2,h=>6,b=>6,g=>0,f=>3,i=>7} a41614033e a41614033e a41614033e a41614033e - {e=>1,a=>50,d=>4,c=>7,h=>0,b=>5,g=>6,f=>2,i=>0} 323d0c3200 323d0c3200 323d0c3200 323d0c3200 - {e=>7,a=>-126,d=>7,c=>3,h=>5,b=>2,g=>0,f=>0,i=>4} 821a3f0025 821a3f0025 821a3f0025 821a3f0025 - {e=>6,a=>123,d=>7,c=>4,h=>6,b=>0,g=>3,f=>6,i=>4} 7b20371e26 7b20371e26 7b20371e26 7b20371e26 - {e=>5,a=>21,d=>0,c=>7,h=>1,b=>3,g=>0,f=>7,i=>5} 153b280729 153b280729 153b280729 153b280729 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>1,a=>79,d=>6,j=>1,c=>6,h=>0,b=>1,g=>1,f=>5,i=>4} 4f310e0d2001 4f310e0d2001 4f310e0d2001 4f310e0d2001 - {e=>5,a=>70,d=>7,j=>4,c=>1,h=>1,b=>4,g=>2,f=>5,i=>2} 460c2f151104 460c2f151104 460c2f151104 460c2f151104 - {e=>2,a=>90,d=>2,j=>3,c=>7,h=>2,b=>6,g=>4,f=>7,i=>4} 5a3e12272203 5a3e12272203 5a3e12272203 5a3e12272203 - {e=>6,a=>48,d=>0,j=>3,c=>5,h=>3,b=>5,g=>6,f=>5,i=>3} 302d30351b03 302d30351b03 302d30351b03 302d30351b03 - {e=>6,a=>-79,d=>1,j=>4,c=>1,h=>6,b=>7,g=>6,f=>4,i=>5} b10f31342e04 b10f31342e04 b10f31342e04 b10f31342e04 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>3,a=>33,d=>5,j=>0,c=>5,k=>3,h=>3,b=>4,g=>0,f=>2,i=>4} 212c1d022318 212c1d022318 212c1d022318 212c1d022318 - {e=>1,a=>64,d=>0,j=>2,c=>1,k=>7,h=>7,b=>1,g=>3,f=>0,i=>6} 40090818373a 40090818373a 40090818373a 40090818373a - {e=>0,a=>121,d=>0,j=>2,c=>3,k=>3,h=>1,b=>5,g=>0,f=>4,i=>5} 791d0004291a 791d0004291a 791d0004291a 791d0004291a - {e=>7,a=>-117,d=>1,j=>1,c=>6,k=>5,h=>1,b=>3,g=>1,f=>5,i=>4} 8b33390d2129 8b33390d2129 8b33390d2129 8b33390d2129 - {e=>5,a=>105,d=>3,j=>2,c=>3,k=>7,h=>6,b=>3,g=>5,f=>1,i=>1} 691b2b290e3a 691b2b290e3a 691b2b290e3a 691b2b290e3a = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>1,a=>-36,d=>3,j=>4,l=>1,c=>5,k=>1,h=>3,b=>7,g=>3,f=>0,i=>2} dc2f0b18130c01 dc2f0b18130c01 dc2f0b18130c01 dc2f0b18130c01 - {e=>5,a=>-81,d=>1,j=>6,l=>1,c=>3,k=>7,h=>3,b=>5,g=>3,f=>5,i=>1} af1d291d0b3e01 af1d291d0b3e01 af1d291d0b3e01 af1d291d0b3e01 - {e=>0,a=>-44,d=>7,j=>3,l=>5,c=>3,k=>2,h=>2,b=>2,g=>3,f=>0,i=>6} d41a0718321305 d41a0718321305 d41a0718321305 d41a0718321305 - {e=>1,a=>-34,d=>1,j=>6,l=>7,c=>6,k=>0,h=>6,b=>6,g=>5,f=>2,i=>5} de36092a2e0607 de36092a2e0607 de36092a2e0607 de36092a2e0607 - {e=>0,a=>57,d=>4,j=>0,l=>4,c=>6,k=>1,h=>2,b=>2,g=>7,f=>6,i=>2} 3932043e120804 3932043e120804 3932043e120804 3932043e120804 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>7,a=>-101,m=>1,d=>6,j=>3,l=>6,c=>4,k=>6,h=>5,b=>1,g=>1,f=>6,i=>0} 9b213e0e05330e 9b213e0e05330e 9b213e0e05330e 9b213e0e05330e - {e=>3,a=>-11,m=>4,d=>2,j=>6,l=>7,c=>6,k=>4,h=>7,b=>2,g=>1,f=>4,i=>3} f5321a0c1f2627 f5321a0c1f2627 f5321a0c1f2627 f5321a0c1f2627 - {e=>0,a=>47,m=>2,d=>7,j=>5,l=>2,c=>2,k=>3,h=>4,b=>5,g=>5,f=>1,i=>7} 2f1507293c1d12 2f1507293c1d12 2f1507293c1d12 2f1507293c1d12 - {e=>1,a=>-113,m=>7,d=>2,j=>1,l=>6,c=>7,k=>4,h=>7,b=>5,g=>0,f=>6,i=>7} 8f3d0a063f213e 8f3d0a063f213e 8f3d0a063f213e 8f3d0a063f213e - {e=>2,a=>19,m=>6,d=>7,j=>5,l=>4,c=>3,k=>7,h=>4,b=>1,g=>4,f=>0,i=>3} 131917201c3d34 131917201c3d34 131917201c3d34 131917201c3d34 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>6,n=>5,a=>-111,m=>0,d=>3,j=>5,l=>6,c=>7,k=>5,h=>6,b=>0,g=>4,f=>0,i=>6} 91383320362d0605 91383320362d0605 91383320362d0605 91383320362d0605 - {e=>7,n=>4,a=>-30,m=>6,d=>4,j=>3,l=>0,c=>4,k=>4,h=>1,b=>7,g=>7,f=>5,i=>0} e2273c3d01233004 e2273c3d01233004 e2273c3d01233004 e2273c3d01233004 - {e=>0,n=>1,a=>22,m=>5,d=>7,j=>5,l=>0,c=>0,k=>1,h=>5,b=>3,g=>2,f=>7,i=>3} 160307171d0d2801 160307171d0d2801 160307171d0d2801 160307171d0d2801 - {e=>4,n=>5,a=>4,m=>0,d=>1,j=>2,l=>4,c=>1,k=>3,h=>0,b=>0,g=>0,f=>7,i=>6} 04082107301a0405 04082107301a0405 04082107301a0405 04082107301a0405 - {e=>2,n=>3,a=>-83,m=>6,d=>6,j=>6,l=>6,c=>0,k=>1,h=>2,b=>6,g=>0,f=>6,i=>5} ad0616062a0e3603 ad0616062a0e3603 ad0616062a0e3603 ad0616062a0e3603 = struct uch_wrap { char a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>0,n=>2,a=>-105,m=>1,d=>3,j=>0,l=>1,c=>6,k=>1,h=>1,b=>2,g=>7,f=>2,o=>-102,i=>2} 9732033a110809029aff 9732033a110809029aff 9732033a110809029aff 9732033a110809029aff - {e=>1,n=>2,a=>-82,m=>2,d=>4,j=>2,l=>6,c=>0,k=>3,h=>1,b=>6,g=>6,f=>3,o=>29,i=>2} ae060c33111a16021d00 ae060c33111a16021d00 ae060c33111a16021d00 ae060c33111a16021d00 - {e=>5,n=>7,a=>-14,m=>4,d=>0,j=>7,l=>1,c=>2,k=>7,h=>7,b=>4,g=>1,f=>5,o=>-24,i=>2} f214280d173f2107e8ff f214280d173f2107e8ff f214280d173f2107e8ff f214280d173f2107e8ff - {e=>0,n=>6,a=>96,m=>7,d=>3,j=>0,l=>3,c=>3,k=>1,h=>3,b=>6,g=>6,f=>7,o=>81,i=>2} 601e033713083b065100 601e033713083b065100 601e033713083b065100 601e033713083b065100 - {e=>6,n=>2,a=>-36,m=>0,d=>2,j=>6,l=>5,c=>4,k=>0,h=>3,b=>6,g=>6,f=>5,o=>-17,i=>5} dc2632352b060502efff dc2632352b060502efff dc2632352b060502efff dc2632352b060502efff = struct uch_wrap { short a; unsigned char b:3; }; - {a=>102,b=>2} 660002 66000200 66000200 66000200 - {a=>39,b=>4} 270004 27000400 27000400 27000400 - {a=>-119,b=>5} 89ff05 89ff0500 89ff0500 89ff0500 - {a=>69,b=>7} 450007 45000700 45000700 45000700 - {a=>46,b=>7} 2e0007 2e000700 2e000700 2e000700 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; }; - {c=>2,a=>-97,b=>2} 9fff12 9fff1200 9fff1200 9fff1200 - {c=>5,a=>-16,b=>5} f0ff2d f0ff2d00 f0ff2d00 f0ff2d00 - {c=>5,a=>100,b=>5} 64002d 64002d00 64002d00 64002d00 - {c=>1,a=>117,b=>2} 75000a 75000a00 75000a00 75000a00 - {c=>1,a=>-105,b=>4} 97ff0c 97ff0c00 97ff0c00 97ff0c00 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>2,a=>7,b=>5,d=>3} 07001503 07001503 07001503 07001503 - {c=>7,a=>-90,b=>4,d=>1} a6ff3c01 a6ff3c01 a6ff3c01 a6ff3c01 - {c=>1,a=>61,b=>0,d=>2} 3d000802 3d000802 3d000802 3d000802 - {c=>1,a=>36,b=>7,d=>2} 24000f02 24000f02 24000f02 24000f02 - {c=>4,a=>-76,b=>5,d=>0} b4ff2500 b4ff2500 b4ff2500 b4ff2500 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>4,c=>2,a=>-103,b=>0,d=>3} 99ff1023 99ff1023 99ff1023 99ff1023 - {e=>2,c=>0,a=>17,b=>5,d=>5} 11000515 11000515 11000515 11000515 - {e=>5,c=>5,a=>27,b=>2,d=>1} 1b002a29 1b002a29 1b002a29 1b002a29 - {e=>1,c=>5,a=>-77,b=>3,d=>5} b3ff2b0d b3ff2b0d b3ff2b0d b3ff2b0d - {e=>2,c=>0,a=>-112,b=>4,d=>1} 90ff0411 90ff0411 90ff0411 90ff0411 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>3,c=>1,a=>61,b=>4,d=>2,f=>2} 3d000c1a02 3d000c1a0200 3d000c1a0200 3d000c1a0200 - {e=>1,c=>7,a=>-8,b=>0,d=>6,f=>0} f8ff380e00 f8ff380e0000 f8ff380e0000 f8ff380e0000 - {e=>2,c=>6,a=>-96,b=>0,d=>5,f=>7} a0ff301507 a0ff30150700 a0ff30150700 a0ff30150700 - {e=>3,c=>2,a=>122,b=>5,d=>0,f=>0} 7a00151800 7a0015180000 7a0015180000 7a0015180000 - {e=>3,c=>6,a=>-122,b=>0,d=>1,f=>2} 86ff301902 86ff30190200 86ff30190200 86ff30190200 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>1,c=>5,a=>-86,g=>7,b=>7,d=>7,f=>6} aaff2f0f3e aaff2f0f3e00 aaff2f0f3e00 aaff2f0f3e00 - {e=>5,c=>7,a=>78,g=>2,b=>1,d=>6,f=>1} 4e00392e11 4e00392e1100 4e00392e1100 4e00392e1100 - {e=>4,c=>0,a=>-57,g=>4,b=>2,d=>4,f=>1} c7ff022421 c7ff02242100 c7ff02242100 c7ff02242100 - {e=>6,c=>6,a=>36,g=>3,b=>1,d=>5,f=>3} 240031351b 240031351b00 240031351b00 240031351b00 - {e=>5,c=>6,a=>-105,g=>2,b=>7,d=>7,f=>0} 97ff372f10 97ff372f1000 97ff372f1000 97ff372f1000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>2,a=>103,d=>5,c=>5,h=>6,b=>3,g=>2,f=>1} 67002b151106 67002b151106 67002b151106 67002b151106 - {e=>1,a=>-88,d=>4,c=>6,h=>1,b=>5,g=>2,f=>3} a8ff350c1301 a8ff350c1301 a8ff350c1301 a8ff350c1301 - {e=>0,a=>-80,d=>3,c=>7,h=>5,b=>3,g=>5,f=>6} b0ff3b032e05 b0ff3b032e05 b0ff3b032e05 b0ff3b032e05 - {e=>5,a=>-89,d=>6,c=>6,h=>1,b=>0,g=>4,f=>1} a7ff302e2101 a7ff302e2101 a7ff302e2101 a7ff302e2101 - {e=>4,a=>-32,d=>5,c=>2,h=>0,b=>4,g=>7,f=>7} e0ff14253f00 e0ff14253f00 e0ff14253f00 e0ff14253f00 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>6,a=>-1,d=>6,c=>3,h=>1,b=>6,g=>2,f=>7,i=>5} ffff1e361729 ffff1e361729 ffff1e361729 ffff1e361729 - {e=>1,a=>21,d=>3,c=>7,h=>0,b=>3,g=>5,f=>0,i=>1} 15003b0b2808 15003b0b2808 15003b0b2808 15003b0b2808 - {e=>4,a=>124,d=>0,c=>3,h=>5,b=>6,g=>1,f=>0,i=>7} 7c001e20083d 7c001e20083d 7c001e20083d 7c001e20083d - {e=>6,a=>53,d=>6,c=>4,h=>3,b=>7,g=>3,f=>0,i=>0} 350027361803 350027361803 350027361803 350027361803 - {e=>5,a=>14,d=>0,c=>5,h=>0,b=>0,g=>0,f=>4,i=>1} 0e0028280408 0e0028280408 0e0028280408 0e0028280408 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>4,a=>-128,d=>5,j=>4,c=>0,h=>4,b=>2,g=>7,f=>5,i=>5} 80ff02253d2c04 80ff02253d2c0400 80ff02253d2c0400 80ff02253d2c0400 - {e=>5,a=>-33,d=>3,j=>4,c=>5,h=>7,b=>7,g=>1,f=>6,i=>5} dfff2f2b0e2f04 dfff2f2b0e2f0400 dfff2f2b0e2f0400 dfff2f2b0e2f0400 - {e=>3,a=>-96,d=>1,j=>1,c=>4,h=>2,b=>3,g=>7,f=>6,i=>6} a0ff23193e3201 a0ff23193e320100 a0ff23193e320100 a0ff23193e320100 - {e=>7,a=>-9,d=>6,j=>4,c=>3,h=>1,b=>3,g=>3,f=>1,i=>0} f7ff1b3e190104 f7ff1b3e19010400 f7ff1b3e19010400 f7ff1b3e19010400 - {e=>2,a=>63,d=>4,j=>2,c=>4,h=>0,b=>4,g=>3,f=>5,i=>0} 3f0024141d0002 3f0024141d000200 3f0024141d000200 3f0024141d000200 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>4,a=>57,d=>7,j=>7,c=>4,k=>0,h=>5,b=>3,g=>3,f=>4,i=>6} 390023271c3507 390023271c350700 390023271c350700 390023271c350700 - {e=>7,a=>-11,d=>1,j=>4,c=>0,k=>5,h=>1,b=>5,g=>5,f=>7,i=>5} f5ff05392f292c f5ff05392f292c00 f5ff05392f292c00 f5ff05392f292c00 - {e=>7,a=>-117,d=>2,j=>6,c=>7,k=>6,h=>1,b=>2,g=>0,f=>1,i=>1} 8bff3a3a010936 8bff3a3a01093600 8bff3a3a01093600 8bff3a3a01093600 - {e=>7,a=>-118,d=>6,j=>3,c=>7,k=>4,h=>2,b=>4,g=>3,f=>6,i=>0} 8aff3c3e1e0223 8aff3c3e1e022300 8aff3c3e1e022300 8aff3c3e1e022300 - {e=>4,a=>-15,d=>1,j=>1,c=>7,k=>6,h=>5,b=>4,g=>7,f=>3,i=>7} f1ff3c213b3d31 f1ff3c213b3d3100 f1ff3c213b3d3100 f1ff3c213b3d3100 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>5,a=>24,d=>4,j=>2,l=>6,c=>3,k=>2,h=>1,b=>5,g=>4,f=>5,i=>2} 18001d2c25111206 18001d2c25111206 18001d2c25111206 18001d2c25111206 - {e=>7,a=>-76,d=>2,j=>2,l=>5,c=>2,k=>2,h=>3,b=>5,g=>4,f=>7,i=>5} b4ff153a272b1205 b4ff153a272b1205 b4ff153a272b1205 b4ff153a272b1205 - {e=>4,a=>69,d=>4,j=>6,l=>1,c=>1,k=>0,h=>0,b=>6,g=>7,f=>1,i=>3} 45000e2439180601 45000e2439180601 45000e2439180601 45000e2439180601 - {e=>6,a=>-5,d=>4,j=>4,l=>7,c=>6,k=>6,h=>2,b=>3,g=>6,f=>5,i=>6} fbff333435323407 fbff333435323407 fbff333435323407 fbff333435323407 - {e=>1,a=>84,d=>1,j=>5,l=>6,c=>3,k=>4,h=>7,b=>2,g=>6,f=>4,i=>3} 54001a09341f2506 54001a09341f2506 54001a09341f2506 54001a09341f2506 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>0,a=>-34,m=>7,d=>7,j=>0,l=>2,c=>3,k=>5,h=>5,b=>1,g=>0,f=>6,i=>6} deff19070635283a deff19070635283a deff19070635283a deff19070635283a - {e=>1,a=>-67,m=>0,d=>2,j=>7,l=>0,c=>2,k=>4,h=>2,b=>7,g=>3,f=>7,i=>4} bdff170a1f222700 bdff170a1f222700 bdff170a1f222700 bdff170a1f222700 - {e=>5,a=>61,m=>7,d=>1,j=>3,l=>5,c=>6,k=>5,h=>3,b=>4,g=>7,f=>3,i=>7} 3d0034293b3b2b3d 3d0034293b3b2b3d 3d0034293b3b2b3d 3d0034293b3b2b3d - {e=>5,a=>96,m=>6,d=>5,j=>4,l=>5,c=>1,k=>3,h=>1,b=>6,g=>2,f=>2,i=>3} 60000e2d12191c35 60000e2d12191c35 60000e2d12191c35 60000e2d12191c35 - {e=>3,a=>-6,m=>6,d=>3,j=>6,l=>6,c=>5,k=>2,h=>5,b=>6,g=>3,f=>5,i=>0} faff2e1b1d051636 faff2e1b1d051636 faff2e1b1d051636 faff2e1b1d051636 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>7,n=>7,a=>-88,m=>4,d=>0,j=>4,l=>6,c=>3,k=>5,h=>2,b=>1,g=>6,f=>5,i=>7} a8ff1938353a2c2607 a8ff1938353a2c260700 a8ff1938353a2c260700 a8ff1938353a2c260700 - {e=>0,n=>1,a=>-51,m=>3,d=>3,j=>2,l=>4,c=>1,k=>1,h=>6,b=>6,g=>5,f=>7,i=>2} cdff0e032f160a1c01 cdff0e032f160a1c0100 cdff0e032f160a1c0100 cdff0e032f160a1c0100 - {e=>2,n=>6,a=>20,m=>5,d=>3,j=>4,l=>6,c=>1,k=>3,h=>6,b=>5,g=>4,f=>2,i=>5} 14000d13222e1c2e06 14000d13222e1c2e0600 14000d13222e1c2e0600 14000d13222e1c2e0600 - {e=>4,n=>1,a=>-110,m=>2,d=>6,j=>4,l=>5,c=>4,k=>5,h=>0,b=>1,g=>7,f=>4,i=>6} 92ff21263c302c1501 92ff21263c302c150100 92ff21263c302c150100 92ff21263c302c150100 - {e=>0,n=>0,a=>-45,m=>2,d=>5,j=>7,l=>4,c=>5,k=>6,h=>1,b=>2,g=>6,f=>4,i=>0} d3ff2a053401371400 d3ff2a05340137140000 d3ff2a05340137140000 d3ff2a05340137140000 = struct uch_wrap { short a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>0,n=>2,a=>-65,m=>5,d=>5,j=>4,l=>2,c=>5,k=>0,h=>7,b=>2,g=>6,f=>3,o=>-15,i=>2} bfff2a053317042a02f1ff bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff bfff2a053317042a0200f1ff - {e=>3,n=>6,a=>15,m=>2,d=>7,j=>7,l=>4,c=>5,k=>4,h=>2,b=>0,g=>3,f=>3,o=>30,i=>1} 0f00281f1b0a2714061e00 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 0f00281f1b0a271406001e00 - {e=>5,n=>7,a=>74,m=>6,d=>0,j=>7,l=>5,c=>3,k=>4,h=>4,b=>3,g=>6,f=>2,o=>69,i=>5} 4a001b28322c2735074500 4a001b28322c273507004500 4a001b28322c273507004500 4a001b28322c273507004500 - {e=>1,n=>2,a=>84,m=>2,d=>3,j=>5,l=>4,c=>3,k=>6,h=>6,b=>1,g=>6,f=>7,o=>98,i=>6} 5400190b37363514026200 5400190b3736351402006200 5400190b3736351402006200 5400190b3736351402006200 - {e=>3,n=>6,a=>57,m=>7,d=>6,j=>0,l=>4,c=>4,k=>1,h=>1,b=>2,g=>2,f=>7,o=>-43,i=>0} 3900221e1701083c06d5ff 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff 3900221e1701083c0600d5ff = struct uch_wrap { int a; unsigned char b:3; }; - {a=>-6,b=>4} faffffff04 faffffff0400 faffffff04000000 faffffff04000000 - {a=>48,b=>4} 3000000004 300000000400 3000000004000000 3000000004000000 - {a=>24,b=>4} 1800000004 180000000400 1800000004000000 1800000004000000 - {a=>-13,b=>5} f3ffffff05 f3ffffff0500 f3ffffff05000000 f3ffffff05000000 - {a=>-58,b=>1} c6ffffff01 c6ffffff0100 c6ffffff01000000 c6ffffff01000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>52,b=>2} 340000001a 340000001a00 340000001a000000 340000001a000000 - {c=>6,a=>-113,b=>2} 8fffffff32 8fffffff3200 8fffffff32000000 8fffffff32000000 - {c=>7,a=>-72,b=>6} b8ffffff3e b8ffffff3e00 b8ffffff3e000000 b8ffffff3e000000 - {c=>4,a=>93,b=>7} 5d00000027 5d0000002700 5d00000027000000 5d00000027000000 - {c=>5,a=>34,b=>5} 220000002d 220000002d00 220000002d000000 220000002d000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>4,a=>1,b=>6,d=>5} 010000002605 010000002605 0100000026050000 0100000026050000 - {c=>1,a=>35,b=>0,d=>6} 230000000806 230000000806 2300000008060000 2300000008060000 - {c=>3,a=>81,b=>1,d=>7} 510000001907 510000001907 5100000019070000 5100000019070000 - {c=>5,a=>19,b=>3,d=>2} 130000002b02 130000002b02 130000002b020000 130000002b020000 - {c=>7,a=>-108,b=>5,d=>3} 94ffffff3d03 94ffffff3d03 94ffffff3d030000 94ffffff3d030000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>0,c=>0,a=>58,b=>1,d=>6} 3a0000000106 3a0000000106 3a00000001060000 3a00000001060000 - {e=>4,c=>2,a=>67,b=>4,d=>2} 430000001422 430000001422 4300000014220000 4300000014220000 - {e=>0,c=>2,a=>20,b=>7,d=>4} 140000001704 140000001704 1400000017040000 1400000017040000 - {e=>7,c=>4,a=>-17,b=>5,d=>7} efffffff253f efffffff253f efffffff253f0000 efffffff253f0000 - {e=>7,c=>1,a=>-49,b=>4,d=>7} cfffffff0c3f cfffffff0c3f cfffffff0c3f0000 cfffffff0c3f0000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>7,c=>0,a=>-9,b=>1,d=>3,f=>6} f7ffffff013b06 f7ffffff013b0600 f7ffffff013b0600 f7ffffff013b0600 - {e=>2,c=>2,a=>72,b=>4,d=>6,f=>1} 48000000141601 4800000014160100 4800000014160100 4800000014160100 - {e=>7,c=>0,a=>-66,b=>1,d=>4,f=>5} beffffff013c05 beffffff013c0500 beffffff013c0500 beffffff013c0500 - {e=>6,c=>1,a=>121,b=>7,d=>2,f=>2} 790000000f3202 790000000f320200 790000000f320200 790000000f320200 - {e=>1,c=>6,a=>-56,b=>7,d=>4,f=>3} c8ffffff370c03 c8ffffff370c0300 c8ffffff370c0300 c8ffffff370c0300 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>6,c=>3,a=>76,g=>4,b=>6,d=>4,f=>4} 4c0000001e3424 4c0000001e342400 4c0000001e342400 4c0000001e342400 - {e=>0,c=>4,a=>-114,g=>7,b=>4,d=>6,f=>5} 8effffff24063d 8effffff24063d00 8effffff24063d00 8effffff24063d00 - {e=>4,c=>5,a=>8,g=>7,b=>4,d=>0,f=>4} 080000002c203c 080000002c203c00 080000002c203c00 080000002c203c00 - {e=>5,c=>3,a=>-73,g=>2,b=>6,d=>6,f=>4} b7ffffff1e2e14 b7ffffff1e2e1400 b7ffffff1e2e1400 b7ffffff1e2e1400 - {e=>7,c=>6,a=>69,g=>5,b=>2,d=>5,f=>2} 45000000323d2a 45000000323d2a00 45000000323d2a00 45000000323d2a00 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>0,a=>21,d=>5,c=>3,h=>0,b=>7,g=>4,f=>4} 150000001f052400 150000001f052400 150000001f052400 150000001f052400 - {e=>5,a=>124,d=>3,c=>5,h=>6,b=>1,g=>3,f=>6} 7c000000292b1e06 7c000000292b1e06 7c000000292b1e06 7c000000292b1e06 - {e=>6,a=>1,d=>4,c=>7,h=>1,b=>2,g=>4,f=>7} 010000003a342701 010000003a342701 010000003a342701 010000003a342701 - {e=>7,a=>36,d=>6,c=>0,h=>7,b=>1,g=>5,f=>2} 24000000013e2a07 24000000013e2a07 24000000013e2a07 24000000013e2a07 - {e=>1,a=>121,d=>4,c=>4,h=>0,b=>0,g=>6,f=>5} 79000000200c3500 79000000200c3500 79000000200c3500 79000000200c3500 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>-75,d=>3,c=>1,h=>2,b=>0,g=>4,f=>3,i=>4} b5ffffff08232322 b5ffffff08232322 b5ffffff08232322 b5ffffff08232322 - {e=>4,a=>-82,d=>3,c=>2,h=>4,b=>5,g=>0,f=>2,i=>2} aeffffff15230214 aeffffff15230214 aeffffff15230214 aeffffff15230214 - {e=>0,a=>46,d=>7,c=>3,h=>6,b=>6,g=>7,f=>6,i=>5} 2e0000001e073e2e 2e0000001e073e2e 2e0000001e073e2e 2e0000001e073e2e - {e=>0,a=>4,d=>0,c=>6,h=>3,b=>5,g=>3,f=>0,i=>3} 040000003500181b 040000003500181b 040000003500181b 040000003500181b - {e=>0,a=>-54,d=>1,c=>7,h=>7,b=>1,g=>7,f=>6,i=>6} caffffff39013e37 caffffff39013e37 caffffff39013e37 caffffff39013e37 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>4,a=>101,d=>4,j=>0,c=>1,h=>6,b=>4,g=>7,f=>6,i=>5} 650000000c243e2e00 650000000c243e2e0000 650000000c243e2e00000000 650000000c243e2e00000000 - {e=>0,a=>33,d=>6,j=>1,c=>0,h=>2,b=>3,g=>0,f=>1,i=>4} 210000000306012201 21000000030601220100 210000000306012201000000 210000000306012201000000 - {e=>0,a=>31,d=>4,j=>4,c=>3,h=>2,b=>7,g=>3,f=>7,i=>4} 1f0000001f041f2204 1f0000001f041f220400 1f0000001f041f2204000000 1f0000001f041f2204000000 - {e=>0,a=>-102,d=>5,j=>2,c=>1,h=>3,b=>1,g=>4,f=>5,i=>4} 9affffff0905252302 9affffff090525230200 9affffff0905252302000000 9affffff0905252302000000 - {e=>3,a=>117,d=>6,j=>5,c=>1,h=>3,b=>4,g=>4,f=>7,i=>4} 750000000c1e272305 750000000c1e27230500 750000000c1e272305000000 750000000c1e272305000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>7,a=>7,d=>0,j=>2,c=>5,k=>6,h=>2,b=>2,g=>6,f=>1,i=>1} 070000002a38310a32 070000002a38310a3200 070000002a38310a32000000 070000002a38310a32000000 - {e=>0,a=>73,d=>0,j=>0,c=>6,k=>0,h=>7,b=>2,g=>4,f=>2,i=>6} 490000003200223700 49000000320022370000 490000003200223700000000 490000003200223700000000 - {e=>5,a=>-16,d=>1,j=>5,c=>2,k=>0,h=>5,b=>3,g=>5,f=>2,i=>0} f0ffffff13292a0505 f0ffffff13292a050500 f0ffffff13292a0505000000 f0ffffff13292a0505000000 - {e=>2,a=>85,d=>1,j=>7,c=>7,k=>5,h=>0,b=>2,g=>7,f=>4,i=>6} 550000003a113c302f 550000003a113c302f00 550000003a113c302f000000 550000003a113c302f000000 - {e=>1,a=>-111,d=>4,j=>1,c=>4,k=>4,h=>0,b=>1,g=>3,f=>1,i=>4} 91ffffff210c192021 91ffffff210c19202100 91ffffff210c192021000000 91ffffff210c192021000000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>4,a=>-94,d=>1,j=>5,l=>1,c=>6,k=>5,h=>7,b=>6,g=>1,f=>1,i=>7} a2ffffff3621093f2d01 a2ffffff3621093f2d01 a2ffffff3621093f2d010000 a2ffffff3621093f2d010000 - {e=>2,a=>-111,d=>5,j=>6,l=>5,c=>3,k=>0,h=>6,b=>2,g=>0,f=>1,i=>6} 91ffffff1a1501360605 91ffffff1a1501360605 91ffffff1a15013606050000 91ffffff1a15013606050000 - {e=>6,a=>-48,d=>0,j=>4,l=>6,c=>7,k=>6,h=>2,b=>0,g=>6,f=>2,i=>3} d0ffffff3830321a3406 d0ffffff3830321a3406 d0ffffff3830321a34060000 d0ffffff3830321a34060000 - {e=>4,a=>25,d=>5,j=>1,l=>4,c=>1,k=>1,h=>4,b=>3,g=>6,f=>7,i=>7} 190000000b25373c0904 190000000b25373c0904 190000000b25373c09040000 190000000b25373c09040000 - {e=>5,a=>-90,d=>1,j=>4,l=>1,c=>4,k=>6,h=>6,b=>6,g=>4,f=>7,i=>6} a6ffffff262927363401 a6ffffff262927363401 a6ffffff2629273634010000 a6ffffff2629273634010000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>0,a=>27,m=>0,d=>1,j=>1,l=>0,c=>1,k=>4,h=>7,b=>3,g=>3,f=>1,i=>7} 1b0000000b01193f2100 1b0000000b01193f2100 1b0000000b01193f21000000 1b0000000b01193f21000000 - {e=>4,a=>-76,m=>6,d=>7,j=>1,l=>5,c=>4,k=>7,h=>1,b=>3,g=>1,f=>4,i=>1} b4ffffff23270c093935 b4ffffff23270c093935 b4ffffff23270c0939350000 b4ffffff23270c0939350000 - {e=>2,a=>-46,m=>4,d=>7,j=>1,l=>1,c=>3,k=>7,h=>2,b=>4,g=>5,f=>0,i=>2} d2ffffff1c1728123921 d2ffffff1c1728123921 d2ffffff1c17281239210000 d2ffffff1c17281239210000 - {e=>2,a=>81,m=>0,d=>2,j=>0,l=>7,c=>1,k=>0,h=>1,b=>4,g=>7,f=>2,i=>6} 510000000c123a310007 510000000c123a310007 510000000c123a3100070000 510000000c123a3100070000 - {e=>4,a=>-102,m=>6,d=>6,j=>4,l=>0,c=>7,k=>3,h=>1,b=>2,g=>3,f=>4,i=>6} 9affffff3a261c311c30 9affffff3a261c311c30 9affffff3a261c311c300000 9affffff3a261c311c300000 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>0,n=>2,a=>71,m=>2,d=>1,j=>7,l=>0,c=>5,k=>5,h=>3,b=>5,g=>5,f=>0,i=>7} 470000002d01283b2f1002 470000002d01283b2f100200 470000002d01283b2f100200 470000002d01283b2f100200 - {e=>1,n=>0,a=>26,m=>3,d=>0,j=>5,l=>7,c=>2,k=>0,h=>0,b=>7,g=>1,f=>6,i=>4} 1a00000017080e20051f00 1a00000017080e20051f0000 1a00000017080e20051f0000 1a00000017080e20051f0000 - {e=>2,n=>4,a=>60,m=>5,d=>5,j=>6,l=>6,c=>6,k=>2,h=>3,b=>0,g=>2,f=>4,i=>3} 3c0000003015141b162e04 3c0000003015141b162e0400 3c0000003015141b162e0400 3c0000003015141b162e0400 - {e=>7,n=>3,a=>95,m=>4,d=>7,j=>4,l=>5,c=>2,k=>6,h=>4,b=>0,g=>3,f=>0,i=>3} 5f000000103f181c342503 5f000000103f181c34250300 5f000000103f181c34250300 5f000000103f181c34250300 - {e=>6,n=>2,a=>-72,m=>1,d=>7,j=>3,l=>3,c=>4,k=>4,h=>2,b=>2,g=>7,f=>7,i=>3} b8ffffff22373f1a230b02 b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 b8ffffff22373f1a230b0200 = struct uch_wrap { int a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>3,n=>5,a=>-18,m=>0,d=>5,j=>5,l=>2,c=>0,k=>7,h=>6,b=>1,g=>3,f=>2,o=>-124,i=>5} eeffffff011d1a2e3d020584ff eeffffff011d1a2e3d02050084ff eeffffff011d1a2e3d02050084ff0000 eeffffff011d1a2e3d02050084ff0000 - {e=>7,n=>6,a=>-18,m=>7,d=>6,j=>5,l=>7,c=>5,k=>6,h=>4,b=>5,g=>7,f=>5,o=>-74,i=>7} eeffffff2d3e3d3c353f06b6ff eeffffff2d3e3d3c353f0600b6ff eeffffff2d3e3d3c353f0600b6ff0000 eeffffff2d3e3d3c353f0600b6ff0000 - {e=>1,n=>5,a=>121,m=>1,d=>3,j=>4,l=>5,c=>3,k=>7,h=>1,b=>0,g=>5,f=>1,o=>-94,i=>1} 79000000180b29093c0d05a2ff 79000000180b29093c0d0500a2ff 79000000180b29093c0d0500a2ff0000 79000000180b29093c0d0500a2ff0000 - {e=>2,n=>1,a=>-41,m=>4,d=>5,j=>7,l=>2,c=>6,k=>0,h=>4,b=>3,g=>7,f=>6,o=>-66,i=>7} d7ffffff33153e3c072201beff d7ffffff33153e3c07220100beff d7ffffff33153e3c07220100beff0000 d7ffffff33153e3c07220100beff0000 - {e=>7,n=>2,a=>39,m=>7,d=>4,j=>7,l=>6,c=>7,k=>2,h=>0,b=>7,g=>1,f=>2,o=>-125,i=>1} 270000003f3c0a08173e0283ff 270000003f3c0a08173e020083ff 270000003f3c0a08173e020083ff0000 270000003f3c0a08173e020083ff0000 = struct uch_wrap { long a; unsigned char b:3; }; - {a=>-40,b=>5} d8ffffff05 d8ffffff0500 d8ffffff05000000 d8ffffff05000000 - {a=>-42,b=>6} d6ffffff06 d6ffffff0600 d6ffffff06000000 d6ffffff06000000 - {a=>-83,b=>0} adffffff00 adffffff0000 adffffff00000000 adffffff00000000 - {a=>6,b=>4} 0600000004 060000000400 0600000004000000 0600000004000000 - {a=>-27,b=>4} e5ffffff04 e5ffffff0400 e5ffffff04000000 e5ffffff04000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>56,b=>5} 3800000025 380000002500 3800000025000000 3800000025000000 - {c=>4,a=>-12,b=>5} f4ffffff25 f4ffffff2500 f4ffffff25000000 f4ffffff25000000 - {c=>0,a=>-103,b=>3} 99ffffff03 99ffffff0300 99ffffff03000000 99ffffff03000000 - {c=>3,a=>104,b=>6} 680000001e 680000001e00 680000001e000000 680000001e000000 - {c=>6,a=>-64,b=>6} c0ffffff36 c0ffffff3600 c0ffffff36000000 c0ffffff36000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; }; - {c=>6,a=>-23,b=>3,d=>2} e9ffffff3302 e9ffffff3302 e9ffffff33020000 e9ffffff33020000 - {c=>7,a=>-55,b=>6,d=>0} c9ffffff3e00 c9ffffff3e00 c9ffffff3e000000 c9ffffff3e000000 - {c=>0,a=>84,b=>5,d=>3} 540000000503 540000000503 5400000005030000 5400000005030000 - {c=>7,a=>-40,b=>0,d=>5} d8ffffff3805 d8ffffff3805 d8ffffff38050000 d8ffffff38050000 - {c=>6,a=>-97,b=>1,d=>1} 9fffffff3101 9fffffff3101 9fffffff31010000 9fffffff31010000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; }; - {e=>5,c=>5,a=>-118,b=>4,d=>3} 8affffff2c2b 8affffff2c2b 8affffff2c2b0000 8affffff2c2b0000 - {e=>7,c=>6,a=>-96,b=>3,d=>4} a0ffffff333c a0ffffff333c a0ffffff333c0000 a0ffffff333c0000 - {e=>0,c=>5,a=>93,b=>2,d=>3} 5d0000002a03 5d0000002a03 5d0000002a030000 5d0000002a030000 - {e=>4,c=>6,a=>60,b=>0,d=>0} 3c0000003020 3c0000003020 3c00000030200000 3c00000030200000 - {e=>7,c=>0,a=>-10,b=>2,d=>6} f6ffffff023e f6ffffff023e f6ffffff023e0000 f6ffffff023e0000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; }; - {e=>0,c=>2,a=>-92,b=>1,d=>1,f=>0} a4ffffff110100 a4ffffff11010000 a4ffffff11010000 a4ffffff11010000 - {e=>3,c=>4,a=>-86,b=>4,d=>0,f=>7} aaffffff241807 aaffffff24180700 aaffffff24180700 aaffffff24180700 - {e=>0,c=>5,a=>117,b=>0,d=>1,f=>3} 75000000280103 7500000028010300 7500000028010300 7500000028010300 - {e=>4,c=>6,a=>103,b=>2,d=>4,f=>0} 67000000322400 6700000032240000 6700000032240000 6700000032240000 - {e=>2,c=>4,a=>42,b=>3,d=>2,f=>5} 2a000000231205 2a00000023120500 2a00000023120500 2a00000023120500 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; }; - {e=>2,c=>0,a=>-3,g=>2,b=>5,d=>4,f=>5} fdffffff051415 fdffffff05141500 fdffffff05141500 fdffffff05141500 - {e=>5,c=>6,a=>-39,g=>0,b=>0,d=>0,f=>1} d9ffffff302801 d9ffffff30280100 d9ffffff30280100 d9ffffff30280100 - {e=>4,c=>0,a=>79,g=>3,b=>3,d=>7,f=>1} 4f000000032719 4f00000003271900 4f00000003271900 4f00000003271900 - {e=>1,c=>2,a=>-123,g=>2,b=>1,d=>0,f=>4} 85ffffff110814 85ffffff11081400 85ffffff11081400 85ffffff11081400 - {e=>4,c=>7,a=>100,g=>2,b=>3,d=>3,f=>6} 640000003b2316 640000003b231600 640000003b231600 640000003b231600 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; }; - {e=>6,a=>-8,d=>6,c=>1,h=>6,b=>3,g=>1,f=>2} f8ffffff0b360a06 f8ffffff0b360a06 f8ffffff0b360a06 f8ffffff0b360a06 - {e=>4,a=>-75,d=>7,c=>3,h=>7,b=>3,g=>5,f=>3} b5ffffff1b272b07 b5ffffff1b272b07 b5ffffff1b272b07 b5ffffff1b272b07 - {e=>7,a=>-105,d=>6,c=>4,h=>5,b=>3,g=>2,f=>0} 97ffffff233e1005 97ffffff233e1005 97ffffff233e1005 97ffffff233e1005 - {e=>4,a=>115,d=>1,c=>7,h=>4,b=>6,g=>0,f=>0} 730000003e210004 730000003e210004 730000003e210004 730000003e210004 - {e=>4,a=>-9,d=>7,c=>1,h=>7,b=>7,g=>5,f=>3} f7ffffff0f272b07 f7ffffff0f272b07 f7ffffff0f272b07 f7ffffff0f272b07 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; }; - {e=>4,a=>-19,d=>4,c=>4,h=>6,b=>5,g=>6,f=>5,i=>7} edffffff2524353e edffffff2524353e edffffff2524353e edffffff2524353e - {e=>6,a=>-94,d=>4,c=>3,h=>2,b=>4,g=>7,f=>3,i=>1} a2ffffff1c343b0a a2ffffff1c343b0a a2ffffff1c343b0a a2ffffff1c343b0a - {e=>5,a=>117,d=>2,c=>3,h=>2,b=>6,g=>0,f=>7,i=>3} 750000001e2a071a 750000001e2a071a 750000001e2a071a 750000001e2a071a - {e=>7,a=>-27,d=>5,c=>4,h=>4,b=>1,g=>0,f=>5,i=>6} e5ffffff213d0534 e5ffffff213d0534 e5ffffff213d0534 e5ffffff213d0534 - {e=>4,a=>-18,d=>4,c=>3,h=>2,b=>0,g=>4,f=>1,i=>0} eeffffff18242102 eeffffff18242102 eeffffff18242102 eeffffff18242102 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; }; - {e=>6,a=>-43,d=>7,j=>2,c=>3,h=>5,b=>4,g=>2,f=>2,i=>3} d5ffffff1c37121d02 d5ffffff1c37121d0200 d5ffffff1c37121d02000000 d5ffffff1c37121d02000000 - {e=>1,a=>41,d=>0,j=>6,c=>4,h=>7,b=>5,g=>5,f=>6,i=>0} 2900000025082e0706 2900000025082e070600 2900000025082e0706000000 2900000025082e0706000000 - {e=>0,a=>-53,d=>2,j=>3,c=>6,h=>4,b=>2,g=>2,f=>1,i=>3} cbffffff3202111c03 cbffffff3202111c0300 cbffffff3202111c03000000 cbffffff3202111c03000000 - {e=>7,a=>6,d=>6,j=>3,c=>7,h=>3,b=>3,g=>4,f=>6,i=>0} 060000003b3e260303 060000003b3e26030300 060000003b3e260303000000 060000003b3e260303000000 - {e=>7,a=>8,d=>4,j=>4,c=>4,h=>1,b=>2,g=>7,f=>1,i=>5} 08000000223c392904 08000000223c39290400 08000000223c392904000000 08000000223c392904000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; }; - {e=>2,a=>-120,d=>3,j=>3,c=>1,k=>7,h=>5,b=>6,g=>1,f=>2,i=>6} 88ffffff0e130a353b 88ffffff0e130a353b00 88ffffff0e130a353b000000 88ffffff0e130a353b000000 - {e=>0,a=>116,d=>7,j=>1,c=>4,k=>0,h=>3,b=>1,g=>4,f=>3,i=>1} 740000002107230b01 740000002107230b0100 740000002107230b01000000 740000002107230b01000000 - {e=>4,a=>108,d=>2,j=>7,c=>4,k=>6,h=>2,b=>1,g=>0,f=>5,i=>0} 6c0000002122050237 6c000000212205023700 6c0000002122050237000000 6c0000002122050237000000 - {e=>3,a=>-126,d=>7,j=>0,c=>5,k=>6,h=>1,b=>0,g=>1,f=>7,i=>3} 82ffffff281f0f1930 82ffffff281f0f193000 82ffffff281f0f1930000000 82ffffff281f0f1930000000 - {e=>2,a=>-78,d=>3,j=>3,c=>7,k=>4,h=>1,b=>7,g=>2,f=>1,i=>2} b2ffffff3f13111123 b2ffffff3f1311112300 b2ffffff3f13111123000000 b2ffffff3f13111123000000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; }; - {e=>7,a=>14,d=>4,j=>1,l=>0,c=>6,k=>4,h=>3,b=>1,g=>2,f=>7,i=>1} 0e000000313c170b2100 0e000000313c170b2100 0e000000313c170b21000000 0e000000313c170b21000000 - {e=>0,a=>121,d=>5,j=>2,l=>2,c=>3,k=>1,h=>2,b=>0,g=>4,f=>2,i=>0} 79000000180522020a02 79000000180522020a02 79000000180522020a020000 79000000180522020a020000 - {e=>5,a=>-2,d=>5,j=>7,l=>4,c=>3,k=>0,h=>2,b=>2,g=>6,f=>3,i=>0} feffffff1a2d33020704 feffffff1a2d33020704 feffffff1a2d330207040000 feffffff1a2d330207040000 - {e=>4,a=>8,d=>2,j=>4,l=>3,c=>7,k=>2,h=>6,b=>4,g=>0,f=>5,i=>2} 080000003c2205161403 080000003c2205161403 080000003c22051614030000 080000003c22051614030000 - {e=>1,a=>-123,d=>4,j=>6,l=>2,c=>4,k=>3,h=>5,b=>7,g=>1,f=>5,i=>6} 85ffffff270c0d351e02 85ffffff270c0d351e02 85ffffff270c0d351e020000 85ffffff270c0d351e020000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; }; - {e=>5,a=>-111,m=>3,d=>7,j=>6,l=>5,c=>6,k=>6,h=>6,b=>0,g=>4,f=>1,i=>2} 91ffffff302f2116361d 91ffffff302f2116361d 91ffffff302f2116361d0000 91ffffff302f2116361d0000 - {e=>4,a=>-44,m=>0,d=>4,j=>5,l=>1,c=>5,k=>0,h=>2,b=>2,g=>4,f=>7,i=>6} d4ffffff2a2427320501 d4ffffff2a2427320501 d4ffffff2a24273205010000 d4ffffff2a24273205010000 - {e=>7,a=>-24,m=>0,d=>0,j=>3,l=>1,c=>5,k=>5,h=>1,b=>2,g=>3,f=>5,i=>4} e8ffffff2a381d212b01 e8ffffff2a381d212b01 e8ffffff2a381d212b010000 e8ffffff2a381d212b010000 - {e=>4,a=>96,m=>2,d=>0,j=>1,l=>2,c=>2,k=>4,h=>4,b=>4,g=>3,f=>7,i=>2} 6000000014201f142112 6000000014201f142112 6000000014201f1421120000 6000000014201f1421120000 - {e=>2,a=>-3,m=>4,d=>0,j=>4,l=>5,c=>7,k=>3,h=>7,b=>5,g=>0,f=>1,i=>6} fdffffff3d1001371c25 fdffffff3d1001371c25 fdffffff3d1001371c250000 fdffffff3d1001371c250000 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; }; - {e=>5,n=>3,a=>-107,m=>1,d=>3,j=>7,l=>5,c=>0,k=>2,h=>0,b=>6,g=>2,f=>2,i=>7} 95ffffff062b1238170d03 95ffffff062b1238170d0300 95ffffff062b1238170d0300 95ffffff062b1238170d0300 - {e=>7,n=>1,a=>9,m=>6,d=>1,j=>2,l=>4,c=>7,k=>6,h=>7,b=>5,g=>4,f=>4,i=>6} 090000003d392437323401 090000003d39243732340100 090000003d39243732340100 090000003d39243732340100 - {e=>2,n=>1,a=>-50,m=>7,d=>3,j=>1,l=>6,c=>0,k=>2,h=>7,b=>2,g=>1,f=>5,i=>6} ceffffff02130d37113e01 ceffffff02130d37113e0100 ceffffff02130d37113e0100 ceffffff02130d37113e0100 - {e=>7,n=>4,a=>123,m=>1,d=>1,j=>2,l=>4,c=>4,k=>7,h=>0,b=>4,g=>6,f=>0,i=>6} 7b000000243930303a0c04 7b000000243930303a0c0400 7b000000243930303a0c0400 7b000000243930303a0c0400 - {e=>2,n=>4,a=>-2,m=>5,d=>3,j=>4,l=>4,c=>3,k=>2,h=>7,b=>4,g=>7,f=>3,i=>4} feffffff1c133b27142c04 feffffff1c133b27142c0400 feffffff1c133b27142c0400 feffffff1c133b27142c0400 = struct uch_wrap { long a; unsigned char b:3; unsigned char c:3; unsigned char d:3; unsigned char e:3; unsigned char f:3; unsigned char g:3; unsigned char h:3; unsigned char i:3; unsigned char j:3; unsigned char k:3; unsigned char l:3; unsigned char m:3; unsigned char n:3; short o; }; - {e=>2,n=>2,a=>66,m=>1,d=>2,j=>2,l=>3,c=>0,k=>3,h=>7,b=>2,g=>5,f=>1,o=>-57,i=>2} 42000000021229171a0b02c7ff 42000000021229171a0b0200c7ff 42000000021229171a0b0200c7ff0000 42000000021229171a0b0200c7ff0000 - {e=>5,n=>3,a=>-74,m=>0,d=>7,j=>6,l=>1,c=>4,k=>7,h=>6,b=>7,g=>3,f=>5,o=>39,i=>2} b6ffffff272f1d163e01032700 b6ffffff272f1d163e0103002700 b6ffffff272f1d163e01030027000000 b6ffffff272f1d163e01030027000000 - {e=>0,n=>4,a=>-119,m=>6,d=>5,j=>3,l=>4,c=>5,k=>2,h=>2,b=>3,g=>4,f=>1,o=>-9,i=>4} 89ffffff2b052122133404f7ff 89ffffff2b05212213340400f7ff 89ffffff2b05212213340400f7ff0000 89ffffff2b05212213340400f7ff0000 - {e=>3,n=>6,a=>-85,m=>7,d=>1,j=>6,l=>3,c=>7,k=>4,h=>4,b=>2,g=>5,f=>0,o=>120,i=>0} abffffff3a192804263b067800 abffffff3a192804263b06007800 abffffff3a192804263b060078000000 abffffff3a192804263b060078000000 - {e=>1,n=>6,a=>5,m=>5,d=>5,j=>2,l=>1,c=>4,k=>2,h=>0,b=>7,g=>0,f=>2,o=>-21,i=>6} 05000000270d0230122906ebff 05000000270d023012290600ebff 05000000270d023012290600ebff0000 05000000270d023012290600ebff0000 = struct int_wrap { int a:3; }; - {a=>3} 03000000 03000000 03000000 03000000 - {a=>-2} 06000000 06000000 06000000 06000000 - {a=>-2} 06000000 06000000 06000000 06000000 - {a=>2} 02000000 02000000 02000000 02000000 - {a=>1} 01000000 01000000 01000000 01000000 = struct int_wrap { int a:3; int b:3; }; - {a=>-4,b=>-1} 3c000000 3c000000 3c000000 3c000000 - {a=>-1,b=>-1} 3f000000 3f000000 3f000000 3f000000 - {a=>2,b=>3} 1a000000 1a000000 1a000000 1a000000 - {a=>-2,b=>-4} 26000000 26000000 26000000 26000000 - {a=>-2,b=>1} 0e000000 0e000000 0e000000 0e000000 = struct int_wrap { int a:3; int b:3; int c:3; }; - {c=>-2,a=>-3,b=>2} 95010000 95010000 95010000 95010000 - {c=>-3,a=>-4,b=>3} 5c010000 5c010000 5c010000 5c010000 - {c=>2,a=>1,b=>3} 99000000 99000000 99000000 99000000 - {c=>-4,a=>-4,b=>-1} 3c010000 3c010000 3c010000 3c010000 - {c=>-1,a=>-3,b=>-4} e5010000 e5010000 e5010000 e5010000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; }; - {c=>-1,a=>0,b=>-1,d=>0} f8010000 f8010000 f8010000 f8010000 - {c=>-2,a=>-2,b=>1,d=>2} 8e050000 8e050000 8e050000 8e050000 - {c=>-2,a=>0,b=>-4,d=>2} a0050000 a0050000 a0050000 a0050000 - {c=>-3,a=>1,b=>-4,d=>3} 61070000 61070000 61070000 61070000 - {c=>1,a=>-2,b=>2,d=>0} 56000000 56000000 56000000 56000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; }; - {e=>-3,c=>-3,a=>1,b=>-4,d=>-4} 61590000 61590000 61590000 61590000 - {e=>-3,c=>2,a=>0,b=>1,d=>0} 88500000 88500000 88500000 88500000 - {e=>-3,c=>3,a=>2,b=>-1,d=>0} fa500000 fa500000 fa500000 fa500000 - {e=>1,c=>-2,a=>-2,b=>-2,d=>3} b6170000 b6170000 b6170000 b6170000 - {e=>3,c=>1,a=>-1,b=>2,d=>-2} 573c0000 573c0000 573c0000 573c0000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-1,c=>-2,a=>-2,b=>2,d=>1,f=>3} 96f30100 96f30100 96f30100 96f30100 - {e=>-3,c=>-4,a=>3,b=>2,d=>1,f=>-3} 13d30200 13d30200 13d30200 13d30200 - {e=>-4,c=>0,a=>-1,b=>-4,d=>-1,f=>-2} 274e0300 274e0300 274e0300 274e0300 - {e=>-1,c=>-4,a=>-1,b=>1,d=>0,f=>-3} 0ff10200 0ff10200 0ff10200 0ff10200 - {e=>-4,c=>-2,a=>1,b=>3,d=>2,f=>-3} 99c50200 99c50200 99c50200 99c50200 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-4,c=>1,a=>-4,g=>0,b=>-2,d=>0,f=>-3} 74c00200 74c00200 74c00200 74c00200 - {e=>-2,c=>0,a=>-4,g=>3,b=>-4,d=>0,f=>-3} 24e00e00 24e00e00 24e00e00 24e00e00 - {e=>0,c=>1,a=>3,g=>2,b=>-3,d=>0,f=>0} 6b000800 6b000800 6b000800 6b000800 - {e=>-4,c=>-2,a=>-1,g=>3,b=>1,d=>1,f=>0} 8f430c00 8f430c00 8f430c00 8f430c00 - {e=>2,c=>-2,a=>-3,g=>0,b=>-3,d=>1,f=>-2} ad230300 ad230300 ad230300 ad230300 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>-2,a=>3,d=>-1,c=>-4,h=>-2,b=>-1,g=>0,f=>-4} 3b6fc200 3b6fc200 3b6fc200 3b6fc200 - {e=>3,a=>-4,d=>1,c=>1,h=>0,b=>2,g=>-3,f=>2} 54321500 54321500 54321500 54321500 - {e=>2,a=>-2,d=>2,c=>3,h=>-3,b=>3,g=>3,f=>-4} de24ae00 de24ae00 de24ae00 de24ae00 - {e=>2,a=>-1,d=>-1,c=>1,h=>-3,b=>-4,g=>2,f=>-4} 672eaa00 672eaa00 672eaa00 672eaa00 - {e=>0,a=>0,d=>0,c=>-4,h=>2,b=>3,g=>3,f=>0} 18014c00 18014c00 18014c00 18014c00 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>-4,a=>2,d=>-2,c=>-2,h=>3,b=>-3,g=>-2,f=>-3,i=>0} aacd7a00 aacd7a00 aacd7a00 aacd7a00 - {e=>-4,a=>-1,d=>2,c=>3,h=>1,b=>-1,g=>0,f=>-1,i=>0} ffc42300 ffc42300 ffc42300 ffc42300 - {e=>2,a=>0,d=>-1,c=>2,h=>2,b=>1,g=>3,f=>-1,i=>0} 88ae4f00 88ae4f00 88ae4f00 88ae4f00 - {e=>-3,a=>-4,d=>2,c=>-1,h=>-3,b=>2,g=>1,f=>-3,i=>-3} d4d5a605 d4d5a605 d4d5a605 d4d5a605 - {e=>1,a=>-1,d=>-1,c=>-1,h=>0,b=>-1,g=>-3,f=>-3,i=>2} ff9f1602 ff9f1602 ff9f1602 ff9f1602 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-3,a=>0,d=>-3,j=>-4,c=>3,h=>-1,b=>-3,g=>1,f=>1,i=>-4} e8dae424 e8dae424 e8dae424 e8dae424 - {e=>1,a=>3,d=>-3,j=>2,c=>-3,h=>3,b=>-1,g=>1,f=>-1,i=>-4} 7b9b6714 7b9b6714 7b9b6714 7b9b6714 - {e=>-3,a=>-3,d=>1,j=>-4,c=>-4,h=>3,b=>-1,g=>-1,f=>-2,i=>0} 3d537f20 3d537f20 3d537f20 3d537f20 - {e=>2,a=>0,d=>-4,j=>1,c=>3,h=>1,b=>-2,g=>1,f=>-2,i=>2} f028270a f028270a f028270a f028270a - {e=>-2,a=>1,d=>-1,j=>3,c=>-4,h=>2,b=>1,g=>0,f=>2,i=>3} 096f411b 096f411b 096f411b 096f411b = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-4,a=>2,d=>-4,j=>2,c=>-3,k=>-1,h=>-1,b=>2,g=>-3,f=>-3,i=>-4} 52c9f61407000000 52c9f61407000000 52c9f61407000000 52c9f61407000000 - {e=>3,a=>2,d=>-3,j=>-3,c=>-1,k=>-3,h=>-3,b=>0,g=>-4,f=>-3,i=>0} c2bbb22805000000 c2bbb22805000000 c2bbb22805000000 c2bbb22805000000 - {e=>-2,a=>1,d=>3,j=>-4,c=>-1,k=>3,h=>3,b=>1,g=>1,f=>2,i=>-3} c967652503000000 c967652503000000 c967652503000000 c967652503000000 - {e=>2,a=>3,d=>-4,j=>-4,c=>0,k=>-4,h=>-4,b=>3,g=>3,f=>-3,i=>-2} 1ba88e2604000000 1ba88e2604000000 1ba88e2604000000 1ba88e2604000000 - {e=>-1,a=>0,d=>-1,j=>-3,c=>-1,k=>2,h=>2,b=>-4,g=>-4,f=>-4,i=>-1} e07f522f02000000 e07f522f02000000 e07f522f02000000 e07f522f02000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>3,d=>-2,j=>-3,l=>0,c=>-3,k=>3,h=>-3,b=>-1,g=>1,f=>-3,i=>1} 7bdda62903000000 7bdda62903000000 7bdda62903000000 7bdda62903000000 - {e=>-2,a=>-1,d=>1,j=>3,l=>-3,c=>-2,k=>-1,h=>1,b=>3,g=>2,f=>-4,i=>2} 9f632a1a2f000000 9f632a1a2f000000 9f632a1a2f000000 9f632a1a2f000000 - {e=>-3,a=>3,d=>3,j=>3,l=>3,c=>2,k=>2,h=>-2,b=>0,g=>1,f=>-3,i=>-1} 83d6c61f1a000000 83d6c61f1a000000 83d6c61f1a000000 83d6c61f1a000000 - {e=>1,a=>2,d=>-3,j=>-4,l=>-4,c=>-4,k=>-3,h=>0,b=>-4,g=>1,f=>2,i=>3} 221b052325000000 221b052325000000 221b052325000000 221b052325000000 - {e=>0,a=>-4,d=>3,j=>-1,l=>0,c=>-1,k=>-3,h=>-2,b=>-3,g=>0,f=>-3,i=>-1} ec87c23f05000000 ec87c23f05000000 ec87c23f05000000 ec87c23f05000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>2,a=>3,m=>-2,d=>0,j=>-1,l=>0,c=>-3,k=>-4,h=>0,b=>1,g=>1,f=>0,i=>-1} 4b21043f84010000 4b21043f84010000 4b21043f84010000 4b21043f84010000 - {e=>1,a=>-1,m=>0,d=>3,j=>2,l=>-2,c=>1,k=>1,h=>-3,b=>0,g=>3,f=>0,i=>-1} 4716ac1731000000 4716ac1731000000 4716ac1731000000 4716ac1731000000 - {e=>3,a=>0,m=>-3,d=>2,j=>-4,l=>-3,c=>-4,k=>-1,h=>2,b=>2,g=>2,f=>-3,i=>-2} 10b54a266f010000 10b54a266f010000 10b54a266f010000 10b54a266f010000 - {e=>3,a=>1,m=>0,d=>3,j=>0,l=>3,c=>-4,k=>-1,h=>-3,b=>-3,g=>-3,f=>1,i=>1} 29b7b4011f000000 29b7b4011f000000 29b7b4011f000000 29b7b4011f000000 - {e=>-4,a=>-3,m=>1,d=>1,j=>-4,l=>0,c=>0,k=>0,h=>-1,b=>3,g=>1,f=>2,i=>3} 1d42e52340000000 1d42e52340000000 1d42e52340000000 1d42e52340000000 = struct int_wrap { int a:3; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n; }; - {e=>-4,n=>-50,a=>0,m=>-1,d=>-4,j=>-4,l=>3,c=>-4,k=>2,h=>2,b=>0,g=>1,f=>-1,i=>-3} 00c94725da010000ceffffff 00c94725da010000ceffffff 00c94725da010000ceffffff 00c94725da010000ceffffff - {e=>2,n=>59,a=>1,m=>2,d=>-1,j=>2,l=>0,c=>-3,k=>0,h=>-2,b=>-3,g=>-3,f=>0,i=>0} 692fd410800000003b000000 692fd410800000003b000000 692fd410800000003b000000 692fd410800000003b000000 - {e=>3,n=>94,a=>2,m=>2,d=>-4,j=>-2,l=>-2,c=>-3,k=>-1,h=>-3,b=>-1,g=>-2,f=>2,i=>2} 7a39b932b70000005e000000 7a39b932b70000005e000000 7a39b932b70000005e000000 7a39b932b70000005e000000 - {e=>0,n=>126,a=>3,m=>1,d=>0,j=>0,l=>2,c=>-2,k=>-1,h=>-4,b=>2,g=>-3,f=>0,i=>0} 93019400570000007e000000 93019400570000007e000000 93019400570000007e000000 93019400570000007e000000 - {e=>3,n=>50,a=>-3,m=>2,d=>2,j=>-2,l=>-3,c=>-2,k=>3,h=>-1,b=>-2,g=>2,f=>-3,i=>-1} b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 b5b5ea37ab00000032000000 = struct int_wrap { char a; int b:3; }; - {a=>-96,b=>2} a002000000 a00002000000 a000000002000000 a000000002000000 - {a=>-46,b=>2} d202000000 d20002000000 d200000002000000 d200000002000000 - {a=>-68,b=>3} bc03000000 bc0003000000 bc00000003000000 bc00000003000000 - {a=>0,b=>3} 0003000000 000003000000 0000000003000000 0000000003000000 - {a=>-26,b=>-2} e606000000 e60006000000 e600000006000000 e600000006000000 = struct int_wrap { char a; int b:3; int c:3; }; - {c=>1,a=>123,b=>0} 7b08000000 7b0008000000 7b00000008000000 7b00000008000000 - {c=>-1,a=>-98,b=>2} 9e3a000000 9e003a000000 9e0000003a000000 9e0000003a000000 - {c=>-3,a=>75,b=>-4} 4b2c000000 4b002c000000 4b0000002c000000 4b0000002c000000 - {c=>-4,a=>-4,b=>-4} fc24000000 fc0024000000 fc00000024000000 fc00000024000000 - {c=>-1,a=>17,b=>1} 1139000000 110039000000 1100000039000000 1100000039000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; }; - {c=>-4,a=>17,b=>-2,d=>1} 1166000000 110066000000 1100000066000000 1100000066000000 - {c=>0,a=>75,b=>0,d=>3} 4bc0000000 4b00c0000000 4b000000c0000000 4b000000c0000000 - {c=>3,a=>-89,b=>1,d=>1} a759000000 a70059000000 a700000059000000 a700000059000000 - {c=>2,a=>86,b=>2,d=>3} 56d2000000 5600d2000000 56000000d2000000 56000000d2000000 - {c=>-4,a=>53,b=>-1,d=>0} 3527000000 350027000000 3500000027000000 3500000027000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; }; - {e=>-4,c=>-3,a=>-104,b=>-2,d=>0} 982e080000 98002e080000 980000002e080000 980000002e080000 - {e=>0,c=>2,a=>8,b=>2,d=>-3} 0852010000 080052010000 0800000052010000 0800000052010000 - {e=>0,c=>-2,a=>-41,b=>-2,d=>0} d736000000 d70036000000 d700000036000000 d700000036000000 - {e=>-4,c=>-4,a=>56,b=>2,d=>-4} 3822090000 380022090000 3800000022090000 3800000022090000 - {e=>-3,c=>3,a=>-43,b=>-2,d=>-3} d55e0b0000 d5005e0b0000 d50000005e0b0000 d50000005e0b0000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-4,c=>1,a=>119,b=>1,d=>1,f=>1} 7749180000 770049180000 7700000049180000 7700000049180000 - {e=>-1,c=>-3,a=>-91,b=>-2,d=>2,f=>-4} a5ae4e0000 a500ae4e0000 a5000000ae4e0000 a5000000ae4e0000 - {e=>0,c=>-4,a=>-43,b=>2,d=>0,f=>-1} d522700000 d50022700000 d500000022700000 d500000022700000 - {e=>1,c=>-3,a=>121,b=>2,d=>1,f=>-3} 796a520000 79006a520000 790000006a520000 790000006a520000 - {e=>1,c=>3,a=>12,b=>0,d=>1,f=>-2} 0c58620000 0c0058620000 0c00000058620000 0c00000058620000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>1,c=>3,a=>92,g=>2,b=>0,d=>-4,f=>-1} 5c18730100 5c0018730100 5c00000018730100 5c00000018730100 - {e=>-3,c=>3,a=>70,g=>-1,b=>1,d=>2,f=>1} 46999a0300 4600999a0300 46000000999a0300 46000000999a0300 - {e=>0,c=>2,a=>61,g=>-4,b=>-3,d=>-3,f=>0} 3d55010200 3d0055010200 3d00000055010200 3d00000055010200 - {e=>1,c=>1,a=>-72,g=>-3,b=>2,d=>0,f=>0} b80a820200 b8000a820200 b80000000a820200 b80000000a820200 - {e=>3,c=>2,a=>36,g=>-3,b=>-1,d=>1,f=>-1} 2457f60200 240057f60200 2400000057f60200 2400000057f60200 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>1,a=>2,d=>2,c=>-4,h=>1,b=>1,g=>3,f=>3} 02a1b20500 0200a1b20500 02000000a1b20500 02000000a1b20500 - {e=>-4,a=>-16,d=>-2,c=>2,h=>-3,b=>0,g=>-4,f=>-3} f090591600 f00090591600 f000000090591600 f000000090591600 - {e=>-3,a=>86,d=>2,c=>3,h=>-3,b=>0,g=>1,f=>-3} 5698da1400 560098da1400 5600000098da1400 5600000098da1400 - {e=>-2,a=>-5,d=>-2,c=>1,h=>2,b=>-1,g=>-4,f=>2} fb8f2d0a00 fb008f2d0a00 fb0000008f2d0a00 fb0000008f2d0a00 - {e=>3,a=>-13,d=>-3,c=>-2,h=>1,b=>-3,g=>2,f=>-2} f375670500 f30075670500 f300000075670500 f300000075670500 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>0,a=>87,d=>-1,c=>-2,h=>-2,b=>-2,g=>1,f=>-3,i=>-3} 57f6d1b800 5700f6d1b800 57000000f6d1b800 57000000f6d1b800 - {e=>0,a=>28,d=>-3,c=>-3,h=>1,b=>0,g=>-1,f=>2,i=>1} 1c68a12700 1c0068a12700 1c00000068a12700 1c00000068a12700 - {e=>3,a=>63,d=>3,c=>2,h=>-3,b=>-4,g=>-2,f=>-2,i=>2} 3fd4665700 3f00d4665700 3f000000d4665700 3f000000d4665700 - {e=>-4,a=>70,d=>3,c=>-4,h=>2,b=>-1,g=>-2,f=>3,i=>-3} 46e738ab00 4600e738ab00 46000000e738ab00 46000000e738ab00 - {e=>-1,a=>16,d=>-4,c=>0,h=>-1,b=>-2,g=>-2,f=>2,i=>0} 10062f1f00 1000062f1f00 10000000062f1f00 10000000062f1f00 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>3,a=>-82,d=>-3,j=>-4,c=>-2,h=>0,b=>-3,g=>2,f=>3,i=>0} ae75370104 ae0075370104 ae00000075370104 ae00000075370104 - {e=>-2,a=>-73,d=>0,j=>-3,c=>-2,h=>2,b=>-4,g=>0,f=>0,i=>0} b7340c0805 b700340c0805 b7000000340c0805 b7000000340c0805 - {e=>2,a=>-108,d=>3,j=>2,c=>2,h=>3,b=>1,g=>-1,f=>-2,i=>3} 94d1e46f02 9400d1e46f02 94000000d1e46f02 94000000d1e46f02 - {e=>-1,a=>-101,d=>1,j=>2,c=>-4,h=>0,b=>2,g=>-1,f=>-3,i=>2} 9b62de4302 9b0062de4302 9b00000062de4302 9b00000062de4302 - {e=>2,a=>67,d=>-1,j=>-1,c=>-4,h=>-4,b=>1,g=>-4,f=>-1,i=>-3} 43e175b207 4300e175b207 43000000e175b207 43000000e175b207 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-3,a=>-38,d=>-4,j=>0,c=>1,k=>3,h=>-1,b=>3,g=>-2,f=>2,i=>0} da0b2b1f18 da000b2b1f18 da0000000b2b1f18 da0000000b2b1f18 - {e=>2,a=>-104,d=>-4,j=>-2,c=>2,k=>1,h=>0,b=>3,g=>1,f=>1,i=>-2} 981395c00e 98001395c00e 980000001395c00e 980000001395c00e - {e=>-1,a=>-37,d=>-1,j=>-3,c=>-4,k=>-4,h=>-1,b=>1,g=>-3,f=>-4,i=>0} dbe1cf1e25 db00e1cf1e25 db000000e1cf1e25 db000000e1cf1e25 - {e=>1,a=>93,d=>3,j=>0,c=>0,k=>0,h=>-2,b=>1,g=>3,f=>2,i=>1} 5dc1a23900 5d00c1a23900 5d000000c1a23900 5d000000c1a23900 - {e=>3,a=>41,d=>2,j=>-2,c=>3,k=>-1,h=>-3,b=>0,g=>-1,f=>0,i=>3} 299886773e 29009886773e 290000009886773e 290000009886773e = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-1,a=>104,d=>3,j=>-3,l=>1,c=>-3,k=>3,h=>-2,b=>3,g=>-4,f=>-2,i=>-1} 68eb6efa1d01000000 6800eb6efa1d01000000 68000000eb6efa1d01000000 68000000eb6efa1d01000000 - {e=>-1,a=>-32,d=>2,j=>-3,l=>3,c=>0,k=>0,h=>-2,b=>-2,g=>1,f=>0,i=>0} e0868e180503000000 e000868e180503000000 e0000000868e180503000000 e0000000868e180503000000 - {e=>0,a=>-7,d=>2,j=>3,l=>3,c=>2,k=>1,h=>-4,b=>1,g=>-3,f=>-3,i=>-2} f991d0d20b03000000 f90091d0d20b03000000 f900000091d0d20b03000000 f900000091d0d20b03000000 - {e=>-1,a=>78,d=>0,j=>1,l=>-2,c=>-2,k=>3,h=>1,b=>-2,g=>1,f=>1,i=>0} 4e369e041906000000 4e00369e041906000000 4e000000369e041906000000 4e000000369e041906000000 - {e=>2,a=>-39,d=>-4,j=>-4,l=>2,c=>3,k=>-1,h=>1,b=>2,g=>-3,f=>-2,i=>0} d91ae5063c02000000 d9001ae5063c02000000 d90000001ae5063c02000000 d90000001ae5063c02000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>-4,a=>4,m=>-2,d=>-4,j=>2,l=>-2,c=>0,k=>1,h=>1,b=>2,g=>-3,f=>2,i=>1} 0402a9260a36000000 040002a9260a36000000 0400000002a9260a36000000 0400000002a9260a36000000 - {e=>-1,a=>-76,m=>-1,d=>1,j=>0,l=>-1,c=>-4,k=>3,h=>-1,b=>-1,g=>2,f=>0,i=>-3} b4670ebd183f000000 b400670ebd183f000000 b4000000670ebd183f000000 b4000000670ebd183f000000 - {e=>3,a=>64,m=>-2,d=>-2,j=>-1,l=>1,c=>2,k=>2,h=>2,b=>1,g=>-2,f=>3,i=>-2} 409137cb1731000000 40009137cb1731000000 400000009137cb1731000000 400000009137cb1731000000 - {e=>0,a=>13,m=>1,d=>-3,j=>0,l=>-3,c=>-4,k=>0,h=>-3,b=>0,g=>2,f=>3,i=>-1} 0d6031f5000d000000 0d006031f5000d000000 0d0000006031f5000d000000 0d0000006031f5000d000000 - {e=>-3,a=>-31,m=>3,d=>3,j=>-3,l=>-3,c=>-3,k=>1,h=>-3,b=>-1,g=>3,f=>0,i=>-2} e1ef8ad50d1d000000 e100ef8ad50d1d000000 e1000000ef8ad50d1d000000 e1000000ef8ad50d1d000000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>3,n=>0,a=>68,m=>2,d=>2,j=>-1,l=>0,c=>-1,k=>0,h=>-4,b=>-3,g=>2,f=>-2,i=>2} 44bd66510710000000 4400bd66510710000000 44000000bd66510710000000 44000000bd66510710000000 - {e=>-3,n=>-2,a=>83,m=>3,d=>-3,j=>0,l=>-4,c=>-3,k=>-3,h=>0,b=>2,g=>-4,f=>-1,i=>2} 536a7b42289c010000 53006a7b42289c010000 530000006a7b42289c010000 530000006a7b42289c010000 - {e=>-4,n=>-1,a=>-51,m=>3,d=>-2,j=>-3,l=>-4,c=>3,k=>0,h=>2,b=>0,g=>0,f=>-3,i=>-3} cd9859a805dc010000 cd009859a805dc010000 cd0000009859a805dc010000 cd0000009859a805dc010000 - {e=>-4,n=>-2,a=>53,m=>2,d=>0,j=>-4,l=>-1,c=>2,k=>-4,h=>-2,b=>0,g=>-1,f=>2,i=>1} 3510a83b2497010000 350010a83b2497010000 3500000010a83b2497010000 3500000010a83b2497010000 - {e=>-4,n=>-4,a=>-114,m=>-1,d=>-1,j=>0,l=>3,c=>-1,k=>3,h=>1,b=>0,g=>1,f=>-4,i=>0} 8ef8c904183b010000 8e00f8c904183b010000 8e000000f8c904183b010000 8e000000f8c904183b010000 = struct int_wrap { char a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>2,n=>2,a=>81,m=>3,d=>2,j=>0,l=>1,c=>-2,k=>-1,h=>3,b=>-2,g=>-1,f=>3,o=>64,i=>2} 51b6b44f389900000040000000 5100b6b44f389900000040000000 51000000b6b44f389900000040000000 51000000b6b44f389900000040000000 - {e=>-3,n=>0,a=>114,m=>0,d=>1,j=>-1,l=>-4,c=>1,k=>0,h=>-3,b=>3,g=>-4,f=>-3,o=>31,i=>2} 724b5a5607040000001f000000 72004b5a5607040000001f000000 720000004b5a5607040000001f000000 720000004b5a5607040000001f000000 - {e=>-2,n=>2,a=>-90,m=>-1,d=>-2,j=>1,l=>2,c=>-1,k=>-2,h=>-2,b=>-3,g=>2,f=>3,o=>11,i=>-2} a6bd3dd931ba0000000b000000 a600bd3dd931ba0000000b000000 a6000000bd3dd931ba0000000b000000 a6000000bd3dd931ba0000000b000000 - {e=>-4,n=>1,a=>-83,m=>2,d=>0,j=>-3,l=>3,c=>-3,k=>0,h=>0,b=>0,g=>-3,f=>-3,o=>-60,i=>-1} ad28d8e20553000000c4ffffff ad0028d8e20553000000c4ffffff ad00000028d8e20553000000c4ffffff ad00000028d8e20553000000c4ffffff - {e=>3,n=>0,a=>-38,m=>-4,d=>2,j=>-3,l=>-4,c=>-2,k=>-4,h=>-3,b=>0,g=>-4,f=>-4,o=>-32,i=>-4} dab046962524000000e0ffffff da00b046962524000000e0ffffff da000000b046962524000000e0ffffff da000000b046962524000000e0ffffff = struct int_wrap { short a; int b:3; }; - {a=>69,b=>-1} 450007000000 450007000000 4500000007000000 4500000007000000 - {a=>50,b=>1} 320001000000 320001000000 3200000001000000 3200000001000000 - {a=>40,b=>0} 280000000000 280000000000 2800000000000000 2800000000000000 - {a=>-10,b=>-4} f6ff04000000 f6ff04000000 f6ff000004000000 f6ff000004000000 - {a=>-64,b=>-1} c0ff07000000 c0ff07000000 c0ff000007000000 c0ff000007000000 = struct int_wrap { short a; int b:3; int c:3; }; - {c=>0,a=>106,b=>-1} 6a0007000000 6a0007000000 6a00000007000000 6a00000007000000 - {c=>-3,a=>112,b=>0} 700028000000 700028000000 7000000028000000 7000000028000000 - {c=>-1,a=>75,b=>-4} 4b003c000000 4b003c000000 4b0000003c000000 4b0000003c000000 - {c=>1,a=>-46,b=>1} d2ff09000000 d2ff09000000 d2ff000009000000 d2ff000009000000 - {c=>-4,a=>22,b=>-4} 160024000000 160024000000 1600000024000000 1600000024000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; }; - {c=>0,a=>-84,b=>-2,d=>-1} acffc6010000 acffc6010000 acff0000c6010000 acff0000c6010000 - {c=>0,a=>-79,b=>2,d=>-1} b1ffc2010000 b1ffc2010000 b1ff0000c2010000 b1ff0000c2010000 - {c=>-2,a=>102,b=>2,d=>0} 660032000000 660032000000 6600000032000000 6600000032000000 - {c=>-4,a=>117,b=>-3,d=>-2} 7500a5010000 7500a5010000 75000000a5010000 75000000a5010000 - {c=>-1,a=>-97,b=>-1,d=>-2} 9fffbf010000 9fffbf010000 9fff0000bf010000 9fff0000bf010000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; }; - {e=>-1,c=>-2,a=>63,b=>0,d=>-4} 3f00300f0000 3f00300f0000 3f000000300f0000 3f000000300f0000 - {e=>2,c=>-1,a=>-22,b=>-2,d=>2} eaffbe040000 eaffbe040000 eaff0000be040000 eaff0000be040000 - {e=>0,c=>1,a=>-97,b=>0,d=>3} 9fffc8000000 9fffc8000000 9fff0000c8000000 9fff0000c8000000 - {e=>0,c=>-3,a=>-3,b=>-3,d=>3} fdffed000000 fdffed000000 fdff0000ed000000 fdff0000ed000000 - {e=>-2,c=>0,a=>-35,b=>-1,d=>-1} ddffc70d0000 ddffc70d0000 ddff0000c70d0000 ddff0000c70d0000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-3,c=>0,a=>-77,b=>-2,d=>3,f=>3} b3ffc63a0000 b3ffc63a0000 b3ff0000c63a0000 b3ff0000c63a0000 - {e=>-2,c=>1,a=>108,b=>2,d=>1,f=>2} 6c004a2c0000 6c004a2c0000 6c0000004a2c0000 6c0000004a2c0000 - {e=>-3,c=>3,a=>-37,b=>-2,d=>-3,f=>2} dbff5e2b0000 dbff5e2b0000 dbff00005e2b0000 dbff00005e2b0000 - {e=>-2,c=>3,a=>-8,b=>-3,d=>-1,f=>-1} f8ffdd7d0000 f8ffdd7d0000 f8ff0000dd7d0000 f8ff0000dd7d0000 - {e=>3,c=>-1,a=>-111,b=>-4,d=>-2,f=>-2} 91ffbc670000 91ffbc670000 91ff0000bc670000 91ff0000bc670000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-2,c=>1,a=>81,g=>-3,b=>2,d=>-3,f=>3} 51004abd0200 51004abd0200 510000004abd0200 510000004abd0200 - {e=>1,c=>-2,a=>75,g=>-3,b=>-4,d=>-3,f=>-1} 4b0074f30200 4b0074f30200 4b00000074f30200 4b00000074f30200 - {e=>1,c=>-4,a=>54,g=>-4,b=>-1,d=>-4,f=>-4} 360027430200 360027430200 3600000027430200 3600000027430200 - {e=>-1,c=>-2,a=>82,g=>3,b=>1,d=>-4,f=>-3} 520031df0100 520031df0100 5200000031df0100 5200000031df0100 - {e=>0,c=>-2,a=>-94,g=>3,b=>-1,d=>-4,f=>3} a2ff37b10100 a2ff37b10100 a2ff000037b10100 a2ff000037b10100 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>-2,a=>-123,d=>2,c=>3,h=>0,b=>2,g=>2,f=>-2} 85ff9a6c0100 85ff9a6c0100 85ff00009a6c0100 85ff00009a6c0100 - {e=>-4,a=>-75,d=>-2,c=>2,h=>-3,b=>0,g=>-4,f=>0} b5ff90091600 b5ff90091600 b5ff000090091600 b5ff000090091600 - {e=>-1,a=>-85,d=>0,c=>-4,h=>-4,b=>1,g=>-2,f=>-4} abff214e1300 abff214e1300 abff0000214e1300 abff0000214e1300 - {e=>-4,a=>94,d=>-1,c=>-4,h=>2,b=>-2,g=>-2,f=>3} 5e00e6390b00 5e00e6390b00 5e000000e6390b00 5e000000e6390b00 - {e=>1,a=>26,d=>-3,c=>-3,h=>-3,b=>2,g=>-4,f=>2} 1a006a231600 1a006a231600 1a0000006a231600 1a0000006a231600 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>-4,a=>-127,d=>1,c=>0,h=>3,b=>1,g=>-1,f=>3,i=>3} 81ff41b86f00 81ff41b86f00 81ff000041b86f00 81ff000041b86f00 - {e=>-2,a=>-73,d=>-3,c=>1,h=>-3,b=>-1,g=>3,f=>-3,i=>-4} b7ff4fdd9500 b7ff4fdd9500 b7ff00004fdd9500 b7ff00004fdd9500 - {e=>-4,a=>-22,d=>2,c=>-4,h=>3,b=>2,g=>0,f=>3,i=>-2} eaffa238cc00 eaffa238cc00 eaff0000a238cc00 eaff0000a238cc00 - {e=>3,a=>-124,d=>3,c=>2,h=>3,b=>0,g=>0,f=>2,i=>2} 84ffd0264c00 84ffd0264c00 84ff0000d0264c00 84ff0000d0264c00 - {e=>2,a=>115,d=>3,c=>1,h=>-3,b=>2,g=>3,f=>-1,i=>0} 7300caf41500 7300caf41500 73000000caf41500 73000000caf41500 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-4,a=>-21,d=>-2,j=>-2,c=>-1,h=>-1,b=>-2,g=>-2,f=>-3,i=>1} ebffbe593f06 ebffbe593f06 ebff0000be593f06 ebff0000be593f06 - {e=>-3,a=>71,d=>1,j=>-1,c=>2,h=>0,b=>-4,g=>1,f=>-4,i=>-4} 470054ca8007 470054ca8007 4700000054ca8007 4700000054ca8007 - {e=>-2,a=>-5,d=>-3,j=>3,c=>-3,h=>1,b=>-3,g=>3,f=>2,i=>-1} fbff6dade503 fbff6dade503 fbff00006dade503 fbff00006dade503 - {e=>1,a=>-46,d=>3,j=>-2,c=>3,h=>-4,b=>-4,g=>-3,f=>-2,i=>0} d2ffdce21206 d2ffdce21206 d2ff0000dce21206 d2ff0000dce21206 - {e=>2,a=>-69,d=>-4,j=>0,c=>3,h=>3,b=>1,g=>2,f=>-2,i=>2} bbff19654d00 bbff19654d00 bbff000019654d00 bbff000019654d00 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>3,a=>-20,d=>2,j=>-2,c=>-4,k=>3,h=>-1,b=>-1,g=>-2,f=>-4,i=>-3} ecffa746bf1e ecffa746bf1e ecff0000a746bf1e ecff0000a746bf1e - {e=>-1,a=>-104,d=>2,j=>-4,c=>1,k=>-2,h=>-1,b=>1,g=>-3,f=>-4,i=>1} 98ff89ce3e34 98ff89ce3e34 98ff000089ce3e34 98ff000089ce3e34 - {e=>3,a=>11,d=>3,j=>0,c=>2,k=>-3,h=>-3,b=>-2,g=>0,f=>-1,i=>-4} 0b00d6769428 0b00d6769428 0b000000d6769428 0b000000d6769428 - {e=>-1,a=>102,d=>2,j=>-2,c=>-4,k=>-4,h=>-1,b=>0,g=>-4,f=>-2,i=>2} 6600a06e5e26 6600a06e5e26 66000000a06e5e26 66000000a06e5e26 - {e=>0,a=>-79,d=>-3,j=>-1,c=>0,k=>-2,h=>0,b=>3,g=>1,f=>-3,i=>-3} b1ff43d1a037 b1ff43d1a037 b1ff000043d1a037 b1ff000043d1a037 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>-109,d=>-4,j=>-3,l=>-4,c=>-4,k=>-4,h=>-1,b=>1,g=>-1,f=>-4,i=>1} 93ff21cb3f2504000000 93ff21cb3f2504000000 93ff000021cb3f2504000000 93ff000021cb3f2504000000 - {e=>1,a=>-37,d=>-3,j=>-2,l=>-3,c=>2,k=>-3,h=>-4,b=>3,g=>-1,f=>-4,i=>-2} dbff53c3d32e05000000 dbff53c3d32e05000000 dbff000053c3d32e05000000 dbff000053c3d32e05000000 - {e=>-3,a=>-27,d=>-3,j=>-2,l=>-3,c=>1,k=>1,h=>-2,b=>-4,g=>1,f=>3,i=>-4} e5ff4cbb980e05000000 e5ff4cbb980e05000000 e5ff00004cbb980e05000000 e5ff00004cbb980e05000000 - {e=>3,a=>-69,d=>-3,j=>-3,l=>-1,c=>-3,k=>1,h=>2,b=>3,g=>2,f=>0,i=>3} bbff6b07690d07000000 bbff6b07690d07000000 bbff00006b07690d07000000 bbff00006b07690d07000000 - {e=>0,a=>-52,d=>1,j=>2,l=>1,c=>-3,k=>-4,h=>0,b=>-3,g=>3,f=>-3,i=>0} ccff6dd0012201000000 ccff6dd0012201000000 ccff00006dd0012201000000 ccff00006dd0012201000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>1,a=>-21,m=>-3,d=>-4,j=>-2,l=>2,c=>-4,k=>-2,h=>-4,b=>-4,g=>2,f=>-1,i=>2} ebff247351362a000000 ebff247351362a000000 ebff0000247351362a000000 ebff0000247351362a000000 - {e=>-1,a=>-68,m=>-2,d=>-2,j=>0,l=>1,c=>3,k=>2,h=>-3,b=>0,g=>3,f=>-3,i=>0} bcff98df151031000000 bcff98df151031000000 bcff000098df151031000000 bcff000098df151031000000 - {e=>-1,a=>-32,m=>-3,d=>0,j=>1,l=>2,c=>2,k=>-2,h=>0,b=>0,g=>-2,f=>-2,i=>-3} e0ff106ea3312a000000 e0ff106ea3312a000000 e0ff0000106ea3312a000000 e0ff0000106ea3312a000000 - {e=>1,a=>-68,m=>0,d=>1,j=>-3,l=>3,c=>-4,k=>2,h=>-4,b=>0,g=>3,f=>-1,i=>2} bcff60f2511503000000 bcff60f2511503000000 bcff000060f2511503000000 bcff000060f2511503000000 - {e=>-4,a=>-109,m=>-4,d=>2,j=>2,l=>-1,c=>-2,k=>2,h=>-1,b=>-4,g=>-1,f=>0,i=>-2} 93ffb488df1227000000 93ffb488df1227000000 93ff0000b488df1227000000 93ff0000b488df1227000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>-2,n=>-4,a=>79,m=>-3,d=>3,j=>-2,l=>2,c=>-4,k=>-1,h=>0,b=>-1,g=>-4,f=>-4,i=>-4} 4f00e74c823e2a010000 4f00e74c823e2a010000 4f000000e74c823e2a010000 4f000000e74c823e2a010000 - {e=>3,n=>0,a=>-114,m=>-3,d=>-1,j=>2,l=>-1,c=>0,k=>1,h=>0,b=>-1,g=>-1,f=>3,i=>0} 8effc7b7030a2f000000 8effc7b7030a2f000000 8eff0000c7b7030a2f000000 8eff0000c7b7030a2f000000 - {e=>1,n=>0,a=>-17,m=>-1,d=>1,j=>2,l=>-2,c=>-4,k=>3,h=>-4,b=>-3,g=>-3,f=>0,i=>0} efff6582121a3e000000 efff6582121a3e000000 efff00006582121a3e000000 efff00006582121a3e000000 - {e=>2,n=>2,a=>-31,m=>0,d=>-4,j=>2,l=>-1,c=>0,k=>-2,h=>-1,b=>-3,g=>-4,f=>-2,i=>-1} e1ff0565fe3287000000 e1ff0565fe3287000000 e1ff00000565fe3287000000 e1ff00000565fe3287000000 - {e=>-4,n=>3,a=>-41,m=>1,d=>-1,j=>0,l=>-2,c=>1,k=>-1,h=>-2,b=>1,g=>0,f=>0,i=>0} d7ffc9091838ce000000 d7ffc9091838ce000000 d7ff0000c9091838ce000000 d7ff0000c9091838ce000000 = struct int_wrap { short a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>1,n=>0,a=>69,m=>-1,d=>-4,j=>1,l=>1,c=>-1,k=>-2,h=>-1,b=>-1,g=>-2,f=>-3,o=>1,i=>-1} 45003f53ff313900000001000000 45003f53ff313900000001000000 450000003f53ff313900000001000000 450000003f53ff313900000001000000 - {e=>2,n=>0,a=>-113,m=>3,d=>1,j=>1,l=>-1,c=>0,k=>3,h=>2,b=>-1,g=>-1,f=>-4,o=>-65,i=>-3} 8fff47c4ab191f000000bfffffff 8fff47c4ab191f000000bfffffff 8fff000047c4ab191f000000bfffffff 8fff000047c4ab191f000000bfffffff - {e=>1,n=>-3,a=>-34,m=>0,d=>-1,j=>3,l=>0,c=>1,k=>3,h=>-1,b=>-1,g=>-1,f=>2,o=>-8,i=>0} deffcfa31f1b40010000f8ffffff deffcfa31f1b40010000f8ffffff deff0000cfa31f1b40010000f8ffffff deff0000cfa31f1b40010000f8ffffff - {e=>3,n=>1,a=>84,m=>-2,d=>1,j=>1,l=>1,c=>2,k=>3,h=>3,b=>3,g=>-4,f=>3,o=>115,i=>-3} 54005336ae197100000073000000 54005336ae197100000073000000 540000005336ae197100000073000000 540000005336ae197100000073000000 - {e=>3,n=>0,a=>-51,m=>-3,d=>-3,j=>2,l=>0,c=>3,k=>2,h=>0,b=>1,g=>1,f=>3,o=>-72,i=>-3} cdff59b7a01228000000b8ffffff cdff59b7a01228000000b8ffffff cdff000059b7a01228000000b8ffffff cdff000059b7a01228000000b8ffffff = struct int_wrap { int a; int b:3; }; - {a=>-84,b=>-2} acffffff06000000 acffffff06000000 acffffff06000000 acffffff06000000 - {a=>71,b=>2} 4700000002000000 4700000002000000 4700000002000000 4700000002000000 - {a=>-81,b=>0} afffffff00000000 afffffff00000000 afffffff00000000 afffffff00000000 - {a=>-113,b=>-3} 8fffffff05000000 8fffffff05000000 8fffffff05000000 8fffffff05000000 - {a=>16,b=>-1} 1000000007000000 1000000007000000 1000000007000000 1000000007000000 = struct int_wrap { int a; int b:3; int c:3; }; - {c=>-3,a=>53,b=>-4} 350000002c000000 350000002c000000 350000002c000000 350000002c000000 - {c=>-3,a=>67,b=>-4} 430000002c000000 430000002c000000 430000002c000000 430000002c000000 - {c=>1,a=>102,b=>2} 660000000a000000 660000000a000000 660000000a000000 660000000a000000 - {c=>0,a=>-10,b=>1} f6ffffff01000000 f6ffffff01000000 f6ffffff01000000 f6ffffff01000000 - {c=>0,a=>-76,b=>0} b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 b4ffffff00000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; }; - {c=>-1,a=>-33,b=>-1,d=>-1} dfffffffff010000 dfffffffff010000 dfffffffff010000 dfffffffff010000 - {c=>-4,a=>-87,b=>2,d=>-1} a9ffffffe2010000 a9ffffffe2010000 a9ffffffe2010000 a9ffffffe2010000 - {c=>3,a=>19,b=>0,d=>3} 13000000d8000000 13000000d8000000 13000000d8000000 13000000d8000000 - {c=>-4,a=>39,b=>0,d=>-1} 27000000e0010000 27000000e0010000 27000000e0010000 27000000e0010000 - {c=>0,a=>-2,b=>3,d=>-4} feffffff03010000 feffffff03010000 feffffff03010000 feffffff03010000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; }; - {e=>1,c=>2,a=>-32,b=>1,d=>-2} e0ffffff91030000 e0ffffff91030000 e0ffffff91030000 e0ffffff91030000 - {e=>-4,c=>0,a=>12,b=>0,d=>2} 0c00000080080000 0c00000080080000 0c00000080080000 0c00000080080000 - {e=>-2,c=>1,a=>74,b=>0,d=>0} 4a000000080c0000 4a000000080c0000 4a000000080c0000 4a000000080c0000 - {e=>-3,c=>3,a=>-43,b=>-1,d=>-1} d5ffffffdf0b0000 d5ffffffdf0b0000 d5ffffffdf0b0000 d5ffffffdf0b0000 - {e=>3,c=>3,a=>67,b=>1,d=>-1} 43000000d9070000 43000000d9070000 43000000d9070000 43000000d9070000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>0,c=>3,a=>-63,b=>2,d=>0,f=>1} c1ffffff1a100000 c1ffffff1a100000 c1ffffff1a100000 c1ffffff1a100000 - {e=>3,c=>3,a=>-76,b=>-1,d=>-4,f=>3} b4ffffff1f370000 b4ffffff1f370000 b4ffffff1f370000 b4ffffff1f370000 - {e=>-1,c=>0,a=>45,b=>3,d=>3,f=>0} 2d000000c30e0000 2d000000c30e0000 2d000000c30e0000 2d000000c30e0000 - {e=>1,c=>2,a=>117,b=>-1,d=>-3,f=>-2} 7500000057630000 7500000057630000 7500000057630000 7500000057630000 - {e=>-3,c=>-1,a=>75,b=>-4,d=>3,f=>3} 4b000000fc3a0000 4b000000fc3a0000 4b000000fc3a0000 4b000000fc3a0000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>2,c=>0,a=>94,g=>-4,b=>2,d=>2,f=>2} 5e00000082240200 5e00000082240200 5e00000082240200 5e00000082240200 - {e=>-4,c=>-3,a=>-22,g=>-3,b=>3,d=>3,f=>3} eaffffffebb80200 eaffffffebb80200 eaffffffebb80200 eaffffffebb80200 - {e=>3,c=>1,a=>14,g=>0,b=>1,d=>1,f=>1} 0e00000049160000 0e00000049160000 0e00000049160000 0e00000049160000 - {e=>-3,c=>3,a=>-61,g=>-1,b=>-3,d=>-2,f=>-4} c3ffffff9dcb0300 c3ffffff9dcb0300 c3ffffff9dcb0300 c3ffffff9dcb0300 - {e=>-1,c=>-2,a=>28,g=>2,b=>1,d=>0,f=>-3} 1c000000315e0100 1c000000315e0100 1c000000315e0100 1c000000315e0100 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>1,a=>115,d=>2,c=>1,h=>0,b=>1,g=>1,f=>3} 7300000089b20000 7300000089b20000 7300000089b20000 7300000089b20000 - {e=>1,a=>19,d=>-2,c=>-3,h=>2,b=>-1,g=>-1,f=>-1} 13000000aff30b00 13000000aff30b00 13000000aff30b00 13000000aff30b00 - {e=>2,a=>-115,d=>2,c=>-4,h=>0,b=>-2,g=>-3,f=>-3} 8dffffffa6d40200 8dffffffa6d40200 8dffffffa6d40200 8dffffffa6d40200 - {e=>-1,a=>126,d=>2,c=>-3,h=>2,b=>-4,g=>2,f=>2} 7e000000ac2e0900 7e000000ac2e0900 7e000000ac2e0900 7e000000ac2e0900 - {e=>3,a=>123,d=>3,c=>0,h=>-4,b=>-2,g=>1,f=>-4} 7b000000c6c61000 7b000000c6c61000 7b000000c6c61000 7b000000c6c61000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>0,a=>-116,d=>-4,c=>0,h=>-3,b=>0,g=>-4,f=>3,i=>-1} 8cffffff0031f600 8cffffff0031f600 8cffffff0031f600 8cffffff0031f600 - {e=>-1,a=>-120,d=>0,c=>0,h=>-2,b=>2,g=>-1,f=>1,i=>-4} 88ffffff029e9b00 88ffffff029e9b00 88ffffff029e9b00 88ffffff029e9b00 - {e=>0,a=>89,d=>0,c=>-3,h=>3,b=>-2,g=>0,f=>-1,i=>-4} 590000002e708c00 590000002e708c00 590000002e708c00 590000002e708c00 - {e=>2,a=>107,d=>-1,c=>0,h=>-4,b=>0,g=>-2,f=>1,i=>2} 6b000000c0155300 6b000000c0155300 6b000000c0155300 6b000000c0155300 - {e=>1,a=>126,d=>-2,c=>-1,h=>-3,b=>1,g=>3,f=>-4,i=>-2} 7e000000b9c3d500 7e000000b9c3d500 7e000000b9c3d500 7e000000b9c3d500 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-1,a=>-65,d=>2,j=>-4,c=>-2,h=>-4,b=>0,g=>-1,f=>-3,i=>1} bfffffffb0de3304 bfffffffb0de3304 bfffffffb0de3304 bfffffffb0de3304 - {e=>-4,a=>-87,d=>-1,j=>1,c=>-2,h=>1,b=>3,g=>-2,f=>0,i=>2} a9fffffff3094701 a9fffffff3094701 a9fffffff3094701 a9fffffff3094701 - {e=>0,a=>19,d=>0,j=>0,c=>1,h=>1,b=>2,g=>-3,f=>3,i=>3} 130000000ab06600 130000000ab06600 130000000ab06600 130000000ab06600 - {e=>1,a=>-111,d=>-2,j=>1,c=>3,h=>0,b=>-4,g=>-4,f=>1,i=>0} 91ffffff9c130201 91ffffff9c130201 91ffffff9c130201 91ffffff9c130201 - {e=>-1,a=>-103,d=>1,j=>0,c=>-1,h=>-4,b=>2,g=>1,f=>-3,i=>3} 99ffffff7ade7000 99ffffff7ade7000 99ffffff7ade7000 99ffffff7ade7000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>-3,a=>38,d=>-2,j=>2,c=>-2,k=>1,h=>1,b=>0,g=>0,f=>2,i=>0} 26000000b02b040a 26000000b02b040a 26000000b02b040a 26000000b02b040a - {e=>2,a=>41,d=>0,j=>-3,c=>1,k=>-2,h=>-3,b=>0,g=>0,f=>0,i=>0} 2900000008041435 2900000008041435 2900000008041435 2900000008041435 - {e=>3,a=>107,d=>-3,j=>-1,c=>2,k=>-2,h=>1,b=>0,g=>-1,f=>3,i=>1} 6b00000050b72737 6b00000050b72737 6b00000050b72737 6b00000050b72737 - {e=>3,a=>18,d=>-4,j=>2,c=>-4,k=>-1,h=>-3,b=>-1,g=>-3,f=>-3,i=>-3} 1200000027d7b63a 1200000027d7b63a 1200000027d7b63a 1200000027d7b63a - {e=>3,a=>-10,d=>-4,j=>2,c=>1,k=>0,h=>-1,b=>-4,g=>0,f=>1,i=>2} f6ffffff0c175c02 f6ffffff0c175c02 f6ffffff0c175c02 f6ffffff0c175c02 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>1,a=>-91,d=>3,j=>-3,l=>2,c=>2,k=>-1,h=>1,b=>-1,g=>-4,f=>-2,i=>-3} a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 a5ffffffd762a63d02000000 - {e=>-1,a=>-28,d=>0,j=>-4,l=>-3,c=>-2,k=>2,h=>-4,b=>-2,g=>-2,f=>-1,i=>0} e4ffffff367e131405000000 e4ffffff367e131405000000 e4ffffff367e131405000000 e4ffffff367e131405000000 - {e=>1,a=>78,d=>-3,j=>-3,l=>-2,c=>1,k=>2,h=>0,b=>-2,g=>0,f=>-2,i=>-3} 4e0000004e63a01506000000 4e0000004e63a01506000000 4e0000004e63a01506000000 4e0000004e63a01506000000 - {e=>-2,a=>71,d=>2,j=>-4,l=>-1,c=>-4,k=>2,h=>3,b=>1,g=>0,f=>-1,i=>1} 47000000a17c2c1407000000 47000000a17c2c1407000000 47000000a17c2c1407000000 47000000a17c2c1407000000 - {e=>-2,a=>-99,d=>-4,j=>-2,l=>-4,c=>-2,k=>3,h=>-1,b=>1,g=>-4,f=>-1,i=>-1} 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 9dffffff317dfe1e04000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>1,a=>11,m=>3,d=>0,j=>-1,l=>2,c=>2,k=>-2,h=>0,b=>2,g=>-1,f=>-4,i=>-3} 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0b00000012c2a3371a000000 0b00000012c2a3371a000000 - {e=>3,a=>-31,m=>-1,d=>1,j=>3,l=>1,c=>-3,k=>-4,h=>-3,b=>-3,g=>3,f=>-2,i=>0} e1ffffff6de6152339000000 e1ffffff6de6152339000000 e1ffffff6de6152339000000 e1ffffff6de6152339000000 - {e=>-1,a=>-107,m=>-1,d=>-4,j=>3,l=>-4,c=>3,k=>-3,h=>3,b=>0,g=>3,f=>-1,i=>2} 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 95ffffff18ff4d2b3c000000 - {e=>-3,a=>-123,m=>-3,d=>3,j=>-1,l=>3,c=>2,k=>-2,h=>1,b=>2,g=>-4,f=>-2,i=>-2} 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 85ffffffd26ac6372b000000 - {e=>-3,a=>-105,m=>-4,d=>-1,j=>-2,l=>-2,c=>-1,k=>3,h=>-4,b=>3,g=>-1,f=>3,i=>1} 97fffffffbbb331e26000000 97fffffffbbb331e26000000 97fffffffbbb331e26000000 97fffffffbbb331e26000000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>1,n=>2,a=>-70,m=>2,d=>-1,j=>-2,l=>-2,c=>-4,k=>0,h=>-3,b=>-3,g=>-4,f=>0,i=>-2} baffffffe503d60696000000 baffffffe503d60696000000 baffffffe503d60696000000 baffffffe503d60696000000 - {e=>-2,n=>-3,a=>99,m=>1,d=>-4,j=>0,l=>2,c=>-3,k=>2,h=>-4,b=>3,g=>1,f=>3,i=>1} 630000002bbd30104a010000 630000002bbd30104a010000 630000002bbd30104a010000 630000002bbd30104a010000 - {e=>0,n=>-4,a=>-106,m=>2,d=>-4,j=>-1,l=>-3,c=>-1,k=>3,h=>2,b=>-4,g=>2,f=>-1,i=>2} 96ffffff3c71491f15010000 96ffffff3c71491f15010000 96ffffff3c71491f15010000 96ffffff3c71491f15010000 - {e=>0,n=>1,a=>-37,m=>1,d=>1,j=>-3,l=>-4,c=>0,k=>-2,h=>0,b=>3,g=>-4,f=>-2,i=>-1} dbffffff4360e2354c000000 dbffffff4360e2354c000000 dbffffff4360e2354c000000 dbffffff4360e2354c000000 - {e=>-2,n=>-1,a=>21,m=>1,d=>-4,j=>-2,l=>0,c=>1,k=>-4,h=>-3,b=>1,g=>3,f=>-2,i=>-3} 1500000009edb526c8010000 1500000009edb526c8010000 1500000009edb526c8010000 1500000009edb526c8010000 = struct int_wrap { int a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>-2,n=>-3,a=>77,m=>1,d=>0,j=>3,l=>-4,c=>1,k=>3,h=>-2,b=>-3,g=>0,f=>3,o=>-17,i=>2} 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff 4d0000000d3c581b4c010000efffffff - {e=>-1,n=>3,a=>113,m=>3,d=>3,j=>-1,l=>3,c=>3,k=>-3,h=>-4,b=>-4,g=>2,f=>-3,o=>72,i=>2} 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 71000000dc5e512fdb00000048000000 - {e=>-4,n=>2,a=>0,m=>2,d=>1,j=>2,l=>-2,c=>2,k=>-1,h=>-1,b=>-2,g=>-3,f=>-4,o=>60,i=>2} 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 0000000056c85e3a960000003c000000 - {e=>-1,n=>-3,a=>65,m=>2,d=>-2,j=>3,l=>2,c=>3,k=>0,h=>3,b=>-4,g=>0,f=>1,o=>-92,i=>0} 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff 410000009c1f0c0352010000a4ffffff - {e=>1,n=>2,a=>64,m=>0,d=>-2,j=>2,l=>1,c=>-3,k=>0,h=>-1,b=>3,g=>2,f=>1,o=>-43,i=>-2} 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff 40000000ab13dd0281000000d5ffffff = struct int_wrap { long a; int b:3; }; - {a=>33,b=>-4} 2100000004000000 2100000004000000 2100000004000000 2100000004000000 - {a=>122,b=>-4} 7a00000004000000 7a00000004000000 7a00000004000000 7a00000004000000 - {a=>107,b=>-3} 6b00000005000000 6b00000005000000 6b00000005000000 6b00000005000000 - {a=>17,b=>1} 1100000001000000 1100000001000000 1100000001000000 1100000001000000 - {a=>-47,b=>2} d1ffffff02000000 d1ffffff02000000 d1ffffff02000000 d1ffffff02000000 = struct int_wrap { long a; int b:3; int c:3; }; - {c=>-2,a=>-37,b=>1} dbffffff31000000 dbffffff31000000 dbffffff31000000 dbffffff31000000 - {c=>-2,a=>-7,b=>1} f9ffffff31000000 f9ffffff31000000 f9ffffff31000000 f9ffffff31000000 - {c=>3,a=>124,b=>0} 7c00000018000000 7c00000018000000 7c00000018000000 7c00000018000000 - {c=>0,a=>-128,b=>-4} 80ffffff04000000 80ffffff04000000 80ffffff04000000 80ffffff04000000 - {c=>3,a=>5,b=>2} 050000001a000000 050000001a000000 050000001a000000 050000001a000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; }; - {c=>3,a=>-33,b=>0,d=>-2} dfffffff98010000 dfffffff98010000 dfffffff98010000 dfffffff98010000 - {c=>1,a=>87,b=>1,d=>-3} 5700000049010000 5700000049010000 5700000049010000 5700000049010000 - {c=>2,a=>-12,b=>0,d=>0} f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 - {c=>3,a=>-30,b=>-2,d=>3} e2ffffffde000000 e2ffffffde000000 e2ffffffde000000 e2ffffffde000000 - {c=>1,a=>81,b=>3,d=>2} 510000008b000000 510000008b000000 510000008b000000 510000008b000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; }; - {e=>2,c=>-1,a=>-61,b=>3,d=>2} c3ffffffbb040000 c3ffffffbb040000 c3ffffffbb040000 c3ffffffbb040000 - {e=>-2,c=>-3,a=>86,b=>2,d=>-1} 56000000ea0d0000 56000000ea0d0000 56000000ea0d0000 56000000ea0d0000 - {e=>-2,c=>0,a=>126,b=>3,d=>-2} 7e000000830d0000 7e000000830d0000 7e000000830d0000 7e000000830d0000 - {e=>-4,c=>2,a=>-98,b=>-3,d=>-2} 9effffff95090000 9effffff95090000 9effffff95090000 9effffff95090000 - {e=>3,c=>3,a=>-97,b=>0,d=>3} 9fffffffd8060000 9fffffffd8060000 9fffffffd8060000 9fffffffd8060000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; }; - {e=>-4,c=>-1,a=>-9,b=>-1,d=>1,f=>-2} f7ffffff7f680000 f7ffffff7f680000 f7ffffff7f680000 f7ffffff7f680000 - {e=>1,c=>-4,a=>112,b=>-4,d=>1,f=>-3} 7000000064520000 7000000064520000 7000000064520000 7000000064520000 - {e=>3,c=>-1,a=>-116,b=>2,d=>2,f=>-4} 8cffffffba460000 8cffffffba460000 8cffffffba460000 8cffffffba460000 - {e=>-4,c=>-3,a=>-4,b=>-4,d=>2,f=>1} fcffffffac180000 fcffffffac180000 fcffffffac180000 fcffffffac180000 - {e=>-2,c=>-3,a=>-52,b=>3,d=>3,f=>0} ccffffffeb0c0000 ccffffffeb0c0000 ccffffffeb0c0000 ccffffffeb0c0000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; }; - {e=>-2,c=>0,a=>92,g=>-1,b=>-2,d=>-2,f=>-2} 5c00000086ed0300 5c00000086ed0300 5c00000086ed0300 5c00000086ed0300 - {e=>1,c=>-1,a=>-32,g=>-4,b=>3,d=>0,f=>-1} e0ffffff3b720200 e0ffffff3b720200 e0ffffff3b720200 e0ffffff3b720200 - {e=>-4,c=>3,a=>17,g=>-4,b=>1,d=>-4,f=>2} 1100000019290200 1100000019290200 1100000019290200 1100000019290200 - {e=>1,c=>-4,a=>-113,g=>-1,b=>1,d=>-4,f=>-4} 8fffffff21c30300 8fffffff21c30300 8fffffff21c30300 8fffffff21c30300 - {e=>0,c=>1,a=>23,g=>2,b=>3,d=>-3,f=>-3} 170000004b510100 170000004b510100 170000004b510100 170000004b510100 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; }; - {e=>0,a=>76,d=>2,c=>-1,h=>-3,b=>3,g=>-3,f=>0} 4c000000bb801600 4c000000bb801600 4c000000bb801600 4c000000bb801600 - {e=>3,a=>39,d=>-4,c=>-3,h=>1,b=>-2,g=>-2,f=>1} 270000002e170700 270000002e170700 270000002e170700 270000002e170700 - {e=>2,a=>108,d=>2,c=>1,h=>3,b=>1,g=>2,f=>-2} 6c00000089640d00 6c00000089640d00 6c00000089640d00 6c00000089640d00 - {e=>-2,a=>52,d=>-2,c=>-3,h=>-2,b=>1,g=>-4,f=>-2} 34000000a96d1a00 34000000a96d1a00 34000000a96d1a00 34000000a96d1a00 - {e=>-3,a=>-110,d=>-4,c=>-4,h=>2,b=>-1,g=>1,f=>2} 92ffffff27ab0800 92ffffff27ab0800 92ffffff27ab0800 92ffffff27ab0800 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; }; - {e=>2,a=>-27,d=>0,c=>0,h=>-3,b=>2,g=>-3,f=>-4,i=>-4} e5ffffff02c49600 e5ffffff02c49600 e5ffffff02c49600 e5ffffff02c49600 - {e=>-1,a=>109,d=>2,c=>1,h=>-2,b=>1,g=>0,f=>-3,i=>-3} 6d000000895eb800 6d000000895eb800 6d000000895eb800 6d000000895eb800 - {e=>-3,a=>-65,d=>3,c=>2,h=>3,b=>0,g=>2,f=>-4,i=>-2} bfffffffd04acd00 bfffffffd04acd00 bfffffffd04acd00 bfffffffd04acd00 - {e=>3,a=>-118,d=>-1,c=>1,h=>-1,b=>0,g=>3,f=>2,i=>-4} 8affffffc8a79d00 8affffffc8a79d00 8affffffc8a79d00 8affffffc8a79d00 - {e=>-4,a=>77,d=>-3,c=>3,h=>-1,b=>-2,g=>-1,f=>-3,i=>-3} 4d0000005ed9bf00 4d0000005ed9bf00 4d0000005ed9bf00 4d0000005ed9bf00 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; }; - {e=>-3,a=>60,d=>2,j=>2,c=>2,h=>-3,b=>3,g=>-1,f=>-2,i=>-1} 3c00000093eaf702 3c00000093eaf702 3c00000093eaf702 3c00000093eaf702 - {e=>-3,a=>-119,d=>0,j=>-2,c=>3,h=>-3,b=>3,g=>-3,f=>-3,i=>-3} 89ffffff1bdab606 89ffffff1bdab606 89ffffff1bdab606 89ffffff1bdab606 - {e=>-4,a=>94,d=>2,j=>2,c=>1,h=>3,b=>1,g=>1,f=>3,i=>3} 5e00000089b86c02 5e00000089b86c02 5e00000089b86c02 5e00000089b86c02 - {e=>3,a=>116,d=>1,j=>2,c=>-4,h=>-3,b=>0,g=>3,f=>2,i=>-4} 7400000060a69502 7400000060a69502 7400000060a69502 7400000060a69502 - {e=>1,a=>42,d=>-4,j=>-4,c=>-2,h=>-2,b=>2,g=>-3,f=>-2,i=>-3} 2a00000032e3ba04 2a00000032e3ba04 2a00000032e3ba04 2a00000032e3ba04 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; }; - {e=>0,a=>15,d=>3,j=>2,c=>0,k=>3,h=>-4,b=>3,g=>-1,f=>-4,i=>-4} 0f000000c3c0931a 0f000000c3c0931a 0f000000c3c0931a 0f000000c3c0931a - {e=>-2,a=>-58,d=>-3,j=>-1,c=>-1,k=>-2,h=>1,b=>-2,g=>3,f=>-4,i=>-3} c6ffffff7ecda537 c6ffffff7ecda537 c6ffffff7ecda537 c6ffffff7ecda537 - {e=>0,a=>3,d=>-4,j=>-4,c=>2,k=>1,h=>3,b=>0,g=>-4,f=>3,i=>-4} 0300000010318e0c 0300000010318e0c 0300000010318e0c 0300000010318e0c - {e=>-2,a=>9,d=>3,j=>3,c=>-3,k=>-2,h=>-1,b=>-1,g=>1,f=>-4,i=>3} 09000000efcc7c33 09000000efcc7c33 09000000efcc7c33 09000000efcc7c33 - {e=>-2,a=>41,d=>2,j=>-1,c=>-3,k=>-2,h=>-4,b=>-2,g=>-1,f=>2,i=>3} 29000000aeac7337 29000000aeac7337 29000000aeac7337 29000000aeac7337 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; }; - {e=>-3,a=>-21,d=>3,j=>0,l=>-3,c=>-3,k=>3,h=>0,b=>2,g=>-4,f=>-3,i=>-3} ebffffffea5aa21805000000 ebffffffea5aa21805000000 ebffffffea5aa21805000000 ebffffffea5aa21805000000 - {e=>0,a=>26,d=>3,j=>3,l=>-4,c=>0,k=>2,h=>-1,b=>-1,g=>-2,f=>0,i=>-4} 1a000000c7009f1304000000 1a000000c7009f1304000000 1a000000c7009f1304000000 1a000000c7009f1304000000 - {e=>-3,a=>-32,d=>-2,j=>0,l=>-4,c=>-3,k=>-2,h=>2,b=>-1,g=>1,f=>2,i=>-3} e0ffffffafaba83004000000 e0ffffffafaba83004000000 e0ffffffafaba83004000000 e0ffffffafaba83004000000 - {e=>2,a=>-37,d=>-2,j=>-3,l=>-4,c=>1,k=>1,h=>-2,b=>2,g=>3,f=>0,i=>3} dbffffff8a85790d04000000 dbffffff8a85790d04000000 dbffffff8a85790d04000000 dbffffff8a85790d04000000 - {e=>1,a=>-116,d=>-2,j=>0,l=>2,c=>1,k=>-4,h=>0,b=>2,g=>-3,f=>-1,i=>-4} 8cffffff8af3822002000000 8cffffff8af3822002000000 8cffffff8af3822002000000 8cffffff8af3822002000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; }; - {e=>-1,a=>-6,m=>-3,d=>0,j=>3,l=>1,c=>-4,k=>1,h=>-4,b=>1,g=>2,f=>1,i=>2} faffffff211e510b29000000 faffffff211e510b29000000 faffffff211e510b29000000 faffffff211e510b29000000 - {e=>2,a=>-118,m=>-4,d=>-1,j=>-2,l=>2,c=>3,k=>-3,h=>3,b=>0,g=>-3,f=>-4,i=>3} 8affffffd8c56e2e22000000 8affffffd8c56e2e22000000 8affffffd8c56e2e22000000 8affffffd8c56e2e22000000 - {e=>3,a=>-56,m=>1,d=>3,j=>0,l=>3,c=>2,k=>-2,h=>1,b=>2,g=>0,f=>-3,i=>-2} c8ffffffd256c4300b000000 c8ffffffd256c4300b000000 c8ffffffd256c4300b000000 c8ffffffd256c4300b000000 - {e=>1,a=>-55,m=>-4,d=>0,j=>-1,l=>3,c=>-3,k=>-4,h=>3,b=>-4,g=>2,f=>-2,i=>-4} c9ffffff2c628d2723000000 c9ffffff2c628d2723000000 c9ffffff2c628d2723000000 c9ffffff2c628d2723000000 - {e=>-3,a=>-107,m=>0,d=>-1,j=>2,l=>-3,c=>-2,k=>-2,h=>-2,b=>-4,g=>2,f=>1,i=>-3} 95fffffff41bb93205000000 95fffffff41bb93205000000 95fffffff41bb93205000000 95fffffff41bb93205000000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; }; - {e=>-1,n=>-1,a=>-103,m=>-3,d=>-3,j=>2,l=>-4,c=>-3,k=>3,h=>2,b=>3,g=>-4,f=>1,i=>1} 99ffffff6b1f2a1aec010000 99ffffff6b1f2a1aec010000 99ffffff6b1f2a1aec010000 99ffffff6b1f2a1aec010000 - {e=>1,n=>-1,a=>-117,m=>3,d=>-3,j=>3,l=>2,c=>-4,k=>2,h=>-1,b=>-3,g=>-1,f=>0,i=>-1} 8bffffff6583ff13da010000 8bffffff6583ff13da010000 8bffffff6583ff13da010000 8bffffff6583ff13da010000 - {e=>1,n=>-3,a=>28,m=>-1,d=>-4,j=>2,l=>-4,c=>3,k=>-4,h=>-2,b=>0,g=>2,f=>-4,i=>1} 1c000000184339227c010000 1c000000184339227c010000 1c000000184339227c010000 1c000000184339227c010000 - {e=>-4,n=>3,a=>29,m=>-4,d=>2,j=>-2,l=>-4,c=>-2,k=>-2,h=>2,b=>-2,g=>-2,f=>-2,i=>-2} 1d000000b668cb36e4000000 1d000000b668cb36e4000000 1d000000b668cb36e4000000 1d000000b668cb36e4000000 - {e=>3,n=>-1,a=>-93,m=>-1,d=>3,j=>3,l=>-2,c=>2,k=>2,h=>-2,b=>1,g=>0,f=>3,i=>2} a3ffffffd1365813fe010000 a3ffffffd1365813fe010000 a3ffffffd1365813fe010000 a3ffffffd1365813fe010000 = struct int_wrap { long a; int b:3; int c:3; int d:3; int e:3; int f:3; int g:3; int h:3; int i:3; int j:3; int k:3; int l:3; int m:3; int n:3; int o; }; - {e=>-3,n=>1,a=>-24,m=>2,d=>-2,j=>-2,l=>-4,c=>-1,k=>0,h=>-4,b=>-1,g=>-4,f=>0,o=>10,i=>1} e8ffffffbf0b3206540000000a000000 e8ffffffbf0b3206540000000a000000 e8ffffffbf0b3206540000000a000000 e8ffffffbf0b3206540000000a000000 - {e=>0,n=>3,a=>91,m=>3,d=>1,j=>-2,l=>-1,c=>-3,k=>0,h=>1,b=>3,g=>3,f=>0,o=>0,i=>0} 5b0000006b800506df00000000000000 5b0000006b800506df00000000000000 5b0000006b800506df00000000000000 5b0000006b800506df00000000000000 - {e=>-4,n=>-4,a=>-91,m=>0,d=>1,j=>0,l=>3,c=>1,k=>-4,h=>0,b=>3,g=>1,f=>-2,o=>81,i=>-3} a5ffffff4be8a0200301000051000000 a5ffffff4be8a0200301000051000000 a5ffffff4be8a0200301000051000000 a5ffffff4be8a0200301000051000000 - {e=>0,n=>-3,a=>-22,m=>-1,d=>-4,j=>-1,l=>0,c=>3,k=>-2,h=>3,b=>-3,g=>-1,f=>-3,o=>40,i=>2} eaffffff1dd14f377801000028000000 eaffffff1dd14f377801000028000000 eaffffff1dd14f377801000028000000 eaffffff1dd14f377801000028000000 - {e=>-2,n=>1,a=>-71,m=>2,d=>2,j=>-3,l=>-4,c=>0,k=>-3,h=>2,b=>-2,g=>2,f=>0,o=>-119,i=>-2} b9ffffff860cc92d5400000089ffffff b9ffffff860cc92d5400000089ffffff b9ffffff860cc92d5400000089ffffff b9ffffff860cc92d5400000089ffffff = struct umixed3 { unsigned char a:3; }; - {a=>7} 07 07 07 07 - {a=>4} 04 04 04 04 - {a=>1} 01 01 01 01 - {a=>2} 02 02 02 02 - {a=>5} 05 05 05 05 = struct umixed3 { unsigned char a:3; unsigned char b:3; }; - {a=>6,b=>0} 06 06 06 06 - {a=>0,b=>4} 20 20 20 20 - {a=>2,b=>1} 0a 0a 0a 0a - {a=>7,b=>3} 1f 1f 1f 1f - {a=>2,b=>3} 1a 1a 1a 1a = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; }; - {c=>0,a=>7,b=>5} 2f00000000 2f0000000000 2f00000000000000 2f00000000000000 - {c=>2,a=>6,b=>7} 3e02000000 3e0002000000 3e00000002000000 3e00000002000000 - {c=>2,a=>7,b=>2} 1702000000 170002000000 1700000002000000 1700000002000000 - {c=>7,a=>1,b=>3} 1907000000 190007000000 1900000007000000 1900000007000000 - {c=>5,a=>3,b=>4} 2305000000 230005000000 2300000005000000 2300000005000000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; }; - {c=>6,a=>2,b=>1,d=>2} 0a0600000002 0a00060000000200 0a0000000600000002000000 0a0000000600000002000000 - {c=>5,a=>6,b=>1,d=>3} 0e0500000003 0e00050000000300 0e0000000500000003000000 0e0000000500000003000000 - {c=>4,a=>6,b=>1,d=>0} 0e0400000000 0e00040000000000 0e0000000400000000000000 0e0000000400000000000000 - {c=>0,a=>1,b=>5,d=>6} 290000000006 2900000000000600 290000000000000006000000 290000000000000006000000 - {c=>7,a=>6,b=>2,d=>2} 160700000002 1600070000000200 160000000700000002000000 160000000700000002000000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; }; - {e=>3,c=>6,a=>3,b=>0,d=>1} 0306000000010300 03000600000001000300 030000000600000001000300 030000000600000001000300 - {e=>6,c=>0,a=>3,b=>1,d=>5} 0b00000000050600 0b000000000005000600 0b0000000000000005000600 0b0000000000000005000600 - {e=>7,c=>2,a=>2,b=>6,d=>5} 3202000000050700 32000200000005000700 320000000200000005000700 320000000200000005000700 - {e=>6,c=>0,a=>3,b=>3,d=>3} 1b00000000030600 1b000000000003000600 1b0000000000000003000600 1b0000000000000003000600 - {e=>6,c=>7,a=>0,b=>3,d=>3} 1807000000030600 18000700000003000600 180000000700000003000600 180000000700000003000600 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; unsigned char f:3; }; - {e=>3,c=>4,a=>4,b=>7,d=>6,f=>2} 3c0400000006030002 3c0004000000060003000200 3c000000040000000600030002000000 3c000000040000000600030002000000 - {e=>5,c=>4,a=>2,b=>7,d=>0,f=>6} 3a0400000000050006 3a0004000000000005000600 3a000000040000000000050006000000 3a000000040000000000050006000000 - {e=>7,c=>6,a=>0,b=>4,d=>1,f=>6} 200600000001070006 200006000000010007000600 20000000060000000100070006000000 20000000060000000100070006000000 - {e=>4,c=>6,a=>1,b=>0,d=>1,f=>3} 010600000001040003 010006000000010004000300 01000000060000000100040003000000 01000000060000000100040003000000 - {e=>6,c=>4,a=>6,b=>6,d=>6,f=>0} 360400000006060000 360004000000060006000000 36000000040000000600060000000000 36000000040000000600060000000000 = struct umixed3 { unsigned char a:3; unsigned char b:3; unsigned int c:3; unsigned char d:3; unsigned short e:3; unsigned char f:3; unsigned long g; }; - {e=>4,c=>5,a=>4,g=>216,b=>7,d=>5,f=>4} 3c0500000005040004d8000000 3c0005000000050004000400d8000000 3c000000050000000500040004000000d8000000 3c000000050000000500040004000000d8000000 - {e=>0,c=>0,a=>7,g=>119,b=>7,d=>3,f=>5} 3f000000000300000577000000 3f000000000003000000050077000000 3f00000000000000030000000500000077000000 3f00000000000000030000000500000077000000 - {e=>4,c=>0,a=>7,g=>69,b=>6,d=>3,f=>3} 37000000000304000345000000 37000000000003000400030045000000 3700000000000000030004000300000045000000 3700000000000000030004000300000045000000 - {e=>1,c=>0,a=>5,g=>247,b=>4,d=>1,f=>7} 250000000001010007f7000000 250000000000010001000700f7000000 25000000000000000100010007000000f7000000 25000000000000000100010007000000f7000000 - {e=>4,c=>5,a=>4,g=>112,b=>1,d=>3,f=>4} 0c050000000304000470000000 0c000500000003000400040070000000 0c00000005000000030004000400000070000000 0c00000005000000030004000400000070000000 = struct umixed3 { char a; unsigned char b:3; }; - {a=>-63,b=>6} c106 c106 c106 c106 - {a=>-85,b=>7} ab07 ab07 ab07 ab07 - {a=>52,b=>0} 3400 3400 3400 3400 - {a=>-89,b=>2} a702 a702 a702 a702 - {a=>-62,b=>7} c207 c207 c207 c207 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>77,b=>0} 4d08 4d08 4d08 4d08 - {c=>7,a=>73,b=>2} 493a 493a 493a 493a - {c=>5,a=>116,b=>5} 742d 742d 742d 742d - {c=>7,a=>-44,b=>1} d439 d439 d439 d439 - {c=>7,a=>-66,b=>7} be3f be3f be3f be3f = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>0,a=>-16,b=>5,d=>5} f00505000000 f00505000000 f005000005000000 f005000005000000 - {c=>0,a=>-4,b=>7,d=>6} fc0706000000 fc0706000000 fc07000006000000 fc07000006000000 - {c=>5,a=>-11,b=>0,d=>2} f52802000000 f52802000000 f528000002000000 f528000002000000 - {c=>6,a=>-39,b=>1,d=>0} d93100000000 d93100000000 d931000000000000 d931000000000000 - {c=>7,a=>78,b=>1,d=>0} 4e3900000000 4e3900000000 4e39000000000000 4e39000000000000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>2,c=>6,a=>28,b=>6,d=>7} 1c360700000002 1c36070000000200 1c3600000700000002000000 1c3600000700000002000000 - {e=>0,c=>6,a=>-11,b=>2,d=>3} f5320300000000 f532030000000000 f53200000300000000000000 f53200000300000000000000 - {e=>5,c=>7,a=>27,b=>0,d=>1} 1b380100000005 1b38010000000500 1b3800000100000005000000 1b3800000100000005000000 - {e=>2,c=>5,a=>1,b=>0,d=>7} 01280700000002 0128070000000200 012800000700000002000000 012800000700000002000000 - {e=>7,c=>1,a=>79,b=>3,d=>7} 4f0b0700000007 4f0b070000000700 4f0b00000700000007000000 4f0b00000700000007000000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>1,c=>7,a=>43,b=>0,d=>7,f=>3} 2b3807000000010300 2b380700000001000300 2b3800000700000001000300 2b3800000700000001000300 - {e=>3,c=>7,a=>-115,b=>7,d=>5,f=>4} 8d3f05000000030400 8d3f0500000003000400 8d3f00000500000003000400 8d3f00000500000003000400 - {e=>4,c=>7,a=>86,b=>7,d=>6,f=>6} 563f06000000040600 563f0600000004000600 563f00000600000004000600 563f00000600000004000600 - {e=>1,c=>0,a=>-25,b=>3,d=>2,f=>1} e70302000000010100 e7030200000001000100 e70300000200000001000100 e70300000200000001000100 - {e=>7,c=>7,a=>19,b=>4,d=>7,f=>0} 133c07000000070000 133c0700000007000000 133c00000700000007000000 133c00000700000007000000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>7,c=>3,a=>-86,g=>1,b=>7,d=>6,f=>1} aa1f0600000007010001 aa1f06000000070001000100 aa1f0000060000000700010001000000 aa1f0000060000000700010001000000 - {e=>1,c=>6,a=>18,g=>4,b=>6,d=>5,f=>5} 12360500000001050004 123605000000010005000400 12360000050000000100050004000000 12360000050000000100050004000000 - {e=>0,c=>5,a=>6,g=>2,b=>6,d=>1,f=>0} 062e0100000000000002 062e01000000000000000200 062e0000010000000000000002000000 062e0000010000000000000002000000 - {e=>0,c=>2,a=>2,g=>1,b=>5,d=>3,f=>4} 02150300000000040001 021503000000000004000100 02150000030000000000040001000000 02150000030000000000040001000000 - {e=>4,c=>6,a=>110,g=>5,b=>6,d=>3,f=>1} 6e360300000004010005 6e3603000000040001000500 6e360000030000000400010005000000 6e360000030000000400010005000000 = struct umixed3 { char a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>-103,d=>2,c=>7,h=>28,b=>4,g=>0,f=>0} 993c02000000070000001c000000 993c020000000700000000001c000000 993c00000200000007000000000000001c000000 993c00000200000007000000000000001c000000 - {e=>1,a=>-118,d=>7,c=>2,h=>87,b=>6,g=>2,f=>7} 8a16070000000107000257000000 8a160700000001000700020057000000 8a16000007000000010007000200000057000000 8a16000007000000010007000200000057000000 - {e=>0,a=>93,d=>0,c=>4,h=>190,b=>4,g=>2,f=>4} 5d240000000000040002be000000 5d2400000000000004000200be000000 5d240000000000000000040002000000be000000 5d240000000000000000040002000000be000000 - {e=>4,a=>119,d=>3,c=>2,h=>230,b=>0,g=>6,f=>3} 77100300000004030006e6000000 771003000000040003000600e6000000 77100000030000000400030006000000e6000000 77100000030000000400030006000000e6000000 - {e=>5,a=>-101,d=>5,c=>7,h=>52,b=>3,g=>7,f=>4} 9b3b050000000504000734000000 9b3b0500000005000400070034000000 9b3b000005000000050004000700000034000000 9b3b000005000000050004000700000034000000 = struct umixed3 { short a; unsigned char b:3; }; - {a=>117,b=>6} 750006 75000600 75000600 75000600 - {a=>27,b=>7} 1b0007 1b000700 1b000700 1b000700 - {a=>-51,b=>0} cdff00 cdff0000 cdff0000 cdff0000 - {a=>-8,b=>4} f8ff04 f8ff0400 f8ff0400 f8ff0400 - {a=>72,b=>7} 480007 48000700 48000700 48000700 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>-49,b=>3} cfff03 cfff0300 cfff0300 cfff0300 - {c=>4,a=>28,b=>7} 1c0027 1c002700 1c002700 1c002700 - {c=>2,a=>97,b=>5} 610015 61001500 61001500 61001500 - {c=>3,a=>-123,b=>0} 85ff18 85ff1800 85ff1800 85ff1800 - {c=>3,a=>71,b=>7} 47001f 47001f00 47001f00 47001f00 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>6,a=>-55,b=>7,d=>2} c9ff3702000000 c9ff370002000000 c9ff370002000000 c9ff370002000000 - {c=>4,a=>118,b=>0,d=>7} 76002007000000 7600200007000000 7600200007000000 7600200007000000 - {c=>4,a=>-56,b=>7,d=>0} c8ff2700000000 c8ff270000000000 c8ff270000000000 c8ff270000000000 - {c=>1,a=>111,b=>5,d=>1} 6f000d01000000 6f000d0001000000 6f000d0001000000 6f000d0001000000 - {c=>4,a=>-108,b=>3,d=>3} 94ff2303000000 94ff230003000000 94ff230003000000 94ff230003000000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>2,c=>5,a=>2,b=>4,d=>4} 02002c0400000002 02002c00040000000200 02002c000400000002000000 02002c000400000002000000 - {e=>7,c=>2,a=>57,b=>2,d=>1} 3900120100000007 39001200010000000700 390012000100000007000000 390012000100000007000000 - {e=>1,c=>6,a=>92,b=>1,d=>3} 5c00310300000001 5c003100030000000100 5c0031000300000001000000 5c0031000300000001000000 - {e=>0,c=>1,a=>-36,b=>0,d=>2} dcff080200000000 dcff0800020000000000 dcff08000200000000000000 dcff08000200000000000000 - {e=>1,c=>4,a=>-88,b=>1,d=>0} a8ff210000000001 a8ff2100000000000100 a8ff21000000000001000000 a8ff21000000000001000000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>0,c=>1,a=>-52,b=>6,d=>1,f=>6} ccff0e01000000000600 ccff0e000100000000000600 ccff0e000100000000000600 ccff0e000100000000000600 - {e=>3,c=>5,a=>-41,b=>2,d=>6,f=>0} d7ff2a06000000030000 d7ff2a000600000003000000 d7ff2a000600000003000000 d7ff2a000600000003000000 - {e=>2,c=>3,a=>-90,b=>5,d=>7,f=>3} a6ff1d07000000020300 a6ff1d000700000002000300 a6ff1d000700000002000300 a6ff1d000700000002000300 - {e=>1,c=>4,a=>6,b=>2,d=>4,f=>7} 06002204000000010700 060022000400000001000700 060022000400000001000700 060022000400000001000700 - {e=>2,c=>4,a=>24,b=>4,d=>4,f=>7} 18002404000000020700 180024000400000002000700 180024000400000002000700 180024000400000002000700 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>4,c=>2,a=>-91,g=>7,b=>6,d=>2,f=>3} a5ff160200000004030007 a5ff160002000000040003000700 a5ff1600020000000400030007000000 a5ff1600020000000400030007000000 - {e=>3,c=>0,a=>116,g=>7,b=>3,d=>7,f=>4} 7400030700000003040007 7400030007000000030004000700 74000300070000000300040007000000 74000300070000000300040007000000 - {e=>2,c=>7,a=>93,g=>4,b=>6,d=>6,f=>7} 5d003e0600000002070004 5d003e0006000000020007000400 5d003e00060000000200070004000000 5d003e00060000000200070004000000 - {e=>2,c=>5,a=>108,g=>5,b=>4,d=>4,f=>2} 6c002c0400000002020005 6c002c0004000000020002000500 6c002c00040000000200020005000000 6c002c00040000000200020005000000 - {e=>4,c=>2,a=>-28,g=>3,b=>4,d=>2,f=>6} e4ff140200000004060003 e4ff140002000000040006000300 e4ff1400020000000400060003000000 e4ff1400020000000400060003000000 = struct umixed3 { short a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>4,a=>-83,d=>2,c=>5,h=>218,b=>0,g=>2,f=>5} adff280200000004050002da000000 adff280002000000040005000200da000000 adff2800020000000400050002000000da000000 adff2800020000000400050002000000da000000 - {e=>2,a=>12,d=>1,c=>2,h=>88,b=>2,g=>6,f=>2} 0c0012010000000202000658000000 0c0012000100000002000200060058000000 0c00120001000000020002000600000058000000 0c00120001000000020002000600000058000000 - {e=>1,a=>-57,d=>1,c=>1,h=>75,b=>1,g=>4,f=>3} c7ff0901000000010300044b000000 c7ff0900010000000100030004004b000000 c7ff09000100000001000300040000004b000000 c7ff09000100000001000300040000004b000000 - {e=>7,a=>17,d=>6,c=>0,h=>143,b=>5,g=>4,f=>1} 11000506000000070100048f000000 11000500060000000700010004008f000000 110005000600000007000100040000008f000000 110005000600000007000100040000008f000000 - {e=>1,a=>10,d=>6,c=>1,h=>73,b=>1,g=>0,f=>6} 0a0009060000000106000049000000 0a0009000600000001000600000049000000 0a00090006000000010006000000000049000000 0a00090006000000010006000000000049000000 = struct umixed3 { int a; unsigned char b:3; }; - {a=>-62,b=>6} c2ffffff06 c2ffffff0600 c2ffffff06000000 c2ffffff06000000 - {a=>-53,b=>2} cbffffff02 cbffffff0200 cbffffff02000000 cbffffff02000000 - {a=>118,b=>0} 7600000000 760000000000 7600000000000000 7600000000000000 - {a=>59,b=>0} 3b00000000 3b0000000000 3b00000000000000 3b00000000000000 - {a=>-20,b=>1} ecffffff01 ecffffff0100 ecffffff01000000 ecffffff01000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-62,b=>7} c2ffffff2f c2ffffff2f00 c2ffffff2f000000 c2ffffff2f000000 - {c=>6,a=>-14,b=>1} f2ffffff31 f2ffffff3100 f2ffffff31000000 f2ffffff31000000 - {c=>6,a=>63,b=>7} 3f00000037 3f0000003700 3f00000037000000 3f00000037000000 - {c=>3,a=>41,b=>2} 290000001a 290000001a00 290000001a000000 290000001a000000 - {c=>7,a=>18,b=>2} 120000003a 120000003a00 120000003a000000 120000003a000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>5,a=>75,b=>4,d=>6} 4b0000002c06000000 4b0000002c0006000000 4b0000002c00000006000000 4b0000002c00000006000000 - {c=>0,a=>117,b=>6,d=>0} 750000000600000000 75000000060000000000 750000000600000000000000 750000000600000000000000 - {c=>2,a=>-47,b=>1,d=>6} d1ffffff1106000000 d1ffffff110006000000 d1ffffff1100000006000000 d1ffffff1100000006000000 - {c=>4,a=>-11,b=>0,d=>3} f5ffffff2003000000 f5ffffff200003000000 f5ffffff2000000003000000 f5ffffff2000000003000000 - {c=>1,a=>64,b=>7,d=>5} 400000000f05000000 400000000f0005000000 400000000f00000005000000 400000000f00000005000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>1,c=>3,a=>-106,b=>7,d=>0} 96ffffff1f0000000001 96ffffff1f00000000000100 96ffffff1f0000000000000001000000 96ffffff1f0000000000000001000000 - {e=>5,c=>5,a=>-62,b=>1,d=>2} c2ffffff290200000005 c2ffffff2900020000000500 c2ffffff290000000200000005000000 c2ffffff290000000200000005000000 - {e=>6,c=>2,a=>-4,b=>4,d=>4} fcffffff140400000006 fcffffff1400040000000600 fcffffff140000000400000006000000 fcffffff140000000400000006000000 - {e=>5,c=>7,a=>-93,b=>4,d=>2} a3ffffff3c0200000005 a3ffffff3c00020000000500 a3ffffff3c0000000200000005000000 a3ffffff3c0000000200000005000000 - {e=>7,c=>3,a=>67,b=>3,d=>2} 430000001b0200000007 430000001b00020000000700 430000001b0000000200000007000000 430000001b0000000200000007000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>2,c=>6,a=>83,b=>3,d=>5,f=>4} 530000003305000000020400 5300000033000500000002000400 53000000330000000500000002000400 53000000330000000500000002000400 - {e=>0,c=>5,a=>121,b=>1,d=>7,f=>3} 790000002907000000000300 7900000029000700000000000300 79000000290000000700000000000300 79000000290000000700000000000300 - {e=>7,c=>2,a=>-79,b=>3,d=>7,f=>1} b1ffffff1307000000070100 b1ffffff13000700000007000100 b1ffffff130000000700000007000100 b1ffffff130000000700000007000100 - {e=>4,c=>0,a=>-82,b=>1,d=>3,f=>3} aeffffff0103000000040300 aeffffff01000300000004000300 aeffffff010000000300000004000300 aeffffff010000000300000004000300 - {e=>3,c=>4,a=>32,b=>4,d=>6,f=>0} 200000002406000000030000 2000000024000600000003000000 20000000240000000600000003000000 20000000240000000600000003000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>7,c=>4,a=>-119,g=>7,b=>6,d=>2,f=>5} 89ffffff260200000007050007 89ffffff260002000000070005000700 89ffffff26000000020000000700050007000000 89ffffff26000000020000000700050007000000 - {e=>4,c=>7,a=>75,g=>5,b=>7,d=>2,f=>3} 4b0000003f0200000004030005 4b0000003f0002000000040003000500 4b0000003f000000020000000400030005000000 4b0000003f000000020000000400030005000000 - {e=>1,c=>0,a=>-122,g=>5,b=>5,d=>2,f=>1} 86ffffff050200000001010005 86ffffff050002000000010001000500 86ffffff05000000020000000100010005000000 86ffffff05000000020000000100010005000000 - {e=>7,c=>6,a=>-118,g=>7,b=>5,d=>1,f=>3} 8affffff350100000007030007 8affffff350001000000070003000700 8affffff35000000010000000700030007000000 8affffff35000000010000000700030007000000 - {e=>6,c=>5,a=>-69,g=>0,b=>7,d=>1,f=>1} bbffffff2f0100000006010000 bbffffff2f0001000000060001000000 bbffffff2f000000010000000600010000000000 bbffffff2f000000010000000600010000000000 = struct umixed3 { int a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>22,d=>3,c=>6,h=>27,b=>7,g=>2,f=>4} 160000003703000000070400021b000000 160000003700030000000700040002001b000000 16000000370000000300000007000400020000001b000000 16000000370000000300000007000400020000001b000000 - {e=>0,a=>-54,d=>1,c=>7,h=>112,b=>1,g=>4,f=>2} caffffff39010000000002000470000000 caffffff39000100000000000200040070000000 caffffff3900000001000000000002000400000070000000 caffffff3900000001000000000002000400000070000000 - {e=>7,a=>1,d=>5,c=>7,h=>4,b=>5,g=>5,f=>4} 010000003d050000000704000504000000 010000003d000500000007000400050004000000 010000003d00000005000000070004000500000004000000 010000003d00000005000000070004000500000004000000 - {e=>2,a=>10,d=>0,c=>1,h=>37,b=>2,g=>4,f=>7} 0a0000000a000000000207000425000000 0a0000000a000000000002000700040025000000 0a0000000a00000000000000020007000400000025000000 0a0000000a00000000000000020007000400000025000000 - {e=>4,a=>-17,d=>3,c=>0,h=>76,b=>4,g=>0,f=>6} efffffff0403000000040600004c000000 efffffff0400030000000400060000004c000000 efffffff040000000300000004000600000000004c000000 efffffff040000000300000004000600000000004c000000 = struct umixed3 { long a; unsigned char b:3; }; - {a=>83,b=>2} 5300000002 530000000200 5300000002000000 5300000002000000 - {a=>21,b=>7} 1500000007 150000000700 1500000007000000 1500000007000000 - {a=>-112,b=>2} 90ffffff02 90ffffff0200 90ffffff02000000 90ffffff02000000 - {a=>56,b=>1} 3800000001 380000000100 3800000001000000 3800000001000000 - {a=>-36,b=>0} dcffffff00 dcffffff0000 dcffffff00000000 dcffffff00000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-25,b=>4} e7ffffff2c e7ffffff2c00 e7ffffff2c000000 e7ffffff2c000000 - {c=>4,a=>-122,b=>2} 86ffffff22 86ffffff2200 86ffffff22000000 86ffffff22000000 - {c=>1,a=>-102,b=>1} 9affffff09 9affffff0900 9affffff09000000 9affffff09000000 - {c=>4,a=>2,b=>3} 0200000023 020000002300 0200000023000000 0200000023000000 - {c=>4,a=>120,b=>2} 7800000022 780000002200 7800000022000000 7800000022000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; }; - {c=>5,a=>-39,b=>2,d=>0} d9ffffff2a00000000 d9ffffff2a0000000000 d9ffffff2a00000000000000 d9ffffff2a00000000000000 - {c=>3,a=>-53,b=>0,d=>4} cbffffff1804000000 cbffffff180004000000 cbffffff1800000004000000 cbffffff1800000004000000 - {c=>5,a=>-104,b=>4,d=>7} 98ffffff2c07000000 98ffffff2c0007000000 98ffffff2c00000007000000 98ffffff2c00000007000000 - {c=>6,a=>-123,b=>4,d=>2} 85ffffff3402000000 85ffffff340002000000 85ffffff3400000002000000 85ffffff3400000002000000 - {c=>3,a=>-127,b=>3,d=>6} 81ffffff1b06000000 81ffffff1b0006000000 81ffffff1b00000006000000 81ffffff1b00000006000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; }; - {e=>6,c=>5,a=>61,b=>1,d=>1} 3d000000290100000006 3d0000002900010000000600 3d000000290000000100000006000000 3d000000290000000100000006000000 - {e=>7,c=>2,a=>72,b=>7,d=>7} 48000000170700000007 480000001700070000000700 48000000170000000700000007000000 48000000170000000700000007000000 - {e=>6,c=>1,a=>33,b=>1,d=>5} 21000000090500000006 210000000900050000000600 21000000090000000500000006000000 21000000090000000500000006000000 - {e=>1,c=>5,a=>59,b=>3,d=>6} 3b0000002b0600000001 3b0000002b00060000000100 3b0000002b0000000600000001000000 3b0000002b0000000600000001000000 - {e=>5,c=>7,a=>-74,b=>4,d=>1} b6ffffff3c0100000005 b6ffffff3c00010000000500 b6ffffff3c0000000100000005000000 b6ffffff3c0000000100000005000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; }; - {e=>2,c=>0,a=>72,b=>0,d=>6,f=>6} 480000000006000000020600 4800000000000600000002000600 48000000000000000600000002000600 48000000000000000600000002000600 - {e=>1,c=>6,a=>-5,b=>3,d=>2,f=>4} fbffffff3302000000010400 fbffffff33000200000001000400 fbffffff330000000200000001000400 fbffffff330000000200000001000400 - {e=>3,c=>4,a=>-25,b=>7,d=>2,f=>1} e7ffffff2702000000030100 e7ffffff27000200000003000100 e7ffffff270000000200000003000100 e7ffffff270000000200000003000100 - {e=>6,c=>2,a=>127,b=>5,d=>2,f=>0} 7f0000001502000000060000 7f00000015000200000006000000 7f000000150000000200000006000000 7f000000150000000200000006000000 - {e=>1,c=>2,a=>-28,b=>2,d=>6,f=>6} e4ffffff1206000000010600 e4ffffff12000600000001000600 e4ffffff120000000600000001000600 e4ffffff120000000600000001000600 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; }; - {e=>5,c=>0,a=>-20,g=>4,b=>1,d=>6,f=>7} ecffffff010600000005070004 ecffffff010006000000050007000400 ecffffff01000000060000000500070004000000 ecffffff01000000060000000500070004000000 - {e=>6,c=>7,a=>89,g=>0,b=>6,d=>5,f=>4} 590000003e0500000006040000 590000003e0005000000060004000000 590000003e000000050000000600040000000000 590000003e000000050000000600040000000000 - {e=>2,c=>7,a=>75,g=>1,b=>0,d=>5,f=>5} 4b000000380500000002050001 4b000000380005000000020005000100 4b00000038000000050000000200050001000000 4b00000038000000050000000200050001000000 - {e=>5,c=>6,a=>-7,g=>2,b=>2,d=>4,f=>2} f9ffffff320400000005020002 f9ffffff320004000000050002000200 f9ffffff32000000040000000500020002000000 f9ffffff32000000040000000500020002000000 - {e=>0,c=>5,a=>-93,g=>6,b=>5,d=>1,f=>2} a3ffffff2d0100000000020006 a3ffffff2d0001000000000002000600 a3ffffff2d000000010000000000020006000000 a3ffffff2d000000010000000000020006000000 = struct umixed3 { long a; unsigned char b:3; unsigned char c:3; unsigned int d:3; unsigned char e:3; unsigned short f:3; unsigned char g:3; unsigned long h; }; - {e=>7,a=>-73,d=>5,c=>2,h=>27,b=>3,g=>0,f=>5} b7ffffff1305000000070500001b000000 b7ffffff1300050000000700050000001b000000 b7ffffff130000000500000007000500000000001b000000 b7ffffff130000000500000007000500000000001b000000 - {e=>5,a=>-115,d=>0,c=>4,h=>51,b=>2,g=>3,f=>6} 8dffffff22000000000506000333000000 8dffffff22000000000005000600030033000000 8dffffff2200000000000000050006000300000033000000 8dffffff2200000000000000050006000300000033000000 - {e=>4,a=>20,d=>0,c=>2,h=>56,b=>5,g=>7,f=>4} 1400000015000000000404000738000000 1400000015000000000004000400070038000000 140000001500000000000000040004000700000038000000 140000001500000000000000040004000700000038000000 - {e=>6,a=>115,d=>7,c=>2,h=>157,b=>2,g=>0,f=>3} 730000001207000000060300009d000000 730000001200070000000600030000009d000000 73000000120000000700000006000300000000009d000000 73000000120000000700000006000300000000009d000000 - {e=>1,a=>101,d=>4,c=>2,h=>189,b=>7,g=>1,f=>6} 65000000170400000001060001bd000000 65000000170004000000010006000100bd000000 6500000017000000040000000100060001000000bd000000 6500000017000000040000000100060001000000bd000000 = struct umixed_no_pack { unsigned char a:3; }; - {a=>2} 02 02 02 02 - {a=>3} 03 03 03 03 - {a=>0} 00 00 00 00 - {a=>6} 06 06 06 06 - {a=>5} 05 05 05 05 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; }; - {a=>3,b=>4} 23 23 23 23 - {a=>4,b=>4} 24 24 24 24 - {a=>0,b=>0} 00 00 00 00 - {a=>6,b=>0} 06 06 06 06 - {a=>7,b=>2} 17 17 17 17 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>2,a=>4,b=>5} 2c0200 2c000200 2c000200 2c000200 - {c=>6,a=>2,b=>7} 3a0600 3a000600 3a000600 3a000600 - {c=>5,a=>1,b=>5} 290500 29000500 29000500 29000500 - {c=>5,a=>1,b=>5} 290500 29000500 29000500 29000500 - {c=>6,a=>2,b=>0} 020600 02000600 02000600 02000600 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>2,a=>3,b=>4,d=>16659437} 230200ed33fe00 23000200ed33fe00 23000200ed33fe00 23000200ed33fe00 - {c=>7,a=>2,b=>3,d=>201260983} 1a0700b7fffe0b 1a000700b7fffe0b 1a000700b7fffe0b 1a000700b7fffe0b - {c=>1,a=>6,b=>3,d=>256219575} 1e0100b799450f 1e000100b799450f 1e000100b799450f 1e000100b799450f - {c=>7,a=>6,b=>0,d=>55997687} 060700f7745603 06000700f7745603 06000700f7745603 06000700f7745603 - {c=>2,a=>4,b=>4,d=>103672891} 2402003bec2d06 240002003bec2d06 240002003bec2d06 240002003bec2d06 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>4,c=>3,a=>3,b=>1,d=>63303944} 0b030008f1c50304 0b00030008f1c5030400 0b00030008f1c50304000000 0b00030008f1c50304000000 - {e=>6,c=>1,a=>7,b=>5,d=>115286698} 2f0100aa22df0606 2f000100aa22df060600 2f000100aa22df0606000000 2f000100aa22df0606000000 - {e=>5,c=>7,a=>5,b=>1,d=>33758906} 0d0700ba1e030205 0d000700ba1e03020500 0d000700ba1e030205000000 0d000700ba1e030205000000 - {e=>1,c=>7,a=>2,b=>1,d=>75998826} 0a07006aa6870401 0a0007006aa687040100 0a0007006aa6870401000000 0a0007006aa6870401000000 - {e=>0,c=>4,a=>2,b=>7,d=>23580046} 3a04008ecd670100 3a0004008ecd67010000 3a0004008ecd670100000000 3a0004008ecd670100000000 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>1,c=>0,a=>2,b=>7,d=>158148049,f=>0} 3a0000d1256d0901 3a000000d1256d090100 3a000000d1256d0901000000 3a000000d1256d0901000000 - {e=>3,c=>1,a=>1,b=>7,d=>228592629,f=>0} 390100f50ba00d03 39000100f50ba00d0300 39000100f50ba00d03000000 39000100f50ba00d03000000 - {e=>6,c=>5,a=>5,b=>6,d=>13400160,f=>0} 3505006078cc0006 350005006078cc000600 350005006078cc0006000000 350005006078cc0006000000 - {e=>1,c=>2,a=>1,b=>1,d=>252868262,f=>3} 090200a676120f19 09000200a676120f1900 09000200a676120f19000000 09000200a676120f19000000 - {e=>6,c=>3,a=>3,b=>0,d=>45793175,f=>0} 03030097bfba0206 0300030097bfba020600 0300030097bfba0206000000 0300030097bfba0206000000 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>1,c=>2,a=>6,g=>1699,b=>6,d=>41631336,f=>2} 360200683e7b0211a306 36000200683e7b021100a306 36000200683e7b021100a306 36000200683e7b021100a306 - {e=>2,c=>0,a=>2,g=>602,b=>2,d=>186423654,f=>2} 12000066991c0b125a02 1200000066991c0b12005a02 1200000066991c0b12005a02 1200000066991c0b12005a02 - {e=>2,c=>7,a=>4,g=>6342,b=>7,d=>247473427,f=>2} 3c07001325c00e12c618 3c0007001325c00e1200c618 3c0007001325c00e1200c618 3c0007001325c00e1200c618 - {e=>5,c=>7,a=>4,g=>2765,b=>7,d=>238172392,f=>1} 3c0700e838320e0dcd0a 3c000700e838320e0d00cd0a 3c000700e838320e0d00cd0a 3c000700e838320e0d00cd0a - {e=>1,c=>7,a=>1,g=>5584,b=>7,d=>2742541,f=>3} 3907000dd9290019d015 390007000dd929001900d015 390007000dd929001900d015 390007000dd929001900d015 = struct umixed_no_pack { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; signed int h; }; - {e=>5,a=>0,d=>63927408,c=>7,h=>-86,b=>6,g=>5835,f=>1} 3007007074cf030dcb16aaffffff 300007007074cf030d00cb16aaffffff 300007007074cf030d00cb16aaffffff 300007007074cf030d00cb16aaffffff - {e=>7,a=>3,d=>165783275,c=>6,h=>-85,b=>5,g=>3147,f=>0} 2b0600eba6e109074b0cabffffff 2b000600eba6e10907004b0cabffffff 2b000600eba6e10907004b0cabffffff 2b000600eba6e10907004b0cabffffff - {e=>7,a=>0,d=>262181766,c=>7,h=>-76,b=>2,g=>3227,f=>0} 1007008693a00f079b0cb4ffffff 100007008693a00f07009b0cb4ffffff 100007008693a00f07009b0cb4ffffff 100007008693a00f07009b0cb4ffffff - {e=>2,a=>1,d=>258295770,c=>1,h=>-44,b=>2,g=>2696,f=>2} 110100da47650f12880ad4ffffff 11000100da47650f1200880ad4ffffff 11000100da47650f1200880ad4ffffff 11000100da47650f1200880ad4ffffff - {e=>6,a=>7,d=>149674579,c=>6,h=>44,b=>7,g=>3480,f=>1} 3f060053daeb080e980d2c000000 3f00060053daeb080e00980d2c000000 3f00060053daeb080e00980d2c000000 3f00060053daeb080e00980d2c000000 = struct umixed_no_pack { char a; unsigned char b:3; }; - {a=>18,b=>7} 1207 1207 1207 1207 - {a=>-34,b=>4} de04 de04 de04 de04 - {a=>-63,b=>4} c104 c104 c104 c104 - {a=>-10,b=>4} f604 f604 f604 f604 - {a=>117,b=>1} 7501 7501 7501 7501 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-68,b=>6} bc26 bc26 bc26 bc26 - {c=>7,a=>48,b=>6} 303e 303e 303e 303e - {c=>7,a=>124,b=>0} 7c38 7c38 7c38 7c38 - {c=>7,a=>111,b=>4} 6f3c 6f3c 6f3c 6f3c - {c=>5,a=>-83,b=>1} ad29 ad29 ad29 ad29 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>2,a=>116,b=>6,d=>5} 74160500 74160500 74160500 74160500 - {c=>0,a=>-85,b=>7,d=>7} ab070700 ab070700 ab070700 ab070700 - {c=>7,a=>13,b=>7,d=>6} 0d3f0600 0d3f0600 0d3f0600 0d3f0600 - {c=>6,a=>118,b=>4,d=>6} 76340600 76340600 76340600 76340600 - {c=>3,a=>59,b=>4,d=>5} 3b1c0500 3b1c0500 3b1c0500 3b1c0500 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>27672616,c=>4,a=>110,b=>5,d=>2} 6e2502002840a601 6e2502002840a601 6e2502002840a601 6e2502002840a601 - {e=>87433172,c=>4,a=>106,b=>7,d=>5} 6a270500d41f3605 6a270500d41f3605 6a270500d41f3605 6a270500d41f3605 - {e=>33757072,c=>4,a=>-72,b=>4,d=>2} b824020090170302 b824020090170302 b824020090170302 b824020090170302 - {e=>12459290,c=>0,a=>49,b=>7,d=>0} 310700001a1dbe00 310700001a1dbe00 310700001a1dbe00 310700001a1dbe00 - {e=>265383931,c=>3,a=>-91,b=>4,d=>1} a51c0100fb6fd10f a51c0100fb6fd10f a51c0100fb6fd10f a51c0100fb6fd10f = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>121017809,c=>3,a=>-127,b=>5,d=>0,f=>6} 811d0000d195360706 811d0000d19536070600 811d0000d195360706000000 811d0000d195360706000000 - {e=>38181014,c=>5,a=>-86,b=>4,d=>3,f=>1} aa2c03009698460201 aa2c0300969846020100 aa2c03009698460201000000 aa2c03009698460201000000 - {e=>206063701,c=>2,a=>-126,b=>5,d=>3,f=>4} 821503005548480c04 821503005548480c0400 821503005548480c04000000 821503005548480c04000000 - {e=>102799155,c=>1,a=>-102,b=>5,d=>0,f=>1} 9a0d00003397200601 9a0d0000339720060100 9a0d00003397200601000000 9a0d00003397200601000000 - {e=>35733158,c=>5,a=>48,b=>7,d=>5,f=>4} 302f0500a63e210204 302f0500a63e21020400 302f0500a63e210204000000 302f0500a63e210204000000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>259030873,c=>6,a=>-99,g=>3,b=>6,d=>6,f=>7} 9d360600597f700f1f 9d360600597f700f1f00 9d360600597f700f1f000000 9d360600597f700f1f000000 - {e=>113534093,c=>3,a=>-82,g=>1,b=>7,d=>1,f=>1} ae1f01008d64c40609 ae1f01008d64c4060900 ae1f01008d64c40609000000 ae1f01008d64c40609000000 - {e=>196254634,c=>6,a=>-82,g=>0,b=>2,d=>5,f=>3} ae320500aa9bb20b03 ae320500aa9bb20b0300 ae320500aa9bb20b03000000 ae320500aa9bb20b03000000 - {e=>211207759,c=>7,a=>26,g=>3,b=>3,d=>6,f=>4} 1a3b06004fc6960c1c 1a3b06004fc6960c1c00 1a3b06004fc6960c1c000000 1a3b06004fc6960c1c000000 - {e=>35365642,c=>5,a=>-40,g=>0,b=>6,d=>0,f=>6} d82e00000aa31b0206 d82e00000aa31b020600 d82e00000aa31b0206000000 d82e00000aa31b0206000000 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>95421875,a=>113,d=>4,c=>0,h=>6613,b=>1,g=>2,f=>5} 71010400b305b00515d519 71010400b305b0051500d519 71010400b305b0051500d519 71010400b305b0051500d519 - {e=>219735823,a=>24,d=>6,c=>5,h=>3918,b=>5,g=>1,f=>0} 182d06000fe7180d084e0f 182d06000fe7180d08004e0f 182d06000fe7180d08004e0f 182d06000fe7180d08004e0f - {e=>114141874,a=>-127,d=>4,c=>4,h=>3018,b=>0,g=>0,f=>2} 81200400b2aacd0602ca0b 81200400b2aacd060200ca0b 81200400b2aacd060200ca0b 81200400b2aacd060200ca0b - {e=>116157792,a=>52,d=>7,c=>1,h=>7261,b=>4,g=>0,f=>5} 340c0700606dec06055d1c 340c0700606dec0605005d1c 340c0700606dec0605005d1c 340c0700606dec0605005d1c - {e=>164478627,a=>-23,d=>7,c=>1,h=>2155,b=>4,g=>3,f=>7} e90c0700a3becd091f6b08 e90c0700a3becd091f006b08 e90c0700a3becd091f006b08 e90c0700a3becd091f006b08 = struct umixed_no_pack { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>31308849,a=>-51,d=>6,c=>1,h=>3257,b=>7,g=>2,f=>6,i=>35} cd0f060031bcdd0116b90c23000000 cd0f060031bcdd011600b90c23000000 cd0f060031bcdd011600b90c23000000 cd0f060031bcdd011600b90c23000000 - {e=>200850095,a=>59,d=>3,c=>5,h=>4223,b=>2,g=>3,f=>7,i=>-30} 3b2a0300afbaf80b1f7f10e2ffffff 3b2a0300afbaf80b1f007f10e2ffffff 3b2a0300afbaf80b1f007f10e2ffffff 3b2a0300afbaf80b1f007f10e2ffffff - {e=>2384984,a=>-78,d=>5,c=>3,h=>4113,b=>0,g=>3,f=>7,i=>33} b2180500586424001f111021000000 b2180500586424001f00111021000000 b2180500586424001f00111021000000 b2180500586424001f00111021000000 - {e=>170834401,a=>-122,d=>7,c=>0,h=>305,b=>5,g=>1,f=>3,i=>93} 86050700e1b92e0a0b31015d000000 86050700e1b92e0a0b0031015d000000 86050700e1b92e0a0b0031015d000000 86050700e1b92e0a0b0031015d000000 - {e=>202616049,a=>-1,d=>7,c=>3,h=>4385,b=>5,g=>3,f=>0,i=>101} ff1d0700f1ac130c18211165000000 ff1d0700f1ac130c1800211165000000 ff1d0700f1ac130c1800211165000000 ff1d0700f1ac130c1800211165000000 = struct umixed_no_pack { short a; unsigned char b:3; }; - {a=>-23,b=>3} e9ff03 e9ff0300 e9ff0300 e9ff0300 - {a=>-90,b=>7} a6ff07 a6ff0700 a6ff0700 a6ff0700 - {a=>33,b=>2} 210002 21000200 21000200 21000200 - {a=>-4,b=>6} fcff06 fcff0600 fcff0600 fcff0600 - {a=>-31,b=>5} e1ff05 e1ff0500 e1ff0500 e1ff0500 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-107,b=>7} 95ff27 95ff2700 95ff2700 95ff2700 - {c=>7,a=>6,b=>0} 060038 06003800 06003800 06003800 - {c=>7,a=>47,b=>6} 2f003e 2f003e00 2f003e00 2f003e00 - {c=>2,a=>-33,b=>2} dfff12 dfff1200 dfff1200 dfff1200 - {c=>2,a=>-93,b=>3} a3ff13 a3ff1300 a3ff1300 a3ff1300 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>35,b=>3,d=>7} 2300230700 230023000700 230023000700 230023000700 - {c=>1,a=>-77,b=>0,d=>4} b3ff080400 b3ff08000400 b3ff08000400 b3ff08000400 - {c=>4,a=>-88,b=>6,d=>0} a8ff260000 a8ff26000000 a8ff26000000 a8ff26000000 - {c=>2,a=>-10,b=>6,d=>4} f6ff160400 f6ff16000400 f6ff16000400 f6ff16000400 - {c=>2,a=>17,b=>4,d=>3} 1100140300 110014000300 110014000300 110014000300 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>230924365,c=>5,a=>-34,b=>0,d=>1} deff2801004da0c30d deff280001004da0c30d deff2800010000004da0c30d deff2800010000004da0c30d - {e=>235124443,c=>6,a=>-25,b=>1,d=>0} e7ff310000dbb6030e e7ff31000000dbb6030e e7ff310000000000dbb6030e e7ff310000000000dbb6030e - {e=>218139234,c=>4,a=>-11,b=>4,d=>6} f5ff240600628a000d f5ff24000600628a000d f5ff240006000000628a000d f5ff240006000000628a000d - {e=>96460758,c=>3,a=>-25,b=>1,d=>3} e7ff190300d6dfbf05 e7ff19000300d6dfbf05 e7ff190003000000d6dfbf05 e7ff190003000000d6dfbf05 - {e=>143236939,c=>5,a=>117,b=>3,d=>0} 75002b00004b9f8908 75002b0000004b9f8908 75002b00000000004b9f8908 75002b00000000004b9f8908 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>81182875,c=>2,a=>49,b=>2,d=>5,f=>3} 31001205009bc0d60403 3100120005009bc0d6040300 31001200050000009bc0d60403000000 31001200050000009bc0d60403000000 - {e=>165824077,c=>1,a=>51,b=>0,d=>0,f=>4} 33000800004d46e20904 3300080000004d46e2090400 33000800000000004d46e20904000000 33000800000000004d46e20904000000 - {e=>20080403,c=>1,a=>41,b=>4,d=>7,f=>6} 29000c07001367320106 29000c000700136732010600 29000c00070000001367320106000000 29000c00070000001367320106000000 - {e=>100629693,c=>0,a=>61,b=>6,d=>6,f=>1} 3d00060600bd7cff0501 3d0006000600bd7cff050100 3d00060006000000bd7cff0501000000 3d00060006000000bd7cff0501000000 - {e=>190350127,c=>5,a=>-101,b=>6,d=>0,f=>3} 9bff2e00002f83580b03 9bff2e0000002f83580b0300 9bff2e00000000002f83580b03000000 9bff2e00000000002f83580b03000000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>227828092,c=>0,a=>-16,g=>2,b=>1,d=>0,f=>0} f0ff0100007c61940d10 f0ff010000007c61940d1000 f0ff0100000000007c61940d10000000 f0ff0100000000007c61940d10000000 - {e=>182355747,c=>1,a=>112,g=>0,b=>0,d=>3,f=>7} 70000803002387de0a07 7000080003002387de0a0700 70000800030000002387de0a07000000 70000800030000002387de0a07000000 - {e=>183757219,c=>3,a=>117,g=>3,b=>6,d=>6,f=>2} 75001e0600a3e9f30a1a 75001e000600a3e9f30a1a00 75001e0006000000a3e9f30a1a000000 75001e0006000000a3e9f30a1a000000 - {e=>250036859,c=>6,a=>66,g=>1,b=>2,d=>0,f=>6} 42003200007b42e70e0e 4200320000007b42e70e0e00 42003200000000007b42e70e0e000000 42003200000000007b42e70e0e000000 - {e=>238803723,c=>4,a=>110,g=>0,b=>1,d=>6,f=>1} 6e002106000bdb3b0e01 6e00210006000bdb3b0e0100 6e002100060000000bdb3b0e01000000 6e002100060000000bdb3b0e01000000 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>123354721,a=>77,d=>1,c=>5,h=>6510,b=>2,g=>2,f=>7} 4d002a0100613e5a07176e19 4d002a000100613e5a0717006e19 4d002a0001000000613e5a0717006e19 4d002a0001000000613e5a0717006e19 - {e=>6270702,a=>72,d=>1,c=>2,h=>3832,b=>3,g=>1,f=>4} 4800130100eeae5f000cf80e 480013000100eeae5f000c00f80e 4800130001000000eeae5f000c00f80e 4800130001000000eeae5f000c00f80e - {e=>151397274,a=>-111,d=>6,c=>7,h=>1061,b=>6,g=>3,f=>3} 91ff3e06009a2306091b2504 91ff3e0006009a2306091b002504 91ff3e00060000009a2306091b002504 91ff3e00060000009a2306091b002504 - {e=>139689776,a=>26,d=>3,c=>0,h=>1364,b=>6,g=>1,f=>4} 1a00060300307f53080c5405 1a0006000300307f53080c005405 1a00060003000000307f53080c005405 1a00060003000000307f53080c005405 - {e=>36719821,a=>73,d=>2,c=>4,h=>2049,b=>7,g=>2,f=>3} 4900270200cd4c3002130108 490027000200cd4c300213000108 4900270002000000cd4c300213000108 4900270002000000cd4c300213000108 = struct umixed_no_pack { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>80052423,a=>38,d=>7,c=>5,h=>719,b=>0,g=>1,f=>2,i=>58} 2600280700c780c5040acf023a000000 260028000700c780c5040a00cf023a000000 2600280007000000c780c5040a00cf023a000000 2600280007000000c780c5040a00cf023a000000 - {e=>84879964,a=>-58,d=>2,c=>2,h=>7754,b=>5,g=>2,f=>6,i=>3} c6ff1502005c2a0f05164a1e03000000 c6ff150002005c2a0f0516004a1e03000000 c6ff1500020000005c2a0f0516004a1e03000000 c6ff1500020000005c2a0f0516004a1e03000000 - {e=>208832370,a=>-38,d=>5,c=>6,h=>7000,b=>7,g=>3,f=>1,i=>27} daff3705007287720c19581b1b000000 daff370005007287720c1900581b1b000000 daff3700050000007287720c1900581b1b000000 daff3700050000007287720c1900581b1b000000 - {e=>224138316,a=>99,d=>4,c=>7,h=>2886,b=>1,g=>1,f=>2,i=>-60} 63003904004c145c0d0a460bc4ffffff 6300390004004c145c0d0a00460bc4ffffff 63003900040000004c145c0d0a00460bc4ffffff 63003900040000004c145c0d0a00460bc4ffffff - {e=>208271774,a=>61,d=>7,c=>5,h=>4345,b=>5,g=>1,f=>2,i=>-10} 3d002d07009ef9690c0af910f6ffffff 3d002d0007009ef9690c0a00f910f6ffffff 3d002d00070000009ef9690c0a00f910f6ffffff 3d002d00070000009ef9690c0a00f910f6ffffff = struct umixed_no_pack { int a; unsigned char b:3; }; - {a=>77,b=>5} 4d00000005 4d0000000500 4d00000005000000 4d00000005000000 - {a=>-91,b=>1} a5ffffff01 a5ffffff0100 a5ffffff01000000 a5ffffff01000000 - {a=>42,b=>3} 2a00000003 2a0000000300 2a00000003000000 2a00000003000000 - {a=>-15,b=>3} f1ffffff03 f1ffffff0300 f1ffffff03000000 f1ffffff03000000 - {a=>-34,b=>2} deffffff02 deffffff0200 deffffff02000000 deffffff02000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>123,b=>7} 7b00000007 7b0000000700 7b00000007000000 7b00000007000000 - {c=>5,a=>35,b=>6} 230000002e 230000002e00 230000002e000000 230000002e000000 - {c=>3,a=>-76,b=>4} b4ffffff1c b4ffffff1c00 b4ffffff1c000000 b4ffffff1c000000 - {c=>6,a=>84,b=>4} 5400000034 540000003400 5400000034000000 5400000034000000 - {c=>5,a=>-26,b=>5} e6ffffff2d e6ffffff2d00 e6ffffff2d000000 e6ffffff2d000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>89,b=>0,d=>2} 59000000300200 5900000030000200 5900000030000200 5900000030000200 - {c=>2,a=>71,b=>6,d=>6} 47000000160600 4700000016000600 4700000016000600 4700000016000600 - {c=>6,a=>43,b=>6,d=>4} 2b000000360400 2b00000036000400 2b00000036000400 2b00000036000400 - {c=>7,a=>74,b=>6,d=>1} 4a0000003e0100 4a0000003e000100 4a0000003e000100 4a0000003e000100 - {c=>1,a=>24,b=>1,d=>7} 18000000090700 1800000009000700 1800000009000700 1800000009000700 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>258411058,c=>2,a=>-56,b=>3,d=>1} c8ffffff130100320a670f c8ffffff13000100320a670f c8ffffff13000100320a670f c8ffffff13000100320a670f - {e=>192775493,c=>2,a=>6,b=>7,d=>4} 0600000017040045857d0b 060000001700040045857d0b 060000001700040045857d0b 060000001700040045857d0b - {e=>70245712,c=>3,a=>-1,b=>7,d=>1} ffffffff1f010050dd2f04 ffffffff1f00010050dd2f04 ffffffff1f00010050dd2f04 ffffffff1f00010050dd2f04 - {e=>100376726,c=>7,a=>115,b=>0,d=>7} 7300000038070096a0fb05 730000003800070096a0fb05 730000003800070096a0fb05 730000003800070096a0fb05 - {e=>261070995,c=>7,a=>-47,b=>1,d=>0} d1ffffff39000093a08f0f d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f d1ffffff3900000093a08f0f = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>202903687,c=>1,a=>-41,b=>7,d=>0,f=>7} d7ffffff0f00008710180c07 d7ffffff0f0000008710180c0700 d7ffffff0f0000008710180c07000000 d7ffffff0f0000008710180c07000000 - {e=>156182618,c=>1,a=>83,b=>7,d=>1,f=>1} 530000000f01005a284f0901 530000000f0001005a284f090100 530000000f0001005a284f0901000000 530000000f0001005a284f0901000000 - {e=>30752427,c=>5,a=>-26,b=>6,d=>3,f=>6} e6ffffff2e0300ab3ed50106 e6ffffff2e000300ab3ed5010600 e6ffffff2e000300ab3ed50106000000 e6ffffff2e000300ab3ed50106000000 - {e=>13986533,c=>2,a=>73,b=>0,d=>3,f=>0} 49000000100300e56ad50000 4900000010000300e56ad5000000 4900000010000300e56ad50000000000 4900000010000300e56ad50000000000 - {e=>97832562,c=>7,a=>67,b=>3,d=>1,f=>6} 430000003b010072ced40506 430000003b00010072ced4050600 430000003b00010072ced40506000000 430000003b00010072ced40506000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>224204808,c=>0,a=>-125,g=>3,b=>2,d=>6,f=>5} 83ffffff02060008185d0d1d 83ffffff0200060008185d0d1d00 83ffffff0200060008185d0d1d000000 83ffffff0200060008185d0d1d000000 - {e=>248110203,c=>2,a=>32,g=>2,b=>2,d=>2,f=>2} 200000001202007bdcc90e12 20000000120002007bdcc90e1200 20000000120002007bdcc90e12000000 20000000120002007bdcc90e12000000 - {e=>176808355,c=>3,a=>74,g=>3,b=>7,d=>1,f=>0} 4a0000001f0100a3e1890a18 4a0000001f000100a3e1890a1800 4a0000001f000100a3e1890a18000000 4a0000001f000100a3e1890a18000000 - {e=>200366377,c=>3,a=>-125,g=>2,b=>4,d=>6,f=>4} 83ffffff1c06002959f10b14 83ffffff1c0006002959f10b1400 83ffffff1c0006002959f10b14000000 83ffffff1c0006002959f10b14000000 - {e=>40965455,c=>3,a=>107,g=>2,b=>0,d=>3,f=>4} 6b0000001803004f15710214 6b000000180003004f1571021400 6b000000180003004f15710214000000 6b000000180003004f15710214000000 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>261834522,a=>113,d=>2,c=>3,h=>1720,b=>5,g=>2,f=>7} 710000001d02001a479b0f17b806 710000001d0002001a479b0f1700b806 710000001d0002001a479b0f1700b806 710000001d0002001a479b0f1700b806 - {e=>81177197,a=>52,d=>7,c=>0,h=>7442,b=>0,g=>0,f=>3} 340000000007006daad60403121d 34000000000007006daad6040300121d 34000000000007006daad6040300121d 34000000000007006daad6040300121d - {e=>252859983,a=>117,d=>4,c=>2,h=>3820,b=>7,g=>1,f=>3} 750000001704004f56120f0bec0e 75000000170004004f56120f0b00ec0e 75000000170004004f56120f0b00ec0e 75000000170004004f56120f0b00ec0e - {e=>260755755,a=>39,d=>6,c=>3,h=>5333,b=>4,g=>1,f=>6} 270000001c06002bd18a0f0ed514 270000001c0006002bd18a0f0e00d514 270000001c0006002bd18a0f0e00d514 270000001c0006002bd18a0f0e00d514 - {e=>197646476,a=>44,d=>1,c=>0,h=>1255,b=>0,g=>1,f=>7} 2c0000000001008cd8c70b0fe704 2c000000000001008cd8c70b0f00e704 2c000000000001008cd8c70b0f00e704 2c000000000001008cd8c70b0f00e704 = struct umixed_no_pack { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>3714946,a=>-88,d=>6,c=>2,h=>3065,b=>4,g=>0,f=>1,i=>-7} a8ffffff14060082af380001f90bf9ffffff a8ffffff1400060082af38000100f90bf9ffffff a8ffffff1400060082af38000100f90bf9ffffff a8ffffff1400060082af38000100f90bf9ffffff - {e=>217660046,a=>63,d=>4,c=>2,h=>4968,b=>5,g=>3,f=>5,i=>-17} 3f0000001504008e3af90c1d6813efffffff 3f000000150004008e3af90c1d006813efffffff 3f000000150004008e3af90c1d006813efffffff 3f000000150004008e3af90c1d006813efffffff - {e=>50265395,a=>101,d=>1,c=>3,h=>1816,b=>7,g=>1,f=>7,i=>113} 650000001f010033fdfe020f180771000000 650000001f00010033fdfe020f00180771000000 650000001f00010033fdfe020f00180771000000 650000001f00010033fdfe020f00180771000000 - {e=>165795744,a=>11,d=>5,c=>4,h=>2771,b=>2,g=>3,f=>6,i=>-6} 0b000000220500a0d7e1091ed30afaffffff 0b00000022000500a0d7e1091e00d30afaffffff 0b00000022000500a0d7e1091e00d30afaffffff 0b00000022000500a0d7e1091e00d30afaffffff - {e=>246643849,a=>56,d=>5,c=>2,h=>3254,b=>0,g=>3,f=>7,i=>-43} 38000000100500897cb30e1fb60cd5ffffff 3800000010000500897cb30e1f00b60cd5ffffff 3800000010000500897cb30e1f00b60cd5ffffff 3800000010000500897cb30e1f00b60cd5ffffff = struct umixed_no_pack { long a; unsigned char b:3; }; - {a=>-22,b=>3} eaffffff03 eaffffff0300 eaffffff03000000 eaffffff03000000 - {a=>15,b=>0} 0f00000000 0f0000000000 0f00000000000000 0f00000000000000 - {a=>-58,b=>4} c6ffffff04 c6ffffff0400 c6ffffff04000000 c6ffffff04000000 - {a=>39,b=>0} 2700000000 270000000000 2700000000000000 2700000000000000 - {a=>55,b=>0} 3700000000 370000000000 3700000000000000 3700000000000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>53,b=>3} 3500000033 350000003300 3500000033000000 3500000033000000 - {c=>6,a=>-101,b=>4} 9bffffff34 9bffffff3400 9bffffff34000000 9bffffff34000000 - {c=>6,a=>62,b=>1} 3e00000031 3e0000003100 3e00000031000000 3e00000031000000 - {c=>5,a=>-63,b=>5} c1ffffff2d c1ffffff2d00 c1ffffff2d000000 c1ffffff2d000000 - {c=>2,a=>26,b=>4} 1a00000014 1a0000001400 1a00000014000000 1a00000014000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>7,a=>84,b=>5,d=>0} 540000003d0000 540000003d000000 540000003d000000 540000003d000000 - {c=>2,a=>-4,b=>6,d=>7} fcffffff160700 fcffffff16000700 fcffffff16000700 fcffffff16000700 - {c=>0,a=>-1,b=>2,d=>4} ffffffff020400 ffffffff02000400 ffffffff02000400 ffffffff02000400 - {c=>5,a=>75,b=>2,d=>1} 4b0000002a0100 4b0000002a000100 4b0000002a000100 4b0000002a000100 - {c=>1,a=>-35,b=>2,d=>2} ddffffff0a0200 ddffffff0a000200 ddffffff0a000200 ddffffff0a000200 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>12846720,c=>5,a=>-2,b=>6,d=>4} feffffff2e04008006c400 feffffff2e0004008006c400 feffffff2e0004008006c400 feffffff2e0004008006c400 - {e=>122850482,c=>0,a=>44,b=>4,d=>5} 2c000000040500b28c5207 2c00000004000500b28c5207 2c00000004000500b28c5207 2c00000004000500b28c5207 - {e=>110531108,c=>0,a=>6,b=>7,d=>5} 0600000007050024929606 060000000700050024929606 060000000700050024929606 060000000700050024929606 - {e=>172922041,c=>3,a=>-21,b=>6,d=>1} ebffffff1e0100b9944e0a ebffffff1e000100b9944e0a ebffffff1e000100b9944e0a ebffffff1e000100b9944e0a - {e=>55535187,c=>1,a=>-73,b=>2,d=>3} b7ffffff0a030053664f03 b7ffffff0a00030053664f03 b7ffffff0a00030053664f03 b7ffffff0a00030053664f03 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>66805985,c=>5,a=>115,b=>6,d=>2,f=>6} 730000002e0200e160fb0306 730000002e000200e160fb030600 730000002e000200e160fb0306000000 730000002e000200e160fb0306000000 - {e=>217412345,c=>5,a=>83,b=>2,d=>7,f=>1} 530000002a0700f972f50c01 530000002a000700f972f50c0100 530000002a000700f972f50c01000000 530000002a000700f972f50c01000000 - {e=>143288860,c=>4,a=>80,b=>4,d=>7,f=>2} 500000002407001c6a8a0802 50000000240007001c6a8a080200 50000000240007001c6a8a0802000000 50000000240007001c6a8a0802000000 - {e=>80533529,c=>3,a=>-56,b=>0,d=>4,f=>3} c8ffffff18040019d8cc0403 c8ffffff1800040019d8cc040300 c8ffffff1800040019d8cc0403000000 c8ffffff1800040019d8cc0403000000 - {e=>76049210,c=>4,a=>41,b=>4,d=>0,f=>2} 290000002400003a6b880402 29000000240000003a6b88040200 29000000240000003a6b880402000000 29000000240000003a6b880402000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>33149186,c=>0,a=>-66,g=>2,b=>6,d=>0,f=>2} beffffff06000002d1f90112 beffffff0600000002d1f9011200 beffffff0600000002d1f90112000000 beffffff0600000002d1f90112000000 - {e=>24018713,c=>6,a=>42,g=>0,b=>3,d=>1,f=>7} 2a000000330100197f6e0107 2a00000033000100197f6e010700 2a00000033000100197f6e0107000000 2a00000033000100197f6e0107000000 - {e=>238049791,c=>1,a=>-89,g=>0,b=>5,d=>4,f=>3} a7ffffff0d0400ff59300e03 a7ffffff0d000400ff59300e0300 a7ffffff0d000400ff59300e03000000 a7ffffff0d000400ff59300e03000000 - {e=>45452680,c=>4,a=>85,g=>3,b=>5,d=>4,f=>2} 55000000250400888db5021a 5500000025000400888db5021a00 5500000025000400888db5021a000000 5500000025000400888db5021a000000 - {e=>127560049,c=>0,a=>38,g=>3,b=>5,d=>1,f=>4} 2600000005010071699a071c 260000000500010071699a071c00 260000000500010071699a071c000000 260000000500010071699a071c000000 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>143259895,a=>-70,d=>4,c=>3,h=>4312,b=>6,g=>0,f=>5} baffffff1e0400f7f8890805d810 baffffff1e000400f7f889080500d810 baffffff1e000400f7f889080500d810 baffffff1e000400f7f889080500d810 - {e=>130209381,a=>75,d=>3,c=>6,h=>1172,b=>2,g=>1,f=>0} 4b00000032030065d6c207089404 4b0000003200030065d6c20708009404 4b0000003200030065d6c20708009404 4b0000003200030065d6c20708009404 - {e=>169515883,a=>36,d=>3,c=>7,h=>7983,b=>7,g=>2,f=>0} 240000003f03006b9b1a0a102f1f 240000003f0003006b9b1a0a10002f1f 240000003f0003006b9b1a0a10002f1f 240000003f0003006b9b1a0a10002f1f - {e=>204680465,a=>-15,d=>2,c=>5,h=>8017,b=>2,g=>0,f=>6} f1ffffff2a0200112d330c06511f f1ffffff2a000200112d330c0600511f f1ffffff2a000200112d330c0600511f f1ffffff2a000200112d330c0600511f - {e=>243063688,a=>85,d=>2,c=>6,h=>342,b=>2,g=>0,f=>3} 5500000032020088db7c0e035601 550000003200020088db7c0e03005601 550000003200020088db7c0e03005601 550000003200020088db7c0e03005601 = struct umixed_no_pack { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; signed int i; }; - {e=>256419346,a=>25,d=>4,c=>1,h=>4924,b=>3,g=>1,f=>2,i=>-112} 190000000b040012a6480f0a3c1390ffffff 190000000b00040012a6480f0a003c1390ffffff 190000000b00040012a6480f0a003c1390ffffff 190000000b00040012a6480f0a003c1390ffffff - {e=>155022430,a=>75,d=>3,c=>2,h=>362,b=>7,g=>2,f=>1,i=>-49} 4b0000001703005e743d09116a01cfffffff 4b000000170003005e743d0911006a01cfffffff 4b000000170003005e743d0911006a01cfffffff 4b000000170003005e743d0911006a01cfffffff - {e=>190447867,a=>-73,d=>1,c=>2,h=>2876,b=>7,g=>0,f=>7,i=>1} b7ffffff170100fb005a0b073c0b01000000 b7ffffff17000100fb005a0b07003c0b01000000 b7ffffff17000100fb005a0b07003c0b01000000 b7ffffff17000100fb005a0b07003c0b01000000 - {e=>179690236,a=>9,d=>7,c=>0,h=>7267,b=>7,g=>1,f=>0,i=>-85} 09000000070700fcdab50a08631cabffffff 0900000007000700fcdab50a0800631cabffffff 0900000007000700fcdab50a0800631cabffffff 0900000007000700fcdab50a0800631cabffffff - {e=>104415787,a=>74,d=>7,c=>3,h=>3028,b=>4,g=>3,f=>7,i=>92} 4a0000001c07002b4239061fd40b5c000000 4a0000001c0007002b4239061f00d40b5c000000 4a0000001c0007002b4239061f00d40b5c000000 4a0000001c0007002b4239061f00d40b5c000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; }; - {a=>1} 01 01 01 01 - {a=>0} 00 00 00 00 - {a=>1} 01 01 01 01 - {a=>3} 03 03 03 03 - {a=>5} 05 05 05 05 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; }; - {a=>4,b=>3} 1c 1c 1c 1c - {a=>5,b=>6} 35 35 35 35 - {a=>1,b=>3} 19 19 19 19 - {a=>7,b=>6} 37 37 37 37 - {a=>1,b=>0} 01 01 01 01 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>7,a=>2,b=>6} 320700 320700 320700 320700 - {c=>3,a=>1,b=>4} 210300 210300 210300 210300 - {c=>0,a=>2,b=>1} 0a0000 0a0000 0a0000 0a0000 - {c=>7,a=>6,b=>6} 360700 360700 360700 360700 - {c=>6,a=>5,b=>3} 1d0600 1d0600 1d0600 1d0600 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>3,a=>4,b=>6,d=>50977657} 34030079db0903 34030079db0903 34030079db0903 34030079db0903 - {c=>4,a=>1,b=>0,d=>156580251} 0104009b395509 0104009b395509 0104009b395509 0104009b395509 - {c=>0,a=>6,b=>1,d=>120765803} 0e00006bbd3207 0e00006bbd3207 0e00006bbd3207 0e00006bbd3207 - {c=>5,a=>6,b=>4,d=>190259749} 2605002522570b 2605002522570b 2605002522570b 2605002522570b - {c=>3,a=>6,b=>1,d=>14877875} 0e0300b304e300 0e0300b304e300 0e0300b304e300 0e0300b304e300 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>7,c=>0,a=>5,b=>4,d=>131151049} 250000c934d10707 250000c934d10707 250000c934d10707 250000c934d10707 - {e=>4,c=>6,a=>0,b=>3,d=>27196562} 18060092fc9e0104 18060092fc9e0104 18060092fc9e0104 18060092fc9e0104 - {e=>5,c=>2,a=>5,b=>2,d=>79198194} 150200f277b80405 150200f277b80405 150200f277b80405 150200f277b80405 - {e=>1,c=>6,a=>1,b=>1,d=>53011008} 09060040e2280301 09060040e2280301 09060040e2280301 09060040e2280301 - {e=>3,c=>0,a=>3,b=>5,d=>229669114} 2b0000fa78b00d03 2b0000fa78b00d03 2b0000fa78b00d03 2b0000fa78b00d03 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>7,c=>4,a=>3,b=>2,d=>224213968,f=>0} 130400d03b5d0d07 130400d03b5d0d07 130400d03b5d0d07 130400d03b5d0d07 - {e=>5,c=>0,a=>6,b=>7,d=>149199438,f=>2} 3e00004e9ae40815 3e00004e9ae40815 3e00004e9ae40815 3e00004e9ae40815 - {e=>4,c=>7,a=>4,b=>6,d=>212284222,f=>0} 3407003e33a70c04 3407003e33a70c04 3407003e33a70c04 3407003e33a70c04 - {e=>0,c=>4,a=>1,b=>3,d=>183266435,f=>3} 190400836cec0a18 190400836cec0a18 190400836cec0a18 190400836cec0a18 - {e=>3,c=>3,a=>2,b=>0,d=>193465720,f=>3} 020300780d880b1b 020300780d880b1b 020300780d880b1b 020300780d880b1b = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>2,c=>0,a=>4,g=>7279,b=>3,d=>226086089,f=>0} 1c0000c9cc790d026f1c 1c0000c9cc790d026f1c 1c0000c9cc790d026f1c 1c0000c9cc790d026f1c - {e=>4,c=>1,a=>5,g=>1474,b=>6,d=>135043372,f=>2} 3501002c990c0814c205 3501002c990c0814c205 3501002c990c0814c205 3501002c990c0814c205 - {e=>0,c=>2,a=>4,g=>4289,b=>6,d=>167538358,f=>2} 340200b66efc0910c110 340200b66efc0910c110 340200b66efc0910c110 340200b66efc0910c110 - {e=>3,c=>4,a=>0,g=>1460,b=>0,d=>191785714,f=>1} 000400f26a6e0b0bb405 000400f26a6e0b0bb405 000400f26a6e0b0bb405 000400f26a6e0b0bb405 - {e=>1,c=>0,a=>4,g=>4192,b=>7,d=>193646184,f=>0} 3c000068ce8a0b016010 3c000068ce8a0b016010 3c000068ce8a0b016010 3c000068ce8a0b016010 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>2,a=>6,d=>72412399,c=>7,h=>156,b=>2,g=>1487,f=>3} 160700efec50041acf059c 160700efec50041acf059c 160700efec50041acf059c 160700efec50041acf059c - {e=>6,a=>3,d=>227300670,c=>1,h=>201,b=>3,g=>4275,f=>1} 1b01003e558c0d0eb310c9 1b01003e558c0d0eb310c9 1b01003e558c0d0eb310c9 1b01003e558c0d0eb310c9 - {e=>3,a=>7,d=>180879568,c=>1,h=>224,b=>5,g=>7892,f=>3} 2f0100d000c80a1bd41ee0 2f0100d000c80a1bd41ee0 2f0100d000c80a1bd41ee0 2f0100d000c80a1bd41ee0 - {e=>3,a=>0,d=>137129408,c=>6,h=>116,b=>2,g=>269,f=>0} 100600c06d2c08030d0174 100600c06d2c08030d0174 100600c06d2c08030d0174 100600c06d2c08030d0174 - {e=>1,a=>3,d=>206927027,c=>2,h=>226,b=>7,g=>3383,f=>2} 3b0200b374550c11370de2 3b0200b374550c11370de2 3b0200b374550c11370de2 3b0200b374550c11370de2 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; }; - {a=>5,b=>0} 0500 0500 0500 0500 - {a=>53,b=>0} 3500 3500 3500 3500 - {a=>83,b=>5} 5305 5305 5305 5305 - {a=>4,b=>3} 0403 0403 0403 0403 - {a=>-108,b=>1} 9401 9401 9401 9401 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>4,a=>-89,b=>5} a725 a725 a725 a725 - {c=>3,a=>-94,b=>1} a219 a219 a219 a219 - {c=>2,a=>41,b=>1} 2911 2911 2911 2911 - {c=>0,a=>-104,b=>5} 9805 9805 9805 9805 - {c=>4,a=>123,b=>7} 7b27 7b27 7b27 7b27 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>1,a=>26,b=>2,d=>6} 1a0a0600 1a0a0600 1a0a0600 1a0a0600 - {c=>0,a=>41,b=>3,d=>7} 29030700 29030700 29030700 29030700 - {c=>0,a=>-60,b=>7,d=>5} c4070500 c4070500 c4070500 c4070500 - {c=>4,a=>21,b=>5,d=>1} 15250100 15250100 15250100 15250100 - {c=>1,a=>-57,b=>3,d=>7} c70b0700 c70b0700 c70b0700 c70b0700 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>251650091,c=>3,a=>18,b=>2,d=>6} 121a06002be0ff0e 121a06002be0ff0e 121a06002be0ff0e 121a06002be0ff0e - {e=>184337798,c=>4,a=>67,b=>1,d=>5} 4321050086c5fc0a 4321050086c5fc0a 4321050086c5fc0a 4321050086c5fc0a - {e=>18454609,c=>4,a=>-22,b=>2,d=>3} ea22030051981901 ea22030051981901 ea22030051981901 ea22030051981901 - {e=>172433341,c=>6,a=>76,b=>6,d=>7} 4c360700bd1f470a 4c360700bd1f470a 4c360700bd1f470a 4c360700bd1f470a - {e=>134101335,c=>2,a=>103,b=>0,d=>4} 671004005739fe07 671004005739fe07 671004005739fe07 671004005739fe07 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>200236336,c=>5,a=>-24,b=>2,d=>3,f=>1} e82a0300305def0b01 e82a0300305def0b01 e82a0300305def0b01 e82a0300305def0b01 - {e=>16740769,c=>4,a=>-26,b=>0,d=>1,f=>3} e6200100a171ff0003 e6200100a171ff0003 e6200100a171ff0003 e6200100a171ff0003 - {e=>6071845,c=>4,a=>121,b=>4,d=>1,f=>2} 7924010025a65c0002 7924010025a65c0002 7924010025a65c0002 7924010025a65c0002 - {e=>24355757,c=>3,a=>-75,b=>5,d=>2,f=>2} b51d0200ada3730102 b51d0200ada3730102 b51d0200ada3730102 b51d0200ada3730102 - {e=>167185341,c=>2,a=>21,b=>6,d=>4,f=>4} 15160400bd0bf70904 15160400bd0bf70904 15160400bd0bf70904 15160400bd0bf70904 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>98259173,c=>2,a=>-44,g=>2,b=>6,d=>2,f=>2} d4160200e550db0512 d4160200e550db0512 d4160200e550db0512 d4160200e550db0512 - {e=>101458287,c=>3,a=>107,g=>0,b=>2,d=>7,f=>2} 6b1a07006f210c0602 6b1a07006f210c0602 6b1a07006f210c0602 6b1a07006f210c0602 - {e=>73372275,c=>5,a=>-94,g=>0,b=>1,d=>7,f=>1} a229070073925f0401 a229070073925f0401 a229070073925f0401 a229070073925f0401 - {e=>168006158,c=>5,a=>-34,g=>0,b=>0,d=>0,f=>5} de2800000e92030a05 de2800000e92030a05 de2800000e92030a05 de2800000e92030a05 - {e=>251692646,c=>0,a=>58,g=>1,b=>7,d=>2,f=>6} 3a0702006686000f0e 3a0702006686000f0e 3a0702006686000f0e 3a0702006686000f0e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>72582175,a=>66,d=>0,c=>0,h=>6020,b=>1,g=>0,f=>1} 420100001f845304018417 420100001f845304018417 420100001f845304018417 420100001f845304018417 - {e=>184039552,a=>30,d=>0,c=>3,h=>2419,b=>7,g=>2,f=>0} 1e1f00008038f80a107309 1e1f00008038f80a107309 1e1f00008038f80a107309 1e1f00008038f80a107309 - {e=>80164592,a=>-49,d=>3,c=>6,h=>7825,b=>5,g=>0,f=>7} cf350300f036c70407911e cf350300f036c70407911e cf350300f036c70407911e cf350300f036c70407911e - {e=>159880110,a=>-107,d=>6,c=>0,h=>4520,b=>3,g=>1,f=>4} 95030600ae9387090ca811 95030600ae9387090ca811 95030600ae9387090ca811 95030600ae9387090ca811 - {e=>237506163,a=>-31,d=>6,c=>0,h=>1061,b=>7,g=>3,f=>6} e1070600730e280e1e2504 e1070600730e280e1e2504 e1070600730e280e1e2504 e1070600730e280e1e2504 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>75173975,a=>0,d=>7,c=>5,h=>219,b=>2,g=>0,f=>2,i=>75} 002a070057107b0402db004b 002a070057107b0402db004b 002a070057107b0402db004b 002a070057107b0402db004b - {e=>14359521,a=>-73,d=>7,c=>3,h=>7081,b=>3,g=>1,f=>4,i=>127} b71b0700e11bdb000ca91b7f b71b0700e11bdb000ca91b7f b71b0700e11bdb000ca91b7f b71b0700e11bdb000ca91b7f - {e=>93479715,a=>-14,d=>2,c=>4,h=>5837,b=>2,g=>0,f=>5,i=>120} f22202002363920505cd1678 f22202002363920505cd1678 f22202002363920505cd1678 f22202002363920505cd1678 - {e=>240985188,a=>123,d=>3,c=>4,h=>1817,b=>6,g=>0,f=>0,i=>75} 7b26030064245d0e0019074b 7b26030064245d0e0019074b 7b26030064245d0e0019074b 7b26030064245d0e0019074b - {e=>31234999,a=>99,d=>6,c=>3,h=>4938,b=>0,g=>3,f=>3,i=>200} 63180600b79bdc011b4a13c8 63180600b79bdc011b4a13c8 63180600b79bdc011b4a13c8 63180600b79bdc011b4a13c8 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; }; - {a=>-20,b=>2} ecff02 ecff02 ecff02 ecff02 - {a=>51,b=>0} 330000 330000 330000 330000 - {a=>-61,b=>7} c3ff07 c3ff07 c3ff07 c3ff07 - {a=>109,b=>2} 6d0002 6d0002 6d0002 6d0002 - {a=>3,b=>5} 030005 030005 030005 030005 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>91,b=>0} 5b0008 5b0008 5b0008 5b0008 - {c=>6,a=>40,b=>1} 280031 280031 280031 280031 - {c=>3,a=>73,b=>7} 49001f 49001f 49001f 49001f - {c=>2,a=>-70,b=>0} baff10 baff10 baff10 baff10 - {c=>3,a=>-86,b=>2} aaff1a aaff1a aaff1a aaff1a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>7,a=>-16,b=>2,d=>0} f0ff3a0000 f0ff3a0000 f0ff3a0000 f0ff3a0000 - {c=>2,a=>120,b=>3,d=>3} 7800130300 7800130300 7800130300 7800130300 - {c=>1,a=>109,b=>6,d=>6} 6d000e0600 6d000e0600 6d000e0600 6d000e0600 - {c=>2,a=>109,b=>7,d=>5} 6d00170500 6d00170500 6d00170500 6d00170500 - {c=>7,a=>35,b=>6,d=>4} 23003e0400 23003e0400 23003e0400 23003e0400 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>242573218,c=>0,a=>-82,b=>5,d=>3} aeff050300a25f750e aeff050300a25f750e aeff050300a25f750e aeff050300a25f750e - {e=>30225390,c=>1,a=>-90,b=>1,d=>0} a6ff090000ee33cd01 a6ff090000ee33cd01 a6ff090000ee33cd01 a6ff090000ee33cd01 - {e=>42673361,c=>7,a=>2,b=>7,d=>4} 02003f0400d1248b02 02003f0400d1248b02 02003f0400d1248b02 02003f0400d1248b02 - {e=>177618799,c=>1,a=>-74,b=>4,d=>0} b6ff0c00006f3f960a b6ff0c00006f3f960a b6ff0c00006f3f960a b6ff0c00006f3f960a - {e=>162146214,c=>1,a=>9,b=>5,d=>2} 09000d0200a627aa09 09000d0200a627aa09 09000d0200a627aa09 09000d0200a627aa09 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>51386433,c=>7,a=>-38,b=>4,d=>2,f=>2} daff3c02004118100302 daff3c02004118100302 daff3c02004118100302 daff3c02004118100302 - {e=>119132246,c=>3,a=>-125,b=>6,d=>1,f=>0} 83ff1e010056d0190700 83ff1e010056d0190700 83ff1e010056d0190700 83ff1e010056d0190700 - {e=>28309628,c=>6,a=>-101,b=>5,d=>5,f=>0} 9bff3505007cf8af0100 9bff3505007cf8af0100 9bff3505007cf8af0100 9bff3505007cf8af0100 - {e=>151543114,c=>3,a=>3,b=>2,d=>7,f=>5} 03001a07004a5d080905 03001a07004a5d080905 03001a07004a5d080905 03001a07004a5d080905 - {e=>213132804,c=>5,a=>-95,b=>4,d=>0,f=>0} a1ff2c00000426b40c00 a1ff2c00000426b40c00 a1ff2c00000426b40c00 a1ff2c00000426b40c00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>142590409,c=>6,a=>-41,g=>0,b=>6,d=>3,f=>7} d7ff360300c9c17f0807 d7ff360300c9c17f0807 d7ff360300c9c17f0807 d7ff360300c9c17f0807 - {e=>97470275,c=>4,a=>81,g=>1,b=>6,d=>6,f=>3} 51002606004347cf050b 51002606004347cf050b 51002606004347cf050b 51002606004347cf050b - {e=>267791921,c=>1,a=>34,g=>1,b=>7,d=>2,f=>1} 22000f0200312ef60f09 22000f0200312ef60f09 22000f0200312ef60f09 22000f0200312ef60f09 - {e=>41800024,c=>3,a=>-80,g=>2,b=>0,d=>0,f=>1} b0ff18000058d17d0211 b0ff18000058d17d0211 b0ff18000058d17d0211 b0ff18000058d17d0211 - {e=>258096646,c=>0,a=>-31,g=>2,b=>3,d=>0,f=>3} e1ff030000063e620f13 e1ff030000063e620f13 e1ff030000063e620f13 e1ff030000063e620f13 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>122313407,a=>19,d=>3,c=>0,h=>650,b=>1,g=>1,f=>3} 1300010300bf5a4a070b8a02 1300010300bf5a4a070b8a02 1300010300bf5a4a070b8a02 1300010300bf5a4a070b8a02 - {e=>94490750,a=>35,d=>1,c=>1,h=>5999,b=>4,g=>1,f=>0} 23000c01007ed0a105086f17 23000c01007ed0a105086f17 23000c01007ed0a105086f17 23000c01007ed0a105086f17 - {e=>76168925,a=>-99,d=>0,c=>3,h=>6309,b=>6,g=>0,f=>6} 9dff1e0000dd3e8a0406a518 9dff1e0000dd3e8a0406a518 9dff1e0000dd3e8a0406a518 9dff1e0000dd3e8a0406a518 - {e=>69639528,a=>-114,d=>1,c=>7,h=>2240,b=>2,g=>1,f=>7} 8eff3a0100689d26040fc008 8eff3a0100689d26040fc008 8eff3a0100689d26040fc008 8eff3a0100689d26040fc008 - {e=>138012526,a=>109,d=>3,c=>5,h=>7241,b=>3,g=>2,f=>0} 6d002b03006ee7390810491c 6d002b03006ee7390810491c 6d002b03006ee7390810491c 6d002b03006ee7390810491c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>213997424,a=>12,d=>4,c=>5,h=>6891,b=>4,g=>0,f=>5,i=>155} 0c002c04007057c10c05eb1a9b 0c002c04007057c10c05eb1a9b 0c002c04007057c10c05eb1a9b 0c002c04007057c10c05eb1a9b - {e=>80148154,a=>4,d=>3,c=>3,h=>5605,b=>4,g=>2,f=>7,i=>187} 04001c0300baf6c60417e515bb 04001c0300baf6c60417e515bb 04001c0300baf6c60417e515bb 04001c0300baf6c60417e515bb - {e=>17679511,a=>103,d=>4,c=>7,h=>793,b=>4,g=>1,f=>5,i=>154} 67003c040097c40d010d19039a 67003c040097c40d010d19039a 67003c040097c40d010d19039a 67003c040097c40d010d19039a - {e=>234963446,a=>-109,d=>7,c=>4,h=>4806,b=>2,g=>2,f=>0,i=>153} 93ff220700f641010e10c61299 93ff220700f641010e10c61299 93ff220700f641010e10c61299 93ff220700f641010e10c61299 - {e=>233686042,a=>26,d=>5,c=>3,h=>6938,b=>4,g=>1,f=>3,i=>229} 1a001c05001ac4ed0d0b1a1be5 1a001c05001ac4ed0d0b1a1be5 1a001c05001ac4ed0d0b1a1be5 1a001c05001ac4ed0d0b1a1be5 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; }; - {a=>-76,b=>0} b4ffffff00 b4ffffff00 b4ffffff00 b4ffffff00 - {a=>-65,b=>4} bfffffff04 bfffffff04 bfffffff04 bfffffff04 - {a=>13,b=>3} 0d00000003 0d00000003 0d00000003 0d00000003 - {a=>79,b=>5} 4f00000005 4f00000005 4f00000005 4f00000005 - {a=>-81,b=>4} afffffff04 afffffff04 afffffff04 afffffff04 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>84,b=>1} 5400000019 5400000019 5400000019 5400000019 - {c=>1,a=>127,b=>1} 7f00000009 7f00000009 7f00000009 7f00000009 - {c=>5,a=>-114,b=>0} 8effffff28 8effffff28 8effffff28 8effffff28 - {c=>3,a=>108,b=>1} 6c00000019 6c00000019 6c00000019 6c00000019 - {c=>7,a=>9,b=>1} 0900000039 0900000039 0900000039 0900000039 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>-62,b=>1,d=>4} c2ffffff310400 c2ffffff310400 c2ffffff310400 c2ffffff310400 - {c=>7,a=>74,b=>5,d=>0} 4a0000003d0000 4a0000003d0000 4a0000003d0000 4a0000003d0000 - {c=>3,a=>-122,b=>2,d=>7} 86ffffff1a0700 86ffffff1a0700 86ffffff1a0700 86ffffff1a0700 - {c=>3,a=>-73,b=>7,d=>2} b7ffffff1f0200 b7ffffff1f0200 b7ffffff1f0200 b7ffffff1f0200 - {c=>1,a=>13,b=>5,d=>2} 0d0000000d0200 0d0000000d0200 0d0000000d0200 0d0000000d0200 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>130106456,c=>4,a=>127,b=>7,d=>3} 7f0000002703005844c107 7f0000002703005844c107 7f0000002703005844c107 7f0000002703005844c107 - {e=>228064205,c=>5,a=>28,b=>5,d=>3} 1c0000002d0300cdfb970d 1c0000002d0300cdfb970d 1c0000002d0300cdfb970d 1c0000002d0300cdfb970d - {e=>217906279,c=>1,a=>99,b=>0,d=>7} 6300000008070067fcfc0c 6300000008070067fcfc0c 6300000008070067fcfc0c 6300000008070067fcfc0c - {e=>51712296,c=>5,a=>-8,b=>2,d=>6} f8ffffff2a060028111503 f8ffffff2a060028111503 f8ffffff2a060028111503 f8ffffff2a060028111503 - {e=>211735696,c=>6,a=>78,b=>1,d=>0} 4e00000031000090d49e0c 4e00000031000090d49e0c 4e00000031000090d49e0c 4e00000031000090d49e0c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>242564914,c=>0,a=>6,b=>0,d=>4,f=>4} 06000000000400323f750e04 06000000000400323f750e04 06000000000400323f750e04 06000000000400323f750e04 - {e=>142230259,c=>5,a=>-69,b=>3,d=>4,f=>0} bbffffff2b0400f3427a0800 bbffffff2b0400f3427a0800 bbffffff2b0400f3427a0800 bbffffff2b0400f3427a0800 - {e=>40226599,c=>3,a=>-72,b=>3,d=>0,f=>0} b8ffffff1b000027cf650200 b8ffffff1b000027cf650200 b8ffffff1b000027cf650200 b8ffffff1b000027cf650200 - {e=>4604876,c=>0,a=>18,b=>5,d=>2,f=>5} 12000000050200cc43460005 12000000050200cc43460005 12000000050200cc43460005 12000000050200cc43460005 - {e=>209840252,c=>0,a=>-52,b=>3,d=>3,f=>2} ccffffff0303007ce8810c02 ccffffff0303007ce8810c02 ccffffff0303007ce8810c02 ccffffff0303007ce8810c02 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>13259097,c=>3,a=>-63,g=>1,b=>5,d=>7,f=>3} c1ffffff1d07005951ca000b c1ffffff1d07005951ca000b c1ffffff1d07005951ca000b c1ffffff1d07005951ca000b - {e=>156908516,c=>4,a=>36,g=>0,b=>6,d=>0,f=>6} 24000000260000e43b5a0906 24000000260000e43b5a0906 24000000260000e43b5a0906 24000000260000e43b5a0906 - {e=>59405293,c=>0,a=>117,g=>2,b=>5,d=>7,f=>7} 75000000050700ed738a0317 75000000050700ed738a0317 75000000050700ed738a0317 75000000050700ed738a0317 - {e=>247527189,c=>5,a=>66,g=>2,b=>2,d=>2,f=>1} 420000002a020015f7c00e11 420000002a020015f7c00e11 420000002a020015f7c00e11 420000002a020015f7c00e11 - {e=>80174753,c=>2,a=>-35,g=>1,b=>2,d=>0,f=>2} ddffffff120000a15ec7040a ddffffff120000a15ec7040a ddffffff120000a15ec7040a ddffffff120000a15ec7040a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>79855944,a=>-79,d=>6,c=>0,h=>1469,b=>5,g=>1,f=>0} b1ffffff0506004881c20408bd05 b1ffffff0506004881c20408bd05 b1ffffff0506004881c20408bd05 b1ffffff0506004881c20408bd05 - {e=>55286286,a=>-110,d=>5,c=>5,h=>6486,b=>5,g=>1,f=>3} 92ffffff2d05000e9a4b030b5619 92ffffff2d05000e9a4b030b5619 92ffffff2d05000e9a4b030b5619 92ffffff2d05000e9a4b030b5619 - {e=>230194727,a=>-49,d=>2,c=>2,h=>6812,b=>6,g=>1,f=>4} cfffffff160200277eb80d0c9c1a cfffffff160200277eb80d0c9c1a cfffffff160200277eb80d0c9c1a cfffffff160200277eb80d0c9c1a - {e=>191802023,a=>61,d=>7,c=>6,h=>7935,b=>4,g=>1,f=>2} 3d000000340700a7aa6e0b0aff1e 3d000000340700a7aa6e0b0aff1e 3d000000340700a7aa6e0b0aff1e 3d000000340700a7aa6e0b0aff1e - {e=>31737331,a=>18,d=>6,c=>6,h=>5531,b=>3,g=>2,f=>2} 12000000330600f345e401129b15 12000000330600f345e401129b15 12000000330600f345e401129b15 12000000330600f345e401129b15 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>257753255,a=>78,d=>5,c=>1,h=>4307,b=>5,g=>1,f=>3,i=>23} 4e0000000d0500a7005d0f0bd31017 4e0000000d0500a7005d0f0bd31017 4e0000000d0500a7005d0f0bd31017 4e0000000d0500a7005d0f0bd31017 - {e=>154752796,a=>-128,d=>3,c=>3,h=>1857,b=>7,g=>2,f=>4,i=>149} 80ffffff1f03001c57390914410795 80ffffff1f03001c57390914410795 80ffffff1f03001c57390914410795 80ffffff1f03001c57390914410795 - {e=>48153402,a=>-86,d=>4,c=>5,h=>2443,b=>5,g=>1,f=>3,i=>106} aaffffff2d04003ac3de020b8b096a aaffffff2d04003ac3de020b8b096a aaffffff2d04003ac3de020b8b096a aaffffff2d04003ac3de020b8b096a - {e=>149056525,a=>-9,d=>6,c=>2,h=>4899,b=>0,g=>1,f=>2,i=>164} f7ffffff1006000d6ce2080a2313a4 f7ffffff1006000d6ce2080a2313a4 f7ffffff1006000d6ce2080a2313a4 f7ffffff1006000d6ce2080a2313a4 - {e=>211134956,a=>118,d=>5,c=>1,h=>1779,b=>3,g=>1,f=>5,i=>234} 760000000b0500eca9950c0df306ea 760000000b0500eca9950c0df306ea 760000000b0500eca9950c0df306ea 760000000b0500eca9950c0df306ea = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; }; - {a=>83,b=>3} 5300000003 5300000003 5300000003 5300000003 - {a=>118,b=>5} 7600000005 7600000005 7600000005 7600000005 - {a=>102,b=>4} 6600000004 6600000004 6600000004 6600000004 - {a=>-46,b=>3} d2ffffff03 d2ffffff03 d2ffffff03 d2ffffff03 - {a=>-65,b=>5} bfffffff05 bfffffff05 bfffffff05 bfffffff05 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>101,b=>1} 6500000031 6500000031 6500000031 6500000031 - {c=>5,a=>32,b=>7} 200000002f 200000002f 200000002f 200000002f - {c=>7,a=>-74,b=>2} b6ffffff3a b6ffffff3a b6ffffff3a b6ffffff3a - {c=>4,a=>-84,b=>1} acffffff21 acffffff21 acffffff21 acffffff21 - {c=>3,a=>-100,b=>4} 9cffffff1c 9cffffff1c 9cffffff1c 9cffffff1c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-18,b=>2,d=>4} eeffffff1a0400 eeffffff1a0400 eeffffff1a0400 eeffffff1a0400 - {c=>0,a=>-123,b=>2,d=>3} 85ffffff020300 85ffffff020300 85ffffff020300 85ffffff020300 - {c=>5,a=>85,b=>2,d=>3} 550000002a0300 550000002a0300 550000002a0300 550000002a0300 - {c=>5,a=>-113,b=>7,d=>6} 8fffffff2f0600 8fffffff2f0600 8fffffff2f0600 8fffffff2f0600 - {c=>3,a=>66,b=>0,d=>6} 42000000180600 42000000180600 42000000180600 42000000180600 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>160937402,c=>7,a=>27,b=>7,d=>5} 1b0000003f0500bab59709 1b0000003f0500bab59709 1b0000003f0500bab59709 1b0000003f0500bab59709 - {e=>20048177,c=>3,a=>28,b=>7,d=>6} 1c0000001f060031e93101 1c0000001f060031e93101 1c0000001f060031e93101 1c0000001f060031e93101 - {e=>246627849,c=>0,a=>-81,b=>4,d=>3} afffffff040300093eb30e afffffff040300093eb30e afffffff040300093eb30e afffffff040300093eb30e - {e=>200039194,c=>5,a=>112,b=>2,d=>1} 700000002a01001a5bec0b 700000002a01001a5bec0b 700000002a01001a5bec0b 700000002a01001a5bec0b - {e=>250650060,c=>0,a=>124,b=>1,d=>6} 7c000000010600cc9df00e 7c000000010600cc9df00e 7c000000010600cc9df00e 7c000000010600cc9df00e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>164019807,c=>0,a=>-107,b=>4,d=>4,f=>4} 95ffffff0404005fbec60904 95ffffff0404005fbec60904 95ffffff0404005fbec60904 95ffffff0404005fbec60904 - {e=>148347054,c=>7,a=>122,b=>5,d=>4,f=>4} 7a0000003d0400ae98d70804 7a0000003d0400ae98d70804 7a0000003d0400ae98d70804 7a0000003d0400ae98d70804 - {e=>201328566,c=>2,a=>-38,b=>2,d=>0,f=>5} daffffff120000b607000c05 daffffff120000b607000c05 daffffff120000b607000c05 daffffff120000b607000c05 - {e=>17793067,c=>3,a=>62,b=>5,d=>1,f=>6} 3e0000001d01002b800f0106 3e0000001d01002b800f0106 3e0000001d01002b800f0106 3e0000001d01002b800f0106 - {e=>265362806,c=>3,a=>-81,b=>7,d=>0,f=>0} afffffff1f0000761dd10f00 afffffff1f0000761dd10f00 afffffff1f0000761dd10f00 afffffff1f0000761dd10f00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>119342936,c=>2,a=>-110,g=>0,b=>2,d=>6,f=>7} 92ffffff12060058071d0707 92ffffff12060058071d0707 92ffffff12060058071d0707 92ffffff12060058071d0707 - {e=>62059604,c=>7,a=>-92,g=>3,b=>4,d=>4,f=>7} a4ffffff3c040054f4b2031f a4ffffff3c040054f4b2031f a4ffffff3c040054f4b2031f a4ffffff3c040054f4b2031f - {e=>174545826,c=>6,a=>-60,g=>3,b=>2,d=>3,f=>1} c4ffffff320300a25b670a19 c4ffffff320300a25b670a19 c4ffffff320300a25b670a19 c4ffffff320300a25b670a19 - {e=>133811322,c=>5,a=>106,g=>2,b=>2,d=>0,f=>4} 6a0000002a00007accf90714 6a0000002a00007accf90714 6a0000002a00007accf90714 6a0000002a00007accf90714 - {e=>181399152,c=>6,a=>71,g=>3,b=>4,d=>7,f=>7} 4700000034070070eecf0a1f 4700000034070070eecf0a1f 4700000034070070eecf0a1f 4700000034070070eecf0a1f = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>178239616,a=>-56,d=>2,c=>0,h=>947,b=>6,g=>2,f=>5} c8ffffff06020080b89f0a15b303 c8ffffff06020080b89f0a15b303 c8ffffff06020080b89f0a15b303 c8ffffff06020080b89f0a15b303 - {e=>92807764,a=>66,d=>7,c=>0,h=>2391,b=>5,g=>2,f=>3} 4200000005070054228805135709 4200000005070054228805135709 4200000005070054228805135709 4200000005070054228805135709 - {e=>217147655,a=>26,d=>5,c=>6,h=>7725,b=>4,g=>1,f=>2} 1a0000003405000769f10c0a2d1e 1a0000003405000769f10c0a2d1e 1a0000003405000769f10c0a2d1e 1a0000003405000769f10c0a2d1e - {e=>94483661,a=>-122,d=>7,c=>6,h=>3773,b=>6,g=>2,f=>7} 86ffffff360700cdb4a10517bd0e 86ffffff360700cdb4a10517bd0e 86ffffff360700cdb4a10517bd0e 86ffffff360700cdb4a10517bd0e - {e=>255972856,a=>-65,d=>4,c=>6,h=>4167,b=>3,g=>2,f=>7} bfffffff330400f8d5410f174710 bfffffff330400f8d5410f174710 bfffffff330400f8d5410f174710 bfffffff330400f8d5410f174710 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct umixed_pack_1 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>236368736,a=>50,d=>0,c=>0,h=>550,b=>0,g=>3,f=>2,i=>115} 3200000000000060b3160e1a260273 3200000000000060b3160e1a260273 3200000000000060b3160e1a260273 3200000000000060b3160e1a260273 - {e=>88524857,a=>-90,d=>2,c=>1,h=>306,b=>4,g=>3,f=>5,i=>249} a6ffffff0c020039c846051d3201f9 a6ffffff0c020039c846051d3201f9 a6ffffff0c020039c846051d3201f9 a6ffffff0c020039c846051d3201f9 - {e=>192500988,a=>-84,d=>1,c=>2,h=>5667,b=>5,g=>0,f=>5,i=>178} acffffff150100fc54790b052316b2 acffffff150100fc54790b052316b2 acffffff150100fc54790b052316b2 acffffff150100fc54790b052316b2 - {e=>102319901,a=>48,d=>6,c=>5,h=>4809,b=>5,g=>0,f=>5,i=>243} 300000002d06001d47190605c912f3 300000002d06001d47190605c912f3 300000002d06001d47190605c912f3 300000002d06001d47190605c912f3 - {e=>105125875,a=>-48,d=>6,c=>2,h=>3701,b=>4,g=>0,f=>6,i=>134} d0ffffff140600f317440606750e86 d0ffffff140600f317440606750e86 d0ffffff140600f317440606750e86 d0ffffff140600f317440606750e86 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; }; - {a=>7} 07 07 07 07 - {a=>4} 04 04 04 04 - {a=>4} 04 04 04 04 - {a=>7} 07 07 07 07 - {a=>1} 01 01 01 01 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; }; - {a=>6,b=>7} 3e 3e 3e 3e - {a=>6,b=>0} 06 06 06 06 - {a=>1,b=>6} 31 31 31 31 - {a=>3,b=>4} 23 23 23 23 - {a=>5,b=>5} 2d 2d 2d 2d = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>6,a=>3,b=>3} 1b000600 1b000600 1b000600 1b000600 - {c=>2,a=>6,b=>1} 0e000200 0e000200 0e000200 0e000200 - {c=>6,a=>4,b=>1} 0c000600 0c000600 0c000600 0c000600 - {c=>2,a=>1,b=>0} 01000200 01000200 01000200 01000200 - {c=>7,a=>4,b=>7} 3c000700 3c000700 3c000700 3c000700 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>1,a=>4,b=>4,d=>133269742} 24000100ee88f107 24000100ee88f107 24000100ee88f107 24000100ee88f107 - {c=>3,a=>7,b=>1,d=>257081784} 0f000300b8c1520f 0f000300b8c1520f 0f000300b8c1520f 0f000300b8c1520f - {c=>0,a=>7,b=>6,d=>258403104} 3700000020eb660f 3700000020eb660f 3700000020eb660f 3700000020eb660f - {c=>5,a=>7,b=>0,d=>128978242} 07000500420db007 07000500420db007 07000500420db007 07000500420db007 - {c=>5,a=>0,b=>4,d=>243031951} 200005008f5f7c0e 200005008f5f7c0e 200005008f5f7c0e 200005008f5f7c0e = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>0,c=>2,a=>6,b=>7,d=>33702724} 3e000200444302020000 3e000200444302020000 3e000200444302020000 3e000200444302020000 - {e=>2,c=>5,a=>5,b=>2,d=>6095297} 15000500c1015d000200 15000500c1015d000200 15000500c1015d000200 15000500c1015d000200 - {e=>4,c=>4,a=>4,b=>6,d=>213519559} 34000400c70cba0c0400 34000400c70cba0c0400 34000400c70cba0c0400 34000400c70cba0c0400 - {e=>5,c=>2,a=>7,b=>5,d=>18462540} 2f0002004cb719010500 2f0002004cb719010500 2f0002004cb719010500 2f0002004cb719010500 - {e=>1,c=>6,a=>1,b=>7,d=>89059346} 3900060012f04e050100 3900060012f04e050100 3900060012f04e050100 3900060012f04e050100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>5,c=>1,a=>7,b=>1,d=>136757511,f=>1} 0f00010007c126080d00 0f00010007c126080d00 0f00010007c126080d00 0f00010007c126080d00 - {e=>0,c=>4,a=>7,b=>4,d=>125709169,f=>0} 27000400712b7e070000 27000400712b7e070000 27000400712b7e070000 27000400712b7e070000 - {e=>4,c=>6,a=>4,b=>0,d=>58396282,f=>2} 040006007a0e7b031400 040006007a0e7b031400 040006007a0e7b031400 040006007a0e7b031400 - {e=>0,c=>7,a=>2,b=>1,d=>156900784,f=>0} 0a000700b01d5a090000 0a000700b01d5a090000 0a000700b01d5a090000 0a000700b01d5a090000 - {e=>6,c=>5,a=>4,b=>0,d=>153791533,f=>0} 040005002dac2a090600 040005002dac2a090600 040005002dac2a090600 040005002dac2a090600 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>4,c=>6,a=>0,g=>3159,b=>3,d=>201444973,f=>3} 180006006dce010c1c00570c 180006006dce010c1c00570c 180006006dce010c1c00570c 180006006dce010c1c00570c - {e=>3,c=>5,a=>2,g=>1311,b=>0,d=>216985875,f=>0} 0200050013f1ee0c03001f05 0200050013f1ee0c03001f05 0200050013f1ee0c03001f05 0200050013f1ee0c03001f05 - {e=>4,c=>1,a=>4,g=>4089,b=>3,d=>90392677,f=>2} 1c000100654863051400f90f 1c000100654863051400f90f 1c000100654863051400f90f 1c000100654863051400f90f - {e=>4,c=>6,a=>2,g=>6577,b=>0,d=>32952048,f=>2} 02000600f0cef6011400b119 02000600f0cef6011400b119 02000600f0cef6011400b119 02000600f0cef6011400b119 - {e=>6,c=>3,a=>2,g=>5134,b=>2,d=>70582675,f=>0} 120003009301350406000e14 120003009301350406000e14 120003009301350406000e14 120003009301350406000e14 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>4,a=>7,d=>66200696,c=>5,h=>31,b=>4,g=>6484,f=>1} 270005007824f2030c0054191f00 270005007824f2030c0054191f00 270005007824f2030c0054191f00 270005007824f2030c0054191f00 - {e=>3,a=>0,d=>142854848,c=>3,h=>30,b=>3,g=>2350,f=>3} 18000300c0ca83081b002e091e00 18000300c0ca83081b002e091e00 18000300c0ca83081b002e091e00 18000300c0ca83081b002e091e00 - {e=>0,a=>3,d=>178180283,c=>3,h=>162,b=>2,g=>1577,f=>2} 13000300bbd09e0a10002906a200 13000300bbd09e0a10002906a200 13000300bbd09e0a10002906a200 13000300bbd09e0a10002906a200 - {e=>7,a=>3,d=>71770977,c=>0,h=>159,b=>4,g=>2221,f=>2} 23000000612347041700ad089f00 23000000612347041700ad089f00 23000000612347041700ad089f00 23000000612347041700ad089f00 - {e=>3,a=>7,d=>209718566,c=>4,h=>184,b=>0,g=>4011,f=>3} 07000400260d800c1b00ab0fb800 07000400260d800c1b00ab0fb800 07000400260d800c1b00ab0fb800 07000400260d800c1b00ab0fb800 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; }; - {a=>-101,b=>3} 9b03 9b03 9b03 9b03 - {a=>-121,b=>0} 8700 8700 8700 8700 - {a=>49,b=>5} 3105 3105 3105 3105 - {a=>-18,b=>5} ee05 ee05 ee05 ee05 - {a=>-28,b=>7} e407 e407 e407 e407 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>-95,b=>6} a12e a12e a12e a12e - {c=>3,a=>105,b=>5} 691d 691d 691d 691d - {c=>5,a=>-88,b=>7} a82f a82f a82f a82f - {c=>3,a=>-100,b=>0} 9c18 9c18 9c18 9c18 - {c=>0,a=>-15,b=>0} f100 f100 f100 f100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>1,a=>78,b=>7,d=>5} 4e0f0500 4e0f0500 4e0f0500 4e0f0500 - {c=>4,a=>18,b=>5,d=>2} 12250200 12250200 12250200 12250200 - {c=>7,a=>56,b=>5,d=>0} 383d0000 383d0000 383d0000 383d0000 - {c=>5,a=>-82,b=>5,d=>1} ae2d0100 ae2d0100 ae2d0100 ae2d0100 - {c=>7,a=>60,b=>6,d=>5} 3c3e0500 3c3e0500 3c3e0500 3c3e0500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>221131133,c=>6,a=>105,b=>3,d=>0} 693300007d312e0d 693300007d312e0d 693300007d312e0d 693300007d312e0d - {e=>105130068,c=>7,a=>43,b=>7,d=>4} 2b3f040054284406 2b3f040054284406 2b3f040054284406 2b3f040054284406 - {e=>200295387,c=>7,a=>95,b=>0,d=>4} 5f380400db43f00b 5f380400db43f00b 5f380400db43f00b 5f380400db43f00b - {e=>204864432,c=>4,a=>121,b=>0,d=>5} 79200500b0fb350c 79200500b0fb350c 79200500b0fb350c 79200500b0fb350c - {e=>116121104,c=>3,a=>-77,b=>7,d=>7} b31f070010deeb06 b31f070010deeb06 b31f070010deeb06 b31f070010deeb06 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>172836301,c=>0,a=>32,b=>7,d=>6,f=>3} 20070600cd454d0a0300 20070600cd454d0a0300 20070600cd454d0a0300 20070600cd454d0a0300 - {e=>127428220,c=>5,a=>-44,b=>2,d=>7,f=>1} d42a07007c6698070100 d42a07007c6698070100 d42a07007c6698070100 d42a07007c6698070100 - {e=>422562,c=>0,a=>60,b=>7,d=>1,f=>2} 3c070100a27206000200 3c070100a27206000200 3c070100a27206000200 3c070100a27206000200 - {e=>96278787,c=>7,a=>3,b=>7,d=>2,f=>0} 033f02000319bd050000 033f02000319bd050000 033f02000319bd050000 033f02000319bd050000 - {e=>241856194,c=>3,a=>-107,b=>0,d=>6,f=>5} 95180600c26e6a0e0500 95180600c26e6a0e0500 95180600c26e6a0e0500 95180600c26e6a0e0500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>239818291,c=>6,a=>50,g=>2,b=>1,d=>2,f=>7} 3231020033564b0e1700 3231020033564b0e1700 3231020033564b0e1700 3231020033564b0e1700 - {e=>27118579,c=>2,a=>-3,g=>0,b=>0,d=>4,f=>5} fd100400f3cb9d010500 fd100400f3cb9d010500 fd100400f3cb9d010500 fd100400f3cb9d010500 - {e=>134242001,c=>3,a=>59,g=>3,b=>5,d=>5,f=>6} 3b1d0500d15e00081e00 3b1d0500d15e00081e00 3b1d0500d15e00081e00 3b1d0500d15e00081e00 - {e=>65328260,c=>1,a=>-116,g=>1,b=>5,d=>4,f=>3} 8c0d040084d4e4030b00 8c0d040084d4e4030b00 8c0d040084d4e4030b00 8c0d040084d4e4030b00 - {e=>139743207,c=>3,a=>-41,g=>1,b=>3,d=>1,f=>6} d71b0100e74f54080e00 d71b0100e74f54080e00 d71b0100e74f54080e00 d71b0100e74f54080e00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>230124716,a=>16,d=>7,c=>1,h=>3908,b=>7,g=>2,f=>7} 100f0700ac6cb70d1700440f 100f0700ac6cb70d1700440f 100f0700ac6cb70d1700440f 100f0700ac6cb70d1700440f - {e=>124232976,a=>64,d=>4,c=>0,h=>5030,b=>2,g=>3,f=>4} 4002040010a567071c00a613 4002040010a567071c00a613 4002040010a567071c00a613 4002040010a567071c00a613 - {e=>239963925,a=>67,d=>1,c=>5,h=>5257,b=>4,g=>2,f=>4} 432c0100158f4d0e14008914 432c0100158f4d0e14008914 432c0100158f4d0e14008914 432c0100158f4d0e14008914 - {e=>119523408,a=>-65,d=>2,c=>5,h=>4247,b=>2,g=>2,f=>3} bf2a020050c81f0713009710 bf2a020050c81f0713009710 bf2a020050c81f0713009710 bf2a020050c81f0713009710 - {e=>9728961,a=>51,d=>5,c=>0,h=>2851,b=>7,g=>0,f=>4} 33070500c17394000400230b 33070500c17394000400230b 33070500c17394000400230b 33070500c17394000400230b = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>180027965,a=>92,d=>2,c=>4,h=>1057,b=>1,g=>1,f=>0,i=>60} 5c2102003d02bb0a080021043c00 5c2102003d02bb0a080021043c00 5c2102003d02bb0a080021043c00 5c2102003d02bb0a080021043c00 - {e=>231855491,a=>-124,d=>6,c=>4,h=>1682,b=>7,g=>0,f=>6,i=>222} 8427060083d5d10d06009206de00 8427060083d5d10d06009206de00 8427060083d5d10d06009206de00 8427060083d5d10d06009206de00 - {e=>14781907,a=>-124,d=>1,c=>0,h=>7235,b=>7,g=>0,f=>3,i=>179} 84070100d38de1000300431cb300 84070100d38de1000300431cb300 84070100d38de1000300431cb300 84070100d38de1000300431cb300 - {e=>268185659,a=>-127,d=>4,c=>0,h=>4094,b=>2,g=>3,f=>7,i=>166} 810204003b30fc0f1f00fe0fa600 810204003b30fc0f1f00fe0fa600 810204003b30fc0f1f00fe0fa600 810204003b30fc0f1f00fe0fa600 - {e=>102826413,a=>-10,d=>2,c=>6,h=>6758,b=>6,g=>2,f=>7,i=>80} f6360200ad0121061700661a5000 f6360200ad0121061700661a5000 f6360200ad0121061700661a5000 f6360200ad0121061700661a5000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; }; - {a=>-45,b=>6} d3ff0600 d3ff0600 d3ff0600 d3ff0600 - {a=>-32,b=>7} e0ff0700 e0ff0700 e0ff0700 e0ff0700 - {a=>43,b=>2} 2b000200 2b000200 2b000200 2b000200 - {a=>8,b=>3} 08000300 08000300 08000300 08000300 - {a=>-1,b=>1} ffff0100 ffff0100 ffff0100 ffff0100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>5,a=>126,b=>7} 7e002f00 7e002f00 7e002f00 7e002f00 - {c=>4,a=>-38,b=>6} daff2600 daff2600 daff2600 daff2600 - {c=>3,a=>-19,b=>2} edff1a00 edff1a00 edff1a00 edff1a00 - {c=>0,a=>26,b=>4} 1a000400 1a000400 1a000400 1a000400 - {c=>4,a=>125,b=>4} 7d002400 7d002400 7d002400 7d002400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>66,b=>0,d=>6} 420020000600 420020000600 420020000600 420020000600 - {c=>3,a=>-65,b=>7,d=>5} bfff1f000500 bfff1f000500 bfff1f000500 bfff1f000500 - {c=>5,a=>42,b=>5,d=>4} 2a002d000400 2a002d000400 2a002d000400 2a002d000400 - {c=>1,a=>-96,b=>4,d=>5} a0ff0c000500 a0ff0c000500 a0ff0c000500 a0ff0c000500 - {c=>2,a=>-85,b=>0,d=>4} abff10000400 abff10000400 abff10000400 abff10000400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>144118602,c=>6,a=>-68,b=>2,d=>5} bcff320005004a139708 bcff320005004a139708 bcff320005004a139708 bcff320005004a139708 - {e=>194550170,c=>1,a=>-13,b=>2,d=>6} f3ff0a0006009a99980b f3ff0a0006009a99980b f3ff0a0006009a99980b f3ff0a0006009a99980b - {e=>80715514,c=>4,a=>100,b=>3,d=>0} 640023000000fa9ecf04 640023000000fa9ecf04 640023000000fa9ecf04 640023000000fa9ecf04 - {e=>265138084,c=>6,a=>37,b=>2,d=>0} 250032000000a4afcd0f 250032000000a4afcd0f 250032000000a4afcd0f 250032000000a4afcd0f - {e=>222887293,c=>6,a=>11,b=>1,d=>5} 0b00310005007dfd480d 0b00310005007dfd480d 0b00310005007dfd480d 0b00310005007dfd480d = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>18626280,c=>1,a=>-46,b=>5,d=>7,f=>5} d2ff0d000700e8361c010500 d2ff0d000700e8361c010500 d2ff0d000700e8361c010500 d2ff0d000700e8361c010500 - {e=>65331951,c=>5,a=>-123,b=>1,d=>4,f=>2} 85ff29000400efe2e4030200 85ff29000400efe2e4030200 85ff29000400efe2e4030200 85ff29000400efe2e4030200 - {e=>22199225,c=>6,a=>19,b=>2,d=>4,f=>0} 130032000400b9bb52010000 130032000400b9bb52010000 130032000400b9bb52010000 130032000400b9bb52010000 - {e=>9181650,c=>6,a=>56,b=>1,d=>0,f=>5} 380031000000d2198c000500 380031000000d2198c000500 380031000000d2198c000500 380031000000d2198c000500 - {e=>157034625,c=>6,a=>76,b=>0,d=>2,f=>5} 4c003000020081285c090500 4c003000020081285c090500 4c003000020081285c090500 4c003000020081285c090500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>267203857,c=>2,a=>90,g=>1,b=>5,d=>0,f=>2} 5a00150000001135ed0f0a00 5a00150000001135ed0f0a00 5a00150000001135ed0f0a00 5a00150000001135ed0f0a00 - {e=>138564760,c=>2,a=>-49,g=>2,b=>4,d=>6,f=>3} cfff14000600985442081300 cfff14000600985442081300 cfff14000600985442081300 cfff14000600985442081300 - {e=>91970329,c=>6,a=>-122,g=>1,b=>1,d=>3,f=>0} 86ff31000300195b7b050800 86ff31000300195b7b050800 86ff31000300195b7b050800 86ff31000300195b7b050800 - {e=>102576163,c=>7,a=>39,g=>1,b=>0,d=>2,f=>6} 27003800020023301d060e00 27003800020023301d060e00 27003800020023301d060e00 27003800020023301d060e00 - {e=>263662536,c=>3,a=>-27,g=>1,b=>3,d=>4,f=>5} e5ff1b000400c82bb70f0d00 e5ff1b000400c82bb70f0d00 e5ff1b000400c82bb70f0d00 e5ff1b000400c82bb70f0d00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>194432513,a=>30,d=>2,c=>2,h=>1472,b=>2,g=>1,f=>3} 1e001200020001ce960b0b00c005 1e001200020001ce960b0b00c005 1e001200020001ce960b0b00c005 1e001200020001ce960b0b00c005 - {e=>90729129,a=>18,d=>7,c=>0,h=>7366,b=>1,g=>1,f=>4} 120001000700a96a68050c00c61c 120001000700a96a68050c00c61c 120001000700a96a68050c00c61c 120001000700a96a68050c00c61c - {e=>241644573,a=>75,d=>6,c=>6,h=>2932,b=>7,g=>3,f=>1} 4b00370006001d34670e1900740b 4b00370006001d34670e1900740b 4b00370006001d34670e1900740b 4b00370006001d34670e1900740b - {e=>176079331,a=>31,d=>2,c=>1,h=>4829,b=>6,g=>2,f=>2} 1f000e000200e3c17e0a1200dd12 1f000e000200e3c17e0a1200dd12 1f000e000200e3c17e0a1200dd12 1f000e000200e3c17e0a1200dd12 - {e=>239368188,a=>55,d=>5,c=>3,h=>1857,b=>6,g=>3,f=>7} 37001e000500fc77440e1f004107 37001e000500fc77440e1f004107 37001e000500fc77440e1f004107 37001e000500fc77440e1f004107 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>108438729,a=>58,d=>1,c=>1,h=>5562,b=>0,g=>0,f=>6,i=>192} 3a0008000100c9a476060600ba15c000 3a0008000100c9a476060600ba15c000 3a0008000100c9a476060600ba15c000 3a0008000100c9a476060600ba15c000 - {e=>5753109,a=>98,d=>6,c=>2,h=>3842,b=>0,g=>1,f=>4,i=>170} 62001000060015c957000c00020faa00 62001000060015c957000c00020faa00 62001000060015c957000c00020faa00 62001000060015c957000c00020faa00 - {e=>152483984,a=>118,d=>4,c=>6,h=>3538,b=>4,g=>1,f=>6,i=>229} 76003400040090b816090e00d20de500 76003400040090b816090e00d20de500 76003400040090b816090e00d20de500 76003400040090b816090e00d20de500 - {e=>54363077,a=>36,d=>6,c=>6,h=>7156,b=>2,g=>1,f=>3,i=>92} 240032000600c5833d030b00f41b5c00 240032000600c5833d030b00f41b5c00 240032000600c5833d030b00f41b5c00 240032000600c5833d030b00f41b5c00 - {e=>73602633,a=>-19,d=>3,c=>5,h=>1654,b=>6,g=>2,f=>6,i=>188} edff2e0003004916630416007606bc00 edff2e0003004916630416007606bc00 edff2e0003004916630416007606bc00 edff2e0003004916630416007606bc00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; }; - {a=>31,b=>7} 1f0000000700 1f0000000700 1f0000000700 1f0000000700 - {a=>70,b=>7} 460000000700 460000000700 460000000700 460000000700 - {a=>-101,b=>4} 9bffffff0400 9bffffff0400 9bffffff0400 9bffffff0400 - {a=>111,b=>2} 6f0000000200 6f0000000200 6f0000000200 6f0000000200 - {a=>-80,b=>3} b0ffffff0300 b0ffffff0300 b0ffffff0300 b0ffffff0300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>7,a=>76,b=>1} 4c0000003900 4c0000003900 4c0000003900 4c0000003900 - {c=>6,a=>52,b=>5} 340000003500 340000003500 340000003500 340000003500 - {c=>4,a=>-96,b=>4} a0ffffff2400 a0ffffff2400 a0ffffff2400 a0ffffff2400 - {c=>4,a=>16,b=>5} 100000002500 100000002500 100000002500 100000002500 - {c=>5,a=>-115,b=>3} 8dffffff2b00 8dffffff2b00 8dffffff2b00 8dffffff2b00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-95,b=>1,d=>3} a1ffffff19000300 a1ffffff19000300 a1ffffff19000300 a1ffffff19000300 - {c=>1,a=>-30,b=>2,d=>7} e2ffffff0a000700 e2ffffff0a000700 e2ffffff0a000700 e2ffffff0a000700 - {c=>3,a=>28,b=>7,d=>3} 1c0000001f000300 1c0000001f000300 1c0000001f000300 1c0000001f000300 - {c=>1,a=>34,b=>1,d=>3} 2200000009000300 2200000009000300 2200000009000300 2200000009000300 - {c=>5,a=>88,b=>6,d=>1} 580000002e000100 580000002e000100 580000002e000100 580000002e000100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>228389954,c=>6,a=>10,b=>1,d=>3} 0a0000003100030042f49c0d 0a0000003100030042f49c0d 0a0000003100030042f49c0d 0a0000003100030042f49c0d - {e=>26173929,c=>1,a=>46,b=>7,d=>3} 2e0000000f000300e9618f01 2e0000000f000300e9618f01 2e0000000f000300e9618f01 2e0000000f000300e9618f01 - {e=>31378561,c=>1,a=>-102,b=>0,d=>0} 9affffff0800000081ccde01 9affffff0800000081ccde01 9affffff0800000081ccde01 9affffff0800000081ccde01 - {e=>133881414,c=>3,a=>83,b=>6,d=>6} 530000001e00060046defa07 530000001e00060046defa07 530000001e00060046defa07 530000001e00060046defa07 - {e=>185498202,c=>4,a=>-46,b=>2,d=>4} d2ffffff220004005a7a0e0b d2ffffff220004005a7a0e0b d2ffffff220004005a7a0e0b d2ffffff220004005a7a0e0b = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>108248036,c=>1,a=>-113,b=>3,d=>5,f=>4} 8fffffff0b000500e4bb73060400 8fffffff0b000500e4bb73060400 8fffffff0b000500e4bb73060400 8fffffff0b000500e4bb73060400 - {e=>244754857,c=>2,a=>53,b=>1,d=>6,f=>7} 3500000011000600a9a9960e0700 3500000011000600a9a9960e0700 3500000011000600a9a9960e0700 3500000011000600a9a9960e0700 - {e=>82868130,c=>3,a=>-17,b=>3,d=>4,f=>1} efffffff1b000400a277f0040100 efffffff1b000400a277f0040100 efffffff1b000400a277f0040100 efffffff1b000400a277f0040100 - {e=>128771168,c=>5,a=>-97,b=>6,d=>5,f=>6} 9fffffff2e00050060e4ac070600 9fffffff2e00050060e4ac070600 9fffffff2e00050060e4ac070600 9fffffff2e00050060e4ac070600 - {e=>201646189,c=>5,a=>87,b=>0,d=>1,f=>3} 57000000280001006de0040c0300 57000000280001006de0040c0300 57000000280001006de0040c0300 57000000280001006de0040c0300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>52201699,c=>3,a=>-21,g=>2,b=>2,d=>3,f=>7} ebffffff1a000300e3881c031700 ebffffff1a000300e3881c031700 ebffffff1a000300e3881c031700 ebffffff1a000300e3881c031700 - {e=>156859917,c=>7,a=>28,g=>2,b=>4,d=>1,f=>7} 1c0000003c0001000d7e59091700 1c0000003c0001000d7e59091700 1c0000003c0001000d7e59091700 1c0000003c0001000d7e59091700 - {e=>73487576,c=>2,a=>44,g=>3,b=>5,d=>4,f=>1} 2c00000015000400d85461041900 2c00000015000400d85461041900 2c00000015000400d85461041900 2c00000015000400d85461041900 - {e=>172142530,c=>5,a=>101,g=>2,b=>7,d=>3,f=>5} 650000002f000300c2af420a1500 650000002f000300c2af420a1500 650000002f000300c2af420a1500 650000002f000300c2af420a1500 - {e=>150725544,c=>6,a=>71,g=>1,b=>6,d=>0,f=>3} 4700000036000000a8e3fb080b00 4700000036000000a8e3fb080b00 4700000036000000a8e3fb080b00 4700000036000000a8e3fb080b00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>165197259,a=>-34,d=>6,c=>6,h=>2543,b=>0,g=>1,f=>4} deffffff30000600cbb5d8090c00ef09 deffffff30000600cbb5d8090c00ef09 deffffff30000600cbb5d8090c00ef09 deffffff30000600cbb5d8090c00ef09 - {e=>66930837,a=>-1,d=>4,c=>3,h=>8014,b=>5,g=>2,f=>1} ffffffff1d0004009548fd0311004e1f ffffffff1d0004009548fd0311004e1f ffffffff1d0004009548fd0311004e1f ffffffff1d0004009548fd0311004e1f - {e=>133257048,a=>80,d=>2,c=>3,h=>7657,b=>4,g=>1,f=>2} 500000001c0002005857f1070a00e91d 500000001c0002005857f1070a00e91d 500000001c0002005857f1070a00e91d 500000001c0002005857f1070a00e91d - {e=>213734502,a=>-90,d=>4,c=>5,h=>5237,b=>1,g=>2,f=>0} a6ffffff290004006654bd0c10007514 a6ffffff290004006654bd0c10007514 a6ffffff290004006654bd0c10007514 a6ffffff290004006654bd0c10007514 - {e=>132335321,a=>121,d=>0,c=>3,h=>5451,b=>4,g=>0,f=>7} 790000001c000000d946e30707004b15 790000001c000000d946e30707004b15 790000001c000000d946e30707004b15 790000001c000000d946e30707004b15 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>54142455,a=>-77,d=>3,c=>0,h=>5806,b=>5,g=>0,f=>1,i=>177} b3ffffff05000300f7253a030100ae16b100 b3ffffff05000300f7253a030100ae16b100 b3ffffff05000300f7253a030100ae16b100 b3ffffff05000300f7253a030100ae16b100 - {e=>146569251,a=>-111,d=>5,c=>1,h=>6377,b=>1,g=>3,f=>2,i=>217} 91ffffff090005002378bc081a00e918d900 91ffffff090005002378bc081a00e918d900 91ffffff090005002378bc081a00e918d900 91ffffff090005002378bc081a00e918d900 - {e=>103323231,a=>-35,d=>5,c=>3,h=>286,b=>0,g=>2,f=>5,i=>160} ddffffff180005005f96280615001e01a000 ddffffff180005005f96280615001e01a000 ddffffff180005005f96280615001e01a000 ddffffff180005005f96280615001e01a000 - {e=>80135875,a=>-121,d=>4,c=>6,h=>4052,b=>0,g=>0,f=>6,i=>139} 87ffffff30000400c3c6c6040600d40f8b00 87ffffff30000400c3c6c6040600d40f8b00 87ffffff30000400c3c6c6040600d40f8b00 87ffffff30000400c3c6c6040600d40f8b00 - {e=>212259421,a=>46,d=>5,c=>2,h=>3423,b=>7,g=>2,f=>4,i=>165} 2e000000170005005dd2a60c14005f0da500 2e000000170005005dd2a60c14005f0da500 2e000000170005005dd2a60c14005f0da500 2e000000170005005dd2a60c14005f0da500 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; }; - {a=>-17,b=>1} efffffff0100 efffffff0100 efffffff0100 efffffff0100 - {a=>-21,b=>5} ebffffff0500 ebffffff0500 ebffffff0500 ebffffff0500 - {a=>117,b=>4} 750000000400 750000000400 750000000400 750000000400 - {a=>90,b=>5} 5a0000000500 5a0000000500 5a0000000500 5a0000000500 - {a=>48,b=>4} 300000000400 300000000400 300000000400 300000000400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>0,a=>16,b=>5} 100000000500 100000000500 100000000500 100000000500 - {c=>6,a=>123,b=>0} 7b0000003000 7b0000003000 7b0000003000 7b0000003000 - {c=>4,a=>92,b=>2} 5c0000002200 5c0000002200 5c0000002200 5c0000002200 - {c=>4,a=>64,b=>0} 400000002000 400000002000 400000002000 400000002000 - {c=>0,a=>-8,b=>0} f8ffffff0000 f8ffffff0000 f8ffffff0000 f8ffffff0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>6,a=>124,b=>2,d=>6} 7c00000032000600 7c00000032000600 7c00000032000600 7c00000032000600 - {c=>2,a=>-19,b=>2,d=>0} edffffff12000000 edffffff12000000 edffffff12000000 edffffff12000000 - {c=>5,a=>55,b=>0,d=>1} 3700000028000100 3700000028000100 3700000028000100 3700000028000100 - {c=>5,a=>-44,b=>0,d=>7} d4ffffff28000700 d4ffffff28000700 d4ffffff28000700 d4ffffff28000700 - {c=>6,a=>-50,b=>1,d=>4} ceffffff31000400 ceffffff31000400 ceffffff31000400 ceffffff31000400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>95288597,c=>5,a=>-109,b=>2,d=>7} 93ffffff2a00070015fdad05 93ffffff2a00070015fdad05 93ffffff2a00070015fdad05 93ffffff2a00070015fdad05 - {e=>135290620,c=>4,a=>117,b=>5,d=>5} 7500000025000500fc5e1008 7500000025000500fc5e1008 7500000025000500fc5e1008 7500000025000500fc5e1008 - {e=>60560071,c=>0,a=>38,b=>6,d=>3} 2600000006000300c7129c03 2600000006000300c7129c03 2600000006000300c7129c03 2600000006000300c7129c03 - {e=>3218489,c=>7,a=>-111,b=>2,d=>3} 91ffffff3a000300391c3100 91ffffff3a000300391c3100 91ffffff3a000300391c3100 91ffffff3a000300391c3100 - {e=>124836907,c=>6,a=>-119,b=>3,d=>2} 89ffffff330002002bdc7007 89ffffff330002002bdc7007 89ffffff330002002bdc7007 89ffffff330002002bdc7007 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>12389401,c=>4,a=>83,b=>0,d=>1,f=>1} 5300000020000100190cbd000100 5300000020000100190cbd000100 5300000020000100190cbd000100 5300000020000100190cbd000100 - {e=>142083432,c=>7,a=>-99,b=>5,d=>3,f=>3} 9dffffff3d000300680578080300 9dffffff3d000300680578080300 9dffffff3d000300680578080300 9dffffff3d000300680578080300 - {e=>187721880,c=>2,a=>52,b=>6,d=>5,f=>2} 34000000160005009868300b0200 34000000160005009868300b0200 34000000160005009868300b0200 34000000160005009868300b0200 - {e=>48069462,c=>5,a=>48,b=>0,d=>2,f=>4} 3000000028000200567bdd020400 3000000028000200567bdd020400 3000000028000200567bdd020400 3000000028000200567bdd020400 - {e=>65320048,c=>4,a=>2,b=>6,d=>4,f=>3} 020000002600040070b4e4030300 020000002600040070b4e4030300 020000002600040070b4e4030300 020000002600040070b4e4030300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>260512924,c=>0,a=>13,g=>3,b=>2,d=>7,f=>5} 0d000000020007009c1c870f1d00 0d000000020007009c1c870f1d00 0d000000020007009c1c870f1d00 0d000000020007009c1c870f1d00 - {e=>57231972,c=>0,a=>50,g=>1,b=>1,d=>1,f=>1} 3200000001000100644a69030900 3200000001000100644a69030900 3200000001000100644a69030900 3200000001000100644a69030900 - {e=>202592947,c=>7,a=>-82,g=>2,b=>0,d=>0,f=>6} aeffffff38000000b352130c1600 aeffffff38000000b352130c1600 aeffffff38000000b352130c1600 aeffffff38000000b352130c1600 - {e=>222000348,c=>7,a=>-76,g=>2,b=>4,d=>4,f=>5} b4ffffff3c000400dc743b0d1500 b4ffffff3c000400dc743b0d1500 b4ffffff3c000400dc743b0d1500 b4ffffff3c000400dc743b0d1500 - {e=>259177945,c=>7,a=>-89,g=>3,b=>2,d=>4,f=>1} a7ffffff3a000400d9bd720f1900 a7ffffff3a000400d9bd720f1900 a7ffffff3a000400d9bd720f1900 a7ffffff3a000400d9bd720f1900 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>83948314,a=>-39,d=>7,c=>7,h=>5026,b=>2,g=>2,f=>5} d9ffffff3a0007001af300051500a213 d9ffffff3a0007001af300051500a213 d9ffffff3a0007001af300051500a213 d9ffffff3a0007001af300051500a213 - {e=>263712322,a=>73,d=>0,c=>3,h=>5678,b=>2,g=>3,f=>7} 490000001a00000042eeb70f1f002e16 490000001a00000042eeb70f1f002e16 490000001a00000042eeb70f1f002e16 490000001a00000042eeb70f1f002e16 - {e=>29595889,a=>-74,d=>7,c=>3,h=>3087,b=>2,g=>3,f=>4} b6ffffff1a000700f198c3011c000f0c b6ffffff1a000700f198c3011c000f0c b6ffffff1a000700f198c3011c000f0c b6ffffff1a000700f198c3011c000f0c - {e=>229616258,a=>-13,d=>2,c=>2,h=>5537,b=>5,g=>2,f=>6} f3ffffff1500020082aaaf0d1600a115 f3ffffff1500020082aaaf0d1600a115 f3ffffff1500020082aaaf0d1600a115 f3ffffff1500020082aaaf0d1600a115 - {e=>192578723,a=>-50,d=>5,c=>7,h=>779,b=>7,g=>0,f=>1} ceffffff3f000500a3847a0b01000b03 ceffffff3f000500a3847a0b01000b03 ceffffff3f000500a3847a0b01000b03 ceffffff3f000500a3847a0b01000b03 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct umixed_pack_2 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>53556282,a=>93,d=>1,c=>0,h=>6233,b=>5,g=>2,f=>6,i=>8} 5d000000050001003a343103160059180800 5d000000050001003a343103160059180800 5d000000050001003a343103160059180800 5d000000050001003a343103160059180800 - {e=>177717941,a=>-92,d=>4,c=>4,h=>2021,b=>5,g=>1,f=>5,i=>247} a4ffffff25000400b5c2970a0d00e507f700 a4ffffff25000400b5c2970a0d00e507f700 a4ffffff25000400b5c2970a0d00e507f700 a4ffffff25000400b5c2970a0d00e507f700 - {e=>182845399,a=>88,d=>7,c=>0,h=>1885,b=>2,g=>0,f=>7,i=>153} 5800000002000700d7ffe50a07005d079900 5800000002000700d7ffe50a07005d079900 5800000002000700d7ffe50a07005d079900 5800000002000700d7ffe50a07005d079900 - {e=>88054627,a=>92,d=>5,c=>7,h=>765,b=>5,g=>0,f=>1,i=>252} 5c0000003d000500639b3f050100fd02fc00 5c0000003d000500639b3f050100fd02fc00 5c0000003d000500639b3f050100fd02fc00 5c0000003d000500639b3f050100fd02fc00 - {e=>77656705,a=>-32,d=>0,c=>0,h=>6746,b=>6,g=>3,f=>4,i=>4} e0ffffff0600000081f2a0041c005a1a0400 e0ffffff0600000081f2a0041c005a1a0400 e0ffffff0600000081f2a0041c005a1a0400 e0ffffff0600000081f2a0041c005a1a0400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; }; - {a=>0} 00 00 00 00 - {a=>2} 02 02 02 02 - {a=>3} 03 03 03 03 - {a=>4} 04 04 04 04 - {a=>1} 01 01 01 01 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; }; - {a=>1,b=>7} 39 39 39 39 - {a=>5,b=>4} 25 25 25 25 - {a=>2,b=>6} 32 32 32 32 - {a=>6,b=>0} 06 06 06 06 - {a=>6,b=>3} 1e 1e 1e 1e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; }; - {c=>7,a=>2,b=>3} 1a000700 1a000700 1a000700 1a000700 - {c=>7,a=>5,b=>5} 2d000700 2d000700 2d000700 2d000700 - {c=>6,a=>2,b=>1} 0a000600 0a000600 0a000600 0a000600 - {c=>2,a=>0,b=>4} 20000200 20000200 20000200 20000200 - {c=>2,a=>0,b=>0} 00000200 00000200 00000200 00000200 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; }; - {c=>3,a=>7,b=>1,d=>50028689} 0f0003009160fb02 0f0003009160fb02 0f0003009160fb02 0f0003009160fb02 - {c=>0,a=>6,b=>4,d=>214060677} 26000000854ec20c 26000000854ec20c 26000000854ec20c 26000000854ec20c - {c=>5,a=>3,b=>2,d=>195763511} 13000500371dab0b 13000500371dab0b 13000500371dab0b 13000500371dab0b - {c=>3,a=>3,b=>6,d=>63439012} 33000300a400c803 33000300a400c803 33000300a400c803 33000300a400c803 - {c=>0,a=>5,b=>5,d=>244764352} 2d000000c0ce960e 2d000000c0ce960e 2d000000c0ce960e 2d000000c0ce960e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; }; - {e=>3,c=>2,a=>4,b=>7,d=>224624247} 3c000200777e630d03000000 3c000200777e630d03000000 3c000200777e630d03000000 3c000200777e630d03000000 - {e=>0,c=>1,a=>5,b=>1,d=>177052414} 0d000100fe9a8d0a00000000 0d000100fe9a8d0a00000000 0d000100fe9a8d0a00000000 0d000100fe9a8d0a00000000 - {e=>0,c=>0,a=>2,b=>5,d=>246117108} 2a000000f472ab0e00000000 2a000000f472ab0e00000000 2a000000f472ab0e00000000 2a000000f472ab0e00000000 - {e=>6,c=>6,a=>5,b=>7,d=>185373738} 3d0006002a940c0b06000000 3d0006002a940c0b06000000 3d0006002a940c0b06000000 3d0006002a940c0b06000000 - {e=>5,c=>3,a=>4,b=>5,d=>54818930} 2c0003007278440305000000 2c0003007278440305000000 2c0003007278440305000000 2c0003007278440305000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; }; - {e=>3,c=>4,a=>4,b=>0,d=>79628885,f=>3} 04000400550abf041b000000 04000400550abf041b000000 04000400550abf041b000000 04000400550abf041b000000 - {e=>2,c=>4,a=>1,b=>5,d=>144152264,f=>2} 29000400c896970812000000 29000400c896970812000000 29000400c896970812000000 29000400c896970812000000 - {e=>5,c=>6,a=>2,b=>0,d=>26710878,f=>3} 020006005e9397011d000000 020006005e9397011d000000 020006005e9397011d000000 020006005e9397011d000000 - {e=>5,c=>6,a=>7,b=>4,d=>34004101,f=>1} 2700060085dc06020d000000 2700060085dc06020d000000 2700060085dc06020d000000 2700060085dc06020d000000 - {e=>0,c=>4,a=>2,b=>1,d=>16933732,f=>1} 0a0004006463020108000000 0a0004006463020108000000 0a0004006463020108000000 0a0004006463020108000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; }; - {e=>6,c=>4,a=>7,g=>5071,b=>0,d=>231122139,f=>3} 07000400dba4c60d1e00cf13 07000400dba4c60d1e00cf13 07000400dba4c60d1e00cf13 07000400dba4c60d1e00cf13 - {e=>6,c=>2,a=>7,g=>456,b=>3,d=>180080748,f=>0} 1f0002006cd0bb0a0600c801 1f0002006cd0bb0a0600c801 1f0002006cd0bb0a0600c801 1f0002006cd0bb0a0600c801 - {e=>2,c=>3,a=>3,g=>5849,b=>3,d=>79209729,f=>3} 1b00030001a5b8041a00d916 1b00030001a5b8041a00d916 1b00030001a5b8041a00d916 1b00030001a5b8041a00d916 - {e=>1,c=>3,a=>7,g=>2821,b=>0,d=>127280147,f=>3} 07000300132496071900050b 07000300132496071900050b 07000300132496071900050b 07000300132496071900050b - {e=>3,c=>1,a=>1,g=>507,b=>0,d=>255482069,f=>1} 01000100d5583a0f0b00fb01 01000100d5583a0f0b00fb01 01000100d5583a0f0b00fb01 01000100d5583a0f0b00fb01 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { unsigned char a:3; unsigned char b:3; unsigned short c:3; unsigned int d:28; unsigned char e:3; unsigned char f:2; unsigned short g:13; unsigned char h; }; - {e=>6,a=>7,d=>257420570,c=>7,h=>84,b=>1,g=>1915,f=>3} 0f0007001aed570f1e007b0754000000 0f0007001aed570f1e007b0754000000 0f0007001aed570f1e007b0754000000 0f0007001aed570f1e007b0754000000 - {e=>5,a=>5,d=>71066412,c=>2,h=>226,b=>3,g=>1456,f=>3} 1d0002002c633c041d00b005e2000000 1d0002002c633c041d00b005e2000000 1d0002002c633c041d00b005e2000000 1d0002002c633c041d00b005e2000000 - {e=>5,a=>0,d=>136880796,c=>4,h=>149,b=>6,g=>7356,f=>2} 300004009ca228081500bc1c95000000 300004009ca228081500bc1c95000000 300004009ca228081500bc1c95000000 300004009ca228081500bc1c95000000 - {e=>4,a=>2,d=>230323768,c=>1,h=>107,b=>2,g=>1870,f=>0} 120001003876ba0d04004e076b000000 120001003876ba0d04004e076b000000 120001003876ba0d04004e076b000000 120001003876ba0d04004e076b000000 - {e=>0,a=>1,d=>100150911,c=>2,h=>68,b=>6,g=>5875,f=>1} 310002007f2ef8050800f31644000000 310002007f2ef8050800f31644000000 310002007f2ef8050800f31644000000 310002007f2ef8050800f31644000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; }; - {a=>65,b=>3} 4103 4103 4103 4103 - {a=>6,b=>0} 0600 0600 0600 0600 - {a=>95,b=>6} 5f06 5f06 5f06 5f06 - {a=>-19,b=>1} ed01 ed01 ed01 ed01 - {a=>69,b=>7} 4507 4507 4507 4507 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; }; - {c=>6,a=>-76,b=>3} b433 b433 b433 b433 - {c=>6,a=>58,b=>2} 3a32 3a32 3a32 3a32 - {c=>0,a=>-87,b=>7} a907 a907 a907 a907 - {c=>5,a=>95,b=>6} 5f2e 5f2e 5f2e 5f2e - {c=>6,a=>69,b=>2} 4532 4532 4532 4532 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>3,a=>-39,b=>1,d=>1} d9190100 d9190100 d9190100 d9190100 - {c=>0,a=>-41,b=>0,d=>0} d7000000 d7000000 d7000000 d7000000 - {c=>4,a=>98,b=>0,d=>0} 62200000 62200000 62200000 62200000 - {c=>0,a=>-29,b=>1,d=>5} e3010500 e3010500 e3010500 e3010500 - {c=>3,a=>-22,b=>1,d=>5} ea190500 ea190500 ea190500 ea190500 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>124299546,c=>2,a=>-99,b=>6,d=>6} 9d1606001aa96807 9d1606001aa96807 9d1606001aa96807 9d1606001aa96807 - {e=>146480008,c=>7,a=>77,b=>1,d=>1} 4d390100881bbb08 4d390100881bbb08 4d390100881bbb08 4d390100881bbb08 - {e=>114844914,c=>3,a=>-69,b=>7,d=>6} bb1f0600f264d806 bb1f0600f264d806 bb1f0600f264d806 bb1f0600f264d806 - {e=>66012636,c=>0,a=>-38,b=>2,d=>6} da020600dc45ef03 da020600dc45ef03 da020600dc45ef03 da020600dc45ef03 - {e=>262518736,c=>0,a=>20,b=>2,d=>0} 14020000d0b7a50f 14020000d0b7a50f 14020000d0b7a50f 14020000d0b7a50f = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>262442666,c=>5,a=>-46,b=>1,d=>0,f=>1} d2290000aa8ea40f01000000 d2290000aa8ea40f01000000 d2290000aa8ea40f01000000 d2290000aa8ea40f01000000 - {e=>51404586,c=>7,a=>-117,b=>0,d=>7,f=>2} 8b3807002a5f100302000000 8b3807002a5f100302000000 8b3807002a5f100302000000 8b3807002a5f100302000000 - {e=>62750320,c=>6,a=>103,b=>6,d=>5,f=>7} 67360500707ebd0307000000 67360500707ebd0307000000 67360500707ebd0307000000 67360500707ebd0307000000 - {e=>224998807,c=>7,a=>-64,b=>3,d=>6,f=>1} c03b06009735690d01000000 c03b06009735690d01000000 c03b06009735690d01000000 c03b06009735690d01000000 - {e=>147103397,c=>2,a=>51,b=>5,d=>5,f=>6} 33150500a59ec40806000000 33150500a59ec40806000000 33150500a59ec40806000000 33150500a59ec40806000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>126791030,c=>2,a=>62,g=>0,b=>5,d=>3,f=>3} 3e15030076ad8e0703000000 3e15030076ad8e0703000000 3e15030076ad8e0703000000 3e15030076ad8e0703000000 - {e=>121945673,c=>5,a=>14,g=>2,b=>7,d=>0,f=>6} 0e2f000049be440716000000 0e2f000049be440716000000 0e2f000049be440716000000 0e2f000049be440716000000 - {e=>144073686,c=>3,a=>96,g=>1,b=>3,d=>3,f=>6} 601b0300d66396080e000000 601b0300d66396080e000000 601b0300d66396080e000000 601b0300d66396080e000000 - {e=>215969518,c=>7,a=>-47,g=>2,b=>4,d=>4,f=>2} d13c0400ee6edf0c12000000 d13c0400ee6edf0c12000000 d13c0400ee6edf0c12000000 d13c0400ee6edf0c12000000 - {e=>140309850,c=>5,a=>-50,g=>1,b=>5,d=>2,f=>0} ce2d02005af55c0808000000 ce2d02005af55c0808000000 ce2d02005af55c0808000000 ce2d02005af55c0808000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>255150489,a=>50,d=>2,c=>3,h=>5131,b=>7,g=>0,f=>5} 321f02009949350f05000b14 321f02009949350f05000b14 321f02009949350f05000b14 321f02009949350f05000b14 - {e=>88288107,a=>30,d=>5,c=>2,h=>508,b=>1,g=>1,f=>4} 1e1105006b2b43050c00fc01 1e1105006b2b43050c00fc01 1e1105006b2b43050c00fc01 1e1105006b2b43050c00fc01 - {e=>69089767,a=>-51,d=>7,c=>1,h=>2817,b=>4,g=>0,f=>1} cd0c0700e7391e040100010b cd0c0700e7391e040100010b cd0c0700e7391e040100010b cd0c0700e7391e040100010b - {e=>181343856,a=>45,d=>0,c=>7,h=>8181,b=>5,g=>0,f=>3} 2d3d00007016cf0a0300f51f 2d3d00007016cf0a0300f51f 2d3d00007016cf0a0300f51f 2d3d00007016cf0a0300f51f - {e=>255383303,a=>-26,d=>0,c=>4,h=>6731,b=>2,g=>0,f=>2} e622000007d7380f02004b1a e622000007d7380f02004b1a e622000007d7380f02004b1a e622000007d7380f02004b1a = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { char a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>166068539,a=>7,d=>5,c=>2,h=>5695,b=>7,g=>1,f=>6,i=>154} 071705003b01e6090e003f169a000000 071705003b01e6090e003f169a000000 071705003b01e6090e003f169a000000 071705003b01e6090e003f169a000000 - {e=>33996722,a=>19,d=>3,c=>1,h=>5872,b=>0,g=>3,f=>4,i=>109} 13080300b2bf06021c00f0166d000000 13080300b2bf06021c00f0166d000000 13080300b2bf06021c00f0166d000000 13080300b2bf06021c00f0166d000000 - {e=>233609477,a=>33,d=>2,c=>7,h=>5345,b=>1,g=>1,f=>4,i=>42} 213902000599ec0d0c00e1142a000000 213902000599ec0d0c00e1142a000000 213902000599ec0d0c00e1142a000000 213902000599ec0d0c00e1142a000000 - {e=>221295631,a=>68,d=>4,c=>7,h=>2330,b=>4,g=>0,f=>7,i=>18} 443c04000fb4300d07001a0912000000 443c04000fb4300d07001a0912000000 443c04000fb4300d07001a0912000000 443c04000fb4300d07001a0912000000 - {e=>91575618,a=>-124,d=>7,c=>1,h=>4394,b=>5,g=>0,f=>3,i=>236} 840d07004255750503002a11ec000000 840d07004255750503002a11ec000000 840d07004255750503002a11ec000000 840d07004255750503002a11ec000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; }; - {a=>116,b=>5} 74000500 74000500 74000500 74000500 - {a=>71,b=>2} 47000200 47000200 47000200 47000200 - {a=>-124,b=>5} 84ff0500 84ff0500 84ff0500 84ff0500 - {a=>80,b=>5} 50000500 50000500 50000500 50000500 - {a=>-89,b=>4} a7ff0400 a7ff0400 a7ff0400 a7ff0400 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; }; - {c=>3,a=>-17,b=>0} efff1800 efff1800 efff1800 efff1800 - {c=>1,a=>-2,b=>7} feff0f00 feff0f00 feff0f00 feff0f00 - {c=>1,a=>-91,b=>5} a5ff0d00 a5ff0d00 a5ff0d00 a5ff0d00 - {c=>0,a=>68,b=>4} 44000400 44000400 44000400 44000400 - {c=>7,a=>-51,b=>2} cdff3a00 cdff3a00 cdff3a00 cdff3a00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>5,a=>-102,b=>5,d=>2} 9aff2d000200 9aff2d000200 9aff2d000200 9aff2d000200 - {c=>4,a=>79,b=>5,d=>3} 4f0025000300 4f0025000300 4f0025000300 4f0025000300 - {c=>7,a=>67,b=>7,d=>4} 43003f000400 43003f000400 43003f000400 43003f000400 - {c=>1,a=>57,b=>7,d=>4} 39000f000400 39000f000400 39000f000400 39000f000400 - {c=>7,a=>56,b=>4,d=>2} 38003c000200 38003c000200 38003c000200 38003c000200 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>13432198,c=>4,a=>37,b=>0,d=>6} 250020000600000086f5cc00 250020000600000086f5cc00 250020000600000086f5cc00 250020000600000086f5cc00 - {e=>56807926,c=>1,a=>40,b=>5,d=>2} 28000d0002000000f6d16203 28000d0002000000f6d16203 28000d0002000000f6d16203 28000d0002000000f6d16203 - {e=>135705606,c=>5,a=>-117,b=>1,d=>2} 8bff29000200000006b41608 8bff29000200000006b41608 8bff29000200000006b41608 8bff29000200000006b41608 - {e=>57461598,c=>5,a=>-92,b=>1,d=>0} a4ff2900000000005ecb6c03 a4ff2900000000005ecb6c03 a4ff2900000000005ecb6c03 a4ff2900000000005ecb6c03 - {e=>47673734,c=>0,a=>-17,b=>2,d=>4} efff0200040000008671d702 efff0200040000008671d702 efff0200040000008671d702 efff0200040000008671d702 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>161341178,c=>6,a=>41,b=>3,d=>6,f=>4} 2900330006000000fade9d0904000000 2900330006000000fade9d0904000000 2900330006000000fade9d0904000000 2900330006000000fade9d0904000000 - {e=>17636513,c=>4,a=>97,b=>1,d=>0,f=>7} 6100210000000000a11c0d0107000000 6100210000000000a11c0d0107000000 6100210000000000a11c0d0107000000 6100210000000000a11c0d0107000000 - {e=>71589661,c=>4,a=>83,b=>1,d=>4,f=>3} 53002100040000001d5f440403000000 53002100040000001d5f440403000000 53002100040000001d5f440403000000 53002100040000001d5f440403000000 - {e=>130474327,c=>1,a=>95,b=>0,d=>6,f=>2} 5f0008000600000057e1c60702000000 5f0008000600000057e1c60702000000 5f0008000600000057e1c60702000000 5f0008000600000057e1c60702000000 - {e=>97397382,c=>1,a=>47,b=>1,d=>2,f=>2} 2f00090002000000862ace0502000000 2f00090002000000862ace0502000000 2f00090002000000862ace0502000000 2f00090002000000862ace0502000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>212274530,c=>6,a=>61,g=>1,b=>5,d=>1,f=>6} 3d00350001000000620da70c0e000000 3d00350001000000620da70c0e000000 3d00350001000000620da70c0e000000 3d00350001000000620da70c0e000000 - {e=>84374245,c=>6,a=>105,g=>1,b=>3,d=>2,f=>4} 6900330002000000e57207050c000000 6900330002000000e57207050c000000 6900330002000000e57207050c000000 6900330002000000e57207050c000000 - {e=>59588346,c=>5,a=>-128,g=>1,b=>7,d=>7,f=>2} 80ff2f0007000000fa3e8d030a000000 80ff2f0007000000fa3e8d030a000000 80ff2f0007000000fa3e8d030a000000 80ff2f0007000000fa3e8d030a000000 - {e=>183955461,c=>3,a=>33,g=>3,b=>6,d=>7,f=>3} 21001e000700000005f0f60a1b000000 21001e000700000005f0f60a1b000000 21001e000700000005f0f60a1b000000 21001e000700000005f0f60a1b000000 - {e=>192083138,c=>3,a=>-69,g=>3,b=>4,d=>0,f=>2} bbff1c0000000000c2f4720b1a000000 bbff1c0000000000c2f4720b1a000000 bbff1c0000000000c2f4720b1a000000 bbff1c0000000000c2f4720b1a000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>113601201,a=>91,d=>3,c=>3,h=>3432,b=>1,g=>0,f=>2} 5b00190003000000b16ac5060200680d 5b00190003000000b16ac5060200680d 5b00190003000000b16ac5060200680d 5b00190003000000b16ac5060200680d - {e=>203592947,a=>15,d=>7,c=>1,h=>5527,b=>6,g=>0,f=>7} 0f000e0007000000f394220c07009715 0f000e0007000000f394220c07009715 0f000e0007000000f394220c07009715 0f000e0007000000f394220c07009715 - {e=>20997174,a=>-60,d=>7,c=>4,h=>6515,b=>6,g=>0,f=>0} c4ff2600070000003664400100007319 c4ff2600070000003664400100007319 c4ff2600070000003664400100007319 c4ff2600070000003664400100007319 - {e=>235268567,a=>-47,d=>5,c=>4,h=>1813,b=>6,g=>2,f=>7} d1ff260005000000d7e9050e17001507 d1ff260005000000d7e9050e17001507 d1ff260005000000d7e9050e17001507 d1ff260005000000d7e9050e17001507 - {e=>104426910,a=>-85,d=>3,c=>1,h=>4758,b=>4,g=>2,f=>1} abff0c00030000009e6d390611009612 abff0c00030000009e6d390611009612 abff0c00030000009e6d390611009612 abff0c00030000009e6d390611009612 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { short a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>12539432,a=>-13,d=>1,c=>5,h=>262,b=>4,g=>3,f=>0,i=>197} f3ff2c00010000002856bf0018000601c5000000 f3ff2c00010000002856bf0018000601c5000000 f3ff2c00010000002856bf0018000601c5000000 f3ff2c00010000002856bf0018000601c5000000 - {e=>121930746,a=>112,d=>4,c=>3,h=>1222,b=>7,g=>1,f=>5,i=>13} 70001f0004000000fa8344070d00c6040d000000 70001f0004000000fa8344070d00c6040d000000 70001f0004000000fa8344070d00c6040d000000 70001f0004000000fa8344070d00c6040d000000 - {e=>212968800,a=>104,d=>5,c=>7,h=>2223,b=>4,g=>2,f=>6,i=>9} 68003c000500000060a5b10c1600af0809000000 68003c000500000060a5b10c1600af0809000000 68003c000500000060a5b10c1600af0809000000 68003c000500000060a5b10c1600af0809000000 - {e=>48555818,a=>-18,d=>2,c=>7,h=>3063,b=>4,g=>1,f=>1,i=>165} eeff3c00020000002ae7e4020900f70ba5000000 eeff3c00020000002ae7e4020900f70ba5000000 eeff3c00020000002ae7e4020900f70ba5000000 eeff3c00020000002ae7e4020900f70ba5000000 - {e=>204417579,a=>18,d=>3,c=>6,h=>3751,b=>6,g=>1,f=>5,i=>20} 12003600030000002b2a2f0c0d00a70e14000000 12003600030000002b2a2f0c0d00a70e14000000 12003600030000002b2a2f0c0d00a70e14000000 12003600030000002b2a2f0c0d00a70e14000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; }; - {a=>3,b=>1} 0300000001000000 0300000001000000 0300000001000000 0300000001000000 - {a=>-79,b=>0} b1ffffff00000000 b1ffffff00000000 b1ffffff00000000 b1ffffff00000000 - {a=>22,b=>0} 1600000000000000 1600000000000000 1600000000000000 1600000000000000 - {a=>-61,b=>4} c3ffffff04000000 c3ffffff04000000 c3ffffff04000000 c3ffffff04000000 - {a=>4,b=>5} 0400000005000000 0400000005000000 0400000005000000 0400000005000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; }; - {c=>1,a=>15,b=>2} 0f0000000a000000 0f0000000a000000 0f0000000a000000 0f0000000a000000 - {c=>6,a=>8,b=>1} 0800000031000000 0800000031000000 0800000031000000 0800000031000000 - {c=>7,a=>20,b=>5} 140000003d000000 140000003d000000 140000003d000000 140000003d000000 - {c=>2,a=>65,b=>6} 4100000016000000 4100000016000000 4100000016000000 4100000016000000 - {c=>6,a=>27,b=>7} 1b00000037000000 1b00000037000000 1b00000037000000 1b00000037000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>121,b=>6,d=>0} 7900000026000000 7900000026000000 7900000026000000 7900000026000000 - {c=>7,a=>-95,b=>4,d=>6} a1ffffff3c000600 a1ffffff3c000600 a1ffffff3c000600 a1ffffff3c000600 - {c=>5,a=>-88,b=>5,d=>4} a8ffffff2d000400 a8ffffff2d000400 a8ffffff2d000400 a8ffffff2d000400 - {c=>6,a=>101,b=>5,d=>1} 6500000035000100 6500000035000100 6500000035000100 6500000035000100 - {c=>7,a=>24,b=>5,d=>6} 180000003d000600 180000003d000600 180000003d000600 180000003d000600 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>169306690,c=>2,a=>21,b=>0,d=>6} 1500000010000600426a170a 1500000010000600426a170a 1500000010000600426a170a 1500000010000600426a170a - {e=>49555571,c=>7,a=>7,b=>1,d=>7} 07000000390007007328f402 07000000390007007328f402 07000000390007007328f402 07000000390007007328f402 - {e=>137008742,c=>3,a=>-69,b=>1,d=>4} bbffffff1900040066962a08 bbffffff1900040066962a08 bbffffff1900040066962a08 bbffffff1900040066962a08 - {e=>85806609,c=>1,a=>-17,b=>5,d=>3} efffffff0d000300114e1d05 efffffff0d000300114e1d05 efffffff0d000300114e1d05 efffffff0d000300114e1d05 - {e=>133506977,c=>6,a=>93,b=>0,d=>6} 5d00000030000600a127f507 5d00000030000600a127f507 5d00000030000600a127f507 5d00000030000600a127f507 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>156208632,c=>7,a=>-84,b=>2,d=>2,f=>2} acffffff3a000200f88d4f0902000000 acffffff3a000200f88d4f0902000000 acffffff3a000200f88d4f0902000000 acffffff3a000200f88d4f0902000000 - {e=>130617554,c=>4,a=>-17,b=>6,d=>7,f=>0} efffffff26000700d210c90700000000 efffffff26000700d210c90700000000 efffffff26000700d210c90700000000 efffffff26000700d210c90700000000 - {e=>95191856,c=>5,a=>65,b=>4,d=>6,f=>6} 410000002c0006003083ac0506000000 410000002c0006003083ac0506000000 410000002c0006003083ac0506000000 410000002c0006003083ac0506000000 - {e=>142523577,c=>4,a=>114,b=>5,d=>2,f=>1} 7200000025000200b9bc7e0801000000 7200000025000200b9bc7e0801000000 7200000025000200b9bc7e0801000000 7200000025000200b9bc7e0801000000 - {e=>122537461,c=>7,a=>-44,b=>5,d=>0,f=>2} d4ffffff3d000000f5c54d0702000000 d4ffffff3d000000f5c54d0702000000 d4ffffff3d000000f5c54d0702000000 d4ffffff3d000000f5c54d0702000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>144539243,c=>5,a=>29,g=>2,b=>5,d=>0,f=>6} 1d0000002d0000006b7e9d0816000000 1d0000002d0000006b7e9d0816000000 1d0000002d0000006b7e9d0816000000 1d0000002d0000006b7e9d0816000000 - {e=>139635304,c=>6,a=>123,g=>2,b=>7,d=>7,f=>3} 7b0000003700070068aa520813000000 7b0000003700070068aa520813000000 7b0000003700070068aa520813000000 7b0000003700070068aa520813000000 - {e=>8969412,c=>7,a=>-110,g=>2,b=>1,d=>2,f=>2} 92ffffff39000200c4dc880012000000 92ffffff39000200c4dc880012000000 92ffffff39000200c4dc880012000000 92ffffff39000200c4dc880012000000 - {e=>110093836,c=>0,a=>-32,g=>3,b=>2,d=>0,f=>5} e0ffffff020000000ce68f061d000000 e0ffffff020000000ce68f061d000000 e0ffffff020000000ce68f061d000000 e0ffffff020000000ce68f061d000000 - {e=>18345492,c=>1,a=>14,g=>2,b=>0,d=>1,f=>1} 0e0000000800010014ee170111000000 0e0000000800010014ee170111000000 0e0000000800010014ee170111000000 0e0000000800010014ee170111000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>243213622,a=>-120,d=>4,c=>7,h=>7881,b=>7,g=>3,f=>2} 88ffffff3f00040036257f0e1a00c91e 88ffffff3f00040036257f0e1a00c91e 88ffffff3f00040036257f0e1a00c91e 88ffffff3f00040036257f0e1a00c91e - {e=>86919501,a=>53,d=>5,c=>5,h=>380,b=>0,g=>0,f=>0} 35000000280005004d492e0500007c01 35000000280005004d492e0500007c01 35000000280005004d492e0500007c01 35000000280005004d492e0500007c01 - {e=>147012077,a=>32,d=>1,c=>6,h=>2230,b=>1,g=>2,f=>7} 2000000031000100ed39c3081700b608 2000000031000100ed39c3081700b608 2000000031000100ed39c3081700b608 2000000031000100ed39c3081700b608 - {e=>23638499,a=>-48,d=>3,c=>7,h=>5753,b=>7,g=>2,f=>6} d0ffffff3f000300e3b1680116007916 d0ffffff3f000300e3b1680116007916 d0ffffff3f000300e3b1680116007916 d0ffffff3f000300e3b1680116007916 - {e=>136927608,a=>-38,d=>6,c=>7,h=>773,b=>3,g=>2,f=>5} daffffff3b0006007859290815000503 daffffff3b0006007859290815000503 daffffff3b0006007859290815000503 daffffff3b0006007859290815000503 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { int a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>145884245,a=>43,d=>4,c=>7,h=>3698,b=>4,g=>0,f=>0,i=>117} 2b0000003c0004005504b2080000720e75000000 2b0000003c0004005504b2080000720e75000000 2b0000003c0004005504b2080000720e75000000 2b0000003c0004005504b2080000720e75000000 - {e=>148618604,a=>-115,d=>5,c=>6,h=>3263,b=>7,g=>2,f=>1,i=>253} 8dffffff370005006cbddb081100bf0cfd000000 8dffffff370005006cbddb081100bf0cfd000000 8dffffff370005006cbddb081100bf0cfd000000 8dffffff370005006cbddb081100bf0cfd000000 - {e=>226652794,a=>48,d=>5,c=>2,h=>2101,b=>4,g=>1,f=>3,i=>16} 30000000140005007a72820d0b00350810000000 30000000140005007a72820d0b00350810000000 30000000140005007a72820d0b00350810000000 30000000140005007a72820d0b00350810000000 - {e=>137257539,a=>-126,d=>4,c=>7,h=>3963,b=>0,g=>3,f=>1,i=>27} 82ffffff3800040043622e0819007b0f1b000000 82ffffff3800040043622e0819007b0f1b000000 82ffffff3800040043622e0819007b0f1b000000 82ffffff3800040043622e0819007b0f1b000000 - {e=>106849035,a=>-61,d=>5,c=>4,h=>1757,b=>7,g=>1,f=>5,i=>42} c3ffffff270005000b635e060d00dd062a000000 c3ffffff270005000b635e060d00dd062a000000 c3ffffff270005000b635e060d00dd062a000000 c3ffffff270005000b635e060d00dd062a000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; }; - {a=>72,b=>5} 4800000005000000 4800000005000000 4800000005000000 4800000005000000 - {a=>-71,b=>1} b9ffffff01000000 b9ffffff01000000 b9ffffff01000000 b9ffffff01000000 - {a=>-67,b=>4} bdffffff04000000 bdffffff04000000 bdffffff04000000 bdffffff04000000 - {a=>-126,b=>2} 82ffffff02000000 82ffffff02000000 82ffffff02000000 82ffffff02000000 - {a=>126,b=>2} 7e00000002000000 7e00000002000000 7e00000002000000 7e00000002000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; }; - {c=>2,a=>122,b=>0} 7a00000010000000 7a00000010000000 7a00000010000000 7a00000010000000 - {c=>7,a=>-32,b=>1} e0ffffff39000000 e0ffffff39000000 e0ffffff39000000 e0ffffff39000000 - {c=>1,a=>33,b=>2} 210000000a000000 210000000a000000 210000000a000000 210000000a000000 - {c=>2,a=>-13,b=>6} f3ffffff16000000 f3ffffff16000000 f3ffffff16000000 f3ffffff16000000 - {c=>6,a=>-22,b=>1} eaffffff31000000 eaffffff31000000 eaffffff31000000 eaffffff31000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; }; - {c=>4,a=>-120,b=>1,d=>6} 88ffffff21000600 88ffffff21000600 88ffffff21000600 88ffffff21000600 - {c=>6,a=>-100,b=>5,d=>5} 9cffffff35000500 9cffffff35000500 9cffffff35000500 9cffffff35000500 - {c=>7,a=>70,b=>5,d=>2} 460000003d000200 460000003d000200 460000003d000200 460000003d000200 - {c=>5,a=>-124,b=>3,d=>0} 84ffffff2b000000 84ffffff2b000000 84ffffff2b000000 84ffffff2b000000 - {c=>7,a=>106,b=>6,d=>3} 6a0000003e000300 6a0000003e000300 6a0000003e000300 6a0000003e000300 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; }; - {e=>238948103,c=>0,a=>46,b=>1,d=>7} 2e00000001000700070f3e0e 2e00000001000700070f3e0e 2e00000001000700070f3e0e 2e00000001000700070f3e0e - {e=>85833411,c=>2,a=>41,b=>3,d=>7} 2900000013000700c3b61d05 2900000013000700c3b61d05 2900000013000700c3b61d05 2900000013000700c3b61d05 - {e=>85862305,c=>4,a=>-94,b=>6,d=>4} a2ffffff26000400a1271e05 a2ffffff26000400a1271e05 a2ffffff26000400a1271e05 a2ffffff26000400a1271e05 - {e=>89255584,c=>4,a=>26,b=>1,d=>0} 1a00000021000000a0ee5105 1a00000021000000a0ee5105 1a00000021000000a0ee5105 1a00000021000000a0ee5105 - {e=>218745112,c=>5,a=>-41,b=>3,d=>0} d7ffffff2b00000018c9090d d7ffffff2b00000018c9090d d7ffffff2b00000018c9090d d7ffffff2b00000018c9090d = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; }; - {e=>181902780,c=>3,a=>-112,b=>6,d=>7,f=>4} 90ffffff1e000700bc9dd70a04000000 90ffffff1e000700bc9dd70a04000000 90ffffff1e000700bc9dd70a04000000 90ffffff1e000700bc9dd70a04000000 - {e=>243947917,c=>2,a=>-87,b=>0,d=>1,f=>7} a9ffffff100001008d598a0e07000000 a9ffffff100001008d598a0e07000000 a9ffffff100001008d598a0e07000000 a9ffffff100001008d598a0e07000000 - {e=>87380681,c=>3,a=>-46,b=>2,d=>3,f=>1} d2ffffff1a000300c952350501000000 d2ffffff1a000300c952350501000000 d2ffffff1a000300c952350501000000 d2ffffff1a000300c952350501000000 - {e=>23417204,c=>4,a=>50,b=>3,d=>0,f=>5} 32000000230000007451650105000000 32000000230000007451650105000000 32000000230000007451650105000000 32000000230000007451650105000000 - {e=>33123043,c=>0,a=>116,b=>6,d=>0,f=>4} 7400000006000000e36af90104000000 7400000006000000e36af90104000000 7400000006000000e36af90104000000 7400000006000000e36af90104000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; }; - {e=>84208039,c=>0,a=>14,g=>1,b=>2,d=>1,f=>0} 0e00000002000100a7e9040508000000 0e00000002000100a7e9040508000000 0e00000002000100a7e9040508000000 0e00000002000100a7e9040508000000 - {e=>116421098,c=>1,a=>-89,g=>2,b=>6,d=>4,f=>6} a7ffffff0e000400ea71f00616000000 a7ffffff0e000400ea71f00616000000 a7ffffff0e000400ea71f00616000000 a7ffffff0e000400ea71f00616000000 - {e=>233446560,c=>1,a=>-126,g=>0,b=>7,d=>1,f=>0} 82ffffff0f000100a01cea0d00000000 82ffffff0f000100a01cea0d00000000 82ffffff0f000100a01cea0d00000000 82ffffff0f000100a01cea0d00000000 - {e=>196256397,c=>2,a=>-106,g=>1,b=>1,d=>5,f=>0} 96ffffff110005008da2b20b08000000 96ffffff110005008da2b20b08000000 96ffffff110005008da2b20b08000000 96ffffff110005008da2b20b08000000 - {e=>98949361,c=>1,a=>69,g=>3,b=>4,d=>4,f=>0} 450000000c000400f1d8e50518000000 450000000c000400f1d8e50518000000 450000000c000400f1d8e50518000000 450000000c000400f1d8e50518000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; }; - {e=>154431445,a=>-110,d=>6,c=>7,h=>5540,b=>6,g=>1,f=>7} 92ffffff3e000600d56f34090f00a415 92ffffff3e000600d56f34090f00a415 92ffffff3e000600d56f34090f00a415 92ffffff3e000600d56f34090f00a415 - {e=>175556692,a=>-125,d=>1,c=>1,h=>2798,b=>5,g=>2,f=>5} 83ffffff0d00010054c8760a1500ee0a 83ffffff0d00010054c8760a1500ee0a 83ffffff0d00010054c8760a1500ee0a 83ffffff0d00010054c8760a1500ee0a - {e=>165973282,a=>-23,d=>2,c=>0,h=>4321,b=>0,g=>0,f=>0} e9ffffff00000200228de4090000e110 e9ffffff00000200228de4090000e110 e9ffffff00000200228de4090000e110 e9ffffff00000200228de4090000e110 - {e=>13388635,a=>38,d=>7,c=>3,h=>3576,b=>1,g=>1,f=>0} 26000000190007005b4bcc000800f80d 26000000190007005b4bcc000800f80d 26000000190007005b4bcc000800f80d 26000000190007005b4bcc000800f80d - {e=>21214690,a=>-124,d=>3,c=>4,h=>6149,b=>0,g=>3,f=>3} 84ffffff20000300e2b543011b000518 84ffffff20000300e2b543011b000518 84ffffff20000300e2b543011b000518 84ffffff20000300e2b543011b000518 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct umixed_pack_4 { long a; unsigned char b:3; unsigned char c:3; unsigned short d:3; unsigned int e:28; unsigned char f:3; unsigned char g:2; unsigned short h:13; unsigned char i; }; - {e=>130293957,a=>-6,d=>3,c=>0,h=>3224,b=>7,g=>2,f=>1,i=>96} faffffff07000300c520c4071100980c60000000 faffffff07000300c520c4071100980c60000000 faffffff07000300c520c4071100980c60000000 faffffff07000300c520c4071100980c60000000 - {e=>22275050,a=>24,d=>7,c=>6,h=>4511,b=>7,g=>0,f=>3,i=>194} 1800000037000700eae3530103009f11c2000000 1800000037000700eae3530103009f11c2000000 1800000037000700eae3530103009f11c2000000 1800000037000700eae3530103009f11c2000000 - {e=>185744049,a=>-60,d=>7,c=>6,h=>1844,b=>6,g=>0,f=>2,i=>56} c4ffffff36000700b13a120b0200340738000000 c4ffffff36000700b13a120b0200340738000000 c4ffffff36000700b13a120b0200340738000000 c4ffffff36000700b13a120b0200340738000000 - {e=>260322633,a=>-58,d=>5,c=>5,h=>6201,b=>7,g=>2,f=>2,i=>199} c6ffffff2f0005004935840f12003918c7000000 c6ffffff2f0005004935840f12003918c7000000 c6ffffff2f0005004935840f12003918c7000000 c6ffffff2f0005004935840f12003918c7000000 - {e=>148496573,a=>-115,d=>0,c=>0,h=>7411,b=>3,g=>0,f=>7,i=>14} 8dffffff03000000bde0d9080700f31c0e000000 8dffffff03000000bde0d9080700f31c0e000000 8dffffff03000000bde0d9080700f31c0e000000 8dffffff03000000bde0d9080700f31c0e000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; }; - {a=>7} 07000000 07000000 07000000 07000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>7} 07000000 07000000 07000000 07000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; }; - {a=>5,b=>3} 1d000000 1d000000 1d000000 1d000000 - {a=>6,b=>-4} 26000000 26000000 26000000 26000000 - {a=>7,b=>1} 0f000000 0f000000 0f000000 0f000000 - {a=>4,b=>2} 14000000 14000000 14000000 14000000 - {a=>3,b=>2} 13000000 13000000 13000000 13000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>1,a=>6,b=>-4} 66000000 66000000 66000000 66000000 - {c=>3,a=>2,b=>0} c2000000 c2000000 c2000000 c2000000 - {c=>1,a=>4,b=>-3} 6c000000 6c000000 6c000000 6c000000 - {c=>-4,a=>2,b=>-4} 22010000 22010000 22010000 22010000 - {c=>-3,a=>4,b=>-3} 6c010000 6c010000 6c010000 6c010000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>-3,a=>0,b=>-3,d=>3} 6801000003 680100000300 6801000003000000 6801000003000000 - {c=>-4,a=>3,b=>3,d=>4} 1b01000004 1b0100000400 1b01000004000000 1b01000004000000 - {c=>-4,a=>4,b=>3,d=>1} 1c01000001 1c0100000100 1c01000001000000 1c01000001000000 - {c=>-1,a=>6,b=>-3,d=>0} ee01000000 ee0100000000 ee01000000000000 ee01000000000000 - {c=>0,a=>5,b=>2,d=>2} 1500000002 150000000200 1500000002000000 1500000002000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>0,c=>2,a=>1,b=>2,d=>6} 9100000006 910000000600 9100000006000000 9100000006000000 - {e=>-1,c=>-2,a=>6,b=>3,d=>7} 9e0100003f 9e0100003f00 9e0100003f000000 9e0100003f000000 - {e=>-1,c=>-2,a=>0,b=>0,d=>2} 800100003a 800100003a00 800100003a000000 800100003a000000 - {e=>0,c=>3,a=>6,b=>-1,d=>0} fe00000000 fe0000000000 fe00000000000000 fe00000000000000 - {e=>3,c=>-2,a=>1,b=>0,d=>7} 810100001f 810100001f00 810100001f000000 810100001f000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>2,c=>1,a=>2,b=>-4,d=>3,f=>6} 620000001306000000 62000000130006000000 620000001300000006000000 620000001300000006000000 - {e=>-2,c=>-2,a=>6,b=>1,d=>6,f=>0} 8e0100003600000000 8e010000360000000000 8e0100003600000000000000 8e0100003600000000000000 - {e=>1,c=>1,a=>3,b=>-4,d=>7,f=>5} 630000000f05000000 630000000f0005000000 630000000f00000005000000 630000000f00000005000000 - {e=>2,c=>2,a=>0,b=>-1,d=>3,f=>2} b80000001302000000 b8000000130002000000 b80000001300000002000000 b80000001300000002000000 - {e=>0,c=>3,a=>5,b=>2,d=>5,f=>2} d50000000502000000 d5000000050002000000 d50000000500000002000000 d50000000500000002000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>3,c=>-4,a=>1,b=>2,d=>1,f=>1} 110100001901000000 11010000190001000000 110100001900000001000000 110100001900000001000000 - {e=>-1,c=>-2,a=>5,b=>-1,d=>7,f=>2} bd0100003f02000000 bd0100003f0002000000 bd0100003f00000002000000 bd0100003f00000002000000 - {e=>-3,c=>-2,a=>2,b=>-2,d=>2,f=>3} b20100002a03000000 b20100002a0003000000 b20100002a00000003000000 b20100002a00000003000000 - {e=>-1,c=>-1,a=>7,b=>-1,d=>3,f=>1} ff0100003b01000000 ff0100003b0001000000 ff0100003b00000001000000 ff0100003b00000001000000 - {e=>-3,c=>2,a=>7,b=>-2,d=>5,f=>0} b70000002d00000000 b70000002d0000000000 b70000002d00000000000000 b70000002d00000000000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>0,c=>3,a=>3,g=>2,b=>0,d=>2,f=>7} c3000000020700000002 c30000000200070000000200 c3000000020000000700000002000000 c3000000020000000700000002000000 - {e=>1,c=>3,a=>0,g=>7,b=>1,d=>1,f=>4} c8000000090400000007 c80000000900040000000700 c8000000090000000400000007000000 c8000000090000000400000007000000 - {e=>0,c=>3,a=>7,g=>0,b=>-2,d=>7,f=>2} f7000000070200000000 f70000000700020000000000 f7000000070000000200000000000000 f7000000070000000200000000000000 - {e=>-2,c=>3,a=>1,g=>2,b=>0,d=>2,f=>0} c1000000320000000002 c10000003200000000000200 c1000000320000000000000002000000 c1000000320000000000000002000000 - {e=>2,c=>-1,a=>7,g=>5,b=>-2,d=>6,f=>7} f7010000160700000005 f70100001600070000000500 f7010000160000000700000005000000 f7010000160000000700000005000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>1,a=>0,d=>6,c=>-1,h=>3,b=>-1,g=>7,f=>6} f80100000e060000001f f80100000e00060000001f00 f80100000e000000060000001f000000 f80100000e000000060000001f000000 - {e=>-4,a=>1,d=>3,c=>-4,h=>2,b=>2,g=>0,f=>5} 11010000230500000010 110100002300050000001000 11010000230000000500000010000000 11010000230000000500000010000000 - {e=>2,a=>3,d=>1,c=>-4,h=>0,b=>-1,g=>0,f=>2} 3b010000110200000000 3b0100001100020000000000 3b010000110000000200000000000000 3b010000110000000200000000000000 - {e=>-2,a=>4,d=>4,c=>2,h=>-3,b=>-4,g=>7,f=>1} a400000034010000002f a40000003400010000002f00 a400000034000000010000002f000000 a400000034000000010000002f000000 - {e=>-2,a=>1,d=>2,c=>-1,h=>0,b=>-2,g=>5,f=>6} f1010000320600000005 f10100003200060000000500 f1010000320000000600000005000000 f1010000320000000600000005000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>0,a=>3,d=>4,c=>-1,h=>3,b=>-2,g=>3,f=>4,i=>1} f301000004040000001b01000000 f30100000400040000001b0001000000 f301000004000000040000001b00000001000000 f301000004000000040000001b00000001000000 - {e=>2,a=>5,d=>2,c=>1,h=>2,b=>-3,g=>4,f=>0,i=>3} 6d00000012000000001403000000 6d000000120000000000140003000000 6d00000012000000000000001400000003000000 6d00000012000000000000001400000003000000 - {e=>0,a=>5,d=>3,c=>2,h=>-3,b=>-1,g=>7,f=>7,i=>4} bd00000003070000002f04000000 bd0000000300070000002f0004000000 bd00000003000000070000002f00000004000000 bd00000003000000070000002f00000004000000 - {e=>-3,a=>5,d=>1,c=>1,h=>3,b=>-1,g=>3,f=>2,i=>6} 7d00000029020000001b06000000 7d0000002900020000001b0006000000 7d00000029000000020000001b00000006000000 7d00000029000000020000001b00000006000000 - {e=>3,a=>3,d=>6,c=>1,h=>0,b=>0,g=>3,f=>2,i=>7} 430000001e020000000307000000 430000001e0002000000030007000000 430000001e000000020000000300000007000000 430000001e000000020000000300000007000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>-1,a=>4,d=>4,j=>-12,c=>2,h=>1,b=>-1,g=>7,f=>7,i=>0} bc0000003c070000000f00000000f4 bc0000003c00070000000f0000000000f400 bc0000003c000000070000000f00000000000000f4000000 bc0000003c000000070000000f00000000000000f4000000 - {e=>3,a=>4,d=>1,j=>93,c=>-1,h=>3,b=>-4,g=>3,f=>2,i=>6} e401000019020000001b060000005d e40100001900020000001b00060000005d00 e401000019000000020000001b000000060000005d000000 e401000019000000020000001b000000060000005d000000 - {e=>1,a=>1,d=>6,j=>58,c=>-2,h=>-3,b=>3,g=>7,f=>5,i=>6} 990100000e050000002f060000003a 990100000e00050000002f00060000003a00 990100000e000000050000002f000000060000003a000000 990100000e000000050000002f000000060000003a000000 - {e=>-2,a=>4,d=>4,j=>96,c=>3,h=>3,b=>-3,g=>6,f=>0,i=>1} ec00000034000000001e0100000060 ec0000003400000000001e00010000006000 ec00000034000000000000001e0000000100000060000000 ec00000034000000000000001e0000000100000060000000 - {e=>-4,a=>6,d=>7,j=>-52,c=>-2,h=>-2,b=>2,g=>5,f=>4,i=>7} 9601000027040000003507000000cc 96010000270004000000350007000000cc00 9601000027000000040000003500000007000000cc000000 9601000027000000040000003500000007000000cc000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>-4,a=>4,d=>6,j=>-110,c=>3,k=>1,h=>3,b=>-4,g=>4,f=>2,i=>5} e400000026020000001c050000009201 e40000002600020000001c00050000009201 e400000026000000020000001c0000000500000092010000 e400000026000000020000001c0000000500000092010000 - {e=>1,a=>1,d=>5,j=>-28,c=>-3,k=>4,h=>-4,b=>2,g=>2,f=>4,i=>2} 510100000d040000002202000000e404 510100000d0004000000220002000000e404 510100000d000000040000002200000002000000e4040000 510100000d000000040000002200000002000000e4040000 - {e=>1,a=>0,d=>1,j=>83,c=>2,k=>7,h=>0,b=>1,g=>6,f=>5,i=>0} 88000000090500000006000000005307 880000000900050000000600000000005307 880000000900000005000000060000000000000053070000 880000000900000005000000060000000000000053070000 - {e=>3,a=>7,d=>1,j=>-110,c=>2,k=>0,h=>0,b=>-3,g=>0,f=>4,i=>6} af000000190400000000060000009200 af0000001900040000000000060000009200 af0000001900000004000000000000000600000092000000 af0000001900000004000000000000000600000092000000 - {e=>-4,a=>5,d=>6,j=>-88,c=>1,k=>7,h=>-3,b=>0,g=>5,f=>2,i=>2} 4500000026020000002d02000000a807 450000002600020000002d0002000000a807 4500000026000000020000002d00000002000000a8070000 4500000026000000020000002d00000002000000a8070000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>1,a=>1,d=>5,j=>101,l=>-3,c=>-4,k=>2,h=>-2,b=>3,g=>1,f=>1,i=>2} 190100000d010000003102000000652a 190100000d0001000000310002000000652a 190100000d000000010000003100000002000000652a0000 190100000d000000010000003100000002000000652a0000 - {e=>1,a=>6,d=>2,j=>-74,l=>0,c=>-4,k=>2,h=>-2,b=>2,g=>2,f=>0,i=>4} 160100000a000000003204000000b602 160100000a0000000000320004000000b602 160100000a000000000000003200000004000000b6020000 160100000a000000000000003200000004000000b6020000 - {e=>3,a=>7,d=>2,j=>30,l=>2,c=>3,k=>6,h=>0,b=>-4,g=>2,f=>7,i=>6} e70000001a0700000002060000001e16 e70000001a00070000000200060000001e16 e70000001a0000000700000002000000060000001e160000 e70000001a0000000700000002000000060000001e160000 - {e=>-2,a=>7,d=>0,j=>-4,l=>-2,c=>-4,k=>5,h=>0,b=>0,g=>4,f=>7,i=>4} 0701000030070000000404000000fc35 07010000300007000000040004000000fc35 0701000030000000070000000400000004000000fc350000 0701000030000000070000000400000004000000fc350000 - {e=>2,a=>0,d=>6,j=>65,l=>1,c=>-3,k=>6,h=>-3,b=>-2,g=>3,f=>1,i=>6} 7001000016010000002b06000000410e 700100001600010000002b0006000000410e 7001000016000000010000002b00000006000000410e0000 7001000016000000010000002b00000006000000410e0000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-4,a=>6,m=>1,d=>1,j=>55,l=>-2,c=>0,k=>7,h=>-2,b=>-4,g=>1,f=>0,i=>1} 2600000021000000003101000000373701000000 26000000210000000000310001000000373701000000 26000000210000000000000031000000010000003737000001000000 26000000210000000000000031000000010000003737000001000000 - {e=>3,a=>1,m=>6,d=>6,j=>-117,l=>-4,c=>-1,k=>5,h=>-4,b=>0,g=>2,f=>6,i=>7} c10100001e0600000022070000008b2506000000 c10100001e00060000002200070000008b2506000000 c10100001e0000000600000022000000070000008b25000006000000 c10100001e0000000600000022000000070000008b25000006000000 - {e=>2,a=>2,m=>4,d=>7,j=>-36,l=>3,c=>-1,k=>7,h=>3,b=>3,g=>3,f=>5,i=>5} da01000017050000001b05000000dc1f04000000 da0100001700050000001b0005000000dc1f04000000 da01000017000000050000001b00000005000000dc1f000004000000 da01000017000000050000001b00000005000000dc1f000004000000 - {e=>1,a=>0,m=>7,d=>6,j=>-99,l=>-1,c=>0,k=>7,h=>-4,b=>1,g=>0,f=>3,i=>1} 080000000e0300000020010000009d3f07000000 080000000e00030000002000010000009d3f07000000 080000000e0000000300000020000000010000009d3f000007000000 080000000e0000000300000020000000010000009d3f000007000000 - {e=>1,a=>2,m=>1,d=>3,j=>57,l=>-1,c=>0,k=>5,h=>3,b=>-4,g=>4,f=>4,i=>6} 220000000b040000001c06000000393d01000000 220000000b00040000001c0006000000393d01000000 220000000b000000040000001c00000006000000393d000001000000 220000000b000000040000001c00000006000000393d000001000000 = typedef int foo; struct mixed_no_pack { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>0,n=>177,a=>4,m=>2,d=>0,j=>-5,l=>-2,c=>3,k=>3,h=>-3,b=>0,g=>7,f=>7,i=>3} c400000000070000002f03000000fb3302000000b1 c40000000000070000002f0003000000fb3302000000b100 c400000000000000070000002f00000003000000fb33000002000000b1000000 c400000000000000070000002f00000003000000fb33000002000000b1000000 - {e=>-3,n=>5,a=>7,m=>4,d=>0,j=>90,l=>-1,c=>-1,k=>6,h=>-4,b=>3,g=>6,f=>3,i=>2} df010000280300000026020000005a3e0400000005 df0100002800030000002600020000005a3e040000000500 df010000280000000300000026000000020000005a3e00000400000005000000 df010000280000000300000026000000020000005a3e00000400000005000000 - {e=>-2,n=>218,a=>6,m=>2,d=>3,j=>122,l=>-3,c=>0,k=>7,h=>-3,b=>-2,g=>0,f=>1,i=>0} 36000000330100000028000000007a2f02000000da 360000003300010000002800000000007a2f02000000da00 36000000330000000100000028000000000000007a2f000002000000da000000 36000000330000000100000028000000000000007a2f000002000000da000000 - {e=>-2,n=>245,a=>5,m=>7,d=>2,j=>-67,l=>-1,c=>3,k=>0,h=>3,b=>-2,g=>3,f=>5,i=>0} f500000032050000001b00000000bd3807000000f5 f50000003200050000001b0000000000bd3807000000f500 f500000032000000050000001b00000000000000bd38000007000000f5000000 f500000032000000050000001b00000000000000bd38000007000000f5000000 - {e=>3,n=>3,a=>5,m=>6,d=>6,j=>-78,l=>3,c=>-1,k=>5,h=>2,b=>2,g=>4,f=>7,i=>5} d50100001e070000001405000000b21d0600000003 d50100001e0007000000140005000000b21d060000000300 d50100001e000000070000001400000005000000b21d00000600000003000000 d50100001e000000070000001400000005000000b21d00000600000003000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; }; - {a=>13,b=>7} 0d07000000 0d0007000000 0d00000007000000 0d00000007000000 - {a=>-33,b=>1} df01000000 df0001000000 df00000001000000 df00000001000000 - {a=>-85,b=>1} ab01000000 ab0001000000 ab00000001000000 ab00000001000000 - {a=>58,b=>4} 3a04000000 3a0004000000 3a00000004000000 3a00000004000000 - {a=>18,b=>6} 1206000000 120006000000 1200000006000000 1200000006000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>8,b=>7} 0827000000 080027000000 0800000027000000 0800000027000000 - {c=>2,a=>-98,b=>6} 9e16000000 9e0016000000 9e00000016000000 9e00000016000000 - {c=>-4,a=>-119,b=>6} 8926000000 890026000000 8900000026000000 8900000026000000 - {c=>3,a=>-114,b=>0} 8e18000000 8e0018000000 8e00000018000000 8e00000018000000 - {c=>-4,a=>104,b=>7} 6827000000 680027000000 6800000027000000 6800000027000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>2,a=>90,b=>5,d=>-3} 5a55010000 5a0055010000 5a00000055010000 5a00000055010000 - {c=>-3,a=>-24,b=>2,d=>-1} e8ea010000 e800ea010000 e8000000ea010000 e8000000ea010000 - {c=>0,a=>-46,b=>4,d=>-4} d204010000 d20004010000 d200000004010000 d200000004010000 - {c=>1,a=>-95,b=>5,d=>-3} a14d010000 a1004d010000 a10000004d010000 a10000004d010000 - {c=>3,a=>-50,b=>5,d=>-3} ce5d010000 ce005d010000 ce0000005d010000 ce0000005d010000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>3,a=>-67,b=>0,d=>-1} bdd801000002 bd00d80100000200 bd000000d801000002000000 bd000000d801000002000000 - {e=>6,c=>0,a=>-85,b=>0,d=>3} abc000000006 ab00c00000000600 ab000000c000000006000000 ab000000c000000006000000 - {e=>1,c=>-4,a=>27,b=>3,d=>3} 1be300000001 1b00e30000000100 1b000000e300000001000000 1b000000e300000001000000 - {e=>3,c=>1,a=>-53,b=>7,d=>3} cbcf00000003 cb00cf0000000300 cb000000cf00000003000000 cb000000cf00000003000000 - {e=>4,c=>3,a=>-28,b=>2,d=>-4} e41a01000004 e4001a0100000400 e40000001a01000004000000 e40000001a01000004000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>-1,a=>54,b=>0,d=>-1,f=>-4} 36f801000021 3600f80100002100 36000000f801000021000000 36000000f801000021000000 - {e=>5,c=>-2,a=>43,b=>2,d=>-2,f=>-4} 2bb201000025 2b00b20100002500 2b000000b201000025000000 2b000000b201000025000000 - {e=>2,c=>-1,a=>57,b=>7,d=>0,f=>-3} 393f0000002a 39003f0000002a00 390000003f0000002a000000 390000003f0000002a000000 - {e=>2,c=>-4,a=>-86,b=>0,d=>-4,f=>2} aa2001000012 aa00200100001200 aa0000002001000012000000 aa0000002001000012000000 - {e=>5,c=>-4,a=>36,b=>6,d=>-2,f=>1} 24a60100000d 2400a60100000d00 24000000a60100000d000000 24000000a60100000d000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>1,c=>-1,a=>-59,g=>1,b=>7,d=>-1,f=>1} c5ff0100000901000000 c500ff010000090001000000 c5000000ff0100000900000001000000 c5000000ff0100000900000001000000 - {e=>0,c=>-3,a=>-42,g=>3,b=>3,d=>-1,f=>3} d6eb0100001803000000 d600eb010000180003000000 d6000000eb0100001800000003000000 d6000000eb0100001800000003000000 - {e=>1,c=>-3,a=>-91,g=>5,b=>1,d=>1,f=>2} a5690000001105000000 a50069000000110005000000 a5000000690000001100000005000000 a5000000690000001100000005000000 - {e=>3,c=>-2,a=>3,g=>0,b=>1,d=>0,f=>-1} 03310000003b00000000 0300310000003b0000000000 03000000310000003b00000000000000 03000000310000003b00000000000000 - {e=>1,c=>-2,a=>-94,g=>1,b=>0,d=>-1,f=>2} a2f00100001101000000 a200f0010000110001000000 a2000000f00100001100000001000000 a2000000f00100001100000001000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>3,c=>3,a=>-87,g=>4,b=>0,d=>2,f=>2} a9980000001304000000 a90098000000130004000000 a9000000980000001300000004000000 a9000000980000001300000004000000 - {e=>3,c=>2,a=>-100,g=>0,b=>7,d=>-2,f=>-4} 9c970100002300000000 9c0097010000230000000000 9c000000970100002300000000000000 9c000000970100002300000000000000 - {e=>4,c=>3,a=>30,g=>4,b=>0,d=>3,f=>-3} 1ed80000002c04000000 1e00d80000002c0004000000 1e000000d80000002c00000004000000 1e000000d80000002c00000004000000 - {e=>3,c=>3,a=>117,g=>7,b=>3,d=>-3,f=>1} 755b0100000b07000000 75005b0100000b0007000000 750000005b0100000b00000007000000 750000005b0100000b00000007000000 - {e=>4,c=>-2,a=>-117,g=>5,b=>2,d=>-1,f=>0} 8bf20100000405000000 8b00f2010000040005000000 8b000000f20100000400000005000000 8b000000f20100000400000005000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>5,d=>-4,c=>1,h=>7,b=>0,g=>0,f=>-1} 05080100003b0000000007 0500080100003b00000000000700 05000000080100003b0000000000000007000000 05000000080100003b0000000000000007000000 - {e=>5,a=>30,d=>-4,c=>3,h=>3,b=>7,g=>4,f=>-1} 1e1f0100003d0400000003 1e001f0100003d00040000000300 1e0000001f0100003d0000000400000003000000 1e0000001f0100003d0000000400000003000000 - {e=>7,a=>0,d=>-3,c=>1,h=>0,b=>7,g=>2,f=>-1} 004f0100003f0200000000 00004f0100003f00020000000000 000000004f0100003f0000000200000000000000 000000004f0100003f0000000200000000000000 - {e=>0,a=>126,d=>-3,c=>0,h=>0,b=>2,g=>5,f=>-1} 7e42010000380500000000 7e00420100003800050000000000 7e00000042010000380000000500000000000000 7e00000042010000380000000500000000000000 - {e=>0,a=>4,d=>-1,c=>-3,h=>7,b=>2,g=>4,f=>3} 04ea010000180400000007 0400ea0100001800040000000700 04000000ea010000180000000400000007000000 04000000ea010000180000000400000007000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>55,d=>-4,c=>-4,h=>0,b=>6,g=>4,f=>2,i=>-3} 3726010000120400000028 3700260100001200040000002800 3700000026010000120000000400000028000000 3700000026010000120000000400000028000000 - {e=>5,a=>43,d=>1,c=>1,h=>1,b=>3,g=>7,f=>-3,i=>1} 2b4b0000002d0700000009 2b004b0000002d00070000000900 2b0000004b0000002d0000000700000009000000 2b0000004b0000002d0000000700000009000000 - {e=>2,a=>-68,d=>-4,c=>-1,h=>6,b=>2,g=>5,f=>-3,i=>-3} bc3a0100002a050000002e bc003a0100002a00050000002e00 bc0000003a0100002a000000050000002e000000 bc0000003a0100002a000000050000002e000000 - {e=>3,a=>-9,d=>2,c=>-4,h=>6,b=>3,g=>7,f=>-3,i=>1} f7a30000002b070000000e f700a30000002b00070000000e00 f7000000a30000002b000000070000000e000000 f7000000a30000002b000000070000000e000000 - {e=>6,a=>-80,d=>1,c=>-2,h=>3,b=>1,g=>5,f=>3,i=>-3} b0710000001e050000002b b000710000001e00050000002b00 b0000000710000001e000000050000002b000000 b0000000710000001e000000050000002b000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>5,a=>114,d=>-4,j=>4,c=>3,h=>6,b=>2,g=>0,f=>-4,i=>2} 721a01000025000000001604000000 72001a010000250000000000160004000000 720000001a01000025000000000000001600000004000000 720000001a01000025000000000000001600000004000000 - {e=>3,a=>-15,d=>-2,j=>6,c=>-1,h=>1,b=>0,g=>2,f=>2,i=>0} f1b801000013020000000106000000 f100b8010000130002000000010006000000 f1000000b801000013000000020000000100000006000000 f1000000b801000013000000020000000100000006000000 - {e=>6,a=>-68,d=>-2,j=>5,c=>-3,h=>1,b=>4,g=>0,f=>-1,i=>2} bcac0100003e000000001105000000 bc00ac0100003e0000000000110005000000 bc000000ac0100003e000000000000001100000005000000 bc000000ac0100003e000000000000001100000005000000 - {e=>4,a=>-102,d=>0,j=>1,c=>1,h=>4,b=>1,g=>0,f=>1,i=>-3} 9a090000000c000000002c01000000 9a00090000000c00000000002c0001000000 9a000000090000000c000000000000002c00000001000000 9a000000090000000c000000000000002c00000001000000 - {e=>7,a=>-118,d=>-4,j=>3,c=>-2,h=>3,b=>3,g=>4,f=>1,i=>-1} 8a330100000f040000003b03000000 8a00330100000f00040000003b0003000000 8a000000330100000f000000040000003b00000003000000 8a000000330100000f000000040000003b00000003000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>4,a=>36,d=>-2,j=>7,c=>1,k=>-85,h=>7,b=>5,g=>7,f=>-4,i=>-3} 248d01000024070000002f07000000ab 24008d0100002400070000002f0007000000ab00 240000008d01000024000000070000002f00000007000000ab000000 240000008d01000024000000070000002f00000007000000ab000000 - {e=>2,a=>57,d=>2,j=>6,c=>0,k=>-127,h=>0,b=>5,g=>5,f=>1,i=>-1} 39850000000a05000000380600000081 3900850000000a00050000003800060000008100 39000000850000000a00000005000000380000000600000081000000 39000000850000000a00000005000000380000000600000081000000 - {e=>7,a=>-85,d=>1,j=>0,c=>-2,k=>-9,h=>1,b=>1,g=>4,f=>0,i=>-2} ab7100000007040000003100000000f7 ab0071000000070004000000310000000000f700 ab0000007100000007000000040000003100000000000000f7000000 ab0000007100000007000000040000003100000000000000f7000000 - {e=>6,a=>12,d=>3,j=>2,c=>-1,k=>-109,h=>0,b=>1,g=>1,f=>3,i=>-2} 0cf90000001e01000000300200000093 0c00f90000001e00010000003000020000009300 0c000000f90000001e00000001000000300000000200000093000000 0c000000f90000001e00000001000000300000000200000093000000 - {e=>3,a=>-93,d=>-3,j=>3,c=>0,k=>38,h=>2,b=>4,g=>2,f=>-3,i=>-3} a3440100002b020000002a0300000026 a300440100002b00020000002a00030000002600 a3000000440100002b000000020000002a0000000300000026000000 a3000000440100002b000000020000002a0000000300000026000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>-121,d=>0,j=>7,l=>7,c=>-2,k=>104,h=>5,b=>5,g=>2,f=>-1,i=>-1} 873500000039020000003d070000006807 8700350000003900020000003d00070000006807 870000003500000039000000020000003d0000000700000068070000 870000003500000039000000020000003d0000000700000068070000 - {e=>4,a=>-69,d=>0,j=>7,l=>3,c=>3,k=>116,h=>2,b=>5,g=>0,f=>2,i=>3} bb1d00000014000000001a070000007403 bb001d0000001400000000001a00070000007403 bb0000001d00000014000000000000001a0000000700000074030000 bb0000001d00000014000000000000001a0000000700000074030000 - {e=>7,a=>-88,d=>3,j=>2,l=>6,c=>-2,k=>94,h=>0,b=>1,g=>0,f=>-2,i=>2} a8f1000000370000000010020000005e06 a800f10000003700000000001000020000005e06 a8000000f1000000370000000000000010000000020000005e060000 a8000000f1000000370000000000000010000000020000005e060000 - {e=>7,a=>41,d=>1,j=>2,l=>2,c=>-2,k=>-6,h=>1,b=>4,g=>1,f=>-3,i=>2} 29740000002f010000001102000000fa02 2900740000002f0001000000110002000000fa02 29000000740000002f000000010000001100000002000000fa020000 29000000740000002f000000010000001100000002000000fa020000 - {e=>1,a=>-123,d=>-2,j=>3,l=>7,c=>3,k=>82,h=>1,b=>6,g=>6,f=>0,i=>-3} 859e010000010600000029030000005207 85009e0100000100060000002900030000005207 850000009e0100000100000006000000290000000300000052070000 850000009e0100000100000006000000290000000300000052070000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-121,m=>2,d=>-2,j=>6,l=>3,c=>0,k=>-106,h=>5,b=>7,g=>4,f=>3,i=>2} 87870100001c0400000015060000009613 8700870100001c00040000001500060000009613 87000000870100001c00000004000000150000000600000096130000 87000000870100001c00000004000000150000000600000096130000 - {e=>7,a=>-56,m=>1,d=>-1,j=>2,l=>7,c=>3,k=>102,h=>6,b=>0,g=>6,f=>-4,i=>-3} c8d801000027060000002e02000000660f c800d80100002700060000002e0002000000660f c8000000d801000027000000060000002e00000002000000660f0000 c8000000d801000027000000060000002e00000002000000660f0000 - {e=>3,a=>-72,m=>-4,d=>-1,j=>6,l=>2,c=>-1,k=>-50,h=>4,b=>2,g=>1,f=>1,i=>-3} b8fa0100000b010000002c06000000ce22 b800fa0100000b00010000002c0006000000ce22 b8000000fa0100000b000000010000002c00000006000000ce220000 b8000000fa0100000b000000010000002c00000006000000ce220000 - {e=>5,a=>84,m=>-4,d=>-2,j=>4,l=>0,c=>1,k=>-79,h=>5,b=>6,g=>1,f=>3,i=>1} 548e0100001d010000000d04000000b120 54008e0100001d00010000000d0004000000b120 540000008e0100001d000000010000000d00000004000000b1200000 540000008e0100001d000000010000000d00000004000000b1200000 - {e=>6,a=>-18,m=>-2,d=>-4,j=>7,l=>4,c=>-1,k=>-2,h=>1,b=>1,g=>4,f=>3,i=>-3} ee390100001e040000002907000000fe34 ee00390100001e0004000000290007000000fe34 ee000000390100001e000000040000002900000007000000fe340000 ee000000390100001e000000040000002900000007000000fe340000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>6,a=>-112,m=>3,d=>-1,j=>2,l=>0,c=>-3,k=>39,h=>4,b=>6,g=>4,f=>3,i=>2} 90ee0100001d040000001402000000271806000000 9000ee0100001d0004000000140002000000271806000000 90000000ee0100001d0000000400000014000000020000002718000006000000 90000000ee0100001d0000000400000014000000020000002718000006000000 - {e=>1,n=>2,a=>93,m=>-2,d=>2,j=>5,l=>5,c=>2,k=>-95,h=>1,b=>6,g=>0,f=>-1,i=>-3} 5d9600000039000000002905000000a13502000000 5d0096000000390000000000290005000000a13502000000 5d0000009600000039000000000000002900000005000000a135000002000000 5d0000009600000039000000000000002900000005000000a135000002000000 - {e=>2,n=>1,a=>55,m=>2,d=>-2,j=>0,l=>0,c=>-2,k=>-97,h=>1,b=>7,g=>1,f=>3,i=>3} 37b70100001a0100000019000000009f1001000000 3700b70100001a00010000001900000000009f1001000000 37000000b70100001a0000000100000019000000000000009f10000001000000 37000000b70100001a0000000100000019000000000000009f10000001000000 - {e=>6,n=>2,a=>2,m=>2,d=>0,j=>7,l=>5,c=>-1,k=>-32,h=>7,b=>0,g=>5,f=>-2,i=>2} 023800000036050000001707000000e01502000000 020038000000360005000000170007000000e01502000000 020000003800000036000000050000001700000007000000e015000002000000 020000003800000036000000050000001700000007000000e015000002000000 - {e=>1,n=>2,a=>-65,m=>0,d=>-3,j=>5,l=>6,c=>-1,k=>10,h=>2,b=>2,g=>3,f=>-4,i=>2} bf7a010000210300000012050000000a0602000000 bf007a0100002100030000001200050000000a0602000000 bf0000007a010000210000000300000012000000050000000a06000002000000 bf0000007a010000210000000300000012000000050000000a06000002000000 = typedef int foo; struct mixed_no_pack { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>4,n=>4,a=>96,m=>-1,d=>-4,j=>2,l=>1,c=>-2,k=>-106,h=>1,b=>4,g=>2,f=>-2,o=>172,i=>3} 603401000034020000001902000000963904000000ac 600034010000340002000000190002000000963904000000ac00 6000000034010000340000000200000019000000020000009639000004000000ac000000 6000000034010000340000000200000019000000020000009639000004000000ac000000 - {e=>3,n=>3,a=>-103,m=>-2,d=>-1,j=>6,l=>2,c=>-3,k=>-23,h=>7,b=>7,g=>4,f=>-3,o=>204,i=>0} 99ef0100002b040000000706000000e93203000000cc 9900ef0100002b0004000000070006000000e93203000000cc00 99000000ef0100002b000000040000000700000006000000e932000003000000cc000000 99000000ef0100002b000000040000000700000006000000e932000003000000cc000000 - {e=>7,n=>2,a=>-104,m=>3,d=>2,j=>7,l=>5,c=>2,k=>49,h=>2,b=>0,g=>0,f=>3,o=>143,i=>0} 98900000001f000000000207000000311d020000008f 9800900000001f0000000000020007000000311d020000008f00 98000000900000001f000000000000000200000007000000311d0000020000008f000000 98000000900000001f000000000000000200000007000000311d0000020000008f000000 - {e=>7,n=>0,a=>-12,m=>1,d=>2,j=>3,l=>2,c=>3,k=>73,h=>6,b=>0,g=>3,f=>-2,o=>165,i=>-3} f49800000037030000002e03000000490a00000000a5 f400980000003700030000002e0003000000490a00000000a500 f40000009800000037000000030000002e00000003000000490a000000000000a5000000 f40000009800000037000000030000002e00000003000000490a000000000000a5000000 - {e=>2,n=>6,a=>-124,m=>-3,d=>-3,j=>1,l=>3,c=>-4,k=>109,h=>1,b=>5,g=>0,f=>-2,o=>55,i=>-3} 8465010000320000000029010000006d2b0600000037 8400650100003200000000002900010000006d2b060000003700 8400000065010000320000000000000029000000010000006d2b00000600000037000000 8400000065010000320000000000000029000000010000006d2b00000600000037000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; }; - {a=>92,b=>1} 5c0001000000 5c0001000000 5c00000001000000 5c00000001000000 - {a=>51,b=>4} 330004000000 330004000000 3300000004000000 3300000004000000 - {a=>-66,b=>3} beff03000000 beff03000000 beff000003000000 beff000003000000 - {a=>-113,b=>2} 8fff02000000 8fff02000000 8fff000002000000 8fff000002000000 - {a=>10,b=>0} 0a0000000000 0a0000000000 0a00000000000000 0a00000000000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-103,b=>5} 99ff05000000 99ff05000000 99ff000005000000 99ff000005000000 - {c=>0,a=>-75,b=>2} b5ff02000000 b5ff02000000 b5ff000002000000 b5ff000002000000 - {c=>-4,a=>-81,b=>3} afff23000000 afff23000000 afff000023000000 afff000023000000 - {c=>-2,a=>14,b=>7} 0e0037000000 0e0037000000 0e00000037000000 0e00000037000000 - {c=>0,a=>94,b=>1} 5e0001000000 5e0001000000 5e00000001000000 5e00000001000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-1,a=>-100,b=>5,d=>1} 9cff7d000000 9cff7d000000 9cff00007d000000 9cff00007d000000 - {c=>3,a=>107,b=>2,d=>-4} 6b001a010000 6b001a010000 6b0000001a010000 6b0000001a010000 - {c=>1,a=>-24,b=>1,d=>1} e8ff49000000 e8ff49000000 e8ff000049000000 e8ff000049000000 - {c=>-2,a=>-62,b=>0,d=>2} c2ffb0000000 c2ffb0000000 c2ff0000b0000000 c2ff0000b0000000 - {c=>0,a=>-40,b=>6,d=>-1} d8ffc6010000 d8ffc6010000 d8ff0000c6010000 d8ff0000c6010000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-4,a=>-8,b=>5,d=>3} f8ffe500000004 f8ffe50000000400 f8ff0000e500000004000000 f8ff0000e500000004000000 - {e=>4,c=>-3,a=>-46,b=>4,d=>2} d2ffac00000004 d2ffac0000000400 d2ff0000ac00000004000000 d2ff0000ac00000004000000 - {e=>2,c=>0,a=>-15,b=>0,d=>-2} f1ff8001000002 f1ff800100000200 f1ff00008001000002000000 f1ff00008001000002000000 - {e=>6,c=>3,a=>97,b=>1,d=>-1} 6100d901000006 6100d90100000600 61000000d901000006000000 61000000d901000006000000 - {e=>5,c=>1,a=>86,b=>2,d=>-1} 5600ca01000005 5600ca0100000500 56000000ca01000005000000 56000000ca01000005000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>-4,a=>-30,b=>0,d=>2,f=>-4} e2ffa000000022 e2ffa00000002200 e2ff0000a000000022000000 e2ff0000a000000022000000 - {e=>3,c=>-2,a=>58,b=>7,d=>3,f=>-2} 3a00f700000033 3a00f70000003300 3a000000f700000033000000 3a000000f700000033000000 - {e=>3,c=>2,a=>-93,b=>0,d=>1,f=>2} a3ff5000000013 a3ff500000001300 a3ff00005000000013000000 a3ff00005000000013000000 - {e=>2,c=>3,a=>17,b=>1,d=>-3,f=>2} 11005901000012 1100590100001200 110000005901000012000000 110000005901000012000000 - {e=>3,c=>2,a=>-36,b=>3,d=>-1,f=>1} dcffd30100000b dcffd30100000b00 dcff0000d30100000b000000 dcff0000d30100000b000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>6,c=>3,a=>-5,g=>1,b=>4,d=>-4,f=>-4} fbff1c0100002601000000 fbff1c010000260001000000 fbff00001c0100002600000001000000 fbff00001c0100002600000001000000 - {e=>1,c=>0,a=>5,g=>5,b=>6,d=>-1,f=>-3} 0500c60100002905000000 0500c6010000290005000000 05000000c60100002900000005000000 05000000c60100002900000005000000 - {e=>5,c=>-3,a=>94,g=>6,b=>0,d=>-1,f=>2} 5e00e80100001506000000 5e00e8010000150006000000 5e000000e80100001500000006000000 5e000000e80100001500000006000000 - {e=>5,c=>-3,a=>-86,g=>4,b=>3,d=>2,f=>2} aaffab0000001504000000 aaffab000000150004000000 aaff0000ab0000001500000004000000 aaff0000ab0000001500000004000000 - {e=>6,c=>0,a=>-114,g=>6,b=>6,d=>-3,f=>-4} 8eff460100002606000000 8eff46010000260006000000 8eff0000460100002600000006000000 8eff0000460100002600000006000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>7,c=>-1,a=>-26,g=>4,b=>2,d=>-1,f=>-2} e6fffa0100003704000000 e6fffa010000370004000000 e6ff0000fa0100003700000004000000 e6ff0000fa0100003700000004000000 - {e=>3,c=>-3,a=>-39,g=>5,b=>5,d=>2,f=>3} d9ffad0000001b05000000 d9ffad0000001b0005000000 d9ff0000ad0000001b00000005000000 d9ff0000ad0000001b00000005000000 - {e=>2,c=>-1,a=>-108,g=>4,b=>7,d=>1,f=>0} 94ff7f0000000204000000 94ff7f000000020004000000 94ff00007f0000000200000004000000 94ff00007f0000000200000004000000 - {e=>1,c=>3,a=>36,g=>7,b=>4,d=>1,f=>-4} 24005c0000002107000000 24005c000000210007000000 240000005c0000002100000007000000 240000005c0000002100000007000000 - {e=>0,c=>1,a=>-70,g=>2,b=>0,d=>-3,f=>0} baff480100000002000000 baff48010000000002000000 baff0000480100000000000002000000 baff0000480100000000000002000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>-73,d=>3,c=>-4,h=>3,b=>3,g=>5,f=>-2} b7ffe3000000310500000003 b7ffe30000003100050000000300 b7ff0000e3000000310000000500000003000000 b7ff0000e3000000310000000500000003000000 - {e=>2,a=>106,d=>3,c=>-1,h=>4,b=>0,g=>6,f=>-2} 6a00f8000000320600000004 6a00f80000003200060000000400 6a000000f8000000320000000600000004000000 6a000000f8000000320000000600000004000000 - {e=>2,a=>-78,d=>3,c=>3,h=>6,b=>0,g=>0,f=>-1} b2ffd80000003a0000000006 b2ffd80000003a00000000000600 b2ff0000d80000003a0000000000000006000000 b2ff0000d80000003a0000000000000006000000 - {e=>4,a=>-84,d=>-2,c=>3,h=>4,b=>3,g=>5,f=>-3} acff9b0100002c0500000004 acff9b0100002c00050000000400 acff00009b0100002c0000000500000004000000 acff00009b0100002c0000000500000004000000 - {e=>7,a=>-108,d=>1,c=>-4,h=>2,b=>4,g=>5,f=>-4} 94ff64000000270500000002 94ff640000002700050000000200 94ff000064000000270000000500000002000000 94ff000064000000270000000500000002000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>113,d=>3,c=>2,h=>4,b=>1,g=>6,f=>2,i=>3} 7100d100000014060000001c 7100d10000001400060000001c00 71000000d100000014000000060000001c000000 71000000d100000014000000060000001c000000 - {e=>7,a=>83,d=>-1,c=>3,h=>0,b=>0,g=>4,f=>-3,i=>-2} 5300d80100002f0400000030 5300d80100002f00040000003000 53000000d80100002f0000000400000030000000 53000000d80100002f0000000400000030000000 - {e=>2,a=>-34,d=>3,c=>-4,h=>4,b=>4,g=>0,f=>1,i=>-3} deffe40000000a000000002c deffe40000000a00000000002c00 deff0000e40000000a000000000000002c000000 deff0000e40000000a000000000000002c000000 - {e=>1,a=>87,d=>1,c=>0,h=>1,b=>7,g=>0,f=>1,i=>-1} 570047000000090000000039 5700470000000900000000003900 5700000047000000090000000000000039000000 5700000047000000090000000000000039000000 - {e=>1,a=>-63,d=>3,c=>-1,h=>2,b=>1,g=>6,f=>1,i=>-3} c1fff900000009060000002a c1fff90000000900060000002a00 c1ff0000f900000009000000060000002a000000 c1ff0000f900000009000000060000002a000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-8,d=>3,j=>1,c=>-3,h=>0,b=>1,g=>7,f=>3,i=>2} f8ffe900000018070000001001000000 f8ffe9000000180007000000100001000000 f8ff0000e900000018000000070000001000000001000000 f8ff0000e900000018000000070000001000000001000000 - {e=>1,a=>-18,d=>-3,j=>7,c=>-4,h=>4,b=>2,g=>0,f=>3,i=>-2} eeff6201000019000000003407000000 eeff62010000190000000000340007000000 eeff00006201000019000000000000003400000007000000 eeff00006201000019000000000000003400000007000000 - {e=>7,a=>-19,d=>0,j=>4,c=>2,h=>1,b=>3,g=>3,f=>-4,i=>3} edff1300000027030000001904000000 edff13000000270003000000190004000000 edff00001300000027000000030000001900000004000000 edff00001300000027000000030000001900000004000000 - {e=>4,a=>43,d=>-3,j=>6,c=>-4,h=>4,b=>0,g=>5,f=>3,i=>-3} 2b00600100001c050000002c06000000 2b00600100001c00050000002c0006000000 2b000000600100001c000000050000002c00000006000000 2b000000600100001c000000050000002c00000006000000 - {e=>3,a=>-3,d=>0,j=>5,c=>1,h=>7,b=>6,g=>0,f=>2,i=>1} fdff0e00000013000000000f05000000 fdff0e0000001300000000000f0005000000 fdff00000e00000013000000000000000f00000005000000 fdff00000e00000013000000000000000f00000005000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>1,a=>29,d=>-1,j=>7,c=>-3,k=>-108,h=>1,b=>7,g=>6,f=>2,i=>-1} 1d00ef0100001106000000390700000094 1d00ef0100001100060000003900070000009400 1d000000ef0100001100000006000000390000000700000094000000 1d000000ef0100001100000006000000390000000700000094000000 - {e=>3,a=>48,d=>1,j=>5,c=>1,k=>-74,h=>0,b=>5,g=>7,f=>-2,i=>-2} 30004d00000033070000003005000000b6 30004d000000330007000000300005000000b600 300000004d00000033000000070000003000000005000000b6000000 300000004d00000033000000070000003000000005000000b6000000 - {e=>7,a=>-122,d=>2,j=>0,c=>-3,k=>14,h=>2,b=>1,g=>4,f=>-4,i=>0} 86ffa9000000270400000002000000000e 86ffa90000002700040000000200000000000e00 86ff0000a9000000270000000400000002000000000000000e000000 86ff0000a9000000270000000400000002000000000000000e000000 - {e=>5,a=>-32,d=>-4,j=>2,c=>3,k=>-91,h=>7,b=>0,g=>3,f=>0,i=>2} e0ff1801000005030000001702000000a5 e0ff18010000050003000000170002000000a500 e0ff00001801000005000000030000001700000002000000a5000000 e0ff00001801000005000000030000001700000002000000a5000000 - {e=>4,a=>-6,d=>2,j=>0,c=>-4,k=>-31,h=>6,b=>7,g=>4,f=>1,i=>0} faffa70000000c040000000600000000e1 faffa70000000c0004000000060000000000e100 faff0000a70000000c000000040000000600000000000000e1000000 faff0000a70000000c000000040000000600000000000000e1000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>100,d=>-3,j=>2,l=>1,c=>-3,k=>17,h=>3,b=>6,g=>3,f=>3,i=>3} 64006e01000019030000001b020000001101 64006e0100001900030000001b00020000001101 640000006e01000019000000030000001b0000000200000011010000 640000006e01000019000000030000001b0000000200000011010000 - {e=>3,a=>46,d=>-4,j=>5,l=>3,c=>1,k=>-95,h=>7,b=>4,g=>7,f=>0,i=>1} 2e000c01000003070000000f05000000a103 2e000c0100000300070000000f0005000000a103 2e0000000c01000003000000070000000f00000005000000a1030000 2e0000000c01000003000000070000000f00000005000000a1030000 - {e=>3,a=>-72,d=>0,j=>6,l=>7,c=>-2,k=>41,h=>2,b=>2,g=>2,f=>2,i=>-3} b8ff3200000013020000002a060000002907 b8ff320000001300020000002a00060000002907 b8ff00003200000013000000020000002a0000000600000029070000 b8ff00003200000013000000020000002a0000000600000029070000 - {e=>5,a=>84,d=>-1,j=>6,l=>5,c=>2,k=>95,h=>3,b=>4,g=>4,f=>2,i=>-4} 5400d4010000150400000023060000005f05 5400d40100001500040000002300060000005f05 54000000d4010000150000000400000023000000060000005f050000 54000000d4010000150000000400000023000000060000005f050000 - {e=>1,a=>13,d=>-2,j=>3,l=>0,c=>-3,k=>-14,h=>2,b=>5,g=>0,f=>1,i=>-4} 0d00ad01000009000000002203000000f200 0d00ad010000090000000000220003000000f200 0d000000ad01000009000000000000002200000003000000f2000000 0d000000ad01000009000000000000002200000003000000f2000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>-88,m=>2,d=>0,j=>2,l=>5,c=>0,k=>96,h=>5,b=>0,g=>7,f=>2,i=>3} a8ff0000000017070000001d020000006015 a8ff000000001700070000001d00020000006015 a8ff00000000000017000000070000001d0000000200000060150000 a8ff00000000000017000000070000001d0000000200000060150000 - {e=>2,a=>-64,m=>1,d=>-2,j=>2,l=>0,c=>0,k=>83,h=>6,b=>7,g=>5,f=>-3,i=>1} c0ff870100002a050000000e020000005308 c0ff870100002a00050000000e00020000005308 c0ff0000870100002a000000050000000e0000000200000053080000 c0ff0000870100002a000000050000000e0000000200000053080000 - {e=>1,a=>50,m=>3,d=>0,j=>6,l=>6,c=>-4,k=>20,h=>4,b=>1,g=>7,f=>0,i=>-2} 32002100000001070000003406000000141e 320021000000010007000000340006000000141e 320000002100000001000000070000003400000006000000141e0000 320000002100000001000000070000003400000006000000141e0000 - {e=>3,a=>-2,m=>1,d=>-1,j=>4,l=>0,c=>-1,k=>106,h=>4,b=>2,g=>6,f=>-3,i=>0} fefffa0100002b0600000004040000006a08 fefffa0100002b00060000000400040000006a08 feff0000fa0100002b0000000600000004000000040000006a080000 feff0000fa0100002b0000000600000004000000040000006a080000 - {e=>3,a=>126,m=>2,d=>-4,j=>7,l=>2,c=>-4,k=>-75,h=>0,b=>2,g=>7,f=>-3,i=>-2} 7e00220100002b070000003007000000b512 7e00220100002b0007000000300007000000b512 7e000000220100002b000000070000003000000007000000b5120000 7e000000220100002b000000070000003000000007000000b5120000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>0,n=>3,a=>114,m=>2,d=>1,j=>4,l=>2,c=>0,k=>-114,h=>1,b=>5,g=>1,f=>1,i=>2} 720045000000080100000011040000008e1203000000 7200450000000800010000001100040000008e1203000000 7200000045000000080000000100000011000000040000008e12000003000000 7200000045000000080000000100000011000000040000008e12000003000000 - {e=>0,n=>2,a=>11,m=>1,d=>-2,j=>4,l=>7,c=>-4,k=>-117,h=>6,b=>1,g=>5,f=>1,i=>3} 0b00a101000008050000001e040000008b0f02000000 0b00a10100000800050000001e00040000008b0f02000000 0b000000a101000008000000050000001e000000040000008b0f000002000000 0b000000a101000008000000050000001e000000040000008b0f000002000000 - {e=>5,n=>4,a=>8,m=>0,d=>2,j=>7,l=>3,c=>3,k=>71,h=>7,b=>2,g=>4,f=>-4,i=>2} 08009a00000025040000001707000000470304000000 08009a000000250004000000170007000000470304000000 080000009a000000250000000400000017000000070000004703000004000000 080000009a000000250000000400000017000000070000004703000004000000 - {e=>4,n=>5,a=>25,m=>1,d=>2,j=>3,l=>7,c=>-1,k=>-69,h=>4,b=>5,g=>6,f=>1,i=>-1} 1900bd0000000c060000003c03000000bb0f05000000 1900bd0000000c00060000003c0003000000bb0f05000000 19000000bd0000000c000000060000003c00000003000000bb0f000005000000 19000000bd0000000c000000060000003c00000003000000bb0f000005000000 - {e=>1,n=>3,a=>71,m=>3,d=>-1,j=>0,l=>0,c=>-2,k=>28,h=>1,b=>7,g=>3,f=>0,i=>1} 4700f7010000010300000009000000001c1803000000 4700f70100000100030000000900000000001c1803000000 47000000f7010000010000000300000009000000000000001c18000003000000 47000000f7010000010000000300000009000000000000001c18000003000000 = typedef int foo; struct mixed_no_pack { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>2,a=>-53,m=>-1,d=>2,j=>2,l=>6,c=>-3,k=>-55,h=>7,b=>3,g=>6,f=>3,o=>97,i=>-4} cbffab0000001a060000002702000000c93e0200000061 cbffab0000001a0006000000270002000000c93e020000006100 cbff0000ab0000001a000000060000002700000002000000c93e00000200000061000000 cbff0000ab0000001a000000060000002700000002000000c93e00000200000061000000 - {e=>0,n=>6,a=>-59,m=>1,d=>0,j=>6,l=>4,c=>0,k=>75,h=>2,b=>6,g=>7,f=>3,o=>144,i=>2} c5ff06000000180700000012060000004b0c0600000090 c5ff060000001800070000001200060000004b0c060000009000 c5ff000006000000180000000700000012000000060000004b0c00000600000090000000 c5ff000006000000180000000700000012000000060000004b0c00000600000090000000 - {e=>1,n=>1,a=>66,m=>2,d=>-3,j=>0,l=>3,c=>1,k=>103,h=>4,b=>3,g=>7,f=>-1,o=>216,i=>-2} 42004b01000039070000003400000000671301000000d8 42004b010000390007000000340000000000671301000000d800 420000004b010000390000000700000034000000000000006713000001000000d8000000 420000004b010000390000000700000034000000000000006713000001000000d8000000 - {e=>2,n=>1,a=>-81,m=>-1,d=>3,j=>0,l=>3,c=>-2,k=>98,h=>2,b=>1,g=>3,f=>-2,o=>209,i=>-3} affff100000032030000002a00000000623b01000000d1 affff10000003200030000002a0000000000623b01000000d100 afff0000f100000032000000030000002a00000000000000623b000001000000d1000000 afff0000f100000032000000030000002a00000000000000623b000001000000d1000000 - {e=>1,n=>5,a=>-91,m=>-1,d=>-1,j=>3,l=>5,c=>-1,k=>-46,h=>2,b=>4,g=>6,f=>-2,o=>161,i=>-3} a5fffc01000031060000002a03000000d23d05000000a1 a5fffc0100003100060000002a0003000000d23d05000000a100 a5ff0000fc01000031000000060000002a00000003000000d23d000005000000a1000000 a5ff0000fc01000031000000060000002a00000003000000d23d000005000000a1000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; }; - {a=>55,b=>2} 3700000002000000 3700000002000000 3700000002000000 3700000002000000 - {a=>62,b=>5} 3e00000005000000 3e00000005000000 3e00000005000000 3e00000005000000 - {a=>127,b=>2} 7f00000002000000 7f00000002000000 7f00000002000000 7f00000002000000 - {a=>-95,b=>4} a1ffffff04000000 a1ffffff04000000 a1ffffff04000000 a1ffffff04000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; }; - {c=>1,a=>-70,b=>7} baffffff0f000000 baffffff0f000000 baffffff0f000000 baffffff0f000000 - {c=>0,a=>-56,b=>5} c8ffffff05000000 c8ffffff05000000 c8ffffff05000000 c8ffffff05000000 - {c=>-2,a=>-48,b=>2} d0ffffff32000000 d0ffffff32000000 d0ffffff32000000 d0ffffff32000000 - {c=>1,a=>31,b=>2} 1f0000000a000000 1f0000000a000000 1f0000000a000000 1f0000000a000000 - {c=>3,a=>120,b=>2} 780000001a000000 780000001a000000 780000001a000000 780000001a000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-120,b=>6,d=>0} 88ffffff26000000 88ffffff26000000 88ffffff26000000 88ffffff26000000 - {c=>0,a=>118,b=>7,d=>3} 76000000c7000000 76000000c7000000 76000000c7000000 76000000c7000000 - {c=>-2,a=>-76,b=>5,d=>2} b4ffffffb5000000 b4ffffffb5000000 b4ffffffb5000000 b4ffffffb5000000 - {c=>3,a=>-39,b=>6,d=>3} d9ffffffde000000 d9ffffffde000000 d9ffffffde000000 d9ffffffde000000 - {c=>-3,a=>9,b=>5,d=>1} 090000006d000000 090000006d000000 090000006d000000 090000006d000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>3,a=>-74,b=>2,d=>3} b6ffffffda00000003 b6ffffffda0000000300 b6ffffffda00000003000000 b6ffffffda00000003000000 - {e=>4,c=>2,a=>16,b=>7,d=>2} 100000009700000004 10000000970000000400 100000009700000004000000 100000009700000004000000 - {e=>2,c=>0,a=>48,b=>5,d=>-3} 300000004501000002 30000000450100000200 300000004501000002000000 300000004501000002000000 - {e=>5,c=>2,a=>77,b=>3,d=>1} 4d0000005300000005 4d000000530000000500 4d0000005300000005000000 4d0000005300000005000000 - {e=>0,c=>-2,a=>78,b=>5,d=>1} 4e0000007500000000 4e000000750000000000 4e0000007500000000000000 4e0000007500000000000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>2,a=>80,b=>4,d=>1,f=>0} 500000005400000001 50000000540000000100 500000005400000001000000 500000005400000001000000 - {e=>6,c=>2,a=>-27,b=>4,d=>3,f=>-4} e5ffffffd400000026 e5ffffffd40000002600 e5ffffffd400000026000000 e5ffffffd400000026000000 - {e=>0,c=>2,a=>-111,b=>5,d=>3,f=>-4} 91ffffffd500000020 91ffffffd50000002000 91ffffffd500000020000000 91ffffffd500000020000000 - {e=>7,c=>1,a=>-42,b=>7,d=>1,f=>3} d6ffffff4f0000001f d6ffffff4f0000001f00 d6ffffff4f0000001f000000 d6ffffff4f0000001f000000 - {e=>5,c=>0,a=>90,b=>4,d=>0,f=>0} 5a0000000400000005 5a000000040000000500 5a0000000400000005000000 5a0000000400000005000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>3,c=>0,a=>0,g=>3,b=>3,d=>1,f=>-3} 00000000430000002b03000000 00000000430000002b0003000000 00000000430000002b00000003000000 00000000430000002b00000003000000 - {e=>3,c=>-4,a=>-62,g=>6,b=>1,d=>-3,f=>1} c2ffffff610100000b06000000 c2ffffff610100000b0006000000 c2ffffff610100000b00000006000000 c2ffffff610100000b00000006000000 - {e=>2,c=>-3,a=>26,g=>5,b=>3,d=>0,f=>-4} 1a0000002b0000002205000000 1a0000002b000000220005000000 1a0000002b0000002200000005000000 1a0000002b0000002200000005000000 - {e=>3,c=>3,a=>-96,g=>7,b=>7,d=>-3,f=>3} a0ffffff5f0100001b07000000 a0ffffff5f0100001b0007000000 a0ffffff5f0100001b00000007000000 a0ffffff5f0100001b00000007000000 - {e=>6,c=>2,a=>-81,g=>5,b=>1,d=>-1,f=>3} afffffffd10100001e05000000 afffffffd10100001e0005000000 afffffffd10100001e00000005000000 afffffffd10100001e00000005000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>4,c=>2,a=>21,g=>1,b=>4,d=>-4,f=>3} 15000000140100001c01000000 15000000140100001c0001000000 15000000140100001c00000001000000 15000000140100001c00000001000000 - {e=>3,c=>-4,a=>82,g=>4,b=>5,d=>3,f=>1} 52000000e50000000b04000000 52000000e50000000b0004000000 52000000e50000000b00000004000000 52000000e50000000b00000004000000 - {e=>2,c=>-3,a=>28,g=>5,b=>2,d=>0,f=>-4} 1c0000002a0000002205000000 1c0000002a000000220005000000 1c0000002a0000002200000005000000 1c0000002a0000002200000005000000 - {e=>4,c=>2,a=>116,g=>2,b=>3,d=>-2,f=>0} 74000000930100000402000000 7400000093010000040002000000 74000000930100000400000002000000 74000000930100000400000002000000 - {e=>5,c=>-2,a=>77,g=>7,b=>6,d=>-1,f=>3} 4d000000f60100001d07000000 4d000000f60100001d0007000000 4d000000f60100001d00000007000000 4d000000f60100001d00000007000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>-106,d=>0,c=>-3,h=>5,b=>4,g=>2,f=>0} 96ffffff2c000000060200000005 96ffffff2c0000000600020000000500 96ffffff2c000000060000000200000005000000 96ffffff2c000000060000000200000005000000 - {e=>2,a=>41,d=>-3,c=>-3,h=>1,b=>0,g=>7,f=>-4} 2900000068010000220700000001 29000000680100002200070000000100 2900000068010000220000000700000001000000 2900000068010000220000000700000001000000 - {e=>7,a=>-97,d=>2,c=>2,h=>5,b=>3,g=>1,f=>-3} 9fffffff930000002f0100000005 9fffffff930000002f00010000000500 9fffffff930000002f0000000100000005000000 9fffffff930000002f0000000100000005000000 - {e=>2,a=>-90,d=>-1,c=>-4,h=>4,b=>0,g=>0,f=>3} a6ffffffe00100001a0000000004 a6ffffffe00100001a00000000000400 a6ffffffe00100001a0000000000000004000000 a6ffffffe00100001a0000000000000004000000 - {e=>6,a=>106,d=>-3,c=>2,h=>7,b=>7,g=>4,f=>-3} 6a000000570100002e0400000007 6a000000570100002e00040000000700 6a000000570100002e0000000400000007000000 6a000000570100002e0000000400000007000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>-65,d=>-4,c=>-4,h=>6,b=>0,g=>5,f=>3,i=>-4} bfffffff200100001e0500000026 bfffffff200100001e00050000002600 bfffffff200100001e0000000500000026000000 bfffffff200100001e0000000500000026000000 - {e=>5,a=>-32,d=>-2,c=>1,h=>1,b=>6,g=>1,f=>0,i=>1} e0ffffff8e010000050100000009 e0ffffff8e0100000500010000000900 e0ffffff8e010000050000000100000009000000 e0ffffff8e010000050000000100000009000000 - {e=>5,a=>-95,d=>-3,c=>2,h=>7,b=>5,g=>2,f=>3,i=>-3} a1ffffff550100001d020000002f a1ffffff550100001d00020000002f00 a1ffffff550100001d000000020000002f000000 a1ffffff550100001d000000020000002f000000 - {e=>3,a=>-22,d=>-1,c=>-1,h=>6,b=>6,g=>7,f=>-4,i=>-3} eafffffffe01000023070000002e eafffffffe0100002300070000002e00 eafffffffe01000023000000070000002e000000 eafffffffe01000023000000070000002e000000 - {e=>6,a=>-103,d=>-1,c=>0,h=>2,b=>2,g=>7,f=>-2,i=>-4} 99ffffffc2010000360700000022 99ffffffc20100003600070000002200 99ffffffc2010000360000000700000022000000 99ffffffc2010000360000000700000022000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>7,a=>87,d=>-2,j=>7,c=>-2,h=>2,b=>2,g=>2,f=>-2,i=>2} 57000000b201000037020000001207000000 57000000b2010000370002000000120007000000 57000000b201000037000000020000001200000007000000 57000000b201000037000000020000001200000007000000 - {e=>3,a=>-126,d=>-4,j=>4,c=>0,h=>0,b=>6,g=>1,f=>-2,i=>-4} 82ffffff0601000033010000002004000000 82ffffff06010000330001000000200004000000 82ffffff0601000033000000010000002000000004000000 82ffffff0601000033000000010000002000000004000000 - {e=>5,a=>90,d=>0,j=>7,c=>3,h=>0,b=>5,g=>6,f=>-1,i=>-1} 5a0000001d0000003d060000003807000000 5a0000001d0000003d0006000000380007000000 5a0000001d0000003d000000060000003800000007000000 5a0000001d0000003d000000060000003800000007000000 - {e=>6,a=>-47,d=>1,j=>3,c=>1,h=>4,b=>7,g=>7,f=>3,i=>-1} d1ffffff4f0000001e070000003c03000000 d1ffffff4f0000001e00070000003c0003000000 d1ffffff4f0000001e000000070000003c00000003000000 d1ffffff4f0000001e000000070000003c00000003000000 - {e=>6,a=>47,d=>2,j=>7,c=>1,h=>4,b=>6,g=>1,f=>0,i=>-4} 2f0000008e00000006010000002407000000 2f0000008e000000060001000000240007000000 2f0000008e00000006000000010000002400000007000000 2f0000008e00000006000000010000002400000007000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>4,a=>-69,d=>1,j=>5,c=>-2,k=>-25,h=>4,b=>3,g=>1,f=>3,i=>1} bbffffff730000001c010000000c05000000e7 bbffffff730000001c00010000000c0005000000e700 bbffffff730000001c000000010000000c00000005000000e7000000 bbffffff730000001c000000010000000c00000005000000e7000000 - {e=>1,a=>116,d=>0,j=>4,c=>2,k=>45,h=>6,b=>3,g=>3,f=>-2,i=>3} 740000001300000031030000001e040000002d 74000000130000003100030000001e00040000002d00 740000001300000031000000030000001e000000040000002d000000 740000001300000031000000030000001e000000040000002d000000 - {e=>3,a=>-113,d=>1,j=>1,c=>0,k=>-27,h=>5,b=>5,g=>6,f=>-3,i=>-2} 8fffffff450000002b060000003501000000e5 8fffffff450000002b0006000000350001000000e500 8fffffff450000002b000000060000003500000001000000e5000000 8fffffff450000002b000000060000003500000001000000e5000000 - {e=>3,a=>49,d=>3,j=>2,c=>-2,k=>3,h=>1,b=>0,g=>2,f=>2,i=>2} 31000000f00000001302000000110200000003 31000000f00000001300020000001100020000000300 31000000f00000001300000002000000110000000200000003000000 31000000f00000001300000002000000110000000200000003000000 - {e=>0,a=>105,d=>-1,j=>3,c=>-3,k=>-114,h=>6,b=>5,g=>7,f=>-2,i=>3} 69000000ed01000030070000001e030000008e 69000000ed0100003000070000001e00030000008e00 69000000ed01000030000000070000001e000000030000008e000000 69000000ed01000030000000070000001e000000030000008e000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>4,a=>-33,d=>-3,j=>2,l=>4,c=>2,k=>-127,h=>2,b=>1,g=>3,f=>0,i=>3} dfffffff5101000004030000001a020000008104 dfffffff510100000400030000001a00020000008104 dfffffff5101000004000000030000001a0000000200000081040000 dfffffff5101000004000000030000001a0000000200000081040000 - {e=>1,a=>30,d=>0,j=>3,l=>5,c=>-2,k=>-10,h=>5,b=>0,g=>3,f=>2,i=>-2} 1e0000003000000011030000003503000000f605 1e00000030000000110003000000350003000000f605 1e0000003000000011000000030000003500000003000000f6050000 1e0000003000000011000000030000003500000003000000f6050000 - {e=>0,a=>87,d=>-1,j=>5,l=>6,c=>-2,k=>-45,h=>2,b=>7,g=>1,f=>3,i=>-2} 57000000f701000018010000003205000000d306 57000000f7010000180001000000320005000000d306 57000000f701000018000000010000003200000005000000d3060000 57000000f701000018000000010000003200000005000000d3060000 - {e=>1,a=>-27,d=>2,j=>3,l=>0,c=>1,k=>36,h=>0,b=>0,g=>5,f=>0,i=>-1} e5ffffff88000000010500000038030000002400 e5ffffff880000000100050000003800030000002400 e5ffffff880000000100000005000000380000000300000024000000 e5ffffff880000000100000005000000380000000300000024000000 - {e=>7,a=>38,d=>2,j=>1,l=>5,c=>-2,k=>37,h=>5,b=>5,g=>5,f=>1,i=>-1} 26000000b50000000f050000003d010000002505 26000000b50000000f00050000003d00010000002505 26000000b50000000f000000050000003d0000000100000025050000 26000000b50000000f000000050000003d0000000100000025050000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-77,m=>-1,d=>-4,j=>3,l=>6,c=>0,k=>2,h=>7,b=>7,g=>3,f=>1,i=>1} b3ffffff070100000c030000000f03000000023e b3ffffff070100000c00030000000f0003000000023e b3ffffff070100000c000000030000000f00000003000000023e0000 b3ffffff070100000c000000030000000f00000003000000023e0000 - {e=>6,a=>-85,m=>-1,d=>0,j=>6,l=>2,c=>2,k=>121,h=>4,b=>0,g=>5,f=>-4,i=>3} abffffff1000000026050000001c06000000793a abffffff100000002600050000001c0006000000793a abffffff1000000026000000050000001c00000006000000793a0000 abffffff1000000026000000050000001c00000006000000793a0000 - {e=>0,a=>63,m=>-1,d=>3,j=>3,l=>1,c=>-1,k=>54,h=>5,b=>0,g=>0,f=>1,i=>-4} 3f000000f8000000080000000025030000003639 3f000000f80000000800000000002500030000003639 3f000000f80000000800000000000000250000000300000036390000 3f000000f80000000800000000000000250000000300000036390000 - {e=>5,a=>3,m=>-4,d=>1,j=>0,l=>5,c=>-3,k=>-15,h=>4,b=>6,g=>2,f=>1,i=>1} 030000006e0000000d020000000c00000000f125 030000006e0000000d00020000000c0000000000f125 030000006e0000000d000000020000000c00000000000000f1250000 030000006e0000000d000000020000000c00000000000000f1250000 - {e=>1,a=>93,m=>0,d=>3,j=>0,l=>2,c=>0,k=>57,h=>6,b=>0,g=>4,f=>-1,i=>2} 5d000000c0000000390400000016000000003902 5d000000c00000003900040000001600000000003902 5d000000c00000003900000004000000160000000000000039020000 5d000000c00000003900000004000000160000000000000039020000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>5,a=>93,m=>1,d=>1,j=>3,l=>1,c=>-2,k=>115,h=>3,b=>0,g=>2,f=>1,i=>1} 5d000000700000000e020000000b03000000730905000000 5d000000700000000e00020000000b0003000000730905000000 5d000000700000000e000000020000000b000000030000007309000005000000 5d000000700000000e000000020000000b000000030000007309000005000000 - {e=>7,n=>6,a=>-112,m=>1,d=>-2,j=>2,l=>1,c=>-1,k=>66,h=>1,b=>5,g=>3,f=>-4,i=>3} 90ffffffbd01000027030000001902000000420906000000 90ffffffbd010000270003000000190002000000420906000000 90ffffffbd010000270000000300000019000000020000004209000006000000 90ffffffbd010000270000000300000019000000020000004209000006000000 - {e=>7,n=>1,a=>102,m=>3,d=>3,j=>3,l=>6,c=>1,k=>-50,h=>5,b=>6,g=>7,f=>1,i=>1} 66000000ce0000000f070000000d03000000ce1e01000000 66000000ce0000000f00070000000d0003000000ce1e01000000 66000000ce0000000f000000070000000d00000003000000ce1e000001000000 66000000ce0000000f000000070000000d00000003000000ce1e000001000000 - {e=>3,n=>6,a=>-108,m=>1,d=>-4,j=>4,l=>4,c=>-3,k=>85,h=>3,b=>7,g=>7,f=>-1,i=>1} 94ffffff2f0100003b070000000b04000000550c06000000 94ffffff2f0100003b00070000000b0004000000550c06000000 94ffffff2f0100003b000000070000000b00000004000000550c000006000000 94ffffff2f0100003b000000070000000b00000004000000550c000006000000 - {e=>3,n=>5,a=>103,m=>1,d=>-3,j=>3,l=>2,c=>0,k=>103,h=>3,b=>4,g=>1,f=>1,i=>0} 67000000440100000b010000000303000000670a05000000 67000000440100000b0001000000030003000000670a05000000 67000000440100000b000000010000000300000003000000670a000005000000 67000000440100000b000000010000000300000003000000670a000005000000 = typedef int foo; struct mixed_no_pack { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>5,a=>-4,m=>-2,d=>-1,j=>4,l=>2,c=>-1,k=>-4,h=>5,b=>5,g=>2,f=>-2,o=>251,i=>1} fcfffffffd01000036020000000d04000000fc3205000000fb fcfffffffd0100003600020000000d0004000000fc3205000000fb00 fcfffffffd01000036000000020000000d00000004000000fc32000005000000fb000000 fcfffffffd01000036000000020000000d00000004000000fc32000005000000fb000000 - {e=>5,n=>7,a=>100,m=>-4,d=>-4,j=>4,l=>2,c=>0,k=>-86,h=>1,b=>5,g=>0,f=>2,o=>180,i=>-2} 640000000501000015000000003104000000aa2207000000b4 6400000005010000150000000000310004000000aa2207000000b400 640000000501000015000000000000003100000004000000aa22000007000000b4000000 640000000501000015000000000000003100000004000000aa22000007000000b4000000 - {e=>6,n=>7,a=>-56,m=>-2,d=>-3,j=>5,l=>0,c=>-3,k=>122,h=>4,b=>7,g=>2,f=>1,o=>254,i=>0} c8ffffff6f0100000e0200000004050000007a3007000000fe c8ffffff6f0100000e00020000000400050000007a3007000000fe00 c8ffffff6f0100000e0000000200000004000000050000007a30000007000000fe000000 c8ffffff6f0100000e0000000200000004000000050000007a30000007000000fe000000 - {e=>1,n=>5,a=>-64,m=>-2,d=>1,j=>0,l=>1,c=>-3,k=>77,h=>7,b=>1,g=>4,f=>-1,o=>3,i=>-2} c0ffffff69000000390400000037000000004d310500000003 c0ffffff690000003900040000003700000000004d31050000000300 c0ffffff69000000390000000400000037000000000000004d3100000500000003000000 c0ffffff69000000390000000400000037000000000000004d3100000500000003000000 - {e=>5,n=>6,a=>-59,m=>-3,d=>0,j=>4,l=>3,c=>-3,k=>47,h=>3,b=>7,g=>0,f=>0,o=>16,i=>2} c5ffffff2f000000050000000013040000002f2b0600000010 c5ffffff2f0000000500000000001300040000002f2b060000001000 c5ffffff2f000000050000000000000013000000040000002f2b00000600000010000000 c5ffffff2f000000050000000000000013000000040000002f2b00000600000010000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; }; - {a=>-106,b=>7} 96ffffff07000000 96ffffff07000000 96ffffff07000000 96ffffff07000000 - {a=>-127,b=>2} 81ffffff02000000 81ffffff02000000 81ffffff02000000 81ffffff02000000 - {a=>-66,b=>6} beffffff06000000 beffffff06000000 beffffff06000000 beffffff06000000 - {a=>49,b=>6} 3100000006000000 3100000006000000 3100000006000000 3100000006000000 - {a=>107,b=>7} 6b00000007000000 6b00000007000000 6b00000007000000 6b00000007000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-18,b=>6} eeffffff06000000 eeffffff06000000 eeffffff06000000 eeffffff06000000 - {c=>-3,a=>-10,b=>6} f6ffffff2e000000 f6ffffff2e000000 f6ffffff2e000000 f6ffffff2e000000 - {c=>2,a=>40,b=>4} 2800000014000000 2800000014000000 2800000014000000 2800000014000000 - {c=>-2,a=>-97,b=>3} 9fffffff33000000 9fffffff33000000 9fffffff33000000 9fffffff33000000 - {c=>0,a=>-24,b=>3} e8ffffff03000000 e8ffffff03000000 e8ffffff03000000 e8ffffff03000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>2,a=>-99,b=>5,d=>-3} 9dffffff55010000 9dffffff55010000 9dffffff55010000 9dffffff55010000 - {c=>-3,a=>102,b=>4,d=>1} 660000006c000000 660000006c000000 660000006c000000 660000006c000000 - {c=>-4,a=>108,b=>1,d=>2} 6c000000a1000000 6c000000a1000000 6c000000a1000000 6c000000a1000000 - {c=>1,a=>-81,b=>6,d=>3} afffffffce000000 afffffffce000000 afffffffce000000 afffffffce000000 - {c=>2,a=>-53,b=>2,d=>2} cbffffff92000000 cbffffff92000000 cbffffff92000000 cbffffff92000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>2,a=>62,b=>7,d=>0} 3e0000001700000002 3e000000170000000200 3e0000001700000002000000 3e0000001700000002000000 - {e=>0,c=>1,a=>-91,b=>7,d=>1} a5ffffff4f00000000 a5ffffff4f0000000000 a5ffffff4f00000000000000 a5ffffff4f00000000000000 - {e=>3,c=>-1,a=>50,b=>3,d=>0} 320000003b00000003 320000003b0000000300 320000003b00000003000000 320000003b00000003000000 - {e=>2,c=>-1,a=>-68,b=>2,d=>2} bcffffffba00000002 bcffffffba0000000200 bcffffffba00000002000000 bcffffffba00000002000000 - {e=>5,c=>2,a=>67,b=>4,d=>1} 430000005400000005 43000000540000000500 430000005400000005000000 430000005400000005000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>1,c=>3,a=>-33,b=>2,d=>-3,f=>-3} dfffffff5a01000029 dfffffff5a0100002900 dfffffff5a01000029000000 dfffffff5a01000029000000 - {e=>6,c=>-4,a=>-3,b=>1,d=>-3,f=>1} fdffffff610100000e fdffffff610100000e00 fdffffff610100000e000000 fdffffff610100000e000000 - {e=>5,c=>-2,a=>-125,b=>1,d=>-3,f=>-3} 83ffffff710100002d 83ffffff710100002d00 83ffffff710100002d000000 83ffffff710100002d000000 - {e=>7,c=>-2,a=>101,b=>3,d=>-2,f=>-1} 65000000b30100003f 65000000b30100003f00 65000000b30100003f000000 65000000b30100003f000000 - {e=>1,c=>-2,a=>71,b=>4,d=>3,f=>2} 47000000f400000011 47000000f40000001100 47000000f400000011000000 47000000f400000011000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>5,c=>0,a=>56,g=>7,b=>1,d=>-1,f=>2} 38000000c10100001507000000 38000000c1010000150007000000 38000000c10100001500000007000000 38000000c10100001500000007000000 - {e=>6,c=>-4,a=>-45,g=>2,b=>2,d=>-1,f=>-1} d3ffffffe20100003e02000000 d3ffffffe20100003e0002000000 d3ffffffe20100003e00000002000000 d3ffffffe20100003e00000002000000 - {e=>7,c=>-4,a=>-101,g=>3,b=>1,d=>1,f=>-3} 9bffffff610000002f03000000 9bffffff610000002f0003000000 9bffffff610000002f00000003000000 9bffffff610000002f00000003000000 - {e=>0,c=>3,a=>62,g=>5,b=>2,d=>-3,f=>-4} 3e0000005a0100002005000000 3e0000005a010000200005000000 3e0000005a0100002000000005000000 3e0000005a0100002000000005000000 - {e=>6,c=>3,a=>102,g=>2,b=>6,d=>1,f=>-1} 660000005e0000003e02000000 660000005e0000003e0002000000 660000005e0000003e00000002000000 660000005e0000003e00000002000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>0,c=>-3,a=>-101,g=>1,b=>2,d=>0,f=>-3} 9bffffff2a0000002801000000 9bffffff2a000000280001000000 9bffffff2a0000002800000001000000 9bffffff2a0000002800000001000000 - {e=>5,c=>-4,a=>-95,g=>4,b=>4,d=>-4,f=>-1} a1ffffff240100003d04000000 a1ffffff240100003d0004000000 a1ffffff240100003d00000004000000 a1ffffff240100003d00000004000000 - {e=>0,c=>0,a=>60,g=>4,b=>4,d=>2,f=>-3} 3c000000840000002804000000 3c00000084000000280004000000 3c000000840000002800000004000000 3c000000840000002800000004000000 - {e=>4,c=>2,a=>-72,g=>5,b=>2,d=>1,f=>-2} b8ffffff520000003405000000 b8ffffff52000000340005000000 b8ffffff520000003400000005000000 b8ffffff520000003400000005000000 - {e=>4,c=>1,a=>-29,g=>7,b=>2,d=>-1,f=>2} e3ffffffca0100001407000000 e3ffffffca010000140007000000 e3ffffffca0100001400000007000000 e3ffffffca0100001400000007000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>23,d=>2,c=>-2,h=>0,b=>2,g=>4,f=>-3} 17000000b2000000290400000000 17000000b20000002900040000000000 17000000b2000000290000000400000000000000 17000000b2000000290000000400000000000000 - {e=>7,a=>-108,d=>3,c=>0,h=>1,b=>7,g=>7,f=>-2} 94ffffffc7000000370700000001 94ffffffc70000003700070000000100 94ffffffc7000000370000000700000001000000 94ffffffc7000000370000000700000001000000 - {e=>5,a=>-126,d=>2,c=>1,h=>3,b=>4,g=>0,f=>3} 82ffffff8c0000001d0000000003 82ffffff8c0000001d00000000000300 82ffffff8c0000001d0000000000000003000000 82ffffff8c0000001d0000000000000003000000 - {e=>4,a=>-62,d=>3,c=>-4,h=>1,b=>2,g=>2,f=>-3} c2ffffffe20000002c0200000001 c2ffffffe20000002c00020000000100 c2ffffffe20000002c0000000200000001000000 c2ffffffe20000002c0000000200000001000000 - {e=>0,a=>89,d=>-3,c=>3,h=>0,b=>7,g=>3,f=>2} 590000005f010000100300000000 590000005f0100001000030000000000 590000005f010000100000000300000000000000 590000005f010000100000000300000000000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>16,d=>1,c=>-4,h=>1,b=>7,g=>3,f=>-3,i=>0} 10000000670000002e0300000001 10000000670000002e00030000000100 10000000670000002e0000000300000001000000 10000000670000002e0000000300000001000000 - {e=>6,a=>62,d=>0,c=>1,h=>2,b=>0,g=>5,f=>-3,i=>2} 3e000000080000002e0500000012 3e000000080000002e00050000001200 3e000000080000002e0000000500000012000000 3e000000080000002e0000000500000012000000 - {e=>3,a=>-95,d=>-2,c=>3,h=>7,b=>3,g=>7,f=>-4,i=>0} a1ffffff9b010000230700000007 a1ffffff9b0100002300070000000700 a1ffffff9b010000230000000700000007000000 a1ffffff9b010000230000000700000007000000 - {e=>6,a=>-45,d=>1,c=>0,h=>1,b=>6,g=>3,f=>-1,i=>1} d3ffffff460000003e0300000009 d3ffffff460000003e00030000000900 d3ffffff460000003e0000000300000009000000 d3ffffff460000003e0000000300000009000000 - {e=>1,a=>-122,d=>1,c=>0,h=>4,b=>1,g=>4,f=>0,i=>3} 86ffffff4100000001040000001c 86ffffff410000000100040000001c00 86ffffff4100000001000000040000001c000000 86ffffff4100000001000000040000001c000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>1,a=>-114,d=>2,j=>5,c=>1,h=>4,b=>1,g=>6,f=>2,i=>-4} 8effffff8900000011060000002405000000 8effffff89000000110006000000240005000000 8effffff8900000011000000060000002400000005000000 8effffff8900000011000000060000002400000005000000 - {e=>2,a=>-60,d=>-3,j=>3,c=>-1,h=>6,b=>2,g=>1,f=>3,i=>0} c4ffffff7a0100001a010000000603000000 c4ffffff7a0100001a0001000000060003000000 c4ffffff7a0100001a000000010000000600000003000000 c4ffffff7a0100001a000000010000000600000003000000 - {e=>3,a=>51,d=>1,j=>5,c=>-4,h=>6,b=>7,g=>3,f=>2,i=>2} 330000006700000013030000001605000000 3300000067000000130003000000160005000000 330000006700000013000000030000001600000005000000 330000006700000013000000030000001600000005000000 - {e=>4,a=>-121,d=>-1,j=>3,c=>-3,h=>5,b=>3,g=>5,f=>1,i=>-1} 87ffffffeb0100000c050000003d03000000 87ffffffeb0100000c00050000003d0003000000 87ffffffeb0100000c000000050000003d00000003000000 87ffffffeb0100000c000000050000003d00000003000000 - {e=>4,a=>80,d=>3,j=>5,c=>-1,h=>2,b=>0,g=>4,f=>-2,i=>0} 50000000f800000034040000000205000000 50000000f8000000340004000000020005000000 50000000f800000034000000040000000200000005000000 50000000f800000034000000040000000200000005000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>-88,d=>3,j=>5,c=>-3,k=>-40,h=>0,b=>6,g=>6,f=>1,i=>-2} a8ffffffee0000000e060000003005000000d8 a8ffffffee0000000e0006000000300005000000d800 a8ffffffee0000000e000000060000003000000005000000d8000000 a8ffffffee0000000e000000060000003000000005000000d8000000 - {e=>2,a=>100,d=>-2,j=>0,c=>-2,k=>126,h=>4,b=>0,g=>2,f=>-3,i=>-4} 64000000b00100002a0200000024000000007e 64000000b00100002a00020000002400000000007e00 64000000b00100002a0000000200000024000000000000007e000000 64000000b00100002a0000000200000024000000000000007e000000 - {e=>3,a=>-69,d=>2,j=>7,c=>2,k=>33,h=>6,b=>6,g=>0,f=>1,i=>-1} bbffffff960000000b000000003e0700000021 bbffffff960000000b00000000003e00070000002100 bbffffff960000000b000000000000003e0000000700000021000000 bbffffff960000000b000000000000003e0000000700000021000000 - {e=>4,a=>68,d=>0,j=>5,c=>-1,k=>-97,h=>7,b=>4,g=>1,f=>-1,i=>3} 440000003c0000003c010000001f050000009f 440000003c0000003c00010000001f00050000009f00 440000003c0000003c000000010000001f000000050000009f000000 440000003c0000003c000000010000001f000000050000009f000000 - {e=>3,a=>-64,d=>-4,j=>1,c=>0,k=>-12,h=>3,b=>3,g=>2,f=>2,i=>0} c0ffffff0301000013020000000301000000f4 c0ffffff03010000130002000000030001000000f400 c0ffffff0301000013000000020000000300000001000000f4000000 c0ffffff0301000013000000020000000300000001000000f4000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>7,a=>19,d=>-2,j=>6,l=>1,c=>3,k=>-48,h=>6,b=>3,g=>4,f=>2,i=>3} 130000009b01000017040000001e06000000d001 130000009b0100001700040000001e0006000000d001 130000009b01000017000000040000001e00000006000000d0010000 130000009b01000017000000040000001e00000006000000d0010000 - {e=>2,a=>-64,d=>-1,j=>0,l=>2,c=>-4,k=>-102,h=>5,b=>4,g=>0,f=>-4,i=>0} c0ffffffe4010000220000000005000000009a02 c0ffffffe40100002200000000000500000000009a02 c0ffffffe4010000220000000000000005000000000000009a020000 c0ffffffe4010000220000000000000005000000000000009a020000 - {e=>6,a=>32,d=>3,j=>6,l=>7,c=>0,k=>-18,h=>6,b=>2,g=>6,f=>3,i=>-4} 20000000c20000001e060000002606000000ee07 20000000c20000001e0006000000260006000000ee07 20000000c20000001e000000060000002600000006000000ee070000 20000000c20000001e000000060000002600000006000000ee070000 - {e=>4,a=>12,d=>0,j=>4,l=>0,c=>1,k=>-60,h=>6,b=>2,g=>0,f=>3,i=>-4} 0c0000000a0000001c000000002604000000c400 0c0000000a0000001c0000000000260004000000c400 0c0000000a0000001c000000000000002600000004000000c4000000 0c0000000a0000001c000000000000002600000004000000c4000000 - {e=>1,a=>126,d=>-3,j=>3,l=>3,c=>-2,k=>127,h=>6,b=>2,g=>7,f=>3,i=>-2} 7e00000072010000190700000036030000007f03 7e000000720100001900070000003600030000007f03 7e00000072010000190000000700000036000000030000007f030000 7e00000072010000190000000700000036000000030000007f030000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>41,m=>-2,d=>-2,j=>7,l=>3,c=>-2,k=>100,h=>7,b=>4,g=>4,f=>3,i=>2} 29000000b40100001f0400000017070000006433 29000000b40100001f00040000001700070000006433 29000000b40100001f00000004000000170000000700000064330000 29000000b40100001f00000004000000170000000700000064330000 - {e=>0,a=>-34,m=>-1,d=>-1,j=>1,l=>4,c=>-4,k=>120,h=>0,b=>4,g=>1,f=>0,i=>1} deffffffe401000000010000000801000000783c deffffffe4010000000001000000080001000000783c deffffffe401000000000000010000000800000001000000783c0000 deffffffe401000000000000010000000800000001000000783c0000 - {e=>6,a=>29,m=>1,d=>-2,j=>2,l=>1,c=>-2,k=>-104,h=>4,b=>7,g=>2,f=>0,i=>-1} 1d000000b701000006020000003c020000009809 1d000000b70100000600020000003c00020000009809 1d000000b701000006000000020000003c0000000200000098090000 1d000000b701000006000000020000003c0000000200000098090000 - {e=>5,a=>-81,m=>3,d=>3,j=>2,l=>6,c=>-2,k=>-76,h=>3,b=>4,g=>4,f=>-1,i=>-3} affffffff40000003d040000002b02000000b41e affffffff40000003d00040000002b0002000000b41e affffffff40000003d000000040000002b00000002000000b41e0000 affffffff40000003d000000040000002b00000002000000b41e0000 - {e=>3,a=>-14,m=>2,d=>-1,j=>5,l=>2,c=>3,k=>77,h=>2,b=>0,g=>7,f=>0,i=>1} f2ffffffd801000003070000000a050000004d12 f2ffffffd80100000300070000000a00050000004d12 f2ffffffd801000003000000070000000a000000050000004d120000 f2ffffffd801000003000000070000000a000000050000004d120000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>0,n=>2,a=>99,m=>-3,d=>-4,j=>1,l=>6,c=>-3,k=>5,h=>5,b=>2,g=>5,f=>3,i=>0} 630000002a01000018050000000501000000052e02000000 630000002a010000180005000000050001000000052e02000000 630000002a01000018000000050000000500000001000000052e000002000000 630000002a01000018000000050000000500000001000000052e000002000000 - {e=>7,n=>4,a=>56,m=>-1,d=>0,j=>4,l=>6,c=>3,k=>123,h=>3,b=>0,g=>0,f=>-1,i=>1} 38000000180000003f000000000b040000007b3e04000000 38000000180000003f00000000000b00040000007b3e04000000 38000000180000003f000000000000000b000000040000007b3e000004000000 38000000180000003f000000000000000b000000040000007b3e000004000000 - {e=>1,n=>0,a=>-72,m=>-1,d=>1,j=>2,l=>5,c=>-2,k=>29,h=>1,b=>1,g=>1,f=>2,i=>-3} b8ffffff71000000110100000029020000001d3d00000000 b8ffffff710000001100010000002900020000001d3d00000000 b8ffffff71000000110000000100000029000000020000001d3d000000000000 b8ffffff71000000110000000100000029000000020000001d3d000000000000 - {e=>6,n=>5,a=>-35,m=>-3,d=>-2,j=>5,l=>6,c=>-1,k=>87,h=>4,b=>7,g=>0,f=>1,i=>-1} ddffffffbf0100000e000000003c05000000572e05000000 ddffffffbf0100000e00000000003c0005000000572e05000000 ddffffffbf0100000e000000000000003c00000005000000572e000005000000 ddffffffbf0100000e000000000000003c00000005000000572e000005000000 - {e=>0,n=>1,a=>-32,m=>-1,d=>0,j=>6,l=>3,c=>1,k=>-26,h=>3,b=>1,g=>4,f=>-1,i=>3} e0ffffff0900000038040000001b06000000e63b01000000 e0ffffff090000003800040000001b0006000000e63b01000000 e0ffffff0900000038000000040000001b00000006000000e63b000001000000 e0ffffff0900000038000000040000001b00000006000000e63b000001000000 = typedef int foo; struct mixed_no_pack { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>4,n=>5,a=>-63,m=>0,d=>-4,j=>0,l=>3,c=>2,k=>0,h=>4,b=>6,g=>3,f=>0,o=>255,i=>1} c1ffffff1601000004030000000c00000000000305000000ff c1ffffff160100000400030000000c0000000000000305000000ff00 c1ffffff1601000004000000030000000c000000000000000003000005000000ff000000 c1ffffff1601000004000000030000000c000000000000000003000005000000ff000000 - {e=>4,n=>4,a=>-45,m=>-1,d=>-3,j=>5,l=>4,c=>-3,k=>-116,h=>7,b=>7,g=>0,f=>1,o=>47,i=>3} d3ffffff6f0100000c000000001f050000008c3c040000002f d3ffffff6f0100000c00000000001f00050000008c3c040000002f00 d3ffffff6f0100000c000000000000001f000000050000008c3c0000040000002f000000 d3ffffff6f0100000c000000000000001f000000050000008c3c0000040000002f000000 - {e=>2,n=>7,a=>37,m=>3,d=>2,j=>5,l=>5,c=>-2,k=>86,h=>3,b=>7,g=>5,f=>-2,o=>120,i=>-2} 25000000b700000032050000003305000000561d0700000078 25000000b7000000320005000000330005000000561d070000007800 25000000b700000032000000050000003300000005000000561d00000700000078000000 25000000b700000032000000050000003300000005000000561d00000700000078000000 - {e=>7,n=>3,a=>-38,m=>-4,d=>0,j=>4,l=>5,c=>0,k=>30,h=>7,b=>7,g=>0,f=>3,o=>182,i=>-2} daffffff070000001f0000000037040000001e2503000000b6 daffffff070000001f00000000003700040000001e2503000000b600 daffffff070000001f0000000000000037000000040000001e25000003000000b6000000 daffffff070000001f0000000000000037000000040000001e25000003000000b6000000 - {e=>4,n=>1,a=>-127,m=>0,d=>-4,j=>1,l=>7,c=>0,k=>-88,h=>1,b=>4,g=>3,f=>-2,o=>194,i=>-2} 81ffffff0401000034030000003101000000a80701000000c2 81ffffff04010000340003000000310001000000a80701000000c200 81ffffff0401000034000000030000003100000001000000a807000001000000c2000000 81ffffff0401000034000000030000003100000001000000a807000001000000c2000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; }; - {a=>0} 00000000 00000000 00000000 00000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>4} 04000000 04000000 04000000 04000000 - {a=>1} 01000000 01000000 01000000 01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; }; - {a=>0,b=>-1} 38000000 38000000 38000000 38000000 - {a=>0,b=>2} 10000000 10000000 10000000 10000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 - {a=>0,b=>3} 18000000 18000000 18000000 18000000 - {a=>5,b=>-1} 3d000000 3d000000 3d000000 3d000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>3,a=>0,b=>-3} e8000000 e8000000 e8000000 e8000000 - {c=>3,a=>7,b=>-4} e7000000 e7000000 e7000000 e7000000 - {c=>2,a=>3,b=>3} 9b000000 9b000000 9b000000 9b000000 - {c=>0,a=>3,b=>-3} 2b000000 2b000000 2b000000 2b000000 - {c=>-1,a=>3,b=>2} d3010000 d3010000 d3010000 d3010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>3,a=>7,b=>-4,d=>7} e700000007 e700000007 e700000007 e700000007 - {c=>1,a=>2,b=>1,d=>0} 4a00000000 4a00000000 4a00000000 4a00000000 - {c=>-1,a=>1,b=>-4,d=>5} e101000005 e101000005 e101000005 e101000005 - {c=>3,a=>6,b=>-1,d=>0} fe00000000 fe00000000 fe00000000 fe00000000 - {c=>1,a=>4,b=>-2,d=>0} 7400000000 7400000000 7400000000 7400000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>2,c=>-2,a=>3,b=>-2,d=>6} b301000016 b301000016 b301000016 b301000016 - {e=>-2,c=>-1,a=>3,b=>-3,d=>2} eb01000032 eb01000032 eb01000032 eb01000032 - {e=>3,c=>1,a=>7,b=>-1,d=>3} 7f0000001b 7f0000001b 7f0000001b 7f0000001b - {e=>-4,c=>-2,a=>5,b=>-4,d=>1} a501000021 a501000021 a501000021 a501000021 - {e=>1,c=>-2,a=>4,b=>-2,d=>4} b40100000c b40100000c b40100000c b40100000c = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>-3,c=>1,a=>4,b=>-1,d=>2,f=>2} 7c0000002a02000000 7c0000002a02000000 7c0000002a02000000 7c0000002a02000000 - {e=>3,c=>2,a=>5,b=>-1,d=>0,f=>4} bd0000001804000000 bd0000001804000000 bd0000001804000000 bd0000001804000000 - {e=>1,c=>-3,a=>3,b=>0,d=>6,f=>6} 430100000e06000000 430100000e06000000 430100000e06000000 430100000e06000000 - {e=>2,c=>0,a=>1,b=>-3,d=>1,f=>6} 290000001106000000 290000001106000000 290000001106000000 290000001106000000 - {e=>2,c=>1,a=>4,b=>3,d=>0,f=>4} 5c0000001004000000 5c0000001004000000 5c0000001004000000 5c0000001004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>-4,c=>0,a=>2,b=>2,d=>2,f=>3} 120000002203000000 120000002203000000 120000002203000000 120000002203000000 - {e=>2,c=>-4,a=>0,b=>2,d=>4,f=>2} 100100001402000000 100100001402000000 100100001402000000 100100001402000000 - {e=>-2,c=>-4,a=>4,b=>0,d=>3,f=>0} 040100003300000000 040100003300000000 040100003300000000 040100003300000000 - {e=>-1,c=>1,a=>2,b=>3,d=>7,f=>0} 5a0000003f00000000 5a0000003f00000000 5a0000003f00000000 5a0000003f00000000 - {e=>0,c=>-1,a=>1,b=>-3,d=>0,f=>5} e90100000005000000 e90100000005000000 e90100000005000000 e90100000005000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>3,c=>1,a=>1,g=>6,b=>0,d=>5,f=>2} 410000001d0200000006 410000001d0200000006 410000001d0200000006 410000001d0200000006 - {e=>-2,c=>-2,a=>3,g=>0,b=>3,d=>0,f=>7} 9b010000300700000000 9b010000300700000000 9b010000300700000000 9b010000300700000000 - {e=>-2,c=>-4,a=>6,g=>3,b=>-4,d=>6,f=>3} 26010000360300000003 26010000360300000003 26010000360300000003 26010000360300000003 - {e=>-2,c=>1,a=>7,g=>4,b=>3,d=>7,f=>3} 5f000000370300000004 5f000000370300000004 5f000000370300000004 5f000000370300000004 - {e=>-2,c=>-3,a=>0,g=>1,b=>-3,d=>7,f=>5} 68010000370500000001 68010000370500000001 68010000370500000001 68010000370500000001 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>-2,a=>2,d=>0,c=>-4,h=>1,b=>-4,g=>0,f=>0} 22010000300000000008 22010000300000000008 22010000300000000008 22010000300000000008 - {e=>-1,a=>0,d=>5,c=>-2,h=>-3,b=>2,g=>2,f=>7} 900100003d070000002a 900100003d070000002a 900100003d070000002a 900100003d070000002a - {e=>3,a=>4,d=>0,c=>2,h=>-3,b=>3,g=>2,f=>7} 9c00000018070000002a 9c00000018070000002a 9c00000018070000002a 9c00000018070000002a - {e=>2,a=>7,d=>5,c=>2,h=>1,b=>0,g=>0,f=>2} 87000000150200000008 87000000150200000008 87000000150200000008 87000000150200000008 - {e=>-3,a=>3,d=>6,c=>2,h=>0,b=>-1,g=>7,f=>4} bb0000002e0400000007 bb0000002e0400000007 bb0000002e0400000007 bb0000002e0400000007 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>2,a=>3,d=>4,c=>1,h=>-4,b=>-1,g=>4,f=>2,i=>7} 7b00000014020000002407000000 7b00000014020000002407000000 7b00000014020000002407000000 7b00000014020000002407000000 - {e=>2,a=>7,d=>2,c=>-3,h=>2,b=>-1,g=>6,f=>7,i=>5} 7f01000012070000001605000000 7f01000012070000001605000000 7f01000012070000001605000000 7f01000012070000001605000000 - {e=>2,a=>2,d=>5,c=>-2,h=>0,b=>-1,g=>0,f=>6,i=>7} ba01000015060000000007000000 ba01000015060000000007000000 ba01000015060000000007000000 ba01000015060000000007000000 - {e=>-4,a=>0,d=>7,c=>0,h=>1,b=>3,g=>6,f=>0,i=>2} 1800000027000000000e02000000 1800000027000000000e02000000 1800000027000000000e02000000 1800000027000000000e02000000 - {e=>0,a=>4,d=>3,c=>-1,h=>-4,b=>-4,g=>3,f=>6,i=>7} e401000003060000002307000000 e401000003060000002307000000 e401000003060000002307000000 e401000003060000002307000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>-3,a=>2,d=>5,j=>51,c=>-3,h=>-4,b=>-1,g=>5,f=>7,i=>4} 7a0100002d07000000250400000033 7a0100002d07000000250400000033 7a0100002d07000000250400000033 7a0100002d07000000250400000033 - {e=>2,a=>5,d=>0,j=>-45,c=>-2,h=>2,b=>-1,g=>6,f=>3,i=>2} bd01000010030000001602000000d3 bd01000010030000001602000000d3 bd01000010030000001602000000d3 bd01000010030000001602000000d3 - {e=>-1,a=>3,d=>4,j=>-26,c=>2,h=>3,b=>0,g=>1,f=>5,i=>0} 830000003c050000001900000000e6 830000003c050000001900000000e6 830000003c050000001900000000e6 830000003c050000001900000000e6 - {e=>1,a=>4,d=>0,j=>-56,c=>1,h=>3,b=>2,g=>2,f=>3,i=>4} 5400000008030000001a04000000c8 5400000008030000001a04000000c8 5400000008030000001a04000000c8 5400000008030000001a04000000c8 - {e=>2,a=>7,d=>4,j=>-122,c=>-4,h=>1,b=>-2,g=>1,f=>4,i=>6} 370100001404000000090600000086 370100001404000000090600000086 370100001404000000090600000086 370100001404000000090600000086 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>3,a=>6,d=>7,j=>112,c=>0,k=>2,h=>-4,b=>-3,g=>3,f=>7,i=>5} 2e0000001f0700000023050000007002 2e0000001f0700000023050000007002 2e0000001f0700000023050000007002 2e0000001f0700000023050000007002 - {e=>-3,a=>1,d=>7,j=>-86,c=>3,k=>2,h=>3,b=>-4,g=>7,f=>0,i=>3} e10000002f000000001f03000000aa02 e10000002f000000001f03000000aa02 e10000002f000000001f03000000aa02 e10000002f000000001f03000000aa02 - {e=>-2,a=>0,d=>6,j=>-117,c=>-3,k=>7,h=>0,b=>-1,g=>6,f=>7,i=>2} 78010000360700000006020000008b07 78010000360700000006020000008b07 78010000360700000006020000008b07 78010000360700000006020000008b07 - {e=>1,a=>5,d=>5,j=>-119,c=>-2,k=>6,h=>1,b=>2,g=>3,f=>2,i=>0} 950100000d020000000b000000008906 950100000d020000000b000000008906 950100000d020000000b000000008906 950100000d020000000b000000008906 - {e=>3,a=>6,d=>6,j=>-128,c=>-2,k=>0,h=>2,b=>-4,g=>3,f=>3,i=>5} a60100001e0300000013050000008000 a60100001e0300000013050000008000 a60100001e0300000013050000008000 a60100001e0300000013050000008000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>-1,a=>1,d=>3,j=>90,l=>-1,c=>2,k=>4,h=>0,b=>-2,g=>5,f=>4,i=>3} b10000003b0400000005030000005a3c b10000003b0400000005030000005a3c b10000003b0400000005030000005a3c b10000003b0400000005030000005a3c - {e=>3,a=>0,d=>3,j=>27,l=>-2,c=>-3,k=>5,h=>0,b=>-1,g=>2,f=>1,i=>5} 780100001b0100000002050000001b35 780100001b0100000002050000001b35 780100001b0100000002050000001b35 780100001b0100000002050000001b35 - {e=>1,a=>1,d=>3,j=>-13,l=>-4,c=>-3,k=>5,h=>2,b=>-2,g=>6,f=>1,i=>1} 710100000b010000001601000000f325 710100000b010000001601000000f325 710100000b010000001601000000f325 710100000b010000001601000000f325 - {e=>2,a=>3,d=>7,j=>-47,l=>-2,c=>-3,k=>1,h=>3,b=>-3,g=>6,f=>3,i=>6} 6b01000017030000001e06000000d131 6b01000017030000001e06000000d131 6b01000017030000001e06000000d131 6b01000017030000001e06000000d131 - {e=>1,a=>3,d=>4,j=>20,l=>2,c=>-4,k=>3,h=>-3,b=>2,g=>4,f=>0,i=>4} 130100000c000000002c040000001413 130100000c000000002c040000001413 130100000c000000002c040000001413 130100000c000000002c040000001413 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-2,a=>2,m=>1,d=>3,j=>66,l=>2,c=>1,k=>7,h=>0,b=>3,g=>3,f=>3,i=>4} 5a00000033030000000304000000421701000000 5a00000033030000000304000000421701000000 5a00000033030000000304000000421701000000 5a00000033030000000304000000421701000000 - {e=>3,a=>7,m=>5,d=>2,j=>87,l=>-2,c=>-4,k=>4,h=>0,b=>1,g=>4,f=>1,i=>1} 0f0100001a010000000401000000573405000000 0f0100001a010000000401000000573405000000 0f0100001a010000000401000000573405000000 0f0100001a010000000401000000573405000000 - {e=>0,a=>3,m=>7,d=>4,j=>2,l=>-3,c=>2,k=>7,h=>-4,b=>-2,g=>0,f=>4,i=>1} b300000004040000002001000000022f07000000 b300000004040000002001000000022f07000000 b300000004040000002001000000022f07000000 b300000004040000002001000000022f07000000 - {e=>0,a=>6,m=>1,d=>0,j=>-127,l=>0,c=>0,k=>2,h=>-3,b=>-2,g=>3,f=>2,i=>1} 3600000000020000002b01000000810201000000 3600000000020000002b01000000810201000000 3600000000020000002b01000000810201000000 3600000000020000002b01000000810201000000 - {e=>-1,a=>4,m=>4,d=>0,j=>-10,l=>-3,c=>0,k=>4,h=>-4,b=>1,g=>6,f=>3,i=>0} 0c00000038030000002600000000f62c04000000 0c00000038030000002600000000f62c04000000 0c00000038030000002600000000f62c04000000 0c00000038030000002600000000f62c04000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>-3,n=>71,a=>1,m=>5,d=>3,j=>-14,l=>-1,c=>0,k=>5,h=>-3,b=>0,g=>0,f=>5,i=>5} 010000002b050000002805000000f23d0500000047 010000002b050000002805000000f23d0500000047 010000002b050000002805000000f23d0500000047 010000002b050000002805000000f23d0500000047 - {e=>1,n=>212,a=>5,m=>3,d=>1,j=>-32,l=>3,c=>-2,k=>5,h=>-2,b=>-3,g=>4,f=>0,i=>4} ad01000009000000003404000000e01d03000000d4 ad01000009000000003404000000e01d03000000d4 ad01000009000000003404000000e01d03000000d4 ad01000009000000003404000000e01d03000000d4 - {e=>-1,n=>32,a=>4,m=>3,d=>1,j=>-40,l=>-2,c=>-1,k=>3,h=>-1,b=>2,g=>0,f=>5,i=>5} d401000039050000003805000000d8330300000020 d401000039050000003805000000d8330300000020 d401000039050000003805000000d8330300000020 d401000039050000003805000000d8330300000020 - {e=>-1,n=>95,a=>2,m=>6,d=>6,j=>-84,l=>0,c=>2,k=>0,h=>2,b=>-3,g=>2,f=>3,i=>2} aa0000003e030000001202000000ac00060000005f aa0000003e030000001202000000ac00060000005f aa0000003e030000001202000000ac00060000005f aa0000003e030000001202000000ac00060000005f - {e=>0,n=>37,a=>4,m=>6,d=>1,j=>46,l=>2,c=>-3,k=>7,h=>0,b=>3,g=>0,f=>7,i=>0} 5c010000010700000000000000002e170600000025 5c010000010700000000000000002e170600000025 5c010000010700000000000000002e170600000025 5c010000010700000000000000002e170600000025 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; }; - {a=>106,b=>0} 6a00000000 6a00000000 6a00000000 6a00000000 - {a=>-10,b=>0} f600000000 f600000000 f600000000 f600000000 - {a=>12,b=>6} 0c06000000 0c06000000 0c06000000 0c06000000 - {a=>-86,b=>1} aa01000000 aa01000000 aa01000000 aa01000000 - {a=>-33,b=>2} df02000000 df02000000 df02000000 df02000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; }; - {c=>-3,a=>-108,b=>2} 942a000000 942a000000 942a000000 942a000000 - {c=>1,a=>96,b=>5} 600d000000 600d000000 600d000000 600d000000 - {c=>3,a=>-121,b=>6} 871e000000 871e000000 871e000000 871e000000 - {c=>-1,a=>-58,b=>1} c639000000 c639000000 c639000000 c639000000 - {c=>2,a=>62,b=>2} 3e12000000 3e12000000 3e12000000 3e12000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>40,b=>3,d=>-2} 28a3010000 28a3010000 28a3010000 28a3010000 - {c=>-3,a=>68,b=>4,d=>-3} 446c010000 446c010000 446c010000 446c010000 - {c=>-3,a=>21,b=>0,d=>3} 15e8000000 15e8000000 15e8000000 15e8000000 - {c=>-3,a=>-98,b=>2,d=>-1} 9eea010000 9eea010000 9eea010000 9eea010000 - {c=>-3,a=>74,b=>7,d=>1} 4a6f000000 4a6f000000 4a6f000000 4a6f000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>-2,a=>4,b=>0,d=>-4} 043001000003 043001000003 043001000003 043001000003 - {e=>4,c=>-1,a=>44,b=>0,d=>2} 2cb800000004 2cb800000004 2cb800000004 2cb800000004 - {e=>7,c=>-1,a=>-108,b=>5,d=>-2} 94bd01000007 94bd01000007 94bd01000007 94bd01000007 - {e=>3,c=>2,a=>-123,b=>0,d=>3} 85d000000003 85d000000003 85d000000003 85d000000003 - {e=>3,c=>0,a=>-85,b=>5,d=>0} ab0500000003 ab0500000003 ab0500000003 ab0500000003 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>-3,a=>-86,b=>1,d=>-3,f=>3} aa690100001a aa690100001a aa690100001a aa690100001a - {e=>4,c=>1,a=>-10,b=>0,d=>0,f=>3} f6080000001c f6080000001c f6080000001c f6080000001c - {e=>7,c=>-2,a=>18,b=>2,d=>-2,f=>-1} 12b20100003f 12b20100003f 12b20100003f 12b20100003f - {e=>2,c=>3,a=>-8,b=>5,d=>1,f=>2} f85d00000012 f85d00000012 f85d00000012 f85d00000012 - {e=>1,c=>0,a=>-98,b=>0,d=>1,f=>0} 9e4000000001 9e4000000001 9e4000000001 9e4000000001 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>3,c=>1,a=>126,g=>5,b=>0,d=>0,f=>3} 7e080000001b05000000 7e080000001b05000000 7e080000001b05000000 7e080000001b05000000 - {e=>0,c=>-4,a=>-72,g=>4,b=>2,d=>-1,f=>2} b8e20100001004000000 b8e20100001004000000 b8e20100001004000000 b8e20100001004000000 - {e=>4,c=>-2,a=>-68,g=>1,b=>6,d=>3,f=>3} bcf60000001c01000000 bcf60000001c01000000 bcf60000001c01000000 bcf60000001c01000000 - {e=>1,c=>-2,a=>34,g=>4,b=>7,d=>-4,f=>-4} 22370100002104000000 22370100002104000000 22370100002104000000 22370100002104000000 - {e=>2,c=>3,a=>13,g=>1,b=>3,d=>2,f=>-3} 0d9b0000002a01000000 0d9b0000002a01000000 0d9b0000002a01000000 0d9b0000002a01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>6,c=>2,a=>-126,g=>7,b=>4,d=>-3,f=>2} 82540100001607000000 82540100001607000000 82540100001607000000 82540100001607000000 - {e=>7,c=>-3,a=>-72,g=>3,b=>6,d=>-4,f=>-3} b82e0100002f03000000 b82e0100002f03000000 b82e0100002f03000000 b82e0100002f03000000 - {e=>6,c=>-3,a=>67,g=>7,b=>6,d=>-1,f=>-4} 43ee0100002607000000 43ee0100002607000000 43ee0100002607000000 43ee0100002607000000 - {e=>4,c=>-2,a=>-37,g=>6,b=>2,d=>3,f=>3} dbf20000001c06000000 dbf20000001c06000000 dbf20000001c06000000 dbf20000001c06000000 - {e=>4,c=>3,a=>23,g=>7,b=>1,d=>2,f=>2} 17990000001407000000 17990000001407000000 17990000001407000000 17990000001407000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>106,d=>0,c=>1,h=>0,b=>6,g=>3,f=>3} 6a0e0000001b0300000000 6a0e0000001b0300000000 6a0e0000001b0300000000 6a0e0000001b0300000000 - {e=>0,a=>102,d=>-2,c=>-2,h=>0,b=>5,g=>0,f=>2} 66b5010000100000000000 66b5010000100000000000 66b5010000100000000000 66b5010000100000000000 - {e=>1,a=>-118,d=>2,c=>-3,h=>1,b=>1,g=>6,f=>3} 8aa9000000190600000001 8aa9000000190600000001 8aa9000000190600000001 8aa9000000190600000001 - {e=>0,a=>60,d=>-3,c=>2,h=>0,b=>3,g=>0,f=>0} 3c53010000000000000000 3c53010000000000000000 3c53010000000000000000 3c53010000000000000000 - {e=>5,a=>19,d=>-2,c=>3,h=>1,b=>2,g=>4,f=>3} 139a0100001d0400000001 139a0100001d0400000001 139a0100001d0400000001 139a0100001d0400000001 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>126,d=>2,c=>1,h=>5,b=>4,g=>6,f=>3,i=>-4} 7e8c0000001c0600000025 7e8c0000001c0600000025 7e8c0000001c0600000025 7e8c0000001c0600000025 - {e=>7,a=>-19,d=>0,c=>1,h=>2,b=>3,g=>5,f=>0,i=>-3} ed0b00000007050000002a ed0b00000007050000002a ed0b00000007050000002a ed0b00000007050000002a - {e=>0,a=>122,d=>3,c=>3,h=>2,b=>4,g=>2,f=>-2,i=>2} 7adc000000300200000012 7adc000000300200000012 7adc000000300200000012 7adc000000300200000012 - {e=>2,a=>62,d=>-4,c=>-4,h=>6,b=>3,g=>5,f=>-2,i=>3} 3e2301000032050000001e 3e2301000032050000001e 3e2301000032050000001e 3e2301000032050000001e - {e=>1,a=>64,d=>-3,c=>-4,h=>0,b=>3,g=>1,f=>-4,i=>-4} 4063010000210100000020 4063010000210100000020 4063010000210100000020 4063010000210100000020 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>6,a=>-51,d=>2,j=>2,c=>1,h=>0,b=>4,g=>2,f=>0,i=>-3} cd8c00000006020000002802000000 cd8c00000006020000002802000000 cd8c00000006020000002802000000 cd8c00000006020000002802000000 - {e=>3,a=>36,d=>-4,j=>7,c=>3,h=>7,b=>5,g=>6,f=>0,i=>-2} 241d01000003060000003707000000 241d01000003060000003707000000 241d01000003060000003707000000 241d01000003060000003707000000 - {e=>3,a=>-65,d=>-2,j=>7,c=>-1,h=>5,b=>0,g=>5,f=>3,i=>-1} bfb80100001b050000003d07000000 bfb80100001b050000003d07000000 bfb80100001b050000003d07000000 bfb80100001b050000003d07000000 - {e=>3,a=>-4,d=>2,j=>4,c=>1,h=>1,b=>5,g=>1,f=>-1,i=>1} fc8d0000003b010000000904000000 fc8d0000003b010000000904000000 fc8d0000003b010000000904000000 fc8d0000003b010000000904000000 - {e=>5,a=>114,d=>2,j=>0,c=>1,h=>2,b=>7,g=>2,f=>-3,i=>-3} 728f0000002d020000002a00000000 728f0000002d020000002a00000000 728f0000002d020000002a00000000 728f0000002d020000002a00000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>66,d=>1,j=>3,c=>3,k=>-88,h=>4,b=>5,g=>0,f=>3,i=>1} 425d0000001e000000000c03000000a8 425d0000001e000000000c03000000a8 425d0000001e000000000c03000000a8 425d0000001e000000000c03000000a8 - {e=>3,a=>-27,d=>3,j=>3,c=>-4,k=>-71,h=>2,b=>6,g=>1,f=>1,i=>-3} e5e60000000b010000002a03000000b9 e5e60000000b010000002a03000000b9 e5e60000000b010000002a03000000b9 e5e60000000b010000002a03000000b9 - {e=>7,a=>-4,d=>-3,j=>1,c=>-3,k=>-71,h=>5,b=>0,g=>3,f=>2,i=>-4} fc6801000017030000002501000000b9 fc6801000017030000002501000000b9 fc6801000017030000002501000000b9 fc6801000017030000002501000000b9 - {e=>7,a=>-35,d=>-3,j=>6,c=>2,k=>50,h=>5,b=>5,g=>6,f=>1,i=>2} dd550100000f06000000150600000032 dd550100000f06000000150600000032 dd550100000f06000000150600000032 dd550100000f06000000150600000032 - {e=>5,a=>-47,d=>0,j=>3,c=>3,k=>-120,h=>3,b=>2,g=>7,f=>2,i=>1} d11a00000015070000000b0300000088 d11a00000015070000000b0300000088 d11a00000015070000000b0300000088 d11a00000015070000000b0300000088 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>2,a=>-32,d=>-4,j=>1,l=>2,c=>-4,k=>-17,h=>5,b=>0,g=>3,f=>1,i=>-3} e0200100000a030000002d01000000ef02 e0200100000a030000002d01000000ef02 e0200100000a030000002d01000000ef02 e0200100000a030000002d01000000ef02 - {e=>7,a=>-51,d=>2,j=>0,l=>7,c=>-1,k=>-66,h=>1,b=>5,g=>3,f=>1,i=>-1} cdbd0000000f030000003900000000be07 cdbd0000000f030000003900000000be07 cdbd0000000f030000003900000000be07 cdbd0000000f030000003900000000be07 - {e=>5,a=>73,d=>2,j=>4,l=>7,c=>-3,k=>-107,h=>4,b=>6,g=>4,f=>-2,i=>-4} 49ae000000350400000024040000009507 49ae000000350400000024040000009507 49ae000000350400000024040000009507 49ae000000350400000024040000009507 - {e=>7,a=>-32,d=>0,j=>2,l=>6,c=>1,k=>-119,h=>6,b=>7,g=>0,f=>-4,i=>0} e00f000000270000000006020000008906 e00f000000270000000006020000008906 e00f000000270000000006020000008906 e00f000000270000000006020000008906 - {e=>7,a=>70,d=>1,j=>3,l=>0,c=>2,k=>-78,h=>4,b=>1,g=>4,f=>3,i=>-1} 46510000001f040000003c03000000b200 46510000001f040000003c03000000b200 46510000001f040000003c03000000b200 46510000001f040000003c03000000b200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>5,a=>82,m=>1,d=>-4,j=>4,l=>4,c=>2,k=>75,h=>1,b=>7,g=>3,f=>-2,i=>2} 5217010000350300000011040000004b0c 5217010000350300000011040000004b0c 5217010000350300000011040000004b0c 5217010000350300000011040000004b0c - {e=>1,a=>65,m=>0,d=>-2,j=>6,l=>6,c=>1,k=>10,h=>7,b=>6,g=>6,f=>1,i=>3} 418e01000009060000001f060000000a06 418e01000009060000001f060000000a06 418e01000009060000001f060000000a06 418e01000009060000001f060000000a06 - {e=>1,a=>50,m=>0,d=>-1,j=>4,l=>1,c=>3,k=>-39,h=>4,b=>5,g=>1,f=>3,i=>2} 32dd01000019010000001404000000d901 32dd01000019010000001404000000d901 32dd01000019010000001404000000d901 32dd01000019010000001404000000d901 - {e=>1,a=>-30,m=>-3,d=>-3,j=>4,l=>3,c=>0,k=>-58,h=>2,b=>2,g=>4,f=>-3,i=>-1} e24201000029040000003a04000000c62b e24201000029040000003a04000000c62b e24201000029040000003a04000000c62b e24201000029040000003a04000000c62b - {e=>6,a=>-8,m=>-1,d=>-4,j=>1,l=>7,c=>1,k=>-96,h=>4,b=>1,g=>2,f=>-4,i=>3} f80901000026020000001c01000000a03f f80901000026020000001c01000000a03f f80901000026020000001c01000000a03f f80901000026020000001c01000000a03f = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>7,a=>127,m=>-3,d=>2,j=>1,l=>4,c=>3,k=>113,h=>7,b=>0,g=>3,f=>-2,i=>1} 7f9800000036030000000f01000000712c07000000 7f9800000036030000000f01000000712c07000000 7f9800000036030000000f01000000712c07000000 7f9800000036030000000f01000000712c07000000 - {e=>4,n=>0,a=>91,m=>2,d=>-1,j=>4,l=>6,c=>0,k=>7,h=>3,b=>0,g=>3,f=>2,i=>2} 5bc001000014030000001304000000071600000000 5bc001000014030000001304000000071600000000 5bc001000014030000001304000000071600000000 5bc001000014030000001304000000071600000000 - {e=>3,n=>7,a=>-20,m=>-1,d=>-3,j=>0,l=>1,c=>3,k=>18,h=>1,b=>6,g=>4,f=>2,i=>-2} ec5e01000013040000003100000000123907000000 ec5e01000013040000003100000000123907000000 ec5e01000013040000003100000000123907000000 ec5e01000013040000003100000000123907000000 - {e=>6,n=>4,a=>46,m=>-4,d=>-2,j=>7,l=>6,c=>-3,k=>27,h=>0,b=>6,g=>7,f=>2,i=>3} 2eae010000160700000018070000001b2604000000 2eae010000160700000018070000001b2604000000 2eae010000160700000018070000001b2604000000 2eae010000160700000018070000001b2604000000 - {e=>6,n=>5,a=>47,m=>-1,d=>-4,j=>7,l=>6,c=>-3,k=>-66,h=>0,b=>6,g=>0,f=>-4,i=>0} 2f2e01000026000000000007000000be3e05000000 2f2e01000026000000000007000000be3e05000000 2f2e01000026000000000007000000be3e05000000 2f2e01000026000000000007000000be3e05000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>3,a=>90,m=>-1,d=>-4,j=>1,l=>4,c=>2,k=>65,h=>5,b=>7,g=>5,f=>1,o=>24,i=>2} 5a170100000f050000001501000000413c0300000018 5a170100000f050000001501000000413c0300000018 5a170100000f050000001501000000413c0300000018 5a170100000f050000001501000000413c0300000018 - {e=>2,n=>4,a=>119,m=>3,d=>-2,j=>6,l=>0,c=>-4,k=>51,h=>3,b=>6,g=>7,f=>-4,o=>208,i=>-4} 77a601000022070000002306000000331804000000d0 77a601000022070000002306000000331804000000d0 77a601000022070000002306000000331804000000d0 77a601000022070000002306000000331804000000d0 - {e=>7,n=>2,a=>-108,m=>-3,d=>2,j=>4,l=>7,c=>-1,k=>14,h=>5,b=>7,g=>3,f=>3,o=>186,i=>3} 94bf0000001f030000001d040000000e2f02000000ba 94bf0000001f030000001d040000000e2f02000000ba 94bf0000001f030000001d040000000e2f02000000ba 94bf0000001f030000001d040000000e2f02000000ba - {e=>6,n=>0,a=>-25,m=>-1,d=>1,j=>2,l=>3,c=>-1,k=>-23,h=>6,b=>5,g=>5,f=>2,o=>143,i=>2} e77d00000016050000001602000000e93b000000008f e77d00000016050000001602000000e93b000000008f e77d00000016050000001602000000e93b000000008f e77d00000016050000001602000000e93b000000008f - {e=>3,n=>2,a=>-24,m=>0,d=>-1,j=>4,l=>3,c=>3,k=>57,h=>3,b=>7,g=>0,f=>-2,o=>223,i=>2} e8df01000033000000001304000000390302000000df e8df01000033000000001304000000390302000000df e8df01000033000000001304000000390302000000df e8df01000033000000001304000000390302000000df = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; }; - {a=>-22,b=>5} eaff05000000 eaff05000000 eaff05000000 eaff05000000 - {a=>45,b=>7} 2d0007000000 2d0007000000 2d0007000000 2d0007000000 - {a=>-48,b=>5} d0ff05000000 d0ff05000000 d0ff05000000 d0ff05000000 - {a=>-29,b=>0} e3ff00000000 e3ff00000000 e3ff00000000 e3ff00000000 - {a=>124,b=>1} 7c0001000000 7c0001000000 7c0001000000 7c0001000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-68,b=>0} bcff00000000 bcff00000000 bcff00000000 bcff00000000 - {c=>0,a=>-11,b=>4} f5ff04000000 f5ff04000000 f5ff04000000 f5ff04000000 - {c=>-4,a=>-111,b=>3} 91ff23000000 91ff23000000 91ff23000000 91ff23000000 - {c=>-1,a=>-105,b=>0} 97ff38000000 97ff38000000 97ff38000000 97ff38000000 - {c=>0,a=>-96,b=>4} a0ff04000000 a0ff04000000 a0ff04000000 a0ff04000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-55,b=>7,d=>1} c9ff67000000 c9ff67000000 c9ff67000000 c9ff67000000 - {c=>3,a=>59,b=>3,d=>-2} 3b009b010000 3b009b010000 3b009b010000 3b009b010000 - {c=>-1,a=>-48,b=>3,d=>0} d0ff3b000000 d0ff3b000000 d0ff3b000000 d0ff3b000000 - {c=>-1,a=>-29,b=>6,d=>3} e3fffe000000 e3fffe000000 e3fffe000000 e3fffe000000 - {c=>-3,a=>32,b=>0,d=>1} 200068000000 200068000000 200068000000 200068000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-3,a=>20,b=>1,d=>-3} 14006901000004 14006901000004 14006901000004 14006901000004 - {e=>3,c=>2,a=>-60,b=>0,d=>-2} c4ff9001000003 c4ff9001000003 c4ff9001000003 c4ff9001000003 - {e=>5,c=>-3,a=>-102,b=>3,d=>-4} 9aff2b01000005 9aff2b01000005 9aff2b01000005 9aff2b01000005 - {e=>3,c=>-4,a=>5,b=>0,d=>1} 05006000000003 05006000000003 05006000000003 05006000000003 - {e=>4,c=>0,a=>-80,b=>6,d=>0} b0ff0600000004 b0ff0600000004 b0ff0600000004 b0ff0600000004 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>5,c=>-1,a=>-102,b=>0,d=>1,f=>0} 9aff7800000005 9aff7800000005 9aff7800000005 9aff7800000005 - {e=>4,c=>2,a=>7,b=>4,d=>-4,f=>-1} 0700140100003c 0700140100003c 0700140100003c 0700140100003c - {e=>4,c=>-1,a=>99,b=>1,d=>1,f=>-1} 6300790000003c 6300790000003c 6300790000003c 6300790000003c - {e=>3,c=>-2,a=>-105,b=>7,d=>-4,f=>-3} 97ff370100002b 97ff370100002b 97ff370100002b 97ff370100002b - {e=>6,c=>-2,a=>102,b=>7,d=>-4,f=>-1} 6600370100003e 6600370100003e 6600370100003e 6600370100003e = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>4,c=>0,a=>106,g=>0,b=>1,d=>-3,f=>1} 6a00410100000c00000000 6a00410100000c00000000 6a00410100000c00000000 6a00410100000c00000000 - {e=>6,c=>-4,a=>-47,g=>4,b=>0,d=>2,f=>-1} d1ffa00000003e04000000 d1ffa00000003e04000000 d1ffa00000003e04000000 d1ffa00000003e04000000 - {e=>2,c=>0,a=>28,g=>2,b=>3,d=>-4,f=>-1} 1c00030100003a02000000 1c00030100003a02000000 1c00030100003a02000000 1c00030100003a02000000 - {e=>2,c=>2,a=>8,g=>0,b=>4,d=>-3,f=>1} 0800540100000a00000000 0800540100000a00000000 0800540100000a00000000 0800540100000a00000000 - {e=>7,c=>1,a=>-41,g=>1,b=>6,d=>-3,f=>-3} d7ff4e0100002f01000000 d7ff4e0100002f01000000 d7ff4e0100002f01000000 d7ff4e0100002f01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>2,c=>2,a=>57,g=>4,b=>4,d=>-3,f=>-3} 3900540100002a04000000 3900540100002a04000000 3900540100002a04000000 3900540100002a04000000 - {e=>5,c=>-1,a=>108,g=>7,b=>2,d=>-1,f=>-3} 6c00fa0100002d07000000 6c00fa0100002d07000000 6c00fa0100002d07000000 6c00fa0100002d07000000 - {e=>3,c=>-3,a=>59,g=>1,b=>5,d=>1,f=>-2} 3b006d0000003301000000 3b006d0000003301000000 3b006d0000003301000000 3b006d0000003301000000 - {e=>3,c=>-2,a=>82,g=>7,b=>1,d=>-1,f=>-1} 5200f10100003b07000000 5200f10100003b07000000 5200f10100003b07000000 5200f10100003b07000000 - {e=>1,c=>-1,a=>12,g=>2,b=>6,d=>3,f=>-1} 0c00fe0000003902000000 0c00fe0000003902000000 0c00fe0000003902000000 0c00fe0000003902000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>50,d=>-3,c=>-2,h=>0,b=>7,g=>4,f=>-2} 320077010000310400000000 320077010000310400000000 320077010000310400000000 320077010000310400000000 - {e=>5,a=>40,d=>-3,c=>-4,h=>2,b=>3,g=>0,f=>3} 2800630100001d0000000002 2800630100001d0000000002 2800630100001d0000000002 2800630100001d0000000002 - {e=>6,a=>21,d=>-1,c=>3,h=>2,b=>6,g=>7,f=>-1} 1500de0100003e0700000002 1500de0100003e0700000002 1500de0100003e0700000002 1500de0100003e0700000002 - {e=>0,a=>-119,d=>0,c=>-1,h=>6,b=>1,g=>7,f=>3} 89ff39000000180700000006 89ff39000000180700000006 89ff39000000180700000006 89ff39000000180700000006 - {e=>4,a=>-45,d=>2,c=>1,h=>2,b=>7,g=>7,f=>0} d3ff8f000000040700000002 d3ff8f000000040700000002 d3ff8f000000040700000002 d3ff8f000000040700000002 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>95,d=>0,c=>-2,h=>1,b=>4,g=>3,f=>0,i=>-1} 5f0034000000020300000039 5f0034000000020300000039 5f0034000000020300000039 5f0034000000020300000039 - {e=>4,a=>34,d=>0,c=>3,h=>3,b=>2,g=>1,f=>0,i=>-1} 22001a00000004010000003b 22001a00000004010000003b 22001a00000004010000003b 22001a00000004010000003b - {e=>7,a=>40,d=>-2,c=>-2,h=>0,b=>3,g=>1,f=>2,i=>1} 2800b3010000170100000008 2800b3010000170100000008 2800b3010000170100000008 2800b3010000170100000008 - {e=>2,a=>-13,d=>-3,c=>1,h=>1,b=>0,g=>5,f=>3,i=>-2} f3ff480100001a0500000031 f3ff480100001a0500000031 f3ff480100001a0500000031 f3ff480100001a0500000031 - {e=>6,a=>-50,d=>0,c=>1,h=>6,b=>6,g=>5,f=>-3,i=>-2} ceff0e0000002e0500000036 ceff0e0000002e0500000036 ceff0e0000002e0500000036 ceff0e0000002e0500000036 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-78,d=>-2,j=>4,c=>-1,h=>1,b=>3,g=>6,f=>-3,i=>-2} b2ffbb01000028060000003104000000 b2ffbb01000028060000003104000000 b2ffbb01000028060000003104000000 b2ffbb01000028060000003104000000 - {e=>7,a=>76,d=>-2,j=>1,c=>-4,h=>5,b=>6,g=>3,f=>-4,i=>2} 4c00a601000027030000001501000000 4c00a601000027030000001501000000 4c00a601000027030000001501000000 4c00a601000027030000001501000000 - {e=>7,a=>88,d=>0,j=>0,c=>1,h=>1,b=>1,g=>1,f=>1,i=>2} 5800090000000f010000001100000000 5800090000000f010000001100000000 5800090000000f010000001100000000 5800090000000f010000001100000000 - {e=>7,a=>-27,d=>0,j=>7,c=>-1,h=>1,b=>0,g=>0,f=>-4,i=>-1} e5ff3800000027000000003907000000 e5ff3800000027000000003907000000 e5ff3800000027000000003907000000 e5ff3800000027000000003907000000 - {e=>1,a=>-99,d=>-3,j=>3,c=>1,h=>5,b=>1,g=>6,f=>3,i=>3} 9dff4901000019060000001d03000000 9dff4901000019060000001d03000000 9dff4901000019060000001d03000000 9dff4901000019060000001d03000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>2,a=>4,d=>1,j=>5,c=>-3,k=>75,h=>5,b=>0,g=>2,f=>3,i=>-1} 0400680000001a020000003d050000004b 0400680000001a020000003d050000004b 0400680000001a020000003d050000004b 0400680000001a020000003d050000004b - {e=>5,a=>7,d=>-2,j=>1,c=>0,k=>19,h=>4,b=>6,g=>6,f=>3,i=>1} 0700860100001d060000000c0100000013 0700860100001d060000000c0100000013 0700860100001d060000000c0100000013 0700860100001d060000000c0100000013 - {e=>2,a=>57,d=>1,j=>0,c=>1,k=>89,h=>1,b=>3,g=>6,f=>3,i=>1} 39004b0000001a06000000090000000059 39004b0000001a06000000090000000059 39004b0000001a06000000090000000059 39004b0000001a06000000090000000059 - {e=>4,a=>7,d=>0,j=>2,c=>-1,k=>-8,h=>3,b=>7,g=>4,f=>-1,i=>-4} 07003f0000003c040000002302000000f8 07003f0000003c040000002302000000f8 07003f0000003c040000002302000000f8 07003f0000003c040000002302000000f8 - {e=>5,a=>105,d=>3,j=>1,c=>3,k=>119,h=>7,b=>7,g=>0,f=>0,i=>-2} 6900df0000000500000000370100000077 6900df0000000500000000370100000077 6900df0000000500000000370100000077 6900df0000000500000000370100000077 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>3,a=>-68,d=>3,j=>1,l=>0,c=>-3,k=>40,h=>5,b=>6,g=>0,f=>0,i=>2} bcffee000000030000000015010000002800 bcffee000000030000000015010000002800 bcffee000000030000000015010000002800 bcffee000000030000000015010000002800 - {e=>6,a=>84,d=>-4,j=>4,l=>0,c=>1,k=>100,h=>2,b=>1,g=>6,f=>3,i=>2} 5400090100001e0600000012040000006400 5400090100001e0600000012040000006400 5400090100001e0600000012040000006400 5400090100001e0600000012040000006400 - {e=>2,a=>-8,d=>-4,j=>2,l=>4,c=>-2,k=>-68,h=>2,b=>6,g=>5,f=>-1,i=>-1} f8ff360100003a050000003a02000000bc04 f8ff360100003a050000003a02000000bc04 f8ff360100003a050000003a02000000bc04 f8ff360100003a050000003a02000000bc04 - {e=>0,a=>-64,d=>3,j=>4,l=>1,c=>-4,k=>-2,h=>3,b=>1,g=>4,f=>-3,i=>-3} c0ffe100000028040000002b04000000fe01 c0ffe100000028040000002b04000000fe01 c0ffe100000028040000002b04000000fe01 c0ffe100000028040000002b04000000fe01 - {e=>5,a=>64,d=>-4,j=>6,l=>7,c=>0,k=>13,h=>2,b=>4,g=>7,f=>-4,i=>3} 40000401000025070000001a060000000d07 40000401000025070000001a060000000d07 40000401000025070000001a060000000d07 40000401000025070000001a060000000d07 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>2,a=>-53,m=>2,d=>0,j=>4,l=>6,c=>0,k=>-28,h=>4,b=>1,g=>0,f=>0,i=>-1} cbff0100000002000000003c04000000e416 cbff0100000002000000003c04000000e416 cbff0100000002000000003c04000000e416 cbff0100000002000000003c04000000e416 - {e=>2,a=>-58,m=>-4,d=>-3,j=>7,l=>1,c=>1,k=>-110,h=>4,b=>2,g=>5,f=>-2,i=>1} c6ff4a01000032050000000c070000009221 c6ff4a01000032050000000c070000009221 c6ff4a01000032050000000c070000009221 c6ff4a01000032050000000c070000009221 - {e=>2,a=>-95,m=>1,d=>2,j=>3,l=>1,c=>2,k=>47,h=>7,b=>5,g=>2,f=>3,i=>0} a1ff950000001a0200000007030000002f09 a1ff950000001a0200000007030000002f09 a1ff950000001a0200000007030000002f09 a1ff950000001a0200000007030000002f09 - {e=>2,a=>86,m=>0,d=>-1,j=>3,l=>0,c=>3,k=>-1,h=>4,b=>3,g=>1,f=>0,i=>-3} 5600db01000002010000002c03000000ff00 5600db01000002010000002c03000000ff00 5600db01000002010000002c03000000ff00 5600db01000002010000002c03000000ff00 - {e=>5,a=>31,m=>-3,d=>1,j=>4,l=>5,c=>1,k=>1,h=>6,b=>1,g=>2,f=>2,i=>-4} 1f004900000015020000002604000000012d 1f004900000015020000002604000000012d 1f004900000015020000002604000000012d 1f004900000015020000002604000000012d = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>4,n=>3,a=>-119,m=>-2,d=>0,j=>0,l=>0,c=>3,k=>127,h=>3,b=>3,g=>0,f=>-3,i=>-3} 89ff1b0000002c000000002b000000007f3003000000 89ff1b0000002c000000002b000000007f3003000000 89ff1b0000002c000000002b000000007f3003000000 89ff1b0000002c000000002b000000007f3003000000 - {e=>2,n=>3,a=>47,m=>-4,d=>1,j=>6,l=>7,c=>1,k=>-126,h=>6,b=>1,g=>2,f=>-2,i=>-4} 2f004900000032020000002606000000822703000000 2f004900000032020000002606000000822703000000 2f004900000032020000002606000000822703000000 2f004900000032020000002606000000822703000000 - {e=>6,n=>4,a=>-16,m=>3,d=>-4,j=>3,l=>3,c=>2,k=>-100,h=>4,b=>4,g=>3,f=>-1,i=>3} f0ff140100003e030000001c030000009c1b04000000 f0ff140100003e030000001c030000009c1b04000000 f0ff140100003e030000001c030000009c1b04000000 f0ff140100003e030000001c030000009c1b04000000 - {e=>0,n=>3,a=>99,m=>-3,d=>-4,j=>4,l=>1,c=>-1,k=>-77,h=>3,b=>1,g=>0,f=>-2,i=>3} 63003901000030000000001b04000000b32903000000 63003901000030000000001b04000000b32903000000 63003901000030000000001b04000000b32903000000 63003901000030000000001b04000000b32903000000 - {e=>5,n=>0,a=>-106,m=>-2,d=>-4,j=>7,l=>7,c=>-3,k=>-97,h=>3,b=>3,g=>2,f=>1,i=>-3} 96ff2b0100000d020000002b070000009f3700000000 96ff2b0100000d020000002b070000009f3700000000 96ff2b0100000d020000002b070000009f3700000000 96ff2b0100000d020000002b070000009f3700000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>3,n=>7,a=>-113,m=>1,d=>-3,j=>5,l=>0,c=>1,k=>2,h=>6,b=>0,g=>5,f=>-2,o=>22,i=>0} 8fff480100003305000000060500000002080700000016 8fff480100003305000000060500000002080700000016 8fff480100003305000000060500000002080700000016 8fff480100003305000000060500000002080700000016 - {e=>6,n=>7,a=>-82,m=>-2,d=>-3,j=>7,l=>3,c=>-1,k=>-116,h=>6,b=>1,g=>5,f=>2,o=>227,i=>-2} aeff79010000160500000036070000008c3307000000e3 aeff79010000160500000036070000008c3307000000e3 aeff79010000160500000036070000008c3307000000e3 aeff79010000160500000036070000008c3307000000e3 - {e=>1,n=>4,a=>-117,m=>-2,d=>-2,j=>2,l=>5,c=>1,k=>-17,h=>3,b=>6,g=>3,f=>-4,o=>238,i=>-2} 8bff8e01000021030000003302000000ef3504000000ee 8bff8e01000021030000003302000000ef3504000000ee 8bff8e01000021030000003302000000ef3504000000ee 8bff8e01000021030000003302000000ef3504000000ee - {e=>4,n=>6,a=>62,m=>-2,d=>3,j=>0,l=>4,c=>2,k=>119,h=>2,b=>7,g=>6,f=>0,o=>141,i=>-4} 3e00d7000000040600000022000000007734060000008d 3e00d7000000040600000022000000007734060000008d 3e00d7000000040600000022000000007734060000008d 3e00d7000000040600000022000000007734060000008d - {e=>0,n=>5,a=>59,m=>0,d=>1,j=>3,l=>5,c=>-2,k=>-64,h=>0,b=>7,g=>0,f=>-4,o=>130,i=>3} 3b007700000020000000001803000000c0050500000082 3b007700000020000000001803000000c0050500000082 3b007700000020000000001803000000c0050500000082 3b007700000020000000001803000000c0050500000082 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; }; - {a=>-25,b=>5} e7ffffff05000000 e7ffffff05000000 e7ffffff05000000 e7ffffff05000000 - {a=>10,b=>1} 0a00000001000000 0a00000001000000 0a00000001000000 0a00000001000000 - {a=>8,b=>7} 0800000007000000 0800000007000000 0800000007000000 0800000007000000 - {a=>-93,b=>6} a3ffffff06000000 a3ffffff06000000 a3ffffff06000000 a3ffffff06000000 - {a=>-67,b=>1} bdffffff01000000 bdffffff01000000 bdffffff01000000 bdffffff01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-12,b=>7} f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 - {c=>-4,a=>99,b=>7} 6300000027000000 6300000027000000 6300000027000000 6300000027000000 - {c=>1,a=>18,b=>7} 120000000f000000 120000000f000000 120000000f000000 120000000f000000 - {c=>2,a=>43,b=>7} 2b00000017000000 2b00000017000000 2b00000017000000 2b00000017000000 - {c=>-4,a=>34,b=>0} 2200000020000000 2200000020000000 2200000020000000 2200000020000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>26,b=>4,d=>1} 1a00000074000000 1a00000074000000 1a00000074000000 1a00000074000000 - {c=>-3,a=>42,b=>5,d=>0} 2a0000002d000000 2a0000002d000000 2a0000002d000000 2a0000002d000000 - {c=>3,a=>115,b=>3,d=>-4} 730000001b010000 730000001b010000 730000001b010000 730000001b010000 - {c=>1,a=>21,b=>4,d=>-2} 150000008c010000 150000008c010000 150000008c010000 150000008c010000 - {c=>1,a=>124,b=>0,d=>-2} 7c00000088010000 7c00000088010000 7c00000088010000 7c00000088010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-3,a=>-59,b=>7,d=>-3} c5ffffff6f01000001 c5ffffff6f01000001 c5ffffff6f01000001 c5ffffff6f01000001 - {e=>5,c=>3,a=>96,b=>7,d=>1} 600000005f00000005 600000005f00000005 600000005f00000005 600000005f00000005 - {e=>6,c=>-3,a=>97,b=>1,d=>1} 610000006900000006 610000006900000006 610000006900000006 610000006900000006 - {e=>0,c=>-3,a=>45,b=>5,d=>-2} 2d000000ad01000000 2d000000ad01000000 2d000000ad01000000 2d000000ad01000000 - {e=>5,c=>-4,a=>-125,b=>0,d=>1} 83ffffff6000000005 83ffffff6000000005 83ffffff6000000005 83ffffff6000000005 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>3,a=>-75,b=>2,d=>-3,f=>0} b5ffffff5a01000006 b5ffffff5a01000006 b5ffffff5a01000006 b5ffffff5a01000006 - {e=>5,c=>-4,a=>-82,b=>3,d=>3,f=>1} aeffffffe30000000d aeffffffe30000000d aeffffffe30000000d aeffffffe30000000d - {e=>7,c=>1,a=>53,b=>4,d=>-2,f=>0} 350000008c01000007 350000008c01000007 350000008c01000007 350000008c01000007 - {e=>1,c=>2,a=>126,b=>6,d=>-3,f=>0} 7e0000005601000001 7e0000005601000001 7e0000005601000001 7e0000005601000001 - {e=>3,c=>0,a=>11,b=>4,d=>-1,f=>-1} 0b000000c40100003b 0b000000c40100003b 0b000000c40100003b 0b000000c40100003b = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>2,c=>-1,a=>-28,g=>6,b=>6,d=>1,f=>-2} e4ffffff7e0000003206000000 e4ffffff7e0000003206000000 e4ffffff7e0000003206000000 e4ffffff7e0000003206000000 - {e=>1,c=>2,a=>-122,g=>5,b=>3,d=>2,f=>-2} 86ffffff930000003105000000 86ffffff930000003105000000 86ffffff930000003105000000 86ffffff930000003105000000 - {e=>7,c=>-2,a=>-4,g=>7,b=>7,d=>1,f=>3} fcffffff770000001f07000000 fcffffff770000001f07000000 fcffffff770000001f07000000 fcffffff770000001f07000000 - {e=>3,c=>-1,a=>-107,g=>6,b=>5,d=>-4,f=>-3} 95ffffff3d0100002b06000000 95ffffff3d0100002b06000000 95ffffff3d0100002b06000000 95ffffff3d0100002b06000000 - {e=>2,c=>1,a=>-115,g=>0,b=>7,d=>2,f=>0} 8dffffff8f0000000200000000 8dffffff8f0000000200000000 8dffffff8f0000000200000000 8dffffff8f0000000200000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>4,c=>1,a=>-92,g=>6,b=>5,d=>-4,f=>-4} a4ffffff0d0100002406000000 a4ffffff0d0100002406000000 a4ffffff0d0100002406000000 a4ffffff0d0100002406000000 - {e=>3,c=>3,a=>112,g=>1,b=>4,d=>0,f=>-3} 700000001c0000002b01000000 700000001c0000002b01000000 700000001c0000002b01000000 700000001c0000002b01000000 - {e=>2,c=>1,a=>-90,g=>7,b=>2,d=>1,f=>0} a6ffffff4a0000000207000000 a6ffffff4a0000000207000000 a6ffffff4a0000000207000000 a6ffffff4a0000000207000000 - {e=>1,c=>3,a=>20,g=>3,b=>6,d=>-1,f=>-4} 14000000de0100002103000000 14000000de0100002103000000 14000000de0100002103000000 14000000de0100002103000000 - {e=>0,c=>1,a=>-18,g=>4,b=>0,d=>-2,f=>-2} eeffffff880100003004000000 eeffffff880100003004000000 eeffffff880100003004000000 eeffffff880100003004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>38,d=>-1,c=>-1,h=>0,b=>7,g=>7,f=>3} 26000000ff0100001e0700000000 26000000ff0100001e0700000000 26000000ff0100001e0700000000 26000000ff0100001e0700000000 - {e=>6,a=>31,d=>3,c=>2,h=>1,b=>2,g=>0,f=>3} 1f000000d20000001e0000000001 1f000000d20000001e0000000001 1f000000d20000001e0000000001 1f000000d20000001e0000000001 - {e=>7,a=>-56,d=>-4,c=>0,h=>5,b=>1,g=>2,f=>-4} c8ffffff01010000270200000005 c8ffffff01010000270200000005 c8ffffff01010000270200000005 c8ffffff01010000270200000005 - {e=>7,a=>119,d=>2,c=>-4,h=>5,b=>7,g=>0,f=>-3} 77000000a70000002f0000000005 77000000a70000002f0000000005 77000000a70000002f0000000005 77000000a70000002f0000000005 - {e=>7,a=>-122,d=>3,c=>3,h=>6,b=>2,g=>7,f=>2} 86ffffffda000000170700000006 86ffffffda000000170700000006 86ffffffda000000170700000006 86ffffffda000000170700000006 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>0,a=>66,d=>-4,c=>-4,h=>6,b=>2,g=>6,f=>3,i=>2} 4200000022010000180600000016 4200000022010000180600000016 4200000022010000180600000016 4200000022010000180600000016 - {e=>2,a=>19,d=>-2,c=>3,h=>4,b=>6,g=>5,f=>2,i=>3} 130000009e01000012050000001c 130000009e01000012050000001c 130000009e01000012050000001c 130000009e01000012050000001c - {e=>1,a=>-41,d=>-3,c=>-3,h=>6,b=>5,g=>0,f=>-3,i=>-2} d7ffffff6d010000290000000036 d7ffffff6d010000290000000036 d7ffffff6d010000290000000036 d7ffffff6d010000290000000036 - {e=>3,a=>-25,d=>1,c=>0,h=>2,b=>2,g=>6,f=>2,i=>-3} e7ffffff4200000013060000002a e7ffffff4200000013060000002a e7ffffff4200000013060000002a e7ffffff4200000013060000002a - {e=>3,a=>77,d=>3,c=>-1,h=>3,b=>5,g=>6,f=>-1,i=>3} 4d000000fd0000003b060000001b 4d000000fd0000003b060000001b 4d000000fd0000003b060000001b 4d000000fd0000003b060000001b = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>7,a=>-49,d=>3,j=>4,c=>1,h=>6,b=>5,g=>7,f=>-3,i=>-2} cfffffffcd0000002f070000003604000000 cfffffffcd0000002f070000003604000000 cfffffffcd0000002f070000003604000000 cfffffffcd0000002f070000003604000000 - {e=>4,a=>-24,d=>-3,j=>3,c=>3,h=>3,b=>6,g=>6,f=>3,i=>1} e8ffffff5e0100001c060000000b03000000 e8ffffff5e0100001c060000000b03000000 e8ffffff5e0100001c060000000b03000000 e8ffffff5e0100001c060000000b03000000 - {e=>5,a=>-77,d=>1,j=>7,c=>-3,h=>0,b=>6,g=>1,f=>2,i=>1} b3ffffff6e00000015010000000807000000 b3ffffff6e00000015010000000807000000 b3ffffff6e00000015010000000807000000 b3ffffff6e00000015010000000807000000 - {e=>5,a=>80,d=>3,j=>5,c=>-3,h=>1,b=>6,g=>7,f=>-4,i=>3} 50000000ee00000025070000001905000000 50000000ee00000025070000001905000000 50000000ee00000025070000001905000000 50000000ee00000025070000001905000000 - {e=>3,a=>33,d=>-4,j=>4,c=>-1,h=>5,b=>4,g=>2,f=>3,i=>-2} 210000003c0100001b020000003504000000 210000003c0100001b020000003504000000 210000003c0100001b020000003504000000 210000003c0100001b020000003504000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>1,a=>-125,d=>-4,j=>6,c=>-1,k=>-20,h=>4,b=>1,g=>5,f=>-1,i=>1} 83ffffff3901000039050000000c06000000ec 83ffffff3901000039050000000c06000000ec 83ffffff3901000039050000000c06000000ec 83ffffff3901000039050000000c06000000ec - {e=>6,a=>123,d=>0,j=>3,c=>1,k=>-127,h=>6,b=>5,g=>2,f=>-2,i=>-2} 7b0000000d0000003602000000360300000081 7b0000000d0000003602000000360300000081 7b0000000d0000003602000000360300000081 7b0000000d0000003602000000360300000081 - {e=>3,a=>80,d=>-3,j=>6,c=>3,k=>-21,h=>1,b=>7,g=>5,f=>-2,i=>-1} 500000005f01000033050000003906000000eb 500000005f01000033050000003906000000eb 500000005f01000033050000003906000000eb 500000005f01000033050000003906000000eb - {e=>6,a=>85,d=>-2,j=>5,c=>-3,k=>-38,h=>1,b=>5,g=>2,f=>-4,i=>-1} 55000000ad01000026020000003905000000da 55000000ad01000026020000003905000000da 55000000ad01000026020000003905000000da 55000000ad01000026020000003905000000da - {e=>6,a=>-9,d=>-1,j=>0,c=>1,k=>20,h=>1,b=>6,g=>3,f=>-3,i=>-1} f7ffffffce0100002e03000000390000000014 f7ffffffce0100002e03000000390000000014 f7ffffffce0100002e03000000390000000014 f7ffffffce0100002e03000000390000000014 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>5,a=>42,d=>2,j=>4,l=>7,c=>1,k=>-45,h=>5,b=>5,g=>3,f=>2,i=>1} 2a0000008d00000015030000000d04000000d307 2a0000008d00000015030000000d04000000d307 2a0000008d00000015030000000d04000000d307 2a0000008d00000015030000000d04000000d307 - {e=>7,a=>-123,d=>2,j=>5,l=>5,c=>3,k=>-51,h=>4,b=>7,g=>5,f=>-3,i=>0} 85ffffff9f0000002f050000000405000000cd05 85ffffff9f0000002f050000000405000000cd05 85ffffff9f0000002f050000000405000000cd05 85ffffff9f0000002f050000000405000000cd05 - {e=>0,a=>0,d=>-3,j=>0,l=>2,c=>3,k=>-69,h=>4,b=>4,g=>6,f=>-1,i=>-4} 000000005c01000038060000002400000000bb02 000000005c01000038060000002400000000bb02 000000005c01000038060000002400000000bb02 000000005c01000038060000002400000000bb02 - {e=>0,a=>17,d=>-2,j=>3,l=>2,c=>-4,k=>-21,h=>0,b=>6,g=>7,f=>-1,i=>2} 11000000a601000038070000001003000000eb02 11000000a601000038070000001003000000eb02 11000000a601000038070000001003000000eb02 11000000a601000038070000001003000000eb02 - {e=>2,a=>-122,d=>2,j=>5,l=>6,c=>0,k=>-75,h=>4,b=>7,g=>2,f=>-3,i=>0} 86ffffff870000002a020000000405000000b506 86ffffff870000002a020000000405000000b506 86ffffff870000002a020000000405000000b506 86ffffff870000002a020000000405000000b506 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-47,m=>-1,d=>-2,j=>0,l=>1,c=>2,k=>8,h=>1,b=>5,g=>4,f=>0,i=>-2} d1ffffff95010000040400000031000000000839 d1ffffff95010000040400000031000000000839 d1ffffff95010000040400000031000000000839 d1ffffff95010000040400000031000000000839 - {e=>4,a=>96,m=>1,d=>-1,j=>2,l=>1,c=>-4,k=>62,h=>0,b=>1,g=>6,f=>0,i=>3} 60000000e1010000040600000018020000003e09 60000000e1010000040600000018020000003e09 60000000e1010000040600000018020000003e09 60000000e1010000040600000018020000003e09 - {e=>7,a=>119,m=>-3,d=>1,j=>2,l=>5,c=>0,k=>22,h=>2,b=>6,g=>1,f=>-4,i=>2} 770000004600000027010000001202000000162d 770000004600000027010000001202000000162d 770000004600000027010000001202000000162d 770000004600000027010000001202000000162d - {e=>5,a=>105,m=>-4,d=>-4,j=>6,l=>5,c=>-3,k=>5,h=>1,b=>4,g=>2,f=>1,i=>0} 690000002c0100000d0200000001060000000525 690000002c0100000d0200000001060000000525 690000002c0100000d0200000001060000000525 690000002c0100000d0200000001060000000525 - {e=>3,a=>23,m=>1,d=>-4,j=>1,l=>2,c=>1,k=>-75,h=>5,b=>4,g=>3,f=>0,i=>3} 170000000c01000003030000001d01000000b50a 170000000c01000003030000001d01000000b50a 170000000c01000003030000001d01000000b50a 170000000c01000003030000001d01000000b50a = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>3,a=>-113,m=>0,d=>1,j=>4,l=>0,c=>-1,k=>-9,h=>4,b=>0,g=>0,f=>2,i=>-4} 8fffffff7800000015000000002404000000f70003000000 8fffffff7800000015000000002404000000f70003000000 8fffffff7800000015000000002404000000f70003000000 8fffffff7800000015000000002404000000f70003000000 - {e=>0,n=>4,a=>64,m=>2,d=>-3,j=>4,l=>3,c=>-3,k=>-98,h=>5,b=>3,g=>6,f=>-3,i=>-4} 400000006b010000280600000025040000009e1304000000 400000006b010000280600000025040000009e1304000000 400000006b010000280600000025040000009e1304000000 400000006b010000280600000025040000009e1304000000 - {e=>1,n=>7,a=>-94,m=>-4,d=>3,j=>1,l=>2,c=>2,k=>-115,h=>0,b=>0,g=>6,f=>2,i=>2} a2ffffffd0000000110600000010010000008d2207000000 a2ffffffd0000000110600000010010000008d2207000000 a2ffffffd0000000110600000010010000008d2207000000 a2ffffffd0000000110600000010010000008d2207000000 - {e=>3,n=>0,a=>-84,m=>0,d=>-2,j=>4,l=>2,c=>-1,k=>-57,h=>4,b=>5,g=>4,f=>-1,i=>1} acffffffbd0100003b040000000c04000000c70200000000 acffffffbd0100003b040000000c04000000c70200000000 acffffffbd0100003b040000000c04000000c70200000000 acffffffbd0100003b040000000c04000000c70200000000 - {e=>6,n=>3,a=>-84,m=>0,d=>-2,j=>6,l=>5,c=>-4,k=>45,h=>4,b=>0,g=>3,f=>-1,i=>-3} acffffffa00100003e030000002c060000002d0503000000 acffffffa00100003e030000002c060000002d0503000000 acffffffa00100003e030000002c060000002d0503000000 acffffffa00100003e030000002c060000002d0503000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>1,a=>73,m=>-2,d=>1,j=>5,l=>1,c=>-4,k=>34,h=>0,b=>2,g=>0,f=>-2,o=>136,i=>0} 49000000620000003200000000000500000022310100000088 49000000620000003200000000000500000022310100000088 49000000620000003200000000000500000022310100000088 49000000620000003200000000000500000022310100000088 - {e=>7,n=>0,a=>-14,m=>-2,d=>2,j=>2,l=>3,c=>-2,k=>-24,h=>3,b=>6,g=>5,f=>3,o=>72,i=>1} f2ffffffb60000001f050000000b02000000e8330000000048 f2ffffffb60000001f050000000b02000000e8330000000048 f2ffffffb60000001f050000000b02000000e8330000000048 f2ffffffb60000001f050000000b02000000e8330000000048 - {e=>7,n=>0,a=>-32,m=>0,d=>3,j=>6,l=>3,c=>-2,k=>-5,h=>3,b=>6,g=>6,f=>1,o=>139,i=>-2} e0fffffff60000000f060000003306000000fb03000000008b e0fffffff60000000f060000003306000000fb03000000008b e0fffffff60000000f060000003306000000fb03000000008b e0fffffff60000000f060000003306000000fb03000000008b - {e=>7,n=>0,a=>-69,m=>2,d=>2,j=>2,l=>1,c=>0,k=>118,h=>3,b=>5,g=>4,f=>-4,o=>156,i=>2} bbffffff85000000270400000013020000007611000000009c bbffffff85000000270400000013020000007611000000009c bbffffff85000000270400000013020000007611000000009c bbffffff85000000270400000013020000007611000000009c - {e=>0,n=>4,a=>-23,m=>-1,d=>-2,j=>3,l=>7,c=>0,k=>44,h=>7,b=>0,g=>5,f=>0,o=>146,i=>1} e9ffffff8001000000050000000f030000002c3f0400000092 e9ffffff8001000000050000000f030000002c3f0400000092 e9ffffff8001000000050000000f030000002c3f0400000092 e9ffffff8001000000050000000f030000002c3f0400000092 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; }; - {a=>116,b=>0} 7400000000000000 7400000000000000 7400000000000000 7400000000000000 - {a=>-38,b=>2} daffffff02000000 daffffff02000000 daffffff02000000 daffffff02000000 - {a=>-116,b=>0} 8cffffff00000000 8cffffff00000000 8cffffff00000000 8cffffff00000000 - {a=>-9,b=>4} f7ffffff04000000 f7ffffff04000000 f7ffffff04000000 f7ffffff04000000 - {a=>-84,b=>1} acffffff01000000 acffffff01000000 acffffff01000000 acffffff01000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; }; - {c=>2,a=>-53,b=>0} cbffffff10000000 cbffffff10000000 cbffffff10000000 cbffffff10000000 - {c=>-2,a=>54,b=>3} 3600000033000000 3600000033000000 3600000033000000 3600000033000000 - {c=>-2,a=>90,b=>7} 5a00000037000000 5a00000037000000 5a00000037000000 5a00000037000000 - {c=>-1,a=>16,b=>0} 1000000038000000 1000000038000000 1000000038000000 1000000038000000 - {c=>2,a=>66,b=>6} 4200000016000000 4200000016000000 4200000016000000 4200000016000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>101,b=>3,d=>-4} 650000000b010000 650000000b010000 650000000b010000 650000000b010000 - {c=>0,a=>-29,b=>2,d=>-4} e3ffffff02010000 e3ffffff02010000 e3ffffff02010000 e3ffffff02010000 - {c=>-2,a=>-116,b=>7,d=>2} 8cffffffb7000000 8cffffffb7000000 8cffffffb7000000 8cffffffb7000000 - {c=>-4,a=>-103,b=>1,d=>-2} 99ffffffa1010000 99ffffffa1010000 99ffffffa1010000 99ffffffa1010000 - {c=>-4,a=>90,b=>4,d=>0} 5a00000024000000 5a00000024000000 5a00000024000000 5a00000024000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>6,c=>-3,a=>-61,b=>2,d=>-2} c3ffffffaa01000006 c3ffffffaa01000006 c3ffffffaa01000006 c3ffffffaa01000006 - {e=>4,c=>1,a=>111,b=>2,d=>3} 6f000000ca00000004 6f000000ca00000004 6f000000ca00000004 6f000000ca00000004 - {e=>4,c=>0,a=>-27,b=>3,d=>-2} e5ffffff8301000004 e5ffffff8301000004 e5ffffff8301000004 e5ffffff8301000004 - {e=>0,c=>0,a=>123,b=>5,d=>-2} 7b0000008501000000 7b0000008501000000 7b0000008501000000 7b0000008501000000 - {e=>2,c=>0,a=>92,b=>7,d=>-4} 5c0000000701000002 5c0000000701000002 5c0000000701000002 5c0000000701000002 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>3,c=>0,a=>-105,b=>0,d=>2,f=>0} 97ffffff8000000003 97ffffff8000000003 97ffffff8000000003 97ffffff8000000003 - {e=>0,c=>1,a=>-22,b=>2,d=>-1,f=>-2} eaffffffca01000030 eaffffffca01000030 eaffffffca01000030 eaffffffca01000030 - {e=>1,c=>-3,a=>42,b=>2,d=>-1,f=>-1} 2a000000ea01000039 2a000000ea01000039 2a000000ea01000039 2a000000ea01000039 - {e=>6,c=>0,a=>-26,b=>6,d=>-1,f=>-3} e6ffffffc60100002e e6ffffffc60100002e e6ffffffc60100002e e6ffffffc60100002e - {e=>2,c=>2,a=>65,b=>0,d=>0,f=>0} 410000001000000002 410000001000000002 410000001000000002 410000001000000002 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>0,c=>-2,a=>40,g=>2,b=>5,d=>2,f=>-4} 28000000b50000002002000000 28000000b50000002002000000 28000000b50000002002000000 28000000b50000002002000000 - {e=>7,c=>3,a=>118,g=>5,b=>4,d=>-3,f=>-3} 760000005c0100002f05000000 760000005c0100002f05000000 760000005c0100002f05000000 760000005c0100002f05000000 - {e=>5,c=>-2,a=>-74,g=>3,b=>3,d=>-4,f=>2} b6ffffff330100001503000000 b6ffffff330100001503000000 b6ffffff330100001503000000 b6ffffff330100001503000000 - {e=>4,c=>-4,a=>-40,g=>1,b=>7,d=>-4,f=>-1} d8ffffff270100003c01000000 d8ffffff270100003c01000000 d8ffffff270100003c01000000 d8ffffff270100003c01000000 - {e=>0,c=>3,a=>18,g=>6,b=>0,d=>-4,f=>1} 12000000180100000806000000 12000000180100000806000000 12000000180100000806000000 12000000180100000806000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>0,c=>-2,a=>14,g=>3,b=>7,d=>3,f=>0} 0e000000f70000000003000000 0e000000f70000000003000000 0e000000f70000000003000000 0e000000f70000000003000000 - {e=>1,c=>0,a=>-50,g=>4,b=>7,d=>3,f=>0} ceffffffc70000000104000000 ceffffffc70000000104000000 ceffffffc70000000104000000 ceffffffc70000000104000000 - {e=>6,c=>-3,a=>101,g=>4,b=>2,d=>-4,f=>0} 650000002a0100000604000000 650000002a0100000604000000 650000002a0100000604000000 650000002a0100000604000000 - {e=>4,c=>-1,a=>87,g=>0,b=>1,d=>1,f=>1} 57000000790000000c00000000 57000000790000000c00000000 57000000790000000c00000000 57000000790000000c00000000 - {e=>3,c=>-1,a=>45,g=>7,b=>0,d=>-2,f=>3} 2d000000b80100001b07000000 2d000000b80100001b07000000 2d000000b80100001b07000000 2d000000b80100001b07000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>6,a=>-39,d=>0,c=>-2,h=>1,b=>3,g=>7,f=>-3} d9ffffff330000002e0700000001 d9ffffff330000002e0700000001 d9ffffff330000002e0700000001 d9ffffff330000002e0700000001 - {e=>2,a=>-6,d=>-3,c=>1,h=>0,b=>1,g=>4,f=>-1} faffffff490100003a0400000000 faffffff490100003a0400000000 faffffff490100003a0400000000 faffffff490100003a0400000000 - {e=>4,a=>-114,d=>3,c=>-2,h=>2,b=>6,g=>2,f=>3} 8efffffff60000001c0200000002 8efffffff60000001c0200000002 8efffffff60000001c0200000002 8efffffff60000001c0200000002 - {e=>2,a=>-117,d=>0,c=>-2,h=>2,b=>3,g=>0,f=>0} 8bffffff33000000020000000002 8bffffff33000000020000000002 8bffffff33000000020000000002 8bffffff33000000020000000002 - {e=>6,a=>120,d=>2,c=>1,h=>5,b=>7,g=>4,f=>-3} 780000008f0000002e0400000005 780000008f0000002e0400000005 780000008f0000002e0400000005 780000008f0000002e0400000005 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>52,d=>1,c=>3,h=>2,b=>3,g=>6,f=>2,i=>-3} 340000005b00000011060000002a 340000005b00000011060000002a 340000005b00000011060000002a 340000005b00000011060000002a - {e=>3,a=>53,d=>0,c=>0,h=>1,b=>3,g=>6,f=>2,i=>1} 3500000003000000130600000009 3500000003000000130600000009 3500000003000000130600000009 3500000003000000130600000009 - {e=>6,a=>16,d=>-4,c=>-1,h=>7,b=>1,g=>6,f=>1,i=>3} 10000000390100000e060000001f 10000000390100000e060000001f 10000000390100000e060000001f 10000000390100000e060000001f - {e=>5,a=>110,d=>-3,c=>-2,h=>1,b=>4,g=>6,f=>1,i=>-1} 6e000000740100000d0600000039 6e000000740100000d0600000039 6e000000740100000d0600000039 6e000000740100000d0600000039 - {e=>2,a=>-21,d=>1,c=>3,h=>1,b=>2,g=>0,f=>-4,i=>-3} ebffffff5a000000220000000029 ebffffff5a000000220000000029 ebffffff5a000000220000000029 ebffffff5a000000220000000029 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>-50,d=>3,j=>1,c=>0,h=>3,b=>2,g=>2,f=>3,i=>-2} ceffffffc20000001b020000003301000000 ceffffffc20000001b020000003301000000 ceffffffc20000001b020000003301000000 ceffffffc20000001b020000003301000000 - {e=>1,a=>-3,d=>0,j=>2,c=>-3,h=>2,b=>0,g=>1,f=>-2,i=>-4} fdffffff2800000031010000002202000000 fdffffff2800000031010000002202000000 fdffffff2800000031010000002202000000 fdffffff2800000031010000002202000000 - {e=>4,a=>52,d=>-2,j=>6,c=>-2,h=>1,b=>2,g=>0,f=>0,i=>-2} 34000000b201000004000000003106000000 34000000b201000004000000003106000000 34000000b201000004000000003106000000 34000000b201000004000000003106000000 - {e=>1,a=>99,d=>1,j=>7,c=>3,h=>7,b=>6,g=>4,f=>0,i=>3} 630000005e00000001040000001f07000000 630000005e00000001040000001f07000000 630000005e00000001040000001f07000000 630000005e00000001040000001f07000000 - {e=>6,a=>127,d=>2,j=>0,c=>1,h=>5,b=>5,g=>5,f=>1,i=>-2} 7f0000008d0000000e050000003500000000 7f0000008d0000000e050000003500000000 7f0000008d0000000e050000003500000000 7f0000008d0000000e050000003500000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>5,a=>53,d=>-2,j=>1,c=>0,k=>-7,h=>4,b=>1,g=>5,f=>1,i=>-1} 35000000810100000d050000003c01000000f9 35000000810100000d050000003c01000000f9 35000000810100000d050000003c01000000f9 35000000810100000d050000003c01000000f9 - {e=>4,a=>-53,d=>-4,j=>2,c=>1,k=>34,h=>7,b=>1,g=>3,f=>0,i=>0} cbffffff090100000403000000070200000022 cbffffff090100000403000000070200000022 cbffffff090100000403000000070200000022 cbffffff090100000403000000070200000022 - {e=>6,a=>-45,d=>3,j=>5,c=>1,k=>97,h=>4,b=>6,g=>0,f=>-3,i=>2} d3ffffffce0000002e00000000140500000061 d3ffffffce0000002e00000000140500000061 d3ffffffce0000002e00000000140500000061 d3ffffffce0000002e00000000140500000061 - {e=>1,a=>65,d=>1,j=>0,c=>0,k=>30,h=>0,b=>0,g=>2,f=>3,i=>-4} 4100000040000000190200000020000000001e 4100000040000000190200000020000000001e 4100000040000000190200000020000000001e 4100000040000000190200000020000000001e - {e=>1,a=>-80,d=>-4,j=>5,c=>-3,k=>115,h=>3,b=>5,g=>3,f=>-4,i=>3} b0ffffff2d01000021030000001b0500000073 b0ffffff2d01000021030000001b0500000073 b0ffffff2d01000021030000001b0500000073 b0ffffff2d01000021030000001b0500000073 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>4,a=>122,d=>2,j=>4,l=>5,c=>-3,k=>111,h=>7,b=>3,g=>4,f=>2,i=>2} 7a000000ab000000140400000017040000006f05 7a000000ab000000140400000017040000006f05 7a000000ab000000140400000017040000006f05 7a000000ab000000140400000017040000006f05 - {e=>4,a=>-118,d=>2,j=>0,l=>5,c=>-1,k=>9,h=>1,b=>4,g=>4,f=>1,i=>-3} 8affffffbc0000000c0400000029000000000905 8affffffbc0000000c0400000029000000000905 8affffffbc0000000c0400000029000000000905 8affffffbc0000000c0400000029000000000905 - {e=>7,a=>-99,d=>-3,j=>1,l=>6,c=>3,k=>-51,h=>4,b=>0,g=>0,f=>2,i=>-1} 9dffffff5801000017000000003c01000000cd06 9dffffff5801000017000000003c01000000cd06 9dffffff5801000017000000003c01000000cd06 9dffffff5801000017000000003c01000000cd06 - {e=>5,a=>46,d=>-1,j=>7,l=>2,c=>-4,k=>-82,h=>4,b=>6,g=>6,f=>-4,i=>-1} 2e000000e601000025060000003c07000000ae02 2e000000e601000025060000003c07000000ae02 2e000000e601000025060000003c07000000ae02 2e000000e601000025060000003c07000000ae02 - {e=>5,a=>-15,d=>-4,j=>3,l=>1,c=>3,k=>-7,h=>3,b=>7,g=>2,f=>-3,i=>3} f1ffffff1f0100002d020000001b03000000f901 f1ffffff1f0100002d020000001b03000000f901 f1ffffff1f0100002d020000001b03000000f901 f1ffffff1f0100002d020000001b03000000f901 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>-125,m=>2,d=>0,j=>0,l=>5,c=>-2,k=>49,h=>6,b=>0,g=>6,f=>3,i=>-4} 83ffffff300000001b0600000026000000003115 83ffffff300000001b0600000026000000003115 83ffffff300000001b0600000026000000003115 83ffffff300000001b0600000026000000003115 - {e=>5,a=>127,m=>1,d=>-3,j=>3,l=>3,c=>-4,k=>15,h=>1,b=>5,g=>6,f=>3,i=>1} 7f000000650100001d0600000009030000000f0b 7f000000650100001d0600000009030000000f0b 7f000000650100001d0600000009030000000f0b 7f000000650100001d0600000009030000000f0b - {e=>5,a=>-102,m=>2,d=>1,j=>7,l=>4,c=>-2,k=>76,h=>2,b=>5,g=>4,f=>2,i=>0} 9affffff75000000150400000002070000004c14 9affffff75000000150400000002070000004c14 9affffff75000000150400000002070000004c14 9affffff75000000150400000002070000004c14 - {e=>3,a=>83,m=>-2,d=>-3,j=>6,l=>6,c=>-4,k=>56,h=>4,b=>0,g=>3,f=>1,i=>-1} 53000000600100000b030000003c060000003836 53000000600100000b030000003c060000003836 53000000600100000b030000003c060000003836 53000000600100000b030000003c060000003836 - {e=>1,a=>-24,m=>-4,d=>-3,j=>0,l=>0,c=>2,k=>-52,h=>5,b=>6,g=>3,f=>2,i=>-2} e8ffffff5601000011030000003500000000cc20 e8ffffff5601000011030000003500000000cc20 e8ffffff5601000011030000003500000000cc20 e8ffffff5601000011030000003500000000cc20 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>0,a=>74,m=>-2,d=>1,j=>6,l=>3,c=>2,k=>113,h=>1,b=>0,g=>0,f=>0,i=>-4} 4a0000005000000005000000002106000000713300000000 4a0000005000000005000000002106000000713300000000 4a0000005000000005000000002106000000713300000000 4a0000005000000005000000002106000000713300000000 - {e=>5,n=>3,a=>-44,m=>1,d=>-3,j=>3,l=>6,c=>2,k=>-63,h=>7,b=>0,g=>4,f=>-1,i=>3} d4ffffff500100003d040000001f03000000c10e03000000 d4ffffff500100003d040000001f03000000c10e03000000 d4ffffff500100003d040000001f03000000c10e03000000 d4ffffff500100003d040000001f03000000c10e03000000 - {e=>5,n=>1,a=>39,m=>1,d=>-3,j=>5,l=>0,c=>0,k=>1,h=>0,b=>1,g=>3,f=>2,i=>-1} 270000004101000015030000003805000000010801000000 270000004101000015030000003805000000010801000000 270000004101000015030000003805000000010801000000 270000004101000015030000003805000000010801000000 - {e=>4,n=>3,a=>97,m=>-3,d=>-3,j=>7,l=>4,c=>-3,k=>75,h=>5,b=>6,g=>5,f=>3,i=>3} 610000006e0100001c050000001d070000004b2c03000000 610000006e0100001c050000001d070000004b2c03000000 610000006e0100001c050000001d070000004b2c03000000 610000006e0100001c050000001d070000004b2c03000000 - {e=>1,n=>3,a=>77,m=>1,d=>-2,j=>3,l=>6,c=>-4,k=>50,h=>4,b=>0,g=>1,f=>-2,i=>-4} 4d000000a001000031010000002403000000320e03000000 4d000000a001000031010000002403000000320e03000000 4d000000a001000031010000002403000000320e03000000 4d000000a001000031010000002403000000320e03000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct mixed_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>1,a=>104,m=>0,d=>3,j=>1,l=>6,c=>2,k=>-66,h=>7,b=>0,g=>4,f=>-1,o=>189,i=>-3} 68000000d00000003a040000002f01000000be0601000000bd 68000000d00000003a040000002f01000000be0601000000bd 68000000d00000003a040000002f01000000be0601000000bd 68000000d00000003a040000002f01000000be0601000000bd - {e=>4,n=>1,a=>-82,m=>-1,d=>-2,j=>2,l=>6,c=>3,k=>81,h=>7,b=>1,g=>0,f=>-2,o=>27,i=>-3} aeffffff9901000034000000002f02000000513e010000001b aeffffff9901000034000000002f02000000513e010000001b aeffffff9901000034000000002f02000000513e010000001b aeffffff9901000034000000002f02000000513e010000001b - {e=>0,n=>0,a=>110,m=>-3,d=>0,j=>2,l=>6,c=>-3,k=>27,h=>6,b=>6,g=>5,f=>0,o=>50,i=>3} 6e0000002e00000000050000001e020000001b2e0000000032 6e0000002e00000000050000001e020000001b2e0000000032 6e0000002e00000000050000001e020000001b2e0000000032 6e0000002e00000000050000001e020000001b2e0000000032 - {e=>0,n=>5,a=>65,m=>-4,d=>1,j=>3,l=>2,c=>-1,k=>-88,h=>2,b=>4,g=>7,f=>0,o=>17,i=>1} 410000007c00000000070000000a03000000a8220500000011 410000007c00000000070000000a03000000a8220500000011 410000007c00000000070000000a03000000a8220500000011 410000007c00000000070000000a03000000a8220500000011 - {e=>2,n=>3,a=>51,m=>-2,d=>-3,j=>1,l=>1,c=>-1,k=>-125,h=>6,b=>2,g=>2,f=>-2,o=>98,i=>2} 330000007a0100003202000000160100000083310300000062 330000007a0100003202000000160100000083310300000062 330000007a0100003202000000160100000083310300000062 330000007a0100003202000000160100000083310300000062 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; }; - {a=>4} 04000000 04000000 04000000 04000000 - {a=>3} 03000000 03000000 03000000 03000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>5} 05000000 05000000 05000000 05000000 - {a=>3} 03000000 03000000 03000000 03000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; }; - {a=>1,b=>-2} 31000000 31000000 31000000 31000000 - {a=>2,b=>3} 1a000000 1a000000 1a000000 1a000000 - {a=>2,b=>2} 12000000 12000000 12000000 12000000 - {a=>2,b=>-2} 32000000 32000000 32000000 32000000 - {a=>5,b=>-4} 25000000 25000000 25000000 25000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>0,a=>0,b=>3} 18000000 18000000 18000000 18000000 - {c=>-3,a=>0,b=>-3} 68010000 68010000 68010000 68010000 - {c=>-3,a=>3,b=>-4} 63010000 63010000 63010000 63010000 - {c=>-2,a=>6,b=>-2} b6010000 b6010000 b6010000 b6010000 - {c=>-1,a=>4,b=>-3} ec010000 ec010000 ec010000 ec010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>0,a=>5,b=>-1,d=>0} 3d0000000000 3d0000000000 3d0000000000 3d0000000000 - {c=>3,a=>4,b=>-2,d=>4} f40000000400 f40000000400 f40000000400 f40000000400 - {c=>2,a=>0,b=>-1,d=>4} b80000000400 b80000000400 b80000000400 b80000000400 - {c=>-3,a=>4,b=>2,d=>3} 540100000300 540100000300 540100000300 540100000300 - {c=>-2,a=>0,b=>0,d=>7} 800100000700 800100000700 800100000700 800100000700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; }; - {e=>1,c=>-1,a=>5,b=>1,d=>0} cd0100000800 cd0100000800 cd0100000800 cd0100000800 - {e=>-3,c=>-4,a=>1,b=>2,d=>4} 110100002c00 110100002c00 110100002c00 110100002c00 - {e=>-1,c=>-1,a=>3,b=>0,d=>7} c30100003f00 c30100003f00 c30100003f00 c30100003f00 - {e=>0,c=>-3,a=>4,b=>-3,d=>0} 6c0100000000 6c0100000000 6c0100000000 6c0100000000 - {e=>2,c=>0,a=>5,b=>1,d=>7} 0d0000001700 0d0000001700 0d0000001700 0d0000001700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; }; - {e=>-1,c=>3,a=>3,b=>-2,d=>2,f=>6} f30000003a0006000000 f30000003a0006000000 f30000003a0006000000 f30000003a0006000000 - {e=>2,c=>-1,a=>1,b=>-4,d=>5,f=>2} e1010000150002000000 e1010000150002000000 e1010000150002000000 e1010000150002000000 - {e=>1,c=>1,a=>3,b=>-4,d=>2,f=>6} 630000000a0006000000 630000000a0006000000 630000000a0006000000 630000000a0006000000 - {e=>1,c=>-2,a=>2,b=>-4,d=>2,f=>3} a20100000a0003000000 a20100000a0003000000 a20100000a0003000000 a20100000a0003000000 - {e=>0,c=>0,a=>5,b=>-4,d=>4,f=>5} 25000000040005000000 25000000040005000000 25000000040005000000 25000000040005000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; }; - {e=>-4,c=>-1,a=>5,b=>3,d=>2,f=>2} dd010000220002000000 dd010000220002000000 dd010000220002000000 dd010000220002000000 - {e=>1,c=>-1,a=>3,b=>2,d=>7,f=>6} d30100000f0006000000 d30100000f0006000000 d30100000f0006000000 d30100000f0006000000 - {e=>-1,c=>3,a=>0,b=>1,d=>4,f=>5} c80000003c0005000000 c80000003c0005000000 c80000003c0005000000 c80000003c0005000000 - {e=>1,c=>-4,a=>2,b=>1,d=>1,f=>7} 0a010000090007000000 0a010000090007000000 0a010000090007000000 0a010000090007000000 - {e=>-4,c=>-3,a=>2,b=>-1,d=>4,f=>1} 7a010000240001000000 7a010000240001000000 7a010000240001000000 7a010000240001000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>-3,c=>3,a=>4,g=>2,b=>-1,d=>7,f=>5} fc0000002f00050000000200 fc0000002f00050000000200 fc0000002f00050000000200 fc0000002f00050000000200 - {e=>0,c=>-4,a=>2,g=>2,b=>-4,d=>5,f=>5} 220100000500050000000200 220100000500050000000200 220100000500050000000200 220100000500050000000200 - {e=>2,c=>1,a=>1,g=>6,b=>3,d=>3,f=>0} 590000001300000000000600 590000001300000000000600 590000001300000000000600 590000001300000000000600 - {e=>1,c=>-3,a=>3,g=>6,b=>2,d=>7,f=>0} 530100000f00000000000600 530100000f00000000000600 530100000f00000000000600 530100000f00000000000600 - {e=>-4,c=>0,a=>5,g=>1,b=>-1,d=>3,f=>2} 3d0000002300020000000100 3d0000002300020000000100 3d0000002300020000000100 3d0000002300020000000100 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>-3,a=>2,d=>5,c=>-4,h=>0,b=>-1,g=>5,f=>7} 3a0100002d00070000000500 3a0100002d00070000000500 3a0100002d00070000000500 3a0100002d00070000000500 - {e=>-3,a=>4,d=>6,c=>2,h=>-4,b=>3,g=>6,f=>3} 9c0000002e00030000002600 9c0000002e00030000002600 9c0000002e00030000002600 9c0000002e00030000002600 - {e=>1,a=>4,d=>4,c=>3,h=>-1,b=>-2,g=>6,f=>3} f40000000c00030000003e00 f40000000c00030000003e00 f40000000c00030000003e00 f40000000c00030000003e00 - {e=>3,a=>5,d=>5,c=>1,h=>-2,b=>2,g=>6,f=>2} 550000001d00020000003600 550000001d00020000003600 550000001d00020000003600 550000001d00020000003600 - {e=>1,a=>7,d=>6,c=>2,h=>0,b=>3,g=>0,f=>6} 9f0000000e00060000000000 9f0000000e00060000000000 9f0000000e00060000000000 9f0000000e00060000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; }; - {e=>2,a=>1,d=>3,c=>-3,h=>1,b=>-4,g=>1,f=>7,i=>5} 61010000130007000000090005000000 61010000130007000000090005000000 61010000130007000000090005000000 61010000130007000000090005000000 - {e=>-4,a=>1,d=>3,c=>-2,h=>2,b=>-3,g=>7,f=>4,i=>3} a9010000230004000000170003000000 a9010000230004000000170003000000 a9010000230004000000170003000000 a9010000230004000000170003000000 - {e=>0,a=>2,d=>7,c=>3,h=>2,b=>2,g=>5,f=>2,i=>1} d2000000070002000000150001000000 d2000000070002000000150001000000 d2000000070002000000150001000000 d2000000070002000000150001000000 - {e=>1,a=>3,d=>2,c=>2,h=>2,b=>0,g=>7,f=>6,i=>0} 830000000a0006000000170000000000 830000000a0006000000170000000000 830000000a0006000000170000000000 830000000a0006000000170000000000 - {e=>-4,a=>3,d=>2,c=>-1,h=>0,b=>-3,g=>4,f=>7,i=>4} eb010000220007000000040004000000 eb010000220007000000040004000000 eb010000220007000000040004000000 eb010000220007000000040004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; }; - {e=>0,a=>0,d=>0,j=>-15,c=>0,h=>-4,b=>-2,g=>1,f=>2,i=>3} 30000000000002000000210003000000f100 30000000000002000000210003000000f100 30000000000002000000210003000000f100 30000000000002000000210003000000f100 - {e=>-4,a=>2,d=>1,j=>101,c=>3,h=>1,b=>-2,g=>5,f=>1,i=>6} f20000002100010000000d00060000006500 f20000002100010000000d00060000006500 f20000002100010000000d00060000006500 f20000002100010000000d00060000006500 - {e=>-1,a=>0,d=>3,j=>90,c=>3,h=>3,b=>2,g=>6,f=>2,i=>1} d00000003b00020000001e00010000005a00 d00000003b00020000001e00010000005a00 d00000003b00020000001e00010000005a00 d00000003b00020000001e00010000005a00 - {e=>-4,a=>2,d=>2,j=>87,c=>3,h=>-1,b=>-1,g=>6,f=>4,i=>4} fa0000002200040000003e00040000005700 fa0000002200040000003e00040000005700 fa0000002200040000003e00040000005700 fa0000002200040000003e00040000005700 - {e=>1,a=>7,d=>3,j=>-72,c=>1,h=>0,b=>-1,g=>4,f=>1,i=>0} 7f0000000b0001000000040000000000b800 7f0000000b0001000000040000000000b800 7f0000000b0001000000040000000000b800 7f0000000b0001000000040000000000b800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; }; - {e=>-3,a=>3,d=>4,j=>77,c=>1,k=>1,h=>-3,b=>2,g=>3,f=>0,i=>2} 530000002c00000000002b00020000004d01 530000002c00000000002b00020000004d01 530000002c00000000002b00020000004d01 530000002c00000000002b00020000004d01 - {e=>1,a=>1,d=>1,j=>20,c=>2,k=>1,h=>1,b=>-3,g=>3,f=>3,i=>4} a90000000900030000000b00040000001401 a90000000900030000000b00040000001401 a90000000900030000000b00040000001401 a90000000900030000000b00040000001401 - {e=>2,a=>5,d=>2,j=>108,c=>1,k=>5,h=>2,b=>0,g=>2,f=>5,i=>2} 450000001200050000001200020000006c05 450000001200050000001200020000006c05 450000001200050000001200020000006c05 450000001200050000001200020000006c05 - {e=>3,a=>1,d=>1,j=>-2,c=>1,k=>7,h=>-1,b=>-3,g=>4,f=>4,i=>4} 690000001900040000003c0004000000fe07 690000001900040000003c0004000000fe07 690000001900040000003c0004000000fe07 690000001900040000003c0004000000fe07 - {e=>0,a=>4,d=>7,j=>-104,c=>-2,k=>3,h=>2,b=>-4,g=>2,f=>6,i=>3} a40100000700060000001200030000009803 a40100000700060000001200030000009803 a40100000700060000001200030000009803 a40100000700060000001200030000009803 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>1,a=>6,d=>7,j=>30,l=>2,c=>-1,k=>0,h=>-3,b=>-2,g=>6,f=>7,i=>5} f60100000f00070000002e00050000001e10 f60100000f00070000002e00050000001e10 f60100000f00070000002e00050000001e10 f60100000f00070000002e00050000001e10 - {e=>1,a=>1,d=>3,j=>-98,l=>0,c=>-1,k=>6,h=>-4,b=>-2,g=>1,f=>3,i=>1} f10100000b00030000002100010000009e06 f10100000b00030000002100010000009e06 f10100000b00030000002100010000009e06 f10100000b00030000002100010000009e06 - {e=>-2,a=>2,d=>1,j=>-45,l=>-2,c=>1,k=>7,h=>2,b=>-3,g=>0,f=>6,i=>6} 6a000000310006000000100006000000d337 6a000000310006000000100006000000d337 6a000000310006000000100006000000d337 6a000000310006000000100006000000d337 - {e=>-2,a=>4,d=>2,j=>-1,l=>0,c=>-4,k=>0,h=>-3,b=>0,g=>3,f=>0,i=>4} 040100003200000000002b0004000000ff00 040100003200000000002b0004000000ff00 040100003200000000002b0004000000ff00 040100003200000000002b0004000000ff00 - {e=>3,a=>4,d=>4,j=>110,l=>-1,c=>0,k=>1,h=>2,b=>-4,g=>0,f=>7,i=>6} 240000001c00070000001000060000006e39 240000001c00070000001000060000006e39 240000001c00070000001000060000006e39 240000001c00070000001000060000006e39 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>-2,a=>6,m=>4,d=>0,j=>28,l=>-3,c=>-3,k=>2,h=>3,b=>-1,g=>3,f=>5,i=>6} 7e0100003000050000001b00060000001c2a04000000 7e0100003000050000001b00060000001c2a04000000 7e0100003000050000001b00060000001c2a04000000 7e0100003000050000001b00060000001c2a04000000 - {e=>-1,a=>7,m=>1,d=>6,j=>79,l=>2,c=>1,k=>3,h=>-4,b=>1,g=>1,f=>5,i=>2} 4f0000003e00050000002100020000004f1301000000 4f0000003e00050000002100020000004f1301000000 4f0000003e00050000002100020000004f1301000000 4f0000003e00050000002100020000004f1301000000 - {e=>-3,a=>5,m=>2,d=>3,j=>43,l=>-2,c=>-4,k=>3,h=>-4,b=>-3,g=>5,f=>6,i=>5} 2d0100002b00060000002500050000002b3302000000 2d0100002b00060000002500050000002b3302000000 2d0100002b00060000002500050000002b3302000000 2d0100002b00060000002500050000002b3302000000 - {e=>-2,a=>6,m=>4,d=>2,j=>62,l=>-2,c=>-4,k=>4,h=>-2,b=>-1,g=>1,f=>5,i=>4} 3e0100003200050000003100040000003e3404000000 3e0100003200050000003100040000003e3404000000 3e0100003200050000003100040000003e3404000000 3e0100003200050000003100040000003e3404000000 - {e=>1,a=>1,m=>0,d=>4,j=>-74,l=>-3,c=>2,k=>1,h=>-2,b=>2,g=>2,f=>6,i=>4} 910000000c0006000000320004000000b62900000000 910000000c0006000000320004000000b62900000000 910000000c0006000000320004000000b62900000000 910000000c0006000000320004000000b62900000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; signed char e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; unsigned int i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>-4,n=>116,a=>1,m=>6,d=>4,j=>-19,l=>-1,c=>-2,k=>1,h=>0,b=>-1,g=>5,f=>3,i=>5} b9010000240003000000050005000000ed39060000007400 b9010000240003000000050005000000ed39060000007400 b9010000240003000000050005000000ed39060000007400 b9010000240003000000050005000000ed39060000007400 - {e=>2,n=>61,a=>4,m=>3,d=>0,j=>78,l=>-2,c=>3,k=>3,h=>-3,b=>-3,g=>2,f=>0,i=>2} ec0000001000000000002a00020000004e33030000003d00 ec0000001000000000002a00020000004e33030000003d00 ec0000001000000000002a00020000004e33030000003d00 ec0000001000000000002a00020000004e33030000003d00 - {e=>-1,n=>150,a=>3,m=>2,d=>3,j=>-89,l=>-4,c=>-3,k=>7,h=>-3,b=>-1,g=>3,f=>5,i=>1} 7b0100003b00050000002b0001000000a727020000009600 7b0100003b00050000002b0001000000a727020000009600 7b0100003b00050000002b0001000000a727020000009600 7b0100003b00050000002b0001000000a727020000009600 - {e=>-1,n=>162,a=>3,m=>5,d=>1,j=>46,l=>-2,c=>-1,k=>2,h=>-1,b=>3,g=>4,f=>0,i=>2} db0100003900000000003c00020000002e3205000000a200 db0100003900000000003c00020000002e3205000000a200 db0100003900000000003c00020000002e3205000000a200 db0100003900000000003c00020000002e3205000000a200 - {e=>-4,n=>162,a=>2,m=>5,d=>7,j=>-26,l=>2,c=>3,k=>0,h=>3,b=>-2,g=>1,f=>3,i=>6} f2000000270003000000190006000000e61005000000a200 f2000000270003000000190006000000e61005000000a200 f2000000270003000000190006000000e61005000000a200 f2000000270003000000190006000000e61005000000a200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; }; - {a=>-94,b=>6} a20006000000 a20006000000 a20006000000 a20006000000 - {a=>-87,b=>1} a90001000000 a90001000000 a90001000000 a90001000000 - {a=>-8,b=>2} f80002000000 f80002000000 f80002000000 f80002000000 - {a=>-106,b=>2} 960002000000 960002000000 960002000000 960002000000 - {a=>-98,b=>5} 9e0005000000 9e0005000000 9e0005000000 9e0005000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; }; - {c=>3,a=>-72,b=>5} b8001d000000 b8001d000000 b8001d000000 b8001d000000 - {c=>0,a=>-13,b=>5} f30005000000 f30005000000 f30005000000 f30005000000 - {c=>3,a=>-92,b=>6} a4001e000000 a4001e000000 a4001e000000 a4001e000000 - {c=>-1,a=>79,b=>3} 4f003b000000 4f003b000000 4f003b000000 4f003b000000 - {c=>-3,a=>-108,b=>7} 94002f000000 94002f000000 94002f000000 94002f000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>49,b=>2,d=>-3} 31004a010000 31004a010000 31004a010000 31004a010000 - {c=>0,a=>42,b=>7,d=>0} 2a0007000000 2a0007000000 2a0007000000 2a0007000000 - {c=>-4,a=>41,b=>5,d=>-3} 290065010000 290065010000 290065010000 290065010000 - {c=>1,a=>-70,b=>4,d=>0} ba000c000000 ba000c000000 ba000c000000 ba000c000000 - {c=>2,a=>-18,b=>5,d=>-1} ee00d5010000 ee00d5010000 ee00d5010000 ee00d5010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-3,a=>-42,b=>7,d=>-2} d600af0100000100 d600af0100000100 d600af0100000100 d600af0100000100 - {e=>5,c=>-4,a=>109,b=>4,d=>1} 6d00640000000500 6d00640000000500 6d00640000000500 6d00640000000500 - {e=>7,c=>-2,a=>-119,b=>4,d=>0} 8900340000000700 8900340000000700 8900340000000700 8900340000000700 - {e=>3,c=>-3,a=>-23,b=>6,d=>0} e9002e0000000300 e9002e0000000300 e9002e0000000300 e9002e0000000300 - {e=>1,c=>-4,a=>-38,b=>2,d=>3} da00e20000000100 da00e20000000100 da00e20000000100 da00e20000000100 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>5,c=>-3,a=>-8,b=>3,d=>-1,f=>0} f800eb0100000500 f800eb0100000500 f800eb0100000500 f800eb0100000500 - {e=>4,c=>0,a=>3,b=>7,d=>2,f=>2} 0300870000001400 0300870000001400 0300870000001400 0300870000001400 - {e=>4,c=>2,a=>43,b=>3,d=>-4,f=>-3} 2b00130100002c00 2b00130100002c00 2b00130100002c00 2b00130100002c00 - {e=>2,c=>-3,a=>-97,b=>6,d=>-4,f=>1} 9f002e0100000a00 9f002e0100000a00 9f002e0100000a00 9f002e0100000a00 - {e=>6,c=>3,a=>87,b=>5,d=>2,f=>-1} 57009d0000003e00 57009d0000003e00 57009d0000003e00 57009d0000003e00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>7,c=>2,a=>-29,g=>2,b=>6,d=>-1,f=>-3} e300d60100002f0002000000 e300d60100002f0002000000 e300d60100002f0002000000 e300d60100002f0002000000 - {e=>5,c=>3,a=>-72,g=>6,b=>4,d=>-2,f=>0} b8009c010000050006000000 b8009c010000050006000000 b8009c010000050006000000 b8009c010000050006000000 - {e=>4,c=>0,a=>-24,g=>5,b=>4,d=>1,f=>2} e80044000000140005000000 e80044000000140005000000 e80044000000140005000000 e80044000000140005000000 - {e=>1,c=>-1,a=>-37,g=>1,b=>4,d=>-3,f=>1} db007c010000090001000000 db007c010000090001000000 db007c010000090001000000 db007c010000090001000000 - {e=>7,c=>-2,a=>92,g=>0,b=>4,d=>-2,f=>-4} 5c00b4010000270000000000 5c00b4010000270000000000 5c00b4010000270000000000 5c00b4010000270000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>7,c=>2,a=>93,g=>4,b=>1,d=>-3,f=>3} 5d00510100001f0004000000 5d00510100001f0004000000 5d00510100001f0004000000 5d00510100001f0004000000 - {e=>0,c=>-1,a=>-59,g=>5,b=>2,d=>-3,f=>-1} c5007a010000380005000000 c5007a010000380005000000 c5007a010000380005000000 c5007a010000380005000000 - {e=>5,c=>-1,a=>8,g=>5,b=>2,d=>-2,f=>-1} 0800ba0100003d0005000000 0800ba0100003d0005000000 0800ba0100003d0005000000 0800ba0100003d0005000000 - {e=>0,c=>3,a=>-103,g=>5,b=>5,d=>1,f=>0} 99005d000000000005000000 99005d000000000005000000 99005d000000000005000000 99005d000000000005000000 - {e=>5,c=>-3,a=>114,g=>7,b=>1,d=>-4,f=>-1} 7200290100003d0007000000 7200290100003d0007000000 7200290100003d0007000000 7200290100003d0007000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>2,d=>0,c=>2,h=>7,b=>5,g=>6,f=>-1} 0200150000003b00060000000700 0200150000003b00060000000700 0200150000003b00060000000700 0200150000003b00060000000700 - {e=>3,a=>-24,d=>-1,c=>-1,h=>6,b=>3,g=>2,f=>2} e800fb0100001300020000000600 e800fb0100001300020000000600 e800fb0100001300020000000600 e800fb0100001300020000000600 - {e=>6,a=>66,d=>0,c=>-3,h=>1,b=>3,g=>1,f=>-1} 42002b0000003e00010000000100 42002b0000003e00010000000100 42002b0000003e00010000000100 42002b0000003e00010000000100 - {e=>7,a=>83,d=>3,c=>0,h=>1,b=>1,g=>3,f=>3} 5300c10000001f00030000000100 5300c10000001f00030000000100 5300c10000001f00030000000100 5300c10000001f00030000000100 - {e=>2,a=>47,d=>-1,c=>-1,h=>7,b=>0,g=>5,f=>3} 2f00f80100001a00050000000700 2f00f80100001a00050000000700 2f00f80100001a00050000000700 2f00f80100001a00050000000700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>60,d=>-2,c=>0,h=>6,b=>2,g=>2,f=>-2,i=>-2} 3c00820100003700020000003600 3c00820100003700020000003600 3c00820100003700020000003600 3c00820100003700020000003600 - {e=>6,a=>-97,d=>0,c=>0,h=>0,b=>3,g=>4,f=>0,i=>3} 9f00030000000600040000001800 9f00030000000600040000001800 9f00030000000600040000001800 9f00030000000600040000001800 - {e=>3,a=>88,d=>-3,c=>-4,h=>7,b=>5,g=>1,f=>-4,i=>-2} 5800650100002300010000003700 5800650100002300010000003700 5800650100002300010000003700 5800650100002300010000003700 - {e=>6,a=>86,d=>2,c=>0,h=>5,b=>0,g=>1,f=>3,i=>-2} 5600800000001e00010000003500 5600800000001e00010000003500 5600800000001e00010000003500 5600800000001e00010000003500 - {e=>0,a=>52,d=>-3,c=>-4,h=>5,b=>5,g=>0,f=>3,i=>3} 3400650100001800000000001d00 3400650100001800000000001d00 3400650100001800000000001d00 3400650100001800000000001d00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>80,d=>-2,j=>7,c=>0,h=>3,b=>2,g=>4,f=>1,i=>3} 5000820100000b00040000001b0007000000 5000820100000b00040000001b0007000000 5000820100000b00040000001b0007000000 5000820100000b00040000001b0007000000 - {e=>7,a=>-43,d=>-3,j=>6,c=>1,h=>2,b=>0,g=>4,f=>0,i=>3} d500480100000700040000001a0006000000 d500480100000700040000001a0006000000 d500480100000700040000001a0006000000 d500480100000700040000001a0006000000 - {e=>7,a=>87,d=>0,j=>3,c=>2,h=>7,b=>0,g=>7,f=>-3,i=>2} 5700100000002f0007000000170003000000 5700100000002f0007000000170003000000 5700100000002f0007000000170003000000 5700100000002f0007000000170003000000 - {e=>1,a=>57,d=>-4,j=>7,c=>-3,h=>2,b=>7,g=>4,f=>2,i=>2} 39002f010000110004000000120007000000 39002f010000110004000000120007000000 39002f010000110004000000120007000000 39002f010000110004000000120007000000 - {e=>1,a=>61,d=>0,j=>0,c=>-2,h=>3,b=>3,g=>7,f=>0,i=>1} 3d00330000000100070000000b0000000000 3d00330000000100070000000b0000000000 3d00330000000100070000000b0000000000 3d00330000000100070000000b0000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>2,a=>-111,d=>2,j=>6,c=>0,k=>2,h=>7,b=>5,g=>5,f=>-2,i=>1} 9100850000003200050000000f00060000000200 9100850000003200050000000f00060000000200 9100850000003200050000000f00060000000200 9100850000003200050000000f00060000000200 - {e=>3,a=>125,d=>-3,j=>7,c=>2,k=>102,h=>6,b=>4,g=>2,f=>-3,i=>3} 7d00540100002b00020000001e00070000006600 7d00540100002b00020000001e00070000006600 7d00540100002b00020000001e00070000006600 7d00540100002b00020000001e00070000006600 - {e=>5,a=>-3,d=>-3,j=>4,c=>0,k=>42,h=>5,b=>0,g=>6,f=>-1,i=>-4} fd00400100003d00060000002500040000002a00 fd00400100003d00060000002500040000002a00 fd00400100003d00060000002500040000002a00 fd00400100003d00060000002500040000002a00 - {e=>2,a=>-127,d=>0,j=>1,c=>-1,k=>70,h=>5,b=>0,g=>0,f=>1,i=>-2} 8100380000000a00000000003500010000004600 8100380000000a00000000003500010000004600 8100380000000a00000000003500010000004600 8100380000000a00000000003500010000004600 - {e=>0,a=>43,d=>3,j=>3,c=>2,k=>93,h=>4,b=>2,g=>6,f=>1,i=>1} 2b00d20000000800060000000c00030000005d00 2b00d20000000800060000000c00030000005d00 2b00d20000000800060000000c00030000005d00 2b00d20000000800060000000c00030000005d00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>0,a=>-82,d=>1,j=>3,l=>2,c=>-1,k=>124,h=>4,b=>3,g=>7,f=>3,i=>-4} ae007b0000001800070000002400030000007c02 ae007b0000001800070000002400030000007c02 ae007b0000001800070000002400030000007c02 ae007b0000001800070000002400030000007c02 - {e=>7,a=>125,d=>-3,j=>6,l=>7,c=>-3,k=>33,h=>0,b=>5,g=>7,f=>2,i=>-3} 7d006d0100001700070000002800060000002107 7d006d0100001700070000002800060000002107 7d006d0100001700070000002800060000002107 7d006d0100001700070000002800060000002107 - {e=>0,a=>-27,d=>-1,j=>3,l=>5,c=>-1,k=>41,h=>0,b=>7,g=>6,f=>-2,i=>-2} e500ff0100003000060000003000030000002905 e500ff0100003000060000003000030000002905 e500ff0100003000060000003000030000002905 e500ff0100003000060000003000030000002905 - {e=>6,a=>-76,d=>-3,j=>7,l=>0,c=>0,k=>-16,h=>5,b=>7,g=>4,f=>-1,i=>2} b400470100003e0004000000150007000000f000 b400470100003e0004000000150007000000f000 b400470100003e0004000000150007000000f000 b400470100003e0004000000150007000000f000 - {e=>4,a=>-66,d=>3,j=>1,l=>5,c=>2,k=>-26,h=>1,b=>6,g=>6,f=>0,i=>-1} be00d6000000040006000000390001000000e605 be00d6000000040006000000390001000000e605 be00d6000000040006000000390001000000e605 be00d6000000040006000000390001000000e605 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>-113,m=>3,d=>-2,j=>5,l=>3,c=>2,k=>-9,h=>0,b=>7,g=>1,f=>0,i=>1} 8f0097010000070001000000080005000000f71b 8f0097010000070001000000080005000000f71b 8f0097010000070001000000080005000000f71b 8f0097010000070001000000080005000000f71b - {e=>5,a=>14,m=>3,d=>-4,j=>7,l=>1,c=>-1,k=>41,h=>6,b=>4,g=>0,f=>-2,i=>-4} 0e003c0100003500000000002600070000002919 0e003c0100003500000000002600070000002919 0e003c0100003500000000002600070000002919 0e003c0100003500000000002600070000002919 - {e=>1,a=>50,m=>2,d=>3,j=>7,l=>3,c=>-4,k=>-106,h=>4,b=>3,g=>0,f=>-1,i=>-4} 3200e30000003900000000002400070000009613 3200e30000003900000000002400070000009613 3200e30000003900000000002400070000009613 3200e30000003900000000002400070000009613 - {e=>3,a=>122,m=>2,d=>1,j=>5,l=>6,c=>-3,k=>83,h=>4,b=>0,g=>0,f=>-2,i=>2} 7a00680000003300000000001400050000005316 7a00680000003300000000001400050000005316 7a00680000003300000000001400050000005316 7a00680000003300000000001400050000005316 - {e=>4,a=>25,m=>-4,d=>1,j=>5,l=>0,c=>1,k=>115,h=>2,b=>1,g=>6,f=>1,i=>0} 1900490000000c00060000000200050000007320 1900490000000c00060000000200050000007320 1900490000000c00060000000200050000007320 1900490000000c00060000000200050000007320 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>7,a=>-13,m=>2,d=>-3,j=>4,l=>5,c=>-3,k=>-63,h=>6,b=>1,g=>7,f=>3,i=>3} f300690100001b00070000001e0004000000c11507000000 f300690100001b00070000001e0004000000c11507000000 f300690100001b00070000001e0004000000c11507000000 f300690100001b00070000001e0004000000c11507000000 - {e=>2,n=>2,a=>10,m=>2,d=>3,j=>4,l=>0,c=>2,k=>-15,h=>1,b=>3,g=>3,f=>-3,i=>-2} 0a00d30000002a0003000000310004000000f11002000000 0a00d30000002a0003000000310004000000f11002000000 0a00d30000002a0003000000310004000000f11002000000 0a00d30000002a0003000000310004000000f11002000000 - {e=>2,n=>5,a=>53,m=>-2,d=>2,j=>5,l=>1,c=>2,k=>-31,h=>5,b=>7,g=>4,f=>-3,i=>1} 3500970000002a00040000000d0005000000e13105000000 3500970000002a00040000000d0005000000e13105000000 3500970000002a00040000000d0005000000e13105000000 3500970000002a00040000000d0005000000e13105000000 - {e=>2,n=>3,a=>92,m=>3,d=>3,j=>6,l=>6,c=>-2,k=>99,h=>7,b=>3,g=>4,f=>-4,i=>-2} 5c00f3000000220004000000370006000000631e03000000 5c00f3000000220004000000370006000000631e03000000 5c00f3000000220004000000370006000000631e03000000 5c00f3000000220004000000370006000000631e03000000 - {e=>2,n=>6,a=>-14,m=>1,d=>0,j=>0,l=>2,c=>-4,k=>1,h=>7,b=>7,g=>4,f=>1,i=>-3} f200270000000a00040000002f0000000000010a06000000 f200270000000a00040000002f0000000000010a06000000 f200270000000a00040000002f0000000000010a06000000 f200270000000a00040000002f0000000000010a06000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>5,a=>61,m=>-2,d=>-4,j=>1,l=>6,c=>1,k=>-87,h=>5,b=>7,g=>7,f=>-1,o=>42,i=>1} 3d000f0100003800070000000d0001000000a936050000002a00 3d000f0100003800070000000d0001000000a936050000002a00 3d000f0100003800070000000d0001000000a936050000002a00 3d000f0100003800070000000d0001000000a936050000002a00 - {e=>1,n=>4,a=>116,m=>-1,d=>-4,j=>0,l=>7,c=>3,k=>-107,h=>2,b=>6,g=>5,f=>0,o=>162,i=>3} 74001e0100000100050000001a0000000000953f04000000a200 74001e0100000100050000001a0000000000953f04000000a200 74001e0100000100050000001a0000000000953f04000000a200 74001e0100000100050000001a0000000000953f04000000a200 - {e=>4,n=>5,a=>114,m=>-3,d=>-2,j=>4,l=>5,c=>-2,k=>68,h=>3,b=>7,g=>3,f=>-2,o=>112,i=>-2} 7200b7010000340003000000330004000000442d050000007000 7200b7010000340003000000330004000000442d050000007000 7200b7010000340003000000330004000000442d050000007000 7200b7010000340003000000330004000000442d050000007000 - {e=>2,n=>7,a=>-31,m=>-2,d=>-2,j=>7,l=>7,c=>-4,k=>20,h=>2,b=>1,g=>3,f=>-3,o=>162,i=>-2} e100a10100002a0003000000320007000000143707000000a200 e100a10100002a0003000000320007000000143707000000a200 e100a10100002a0003000000320007000000143707000000a200 e100a10100002a0003000000320007000000143707000000a200 - {e=>2,n=>1,a=>-39,m=>-4,d=>-1,j=>4,l=>3,c=>1,k=>-123,h=>7,b=>7,g=>5,f=>1,o=>105,i=>-2} d900cf0100000a00050000003700040000008523010000006900 d900cf0100000a00050000003700040000008523010000006900 d900cf0100000a00050000003700040000008523010000006900 d900cf0100000a00050000003700040000008523010000006900 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; }; - {a=>103,b=>3} 670003000000 670003000000 670003000000 670003000000 - {a=>38,b=>4} 260004000000 260004000000 260004000000 260004000000 - {a=>52,b=>0} 340000000000 340000000000 340000000000 340000000000 - {a=>-12,b=>3} f4ff03000000 f4ff03000000 f4ff03000000 f4ff03000000 - {a=>5,b=>6} 050006000000 050006000000 050006000000 050006000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>-92,b=>5} a4ff05000000 a4ff05000000 a4ff05000000 a4ff05000000 - {c=>-2,a=>-97,b=>2} 9fff32000000 9fff32000000 9fff32000000 9fff32000000 - {c=>3,a=>-63,b=>1} c1ff19000000 c1ff19000000 c1ff19000000 c1ff19000000 - {c=>2,a=>93,b=>2} 5d0012000000 5d0012000000 5d0012000000 5d0012000000 - {c=>2,a=>1,b=>3} 010013000000 010013000000 010013000000 010013000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>65,b=>6,d=>-1} 4100f6010000 4100f6010000 4100f6010000 4100f6010000 - {c=>-2,a=>107,b=>0,d=>3} 6b00f0000000 6b00f0000000 6b00f0000000 6b00f0000000 - {c=>-2,a=>-7,b=>3,d=>1} f9ff73000000 f9ff73000000 f9ff73000000 f9ff73000000 - {c=>-1,a=>-11,b=>3,d=>0} f5ff3b000000 f5ff3b000000 f5ff3b000000 f5ff3b000000 - {c=>-3,a=>-10,b=>7,d=>-3} f6ff6f010000 f6ff6f010000 f6ff6f010000 f6ff6f010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>7,c=>-3,a=>69,b=>7,d=>-2} 4500af0100000700 4500af0100000700 4500af0100000700 4500af0100000700 - {e=>1,c=>1,a=>92,b=>7,d=>3} 5c00cf0000000100 5c00cf0000000100 5c00cf0000000100 5c00cf0000000100 - {e=>5,c=>-3,a=>104,b=>7,d=>1} 68006f0000000500 68006f0000000500 68006f0000000500 68006f0000000500 - {e=>6,c=>-3,a=>50,b=>7,d=>1} 32006f0000000600 32006f0000000600 32006f0000000600 32006f0000000600 - {e=>6,c=>-3,a=>52,b=>5,d=>2} 3400ad0000000600 3400ad0000000600 3400ad0000000600 3400ad0000000600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>2,c=>1,a=>-16,b=>7,d=>-4,f=>2} f0ff0f0100001200 f0ff0f0100001200 f0ff0f0100001200 f0ff0f0100001200 - {e=>3,c=>1,a=>-81,b=>2,d=>-3,f=>-2} afff4a0100003300 afff4a0100003300 afff4a0100003300 afff4a0100003300 - {e=>0,c=>-2,a=>-7,b=>6,d=>2,f=>2} f9ffb60000001000 f9ffb60000001000 f9ffb60000001000 f9ffb60000001000 - {e=>5,c=>3,a=>46,b=>4,d=>1,f=>3} 2e005c0000001d00 2e005c0000001d00 2e005c0000001d00 2e005c0000001d00 - {e=>2,c=>-4,a=>110,b=>3,d=>2,f=>-3} 6e00a30000002a00 6e00a30000002a00 6e00a30000002a00 6e00a30000002a00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>1,c=>2,a=>-118,g=>2,b=>2,d=>1,f=>1} 8aff52000000090002000000 8aff52000000090002000000 8aff52000000090002000000 8aff52000000090002000000 - {e=>7,c=>-3,a=>73,g=>6,b=>3,d=>-4,f=>3} 49002b0100001f0006000000 49002b0100001f0006000000 49002b0100001f0006000000 49002b0100001f0006000000 - {e=>0,c=>-4,a=>51,g=>5,b=>3,d=>-1,f=>-1} 3300e3010000380005000000 3300e3010000380005000000 3300e3010000380005000000 3300e3010000380005000000 - {e=>6,c=>0,a=>-60,g=>3,b=>4,d=>-3,f=>1} c4ff440100000e0003000000 c4ff440100000e0003000000 c4ff440100000e0003000000 c4ff440100000e0003000000 - {e=>3,c=>-4,a=>-59,g=>0,b=>1,d=>-3,f=>3} c5ff610100001b0000000000 c5ff610100001b0000000000 c5ff610100001b0000000000 c5ff610100001b0000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>5,c=>-3,a=>-108,g=>3,b=>6,d=>-1,f=>-4} 94ffee010000250003000000 94ffee010000250003000000 94ffee010000250003000000 94ffee010000250003000000 - {e=>0,c=>1,a=>1,g=>6,b=>4,d=>-3,f=>-3} 01004c010000280006000000 01004c010000280006000000 01004c010000280006000000 01004c010000280006000000 - {e=>7,c=>-3,a=>-122,g=>3,b=>2,d=>-4,f=>1} 86ff2a0100000f0003000000 86ff2a0100000f0003000000 86ff2a0100000f0003000000 86ff2a0100000f0003000000 - {e=>4,c=>-2,a=>112,g=>2,b=>6,d=>-4,f=>1} 7000360100000c0002000000 7000360100000c0002000000 7000360100000c0002000000 7000360100000c0002000000 - {e=>0,c=>-1,a=>-72,g=>6,b=>5,d=>3,f=>-4} b8fffd000000200006000000 b8fffd000000200006000000 b8fffd000000200006000000 b8fffd000000200006000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>7,a=>108,d=>2,c=>0,h=>5,b=>7,g=>0,f=>3} 6c00870000001f00000000000500 6c00870000001f00000000000500 6c00870000001f00000000000500 6c00870000001f00000000000500 - {e=>3,a=>126,d=>-1,c=>3,h=>6,b=>3,g=>6,f=>-2} 7e00db0100003300060000000600 7e00db0100003300060000000600 7e00db0100003300060000000600 7e00db0100003300060000000600 - {e=>0,a=>-62,d=>-2,c=>-4,h=>1,b=>5,g=>7,f=>-1} c2ffa50100003800070000000100 c2ffa50100003800070000000100 c2ffa50100003800070000000100 c2ffa50100003800070000000100 - {e=>4,a=>102,d=>2,c=>2,h=>7,b=>1,g=>3,f=>-1} 6600910000003c00030000000700 6600910000003c00030000000700 6600910000003c00030000000700 6600910000003c00030000000700 - {e=>5,a=>-66,d=>2,c=>-4,h=>7,b=>7,g=>7,f=>-2} beffa70000003500070000000700 beffa70000003500070000000700 beffa70000003500070000000700 beffa70000003500070000000700 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>114,d=>1,c=>-2,h=>7,b=>7,g=>2,f=>-1,i=>-2} 7200770000003f00020000003700 7200770000003f00020000003700 7200770000003f00020000003700 7200770000003f00020000003700 - {e=>1,a=>-112,d=>-3,c=>2,h=>5,b=>5,g=>1,f=>-2,i=>-2} 90ff550100003100010000003500 90ff550100003100010000003500 90ff550100003100010000003500 90ff550100003100010000003500 - {e=>5,a=>88,d=>0,c=>1,h=>4,b=>4,g=>6,f=>-2,i=>2} 58000c0000003500060000001400 58000c0000003500060000001400 58000c0000003500060000001400 58000c0000003500060000001400 - {e=>2,a=>-8,d=>-2,c=>-1,h=>5,b=>0,g=>4,f=>-4,i=>0} f8ffb80100002200040000000500 f8ffb80100002200040000000500 f8ffb80100002200040000000500 f8ffb80100002200040000000500 - {e=>7,a=>-35,d=>3,c=>3,h=>0,b=>4,g=>0,f=>-2,i=>-4} ddffdc0000003700000000002000 ddffdc0000003700000000002000 ddffdc0000003700000000002000 ddffdc0000003700000000002000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>0,a=>-31,d=>-2,j=>5,c=>-3,h=>0,b=>0,g=>5,f=>-3,i=>3} e1ffa8010000280005000000180005000000 e1ffa8010000280005000000180005000000 e1ffa8010000280005000000180005000000 e1ffa8010000280005000000180005000000 - {e=>3,a=>0,d=>-1,j=>1,c=>-1,h=>0,b=>2,g=>1,f=>-2,i=>2} 0000fa010000330001000000100001000000 0000fa010000330001000000100001000000 0000fa010000330001000000100001000000 0000fa010000330001000000100001000000 - {e=>0,a=>72,d=>-1,j=>5,c=>2,h=>6,b=>5,g=>1,f=>-4,i=>-4} 4800d5010000200001000000260005000000 4800d5010000200001000000260005000000 4800d5010000200001000000260005000000 4800d5010000200001000000260005000000 - {e=>5,a=>84,d=>1,j=>1,c=>1,h=>3,b=>5,g=>2,f=>-3,i=>2} 54004d0000002d0002000000130001000000 54004d0000002d0002000000130001000000 54004d0000002d0002000000130001000000 54004d0000002d0002000000130001000000 - {e=>2,a=>75,d=>1,j=>3,c=>1,h=>2,b=>7,g=>5,f=>-2,i=>0} 4b004f000000320005000000020003000000 4b004f000000320005000000020003000000 4b004f000000320005000000020003000000 4b004f000000320005000000020003000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>7,a=>-23,d=>-3,j=>1,c=>-3,k=>-79,h=>4,b=>0,g=>6,f=>0,i=>1} e9ff680100000700060000000c0001000000b100 e9ff680100000700060000000c0001000000b100 e9ff680100000700060000000c0001000000b100 e9ff680100000700060000000c0001000000b100 - {e=>2,a=>-89,d=>0,j=>5,c=>1,k=>-14,h=>6,b=>6,g=>6,f=>3,i=>-3} a7ff0e0000001a00060000002e0005000000f200 a7ff0e0000001a00060000002e0005000000f200 a7ff0e0000001a00060000002e0005000000f200 a7ff0e0000001a00060000002e0005000000f200 - {e=>1,a=>-23,d=>0,j=>2,c=>1,k=>-2,h=>1,b=>1,g=>5,f=>2,i=>-2} e9ff09000000110005000000310002000000fe00 e9ff09000000110005000000310002000000fe00 e9ff09000000110005000000310002000000fe00 e9ff09000000110005000000310002000000fe00 - {e=>7,a=>-84,d=>-2,j=>3,c=>-4,k=>1,h=>6,b=>3,g=>4,f=>-2,i=>-4} acffa30100003700040000002600030000000100 acffa30100003700040000002600030000000100 acffa30100003700040000002600030000000100 acffa30100003700040000002600030000000100 - {e=>4,a=>-2,d=>-1,j=>3,c=>3,k=>-56,h=>3,b=>2,g=>6,f=>0,i=>-2} feffda010000040006000000330003000000c800 feffda010000040006000000330003000000c800 feffda010000040006000000330003000000c800 feffda010000040006000000330003000000c800 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>1,a=>43,d=>-2,j=>3,l=>3,c=>0,k=>-20,h=>3,b=>4,g=>1,f=>1,i=>-2} 2b0084010000090001000000330003000000ec03 2b0084010000090001000000330003000000ec03 2b0084010000090001000000330003000000ec03 2b0084010000090001000000330003000000ec03 - {e=>1,a=>-33,d=>1,j=>3,l=>2,c=>-3,k=>77,h=>2,b=>4,g=>0,f=>2,i=>2} dfff6c0000001100000000001200030000004d02 dfff6c0000001100000000001200030000004d02 dfff6c0000001100000000001200030000004d02 dfff6c0000001100000000001200030000004d02 - {e=>7,a=>122,d=>0,j=>5,l=>3,c=>-3,k=>-62,h=>7,b=>5,g=>3,f=>3,i=>0} 7a002d0000001f0003000000070005000000c203 7a002d0000001f0003000000070005000000c203 7a002d0000001f0003000000070005000000c203 7a002d0000001f0003000000070005000000c203 - {e=>4,a=>36,d=>3,j=>2,l=>1,c=>0,k=>-1,h=>6,b=>7,g=>1,f=>-3,i=>-3} 2400c70000002c00010000002e0002000000ff01 2400c70000002c00010000002e0002000000ff01 2400c70000002c00010000002e0002000000ff01 2400c70000002c00010000002e0002000000ff01 - {e=>2,a=>126,d=>-4,j=>2,l=>3,c=>0,k=>-47,h=>2,b=>6,g=>7,f=>0,i=>-4} 7e0006010000020007000000220002000000d103 7e0006010000020007000000220002000000d103 7e0006010000020007000000220002000000d103 7e0006010000020007000000220002000000d103 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>-59,m=>-4,d=>1,j=>2,l=>7,c=>0,k=>-30,h=>2,b=>7,g=>7,f=>-1,i=>0} c5ff47000000380007000000020002000000e227 c5ff47000000380007000000020002000000e227 c5ff47000000380007000000020002000000e227 c5ff47000000380007000000020002000000e227 - {e=>5,a=>-106,m=>-1,d=>3,j=>2,l=>5,c=>3,k=>84,h=>4,b=>3,g=>3,f=>-3,i=>-1} 96ffdb0000002d00030000003c0002000000543d 96ffdb0000002d00030000003c0002000000543d 96ffdb0000002d00030000003c0002000000543d 96ffdb0000002d00030000003c0002000000543d - {e=>1,a=>41,m=>1,d=>1,j=>7,l=>5,c=>2,k=>33,h=>5,b=>7,g=>4,f=>-1,i=>-1} 2900570000003900040000003d0007000000210d 2900570000003900040000003d0007000000210d 2900570000003900040000003d0007000000210d 2900570000003900040000003d0007000000210d - {e=>7,a=>53,m=>0,d=>2,j=>5,l=>6,c=>0,k=>-74,h=>1,b=>1,g=>6,f=>-1,i=>-4} 3500810000003f0006000000210005000000b606 3500810000003f0006000000210005000000b606 3500810000003f0006000000210005000000b606 3500810000003f0006000000210005000000b606 - {e=>0,a=>-26,m=>0,d=>-3,j=>0,l=>6,c=>1,k=>94,h=>3,b=>2,g=>5,f=>3,i=>-2} e6ff4a0100001800050000003300000000005e06 e6ff4a0100001800050000003300000000005e06 e6ff4a0100001800050000003300000000005e06 e6ff4a0100001800050000003300000000005e06 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>3,a=>116,m=>1,d=>-1,j=>4,l=>5,c=>-4,k=>-99,h=>6,b=>1,g=>1,f=>-1,i=>-4} 7400e10100003b00010000002600040000009d0d03000000 7400e10100003b00010000002600040000009d0d03000000 7400e10100003b00010000002600040000009d0d03000000 7400e10100003b00010000002600040000009d0d03000000 - {e=>5,n=>6,a=>-60,m=>-4,d=>-1,j=>1,l=>5,c=>0,k=>-90,h=>3,b=>3,g=>2,f=>-2,i=>-3} c4ffc30100003500020000002b0001000000a62506000000 c4ffc30100003500020000002b0001000000a62506000000 c4ffc30100003500020000002b0001000000a62506000000 c4ffc30100003500020000002b0001000000a62506000000 - {e=>1,n=>3,a=>101,m=>1,d=>1,j=>5,l=>4,c=>-1,k=>0,h=>0,b=>0,g=>3,f=>3,i=>2} 650078000000190003000000100005000000000c03000000 650078000000190003000000100005000000000c03000000 650078000000190003000000100005000000000c03000000 650078000000190003000000100005000000000c03000000 - {e=>1,n=>5,a=>-81,m=>-2,d=>1,j=>4,l=>7,c=>-3,k=>24,h=>2,b=>7,g=>4,f=>2,i=>1} afff6f0000001100040000000a0004000000183705000000 afff6f0000001100040000000a0004000000183705000000 afff6f0000001100040000000a0004000000183705000000 afff6f0000001100040000000a0004000000183705000000 - {e=>5,n=>7,a=>69,m=>-1,d=>-4,j=>4,l=>5,c=>-3,k=>-48,h=>3,b=>1,g=>1,f=>-3,i=>1} 4500290100002d00010000000b0004000000d03d07000000 4500290100002d00010000000b0004000000d03d07000000 4500290100002d00010000000b0004000000d03d07000000 4500290100002d00010000000b0004000000d03d07000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>1,a=>-4,m=>-3,d=>1,j=>6,l=>4,c=>1,k=>-26,h=>3,b=>6,g=>0,f=>3,o=>238,i=>2} fcff4e0000001e0000000000130006000000e62c01000000ee00 fcff4e0000001e0000000000130006000000e62c01000000ee00 fcff4e0000001e0000000000130006000000e62c01000000ee00 fcff4e0000001e0000000000130006000000e62c01000000ee00 - {e=>0,n=>1,a=>-68,m=>-2,d=>1,j=>5,l=>3,c=>-2,k=>121,h=>3,b=>2,g=>1,f=>-2,o=>129,i=>2} bcff720000003000010000001300050000007933010000008100 bcff720000003000010000001300050000007933010000008100 bcff720000003000010000001300050000007933010000008100 bcff720000003000010000001300050000007933010000008100 - {e=>0,n=>3,a=>-111,m=>-4,d=>2,j=>1,l=>5,c=>-4,k=>58,h=>7,b=>2,g=>1,f=>-4,o=>239,i=>-2} 91ffa20000002000010000003700010000003a2503000000ef00 91ffa20000002000010000003700010000003a2503000000ef00 91ffa20000002000010000003700010000003a2503000000ef00 91ffa20000002000010000003700010000003a2503000000ef00 - {e=>0,n=>5,a=>-114,m=>-2,d=>-4,j=>1,l=>2,c=>2,k=>-17,h=>7,b=>3,g=>3,f=>-3,o=>107,i=>-1} 8eff130100002800030000003f0001000000ef32050000006b00 8eff130100002800030000003f0001000000ef32050000006b00 8eff130100002800030000003f0001000000ef32050000006b00 8eff130100002800030000003f0001000000ef32050000006b00 - {e=>1,n=>6,a=>-2,m=>1,d=>0,j=>0,l=>6,c=>1,k=>68,h=>6,b=>2,g=>4,f=>-3,o=>139,i=>1} feff0a0000002900040000000e0000000000440e060000008b00 feff0a0000002900040000000e0000000000440e060000008b00 feff0a0000002900040000000e0000000000440e060000008b00 feff0a0000002900040000000e0000000000440e060000008b00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; }; - {a=>109,b=>7} 6d00000007000000 6d00000007000000 6d00000007000000 6d00000007000000 - {a=>-103,b=>4} 99ffffff04000000 99ffffff04000000 99ffffff04000000 99ffffff04000000 - {a=>111,b=>4} 6f00000004000000 6f00000004000000 6f00000004000000 6f00000004000000 - {a=>-58,b=>4} c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 c6ffffff04000000 - {a=>117,b=>4} 7500000004000000 7500000004000000 7500000004000000 7500000004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>54,b=>7} 3600000027000000 3600000027000000 3600000027000000 3600000027000000 - {c=>-4,a=>-26,b=>7} e6ffffff27000000 e6ffffff27000000 e6ffffff27000000 e6ffffff27000000 - {c=>1,a=>35,b=>7} 230000000f000000 230000000f000000 230000000f000000 230000000f000000 - {c=>-3,a=>59,b=>0} 3b00000028000000 3b00000028000000 3b00000028000000 3b00000028000000 - {c=>-3,a=>70,b=>2} 460000002a000000 460000002a000000 460000002a000000 460000002a000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>-61,b=>4,d=>2} c3ffffffa4000000 c3ffffffa4000000 c3ffffffa4000000 c3ffffffa4000000 - {c=>-3,a=>79,b=>5,d=>3} 4f000000ed000000 4f000000ed000000 4f000000ed000000 4f000000ed000000 - {c=>-3,a=>-113,b=>0,d=>-3} 8fffffff68010000 8fffffff68010000 8fffffff68010000 8fffffff68010000 - {c=>-3,a=>-20,b=>5,d=>3} ecffffffed000000 ecffffffed000000 ecffffffed000000 ecffffffed000000 - {c=>-1,a=>84,b=>7,d=>-3} 540000007f010000 540000007f010000 540000007f010000 540000007f010000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>0,a=>-47,b=>6,d=>-1} d1ffffffc60100000400 d1ffffffc60100000400 d1ffffffc60100000400 d1ffffffc60100000400 - {e=>3,c=>1,a=>-93,b=>5,d=>-3} a3ffffff4d0100000300 a3ffffff4d0100000300 a3ffffff4d0100000300 a3ffffff4d0100000300 - {e=>1,c=>3,a=>123,b=>0,d=>-1} 7b000000d80100000100 7b000000d80100000100 7b000000d80100000100 7b000000d80100000100 - {e=>1,c=>-1,a=>-36,b=>7,d=>3} dcffffffff0000000100 dcffffffff0000000100 dcffffffff0000000100 dcffffffff0000000100 - {e=>2,c=>0,a=>-51,b=>2,d=>1} cdffffff420000000200 cdffffff420000000200 cdffffff420000000200 cdffffff420000000200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>-3,a=>54,b=>4,d=>-3,f=>1} 360000006c0100000e00 360000006c0100000e00 360000006c0100000e00 360000006c0100000e00 - {e=>4,c=>2,a=>53,b=>2,d=>-4,f=>0} 35000000120100000400 35000000120100000400 35000000120100000400 35000000120100000400 - {e=>3,c=>1,a=>-32,b=>6,d=>2,f=>1} e0ffffff8e0000000b00 e0ffffff8e0000000b00 e0ffffff8e0000000b00 e0ffffff8e0000000b00 - {e=>4,c=>-4,a=>57,b=>1,d=>-1,f=>-4} 39000000e10100002400 39000000e10100002400 39000000e10100002400 39000000e10100002400 - {e=>2,c=>-2,a=>-128,b=>2,d=>0,f=>-2} 80ffffff320000003200 80ffffff320000003200 80ffffff320000003200 80ffffff320000003200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>7,c=>-2,a=>-88,g=>0,b=>2,d=>3,f=>-4} a8fffffff2000000270000000000 a8fffffff2000000270000000000 a8fffffff2000000270000000000 a8fffffff2000000270000000000 - {e=>5,c=>-3,a=>90,g=>6,b=>2,d=>-1,f=>1} 5a000000ea0100000d0006000000 5a000000ea0100000d0006000000 5a000000ea0100000d0006000000 5a000000ea0100000d0006000000 - {e=>4,c=>3,a=>68,g=>6,b=>2,d=>-1,f=>-3} 44000000da0100002c0006000000 44000000da0100002c0006000000 44000000da0100002c0006000000 44000000da0100002c0006000000 - {e=>0,c=>3,a=>54,g=>6,b=>1,d=>-2,f=>2} 3600000099010000100006000000 3600000099010000100006000000 3600000099010000100006000000 3600000099010000100006000000 - {e=>2,c=>2,a=>45,g=>3,b=>1,d=>2,f=>-4} 2d00000091000000220003000000 2d00000091000000220003000000 2d00000091000000220003000000 2d00000091000000220003000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>3,c=>2,a=>-87,g=>6,b=>4,d=>0,f=>-1} a9ffffff140000003b0006000000 a9ffffff140000003b0006000000 a9ffffff140000003b0006000000 a9ffffff140000003b0006000000 - {e=>7,c=>-3,a=>103,g=>6,b=>0,d=>2,f=>-4} 67000000a8000000270006000000 67000000a8000000270006000000 67000000a8000000270006000000 67000000a8000000270006000000 - {e=>2,c=>2,a=>-32,g=>2,b=>6,d=>2,f=>-2} e0ffffff96000000320002000000 e0ffffff96000000320002000000 e0ffffff96000000320002000000 e0ffffff96000000320002000000 - {e=>5,c=>0,a=>122,g=>7,b=>4,d=>-4,f=>1} 7a000000040100000d0007000000 7a000000040100000d0007000000 7a000000040100000d0007000000 7a000000040100000d0007000000 - {e=>4,c=>-2,a=>-85,g=>0,b=>0,d=>-3,f=>-3} abffffff700100002c0000000000 abffffff700100002c0000000000 abffffff700100002c0000000000 abffffff700100002c0000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>2,a=>-79,d=>-4,c=>2,h=>5,b=>0,g=>4,f=>-4} b1ffffff100100002200040000000500 b1ffffff100100002200040000000500 b1ffffff100100002200040000000500 b1ffffff100100002200040000000500 - {e=>1,a=>61,d=>1,c=>-2,h=>7,b=>2,g=>4,f=>-3} 3d000000720000002900040000000700 3d000000720000002900040000000700 3d000000720000002900040000000700 3d000000720000002900040000000700 - {e=>7,a=>-36,d=>3,c=>-2,h=>0,b=>2,g=>0,f=>-1} dcfffffff20000003f00000000000000 dcfffffff20000003f00000000000000 dcfffffff20000003f00000000000000 dcfffffff20000003f00000000000000 - {e=>3,a=>-11,d=>-2,c=>-4,h=>2,b=>6,g=>5,f=>3} f5ffffffa60100001b00050000000200 f5ffffffa60100001b00050000000200 f5ffffffa60100001b00050000000200 f5ffffffa60100001b00050000000200 - {e=>7,a=>-10,d=>1,c=>-3,h=>4,b=>7,g=>0,f=>3} f6ffffff6f0000001f00000000000400 f6ffffff6f0000001f00000000000400 f6ffffff6f0000001f00000000000400 f6ffffff6f0000001f00000000000400 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>6,a=>32,d=>-2,c=>1,h=>7,b=>7,g=>0,f=>1,i=>3} 200000008f0100000e00000000001f00 200000008f0100000e00000000001f00 200000008f0100000e00000000001f00 200000008f0100000e00000000001f00 - {e=>7,a=>-98,d=>-3,c=>3,h=>1,b=>1,g=>1,f=>-1,i=>1} 9effffff590100003f00010000000900 9effffff590100003f00010000000900 9effffff590100003f00010000000900 9effffff590100003f00010000000900 - {e=>0,a=>-83,d=>-2,c=>-4,h=>7,b=>5,g=>5,f=>-4,i=>1} adffffffa50100002000050000000f00 adffffffa50100002000050000000f00 adffffffa50100002000050000000f00 adffffffa50100002000050000000f00 - {e=>6,a=>-52,d=>-4,c=>-4,h=>5,b=>5,g=>0,f=>-1,i=>-2} ccffffff250100003e00000000003500 ccffffff250100003e00000000003500 ccffffff250100003e00000000003500 ccffffff250100003e00000000003500 - {e=>4,a=>123,d=>2,c=>0,h=>6,b=>7,g=>2,f=>-1,i=>0} 7b000000870000003c00020000000600 7b000000870000003c00020000000600 7b000000870000003c00020000000600 7b000000870000003c00020000000600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>3,a=>62,d=>-1,j=>3,c=>-2,h=>0,b=>7,g=>2,f=>1,i=>-3} 3e000000f70100000b0002000000280003000000 3e000000f70100000b0002000000280003000000 3e000000f70100000b0002000000280003000000 3e000000f70100000b0002000000280003000000 - {e=>6,a=>-59,d=>2,j=>5,c=>1,h=>5,b=>5,g=>7,f=>3,i=>0} c5ffffff8d0000001e0007000000050005000000 c5ffffff8d0000001e0007000000050005000000 c5ffffff8d0000001e0007000000050005000000 c5ffffff8d0000001e0007000000050005000000 - {e=>6,a=>76,d=>0,j=>7,c=>2,h=>1,b=>4,g=>2,f=>1,i=>-1} 4c000000140000000e0002000000390007000000 4c000000140000000e0002000000390007000000 4c000000140000000e0002000000390007000000 4c000000140000000e0002000000390007000000 - {e=>6,a=>-74,d=>0,j=>1,c=>1,h=>5,b=>6,g=>7,f=>3,i=>-1} b6ffffff0e0000001e00070000003d0001000000 b6ffffff0e0000001e00070000003d0001000000 b6ffffff0e0000001e00070000003d0001000000 b6ffffff0e0000001e00070000003d0001000000 - {e=>0,a=>-90,d=>-4,j=>4,c=>3,h=>5,b=>5,g=>2,f=>-2,i=>0} a6ffffff1d010000300002000000050004000000 a6ffffff1d010000300002000000050004000000 a6ffffff1d010000300002000000050004000000 a6ffffff1d010000300002000000050004000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>6,a=>-103,d=>-1,j=>0,c=>1,k=>-31,h=>7,b=>0,g=>1,f=>1,i=>-3} 99ffffffc80100000e00010000002f0000000000e100 99ffffffc80100000e00010000002f0000000000e100 99ffffffc80100000e00010000002f0000000000e100 99ffffffc80100000e00010000002f0000000000e100 - {e=>5,a=>-2,d=>-1,j=>6,c=>0,k=>78,h=>6,b=>1,g=>4,f=>3,i=>3} feffffffc10100001d00040000001e00060000004e00 feffffffc10100001d00040000001e00060000004e00 feffffffc10100001d00040000001e00060000004e00 feffffffc10100001d00040000001e00060000004e00 - {e=>3,a=>-110,d=>-1,j=>1,c=>2,k=>-117,h=>6,b=>1,g=>6,f=>1,i=>2} 92ffffffd10100000b00060000001600010000008b00 92ffffffd10100000b00060000001600010000008b00 92ffffffd10100000b00060000001600010000008b00 92ffffffd10100000b00060000001600010000008b00 - {e=>3,a=>-42,d=>-2,j=>0,c=>-2,k=>-72,h=>4,b=>5,g=>4,f=>-4,i=>1} d6ffffffb50100002300040000000c0000000000b800 d6ffffffb50100002300040000000c0000000000b800 d6ffffffb50100002300040000000c0000000000b800 d6ffffffb50100002300040000000c0000000000b800 - {e=>1,a=>117,d=>-4,j=>1,c=>-3,k=>97,h=>4,b=>0,g=>1,f=>2,i=>-3} 75000000280100001100010000002c00010000006100 75000000280100001100010000002c00010000006100 75000000280100001100010000002c00010000006100 75000000280100001100010000002c00010000006100 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>3,a=>-57,d=>2,j=>6,l=>1,c=>0,k=>73,h=>5,b=>5,g=>3,f=>1,i=>-3} c7ffffff850000000b00030000002d00060000004901 c7ffffff850000000b00030000002d00060000004901 c7ffffff850000000b00030000002d00060000004901 c7ffffff850000000b00030000002d00060000004901 - {e=>6,a=>-107,d=>1,j=>5,l=>4,c=>-2,k=>25,h=>2,b=>1,g=>3,f=>3,i=>3} 95ffffff710000001e00030000001a00050000001904 95ffffff710000001e00030000001a00050000001904 95ffffff710000001e00030000001a00050000001904 95ffffff710000001e00030000001a00050000001904 - {e=>2,a=>108,d=>-3,j=>1,l=>5,c=>-3,k=>74,h=>4,b=>7,g=>4,f=>0,i=>-3} 6c0000006f0100000200040000002c00010000004a05 6c0000006f0100000200040000002c00010000004a05 6c0000006f0100000200040000002c00010000004a05 6c0000006f0100000200040000002c00010000004a05 - {e=>7,a=>-5,d=>3,j=>2,l=>7,c=>-3,k=>54,h=>0,b=>1,g=>0,f=>-2,i=>-1} fbffffffe90000003700000000003800020000003607 fbffffffe90000003700000000003800020000003607 fbffffffe90000003700000000003800020000003607 fbffffffe90000003700000000003800020000003607 - {e=>0,a=>-52,d=>2,j=>2,l=>0,c=>0,k=>118,h=>7,b=>0,g=>4,f=>1,i=>3} ccffffff800000000800040000001f00020000007600 ccffffff800000000800040000001f00020000007600 ccffffff800000000800040000001f00020000007600 ccffffff800000000800040000001f00020000007600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>-84,m=>1,d=>0,j=>1,l=>3,c=>-2,k=>78,h=>2,b=>4,g=>7,f=>2,i=>-3} acffffff340000001300070000002a00010000004e0b acffffff340000001300070000002a00010000004e0b acffffff340000001300070000002a00010000004e0b acffffff340000001300070000002a00010000004e0b - {e=>7,a=>80,m=>-4,d=>0,j=>6,l=>1,c=>3,k=>-88,h=>3,b=>1,g=>7,f=>-3,i=>1} 50000000190000002f00070000000b0006000000a821 50000000190000002f00070000000b0006000000a821 50000000190000002f00070000000b0006000000a821 50000000190000002f00070000000b0006000000a821 - {e=>6,a=>112,m=>-2,d=>1,j=>3,l=>1,c=>3,k=>69,h=>2,b=>1,g=>4,f=>-1,i=>2} 70000000590000003e00040000001200030000004531 70000000590000003e00040000001200030000004531 70000000590000003e00040000001200030000004531 70000000590000003e00040000001200030000004531 - {e=>1,a=>110,m=>-1,d=>0,j=>1,l=>3,c=>0,k=>-21,h=>1,b=>4,g=>0,f=>2,i=>1} 6e00000004000000110000000000090001000000eb3b 6e00000004000000110000000000090001000000eb3b 6e00000004000000110000000000090001000000eb3b 6e00000004000000110000000000090001000000eb3b - {e=>7,a=>35,m=>-2,d=>0,j=>1,l=>1,c=>3,k=>36,h=>3,b=>4,g=>4,f=>-4,i=>-3} 230000001c0000002700040000002b00010000002431 230000001c0000002700040000002b00010000002431 230000001c0000002700040000002b00010000002431 230000001c0000002700040000002b00010000002431 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>2,n=>0,a=>-6,m=>3,d=>0,j=>7,l=>2,c=>-4,k=>-55,h=>7,b=>3,g=>5,f=>2,i=>-2} faffffff23000000120005000000370007000000c91a00000000 faffffff23000000120005000000370007000000c91a00000000 faffffff23000000120005000000370007000000c91a00000000 faffffff23000000120005000000370007000000c91a00000000 - {e=>1,n=>7,a=>-87,m=>0,d=>0,j=>6,l=>4,c=>-2,k=>24,h=>7,b=>2,g=>1,f=>-3,i=>-3} a9ffffff320000002900010000002f0006000000180407000000 a9ffffff320000002900010000002f0006000000180407000000 a9ffffff320000002900010000002f0006000000180407000000 a9ffffff320000002900010000002f0006000000180407000000 - {e=>4,n=>4,a=>-107,m=>-1,d=>-2,j=>6,l=>0,c=>1,k=>-90,h=>5,b=>5,g=>2,f=>-4,i=>-2} 95ffffff8d010000240002000000350006000000a63804000000 95ffffff8d010000240002000000350006000000a63804000000 95ffffff8d010000240002000000350006000000a63804000000 95ffffff8d010000240002000000350006000000a63804000000 - {e=>1,n=>5,a=>-24,m=>-2,d=>-4,j=>6,l=>7,c=>1,k=>-102,h=>1,b=>5,g=>0,f=>-2,i=>0} e8ffffff0d0100003100000000000100060000009a3705000000 e8ffffff0d0100003100000000000100060000009a3705000000 e8ffffff0d0100003100000000000100060000009a3705000000 e8ffffff0d0100003100000000000100060000009a3705000000 - {e=>0,n=>4,a=>127,m=>-2,d=>-1,j=>7,l=>4,c=>-4,k=>68,h=>0,b=>1,g=>4,f=>-4,i=>-3} 7f000000e1010000200004000000280007000000443404000000 7f000000e1010000200004000000280007000000443404000000 7f000000e1010000200004000000280007000000443404000000 7f000000e1010000200004000000280007000000443404000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>4,a=>47,m=>3,d=>0,j=>7,l=>0,c=>3,k=>-117,h=>2,b=>3,g=>0,f=>-4,o=>238,i=>-3} 2f0000001b0000002200000000002a00070000008b1804000000ee00 2f0000001b0000002200000000002a00070000008b1804000000ee00 2f0000001b0000002200000000002a00070000008b1804000000ee00 2f0000001b0000002200000000002a00070000008b1804000000ee00 - {e=>1,n=>4,a=>-56,m=>-3,d=>0,j=>0,l=>3,c=>-3,k=>-65,h=>0,b=>6,g=>7,f=>-2,o=>157,i=>3} c8ffffff2e000000310007000000180000000000bf2b040000009d00 c8ffffff2e000000310007000000180000000000bf2b040000009d00 c8ffffff2e000000310007000000180000000000bf2b040000009d00 c8ffffff2e000000310007000000180000000000bf2b040000009d00 - {e=>6,n=>5,a=>44,m=>1,d=>1,j=>3,l=>1,c=>1,k=>57,h=>1,b=>7,g=>4,f=>2,o=>68,i=>2} 2c0000004f0000001600040000001100030000003909050000004400 2c0000004f0000001600040000001100030000003909050000004400 2c0000004f0000001600040000001100030000003909050000004400 2c0000004f0000001600040000001100030000003909050000004400 - {e=>2,n=>6,a=>-122,m=>0,d=>0,j=>6,l=>6,c=>3,k=>87,h=>1,b=>2,g=>7,f=>2,o=>182,i=>3} 86ffffff1a000000120007000000190006000000570606000000b600 86ffffff1a000000120007000000190006000000570606000000b600 86ffffff1a000000120007000000190006000000570606000000b600 86ffffff1a000000120007000000190006000000570606000000b600 - {e=>6,n=>4,a=>-93,m=>0,d=>-3,j=>5,l=>2,c=>2,k=>104,h=>6,b=>0,g=>1,f=>-3,o=>134,i=>-1} a3ffffff500100002e00010000003e00050000006802040000008600 a3ffffff500100002e00010000003e00050000006802040000008600 a3ffffff500100002e00010000003e00050000006802040000008600 a3ffffff500100002e00010000003e00050000006802040000008600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; }; - {a=>92,b=>7} 5c00000007000000 5c00000007000000 5c00000007000000 5c00000007000000 - {a=>73,b=>2} 4900000002000000 4900000002000000 4900000002000000 4900000002000000 - {a=>-17,b=>2} efffffff02000000 efffffff02000000 efffffff02000000 efffffff02000000 - {a=>6,b=>0} 0600000000000000 0600000000000000 0600000000000000 0600000000000000 - {a=>-12,b=>7} f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 f4ffffff07000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; }; - {c=>0,a=>5,b=>1} 0500000001000000 0500000001000000 0500000001000000 0500000001000000 - {c=>3,a=>54,b=>3} 360000001b000000 360000001b000000 360000001b000000 360000001b000000 - {c=>3,a=>58,b=>0} 3a00000018000000 3a00000018000000 3a00000018000000 3a00000018000000 - {c=>2,a=>-6,b=>6} faffffff16000000 faffffff16000000 faffffff16000000 faffffff16000000 - {c=>1,a=>-30,b=>2} e2ffffff0a000000 e2ffffff0a000000 e2ffffff0a000000 e2ffffff0a000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>3,a=>18,b=>6,d=>1} 120000005e000000 120000005e000000 120000005e000000 120000005e000000 - {c=>-1,a=>-92,b=>2,d=>-2} a4ffffffba010000 a4ffffffba010000 a4ffffffba010000 a4ffffffba010000 - {c=>-1,a=>-128,b=>5,d=>3} 80fffffffd000000 80fffffffd000000 80fffffffd000000 80fffffffd000000 - {c=>-4,a=>-90,b=>0,d=>0} a6ffffff20000000 a6ffffff20000000 a6ffffff20000000 a6ffffff20000000 - {c=>2,a=>-12,b=>2,d=>2} f4ffffff92000000 f4ffffff92000000 f4ffffff92000000 f4ffffff92000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-2,a=>-52,b=>1,d=>-2} ccffffffb10100000400 ccffffffb10100000400 ccffffffb10100000400 ccffffffb10100000400 - {e=>3,c=>2,a=>-5,b=>6,d=>0} fbffffff160000000300 fbffffff160000000300 fbffffff160000000300 fbffffff160000000300 - {e=>5,c=>-4,a=>51,b=>1,d=>-2} 33000000a10100000500 33000000a10100000500 33000000a10100000500 33000000a10100000500 - {e=>2,c=>2,a=>-120,b=>6,d=>-4} 88ffffff160100000200 88ffffff160100000200 88ffffff160100000200 88ffffff160100000200 - {e=>5,c=>1,a=>-11,b=>3,d=>2} f5ffffff8b0000000500 f5ffffff8b0000000500 f5ffffff8b0000000500 f5ffffff8b0000000500 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; }; - {e=>6,c=>-4,a=>-32,b=>4,d=>0,f=>-1} e0ffffff240000003e00 e0ffffff240000003e00 e0ffffff240000003e00 e0ffffff240000003e00 - {e=>5,c=>2,a=>50,b=>1,d=>2,f=>1} 32000000910000000d00 32000000910000000d00 32000000910000000d00 32000000910000000d00 - {e=>7,c=>-2,a=>106,b=>5,d=>-4,f=>1} 6a000000350100000f00 6a000000350100000f00 6a000000350100000f00 6a000000350100000f00 - {e=>4,c=>-4,a=>-26,b=>5,d=>-3,f=>-4} e6ffffff650100002400 e6ffffff650100002400 e6ffffff650100002400 e6ffffff650100002400 - {e=>6,c=>1,a=>30,b=>1,d=>-3,f=>1} 1e000000490100000e00 1e000000490100000e00 1e000000490100000e00 1e000000490100000e00 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; }; - {e=>2,c=>-3,a=>34,g=>7,b=>0,d=>0,f=>-2} 2200000028000000320007000000 2200000028000000320007000000 2200000028000000320007000000 2200000028000000320007000000 - {e=>7,c=>1,a=>-121,g=>0,b=>5,d=>0,f=>-2} 87ffffff0d000000370000000000 87ffffff0d000000370000000000 87ffffff0d000000370000000000 87ffffff0d000000370000000000 - {e=>3,c=>-3,a=>0,g=>1,b=>0,d=>2,f=>-1} 00000000a80000003b0001000000 00000000a80000003b0001000000 00000000a80000003b0001000000 00000000a80000003b0001000000 - {e=>5,c=>-3,a=>-126,g=>5,b=>5,d=>-3,f=>3} 82ffffff6d0100001d0005000000 82ffffff6d0100001d0005000000 82ffffff6d0100001d0005000000 82ffffff6d0100001d0005000000 - {e=>0,c=>2,a=>-72,g=>7,b=>0,d=>3,f=>3} b8ffffffd0000000180007000000 b8ffffffd0000000180007000000 b8ffffffd0000000180007000000 b8ffffffd0000000180007000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-1,a=>16,g=>1,b=>3,d=>-4,f=>-4} 100000003b010000210001000000 100000003b010000210001000000 100000003b010000210001000000 100000003b010000210001000000 - {e=>5,c=>-2,a=>-124,g=>2,b=>1,d=>3,f=>3} 84fffffff10000001d0002000000 84fffffff10000001d0002000000 84fffffff10000001d0002000000 84fffffff10000001d0002000000 - {e=>3,c=>-4,a=>-30,g=>6,b=>6,d=>0,f=>-3} e2ffffff260000002b0006000000 e2ffffff260000002b0006000000 e2ffffff260000002b0006000000 e2ffffff260000002b0006000000 - {e=>5,c=>-4,a=>101,g=>4,b=>2,d=>2,f=>2} 65000000a2000000150004000000 65000000a2000000150004000000 65000000a2000000150004000000 65000000a2000000150004000000 - {e=>0,c=>1,a=>-30,g=>0,b=>0,d=>-1,f=>-1} e2ffffffc8010000380000000000 e2ffffffc8010000380000000000 e2ffffffc8010000380000000000 e2ffffffc8010000380000000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>-63,d=>-4,c=>-3,h=>4,b=>0,g=>7,f=>-1} c1ffffff280100003b00070000000400 c1ffffff280100003b00070000000400 c1ffffff280100003b00070000000400 c1ffffff280100003b00070000000400 - {e=>1,a=>-112,d=>3,c=>0,h=>7,b=>3,g=>1,f=>2} 90ffffffc30000001100010000000700 90ffffffc30000001100010000000700 90ffffffc30000001100010000000700 90ffffffc30000001100010000000700 - {e=>5,a=>-65,d=>-1,c=>2,h=>5,b=>6,g=>4,f=>-2} bfffffffd60100003500040000000500 bfffffffd60100003500040000000500 bfffffffd60100003500040000000500 bfffffffd60100003500040000000500 - {e=>7,a=>63,d=>0,c=>-4,h=>3,b=>5,g=>4,f=>1} 3f000000250000000f00040000000300 3f000000250000000f00040000000300 3f000000250000000f00040000000300 3f000000250000000f00040000000300 - {e=>3,a=>-66,d=>-3,c=>3,h=>4,b=>0,g=>2,f=>-3} beffffff580100002b00020000000400 beffffff580100002b00020000000400 beffffff580100002b00020000000400 beffffff580100002b00020000000400 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>0,a=>-44,d=>-1,c=>-2,h=>7,b=>4,g=>5,f=>-3,i=>1} d4fffffff40100002800050000000f00 d4fffffff40100002800050000000f00 d4fffffff40100002800050000000f00 d4fffffff40100002800050000000f00 - {e=>2,a=>-106,d=>-4,c=>2,h=>0,b=>5,g=>5,f=>-3,i=>-2} 96ffffff150100002a00050000003000 96ffffff150100002a00050000003000 96ffffff150100002a00050000003000 96ffffff150100002a00050000003000 - {e=>0,a=>127,d=>-4,c=>2,h=>5,b=>2,g=>1,f=>-2,i=>-4} 7f000000120100003000010000002500 7f000000120100003000010000002500 7f000000120100003000010000002500 7f000000120100003000010000002500 - {e=>2,a=>-89,d=>1,c=>-2,h=>5,b=>4,g=>0,f=>-2,i=>3} a7ffffff740000003200000000001d00 a7ffffff740000003200000000001d00 a7ffffff740000003200000000001d00 a7ffffff740000003200000000001d00 - {e=>3,a=>86,d=>2,c=>1,h=>6,b=>4,g=>7,f=>3,i=>-4} 560000008c0000001b00070000002600 560000008c0000001b00070000002600 560000008c0000001b00070000002600 560000008c0000001b00070000002600 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; }; - {e=>2,a=>68,d=>-3,j=>7,c=>-1,h=>6,b=>2,g=>2,f=>-2,i=>-1} 440000007a0100003200020000003e0007000000 440000007a0100003200020000003e0007000000 440000007a0100003200020000003e0007000000 440000007a0100003200020000003e0007000000 - {e=>5,a=>125,d=>2,j=>0,c=>2,h=>0,b=>0,g=>1,f=>2,i=>3} 7d00000090000000150001000000180000000000 7d00000090000000150001000000180000000000 7d00000090000000150001000000180000000000 7d00000090000000150001000000180000000000 - {e=>7,a=>-98,d=>-3,j=>3,c=>1,h=>0,b=>2,g=>0,f=>3,i=>2} 9effffff4a0100001f0000000000100003000000 9effffff4a0100001f0000000000100003000000 9effffff4a0100001f0000000000100003000000 9effffff4a0100001f0000000000100003000000 - {e=>6,a=>65,d=>-4,j=>2,c=>2,h=>4,b=>4,g=>6,f=>0,i=>-1} 41000000140100000600060000003c0002000000 41000000140100000600060000003c0002000000 41000000140100000600060000003c0002000000 41000000140100000600060000003c0002000000 - {e=>4,a=>-43,d=>-4,j=>1,c=>0,h=>7,b=>1,g=>0,f=>1,i=>2} d5ffffff010100000c0000000000170001000000 d5ffffff010100000c0000000000170001000000 d5ffffff010100000c0000000000170001000000 d5ffffff010100000c0000000000170001000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; }; - {e=>7,a=>86,d=>3,j=>2,c=>0,k=>-13,h=>7,b=>3,g=>7,f=>3,i=>-4} 56000000c30000001f0007000000270002000000f300 56000000c30000001f0007000000270002000000f300 56000000c30000001f0007000000270002000000f300 56000000c30000001f0007000000270002000000f300 - {e=>5,a=>-12,d=>-3,j=>6,c=>-3,k=>-95,h=>0,b=>6,g=>0,f=>-2,i=>-3} f4ffffff6e010000350000000000280006000000a100 f4ffffff6e010000350000000000280006000000a100 f4ffffff6e010000350000000000280006000000a100 f4ffffff6e010000350000000000280006000000a100 - {e=>6,a=>-124,d=>3,j=>3,c=>-3,k=>50,h=>6,b=>7,g=>2,f=>-1,i=>-1} 84ffffffef0000003e00020000003e00030000003200 84ffffffef0000003e00020000003e00030000003200 84ffffffef0000003e00020000003e00030000003200 84ffffffef0000003e00020000003e00030000003200 - {e=>2,a=>47,d=>0,j=>0,c=>-4,k=>102,h=>3,b=>7,g=>6,f=>-4,i=>2} 2f000000270000002200060000001300000000006600 2f000000270000002200060000001300000000006600 2f000000270000002200060000001300000000006600 2f000000270000002200060000001300000000006600 - {e=>5,a=>95,d=>0,j=>6,c=>0,k=>66,h=>6,b=>6,g=>6,f=>-4,i=>-4} 5f000000060000002500060000002600060000004200 5f000000060000002500060000002600060000004200 5f000000060000002500060000002600060000004200 5f000000060000002500060000002600060000004200 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; }; - {e=>7,a=>101,d=>-2,j=>1,l=>0,c=>-3,k=>83,h=>7,b=>0,g=>3,f=>-4,i=>2} 65000000a80100002700030000001700010000005300 65000000a80100002700030000001700010000005300 65000000a80100002700030000001700010000005300 65000000a80100002700030000001700010000005300 - {e=>7,a=>-82,d=>2,j=>3,l=>2,c=>1,k=>50,h=>0,b=>2,g=>7,f=>-2,i=>-2} aeffffff8a0000003700070000003000030000003202 aeffffff8a0000003700070000003000030000003202 aeffffff8a0000003700070000003000030000003202 aeffffff8a0000003700070000003000030000003202 - {e=>5,a=>49,d=>-3,j=>1,l=>7,c=>-2,k=>-9,h=>7,b=>5,g=>5,f=>-1,i=>2} 31000000750100003d0005000000170001000000f707 31000000750100003d0005000000170001000000f707 31000000750100003d0005000000170001000000f707 31000000750100003d0005000000170001000000f707 - {e=>0,a=>-76,d=>3,j=>0,l=>0,c=>-1,k=>-27,h=>7,b=>6,g=>6,f=>-1,i=>-4} b4fffffffe000000380006000000270000000000e500 b4fffffffe000000380006000000270000000000e500 b4fffffffe000000380006000000270000000000e500 b4fffffffe000000380006000000270000000000e500 - {e=>5,a=>62,d=>2,j=>1,l=>2,c=>-1,k=>-59,h=>5,b=>1,g=>5,f=>-2,i=>-2} 3e000000b9000000350005000000350001000000c502 3e000000b9000000350005000000350001000000c502 3e000000b9000000350005000000350001000000c502 3e000000b9000000350005000000350001000000c502 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>7,a=>61,m=>-3,d=>-2,j=>7,l=>1,c=>3,k=>-49,h=>5,b=>0,g=>1,f=>-3,i=>0} 3d000000980100002f0001000000050007000000cf29 3d000000980100002f0001000000050007000000cf29 3d000000980100002f0001000000050007000000cf29 3d000000980100002f0001000000050007000000cf29 - {e=>6,a=>115,m=>-1,d=>0,j=>4,l=>2,c=>-2,k=>32,h=>7,b=>4,g=>3,f=>-2,i=>-2} 7300000034000000360003000000370004000000203a 7300000034000000360003000000370004000000203a 7300000034000000360003000000370004000000203a 7300000034000000360003000000370004000000203a - {e=>7,a=>74,m=>3,d=>-1,j=>6,l=>5,c=>-1,k=>34,h=>3,b=>4,g=>4,f=>2,i=>2} 4a000000fc010000170004000000130006000000221d 4a000000fc010000170004000000130006000000221d 4a000000fc010000170004000000130006000000221d 4a000000fc010000170004000000130006000000221d - {e=>3,a=>91,m=>-3,d=>0,j=>2,l=>7,c=>-1,k=>-86,h=>5,b=>0,g=>1,f=>-1,i=>-4} 5b000000380000003b0001000000250002000000aa2f 5b000000380000003b0001000000250002000000aa2f 5b000000380000003b0001000000250002000000aa2f 5b000000380000003b0001000000250002000000aa2f - {e=>4,a=>-16,m=>0,d=>2,j=>2,l=>3,c=>-2,k=>-46,h=>7,b=>2,g=>0,f=>-1,i=>-3} f0ffffffb20000003c00000000002f0002000000d203 f0ffffffb20000003c00000000002f0002000000d203 f0ffffffb20000003c00000000002f0002000000d203 f0ffffffb20000003c00000000002f0002000000d203 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>1,n=>1,a=>-128,m=>-2,d=>2,j=>3,l=>2,c=>3,k=>-47,h=>3,b=>1,g=>0,f=>1,i=>0} 80ffffff99000000090000000000030003000000d13201000000 80ffffff99000000090000000000030003000000d13201000000 80ffffff99000000090000000000030003000000d13201000000 80ffffff99000000090000000000030003000000d13201000000 - {e=>0,n=>3,a=>39,m=>2,d=>2,j=>2,l=>2,c=>-2,k=>-60,h=>2,b=>2,g=>1,f=>-4,i=>-1} 27000000b20000002000010000003a0002000000c41203000000 27000000b20000002000010000003a0002000000c41203000000 27000000b20000002000010000003a0002000000c41203000000 27000000b20000002000010000003a0002000000c41203000000 - {e=>0,n=>7,a=>86,m=>-3,d=>-2,j=>4,l=>4,c=>-1,k=>24,h=>1,b=>4,g=>3,f=>-2,i=>3} 56000000bc010000300003000000190004000000182c07000000 56000000bc010000300003000000190004000000182c07000000 56000000bc010000300003000000190004000000182c07000000 56000000bc010000300003000000190004000000182c07000000 - {e=>3,n=>4,a=>-28,m=>2,d=>3,j=>2,l=>5,c=>0,k=>-23,h=>7,b=>2,g=>7,f=>1,i=>1} e4ffffffc20000000b00070000000f0002000000e91504000000 e4ffffffc20000000b00070000000f0002000000e91504000000 e4ffffffc20000000b00070000000f0002000000e91504000000 e4ffffffc20000000b00070000000f0002000000e91504000000 - {e=>3,n=>3,a=>-127,m=>-4,d=>-2,j=>6,l=>7,c=>0,k=>51,h=>2,b=>0,g=>5,f=>-3,i=>-2} 81ffffff800100002b0005000000320006000000332703000000 81ffffff800100002b0005000000320006000000332703000000 81ffffff800100002b0005000000320006000000332703000000 81ffffff800100002b0005000000320006000000332703000000 = typedef int foo; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct mixed_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; signed char f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; unsigned int j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>5,a=>-107,m=>2,d=>3,j=>1,l=>1,c=>-1,k=>88,h=>1,b=>3,g=>2,f=>3,o=>104,i=>2} 95fffffffb0000001a00020000001100010000005811050000006800 95fffffffb0000001a00020000001100010000005811050000006800 95fffffffb0000001a00020000001100010000005811050000006800 95fffffffb0000001a00020000001100010000005811050000006800 - {e=>1,n=>6,a=>84,m=>-1,d=>-2,j=>3,l=>7,c=>1,k=>29,h=>2,b=>3,g=>3,f=>-2,o=>30,i=>-3} 540000008b0100003100030000002a00030000001d3f060000001e00 540000008b0100003100030000002a00030000001d3f060000001e00 540000008b0100003100030000002a00030000001d3f060000001e00 540000008b0100003100030000002a00030000001d3f060000001e00 - {e=>3,n=>0,a=>79,m=>3,d=>-3,j=>2,l=>6,c=>1,k=>125,h=>1,b=>2,g=>3,f=>3,o=>59,i=>-1} 4f0000004a0100001b00030000003900020000007d1e000000003b00 4f0000004a0100001b00030000003900020000007d1e000000003b00 4f0000004a0100001b00030000003900020000007d1e000000003b00 4f0000004a0100001b00030000003900020000007d1e000000003b00 - {e=>7,n=>7,a=>112,m=>-1,d=>3,j=>4,l=>0,c=>1,k=>-29,h=>5,b=>4,g=>4,f=>-2,o=>130,i=>2} 70000000cc000000370004000000150004000000e338070000008200 70000000cc000000370004000000150004000000e338070000008200 70000000cc000000370004000000150004000000e338070000008200 70000000cc000000370004000000150004000000e338070000008200 - {e=>7,n=>0,a=>27,m=>-1,d=>2,j=>1,l=>6,c=>-2,k=>40,h=>4,b=>0,g=>5,f=>1,o=>182,i=>-4} 1b000000b00000000f0005000000240001000000283e00000000b600 1b000000b00000000f0005000000240001000000283e00000000b600 1b000000b00000000f0005000000240001000000283e00000000b600 1b000000b00000000f0005000000240001000000283e00000000b600 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; }; - {a=>3} 03000000 03000000 03000000 03000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>1} 01000000 01000000 01000000 01000000 - {a=>6} 06000000 06000000 06000000 06000000 - {a=>5} 05000000 05000000 05000000 05000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; }; - {a=>4,b=>-3} 2c000000 2c000000 2c000000 2c000000 - {a=>7,b=>-4} 27000000 27000000 27000000 27000000 - {a=>3,b=>-3} 2b000000 2b000000 2b000000 2b000000 - {a=>3,b=>-3} 2b000000 2b000000 2b000000 2b000000 - {a=>6,b=>-3} 2e000000 2e000000 2e000000 2e000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>3,a=>7,b=>-3} ef000000 ef000000 ef000000 ef000000 - {c=>-3,a=>7,b=>-3} 6f010000 6f010000 6f010000 6f010000 - {c=>-4,a=>0,b=>2} 10010000 10010000 10010000 10010000 - {c=>1,a=>0,b=>3} 58000000 58000000 58000000 58000000 - {c=>-1,a=>5,b=>-2} f5010000 f5010000 f5010000 f5010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>1,a=>5,b=>-2,d=>7} 7500000007 7500000007 7500000007 7500000007 - {c=>-3,a=>0,b=>-4,d=>1} 6001000001 6001000001 6001000001 6001000001 - {c=>-4,a=>4,b=>-2,d=>0} 3401000000 3401000000 3401000000 3401000000 - {c=>0,a=>3,b=>3,d=>5} 1b00000005 1b00000005 1b00000005 1b00000005 - {c=>-4,a=>6,b=>2,d=>3} 1601000003 1601000003 1601000003 1601000003 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; }; - {e=>'UE6',c=>2,a=>1,b=>-1,d=>1} b90000000106000000 b90000000106000000 b90000000106000000 b90000000106000000 - {e=>'UE7',c=>-2,a=>1,b=>1,d=>0} 890100000007000000 890100000007000000 890100000007000000 890100000007000000 - {e=>'UE7',c=>-4,a=>0,b=>-1,d=>4} 380100000407000000 380100000407000000 380100000407000000 380100000407000000 - {e=>'UE0',c=>-3,a=>4,b=>-4,d=>0} 640100000000000000 640100000000000000 640100000000000000 640100000000000000 - {e=>'UE5',c=>-3,a=>5,b=>-3,d=>0} 6d0100000005000000 6d0100000005000000 6d0100000005000000 6d0100000005000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; }; - {e=>'UE2',c=>-2,a=>7,b=>1,d=>7,f=>1} 8f010000070a000000 8f010000070a000000 8f010000070a000000 8f010000070a000000 - {e=>'UE3',c=>0,a=>4,b=>2,d=>4,f=>2} 140000000413000000 140000000413000000 140000000413000000 140000000413000000 - {e=>'UE2',c=>3,a=>4,b=>0,d=>0,f=>0} c40000000002000000 c40000000002000000 c40000000002000000 c40000000002000000 - {e=>'UE1',c=>0,a=>3,b=>1,d=>0,f=>6} 0b0000000031000000 0b0000000031000000 0b0000000031000000 0b0000000031000000 - {e=>'UE2',c=>3,a=>1,b=>2,d=>3,f=>5} d1000000032a000000 d1000000032a000000 d1000000032a000000 d1000000032a000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; }; - {e=>'UE1',c=>3,a=>2,b=>-3,d=>0,f=>0} ea0000000001000000 ea0000000001000000 ea0000000001000000 ea0000000001000000 - {e=>'UE6',c=>-2,a=>7,b=>-2,d=>7,f=>1} b7010000070e000000 b7010000070e000000 b7010000070e000000 b7010000070e000000 - {e=>'UE2',c=>-2,a=>5,b=>2,d=>6,f=>5} 95010000062a000000 95010000062a000000 95010000062a000000 95010000062a000000 - {e=>'UE1',c=>2,a=>1,b=>-1,d=>4,f=>6} b90000000431000000 b90000000431000000 b90000000431000000 b90000000431000000 - {e=>'UE1',c=>3,a=>1,b=>-3,d=>3,f=>4} e90000000321000000 e90000000321000000 e90000000321000000 e90000000321000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>'UE6',c=>-2,a=>0,g=>0,b=>3,d=>6,f=>4} 98010000062600000000 98010000062600000000 98010000062600000000 98010000062600000000 - {e=>'UE4',c=>2,a=>2,g=>2,b=>-4,d=>7,f=>3} a2000000071c00000002 a2000000071c00000002 a2000000071c00000002 a2000000071c00000002 - {e=>'UE2',c=>-3,a=>4,g=>6,b=>3,d=>6,f=>7} 5c010000063a00000006 5c010000063a00000006 5c010000063a00000006 5c010000063a00000006 - {e=>'UE6',c=>-1,a=>7,g=>6,b=>2,d=>7,f=>6} d7010000073600000006 d7010000073600000006 d7010000073600000006 d7010000073600000006 - {e=>'UE3',c=>-2,a=>7,g=>2,b=>-3,d=>4,f=>7} af010000043b00000002 af010000043b00000002 af010000043b00000002 af010000043b00000002 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>'UE2',a=>3,d=>3,c=>1,h=>2,b=>-1,g=>0,f=>2} 7b000000031200000010 7b000000031200000010 7b000000031200000010 7b000000031200000010 - {e=>'UE5',a=>4,d=>6,c=>1,h=>-4,b=>-1,g=>5,f=>4} 7c000000062500000025 7c000000062500000025 7c000000062500000025 7c000000062500000025 - {e=>'UE0',a=>7,d=>2,c=>3,h=>1,b=>-3,g=>2,f=>1} ef00000002080000000a ef00000002080000000a ef00000002080000000a ef00000002080000000a - {e=>'UE0',a=>1,d=>7,c=>-3,h=>-1,b=>1,g=>3,f=>4} 4901000007200000003b 4901000007200000003b 4901000007200000003b 4901000007200000003b - {e=>'UE1',a=>5,d=>3,c=>3,h=>2,b=>-4,g=>2,f=>5} e5000000032900000012 e5000000032900000012 e5000000032900000012 e5000000032900000012 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; }; - {e=>'UE2',a=>0,d=>0,c=>-4,h=>1,b=>1,g=>0,f=>7,i=>'SEM2'} 08010000003a0000000806000000 08010000003a0000000806000000 08010000003a0000000806000000 08010000003a0000000806000000 - {e=>'UE1',a=>1,d=>7,c=>-1,h=>3,b=>2,g=>2,f=>5,i=>'SEM1'} d101000007290000001a07000000 d101000007290000001a07000000 d101000007290000001a07000000 d101000007290000001a07000000 - {e=>'UE7',a=>7,d=>3,c=>-4,h=>3,b=>-3,g=>0,f=>5,i=>'SE0'} 2f010000032f0000001800000000 2f010000032f0000001800000000 2f010000032f0000001800000000 2f010000032f0000001800000000 - {e=>'UE6',a=>6,d=>1,c=>3,h=>0,b=>1,g=>5,f=>5,i=>'SEM2'} ce000000012e0000000506000000 ce000000012e0000000506000000 ce000000012e0000000506000000 ce000000012e0000000506000000 - {e=>'UE6',a=>5,d=>4,c=>3,h=>1,b=>3,g=>2,f=>4,i=>'SE1'} dd00000004260000000a01000000 dd00000004260000000a01000000 dd00000004260000000a01000000 dd00000004260000000a01000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; }; - {e=>'UE4',a=>6,d=>2,j=>117,c=>2,h=>-4,b=>2,g=>0,f=>5,i=>'SE2'} 96000000022c000000200200000075 96000000022c000000200200000075 96000000022c000000200200000075 96000000022c000000200200000075 - {e=>'UE1',a=>3,d=>4,j=>126,c=>3,h=>0,b=>-4,g=>2,f=>5,i=>'SEM3'} e3000000042900000002050000007e e3000000042900000002050000007e e3000000042900000002050000007e e3000000042900000002050000007e - {e=>'UE4',a=>4,d=>7,j=>-36,c=>1,h=>-4,b=>-3,g=>7,f=>2,i=>'SEM2'} 6c00000007140000002706000000dc 6c00000007140000002706000000dc 6c00000007140000002706000000dc 6c00000007140000002706000000dc - {e=>'UE5',a=>1,d=>1,j=>61,c=>-3,h=>-3,b=>-4,g=>4,f=>6,i=>'SEM1'} 6101000001350000002c070000003d 6101000001350000002c070000003d 6101000001350000002c070000003d 6101000001350000002c070000003d - {e=>'UE6',a=>3,d=>1,j=>-91,c=>1,h=>-1,b=>-1,g=>6,f=>1,i=>'SEM4'} 7b000000010e0000003e04000000a5 7b000000010e0000003e04000000a5 7b000000010e0000003e04000000a5 7b000000010e0000003e04000000a5 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; }; - {e=>'UE4',a=>1,d=>0,j=>-29,c=>-3,k=>3,h=>3,b=>-1,g=>1,f=>7,i=>'SE2'} 79010000003c0000001902000000e303 79010000003c0000001902000000e303 79010000003c0000001902000000e303 79010000003c0000001902000000e303 - {e=>'UE7',a=>0,d=>6,j=>9,c=>1,k=>7,h=>2,b=>-4,g=>3,f=>4,i=>'SEM4'} 60000000062700000013040000000907 60000000062700000013040000000907 60000000062700000013040000000907 60000000062700000013040000000907 - {e=>'UE2',a=>0,d=>2,j=>101,c=>2,k=>1,h=>-4,b=>1,g=>7,f=>1,i=>'SEM2'} 88000000020a00000027060000006501 88000000020a00000027060000006501 88000000020a00000027060000006501 88000000020a00000027060000006501 - {e=>'UE3',a=>0,d=>6,j=>74,c=>1,k=>1,h=>-1,b=>1,g=>4,f=>2,i=>'SE0'} 4800000006130000003c000000004a01 4800000006130000003c000000004a01 4800000006130000003c000000004a01 4800000006130000003c000000004a01 - {e=>'UE1',a=>4,d=>7,j=>-119,c=>-3,k=>4,h=>1,b=>2,g=>7,f=>4,i=>'SEM4'} 5401000007210000000f040000008904 5401000007210000000f040000008904 5401000007210000000f040000008904 5401000007210000000f040000008904 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>'UE0',a=>5,d=>7,j=>-122,l=>-3,c=>-4,k=>2,h=>1,b=>-1,g=>4,f=>3,i=>'SEM3'} 3d01000007180000000c05000000862a 3d01000007180000000c05000000862a 3d01000007180000000c05000000862a 3d01000007180000000c05000000862a - {e=>'UE0',a=>1,d=>3,j=>-34,l=>-4,c=>-3,k=>6,h=>-3,b=>-2,g=>1,f=>7,i=>'SEM1'} 7101000003380000002907000000de26 7101000003380000002907000000de26 7101000003380000002907000000de26 7101000003380000002907000000de26 - {e=>'UE1',a=>1,d=>0,j=>86,l=>-4,c=>-3,k=>3,h=>2,b=>1,g=>0,f=>0,i=>'SEM3'} 49010000000100000010050000005623 49010000000100000010050000005623 49010000000100000010050000005623 49010000000100000010050000005623 - {e=>'UE1',a=>2,d=>1,j=>-57,l=>-1,c=>3,k=>5,h=>1,b=>-2,g=>7,f=>0,i=>'SE3'} f200000001010000000f03000000c73d f200000001010000000f03000000c73d f200000001010000000f03000000c73d f200000001010000000f03000000c73d - {e=>'UE7',a=>3,d=>1,j=>111,l=>-4,c=>-4,k=>6,h=>-3,b=>-2,g=>4,f=>3,i=>'SEM2'} 33010000011f0000002c060000006f26 33010000011f0000002c060000006f26 33010000011f0000002c060000006f26 33010000011f0000002c060000006f26 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>'UE3',a=>5,m=>4,d=>5,j=>-36,l=>2,c=>0,k=>4,h=>0,b=>-3,g=>5,f=>0,i=>'SEM1'} 2d00000005030000000507000000dc1404000000 2d00000005030000000507000000dc1404000000 2d00000005030000000507000000dc1404000000 2d00000005030000000507000000dc1404000000 - {e=>'UE7',a=>5,m=>0,d=>6,j=>-48,l=>3,c=>1,k=>3,h=>2,b=>-3,g=>2,f=>0,i=>'SE1'} 6d00000006070000001201000000d01b00000000 6d00000006070000001201000000d01b00000000 6d00000006070000001201000000d01b00000000 6d00000006070000001201000000d01b00000000 - {e=>'UE5',a=>6,m=>5,d=>5,j=>-112,l=>1,c=>-4,k=>5,h=>0,b=>2,g=>1,f=>3,i=>'SEM2'} 16010000051d0000000106000000900d05000000 16010000051d0000000106000000900d05000000 16010000051d0000000106000000900d05000000 16010000051d0000000106000000900d05000000 - {e=>'UE3',a=>5,m=>5,d=>5,j=>-44,l=>-2,c=>-3,k=>0,h=>1,b=>-1,g=>4,f=>3,i=>'SE0'} 7d010000051b0000000c00000000d43005000000 7d010000051b0000000c00000000d43005000000 7d010000051b0000000c00000000d43005000000 7d010000051b0000000c00000000d43005000000 - {e=>'UE1',a=>5,m=>1,d=>7,j=>-106,l=>0,c=>-2,k=>7,h=>-4,b=>2,g=>0,f=>0,i=>'SE2'} 9501000007010000002002000000960701000000 9501000007010000002002000000960701000000 9501000007010000002002000000960701000000 9501000007010000002002000000960701000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>'UE2',n=>245,a=>6,m=>3,d=>5,j=>21,l=>-3,c=>3,k=>3,h=>-2,b=>1,g=>3,f=>4,i=>'SE2'} ce00000005220000003302000000152b03000000f5 ce00000005220000003302000000152b03000000f5 ce00000005220000003302000000152b03000000f5 ce00000005220000003302000000152b03000000f5 - {e=>'UE4',n=>39,a=>4,m=>1,d=>1,j=>-106,l=>0,c=>-3,k=>5,h=>2,b=>1,g=>6,f=>2,i=>'SEM1'} 4c0100000114000000160700000096050100000027 4c0100000114000000160700000096050100000027 4c0100000114000000160700000096050100000027 4c0100000114000000160700000096050100000027 - {e=>'UE2',n=>222,a=>0,m=>0,d=>4,j=>23,l=>0,c=>-2,k=>3,h=>3,b=>-1,g=>2,f=>1,i=>'SE1'} b8010000040a0000001a01000000170300000000de b8010000040a0000001a01000000170300000000de b8010000040a0000001a01000000170300000000de b8010000040a0000001a01000000170300000000de - {e=>'UE1',n=>14,a=>6,m=>6,d=>0,j=>-82,l=>3,c=>-4,k=>6,h=>-2,b=>-4,g=>4,f=>7,i=>'SEM4'} 2601000000390000003404000000ae1e060000000e 2601000000390000003404000000ae1e060000000e 2601000000390000003404000000ae1e060000000e 2601000000390000003404000000ae1e060000000e - {e=>'UE5',n=>1,a=>2,m=>5,d=>2,j=>-12,l=>1,c=>-3,k=>4,h=>-3,b=>1,g=>0,f=>7,i=>'SEM3'} 4a010000023d0000002805000000f40c0500000001 4a010000023d0000002805000000f40c0500000001 4a010000023d0000002805000000f40c0500000001 4a010000023d0000002805000000f40c0500000001 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; }; - {a=>13,b=>3} 0d03000000 0d03000000 0d03000000 0d03000000 - {a=>-11,b=>1} f501000000 f501000000 f501000000 f501000000 - {a=>5,b=>2} 0502000000 0502000000 0502000000 0502000000 - {a=>-65,b=>1} bf01000000 bf01000000 bf01000000 bf01000000 - {a=>51,b=>3} 3303000000 3303000000 3303000000 3303000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; }; - {c=>3,a=>-27,b=>4} e51c000000 e51c000000 e51c000000 e51c000000 - {c=>-2,a=>123,b=>4} 7b34000000 7b34000000 7b34000000 7b34000000 - {c=>-4,a=>-38,b=>5} da25000000 da25000000 da25000000 da25000000 - {c=>-3,a=>4,b=>0} 0428000000 0428000000 0428000000 0428000000 - {c=>0,a=>-104,b=>5} 9805000000 9805000000 9805000000 9805000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>-116,b=>0,d=>-2} 8cb0010000 8cb0010000 8cb0010000 8cb0010000 - {c=>-3,a=>-33,b=>2,d=>-3} df6a010000 df6a010000 df6a010000 df6a010000 - {c=>-2,a=>-99,b=>7,d=>2} 9db7000000 9db7000000 9db7000000 9db7000000 - {c=>-4,a=>103,b=>5,d=>-3} 6765010000 6765010000 6765010000 6765010000 - {c=>1,a=>111,b=>5,d=>0} 6f0d000000 6f0d000000 6f0d000000 6f0d000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>0,a=>17,b=>1,d=>-4} 110101000001 110101000001 110101000001 110101000001 - {e=>4,c=>-2,a=>-99,b=>6,d=>-1} 9df601000004 9df601000004 9df601000004 9df601000004 - {e=>3,c=>-1,a=>-98,b=>4,d=>-1} 9efc01000003 9efc01000003 9efc01000003 9efc01000003 - {e=>1,c=>-2,a=>-9,b=>2,d=>3} f7f200000001 f7f200000001 f7f200000001 f7f200000001 - {e=>5,c=>0,a=>-8,b=>0,d=>0} f80000000005 f80000000005 f80000000005 f80000000005 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>5,c=>-1,a=>-128,b=>0,d=>2,f=>'UE2'} 80b80000000502000000 80b80000000502000000 80b80000000502000000 80b80000000502000000 - {e=>1,c=>-1,a=>19,b=>6,d=>3,f=>'UE0'} 13fe0000000100000000 13fe0000000100000000 13fe0000000100000000 13fe0000000100000000 - {e=>3,c=>1,a=>-34,b=>1,d=>-3,f=>'UE2'} de490100000302000000 de490100000302000000 de490100000302000000 de490100000302000000 - {e=>3,c=>3,a=>-85,b=>7,d=>1,f=>'UE4'} ab5f0000000304000000 ab5f0000000304000000 ab5f0000000304000000 ab5f0000000304000000 - {e=>3,c=>-3,a=>14,b=>3,d=>1,f=>'UE7'} 0e6b0000000307000000 0e6b0000000307000000 0e6b0000000307000000 0e6b0000000307000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>3,c=>-2,a=>-81,g=>5,b=>0,d=>3,f=>'UE1'} aff00000000329000000 aff00000000329000000 aff00000000329000000 aff00000000329000000 - {e=>5,c=>3,a=>-48,g=>4,b=>5,d=>-3,f=>'UE0'} d05d0100000520000000 d05d0100000520000000 d05d0100000520000000 d05d0100000520000000 - {e=>6,c=>1,a=>72,g=>3,b=>3,d=>-3,f=>'UE4'} 484b010000061c000000 484b010000061c000000 484b010000061c000000 484b010000061c000000 - {e=>5,c=>-4,a=>-73,g=>6,b=>4,d=>-1,f=>'UE3'} b7e40100000533000000 b7e40100000533000000 b7e40100000533000000 b7e40100000533000000 - {e=>4,c=>-4,a=>33,g=>5,b=>5,d=>-3,f=>'UE6'} 2165010000042e000000 2165010000042e000000 2165010000042e000000 2165010000042e000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>4,c=>2,a=>15,g=>5,b=>7,d=>1,f=>'UE1'} 0f570000000429000000 0f570000000429000000 0f570000000429000000 0f570000000429000000 - {e=>6,c=>-2,a=>117,g=>0,b=>0,d=>-2,f=>'UE3'} 75b00100000603000000 75b00100000603000000 75b00100000603000000 75b00100000603000000 - {e=>3,c=>2,a=>70,g=>7,b=>0,d=>2,f=>'UE0'} 46900000000338000000 46900000000338000000 46900000000338000000 46900000000338000000 - {e=>7,c=>-3,a=>95,g=>4,b=>2,d=>-2,f=>'UE7'} 5faa0100000727000000 5faa0100000727000000 5faa0100000727000000 5faa0100000727000000 - {e=>3,c=>0,a=>42,g=>4,b=>7,d=>2,f=>'UE4'} 2a870000000324000000 2a870000000324000000 2a870000000324000000 2a870000000324000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>-95,d=>0,c=>-2,h=>7,b=>4,g=>4,f=>'UE1'} a134000000052100000007 a134000000052100000007 a134000000052100000007 a134000000052100000007 - {e=>0,a=>79,d=>3,c=>3,h=>4,b=>2,g=>0,f=>'UE4'} 4fda000000000400000004 4fda000000000400000004 4fda000000000400000004 4fda000000000400000004 - {e=>4,a=>23,d=>0,c=>3,h=>5,b=>5,g=>0,f=>'UE4'} 171d000000040400000005 171d000000040400000005 171d000000040400000005 171d000000040400000005 - {e=>5,a=>-48,d=>2,c=>1,h=>4,b=>4,g=>4,f=>'UE1'} d08c000000052100000004 d08c000000052100000004 d08c000000052100000004 d08c000000052100000004 - {e=>1,a=>-57,d=>3,c=>1,h=>5,b=>0,g=>0,f=>'UE3'} c7c8000000010300000005 c7c8000000010300000005 c7c8000000010300000005 c7c8000000010300000005 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>5,a=>-24,d=>-4,c=>3,h=>2,b=>2,g=>3,f=>'UE2',i=>-2} e81a010000051a00000032 e81a010000051a00000032 e81a010000051a00000032 e81a010000051a00000032 - {e=>7,a=>25,d=>0,c=>3,h=>3,b=>2,g=>3,f=>'UE0',i=>0} 191a000000071800000003 191a000000071800000003 191a000000071800000003 191a000000071800000003 - {e=>3,a=>31,d=>2,c=>-1,h=>1,b=>1,g=>4,f=>'UE5',i=>1} 1fb9000000032500000009 1fb9000000032500000009 1fb9000000032500000009 1fb9000000032500000009 - {e=>4,a=>21,d=>-2,c=>1,h=>4,b=>6,g=>6,f=>'UE4',i=>-2} 158e010000043400000034 158e010000043400000034 158e010000043400000034 158e010000043400000034 - {e=>6,a=>106,d=>-1,c=>1,h=>0,b=>0,g=>4,f=>'UE5',i=>-2} 6ac8010000062500000030 6ac8010000062500000030 6ac8010000062500000030 6ac8010000062500000030 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>-92,d=>-4,j=>'SEM4',c=>1,h=>0,b=>7,g=>4,f=>'UE4',i=>0} a40f01000005240000000004000000 a40f01000005240000000004000000 a40f01000005240000000004000000 a40f01000005240000000004000000 - {e=>6,a=>89,d=>1,j=>'SEM4',c=>0,h=>5,b=>5,g=>1,f=>'UE7',i=>2} 5945000000060f0000001504000000 5945000000060f0000001504000000 5945000000060f0000001504000000 5945000000060f0000001504000000 - {e=>2,a=>15,d=>0,j=>'SEM2',c=>1,h=>1,b=>4,g=>3,f=>'UE7',i=>0} 0f0c000000021f0000000106000000 0f0c000000021f0000000106000000 0f0c000000021f0000000106000000 0f0c000000021f0000000106000000 - {e=>3,a=>-2,d=>3,j=>'SEM2',c=>1,h=>1,b=>3,g=>4,f=>'UE7',i=>1} fecb00000003270000000906000000 fecb00000003270000000906000000 fecb00000003270000000906000000 fecb00000003270000000906000000 - {e=>5,a=>113,d=>0,j=>'SE2',c=>3,h=>5,b=>4,g=>5,f=>'UE2',i=>3} 711c000000052a0000001d02000000 711c000000052a0000001d02000000 711c000000052a0000001d02000000 711c000000052a0000001d02000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>-108,d=>-2,j=>'SE0',c=>3,k=>33,h=>1,b=>5,g=>1,f=>'UE4',i=>-2} 949d010000040c000000310000000021 949d010000040c000000310000000021 949d010000040c000000310000000021 949d010000040c000000310000000021 - {e=>5,a=>-119,d=>-4,j=>'SE1',c=>-2,k=>-4,h=>2,b=>0,g=>3,f=>'UE2',i=>-4} 8930010000051a0000002201000000fc 8930010000051a0000002201000000fc 8930010000051a0000002201000000fc 8930010000051a0000002201000000fc - {e=>7,a=>-38,d=>-4,j=>'SEM1',c=>1,k=>-5,h=>1,b=>7,g=>7,f=>'UE2',i=>1} da0f010000073a0000000907000000fb da0f010000073a0000000907000000fb da0f010000073a0000000907000000fb da0f010000073a0000000907000000fb - {e=>4,a=>-11,d=>0,j=>'SEM3',c=>3,k=>-84,h=>3,b=>6,g=>3,f=>'UE3',i=>2} f51e000000041b0000001305000000ac f51e000000041b0000001305000000ac f51e000000041b0000001305000000ac f51e000000041b0000001305000000ac - {e=>0,a=>27,d=>2,j=>'SE2',c=>1,k=>-54,h=>0,b=>4,g=>1,f=>'UE4',i=>3} 1b8c000000000c0000001802000000ca 1b8c000000000c0000001802000000ca 1b8c000000000c0000001802000000ca 1b8c000000000c0000001802000000ca = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>4,a=>-97,d=>3,j=>'SEM4',l=>0,c=>-2,k=>122,h=>3,b=>1,g=>1,f=>'UE3',i=>1} 9ff1000000040b0000000b040000007a00 9ff1000000040b0000000b040000007a00 9ff1000000040b0000000b040000007a00 9ff1000000040b0000000b040000007a00 - {e=>4,a=>-122,d=>3,j=>'SEM2',l=>1,c=>3,k=>50,h=>0,b=>4,g=>5,f=>'UE0',i=>-3} 86dc000000042800000028060000003201 86dc000000042800000028060000003201 86dc000000042800000028060000003201 86dc000000042800000028060000003201 - {e=>1,a=>-106,d=>0,j=>'SEM1',l=>1,c=>3,k=>-92,h=>5,b=>3,g=>7,f=>'UE1',i=>1} 961b00000001390000000d07000000a401 961b00000001390000000d07000000a401 961b00000001390000000d07000000a401 961b00000001390000000d07000000a401 - {e=>5,a=>-50,d=>0,j=>'SE1',l=>0,c=>-2,k=>62,h=>7,b=>3,g=>6,f=>'UE5',i=>0} ce33000000053500000007010000003e00 ce33000000053500000007010000003e00 ce33000000053500000007010000003e00 ce33000000053500000007010000003e00 - {e=>5,a=>100,d=>0,j=>'SE3',l=>3,c=>-4,k=>67,h=>1,b=>1,g=>7,f=>'UE3',i=>1} 6421000000053b00000009030000004303 6421000000053b00000009030000004303 6421000000053b00000009030000004303 6421000000053b00000009030000004303 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>3,a=>18,m=>-4,d=>-2,j=>'SE0',l=>1,c=>-3,k=>-93,h=>5,b=>2,g=>6,f=>'UE1',i=>3} 12aa01000003310000001d00000000a321 12aa01000003310000001d00000000a321 12aa01000003310000001d00000000a321 12aa01000003310000001d00000000a321 - {e=>3,a=>-79,m=>-4,d=>0,j=>'SEM1',l=>5,c=>3,k=>20,h=>2,b=>5,g=>5,f=>'UE2',i=>-3} b11d000000032a0000002a070000001425 b11d000000032a0000002a070000001425 b11d000000032a0000002a070000001425 b11d000000032a0000002a070000001425 - {e=>1,a=>16,m=>-1,d=>2,j=>'SEM3',l=>5,c=>1,k=>116,h=>3,b=>7,g=>5,f=>'UE1',i=>-3} 108f00000001290000002b05000000743d 108f00000001290000002b05000000743d 108f00000001290000002b05000000743d 108f00000001290000002b05000000743d - {e=>3,a=>33,m=>-2,d=>0,j=>'SE0',l=>4,c=>3,k=>98,h=>3,b=>1,g=>6,f=>'UE6',i=>0} 2119000000033600000003000000006234 2119000000033600000003000000006234 2119000000033600000003000000006234 2119000000033600000003000000006234 - {e=>7,a=>-14,m=>-4,d=>-2,j=>'SE2',l=>7,c=>1,k=>-62,h=>0,b=>2,g=>0,f=>'UE2',i=>-1} f28a01000007020000003802000000c227 f28a01000007020000003802000000c227 f28a01000007020000003802000000c227 f28a01000007020000003802000000c227 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>2,n=>0,a=>-27,m=>-4,d=>-3,j=>'SEM3',l=>3,c=>3,k=>23,h=>3,b=>6,g=>7,f=>'UE4',i=>-3} e55e010000023c0000002b05000000172300000000 e55e010000023c0000002b05000000172300000000 e55e010000023c0000002b05000000172300000000 e55e010000023c0000002b05000000172300000000 - {e=>4,n=>7,a=>-105,m=>-4,d=>-4,j=>'SE0',l=>6,c=>2,k=>99,h=>3,b=>1,g=>6,f=>'UE0',i=>2} 971101000004300000001300000000632607000000 971101000004300000001300000000632607000000 971101000004300000001300000000632607000000 971101000004300000001300000000632607000000 - {e=>4,n=>4,a=>96,m=>-3,d=>-3,j=>'SEM2',l=>4,c=>-1,k=>7,h=>7,b=>3,g=>5,f=>'UE3',i=>1} 607b010000042b0000000f06000000072c04000000 607b010000042b0000000f06000000072c04000000 607b010000042b0000000f06000000072c04000000 607b010000042b0000000f06000000072c04000000 - {e=>0,n=>4,a=>-116,m=>-1,d=>-4,j=>'SE1',l=>1,c=>0,k=>-79,h=>4,b=>7,g=>6,f=>'UE4',i=>-2} 8c0701000000340000003401000000b13904000000 8c0701000000340000003401000000b13904000000 8c0701000000340000003401000000b13904000000 8c0701000000340000003401000000b13904000000 - {e=>3,n=>0,a=>75,m=>0,d=>1,j=>'SEM4',l=>3,c=>-1,k=>-22,h=>4,b=>7,g=>7,f=>'UE1',i=>-2} 4b7f00000003390000003404000000ea0300000000 4b7f00000003390000003404000000ea0300000000 4b7f00000003390000003404000000ea0300000000 4b7f00000003390000003404000000ea0300000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>0,a=>-125,m=>1,d=>-1,j=>'SE1',l=>4,c=>3,k=>75,h=>2,b=>4,g=>2,f=>'UE4',o=>207,i=>1} 83dc01000007140000000a010000004b0c00000000cf 83dc01000007140000000a010000004b0c00000000cf 83dc01000007140000000a010000004b0c00000000cf 83dc01000007140000000a010000004b0c00000000cf - {e=>5,n=>5,a=>123,m=>2,d=>2,j=>'SEM4',l=>0,c=>-1,k=>-99,h=>5,b=>0,g=>6,f=>'UE2',o=>139,i=>0} 7bb8000000053200000005040000009d10050000008b 7bb8000000053200000005040000009d10050000008b 7bb8000000053200000005040000009d10050000008b 7bb8000000053200000005040000009d10050000008b - {e=>4,n=>3,a=>11,m=>-1,d=>-1,j=>'SE1',l=>7,c=>-1,k=>-112,h=>3,b=>4,g=>6,f=>'UE7',o=>200,i=>-2} 0bfc01000004370000003301000000903f03000000c8 0bfc01000004370000003301000000903f03000000c8 0bfc01000004370000003301000000903f03000000c8 0bfc01000004370000003301000000903f03000000c8 - {e=>3,n=>1,a=>-24,m=>1,d=>1,j=>'SE3',l=>4,c=>1,k=>14,h=>1,b=>5,g=>4,f=>'UE3',o=>226,i=>1} e84d000000032300000009030000000e0c01000000e2 e84d000000032300000009030000000e0c01000000e2 e84d000000032300000009030000000e0c01000000e2 e84d000000032300000009030000000e0c01000000e2 - {e=>1,n=>3,a=>-40,m=>-4,d=>3,j=>'SE0',l=>2,c=>3,k=>-119,h=>2,b=>6,g=>1,f=>'UE3',o=>233,i=>0} d8de000000010b0000000200000000892203000000e9 d8de000000010b0000000200000000892203000000e9 d8de000000010b0000000200000000892203000000e9 d8de000000010b0000000200000000892203000000e9 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; }; - {a=>66,b=>2} 420002000000 420002000000 420002000000 420002000000 - {a=>47,b=>3} 2f0003000000 2f0003000000 2f0003000000 2f0003000000 - {a=>34,b=>7} 220007000000 220007000000 220007000000 220007000000 - {a=>-104,b=>2} 98ff02000000 98ff02000000 98ff02000000 98ff02000000 - {a=>43,b=>2} 2b0002000000 2b0002000000 2b0002000000 2b0002000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; }; - {c=>1,a=>3,b=>3} 03000b000000 03000b000000 03000b000000 03000b000000 - {c=>-2,a=>65,b=>7} 410037000000 410037000000 410037000000 410037000000 - {c=>-2,a=>41,b=>1} 290031000000 290031000000 290031000000 290031000000 - {c=>2,a=>111,b=>5} 6f0015000000 6f0015000000 6f0015000000 6f0015000000 - {c=>-2,a=>11,b=>1} 0b0031000000 0b0031000000 0b0031000000 0b0031000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>1,a=>121,b=>6,d=>-2} 79008e010000 79008e010000 79008e010000 79008e010000 - {c=>2,a=>-66,b=>7,d=>-3} beff57010000 beff57010000 beff57010000 beff57010000 - {c=>3,a=>-37,b=>3,d=>1} dbff5b000000 dbff5b000000 dbff5b000000 dbff5b000000 - {c=>-1,a=>-22,b=>6,d=>-3} eaff7e010000 eaff7e010000 eaff7e010000 eaff7e010000 - {c=>-1,a=>-107,b=>1,d=>-2} 95ffb9010000 95ffb9010000 95ffb9010000 95ffb9010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>3,a=>113,b=>7,d=>2} 71009f00000002 71009f00000002 71009f00000002 71009f00000002 - {e=>3,c=>2,a=>104,b=>0,d=>-2} 68009001000003 68009001000003 68009001000003 68009001000003 - {e=>4,c=>-4,a=>91,b=>2,d=>-1} 5b00e201000004 5b00e201000004 5b00e201000004 5b00e201000004 - {e=>1,c=>0,a=>-67,b=>3,d=>0} bdff0300000001 bdff0300000001 bdff0300000001 bdff0300000001 - {e=>6,c=>-2,a=>-125,b=>5,d=>-2} 83ffb501000006 83ffb501000006 83ffb501000006 83ffb501000006 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>-4,a=>63,b=>1,d=>-3,f=>'UE7'} 3f00610100000407000000 3f00610100000407000000 3f00610100000407000000 3f00610100000407000000 - {e=>2,c=>2,a=>20,b=>1,d=>-4,f=>'UE1'} 1400110100000201000000 1400110100000201000000 1400110100000201000000 1400110100000201000000 - {e=>6,c=>-3,a=>-51,b=>5,d=>1,f=>'UE1'} cdff6d0000000601000000 cdff6d0000000601000000 cdff6d0000000601000000 cdff6d0000000601000000 - {e=>6,c=>0,a=>82,b=>2,d=>0,f=>'UE0'} 5200020000000600000000 5200020000000600000000 5200020000000600000000 5200020000000600000000 - {e=>5,c=>-4,a=>32,b=>4,d=>0,f=>'UE6'} 2000240000000506000000 2000240000000506000000 2000240000000506000000 2000240000000506000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>0,c=>-4,a=>-51,g=>5,b=>5,d=>1,f=>'UE0'} cdff650000000028000000 cdff650000000028000000 cdff650000000028000000 cdff650000000028000000 - {e=>3,c=>-3,a=>51,g=>5,b=>3,d=>1,f=>'UE7'} 33006b000000032f000000 33006b000000032f000000 33006b000000032f000000 33006b000000032f000000 - {e=>2,c=>-3,a=>-58,g=>5,b=>3,d=>3,f=>'UE3'} c6ffeb000000022b000000 c6ffeb000000022b000000 c6ffeb000000022b000000 c6ffeb000000022b000000 - {e=>5,c=>1,a=>-74,g=>7,b=>3,d=>-2,f=>'UE3'} b6ff8b010000053b000000 b6ff8b010000053b000000 b6ff8b010000053b000000 b6ff8b010000053b000000 - {e=>3,c=>1,a=>90,g=>5,b=>1,d=>3,f=>'UE6'} 5a00c9000000032e000000 5a00c9000000032e000000 5a00c9000000032e000000 5a00c9000000032e000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>7,c=>-4,a=>20,g=>5,b=>1,d=>2,f=>'UE0'} 1400a10000000728000000 1400a10000000728000000 1400a10000000728000000 1400a10000000728000000 - {e=>3,c=>-3,a=>78,g=>5,b=>4,d=>2,f=>'UE5'} 4e00ac000000032d000000 4e00ac000000032d000000 4e00ac000000032d000000 4e00ac000000032d000000 - {e=>6,c=>3,a=>-109,g=>0,b=>6,d=>2,f=>'UE4'} 93ff9e0000000604000000 93ff9e0000000604000000 93ff9e0000000604000000 93ff9e0000000604000000 - {e=>5,c=>0,a=>92,g=>2,b=>4,d=>1,f=>'UE1'} 5c00440000000511000000 5c00440000000511000000 5c00440000000511000000 5c00440000000511000000 - {e=>6,c=>2,a=>-108,g=>4,b=>7,d=>-1,f=>'UE4'} 94ffd70100000624000000 94ffd70100000624000000 94ffd70100000624000000 94ffd70100000624000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>3,a=>8,d=>-1,c=>-4,h=>6,b=>1,g=>5,f=>'UE6'} 0800e1010000032e00000006 0800e1010000032e00000006 0800e1010000032e00000006 0800e1010000032e00000006 - {e=>4,a=>118,d=>1,c=>0,h=>2,b=>3,g=>1,f=>'UE6'} 760043000000040e00000002 760043000000040e00000002 760043000000040e00000002 760043000000040e00000002 - {e=>7,a=>27,d=>-4,c=>2,h=>1,b=>4,g=>3,f=>'UE2'} 1b0014010000071a00000001 1b0014010000071a00000001 1b0014010000071a00000001 1b0014010000071a00000001 - {e=>0,a=>91,d=>-2,c=>3,h=>3,b=>5,g=>1,f=>'UE6'} 5b009d010000000e00000003 5b009d010000000e00000003 5b009d010000000e00000003 5b009d010000000e00000003 - {e=>2,a=>70,d=>-3,c=>1,h=>6,b=>6,g=>5,f=>'UE4'} 46004e010000022c00000006 46004e010000022c00000006 46004e010000022c00000006 46004e010000022c00000006 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>-26,d=>1,c=>-1,h=>0,b=>3,g=>0,f=>'UE4',i=>-4} e6ff7b000000020400000020 e6ff7b000000020400000020 e6ff7b000000020400000020 e6ff7b000000020400000020 - {e=>0,a=>70,d=>3,c=>0,h=>3,b=>0,g=>5,f=>'UE0',i=>1} 4600c000000000280000000b 4600c000000000280000000b 4600c000000000280000000b 4600c000000000280000000b - {e=>1,a=>17,d=>3,c=>-4,h=>3,b=>1,g=>1,f=>'UE4',i=>-1} 1100e1000000010c0000003b 1100e1000000010c0000003b 1100e1000000010c0000003b 1100e1000000010c0000003b - {e=>2,a=>39,d=>1,c=>1,h=>0,b=>1,g=>0,f=>'UE1',i=>0} 270049000000020100000000 270049000000020100000000 270049000000020100000000 270049000000020100000000 - {e=>6,a=>-65,d=>-2,c=>-1,h=>2,b=>6,g=>7,f=>'UE1',i=>-4} bfffbe010000063900000022 bfffbe010000063900000022 bfffbe010000063900000022 bfffbe010000063900000022 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>7,a=>118,d=>1,j=>'SE2',c=>1,h=>6,b=>3,g=>5,f=>'UE4',i=>2} 76004b000000072c0000001602000000 76004b000000072c0000001602000000 76004b000000072c0000001602000000 76004b000000072c0000001602000000 - {e=>0,a=>32,d=>2,j=>'SE3',c=>2,h=>5,b=>3,g=>7,f=>'UE1',i=>-4} 20009300000000390000002503000000 20009300000000390000002503000000 20009300000000390000002503000000 20009300000000390000002503000000 - {e=>2,a=>88,d=>0,j=>'SEM3',c=>1,h=>5,b=>2,g=>2,f=>'UE0',i=>1} 58000a00000002100000000d05000000 58000a00000002100000000d05000000 58000a00000002100000000d05000000 58000a00000002100000000d05000000 - {e=>7,a=>105,d=>-3,j=>'SE3',c=>0,h=>0,b=>3,g=>2,f=>'UE0',i=>-2} 69004301000007100000003003000000 69004301000007100000003003000000 69004301000007100000003003000000 69004301000007100000003003000000 - {e=>4,a=>-56,d=>-2,j=>'SE0',c=>-3,h=>4,b=>1,g=>4,f=>'UE4',i=>2} c8ffa901000004240000001400000000 c8ffa901000004240000001400000000 c8ffa901000004240000001400000000 c8ffa901000004240000001400000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>0,a=>-104,d=>-4,j=>'SE0',c=>-2,k=>8,h=>1,b=>4,g=>6,f=>'UE1',i=>1} 98ff340100000031000000090000000008 98ff340100000031000000090000000008 98ff340100000031000000090000000008 98ff340100000031000000090000000008 - {e=>2,a=>-127,d=>-1,j=>'SE0',c=>0,k=>-15,h=>5,b=>7,g=>0,f=>'UE1',i=>-1} 81ffc701000002010000003d00000000f1 81ffc701000002010000003d00000000f1 81ffc701000002010000003d00000000f1 81ffc701000002010000003d00000000f1 - {e=>0,a=>47,d=>2,j=>'SEM2',c=>-4,k=>-44,h=>0,b=>7,g=>0,f=>'UE3',i=>-3} 2f00a700000000030000002806000000d4 2f00a700000000030000002806000000d4 2f00a700000000030000002806000000d4 2f00a700000000030000002806000000d4 - {e=>7,a=>116,d=>-1,j=>'SEM3',c=>-3,k=>-14,h=>3,b=>5,g=>1,f=>'UE7',i=>2} 7400ed010000070f0000001305000000f2 7400ed010000070f0000001305000000f2 7400ed010000070f0000001305000000f2 7400ed010000070f0000001305000000f2 - {e=>7,a=>45,d=>-1,j=>'SE3',c=>-4,k=>65,h=>3,b=>2,g=>6,f=>'UE0',i=>1} 2d00e201000007300000000b0300000041 2d00e201000007300000000b0300000041 2d00e201000007300000000b0300000041 2d00e201000007300000000b0300000041 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>1,a=>-38,d=>0,j=>'SEM4',l=>1,c=>3,k=>122,h=>0,b=>3,g=>6,f=>'UE0',i=>-4} daff1b000000013000000020040000007a01 daff1b000000013000000020040000007a01 daff1b000000013000000020040000007a01 daff1b000000013000000020040000007a01 - {e=>6,a=>-120,d=>-2,j=>'SE0',l=>0,c=>2,k=>-45,h=>4,b=>5,g=>6,f=>'UE7',i=>-1} 88ff9501000006370000003c00000000d300 88ff9501000006370000003c00000000d300 88ff9501000006370000003c00000000d300 88ff9501000006370000003c00000000d300 - {e=>2,a=>115,d=>3,j=>'SEM4',l=>2,c=>-1,k=>-24,h=>4,b=>3,g=>1,f=>'UE2',i=>-3} 7300fb000000020a0000002c04000000e802 7300fb000000020a0000002c04000000e802 7300fb000000020a0000002c04000000e802 7300fb000000020a0000002c04000000e802 - {e=>2,a=>-120,d=>2,j=>'SEM3',l=>5,c=>-3,k=>-38,h=>3,b=>5,g=>5,f=>'UE0',i=>0} 88ffad00000002280000000305000000da05 88ffad00000002280000000305000000da05 88ffad00000002280000000305000000da05 88ffad00000002280000000305000000da05 - {e=>1,a=>-3,d=>3,j=>'SEM4',l=>6,c=>3,k=>-72,h=>4,b=>1,g=>3,f=>'UE4',i=>-3} fdffd9000000011c0000002c04000000b806 fdffd9000000011c0000002c04000000b806 fdffd9000000011c0000002c04000000b806 fdffd9000000011c0000002c04000000b806 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>-115,m=>-1,d=>1,j=>'SE1',l=>5,c=>3,k=>34,h=>4,b=>3,g=>5,f=>'UE3',i=>-1} 8dff5b000000002b0000003c01000000223d 8dff5b000000002b0000003c01000000223d 8dff5b000000002b0000003c01000000223d 8dff5b000000002b0000003c01000000223d - {e=>7,a=>101,m=>-3,d=>2,j=>'SE2',l=>7,c=>2,k=>33,h=>5,b=>4,g=>7,f=>'UE5',i=>1} 650094000000073d0000000d02000000212f 650094000000073d0000000d02000000212f 650094000000073d0000000d02000000212f 650094000000073d0000000d02000000212f - {e=>4,a=>75,m=>-2,d=>-1,j=>'SE0',l=>6,c=>-4,k=>-42,h=>0,b=>5,g=>5,f=>'UE2',i=>-1} 4b00e5010000042a0000003800000000d636 4b00e5010000042a0000003800000000d636 4b00e5010000042a0000003800000000d636 4b00e5010000042a0000003800000000d636 - {e=>4,a=>124,m=>-2,d=>1,j=>'SE0',l=>2,c=>2,k=>-11,h=>2,b=>2,g=>2,f=>'UE5',i=>-1} 7c005200000004150000003a00000000f532 7c005200000004150000003a00000000f532 7c005200000004150000003a00000000f532 7c005200000004150000003a00000000f532 - {e=>1,a=>39,m=>-2,d=>2,j=>'SE1',l=>5,c=>0,k=>86,h=>1,b=>1,g=>0,f=>'UE6',i=>-4} 270081000000010600000021010000005635 270081000000010600000021010000005635 270081000000010600000021010000005635 270081000000010600000021010000005635 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>6,a=>-69,m=>-2,d=>1,j=>'SE2',l=>5,c=>3,k=>-27,h=>7,b=>0,g=>7,f=>'UE6',i=>-2} bbff58000000053e0000003702000000e53506000000 bbff58000000053e0000003702000000e53506000000 bbff58000000053e0000003702000000e53506000000 bbff58000000053e0000003702000000e53506000000 - {e=>5,n=>2,a=>107,m=>-3,d=>0,j=>'SE1',l=>1,c=>-4,k=>111,h=>1,b=>0,g=>4,f=>'UE6',i=>-2} 6b0020000000052600000031010000006f2902000000 6b0020000000052600000031010000006f2902000000 6b0020000000052600000031010000006f2902000000 6b0020000000052600000031010000006f2902000000 - {e=>4,n=>7,a=>-128,m=>-2,d=>-1,j=>'SEM2',l=>7,c=>-4,k=>-5,h=>5,b=>5,g=>1,f=>'UE7',i=>-4} 80ffe5010000040f0000002506000000fb3707000000 80ffe5010000040f0000002506000000fb3707000000 80ffe5010000040f0000002506000000fb3707000000 80ffe5010000040f0000002506000000fb3707000000 - {e=>4,n=>4,a=>-44,m=>0,d=>3,j=>'SEM3',l=>3,c=>1,k=>-62,h=>4,b=>0,g=>2,f=>'UE5',i=>-1} d4ffc800000004150000003c05000000c20304000000 d4ffc800000004150000003c05000000c20304000000 d4ffc800000004150000003c05000000c20304000000 d4ffc800000004150000003c05000000c20304000000 - {e=>1,n=>3,a=>20,m=>0,d=>-3,j=>'SE0',l=>7,c=>3,k=>86,h=>1,b=>3,g=>2,f=>'UE2',i=>3} 14005b01000001120000001900000000560703000000 14005b01000001120000001900000000560703000000 14005b01000001120000001900000000560703000000 14005b01000001120000001900000000560703000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>7,a=>-36,m=>-2,d=>-4,j=>'SEM1',l=>5,c=>-4,k=>-30,h=>6,b=>2,g=>7,f=>'UE1',o=>11,i=>-1} dcff2201000000390000003e07000000e235070000000b dcff2201000000390000003e07000000e235070000000b dcff2201000000390000003e07000000e235070000000b dcff2201000000390000003e07000000e235070000000b - {e=>1,n=>0,a=>47,m=>2,d=>-1,j=>'SE1',l=>6,c=>2,k=>19,h=>7,b=>5,g=>3,f=>'UE5',o=>117,i=>-1} 2f00d5010000011d0000003f0100000013160000000075 2f00d5010000011d0000003f0100000013160000000075 2f00d5010000011d0000003f0100000013160000000075 2f00d5010000011d0000003f0100000013160000000075 - {e=>3,n=>4,a=>60,m=>-4,d=>0,j=>'SE0',l=>6,c=>-2,k=>48,h=>1,b=>2,g=>6,f=>'UE7',o=>42,i=>1} 3c0032000000033700000009000000003026040000002a 3c0032000000033700000009000000003026040000002a 3c0032000000033700000009000000003026040000002a 3c0032000000033700000009000000003026040000002a - {e=>1,n=>2,a=>116,m=>1,d=>-4,j=>'SEM2',l=>7,c=>3,k=>100,h=>0,b=>7,g=>2,f=>'UE3',o=>77,i=>-1} 74001f01000001130000003806000000640f020000004d 74001f01000001130000003806000000640f020000004d 74001f01000001130000003806000000640f020000004d 74001f01000001130000003806000000640f020000004d - {e=>1,n=>7,a=>-98,m=>-3,d=>2,j=>'SEM4',l=>5,c=>0,k=>27,h=>7,b=>1,g=>1,f=>'UE2',o=>35,i=>-2} 9eff81000000010a00000037040000001b2d0700000023 9eff81000000010a00000037040000001b2d0700000023 9eff81000000010a00000037040000001b2d0700000023 9eff81000000010a00000037040000001b2d0700000023 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; }; - {a=>54,b=>7} 3600000007000000 3600000007000000 3600000007000000 3600000007000000 - {a=>-14,b=>1} f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 f2ffffff01000000 - {a=>8,b=>5} 0800000005000000 0800000005000000 0800000005000000 0800000005000000 - {a=>-128,b=>2} 80ffffff02000000 80ffffff02000000 80ffffff02000000 80ffffff02000000 - {a=>89,b=>7} 5900000007000000 5900000007000000 5900000007000000 5900000007000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>71,b=>4} 4700000024000000 4700000024000000 4700000024000000 4700000024000000 - {c=>-1,a=>22,b=>7} 160000003f000000 160000003f000000 160000003f000000 160000003f000000 - {c=>3,a=>6,b=>4} 060000001c000000 060000001c000000 060000001c000000 060000001c000000 - {c=>0,a=>5,b=>7} 0500000007000000 0500000007000000 0500000007000000 0500000007000000 - {c=>-1,a=>71,b=>5} 470000003d000000 470000003d000000 470000003d000000 470000003d000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>-39,b=>5,d=>-4} d9ffffff2d010000 d9ffffff2d010000 d9ffffff2d010000 d9ffffff2d010000 - {c=>1,a=>-63,b=>0,d=>-1} c1ffffffc8010000 c1ffffffc8010000 c1ffffffc8010000 c1ffffffc8010000 - {c=>3,a=>-125,b=>4,d=>1} 83ffffff5c000000 83ffffff5c000000 83ffffff5c000000 83ffffff5c000000 - {c=>-4,a=>-67,b=>6,d=>-1} bdffffffe6010000 bdffffffe6010000 bdffffffe6010000 bdffffffe6010000 - {c=>3,a=>-19,b=>7,d=>-4} edffffff1f010000 edffffff1f010000 edffffff1f010000 edffffff1f010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>2,c=>-1,a=>96,b=>4,d=>1} 600000007c00000002 600000007c00000002 600000007c00000002 600000007c00000002 - {e=>0,c=>1,a=>-33,b=>2,d=>0} dfffffff0a00000000 dfffffff0a00000000 dfffffff0a00000000 dfffffff0a00000000 - {e=>1,c=>-3,a=>-123,b=>4,d=>-2} 85ffffffac01000001 85ffffffac01000001 85ffffffac01000001 85ffffffac01000001 - {e=>2,c=>0,a=>-85,b=>3,d=>2} abffffff8300000002 abffffff8300000002 abffffff8300000002 abffffff8300000002 - {e=>5,c=>2,a=>93,b=>6,d=>-3} 5d0000005601000005 5d0000005601000005 5d0000005601000005 5d0000005601000005 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>-2,a=>-117,b=>4,d=>2,f=>'UE6'} 8bffffffb40000000406000000 8bffffffb40000000406000000 8bffffffb40000000406000000 8bffffffb40000000406000000 - {e=>2,c=>-4,a=>78,b=>0,d=>-2,f=>'UE4'} 4e000000a00100000204000000 4e000000a00100000204000000 4e000000a00100000204000000 4e000000a00100000204000000 - {e=>3,c=>3,a=>-102,b=>0,d=>-3,f=>'UE2'} 9affffff580100000302000000 9affffff580100000302000000 9affffff580100000302000000 9affffff580100000302000000 - {e=>3,c=>-4,a=>10,b=>2,d=>0,f=>'UE1'} 0a000000220000000301000000 0a000000220000000301000000 0a000000220000000301000000 0a000000220000000301000000 - {e=>5,c=>3,a=>112,b=>7,d=>-2,f=>'UE1'} 700000009f0100000501000000 700000009f0100000501000000 700000009f0100000501000000 700000009f0100000501000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>4,c=>3,a=>77,g=>5,b=>3,d=>2,f=>'UE5'} 4d0000009b000000042d000000 4d0000009b000000042d000000 4d0000009b000000042d000000 4d0000009b000000042d000000 - {e=>7,c=>3,a=>5,g=>6,b=>2,d=>0,f=>'UE5'} 050000001a0000000735000000 050000001a0000000735000000 050000001a0000000735000000 050000001a0000000735000000 - {e=>7,c=>-2,a=>-24,g=>2,b=>0,d=>3,f=>'UE1'} e8fffffff00000000711000000 e8fffffff00000000711000000 e8fffffff00000000711000000 e8fffffff00000000711000000 - {e=>7,c=>3,a=>-1,g=>3,b=>6,d=>-2,f=>'UE6'} ffffffff9e010000071e000000 ffffffff9e010000071e000000 ffffffff9e010000071e000000 ffffffff9e010000071e000000 - {e=>1,c=>-1,a=>-111,g=>1,b=>4,d=>1,f=>'UE5'} 91ffffff7c000000010d000000 91ffffff7c000000010d000000 91ffffff7c000000010d000000 91ffffff7c000000010d000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>3,c=>-3,a=>50,g=>6,b=>2,d=>-3,f=>'UE2'} 320000006a0100000332000000 320000006a0100000332000000 320000006a0100000332000000 320000006a0100000332000000 - {e=>2,c=>-3,a=>47,g=>0,b=>3,d=>-3,f=>'UE1'} 2f0000006b0100000201000000 2f0000006b0100000201000000 2f0000006b0100000201000000 2f0000006b0100000201000000 - {e=>0,c=>0,a=>-123,g=>6,b=>6,d=>-3,f=>'UE4'} 85ffffff460100000034000000 85ffffff460100000034000000 85ffffff460100000034000000 85ffffff460100000034000000 - {e=>1,c=>-2,a=>-46,g=>4,b=>5,d=>0,f=>'UE6'} d2ffffff350000000126000000 d2ffffff350000000126000000 d2ffffff350000000126000000 d2ffffff350000000126000000 - {e=>4,c=>-4,a=>41,g=>7,b=>7,d=>-2,f=>'UE3'} 29000000a7010000043b000000 29000000a7010000043b000000 29000000a7010000043b000000 29000000a7010000043b000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>4,a=>-86,d=>3,c=>3,h=>2,b=>7,g=>7,f=>'UE7'} aaffffffdf000000043f00000002 aaffffffdf000000043f00000002 aaffffffdf000000043f00000002 aaffffffdf000000043f00000002 - {e=>4,a=>64,d=>2,c=>1,h=>5,b=>5,g=>4,f=>'UE0'} 400000008d000000042000000005 400000008d000000042000000005 400000008d000000042000000005 400000008d000000042000000005 - {e=>4,a=>-56,d=>2,c=>-4,h=>6,b=>5,g=>1,f=>'UE6'} c8ffffffa5000000040e00000006 c8ffffffa5000000040e00000006 c8ffffffa5000000040e00000006 c8ffffffa5000000040e00000006 - {e=>6,a=>78,d=>3,c=>-1,h=>3,b=>0,g=>6,f=>'UE4'} 4e000000f8000000063400000003 4e000000f8000000063400000003 4e000000f8000000063400000003 4e000000f8000000063400000003 - {e=>7,a=>-101,d=>0,c=>-2,h=>6,b=>1,g=>4,f=>'UE1'} 9bffffff31000000072100000006 9bffffff31000000072100000006 9bffffff31000000072100000006 9bffffff31000000072100000006 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>4,a=>98,d=>1,c=>0,h=>3,b=>1,g=>0,f=>'UE5',i=>-4} 6200000041000000040500000023 6200000041000000040500000023 6200000041000000040500000023 6200000041000000040500000023 - {e=>6,a=>-56,d=>-2,c=>-4,h=>6,b=>4,g=>7,f=>'UE5',i=>2} c8ffffffa4010000063d00000016 c8ffffffa4010000063d00000016 c8ffffffa4010000063d00000016 c8ffffffa4010000063d00000016 - {e=>3,a=>-48,d=>0,c=>1,h=>5,b=>7,g=>5,f=>'UE1',i=>3} d0ffffff0f00000003290000001d d0ffffff0f00000003290000001d d0ffffff0f00000003290000001d d0ffffff0f00000003290000001d - {e=>0,a=>-14,d=>-1,c=>-4,h=>1,b=>1,g=>4,f=>'UE1',i=>1} f2ffffffe1010000002100000009 f2ffffffe1010000002100000009 f2ffffffe1010000002100000009 f2ffffffe1010000002100000009 - {e=>4,a=>-3,d=>3,c=>2,h=>1,b=>6,g=>6,f=>'UE4',i=>-2} fdffffffd6000000043400000031 fdffffffd6000000043400000031 fdffffffd6000000043400000031 fdffffffd6000000043400000031 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>7,a=>-125,d=>-1,j=>'SE0',c=>-3,h=>0,b=>3,g=>0,f=>'UE0',i=>0} 83ffffffeb01000007000000000000000000 83ffffffeb01000007000000000000000000 83ffffffeb01000007000000000000000000 83ffffffeb01000007000000000000000000 - {e=>4,a=>-83,d=>1,j=>'SEM1',c=>-2,h=>0,b=>5,g=>2,f=>'UE1',i=>3} adffffff7500000004110000001807000000 adffffff7500000004110000001807000000 adffffff7500000004110000001807000000 adffffff7500000004110000001807000000 - {e=>1,a=>118,d=>-1,j=>'SE0',c=>1,h=>6,b=>1,g=>5,f=>'UE7',i=>0} 76000000c9010000012f0000000600000000 76000000c9010000012f0000000600000000 76000000c9010000012f0000000600000000 76000000c9010000012f0000000600000000 - {e=>1,a=>-5,d=>-4,j=>'SE0',c=>0,h=>0,b=>6,g=>3,f=>'UE3',i=>2} fbffffff06010000011b0000001000000000 fbffffff06010000011b0000001000000000 fbffffff06010000011b0000001000000000 fbffffff06010000011b0000001000000000 - {e=>0,a=>70,d=>-3,j=>'SEM1',c=>0,h=>3,b=>5,g=>3,f=>'UE5',i=>2} 4600000045010000001d0000001307000000 4600000045010000001d0000001307000000 4600000045010000001d0000001307000000 4600000045010000001d0000001307000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>0,a=>2,d=>0,j=>'SE2',c=>2,k=>37,h=>4,b=>1,g=>0,f=>'UE2',i=>0} 02000000110000000002000000040200000025 02000000110000000002000000040200000025 02000000110000000002000000040200000025 02000000110000000002000000040200000025 - {e=>1,a=>68,d=>-2,j=>'SEM2',c=>-4,k=>-109,h=>0,b=>4,g=>2,f=>'UE5',i=>0} 44000000a40100000115000000000600000093 44000000a40100000115000000000600000093 44000000a40100000115000000000600000093 44000000a40100000115000000000600000093 - {e=>4,a=>117,d=>-4,j=>'SEM4',c=>2,k=>-10,h=>7,b=>3,g=>1,f=>'UE3',i=>-2} 7500000013010000040b0000003704000000f6 7500000013010000040b0000003704000000f6 7500000013010000040b0000003704000000f6 7500000013010000040b0000003704000000f6 - {e=>7,a=>-56,d=>-3,j=>'SE2',c=>3,k=>30,h=>7,b=>6,g=>5,f=>'UE5',i=>-1} c8ffffff5e010000072d0000003f020000001e c8ffffff5e010000072d0000003f020000001e c8ffffff5e010000072d0000003f020000001e c8ffffff5e010000072d0000003f020000001e - {e=>1,a=>-1,d=>-2,j=>'SEM1',c=>-3,k=>-71,h=>6,b=>6,g=>3,f=>'UE2',i=>-3} ffffffffae010000011a0000002e07000000b9 ffffffffae010000011a0000002e07000000b9 ffffffffae010000011a0000002e07000000b9 ffffffffae010000011a0000002e07000000b9 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>1,a=>26,d=>2,j=>'SEM1',l=>2,c=>-2,k=>-113,h=>2,b=>0,g=>0,f=>'UE7',i=>-3} 1a000000b000000001070000002a070000008f02 1a000000b000000001070000002a070000008f02 1a000000b000000001070000002a070000008f02 1a000000b000000001070000002a070000008f02 - {e=>2,a=>117,d=>-4,j=>'SE1',l=>6,c=>3,k=>-95,h=>1,b=>6,g=>4,f=>'UE0',i=>1} 750000001e01000002200000000901000000a106 750000001e01000002200000000901000000a106 750000001e01000002200000000901000000a106 750000001e01000002200000000901000000a106 - {e=>4,a=>69,d=>3,j=>'SE1',l=>7,c=>-3,k=>-103,h=>5,b=>4,g=>7,f=>'UE2',i=>-4} 45000000ec000000043a00000025010000009907 45000000ec000000043a00000025010000009907 45000000ec000000043a00000025010000009907 45000000ec000000043a00000025010000009907 - {e=>0,a=>66,d=>0,j=>'SEM1',l=>4,c=>-2,k=>-115,h=>0,b=>6,g=>2,f=>'UE6',i=>-1} 4200000036000000001600000038070000008d04 4200000036000000001600000038070000008d04 4200000036000000001600000038070000008d04 4200000036000000001600000038070000008d04 - {e=>0,a=>115,d=>3,j=>'SE3',l=>6,c=>-3,k=>-110,h=>4,b=>7,g=>6,f=>'UE3',i=>1} 73000000ef00000000330000000c030000009206 73000000ef00000000330000000c030000009206 73000000ef00000000330000000c030000009206 73000000ef00000000330000000c030000009206 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>20,m=>-3,d=>1,j=>'SE3',l=>5,c=>-3,k=>47,h=>7,b=>3,g=>2,f=>'UE7',i=>-4} 140000006b000000011700000027030000002f2d 140000006b000000011700000027030000002f2d 140000006b000000011700000027030000002f2d 140000006b000000011700000027030000002f2d - {e=>5,a=>113,m=>0,d=>-2,j=>'SE3',l=>3,c=>-4,k=>63,h=>2,b=>7,g=>2,f=>'UE2',i=>2} 71000000a7010000051200000012030000003f03 71000000a7010000051200000012030000003f03 71000000a7010000051200000012030000003f03 71000000a7010000051200000012030000003f03 - {e=>1,a=>58,m=>-1,d=>-1,j=>'SEM2',l=>1,c=>1,k=>4,h=>1,b=>2,g=>7,f=>'UE5',i=>-2} 3a000000ca010000013d00000031060000000439 3a000000ca010000013d00000031060000000439 3a000000ca010000013d00000031060000000439 3a000000ca010000013d00000031060000000439 - {e=>5,a=>101,m=>0,d=>3,j=>'SEM4',l=>6,c=>-2,k=>124,h=>5,b=>7,g=>0,f=>'UE0',i=>-1} 65000000f700000005000000003d040000007c06 65000000f700000005000000003d040000007c06 65000000f700000005000000003d040000007c06 65000000f700000005000000003d040000007c06 - {e=>1,a=>73,m=>-4,d=>-1,j=>'SEM1',l=>2,c=>1,k=>-19,h=>4,b=>0,g=>5,f=>'UE3',i=>-4} 49000000c8010000012b0000002407000000ed22 49000000c8010000012b0000002407000000ed22 49000000c8010000012b0000002407000000ed22 49000000c8010000012b0000002407000000ed22 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>1,n=>1,a=>-71,m=>-2,d=>0,j=>'SE1',l=>0,c=>-2,k=>60,h=>6,b=>4,g=>5,f=>'UE5',i=>-1} b9ffffff34000000012d0000003e010000003c3001000000 b9ffffff34000000012d0000003e010000003c3001000000 b9ffffff34000000012d0000003e010000003c3001000000 b9ffffff34000000012d0000003e010000003c3001000000 - {e=>7,n=>5,a=>-15,m=>-1,d=>0,j=>'SEM1',l=>5,c=>-2,k=>4,h=>2,b=>3,g=>3,f=>'UE0',i=>-3} f1ffffff3300000007180000002a07000000043d05000000 f1ffffff3300000007180000002a07000000043d05000000 f1ffffff3300000007180000002a07000000043d05000000 f1ffffff3300000007180000002a07000000043d05000000 - {e=>6,n=>3,a=>12,m=>1,d=>3,j=>'SE3',l=>4,c=>-4,k=>116,h=>6,b=>1,g=>4,f=>'UE2',i=>-2} 0c000000e100000006220000003603000000740c03000000 0c000000e100000006220000003603000000740c03000000 0c000000e100000006220000003603000000740c03000000 0c000000e100000006220000003603000000740c03000000 - {e=>5,n=>3,a=>42,m=>1,d=>-3,j=>'SE3',l=>4,c=>1,k=>-90,h=>4,b=>3,g=>6,f=>'UE3',i=>-1} 2a0000004b01000005330000003c03000000a60c03000000 2a0000004b01000005330000003c03000000a60c03000000 2a0000004b01000005330000003c03000000a60c03000000 2a0000004b01000005330000003c03000000a60c03000000 - {e=>7,n=>3,a=>55,m=>-2,d=>0,j=>'SE2',l=>0,c=>2,k=>-125,h=>4,b=>5,g=>7,f=>'UE7',i=>-4} 3700000015000000073f0000002402000000833003000000 3700000015000000073f0000002402000000833003000000 3700000015000000073f0000002402000000833003000000 3700000015000000073f0000002402000000833003000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>7,n=>5,a=>111,m=>-1,d=>3,j=>'SE1',l=>5,c=>-1,k=>85,h=>5,b=>0,g=>4,f=>'UE7',o=>100,i=>2} 6f000000f800000007270000001501000000553d0500000064 6f000000f800000007270000001501000000553d0500000064 6f000000f800000007270000001501000000553d0500000064 6f000000f800000007270000001501000000553d0500000064 - {e=>3,n=>3,a=>68,m=>3,d=>-2,j=>'SE0',l=>2,c=>3,k=>30,h=>0,b=>6,g=>3,f=>'UE0',o=>140,i=>-1} 440000009e010000031800000038000000001e1a030000008c 440000009e010000031800000038000000001e1a030000008c 440000009e010000031800000038000000001e1a030000008c 440000009e010000031800000038000000001e1a030000008c - {e=>1,n=>2,a=>-1,m=>2,d=>1,j=>'SE0',l=>1,c=>3,k=>-56,h=>3,b=>0,g=>3,f=>'UE1',o=>96,i=>2} ffffffff5800000001190000001300000000c8110200000060 ffffffff5800000001190000001300000000c8110200000060 ffffffff5800000001190000001300000000c8110200000060 ffffffff5800000001190000001300000000c8110200000060 - {e=>7,n=>5,a=>26,m=>3,d=>1,j=>'SEM3',l=>5,c=>-1,k=>-127,h=>0,b=>4,g=>2,f=>'UE1',o=>99,i=>-3} 1a0000007c00000007110000002805000000811d0500000063 1a0000007c00000007110000002805000000811d0500000063 1a0000007c00000007110000002805000000811d0500000063 1a0000007c00000007110000002805000000811d0500000063 - {e=>1,n=>3,a=>-55,m=>0,d=>0,j=>'SEM1',l=>2,c=>1,k=>-1,h=>1,b=>3,g=>3,f=>'UE2',o=>164,i=>-4} c9ffffff0b000000011a0000002107000000ff0203000000a4 c9ffffff0b000000011a0000002107000000ff0203000000a4 c9ffffff0b000000011a0000002107000000ff0203000000a4 c9ffffff0b000000011a0000002107000000ff0203000000a4 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; }; - {a=>30,b=>3} 1e00000003000000 1e00000003000000 1e00000003000000 1e00000003000000 - {a=>-14,b=>4} f2ffffff04000000 f2ffffff04000000 f2ffffff04000000 f2ffffff04000000 - {a=>3,b=>2} 0300000002000000 0300000002000000 0300000002000000 0300000002000000 - {a=>98,b=>5} 6200000005000000 6200000005000000 6200000005000000 6200000005000000 - {a=>85,b=>3} 5500000003000000 5500000003000000 5500000003000000 5500000003000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; }; - {c=>-1,a=>-46,b=>6} d2ffffff3e000000 d2ffffff3e000000 d2ffffff3e000000 d2ffffff3e000000 - {c=>2,a=>-36,b=>5} dcffffff15000000 dcffffff15000000 dcffffff15000000 dcffffff15000000 - {c=>-4,a=>78,b=>7} 4e00000027000000 4e00000027000000 4e00000027000000 4e00000027000000 - {c=>-4,a=>65,b=>5} 4100000025000000 4100000025000000 4100000025000000 4100000025000000 - {c=>-1,a=>124,b=>3} 7c0000003b000000 7c0000003b000000 7c0000003b000000 7c0000003b000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>0,a=>45,b=>2,d=>1} 2d00000042000000 2d00000042000000 2d00000042000000 2d00000042000000 - {c=>0,a=>-85,b=>5,d=>0} abffffff05000000 abffffff05000000 abffffff05000000 abffffff05000000 - {c=>-3,a=>62,b=>0,d=>0} 3e00000028000000 3e00000028000000 3e00000028000000 3e00000028000000 - {c=>3,a=>52,b=>1,d=>1} 3400000059000000 3400000059000000 3400000059000000 3400000059000000 - {c=>-2,a=>17,b=>6,d=>-4} 1100000036010000 1100000036010000 1100000036010000 1100000036010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>4,c=>-1,a=>-49,b=>1,d=>-4} cfffffff3901000004 cfffffff3901000004 cfffffff3901000004 cfffffff3901000004 - {e=>5,c=>0,a=>127,b=>4,d=>0} 7f0000000400000005 7f0000000400000005 7f0000000400000005 7f0000000400000005 - {e=>3,c=>0,a=>28,b=>0,d=>3} 1c000000c000000003 1c000000c000000003 1c000000c000000003 1c000000c000000003 - {e=>3,c=>2,a=>42,b=>3,d=>-4} 2a0000001301000003 2a0000001301000003 2a0000001301000003 2a0000001301000003 - {e=>1,c=>3,a=>-60,b=>0,d=>-2} c4ffffff9801000001 c4ffffff9801000001 c4ffffff9801000001 c4ffffff9801000001 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>7,c=>3,a=>-108,b=>1,d=>-1,f=>'UE1'} 94ffffffd90100000701000000 94ffffffd90100000701000000 94ffffffd90100000701000000 94ffffffd90100000701000000 - {e=>6,c=>-2,a=>4,b=>1,d=>-4,f=>'UE2'} 04000000310100000602000000 04000000310100000602000000 04000000310100000602000000 04000000310100000602000000 - {e=>3,c=>-3,a=>79,b=>0,d=>-4,f=>'UE0'} 4f000000280100000300000000 4f000000280100000300000000 4f000000280100000300000000 4f000000280100000300000000 - {e=>2,c=>-2,a=>45,b=>0,d=>3,f=>'UE5'} 2d000000f00000000205000000 2d000000f00000000205000000 2d000000f00000000205000000 2d000000f00000000205000000 - {e=>4,c=>-1,a=>18,b=>7,d=>-1,f=>'UE2'} 12000000ff0100000402000000 12000000ff0100000402000000 12000000ff0100000402000000 12000000ff0100000402000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>5,c=>-1,a=>107,g=>7,b=>1,d=>-2,f=>'UE5'} 6b000000b9010000053d000000 6b000000b9010000053d000000 6b000000b9010000053d000000 6b000000b9010000053d000000 - {e=>0,c=>-1,a=>-57,g=>6,b=>7,d=>-4,f=>'UE2'} c7ffffff3f0100000032000000 c7ffffff3f0100000032000000 c7ffffff3f0100000032000000 c7ffffff3f0100000032000000 - {e=>1,c=>2,a=>9,g=>5,b=>7,d=>2,f=>'UE7'} 0900000097000000012f000000 0900000097000000012f000000 0900000097000000012f000000 0900000097000000012f000000 - {e=>3,c=>3,a=>-7,g=>4,b=>4,d=>2,f=>'UE5'} f9ffffff9c0000000325000000 f9ffffff9c0000000325000000 f9ffffff9c0000000325000000 f9ffffff9c0000000325000000 - {e=>7,c=>1,a=>-15,g=>6,b=>2,d=>2,f=>'UE0'} f1ffffff8a0000000730000000 f1ffffff8a0000000730000000 f1ffffff8a0000000730000000 f1ffffff8a0000000730000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-1,a=>-17,g=>2,b=>3,d=>-2,f=>'UE0'} efffffffbb0100000110000000 efffffffbb0100000110000000 efffffffbb0100000110000000 efffffffbb0100000110000000 - {e=>7,c=>-2,a=>6,g=>1,b=>0,d=>-3,f=>'UE6'} 0600000070010000070e000000 0600000070010000070e000000 0600000070010000070e000000 0600000070010000070e000000 - {e=>2,c=>3,a=>64,g=>4,b=>2,d=>2,f=>'UE1'} 400000009a0000000221000000 400000009a0000000221000000 400000009a0000000221000000 400000009a0000000221000000 - {e=>2,c=>1,a=>58,g=>6,b=>1,d=>1,f=>'UE5'} 3a000000490000000235000000 3a000000490000000235000000 3a000000490000000235000000 3a000000490000000235000000 - {e=>0,c=>1,a=>-124,g=>4,b=>2,d=>-1,f=>'UE4'} 84ffffffca0100000024000000 84ffffffca0100000024000000 84ffffffca0100000024000000 84ffffffca0100000024000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>5,d=>1,c=>-3,h=>0,b=>1,g=>2,f=>'UE1'} 0500000069000000051100000000 0500000069000000051100000000 0500000069000000051100000000 0500000069000000051100000000 - {e=>2,a=>-102,d=>-2,c=>-2,h=>5,b=>0,g=>1,f=>'UE6'} 9affffffb0010000020e00000005 9affffffb0010000020e00000005 9affffffb0010000020e00000005 9affffffb0010000020e00000005 - {e=>5,a=>65,d=>-4,c=>0,h=>7,b=>3,g=>2,f=>'UE7'} 4100000003010000051700000007 4100000003010000051700000007 4100000003010000051700000007 4100000003010000051700000007 - {e=>2,a=>-87,d=>3,c=>-1,h=>1,b=>7,g=>2,f=>'UE6'} a9ffffffff000000021600000001 a9ffffffff000000021600000001 a9ffffffff000000021600000001 a9ffffffff000000021600000001 - {e=>5,a=>-29,d=>2,c=>-4,h=>3,b=>6,g=>7,f=>'UE3'} e3ffffffa6000000053b00000003 e3ffffffa6000000053b00000003 e3ffffffa6000000053b00000003 e3ffffffa6000000053b00000003 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>-52,d=>-3,c=>2,h=>1,b=>4,g=>2,f=>'UE6',i=>3} ccffffff54010000011600000019 ccffffff54010000011600000019 ccffffff54010000011600000019 ccffffff54010000011600000019 - {e=>6,a=>-55,d=>-2,c=>2,h=>7,b=>1,g=>4,f=>'UE2',i=>-2} c9ffffff91010000062200000037 c9ffffff91010000062200000037 c9ffffff91010000062200000037 c9ffffff91010000062200000037 - {e=>3,a=>1,d=>-4,c=>3,h=>2,b=>6,g=>2,f=>'UE1',i=>0} 010000001e010000031100000002 010000001e010000031100000002 010000001e010000031100000002 010000001e010000031100000002 - {e=>7,a=>92,d=>1,c=>0,h=>3,b=>6,g=>4,f=>'UE3',i=>3} 5c0000004600000007230000001b 5c0000004600000007230000001b 5c0000004600000007230000001b 5c0000004600000007230000001b - {e=>4,a=>83,d=>-3,c=>-2,h=>6,b=>1,g=>6,f=>'UE5',i=>-3} 530000007101000004350000002e 530000007101000004350000002e 530000007101000004350000002e 530000007101000004350000002e = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>2,a=>104,d=>1,j=>'SEM2',c=>-3,h=>4,b=>3,g=>5,f=>'UE4',i=>3} 680000006b000000022c0000001c06000000 680000006b000000022c0000001c06000000 680000006b000000022c0000001c06000000 680000006b000000022c0000001c06000000 - {e=>5,a=>72,d=>-3,j=>'SE0',c=>2,h=>6,b=>2,g=>5,f=>'UE0',i=>0} 480000005201000005280000000600000000 480000005201000005280000000600000000 480000005201000005280000000600000000 480000005201000005280000000600000000 - {e=>4,a=>-114,d=>2,j=>'SE0',c=>-4,h=>4,b=>5,g=>7,f=>'UE7',i=>3} 8effffffa5000000043f0000001c00000000 8effffffa5000000043f0000001c00000000 8effffffa5000000043f0000001c00000000 8effffffa5000000043f0000001c00000000 - {e=>5,a=>-114,d=>3,j=>'SE1',c=>2,h=>2,b=>5,g=>2,f=>'UE1',i=>-2} 8effffffd500000005110000003201000000 8effffffd500000005110000003201000000 8effffffd500000005110000003201000000 8effffffd500000005110000003201000000 - {e=>7,a=>-75,d=>1,j=>'SEM3',c=>-3,h=>1,b=>7,g=>1,f=>'UE2',i=>0} b5ffffff6f000000070a0000000105000000 b5ffffff6f000000070a0000000105000000 b5ffffff6f000000070a0000000105000000 b5ffffff6f000000070a0000000105000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>2,a=>48,d=>-2,j=>'SE3',c=>3,k=>43,h=>4,b=>2,g=>2,f=>'UE5',i=>0} 300000009a010000021500000004030000002b 300000009a010000021500000004030000002b 300000009a010000021500000004030000002b 300000009a010000021500000004030000002b - {e=>6,a=>-50,d=>0,j=>'SE0',c=>-1,k=>78,h=>6,b=>5,g=>5,f=>'UE6',i=>-3} ceffffff3d000000062e0000002e000000004e ceffffff3d000000062e0000002e000000004e ceffffff3d000000062e0000002e000000004e ceffffff3d000000062e0000002e000000004e - {e=>4,a=>67,d=>0,j=>'SEM2',c=>3,k=>-96,h=>7,b=>3,g=>1,f=>'UE3',i=>2} 430000001b000000040b0000001706000000a0 430000001b000000040b0000001706000000a0 430000001b000000040b0000001706000000a0 430000001b000000040b0000001706000000a0 - {e=>5,a=>-6,d=>1,j=>'SE2',c=>0,k=>69,h=>4,b=>5,g=>0,f=>'UE0',i=>-4} faffffff450000000500000000240200000045 faffffff450000000500000000240200000045 faffffff450000000500000000240200000045 faffffff450000000500000000240200000045 - {e=>7,a=>-120,d=>1,j=>'SE0',c=>-1,k=>92,h=>1,b=>5,g=>5,f=>'UE3',i=>2} 88ffffff7d000000072b00000011000000005c 88ffffff7d000000072b00000011000000005c 88ffffff7d000000072b00000011000000005c 88ffffff7d000000072b00000011000000005c = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>3,a=>-102,d=>-2,j=>'SEM4',l=>7,c=>-3,k=>-44,h=>3,b=>3,g=>7,f=>'UE6',i=>0} 9affffffab010000033e0000000304000000d407 9affffffab010000033e0000000304000000d407 9affffffab010000033e0000000304000000d407 9affffffab010000033e0000000304000000d407 - {e=>6,a=>15,d=>1,j=>'SE1',l=>1,c=>2,k=>-19,h=>5,b=>7,g=>1,f=>'UE6',i=>-2} 0f00000057000000060e0000003501000000ed01 0f00000057000000060e0000003501000000ed01 0f00000057000000060e0000003501000000ed01 0f00000057000000060e0000003501000000ed01 - {e=>2,a=>-49,d=>-1,j=>'SEM3',l=>3,c=>-2,k=>75,h=>0,b=>4,g=>7,f=>'UE3',i=>-3} cffffffff4010000023b00000028050000004b03 cffffffff4010000023b00000028050000004b03 cffffffff4010000023b00000028050000004b03 cffffffff4010000023b00000028050000004b03 - {e=>6,a=>-49,d=>1,j=>'SEM2',l=>3,c=>3,k=>-128,h=>7,b=>5,g=>0,f=>'UE1',i=>2} cfffffff5d000000060100000017060000008003 cfffffff5d000000060100000017060000008003 cfffffff5d000000060100000017060000008003 cfffffff5d000000060100000017060000008003 - {e=>3,a=>-61,d=>0,j=>'SEM1',l=>1,c=>1,k=>6,h=>0,b=>1,g=>3,f=>'UE0',i=>-2} c3ffffff09000000031800000030070000000601 c3ffffff09000000031800000030070000000601 c3ffffff09000000031800000030070000000601 c3ffffff09000000031800000030070000000601 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>101,m=>1,d=>3,j=>'SEM4',l=>0,c=>3,k=>115,h=>2,b=>1,g=>3,f=>'UE0',i=>-3} 65000000d900000001180000002a040000007308 65000000d900000001180000002a040000007308 65000000d900000001180000002a040000007308 65000000d900000001180000002a040000007308 - {e=>4,a=>-15,m=>1,d=>-3,j=>'SE2',l=>6,c=>-3,k=>-105,h=>6,b=>3,g=>5,f=>'UE5',i=>1} f1ffffff6b010000042d0000000e02000000970e f1ffffff6b010000042d0000000e02000000970e f1ffffff6b010000042d0000000e02000000970e f1ffffff6b010000042d0000000e02000000970e - {e=>3,a=>111,m=>-1,d=>1,j=>'SE0',l=>6,c=>-1,k=>-84,h=>3,b=>4,g=>0,f=>'UE4',i=>-1} 6f0000007c00000003040000003b00000000ac3e 6f0000007c00000003040000003b00000000ac3e 6f0000007c00000003040000003b00000000ac3e 6f0000007c00000003040000003b00000000ac3e - {e=>7,a=>-11,m=>3,d=>-4,j=>'SEM1',l=>3,c=>0,k=>-99,h=>0,b=>4,g=>4,f=>'UE4',i=>-3} f5ffffff04010000072400000028070000009d1b f5ffffff04010000072400000028070000009d1b f5ffffff04010000072400000028070000009d1b f5ffffff04010000072400000028070000009d1b - {e=>4,a=>-69,m=>-3,d=>-2,j=>'SEM3',l=>2,c=>0,k=>94,h=>2,b=>4,g=>3,f=>'UE3',i=>2} bbffffff84010000041b00000012050000005e2a bbffffff84010000041b00000012050000005e2a bbffffff84010000041b00000012050000005e2a bbffffff84010000041b00000012050000005e2a = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>5,n=>4,a=>-5,m=>-1,d=>-3,j=>'SE0',l=>4,c=>-3,k=>70,h=>7,b=>6,g=>4,f=>'UE5',i=>-3} fbffffff6e01000005250000002f00000000463c04000000 fbffffff6e01000005250000002f00000000463c04000000 fbffffff6e01000005250000002f00000000463c04000000 fbffffff6e01000005250000002f00000000463c04000000 - {e=>7,n=>6,a=>108,m=>-3,d=>1,j=>'SEM3',l=>5,c=>-3,k=>-4,h=>3,b=>0,g=>6,f=>'UE6',i=>-2} 6c0000006800000007360000003305000000fc2d06000000 6c0000006800000007360000003305000000fc2d06000000 6c0000006800000007360000003305000000fc2d06000000 6c0000006800000007360000003305000000fc2d06000000 - {e=>3,n=>7,a=>-39,m=>-2,d=>3,j=>'SEM2',l=>2,c=>-4,k=>59,h=>1,b=>0,g=>7,f=>'UE5',i=>-4} d9ffffffe0000000033d00000021060000003b3207000000 d9ffffffe0000000033d00000021060000003b3207000000 d9ffffffe0000000033d00000021060000003b3207000000 d9ffffffe0000000033d00000021060000003b3207000000 - {e=>2,n=>0,a=>-64,m=>1,d=>1,j=>'SE1',l=>0,c=>2,k=>123,h=>0,b=>7,g=>7,f=>'UE7',i=>1} c0ffffff57000000023f00000008010000007b0800000000 c0ffffff57000000023f00000008010000007b0800000000 c0ffffff57000000023f00000008010000007b0800000000 c0ffffff57000000023f00000008010000007b0800000000 - {e=>5,n=>7,a=>-49,m=>-2,d=>-3,j=>'SE2',l=>0,c=>0,k=>95,h=>1,b=>5,g=>6,f=>'UE1',i=>-1} cfffffff45010000053100000039020000005f3007000000 cfffffff45010000053100000039020000005f3007000000 cfffffff45010000053100000039020000005f3007000000 cfffffff45010000053100000039020000005f3007000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct enum_pack_1 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>6,n=>7,a=>-65,m=>-2,d=>-3,j=>'SEM3',l=>0,c=>0,k=>67,h=>5,b=>3,g=>6,f=>'UE7',o=>184,i=>3} bfffffff4301000006370000001d05000000433007000000b8 bfffffff4301000006370000001d05000000433007000000b8 bfffffff4301000006370000001d05000000433007000000b8 bfffffff4301000006370000001d05000000433007000000b8 - {e=>5,n=>0,a=>80,m=>-2,d=>0,j=>'SEM2',l=>4,c=>-3,k=>18,h=>7,b=>4,g=>5,f=>'UE5',o=>3,i=>1} 500000002c000000052d0000000f0600000012340000000003 500000002c000000052d0000000f0600000012340000000003 500000002c000000052d0000000f0600000012340000000003 500000002c000000052d0000000f0600000012340000000003 - {e=>5,n=>0,a=>89,m=>-1,d=>-4,j=>'SEM4',l=>6,c=>2,k=>-48,h=>0,b=>2,g=>2,f=>'UE7',o=>146,i=>2} 590000001201000005170000001004000000d03e0000000092 590000001201000005170000001004000000d03e0000000092 590000001201000005170000001004000000d03e0000000092 590000001201000005170000001004000000d03e0000000092 - {e=>5,n=>6,a=>-3,m=>-1,d=>0,j=>'SE1',l=>1,c=>0,k=>72,h=>1,b=>3,g=>4,f=>'UE2',o=>92,i=>2} fdffffff03000000052200000011010000004839060000005c fdffffff03000000052200000011010000004839060000005c fdffffff03000000052200000011010000004839060000005c fdffffff03000000052200000011010000004839060000005c - {e=>3,n=>5,a=>-96,m=>-4,d=>3,j=>'SE1',l=>5,c=>-4,k=>-39,h=>0,b=>3,g=>3,f=>'UE4',o=>240,i=>-2} a0ffffffe3000000031c0000003001000000d92505000000f0 a0ffffffe3000000031c0000003001000000d92505000000f0 a0ffffffe3000000031c0000003001000000d92505000000f0 a0ffffffe3000000031c0000003001000000d92505000000f0 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; }; - {a=>3} 03000000 03000000 03000000 03000000 - {a=>4} 04000000 04000000 04000000 04000000 - {a=>0} 00000000 00000000 00000000 00000000 - {a=>2} 02000000 02000000 02000000 02000000 - {a=>0} 00000000 00000000 00000000 00000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; }; - {a=>5,b=>2} 15000000 15000000 15000000 15000000 - {a=>6,b=>-2} 36000000 36000000 36000000 36000000 - {a=>6,b=>3} 1e000000 1e000000 1e000000 1e000000 - {a=>7,b=>3} 1f000000 1f000000 1f000000 1f000000 - {a=>1,b=>0} 01000000 01000000 01000000 01000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; }; - {c=>-4,a=>2,b=>-1} 3a010000 3a010000 3a010000 3a010000 - {c=>2,a=>0,b=>2} 90000000 90000000 90000000 90000000 - {c=>-3,a=>7,b=>-4} 67010000 67010000 67010000 67010000 - {c=>2,a=>3,b=>1} 8b000000 8b000000 8b000000 8b000000 - {c=>-4,a=>0,b=>-3} 28010000 28010000 28010000 28010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; }; - {c=>2,a=>4,b=>0,d=>3} 840000000300 840000000300 840000000300 840000000300 - {c=>-4,a=>2,b=>2,d=>5} 120100000500 120100000500 120100000500 120100000500 - {c=>-3,a=>2,b=>-3,d=>7} 6a0100000700 6a0100000700 6a0100000700 6a0100000700 - {c=>1,a=>7,b=>-4,d=>1} 670000000100 670000000100 670000000100 670000000100 - {c=>-2,a=>2,b=>3,d=>3} 9a0100000300 9a0100000300 9a0100000300 9a0100000300 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; }; - {e=>'UE6',c=>-4,a=>5,b=>-3,d=>1} 2d010000010006000000 2d010000010006000000 2d010000010006000000 2d010000010006000000 - {e=>'UE5',c=>1,a=>6,b=>2,d=>4} 56000000040005000000 56000000040005000000 56000000040005000000 56000000040005000000 - {e=>'UE6',c=>-1,a=>0,b=>-4,d=>7} e0010000070006000000 e0010000070006000000 e0010000070006000000 e0010000070006000000 - {e=>'UE1',c=>-4,a=>4,b=>-3,d=>4} 2c010000040001000000 2c010000040001000000 2c010000040001000000 2c010000040001000000 - {e=>'UE1',c=>-2,a=>2,b=>2,d=>4} 92010000040001000000 92010000040001000000 92010000040001000000 92010000040001000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; }; - {e=>'UE1',c=>-4,a=>4,b=>-1,d=>3,f=>3} 3c010000030019000000 3c010000030019000000 3c010000030019000000 3c010000030019000000 - {e=>'UE3',c=>-4,a=>2,b=>-3,d=>0,f=>0} 2a010000000003000000 2a010000000003000000 2a010000000003000000 2a010000000003000000 - {e=>'UE0',c=>0,a=>3,b=>-3,d=>5,f=>0} 2b000000050000000000 2b000000050000000000 2b000000050000000000 2b000000050000000000 - {e=>'UE7',c=>1,a=>3,b=>-3,d=>3,f=>4} 6b000000030027000000 6b000000030027000000 6b000000030027000000 6b000000030027000000 - {e=>'UE7',c=>-2,a=>2,b=>3,d=>6,f=>5} 9a01000006002f000000 9a01000006002f000000 9a01000006002f000000 9a01000006002f000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; }; - {e=>'UE4',c=>2,a=>1,b=>-4,d=>1,f=>3} a100000001001c000000 a100000001001c000000 a100000001001c000000 a100000001001c000000 - {e=>'UE7',c=>0,a=>6,b=>-4,d=>2,f=>7} 2600000002003f000000 2600000002003f000000 2600000002003f000000 2600000002003f000000 - {e=>'UE6',c=>3,a=>4,b=>-2,d=>5,f=>2} f4000000050016000000 f4000000050016000000 f4000000050016000000 f4000000050016000000 - {e=>'UE0',c=>-3,a=>5,b=>-2,d=>5,f=>3} 75010000050018000000 75010000050018000000 75010000050018000000 75010000050018000000 - {e=>'UE1',c=>0,a=>6,b=>0,d=>3,f=>4} 06000000030021000000 06000000030021000000 06000000030021000000 06000000030021000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; }; - {e=>'UE4',c=>-2,a=>3,g=>3,b=>-4,d=>7,f=>5} a301000007002c0000000300 a301000007002c0000000300 a301000007002c0000000300 a301000007002c0000000300 - {e=>'UE2',c=>0,a=>1,g=>7,b=>0,d=>6,f=>2} 010000000600120000000700 010000000600120000000700 010000000600120000000700 010000000600120000000700 - {e=>'UE2',c=>-1,a=>3,g=>7,b=>3,d=>4,f=>2} db0100000400120000000700 db0100000400120000000700 db0100000400120000000700 db0100000400120000000700 - {e=>'UE0',c=>-1,a=>4,g=>1,b=>2,d=>0,f=>0} d40100000000000000000100 d40100000000000000000100 d40100000000000000000100 d40100000000000000000100 - {e=>'UE1',c=>-2,a=>7,g=>4,b=>-2,d=>3,f=>6} b70100000300310000000400 b70100000300310000000400 b70100000300310000000400 b70100000300310000000400 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; }; - {e=>'UE4',a=>1,d=>4,c=>-4,h=>-1,b=>2,g=>3,f=>1} 1101000004000c0000003b00 1101000004000c0000003b00 1101000004000c0000003b00 1101000004000c0000003b00 - {e=>'UE3',a=>3,d=>3,c=>2,h=>1,b=>-3,g=>5,f=>2} ab0000000300130000000d00 ab0000000300130000000d00 ab0000000300130000000d00 ab0000000300130000000d00 - {e=>'UE2',a=>0,d=>4,c=>-3,h=>2,b=>1,g=>2,f=>7} 4801000004003a0000001200 4801000004003a0000001200 4801000004003a0000001200 4801000004003a0000001200 - {e=>'UE4',a=>2,d=>3,c=>0,h=>-1,b=>-1,g=>2,f=>4} 3a0000000300240000003a00 3a0000000300240000003a00 3a0000000300240000003a00 3a0000000300240000003a00 - {e=>'UE5',a=>5,d=>7,c=>0,h=>-1,b=>3,g=>1,f=>1} 1d00000007000d0000003900 1d00000007000d0000003900 1d00000007000d0000003900 1d00000007000d0000003900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; }; - {e=>'UE4',a=>1,d=>7,c=>-3,h=>0,b=>-4,g=>4,f=>3,i=>'SEM2'} 6101000007001c000000040006000000 6101000007001c000000040006000000 6101000007001c000000040006000000 6101000007001c000000040006000000 - {e=>'UE0',a=>0,d=>3,c=>1,h=>0,b=>-3,g=>6,f=>6,i=>'SE3'} 68000000030030000000060003000000 68000000030030000000060003000000 68000000030030000000060003000000 68000000030030000000060003000000 - {e=>'UE5',a=>0,d=>1,c=>-2,h=>2,b=>0,g=>6,f=>0,i=>'SE3'} 80010000010005000000160003000000 80010000010005000000160003000000 80010000010005000000160003000000 80010000010005000000160003000000 - {e=>'UE7',a=>5,d=>4,c=>-3,h=>-1,b=>2,g=>5,f=>6,i=>'SE2'} 550100000400370000003d0002000000 550100000400370000003d0002000000 550100000400370000003d0002000000 550100000400370000003d0002000000 - {e=>'UE4',a=>6,d=>1,c=>-1,h=>2,b=>-3,g=>5,f=>1,i=>'SEM4'} ee01000001000c000000150004000000 ee01000001000c000000150004000000 ee01000001000c000000150004000000 ee01000001000c000000150004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; }; - {e=>'UE2',a=>3,d=>3,j=>79,c=>-1,h=>-3,b=>2,g=>4,f=>1,i=>'SE3'} d301000003000a0000002c00030000004f00 d301000003000a0000002c00030000004f00 d301000003000a0000002c00030000004f00 d301000003000a0000002c00030000004f00 - {e=>'UE3',a=>4,d=>5,j=>33,c=>-2,h=>-4,b=>-1,g=>7,f=>7,i=>'SEM3'} bc01000005003b0000002700050000002100 bc01000005003b0000002700050000002100 bc01000005003b0000002700050000002100 bc01000005003b0000002700050000002100 - {e=>'UE3',a=>2,d=>6,j=>127,c=>-1,h=>1,b=>0,g=>1,f=>5,i=>'SEM1'} c201000006002b0000000900070000007f00 c201000006002b0000000900070000007f00 c201000006002b0000000900070000007f00 c201000006002b0000000900070000007f00 - {e=>'UE7',a=>4,d=>1,j=>84,c=>2,h=>-3,b=>3,g=>7,f=>0,i=>'SEM1'} 9c0000000100070000002f00070000005400 9c0000000100070000002f00070000005400 9c0000000100070000002f00070000005400 9c0000000100070000002f00070000005400 - {e=>'UE6',a=>1,d=>7,j=>37,c=>2,h=>-2,b=>0,g=>3,f=>5,i=>'SE3'} 8100000007002e0000003300030000002500 8100000007002e0000003300030000002500 8100000007002e0000003300030000002500 8100000007002e0000003300030000002500 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; }; - {e=>'UE0',a=>7,d=>4,j=>-44,c=>0,k=>0,h=>0,b=>2,g=>5,f=>1,i=>'SEM4'} 17000000040008000000050004000000d400 17000000040008000000050004000000d400 17000000040008000000050004000000d400 17000000040008000000050004000000d400 - {e=>'UE6',a=>0,d=>4,j=>-58,c=>2,k=>1,h=>1,b=>-2,g=>2,f=>3,i=>'SEM3'} b000000004001e0000000a0005000000c601 b000000004001e0000000a0005000000c601 b000000004001e0000000a0005000000c601 b000000004001e0000000a0005000000c601 - {e=>'UE7',a=>0,d=>4,j=>-25,c=>-4,k=>2,h=>-4,b=>1,g=>6,f=>3,i=>'SEM1'} 0801000004001f000000260007000000e702 0801000004001f000000260007000000e702 0801000004001f000000260007000000e702 0801000004001f000000260007000000e702 - {e=>'UE0',a=>0,d=>5,j=>87,c=>2,k=>4,h=>1,b=>2,g=>5,f=>4,i=>'SEM2'} 900000000500200000000d00060000005704 900000000500200000000d00060000005704 900000000500200000000d00060000005704 900000000500200000000d00060000005704 - {e=>'UE3',a=>6,d=>5,j=>-127,c=>0,k=>4,h=>2,b=>-3,g=>7,f=>6,i=>'SE0'} 2e0000000500330000001700000000008104 2e0000000500330000001700000000008104 2e0000000500330000001700000000008104 2e0000000500330000001700000000008104 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; }; - {e=>'UE1',a=>5,d=>7,j=>116,l=>-1,c=>2,k=>3,h=>-4,b=>0,g=>0,f=>1,i=>'SE3'} 85000000070009000000200003000000743b 85000000070009000000200003000000743b 85000000070009000000200003000000743b 85000000070009000000200003000000743b - {e=>'UE0',a=>3,d=>5,j=>-63,l=>3,c=>-4,k=>7,h=>2,b=>0,g=>1,f=>1,i=>'SEM2'} 03010000050008000000110006000000c11f 03010000050008000000110006000000c11f 03010000050008000000110006000000c11f 03010000050008000000110006000000c11f - {e=>'UE1',a=>6,d=>3,j=>-79,l=>1,c=>2,k=>1,h=>-2,b=>-4,g=>5,f=>0,i=>'SE0'} a6000000030001000000350000000000b109 a6000000030001000000350000000000b109 a6000000030001000000350000000000b109 a6000000030001000000350000000000b109 - {e=>'UE1',a=>4,d=>5,j=>7,l=>2,c=>-2,k=>4,h=>-4,b=>-2,g=>3,f=>7,i=>'SE1'} b40100000500390000002300010000000714 b40100000500390000002300010000000714 b40100000500390000002300010000000714 b40100000500390000002300010000000714 - {e=>'UE2',a=>5,d=>0,j=>41,l=>-2,c=>-4,k=>4,h=>-1,b=>3,g=>5,f=>4,i=>'SEM2'} 1d0100000000220000003d00060000002934 1d0100000000220000003d00060000002934 1d0100000000220000003d00060000002934 1d0100000000220000003d00060000002934 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; }; - {e=>'UE1',a=>1,m=>3,d=>5,j=>80,l=>-4,c=>-4,k=>7,h=>-2,b=>1,g=>5,f=>1,i=>'SEM4'} 09010000050009000000350004000000502703000000 09010000050009000000350004000000502703000000 09010000050009000000350004000000502703000000 09010000050009000000350004000000502703000000 - {e=>'UE0',a=>3,m=>1,d=>7,j=>-49,l=>-4,c=>-3,k=>5,h=>0,b=>-1,g=>3,f=>5,i=>'SEM4'} 7b010000070028000000030004000000cf2501000000 7b010000070028000000030004000000cf2501000000 7b010000070028000000030004000000cf2501000000 7b010000070028000000030004000000cf2501000000 - {e=>'UE5',a=>3,m=>7,d=>7,j=>100,l=>-4,c=>1,k=>4,h=>0,b=>-3,g=>1,f=>7,i=>'SE3'} 6b00000007003d000000010003000000642407000000 6b00000007003d000000010003000000642407000000 6b00000007003d000000010003000000642407000000 6b00000007003d000000010003000000642407000000 - {e=>'UE5',a=>7,m=>2,d=>0,j=>-111,l=>1,c=>2,k=>6,h=>0,b=>0,g=>4,f=>7,i=>'SEM3'} 8700000000003d000000040005000000910e02000000 8700000000003d000000040005000000910e02000000 8700000000003d000000040005000000910e02000000 8700000000003d000000040005000000910e02000000 - {e=>'UE1',a=>6,m=>1,d=>3,j=>78,l=>-2,c=>-2,k=>1,h=>-3,b=>3,g=>4,f=>5,i=>'SE0'} 9e0100000300290000002c00000000004e3101000000 9e0100000300290000002c00000000004e3101000000 9e0100000300290000002c00000000004e3101000000 9e0100000300290000002c00000000004e3101000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { unsigned int a:3; signed int b:3; foo c:3; unsigned char d:3; enum en_u e:3; unsigned int f:3; int :0; unsigned char g:3; signed char h:3; enum en_s i:3; char j; unsigned char k:3; signed char l:3; unsigned int m:3; unsigned char n; }; - {e=>'UE0',n=>164,a=>0,m=>3,d=>1,j=>-21,l=>-4,c=>2,k=>3,h=>-4,b=>1,g=>0,f=>5,i=>'SE2'} 88000000010028000000200002000000eb2303000000a400 88000000010028000000200002000000eb2303000000a400 88000000010028000000200002000000eb2303000000a400 88000000010028000000200002000000eb2303000000a400 - {e=>'UE6',n=>235,a=>5,m=>3,d=>0,j=>122,l=>0,c=>-2,k=>5,h=>3,b=>-2,g=>6,f=>1,i=>'SEM3'} b501000000000e0000001e00050000007a0503000000eb00 b501000000000e0000001e00050000007a0503000000eb00 b501000000000e0000001e00050000007a0503000000eb00 b501000000000e0000001e00050000007a0503000000eb00 - {e=>'UE2',n=>226,a=>5,m=>6,d=>1,j=>0,l=>0,c=>-4,k=>4,h=>3,b=>-2,g=>1,f=>5,i=>'SEM3'} 3501000001002a000000190005000000000406000000e200 3501000001002a000000190005000000000406000000e200 3501000001002a000000190005000000000406000000e200 3501000001002a000000190005000000000406000000e200 - {e=>'UE4',n=>153,a=>0,m=>7,d=>6,j=>106,l=>-2,c=>1,k=>6,h=>2,b=>2,g=>2,f=>2,i=>'SE3'} 500000000600140000001200030000006a36070000009900 500000000600140000001200030000006a36070000009900 500000000600140000001200030000006a36070000009900 500000000600140000001200030000006a36070000009900 - {e=>'UE5',n=>143,a=>3,m=>3,d=>4,j=>112,l=>3,c=>1,k=>5,h=>-4,b=>-1,g=>3,f=>7,i=>'SEM4'} 7b00000004003d000000230004000000701d030000008f00 7b00000004003d000000230004000000701d030000008f00 7b00000004003d000000230004000000701d030000008f00 7b00000004003d000000230004000000701d030000008f00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; }; - {a=>35,b=>4} 230004000000 230004000000 230004000000 230004000000 - {a=>-103,b=>7} 990007000000 990007000000 990007000000 990007000000 - {a=>-90,b=>6} a60006000000 a60006000000 a60006000000 a60006000000 - {a=>-77,b=>1} b30001000000 b30001000000 b30001000000 b30001000000 - {a=>73,b=>6} 490006000000 490006000000 490006000000 490006000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>8,b=>7} 080027000000 080027000000 080027000000 080027000000 - {c=>-4,a=>110,b=>2} 6e0022000000 6e0022000000 6e0022000000 6e0022000000 - {c=>0,a=>-68,b=>0} bc0000000000 bc0000000000 bc0000000000 bc0000000000 - {c=>0,a=>7,b=>7} 070007000000 070007000000 070007000000 070007000000 - {c=>1,a=>-91,b=>5} a5000d000000 a5000d000000 a5000d000000 a5000d000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-2,a=>-105,b=>7,d=>1} 970077000000 970077000000 970077000000 970077000000 - {c=>0,a=>68,b=>2,d=>-1} 4400c2010000 4400c2010000 4400c2010000 4400c2010000 - {c=>3,a=>66,b=>2,d=>-4} 42001a010000 42001a010000 42001a010000 42001a010000 - {c=>-2,a=>-3,b=>5,d=>2} fd00b5000000 fd00b5000000 fd00b5000000 fd00b5000000 - {c=>2,a=>-69,b=>0,d=>2} bb0090000000 bb0090000000 bb0090000000 bb0090000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>5,c=>-4,a=>-27,b=>0,d=>2} e500a00000000500 e500a00000000500 e500a00000000500 e500a00000000500 - {e=>6,c=>-1,a=>67,b=>7,d=>-4} 43003f0100000600 43003f0100000600 43003f0100000600 43003f0100000600 - {e=>5,c=>-3,a=>-14,b=>5,d=>0} f2002d0000000500 f2002d0000000500 f2002d0000000500 f2002d0000000500 - {e=>7,c=>-3,a=>-84,b=>6,d=>0} ac002e0000000700 ac002e0000000700 ac002e0000000700 ac002e0000000700 - {e=>4,c=>-1,a=>49,b=>2,d=>-1} 3100fa0100000400 3100fa0100000400 3100fa0100000400 3100fa0100000400 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>1,c=>2,a=>83,b=>0,d=>1,f=>'UE5'} 530050000000010005000000 530050000000010005000000 530050000000010005000000 530050000000010005000000 - {e=>2,c=>-2,a=>-120,b=>2,d=>-3,f=>'UE1'} 880072010000020001000000 880072010000020001000000 880072010000020001000000 880072010000020001000000 - {e=>7,c=>2,a=>-63,b=>6,d=>-1,f=>'UE4'} c100d6010000070004000000 c100d6010000070004000000 c100d6010000070004000000 c100d6010000070004000000 - {e=>3,c=>2,a=>-5,b=>1,d=>-1,f=>'UE3'} fb00d1010000030003000000 fb00d1010000030003000000 fb00d1010000030003000000 fb00d1010000030003000000 - {e=>3,c=>-1,a=>107,b=>5,d=>-1,f=>'UE2'} 6b00fd010000030002000000 6b00fd010000030002000000 6b00fd010000030002000000 6b00fd010000030002000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>3,c=>-2,a=>0,g=>4,b=>0,d=>2,f=>'UE6'} 0000b0000000030026000000 0000b0000000030026000000 0000b0000000030026000000 0000b0000000030026000000 - {e=>1,c=>1,a=>30,g=>6,b=>2,d=>-2,f=>'UE4'} 1e008a010000010034000000 1e008a010000010034000000 1e008a010000010034000000 1e008a010000010034000000 - {e=>6,c=>3,a=>4,g=>1,b=>4,d=>0,f=>'UE7'} 04001c00000006000f000000 04001c00000006000f000000 04001c00000006000f000000 04001c00000006000f000000 - {e=>7,c=>-1,a=>-95,g=>6,b=>5,d=>1,f=>'UE6'} a1007d000000070036000000 a1007d000000070036000000 a1007d000000070036000000 a1007d000000070036000000 - {e=>7,c=>2,a=>-102,g=>2,b=>3,d=>2,f=>'UE3'} 9a0093000000070013000000 9a0093000000070013000000 9a0093000000070013000000 9a0093000000070013000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>2,c=>-3,a=>17,g=>0,b=>7,d=>-4,f=>'UE0'} 11002f010000020000000000 11002f010000020000000000 11002f010000020000000000 11002f010000020000000000 - {e=>5,c=>1,a=>-35,g=>5,b=>3,d=>0,f=>'UE7'} dd000b00000005002f000000 dd000b00000005002f000000 dd000b00000005002f000000 dd000b00000005002f000000 - {e=>3,c=>1,a=>-16,g=>3,b=>3,d=>-4,f=>'UE1'} f0000b010000030019000000 f0000b010000030019000000 f0000b010000030019000000 f0000b010000030019000000 - {e=>6,c=>3,a=>-120,g=>6,b=>3,d=>-2,f=>'UE6'} 88009b010000060036000000 88009b010000060036000000 88009b010000060036000000 88009b010000060036000000 - {e=>6,c=>1,a=>-121,g=>1,b=>7,d=>-4,f=>'UE3'} 87000f01000006000b000000 87000f01000006000b000000 87000f01000006000b000000 87000f01000006000b000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>5,a=>72,d=>-1,c=>-3,h=>1,b=>0,g=>2,f=>'UE5'} 4800e80100000500150000000100 4800e80100000500150000000100 4800e80100000500150000000100 4800e80100000500150000000100 - {e=>3,a=>-54,d=>1,c=>-4,h=>3,b=>0,g=>2,f=>'UE3'} ca00600000000300130000000300 ca00600000000300130000000300 ca00600000000300130000000300 ca00600000000300130000000300 - {e=>0,a=>-29,d=>3,c=>1,h=>1,b=>2,g=>7,f=>'UE1'} e300ca0000000000390000000100 e300ca0000000000390000000100 e300ca0000000000390000000100 e300ca0000000000390000000100 - {e=>5,a=>60,d=>-4,c=>3,h=>1,b=>5,g=>1,f=>'UE4'} 3c001d01000005000c0000000100 3c001d01000005000c0000000100 3c001d01000005000c0000000100 3c001d01000005000c0000000100 - {e=>3,a=>21,d=>1,c=>0,h=>7,b=>2,g=>2,f=>'UE7'} 1500420000000300170000000700 1500420000000300170000000700 1500420000000300170000000700 1500420000000300170000000700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>3,a=>31,d=>-2,c=>0,h=>4,b=>1,g=>4,f=>'UE7',i=>-3} 1f00810100000300270000002c00 1f00810100000300270000002c00 1f00810100000300270000002c00 1f00810100000300270000002c00 - {e=>7,a=>-56,d=>-4,c=>0,h=>3,b=>0,g=>6,f=>'UE0',i=>1} c800000100000700300000000b00 c800000100000700300000000b00 c800000100000700300000000b00 c800000100000700300000000b00 - {e=>4,a=>-92,d=>3,c=>3,h=>0,b=>7,g=>7,f=>'UE0',i=>-2} a400df0000000400380000003000 a400df0000000400380000003000 a400df0000000400380000003000 a400df0000000400380000003000 - {e=>7,a=>27,d=>1,c=>-4,h=>7,b=>6,g=>4,f=>'UE1',i=>1} 1b00660000000700210000000f00 1b00660000000700210000000f00 1b00660000000700210000000f00 1b00660000000700210000000f00 - {e=>0,a=>-28,d=>1,c=>1,h=>1,b=>2,g=>5,f=>'UE1',i=>2} e4004a0000000000290000001100 e4004a0000000000290000001100 e4004a0000000000290000001100 e4004a0000000000290000001100 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>43,d=>-4,j=>'SEM1',c=>-2,h=>5,b=>1,g=>0,f=>'UE6',i=>0} 2b0031010000050006000000050007000000 2b0031010000050006000000050007000000 2b0031010000050006000000050007000000 2b0031010000050006000000050007000000 - {e=>1,a=>-116,d=>-3,j=>'SE2',c=>-3,h=>4,b=>4,g=>3,f=>'UE6',i=>1} 8c006c01000001001e0000000c0002000000 8c006c01000001001e0000000c0002000000 8c006c01000001001e0000000c0002000000 8c006c01000001001e0000000c0002000000 - {e=>5,a=>-97,d=>-4,j=>'SE2',c=>0,h=>6,b=>6,g=>2,f=>'UE0',i=>2} 9f0006010000050010000000160002000000 9f0006010000050010000000160002000000 9f0006010000050010000000160002000000 9f0006010000050010000000160002000000 - {e=>3,a=>-10,d=>0,j=>'SE1',c=>-4,h=>1,b=>4,g=>4,f=>'UE7',i=>-3} f60024000000030027000000290001000000 f60024000000030027000000290001000000 f60024000000030027000000290001000000 f60024000000030027000000290001000000 - {e=>0,a=>-83,d=>3,j=>'SEM4',c=>-1,h=>3,b=>7,g=>0,f=>'UE0',i=>2} ad00ff000000000000000000130004000000 ad00ff000000000000000000130004000000 ad00ff000000000000000000130004000000 ad00ff000000000000000000130004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>-72,d=>1,j=>'SEM4',c=>-2,k=>-69,h=>2,b=>2,g=>4,f=>'UE6',i=>-3} b800720000000400260000002a0004000000bb00 b800720000000400260000002a0004000000bb00 b800720000000400260000002a0004000000bb00 b800720000000400260000002a0004000000bb00 - {e=>3,a=>-74,d=>3,j=>'SE1',c=>1,k=>-22,h=>7,b=>7,g=>1,f=>'UE4',i=>1} b600cf00000003000c0000000f0001000000ea00 b600cf00000003000c0000000f0001000000ea00 b600cf00000003000c0000000f0001000000ea00 b600cf00000003000c0000000f0001000000ea00 - {e=>2,a=>-35,d=>3,j=>'SE0',c=>-3,k=>-17,h=>4,b=>5,g=>0,f=>'UE7',i=>-1} dd00ed0000000200070000003c0000000000ef00 dd00ed0000000200070000003c0000000000ef00 dd00ed0000000200070000003c0000000000ef00 dd00ed0000000200070000003c0000000000ef00 - {e=>6,a=>36,d=>-4,j=>'SEM2',c=>-4,k=>-49,h=>0,b=>3,g=>4,f=>'UE3',i=>-2} 240023010000060023000000300006000000cf00 240023010000060023000000300006000000cf00 240023010000060023000000300006000000cf00 240023010000060023000000300006000000cf00 - {e=>0,a=>34,d=>-3,j=>'SEM2',c=>0,k=>9,h=>2,b=>6,g=>4,f=>'UE3',i=>-1} 2200460100000000230000003a00060000000900 2200460100000000230000003a00060000000900 2200460100000000230000003a00060000000900 2200460100000000230000003a00060000000900 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>7,a=>-52,d=>0,j=>'SE0',l=>6,c=>0,k=>67,h=>4,b=>1,g=>4,f=>'UE1',i=>3} cc00010000000700210000001c00000000004306 cc00010000000700210000001c00000000004306 cc00010000000700210000001c00000000004306 cc00010000000700210000001c00000000004306 - {e=>0,a=>104,d=>-4,j=>'SE3',l=>4,c=>1,k=>-98,h=>7,b=>1,g=>2,f=>'UE1',i=>-1} 6800090100000000110000003f00030000009e04 6800090100000000110000003f00030000009e04 6800090100000000110000003f00030000009e04 6800090100000000110000003f00030000009e04 - {e=>1,a=>88,d=>-1,j=>'SE2',l=>4,c=>-2,k=>51,h=>4,b=>2,g=>4,f=>'UE2',i=>-2} 5800f20100000100220000003400020000003304 5800f20100000100220000003400020000003304 5800f20100000100220000003400020000003304 5800f20100000100220000003400020000003304 - {e=>2,a=>-81,d=>2,j=>'SE0',l=>2,c=>0,k=>87,h=>1,b=>1,g=>6,f=>'UE4',i=>0} af00810000000200340000000100000000005702 af00810000000200340000000100000000005702 af00810000000200340000000100000000005702 af00810000000200340000000100000000005702 - {e=>5,a=>-126,d=>2,j=>'SE3',l=>6,c=>-3,k=>79,h=>0,b=>3,g=>4,f=>'UE4',i=>1} 8200ab0000000500240000000800030000004f06 8200ab0000000500240000000800030000004f06 8200ab0000000500240000000800030000004f06 8200ab0000000500240000000800030000004f06 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>4,a=>-69,m=>2,d=>2,j=>'SE1',l=>1,c=>2,k=>35,h=>6,b=>4,g=>4,f=>'UE5',i=>3} bb00940000000400250000001e00010000002311 bb00940000000400250000001e00010000002311 bb00940000000400250000001e00010000002311 bb00940000000400250000001e00010000002311 - {e=>7,a=>87,m=>-2,d=>-4,j=>'SEM4',l=>1,c=>-1,k=>1,h=>7,b=>6,g=>4,f=>'UE4',i=>2} 57003e0100000700240000001700040000000131 57003e0100000700240000001700040000000131 57003e0100000700240000001700040000000131 57003e0100000700240000001700040000000131 - {e=>6,a=>-102,m=>1,d=>3,j=>'SEM4',l=>2,c=>-4,k=>78,h=>5,b=>7,g=>6,f=>'UE3',i=>-3} 9a00e70000000600330000002d00040000004e0a 9a00e70000000600330000002d00040000004e0a 9a00e70000000600330000002d00040000004e0a 9a00e70000000600330000002d00040000004e0a - {e=>0,a=>122,m=>2,d=>-1,j=>'SEM2',l=>4,c=>-1,k=>-59,h=>6,b=>4,g=>0,f=>'UE1',i=>-3} 7a00fc0100000000010000002e0006000000c514 7a00fc0100000000010000002e0006000000c514 7a00fc0100000000010000002e0006000000c514 7a00fc0100000000010000002e0006000000c514 - {e=>2,a=>91,m=>2,d=>2,j=>'SEM4',l=>2,c=>0,k=>-51,h=>2,b=>4,g=>3,f=>'UE2',i=>3} 5b008400000002001a0000001a0004000000cd12 5b008400000002001a0000001a0004000000cd12 5b008400000002001a0000001a0004000000cd12 5b008400000002001a0000001a0004000000cd12 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>6,n=>0,a=>40,m=>0,d=>-2,j=>'SEM1',l=>4,c=>-3,k=>69,h=>7,b=>4,g=>3,f=>'UE0',i=>-1} 2800ac0100000600180000003f0007000000450400000000 2800ac0100000600180000003f0007000000450400000000 2800ac0100000600180000003f0007000000450400000000 2800ac0100000600180000003f0007000000450400000000 - {e=>4,n=>6,a=>30,m=>1,d=>3,j=>'SEM1',l=>0,c=>-2,k=>-11,h=>4,b=>6,g=>7,f=>'UE3',i=>-1} 1e00f600000004003b0000003c0007000000f50806000000 1e00f600000004003b0000003c0007000000f50806000000 1e00f600000004003b0000003c0007000000f50806000000 1e00f600000004003b0000003c0007000000f50806000000 - {e=>7,n=>3,a=>-38,m=>3,d=>2,j=>'SEM4',l=>2,c=>-2,k=>-84,h=>7,b=>7,g=>3,f=>'UE2',i=>3} da00b700000007001a0000001f0004000000ac1a03000000 da00b700000007001a0000001f0004000000ac1a03000000 da00b700000007001a0000001f0004000000ac1a03000000 da00b700000007001a0000001f0004000000ac1a03000000 - {e=>0,n=>3,a=>39,m=>0,d=>1,j=>'SEM3',l=>7,c=>3,k=>-120,h=>5,b=>2,g=>6,f=>'UE2',i=>3} 27005a0000000000320000001d0005000000880703000000 27005a0000000000320000001d0005000000880703000000 27005a0000000000320000001d0005000000880703000000 27005a0000000000320000001d0005000000880703000000 - {e=>5,n=>5,a=>-10,m=>-4,d=>-1,j=>'SEM3',l=>5,c=>0,k=>23,h=>7,b=>0,g=>7,f=>'UE7',i=>0} f600c001000005003f000000070005000000172505000000 f600c001000005003f000000070005000000172505000000 f600c001000005003f000000070005000000172505000000 f600c001000005003f000000070005000000172505000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { char a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>2,n=>4,a=>-49,m=>-4,d=>-2,j=>'SE3',l=>1,c=>0,k=>-90,h=>0,b=>3,g=>1,f=>'UE1',o=>232,i=>1} cf0083010000020009000000080003000000a62104000000e800 cf0083010000020009000000080003000000a62104000000e800 cf0083010000020009000000080003000000a62104000000e800 cf0083010000020009000000080003000000a62104000000e800 - {e=>6,n=>2,a=>4,m=>1,d=>3,j=>'SEM2',l=>1,c=>1,k=>-19,h=>7,b=>4,g=>3,f=>'UE0',o=>88,i=>1} 0400cc0000000600180000000f0006000000ed09020000005800 0400cc0000000600180000000f0006000000ed09020000005800 0400cc0000000600180000000f0006000000ed09020000005800 0400cc0000000600180000000f0006000000ed09020000005800 - {e=>4,n=>7,a=>61,m=>0,d=>2,j=>'SE1',l=>6,c=>-1,k=>113,h=>2,b=>6,g=>5,f=>'UE6',o=>234,i=>2} 3d00be00000004002e000000120001000000710607000000ea00 3d00be00000004002e000000120001000000710607000000ea00 3d00be00000004002e000000120001000000710607000000ea00 3d00be00000004002e000000120001000000710607000000ea00 - {e=>1,n=>0,a=>-69,m=>-2,d=>2,j=>'SE0',l=>0,c=>0,k=>38,h=>4,b=>5,g=>1,f=>'UE6',o=>145,i=>-2} bb008500000001000e0000003400000000002630000000009100 bb008500000001000e0000003400000000002630000000009100 bb008500000001000e0000003400000000002630000000009100 bb008500000001000e0000003400000000002630000000009100 - {e=>3,n=>2,a=>-1,m=>-1,d=>2,j=>'SEM3',l=>1,c=>1,k=>-52,h=>3,b=>1,g=>2,f=>'UE1',o=>195,i=>-3} ff00890000000300110000002b0005000000cc3902000000c300 ff00890000000300110000002b0005000000cc3902000000c300 ff00890000000300110000002b0005000000cc3902000000c300 ff00890000000300110000002b0005000000cc3902000000c300 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; }; - {a=>-117,b=>5} 8bff05000000 8bff05000000 8bff05000000 8bff05000000 - {a=>72,b=>7} 480007000000 480007000000 480007000000 480007000000 - {a=>10,b=>5} 0a0005000000 0a0005000000 0a0005000000 0a0005000000 - {a=>-60,b=>2} c4ff02000000 c4ff02000000 c4ff02000000 c4ff02000000 - {a=>-76,b=>6} b4ff06000000 b4ff06000000 b4ff06000000 b4ff06000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>-67,b=>0} bdff20000000 bdff20000000 bdff20000000 bdff20000000 - {c=>-3,a=>-101,b=>6} 9bff2e000000 9bff2e000000 9bff2e000000 9bff2e000000 - {c=>2,a=>-19,b=>7} edff17000000 edff17000000 edff17000000 edff17000000 - {c=>-2,a=>92,b=>7} 5c0037000000 5c0037000000 5c0037000000 5c0037000000 - {c=>3,a=>46,b=>7} 2e001f000000 2e001f000000 2e001f000000 2e001f000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-4,a=>79,b=>0,d=>0} 4f0020000000 4f0020000000 4f0020000000 4f0020000000 - {c=>-3,a=>93,b=>4,d=>0} 5d002c000000 5d002c000000 5d002c000000 5d002c000000 - {c=>-3,a=>-14,b=>5,d=>-1} f2ffed010000 f2ffed010000 f2ffed010000 f2ffed010000 - {c=>0,a=>-47,b=>4,d=>-4} d1ff04010000 d1ff04010000 d1ff04010000 d1ff04010000 - {c=>2,a=>-7,b=>5,d=>2} f9ff95000000 f9ff95000000 f9ff95000000 f9ff95000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>6,c=>-1,a=>-71,b=>2,d=>0} b9ff3a0000000600 b9ff3a0000000600 b9ff3a0000000600 b9ff3a0000000600 - {e=>0,c=>-1,a=>-25,b=>1,d=>3} e7fff90000000000 e7fff90000000000 e7fff90000000000 e7fff90000000000 - {e=>0,c=>0,a=>-15,b=>4,d=>-4} f1ff040100000000 f1ff040100000000 f1ff040100000000 f1ff040100000000 - {e=>6,c=>-1,a=>26,b=>6,d=>-3} 1a007e0100000600 1a007e0100000600 1a007e0100000600 1a007e0100000600 - {e=>7,c=>3,a=>-24,b=>1,d=>2} e8ff990000000700 e8ff990000000700 e8ff990000000700 e8ff990000000700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>2,c=>-3,a=>-20,b=>5,d=>3,f=>'UE1'} ecffed000000020001000000 ecffed000000020001000000 ecffed000000020001000000 ecffed000000020001000000 - {e=>1,c=>2,a=>47,b=>6,d=>2,f=>'UE3'} 2f0096000000010003000000 2f0096000000010003000000 2f0096000000010003000000 2f0096000000010003000000 - {e=>6,c=>1,a=>16,b=>5,d=>0,f=>'UE7'} 10000d000000060007000000 10000d000000060007000000 10000d000000060007000000 10000d000000060007000000 - {e=>6,c=>-2,a=>102,b=>5,d=>2,f=>'UE1'} 6600b5000000060001000000 6600b5000000060001000000 6600b5000000060001000000 6600b5000000060001000000 - {e=>3,c=>-3,a=>-74,b=>2,d=>-4,f=>'UE7'} b6ff2a010000030007000000 b6ff2a010000030007000000 b6ff2a010000030007000000 b6ff2a010000030007000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>5,c=>3,a=>65,g=>2,b=>7,d=>0,f=>'UE3'} 41001f000000050013000000 41001f000000050013000000 41001f000000050013000000 41001f000000050013000000 - {e=>1,c=>-1,a=>17,g=>4,b=>3,d=>3,f=>'UE4'} 1100fb000000010024000000 1100fb000000010024000000 1100fb000000010024000000 1100fb000000010024000000 - {e=>0,c=>1,a=>100,g=>1,b=>1,d=>1,f=>'UE5'} 64004900000000000d000000 64004900000000000d000000 64004900000000000d000000 64004900000000000d000000 - {e=>5,c=>1,a=>90,g=>5,b=>1,d=>3,f=>'UE4'} 5a00c900000005002c000000 5a00c900000005002c000000 5a00c900000005002c000000 5a00c900000005002c000000 - {e=>5,c=>3,a=>-34,g=>1,b=>7,d=>1,f=>'UE7'} deff5f00000005000f000000 deff5f00000005000f000000 deff5f00000005000f000000 deff5f00000005000f000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>6,c=>-1,a=>-29,g=>4,b=>0,d=>0,f=>'UE0'} e3ff38000000060020000000 e3ff38000000060020000000 e3ff38000000060020000000 e3ff38000000060020000000 - {e=>4,c=>1,a=>-112,g=>5,b=>1,d=>-4,f=>'UE6'} 90ff0901000004002e000000 90ff0901000004002e000000 90ff0901000004002e000000 90ff0901000004002e000000 - {e=>4,c=>-1,a=>-66,g=>1,b=>4,d=>2,f=>'UE0'} beffbc000000040008000000 beffbc000000040008000000 beffbc000000040008000000 beffbc000000040008000000 - {e=>7,c=>-3,a=>-106,g=>5,b=>5,d=>-1,f=>'UE2'} 96ffed01000007002a000000 96ffed01000007002a000000 96ffed01000007002a000000 96ffed01000007002a000000 - {e=>7,c=>3,a=>-85,g=>4,b=>5,d=>-1,f=>'UE5'} abffdd010000070025000000 abffdd010000070025000000 abffdd010000070025000000 abffdd010000070025000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>-70,d=>3,c=>-2,h=>1,b=>7,g=>0,f=>'UE6'} bafff70000000100060000000100 bafff70000000100060000000100 bafff70000000100060000000100 bafff70000000100060000000100 - {e=>3,a=>16,d=>-2,c=>1,h=>1,b=>3,g=>7,f=>'UE2'} 10008b01000003003a0000000100 10008b01000003003a0000000100 10008b01000003003a0000000100 10008b01000003003a0000000100 - {e=>7,a=>34,d=>-3,c=>-1,h=>3,b=>1,g=>4,f=>'UE6'} 2200790100000700260000000300 2200790100000700260000000300 2200790100000700260000000300 2200790100000700260000000300 - {e=>1,a=>15,d=>-3,c=>-1,h=>6,b=>7,g=>7,f=>'UE0'} 0f007f0100000100380000000600 0f007f0100000100380000000600 0f007f0100000100380000000600 0f007f0100000100380000000600 - {e=>5,a=>120,d=>0,c=>3,h=>7,b=>7,g=>0,f=>'UE4'} 78001f0000000500040000000700 78001f0000000500040000000700 78001f0000000500040000000700 78001f0000000500040000000700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>7,a=>110,d=>1,c=>0,h=>3,b=>1,g=>7,f=>'UE3',i=>-3} 6e004100000007003b0000002b00 6e004100000007003b0000002b00 6e004100000007003b0000002b00 6e004100000007003b0000002b00 - {e=>4,a=>-31,d=>-2,c=>-4,h=>0,b=>7,g=>7,f=>'UE7',i=>-2} e1ffa701000004003f0000003000 e1ffa701000004003f0000003000 e1ffa701000004003f0000003000 e1ffa701000004003f0000003000 - {e=>6,a=>64,d=>2,c=>-1,h=>4,b=>3,g=>5,f=>'UE5',i=>-3} 4000bb00000006002d0000002c00 4000bb00000006002d0000002c00 4000bb00000006002d0000002c00 4000bb00000006002d0000002c00 - {e=>5,a=>100,d=>1,c=>3,h=>5,b=>4,g=>4,f=>'UE2',i=>-1} 64005c0000000500220000003d00 64005c0000000500220000003d00 64005c0000000500220000003d00 64005c0000000500220000003d00 - {e=>5,a=>-124,d=>-4,c=>-2,h=>6,b=>1,g=>4,f=>'UE4',i=>2} 84ff310100000500240000001600 84ff310100000500240000001600 84ff310100000500240000001600 84ff310100000500240000001600 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>6,a=>-89,d=>2,j=>'SE2',c=>0,h=>7,b=>2,g=>7,f=>'UE6',i=>-4} a7ff8200000006003e000000270002000000 a7ff8200000006003e000000270002000000 a7ff8200000006003e000000270002000000 a7ff8200000006003e000000270002000000 - {e=>6,a=>63,d=>-2,j=>'SEM1',c=>-4,h=>2,b=>6,g=>6,f=>'UE0',i=>-1} 3f00a60100000600300000003a0007000000 3f00a60100000600300000003a0007000000 3f00a60100000600300000003a0007000000 3f00a60100000600300000003a0007000000 - {e=>4,a=>93,d=>-4,j=>'SE2',c=>3,h=>7,b=>5,g=>7,f=>'UE7',i=>-1} 5d001d01000004003f0000003f0002000000 5d001d01000004003f0000003f0002000000 5d001d01000004003f0000003f0002000000 5d001d01000004003f0000003f0002000000 - {e=>4,a=>-43,d=>0,j=>'SE3',c=>-2,h=>1,b=>7,g=>6,f=>'UE6',i=>-1} d5ff37000000040036000000390003000000 d5ff37000000040036000000390003000000 d5ff37000000040036000000390003000000 d5ff37000000040036000000390003000000 - {e=>1,a=>21,d=>2,j=>'SEM3',c=>-3,h=>0,b=>6,g=>4,f=>'UE4',i=>-2} 1500ae000000010024000000300005000000 1500ae000000010024000000300005000000 1500ae000000010024000000300005000000 1500ae000000010024000000300005000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>4,a=>124,d=>-1,j=>'SE2',c=>2,k=>-23,h=>7,b=>1,g=>2,f=>'UE4',i=>0} 7c00d1010000040014000000070002000000e900 7c00d1010000040014000000070002000000e900 7c00d1010000040014000000070002000000e900 7c00d1010000040014000000070002000000e900 - {e=>6,a=>-50,d=>-3,j=>'SE2',c=>-3,k=>-66,h=>3,b=>5,g=>2,f=>'UE5',i=>1} ceff6d0100000600150000000b0002000000be00 ceff6d0100000600150000000b0002000000be00 ceff6d0100000600150000000b0002000000be00 ceff6d0100000600150000000b0002000000be00 - {e=>4,a=>31,d=>2,j=>'SEM1',c=>-4,k=>-117,h=>1,b=>4,g=>3,f=>'UE5',i=>0} 1f00a400000004001d0000000100070000008b00 1f00a400000004001d0000000100070000008b00 1f00a400000004001d0000000100070000008b00 1f00a400000004001d0000000100070000008b00 - {e=>0,a=>-107,d=>0,j=>'SEM4',c=>-3,k=>8,h=>7,b=>7,g=>5,f=>'UE5',i=>-1} 95ff2f00000000002d0000003f00040000000800 95ff2f00000000002d0000003f00040000000800 95ff2f00000000002d0000003f00040000000800 95ff2f00000000002d0000003f00040000000800 - {e=>7,a=>-5,d=>1,j=>'SEM4',c=>1,k=>71,h=>4,b=>2,g=>6,f=>'UE1',i=>2} fbff4a0000000700310000001400040000004700 fbff4a0000000700310000001400040000004700 fbff4a0000000700310000001400040000004700 fbff4a0000000700310000001400040000004700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>2,a=>-31,d=>2,j=>'SE1',l=>0,c=>2,k=>75,h=>7,b=>1,g=>0,f=>'UE1',i=>2} e1ff910000000200010000001700010000004b00 e1ff910000000200010000001700010000004b00 e1ff910000000200010000001700010000004b00 e1ff910000000200010000001700010000004b00 - {e=>2,a=>-101,d=>-3,j=>'SEM4',l=>4,c=>-4,k=>-56,h=>0,b=>2,g=>1,f=>'UE0',i=>-3} 9bff62010000020008000000280004000000c804 9bff62010000020008000000280004000000c804 9bff62010000020008000000280004000000c804 9bff62010000020008000000280004000000c804 - {e=>7,a=>79,d=>1,j=>'SE2',l=>0,c=>-4,k=>87,h=>0,b=>7,g=>2,f=>'UE6',i=>-1} 4f00670000000700160000003800020000005700 4f00670000000700160000003800020000005700 4f00670000000700160000003800020000005700 4f00670000000700160000003800020000005700 - {e=>1,a=>44,d=>1,j=>'SE0',l=>3,c=>2,k=>97,h=>7,b=>5,g=>3,f=>'UE5',i=>3} 2c005500000001001d0000001f00000000006103 2c005500000001001d0000001f00000000006103 2c005500000001001d0000001f00000000006103 2c005500000001001d0000001f00000000006103 - {e=>3,a=>59,d=>2,j=>'SEM3',l=>5,c=>2,k=>-17,h=>0,b=>4,g=>3,f=>'UE4',i=>1} 3b009400000003001c000000080005000000ef05 3b009400000003001c000000080005000000ef05 3b009400000003001c000000080005000000ef05 3b009400000003001c000000080005000000ef05 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>0,a=>54,m=>-4,d=>2,j=>'SE2',l=>1,c=>1,k=>91,h=>0,b=>5,g=>5,f=>'UE5',i=>2} 36008d00000000002d0000001000020000005b21 36008d00000000002d0000001000020000005b21 36008d00000000002d0000001000020000005b21 36008d00000000002d0000001000020000005b21 - {e=>6,a=>-109,m=>-4,d=>1,j=>'SEM1',l=>4,c=>-2,k=>111,h=>7,b=>7,g=>7,f=>'UE7',i=>0} 93ff7700000006003f0000000700070000006f24 93ff7700000006003f0000000700070000006f24 93ff7700000006003f0000000700070000006f24 93ff7700000006003f0000000700070000006f24 - {e=>4,a=>-18,m=>-1,d=>-2,j=>'SEM4',l=>7,c=>3,k=>-106,h=>2,b=>6,g=>7,f=>'UE1',i=>-4} eeff9e010000040039000000220004000000963f eeff9e010000040039000000220004000000963f eeff9e010000040039000000220004000000963f eeff9e010000040039000000220004000000963f - {e=>5,a=>77,m=>1,d=>1,j=>'SE2',l=>6,c=>-2,k=>-38,h=>5,b=>1,g=>6,f=>'UE2',i=>3} 4d00710000000500320000001d0002000000da0e 4d00710000000500320000001d0002000000da0e 4d00710000000500320000001d0002000000da0e 4d00710000000500320000001d0002000000da0e - {e=>2,a=>63,m=>2,d=>0,j=>'SEM4',l=>4,c=>-3,k=>-13,h=>0,b=>2,g=>5,f=>'UE6',i=>2} 3f002a00000002002e000000100004000000f314 3f002a00000002002e000000100004000000f314 3f002a00000002002e000000100004000000f314 3f002a00000002002e000000100004000000f314 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>7,n=>1,a=>6,m=>2,d=>-1,j=>'SEM1',l=>4,c=>3,k=>-96,h=>7,b=>7,g=>2,f=>'UE0',i=>-2} 0600df010000070010000000370007000000a01401000000 0600df010000070010000000370007000000a01401000000 0600df010000070010000000370007000000a01401000000 0600df010000070010000000370007000000a01401000000 - {e=>1,n=>3,a=>-28,m=>0,d=>1,j=>'SEM4',l=>5,c=>-2,k=>118,h=>2,b=>1,g=>1,f=>'UE1',i=>-2} e4ff71000000010009000000320004000000760503000000 e4ff71000000010009000000320004000000760503000000 e4ff71000000010009000000320004000000760503000000 e4ff71000000010009000000320004000000760503000000 - {e=>6,n=>5,a=>125,m=>-4,d=>1,j=>'SEM1',l=>3,c=>-1,k=>1,h=>5,b=>7,g=>6,f=>'UE6',i=>-1} 7d007f0000000600360000003d0007000000012305000000 7d007f0000000600360000003d0007000000012305000000 7d007f0000000600360000003d0007000000012305000000 7d007f0000000600360000003d0007000000012305000000 - {e=>3,n=>1,a=>4,m=>-4,d=>-3,j=>'SE1',l=>5,c=>-4,k=>82,h=>7,b=>3,g=>0,f=>'UE5',i=>-4} 040063010000030005000000270001000000522501000000 040063010000030005000000270001000000522501000000 040063010000030005000000270001000000522501000000 040063010000030005000000270001000000522501000000 - {e=>4,n=>7,a=>98,m=>1,d=>1,j=>'SE2',l=>5,c=>-3,k=>-32,h=>6,b=>2,g=>3,f=>'UE5',i=>1} 62006a00000004001d0000000e0002000000e00d07000000 62006a00000004001d0000000e0002000000e00d07000000 62006a00000004001d0000000e0002000000e00d07000000 62006a00000004001d0000000e0002000000e00d07000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { short a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>5,n=>6,a=>-72,m=>-2,d=>-3,j=>'SEM1',l=>0,c=>1,k=>95,h=>2,b=>5,g=>7,f=>'UE0',o=>120,i=>-3} b8ff4d0100000500380000002a00070000005f30060000007800 b8ff4d0100000500380000002a00070000005f30060000007800 b8ff4d0100000500380000002a00070000005f30060000007800 b8ff4d0100000500380000002a00070000005f30060000007800 - {e=>2,n=>0,a=>-69,m=>-1,d=>0,j=>'SE0',l=>0,c=>1,k=>-105,h=>7,b=>6,g=>0,f=>'UE1',o=>44,i=>2} bbff0e0000000200010000001700000000009738000000002c00 bbff0e0000000200010000001700000000009738000000002c00 bbff0e0000000200010000001700000000009738000000002c00 bbff0e0000000200010000001700000000009738000000002c00 - {e=>0,n=>5,a=>94,m=>-3,d=>-2,j=>'SEM3',l=>4,c=>-1,k=>53,h=>7,b=>4,g=>7,f=>'UE3',o=>232,i=>3} 5e00bc01000000003b0000001f0005000000352c05000000e800 5e00bc01000000003b0000001f0005000000352c05000000e800 5e00bc01000000003b0000001f0005000000352c05000000e800 5e00bc01000000003b0000001f0005000000352c05000000e800 - {e=>1,n=>0,a=>112,m=>-1,d=>-3,j=>'SE3',l=>4,c=>-2,k=>50,h=>1,b=>4,g=>7,f=>'UE6',o=>103,i=>1} 70007401000001003e000000090003000000323c000000006700 70007401000001003e000000090003000000323c000000006700 70007401000001003e000000090003000000323c000000006700 70007401000001003e000000090003000000323c000000006700 - {e=>7,n=>6,a=>-116,m=>1,d=>3,j=>'SEM1',l=>3,c=>0,k=>117,h=>5,b=>5,g=>7,f=>'UE0',o=>207,i=>-1} 8cffc50000000700380000003d0007000000750b06000000cf00 8cffc50000000700380000003d0007000000750b06000000cf00 8cffc50000000700380000003d0007000000750b06000000cf00 8cffc50000000700380000003d0007000000750b06000000cf00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; }; - {a=>59,b=>6} 3b00000006000000 3b00000006000000 3b00000006000000 3b00000006000000 - {a=>-72,b=>6} b8ffffff06000000 b8ffffff06000000 b8ffffff06000000 b8ffffff06000000 - {a=>-11,b=>2} f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 f5ffffff02000000 - {a=>-120,b=>5} 88ffffff05000000 88ffffff05000000 88ffffff05000000 88ffffff05000000 - {a=>16,b=>4} 1000000004000000 1000000004000000 1000000004000000 1000000004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; }; - {c=>-4,a=>-6,b=>5} faffffff25000000 faffffff25000000 faffffff25000000 faffffff25000000 - {c=>2,a=>-12,b=>0} f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 f4ffffff10000000 - {c=>-1,a=>-6,b=>7} faffffff3f000000 faffffff3f000000 faffffff3f000000 faffffff3f000000 - {c=>-3,a=>126,b=>1} 7e00000029000000 7e00000029000000 7e00000029000000 7e00000029000000 - {c=>-2,a=>3,b=>2} 0300000032000000 0300000032000000 0300000032000000 0300000032000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>6,b=>4,d=>1} 060000006c000000 060000006c000000 060000006c000000 060000006c000000 - {c=>2,a=>-111,b=>6,d=>-3} 91ffffff56010000 91ffffff56010000 91ffffff56010000 91ffffff56010000 - {c=>1,a=>-80,b=>4,d=>-3} b0ffffff4c010000 b0ffffff4c010000 b0ffffff4c010000 b0ffffff4c010000 - {c=>3,a=>54,b=>4,d=>0} 360000001c000000 360000001c000000 360000001c000000 360000001c000000 - {c=>-1,a=>-73,b=>5,d=>-4} b7ffffff3d010000 b7ffffff3d010000 b7ffffff3d010000 b7ffffff3d010000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>1,c=>-2,a=>59,b=>4,d=>1} 3b000000740000000100 3b000000740000000100 3b000000740000000100 3b000000740000000100 - {e=>4,c=>3,a=>-20,b=>1,d=>-3} ecffffff590100000400 ecffffff590100000400 ecffffff590100000400 ecffffff590100000400 - {e=>3,c=>-4,a=>59,b=>0,d=>-2} 3b000000a00100000300 3b000000a00100000300 3b000000a00100000300 3b000000a00100000300 - {e=>5,c=>-4,a=>-67,b=>2,d=>2} bdffffffa20000000500 bdffffffa20000000500 bdffffffa20000000500 bdffffffa20000000500 - {e=>7,c=>1,a=>-13,b=>2,d=>2} f3ffffff8a0000000700 f3ffffff8a0000000700 f3ffffff8a0000000700 f3ffffff8a0000000700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>4,c=>3,a=>-90,b=>0,d=>-4,f=>'UE5'} a6ffffff18010000040005000000 a6ffffff18010000040005000000 a6ffffff18010000040005000000 a6ffffff18010000040005000000 - {e=>4,c=>-3,a=>-120,b=>6,d=>-4,f=>'UE3'} 88ffffff2e010000040003000000 88ffffff2e010000040003000000 88ffffff2e010000040003000000 88ffffff2e010000040003000000 - {e=>2,c=>2,a=>94,b=>0,d=>-1,f=>'UE7'} 5e000000d0010000020007000000 5e000000d0010000020007000000 5e000000d0010000020007000000 5e000000d0010000020007000000 - {e=>7,c=>2,a=>51,b=>2,d=>0,f=>'UE3'} 3300000012000000070003000000 3300000012000000070003000000 3300000012000000070003000000 3300000012000000070003000000 - {e=>1,c=>-1,a=>74,b=>1,d=>1,f=>'UE6'} 4a00000079000000010006000000 4a00000079000000010006000000 4a00000079000000010006000000 4a00000079000000010006000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>2,c=>3,a=>-102,g=>2,b=>7,d=>2,f=>'UE1'} 9affffff9f000000020011000000 9affffff9f000000020011000000 9affffff9f000000020011000000 9affffff9f000000020011000000 - {e=>5,c=>0,a=>55,g=>0,b=>3,d=>1,f=>'UE1'} 3700000043000000050001000000 3700000043000000050001000000 3700000043000000050001000000 3700000043000000050001000000 - {e=>7,c=>0,a=>-113,g=>0,b=>6,d=>-2,f=>'UE1'} 8fffffff86010000070001000000 8fffffff86010000070001000000 8fffffff86010000070001000000 8fffffff86010000070001000000 - {e=>3,c=>3,a=>56,g=>5,b=>5,d=>-1,f=>'UE3'} 38000000dd01000003002b000000 38000000dd01000003002b000000 38000000dd01000003002b000000 38000000dd01000003002b000000 - {e=>4,c=>-2,a=>-74,g=>2,b=>3,d=>-1,f=>'UE4'} b6fffffff3010000040014000000 b6fffffff3010000040014000000 b6fffffff3010000040014000000 b6fffffff3010000040014000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>1,c=>-4,a=>98,g=>3,b=>6,d=>-4,f=>'UE7'} 620000002601000001001f000000 620000002601000001001f000000 620000002601000001001f000000 620000002601000001001f000000 - {e=>6,c=>-1,a=>-100,g=>6,b=>1,d=>-2,f=>'UE2'} 9cffffffb9010000060032000000 9cffffffb9010000060032000000 9cffffffb9010000060032000000 9cffffffb9010000060032000000 - {e=>3,c=>0,a=>-41,g=>4,b=>6,d=>1,f=>'UE2'} d7ffffff46000000030022000000 d7ffffff46000000030022000000 d7ffffff46000000030022000000 d7ffffff46000000030022000000 - {e=>3,c=>-4,a=>74,g=>2,b=>2,d=>-3,f=>'UE4'} 4a00000062010000030014000000 4a00000062010000030014000000 4a00000062010000030014000000 4a00000062010000030014000000 - {e=>2,c=>2,a=>-78,g=>4,b=>4,d=>-2,f=>'UE7'} b2ffffff94010000020027000000 b2ffffff94010000020027000000 b2ffffff94010000020027000000 b2ffffff94010000020027000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>1,a=>14,d=>-2,c=>-3,h=>7,b=>3,g=>7,f=>'UE6'} 0e000000ab01000001003e0000000700 0e000000ab01000001003e0000000700 0e000000ab01000001003e0000000700 0e000000ab01000001003e0000000700 - {e=>5,a=>-111,d=>-2,c=>-2,h=>7,b=>0,g=>5,f=>'UE0'} 91ffffffb00100000500280000000700 91ffffffb00100000500280000000700 91ffffffb00100000500280000000700 91ffffffb00100000500280000000700 - {e=>6,a=>68,d=>-3,c=>1,h=>7,b=>2,g=>1,f=>'UE2'} 440000004a01000006000a0000000700 440000004a01000006000a0000000700 440000004a01000006000a0000000700 440000004a01000006000a0000000700 - {e=>5,a=>-108,d=>1,c=>-3,h=>7,b=>1,g=>4,f=>'UE3'} 94ffffff690000000500230000000700 94ffffff690000000500230000000700 94ffffff690000000500230000000700 94ffffff690000000500230000000700 - {e=>3,a=>114,d=>-2,c=>-1,h=>6,b=>1,g=>2,f=>'UE5'} 72000000b90100000300150000000600 72000000b90100000300150000000600 72000000b90100000300150000000600 72000000b90100000300150000000600 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>2,a=>-51,d=>-4,c=>2,h=>0,b=>1,g=>7,f=>'UE3',i=>-4} cdffffff1101000002003b0000002000 cdffffff1101000002003b0000002000 cdffffff1101000002003b0000002000 cdffffff1101000002003b0000002000 - {e=>2,a=>-42,d=>2,c=>3,h=>7,b=>3,g=>2,f=>'UE5',i=>1} d6ffffff9b0000000200150000000f00 d6ffffff9b0000000200150000000f00 d6ffffff9b0000000200150000000f00 d6ffffff9b0000000200150000000f00 - {e=>1,a=>47,d=>3,c=>3,h=>1,b=>0,g=>4,f=>'UE0',i=>-4} 2f000000d80000000100200000002100 2f000000d80000000100200000002100 2f000000d80000000100200000002100 2f000000d80000000100200000002100 - {e=>0,a=>-80,d=>-1,c=>-4,h=>5,b=>2,g=>4,f=>'UE7',i=>0} b0ffffffe20100000000270000000500 b0ffffffe20100000000270000000500 b0ffffffe20100000000270000000500 b0ffffffe20100000000270000000500 - {e=>2,a=>-76,d=>-1,c=>1,h=>5,b=>6,g=>3,f=>'UE6',i=>2} b4ffffffce01000002001e0000001500 b4ffffffce01000002001e0000001500 b4ffffffce01000002001e0000001500 b4ffffffce01000002001e0000001500 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>5,a=>-74,d=>2,j=>'SEM1',c=>0,h=>7,b=>0,g=>2,f=>'UE7',i=>-3} b6ffffff800000000500170000002f0007000000 b6ffffff800000000500170000002f0007000000 b6ffffff800000000500170000002f0007000000 b6ffffff800000000500170000002f0007000000 - {e=>5,a=>94,d=>-1,j=>'SEM4',c=>3,h=>3,b=>5,g=>2,f=>'UE6',i=>-3} 5e000000dd0100000500160000002b0004000000 5e000000dd0100000500160000002b0004000000 5e000000dd0100000500160000002b0004000000 5e000000dd0100000500160000002b0004000000 - {e=>6,a=>-63,d=>-3,j=>'SE2',c=>3,h=>3,b=>5,g=>1,f=>'UE1',i=>2} c1ffffff5d010000060009000000130002000000 c1ffffff5d010000060009000000130002000000 c1ffffff5d010000060009000000130002000000 c1ffffff5d010000060009000000130002000000 - {e=>2,a=>15,d=>3,j=>'SEM3',c=>0,h=>2,b=>4,g=>5,f=>'UE7',i=>-4} 0f000000c400000002002f000000220005000000 0f000000c400000002002f000000220005000000 0f000000c400000002002f000000220005000000 0f000000c400000002002f000000220005000000 - {e=>4,a=>-16,d=>-4,j=>'SEM4',c=>-3,h=>4,b=>7,g=>2,f=>'UE3',i=>1} f0ffffff2f0100000400130000000c0004000000 f0ffffff2f0100000400130000000c0004000000 f0ffffff2f0100000400130000000c0004000000 f0ffffff2f0100000400130000000c0004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>7,a=>-113,d=>0,j=>'SE3',c=>2,k=>96,h=>4,b=>7,g=>5,f=>'UE3',i=>0} 8fffffff1700000007002b0000000400030000006000 8fffffff1700000007002b0000000400030000006000 8fffffff1700000007002b0000000400030000006000 8fffffff1700000007002b0000000400030000006000 - {e=>2,a=>-5,d=>-4,j=>'SEM4',c=>-1,k=>28,h=>2,b=>4,g=>0,f=>'UE0',i=>1} fbffffff3c0100000200000000000a00040000001c00 fbffffff3c0100000200000000000a00040000001c00 fbffffff3c0100000200000000000a00040000001c00 fbffffff3c0100000200000000000a00040000001c00 - {e=>5,a=>52,d=>-3,j=>'SE3',c=>-3,k=>-1,h=>2,b=>6,g=>1,f=>'UE6',i=>1} 340000006e01000005000e0000000a0003000000ff00 340000006e01000005000e0000000a0003000000ff00 340000006e01000005000e0000000a0003000000ff00 340000006e01000005000e0000000a0003000000ff00 - {e=>4,a=>-47,d=>-3,j=>'SE2',c=>2,k=>112,h=>6,b=>3,g=>2,f=>'UE3',i=>1} d1ffffff530100000400130000000e00020000007000 d1ffffff530100000400130000000e00020000007000 d1ffffff530100000400130000000e00020000007000 d1ffffff530100000400130000000e00020000007000 - {e=>4,a=>-78,d=>2,j=>'SE3',c=>2,k=>55,h=>1,b=>0,g=>5,f=>'UE2',i=>1} b2ffffff9000000004002a0000000900030000003700 b2ffffff9000000004002a0000000900030000003700 b2ffffff9000000004002a0000000900030000003700 b2ffffff9000000004002a0000000900030000003700 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>0,a=>-33,d=>-4,j=>'SEM1',l=>0,c=>-2,k=>46,h=>6,b=>0,g=>3,f=>'UE7',i=>-2} dfffffff3001000000001f0000003600070000002e00 dfffffff3001000000001f0000003600070000002e00 dfffffff3001000000001f0000003600070000002e00 dfffffff3001000000001f0000003600070000002e00 - {e=>3,a=>78,d=>-4,j=>'SE3',l=>1,c=>-1,k=>-21,h=>5,b=>3,g=>5,f=>'UE2',i=>-3} 4e0000003b01000003002a0000002d0003000000eb01 4e0000003b01000003002a0000002d0003000000eb01 4e0000003b01000003002a0000002d0003000000eb01 4e0000003b01000003002a0000002d0003000000eb01 - {e=>3,a=>-6,d=>0,j=>'SE0',l=>2,c=>-1,k=>54,h=>1,b=>1,g=>0,f=>'UE6',i=>2} faffffff390000000300060000001100000000003602 faffffff390000000300060000001100000000003602 faffffff390000000300060000001100000000003602 faffffff390000000300060000001100000000003602 - {e=>3,a=>-92,d=>2,j=>'SEM2',l=>3,c=>-3,k=>28,h=>0,b=>5,g=>6,f=>'UE1',i=>0} a4ffffffad0000000300310000000000060000001c03 a4ffffffad0000000300310000000000060000001c03 a4ffffffad0000000300310000000000060000001c03 a4ffffffad0000000300310000000000060000001c03 - {e=>0,a=>109,d=>3,j=>'SE1',l=>7,c=>-1,k=>116,h=>4,b=>4,g=>6,f=>'UE3',i=>-3} 6d000000fc0000000000330000002c00010000007407 6d000000fc0000000000330000002c00010000007407 6d000000fc0000000000330000002c00010000007407 6d000000fc0000000000330000002c00010000007407 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>1,a=>61,m=>0,d=>3,j=>'SEM3',l=>5,c=>-4,k=>-68,h=>1,b=>6,g=>5,f=>'UE4',i=>0} 3d000000e600000001002c000000010005000000bc05 3d000000e600000001002c000000010005000000bc05 3d000000e600000001002c000000010005000000bc05 3d000000e600000001002c000000010005000000bc05 - {e=>2,a=>-25,m=>-1,d=>2,j=>'SE2',l=>3,c=>-2,k=>-89,h=>3,b=>3,g=>4,f=>'UE1',i=>0} e7ffffffb3000000020021000000030002000000a73b e7ffffffb3000000020021000000030002000000a73b e7ffffffb3000000020021000000030002000000a73b e7ffffffb3000000020021000000030002000000a73b - {e=>2,a=>14,m=>0,d=>3,j=>'SEM3',l=>7,c=>1,k=>75,h=>6,b=>7,g=>6,f=>'UE5',i=>0} 0e000000cf0000000200350000000600050000004b07 0e000000cf0000000200350000000600050000004b07 0e000000cf0000000200350000000600050000004b07 0e000000cf0000000200350000000600050000004b07 - {e=>6,a=>-81,m=>-2,d=>3,j=>'SEM1',l=>1,c=>3,k=>45,h=>1,b=>0,g=>2,f=>'UE7',i=>-4} afffffffd80000000600170000002100070000002d31 afffffffd80000000600170000002100070000002d31 afffffffd80000000600170000002100070000002d31 afffffffd80000000600170000002100070000002d31 - {e=>0,a=>-15,m=>-2,d=>2,j=>'SEM1',l=>6,c=>-4,k=>52,h=>4,b=>4,g=>4,f=>'UE1',i=>2} f1ffffffa40000000000210000001400070000003436 f1ffffffa40000000000210000001400070000003436 f1ffffffa40000000000210000001400070000003436 f1ffffffa40000000000210000001400070000003436 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>7,n=>3,a=>-25,m=>2,d=>0,j=>'SE0',l=>5,c=>3,k=>-128,h=>6,b=>7,g=>1,f=>'UE4',i=>2} e7ffffff1f00000007000c000000160000000000801503000000 e7ffffff1f00000007000c000000160000000000801503000000 e7ffffff1f00000007000c000000160000000000801503000000 e7ffffff1f00000007000c000000160000000000801503000000 - {e=>4,n=>1,a=>31,m=>2,d=>-1,j=>'SE2',l=>0,c=>-1,k=>-106,h=>3,b=>0,g=>2,f=>'UE7',i=>0} 1f000000f8010000040017000000030002000000961001000000 1f000000f8010000040017000000030002000000961001000000 1f000000f8010000040017000000030002000000961001000000 1f000000f8010000040017000000030002000000961001000000 - {e=>7,n=>5,a=>42,m=>-4,d=>-4,j=>'SEM2',l=>3,c=>-4,k=>82,h=>1,b=>6,g=>7,f=>'UE0',i=>-1} 2a00000026010000070038000000390006000000522305000000 2a00000026010000070038000000390006000000522305000000 2a00000026010000070038000000390006000000522305000000 2a00000026010000070038000000390006000000522305000000 - {e=>3,n=>5,a=>51,m=>-4,d=>2,j=>'SEM4',l=>7,c=>3,k=>-87,h=>1,b=>2,g=>0,f=>'UE5',i=>0} 330000009a000000030005000000010004000000a92705000000 330000009a000000030005000000010004000000a92705000000 330000009a000000030005000000010004000000a92705000000 330000009a000000030005000000010004000000a92705000000 - {e=>0,n=>7,a=>31,m=>-3,d=>2,j=>'SE1',l=>2,c=>2,k=>-41,h=>5,b=>4,g=>6,f=>'UE1',i=>2} 1f00000094000000000031000000150001000000d72a07000000 1f00000094000000000031000000150001000000d72a07000000 1f00000094000000000031000000150001000000d72a07000000 1f00000094000000000031000000150001000000d72a07000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { int a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>0,n=>6,a=>-128,m=>-1,d=>0,j=>'SE2',l=>1,c=>0,k=>-95,h=>3,b=>5,g=>7,f=>'UE6',o=>62,i=>2} 80ffffff0500000000003e000000130002000000a139060000003e00 80ffffff0500000000003e000000130002000000a139060000003e00 80ffffff0500000000003e000000130002000000a139060000003e00 80ffffff0500000000003e000000130002000000a139060000003e00 - {e=>3,n=>5,a=>-9,m=>-4,d=>1,j=>'SEM1',l=>3,c=>3,k=>-61,h=>2,b=>6,g=>0,f=>'UE5',o=>76,i=>1} f7ffffff5e0000000300050000000a0007000000c323050000004c00 f7ffffff5e0000000300050000000a0007000000c323050000004c00 f7ffffff5e0000000300050000000a0007000000c323050000004c00 f7ffffff5e0000000300050000000a0007000000c323050000004c00 - {e=>4,n=>7,a=>15,m=>1,d=>-2,j=>'SEM2',l=>6,c=>2,k=>-46,h=>3,b=>5,g=>4,f=>'UE0',o=>51,i=>-1} 0f000000950100000400200000003b0006000000d20e070000003300 0f000000950100000400200000003b0006000000d20e070000003300 0f000000950100000400200000003b0006000000d20e070000003300 0f000000950100000400200000003b0006000000d20e070000003300 - {e=>7,n=>2,a=>-103,m=>2,d=>2,j=>'SEM3',l=>3,c=>-2,k=>75,h=>4,b=>7,g=>4,f=>'UE2',o=>76,i=>-1} 99ffffffb70000000700220000003c00050000004b13020000004c00 99ffffffb70000000700220000003c00050000004b13020000004c00 99ffffffb70000000700220000003c00050000004b13020000004c00 99ffffffb70000000700220000003c00050000004b13020000004c00 - {e=>6,n=>2,a=>-114,m=>-3,d=>-4,j=>'SEM1',l=>5,c=>-2,k=>88,h=>6,b=>0,g=>5,f=>'UE3',o=>44,i=>-3} 8effffff3001000006002b0000002e0007000000582d020000002c00 8effffff3001000006002b0000002e0007000000582d020000002c00 8effffff3001000006002b0000002e0007000000582d020000002c00 8effffff3001000006002b0000002e0007000000582d020000002c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; }; - {a=>20,b=>5} 1400000005000000 1400000005000000 1400000005000000 1400000005000000 - {a=>-55,b=>5} c9ffffff05000000 c9ffffff05000000 c9ffffff05000000 c9ffffff05000000 - {a=>98,b=>5} 6200000005000000 6200000005000000 6200000005000000 6200000005000000 - {a=>-119,b=>4} 89ffffff04000000 89ffffff04000000 89ffffff04000000 89ffffff04000000 - {a=>-90,b=>0} a6ffffff00000000 a6ffffff00000000 a6ffffff00000000 a6ffffff00000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; }; - {c=>-3,a=>-84,b=>3} acffffff2b000000 acffffff2b000000 acffffff2b000000 acffffff2b000000 - {c=>-4,a=>5,b=>3} 0500000023000000 0500000023000000 0500000023000000 0500000023000000 - {c=>0,a=>-27,b=>6} e5ffffff06000000 e5ffffff06000000 e5ffffff06000000 e5ffffff06000000 - {c=>1,a=>41,b=>1} 2900000009000000 2900000009000000 2900000009000000 2900000009000000 - {c=>2,a=>-56,b=>5} c8ffffff15000000 c8ffffff15000000 c8ffffff15000000 c8ffffff15000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; }; - {c=>-3,a=>38,b=>5,d=>-1} 26000000ed010000 26000000ed010000 26000000ed010000 26000000ed010000 - {c=>-4,a=>-66,b=>1,d=>2} beffffffa1000000 beffffffa1000000 beffffffa1000000 beffffffa1000000 - {c=>-2,a=>-17,b=>2,d=>0} efffffff32000000 efffffff32000000 efffffff32000000 efffffff32000000 - {c=>-3,a=>-93,b=>4,d=>3} a3ffffffec000000 a3ffffffec000000 a3ffffffec000000 a3ffffffec000000 - {c=>3,a=>83,b=>6,d=>0} 530000001e000000 530000001e000000 530000001e000000 530000001e000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; }; - {e=>3,c=>-2,a=>79,b=>7,d=>-1} 4f000000f70100000300 4f000000f70100000300 4f000000f70100000300 4f000000f70100000300 - {e=>0,c=>2,a=>118,b=>4,d=>-4} 76000000140100000000 76000000140100000000 76000000140100000000 76000000140100000000 - {e=>6,c=>0,a=>-24,b=>0,d=>3} e8ffffffc00000000600 e8ffffffc00000000600 e8ffffffc00000000600 e8ffffffc00000000600 - {e=>4,c=>-1,a=>-90,b=>3,d=>-3} a6ffffff7b0100000400 a6ffffff7b0100000400 a6ffffff7b0100000400 a6ffffff7b0100000400 - {e=>3,c=>1,a=>80,b=>3,d=>2} 500000008b0000000300 500000008b0000000300 500000008b0000000300 500000008b0000000300 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; }; - {e=>0,c=>-3,a=>-26,b=>6,d=>-1,f=>'UE1'} e6ffffffee010000000001000000 e6ffffffee010000000001000000 e6ffffffee010000000001000000 e6ffffffee010000000001000000 - {e=>4,c=>2,a=>124,b=>4,d=>-4,f=>'UE2'} 7c00000014010000040002000000 7c00000014010000040002000000 7c00000014010000040002000000 7c00000014010000040002000000 - {e=>7,c=>-2,a=>-9,b=>1,d=>3,f=>'UE2'} f7fffffff1000000070002000000 f7fffffff1000000070002000000 f7fffffff1000000070002000000 f7fffffff1000000070002000000 - {e=>7,c=>0,a=>122,b=>4,d=>2,f=>'UE5'} 7a00000084000000070005000000 7a00000084000000070005000000 7a00000084000000070005000000 7a00000084000000070005000000 - {e=>1,c=>-4,a=>-12,b=>6,d=>-4,f=>'UE4'} f4ffffff26010000010004000000 f4ffffff26010000010004000000 f4ffffff26010000010004000000 f4ffffff26010000010004000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; }; - {e=>7,c=>-4,a=>-80,g=>7,b=>2,d=>3,f=>'UE2'} b0ffffffe200000007003a000000 b0ffffffe200000007003a000000 b0ffffffe200000007003a000000 b0ffffffe200000007003a000000 - {e=>1,c=>2,a=>93,g=>2,b=>1,d=>3,f=>'UE0'} 5d000000d1000000010010000000 5d000000d1000000010010000000 5d000000d1000000010010000000 5d000000d1000000010010000000 - {e=>0,c=>0,a=>-46,g=>2,b=>3,d=>-3,f=>'UE6'} d2ffffff43010000000016000000 d2ffffff43010000000016000000 d2ffffff43010000000016000000 d2ffffff43010000000016000000 - {e=>4,c=>1,a=>120,g=>0,b=>2,d=>1,f=>'UE6'} 780000004a000000040006000000 780000004a000000040006000000 780000004a000000040006000000 780000004a000000040006000000 - {e=>3,c=>0,a=>19,g=>6,b=>7,d=>-4,f=>'UE0'} 1300000007010000030030000000 1300000007010000030030000000 1300000007010000030030000000 1300000007010000030030000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; }; - {e=>6,c=>-2,a=>-99,g=>4,b=>1,d=>0,f=>'UE0'} 9dffffff31000000060020000000 9dffffff31000000060020000000 9dffffff31000000060020000000 9dffffff31000000060020000000 - {e=>0,c=>0,a=>-111,g=>1,b=>4,d=>-1,f=>'UE6'} 91ffffffc401000000000e000000 91ffffffc401000000000e000000 91ffffffc401000000000e000000 91ffffffc401000000000e000000 - {e=>0,c=>1,a=>106,g=>1,b=>3,d=>3,f=>'UE0'} 6a000000cb000000000008000000 6a000000cb000000000008000000 6a000000cb000000000008000000 6a000000cb000000000008000000 - {e=>4,c=>-3,a=>94,g=>0,b=>2,d=>1,f=>'UE6'} 5e0000006a000000040006000000 5e0000006a000000040006000000 5e0000006a000000040006000000 5e0000006a000000040006000000 - {e=>7,c=>-4,a=>-48,g=>2,b=>3,d=>2,f=>'UE6'} d0ffffffa3000000070016000000 d0ffffffa3000000070016000000 d0ffffffa3000000070016000000 d0ffffffa3000000070016000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; }; - {e=>4,a=>-127,d=>2,c=>-2,h=>0,b=>1,g=>6,f=>'UE0'} 81ffffffb10000000400300000000000 81ffffffb10000000400300000000000 81ffffffb10000000400300000000000 81ffffffb10000000400300000000000 - {e=>0,a=>16,d=>-2,c=>-1,h=>5,b=>0,g=>2,f=>'UE6'} 10000000b80100000000160000000500 10000000b80100000000160000000500 10000000b80100000000160000000500 10000000b80100000000160000000500 - {e=>7,a=>-107,d=>2,c=>0,h=>1,b=>6,g=>7,f=>'UE5'} 95ffffff8600000007003d0000000100 95ffffff8600000007003d0000000100 95ffffff8600000007003d0000000100 95ffffff8600000007003d0000000100 - {e=>3,a=>53,d=>-2,c=>0,h=>0,b=>0,g=>5,f=>'UE0'} 35000000800100000300280000000000 35000000800100000300280000000000 35000000800100000300280000000000 35000000800100000300280000000000 - {e=>5,a=>33,d=>3,c=>0,h=>6,b=>7,g=>3,f=>'UE7'} 21000000c700000005001f0000000600 21000000c700000005001f0000000600 21000000c700000005001f0000000600 21000000c700000005001f0000000600 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; }; - {e=>1,a=>3,d=>0,c=>1,h=>4,b=>3,g=>2,f=>'UE0',i=>-2} 030000000b0000000100100000003400 030000000b0000000100100000003400 030000000b0000000100100000003400 030000000b0000000100100000003400 - {e=>1,a=>-126,d=>0,c=>0,h=>1,b=>1,g=>7,f=>'UE7',i=>-4} 82ffffff0100000001003f0000002100 82ffffff0100000001003f0000002100 82ffffff0100000001003f0000002100 82ffffff0100000001003f0000002100 - {e=>2,a=>58,d=>2,c=>-2,h=>1,b=>2,g=>4,f=>'UE4',i=>0} 3a000000b20000000200240000000100 3a000000b20000000200240000000100 3a000000b20000000200240000000100 3a000000b20000000200240000000100 - {e=>4,a=>66,d=>-4,c=>-3,h=>7,b=>2,g=>5,f=>'UE4',i=>-4} 420000002a01000004002c0000002700 420000002a01000004002c0000002700 420000002a01000004002c0000002700 420000002a01000004002c0000002700 - {e=>5,a=>9,d=>-1,c=>3,h=>4,b=>3,g=>3,f=>'UE3',i=>3} 09000000db01000005001b0000001c00 09000000db01000005001b0000001c00 09000000db01000005001b0000001c00 09000000db01000005001b0000001c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; }; - {e=>6,a=>73,d=>2,j=>'SEM3',c=>-1,h=>3,b=>0,g=>6,f=>'UE4',i=>0} 49000000b8000000060034000000030005000000 49000000b8000000060034000000030005000000 49000000b8000000060034000000030005000000 49000000b8000000060034000000030005000000 - {e=>1,a=>24,d=>0,j=>'SEM2',c=>-3,h=>7,b=>5,g=>1,f=>'UE3',i=>3} 180000002d00000001000b0000001f0006000000 180000002d00000001000b0000001f0006000000 180000002d00000001000b0000001f0006000000 180000002d00000001000b0000001f0006000000 - {e=>0,a=>-128,d=>0,j=>'SEM3',c=>1,h=>4,b=>7,g=>1,f=>'UE0',i=>-1} 80ffffff0f0000000000080000003c0005000000 80ffffff0f0000000000080000003c0005000000 80ffffff0f0000000000080000003c0005000000 80ffffff0f0000000000080000003c0005000000 - {e=>5,a=>-96,d=>1,j=>'SE1',c=>-2,h=>4,b=>4,g=>7,f=>'UE3',i=>-2} a0ffffff7400000005003b000000340001000000 a0ffffff7400000005003b000000340001000000 a0ffffff7400000005003b000000340001000000 a0ffffff7400000005003b000000340001000000 - {e=>0,a=>54,d=>-1,j=>'SEM1',c=>-3,h=>3,b=>5,g=>0,f=>'UE7',i=>3} 36000000ed0100000000070000001b0007000000 36000000ed0100000000070000001b0007000000 36000000ed0100000000070000001b0007000000 36000000ed0100000000070000001b0007000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; }; - {e=>3,a=>-71,d=>-2,j=>'SEM2',c=>-3,k=>-37,h=>1,b=>1,g=>2,f=>'UE1',i=>1} b9ffffffa9010000030011000000090006000000db00 b9ffffffa9010000030011000000090006000000db00 b9ffffffa9010000030011000000090006000000db00 b9ffffffa9010000030011000000090006000000db00 - {e=>6,a=>14,d=>1,j=>'SE2',c=>-3,k=>-10,h=>2,b=>0,g=>7,f=>'UE1',i=>1} 0e000000680000000600390000000a0002000000f600 0e000000680000000600390000000a0002000000f600 0e000000680000000600390000000a0002000000f600 0e000000680000000600390000000a0002000000f600 - {e=>1,a=>-4,d=>-4,j=>'SE1',c=>0,k=>-70,h=>2,b=>0,g=>7,f=>'UE0',i=>-2} fcffffff00010000010038000000320001000000ba00 fcffffff00010000010038000000320001000000ba00 fcffffff00010000010038000000320001000000ba00 fcffffff00010000010038000000320001000000ba00 - {e=>0,a=>-105,d=>0,j=>'SEM1',c=>3,k=>-94,h=>3,b=>4,g=>4,f=>'UE1',i=>1} 97ffffff1c0000000000210000000b0007000000a200 97ffffff1c0000000000210000000b0007000000a200 97ffffff1c0000000000210000000b0007000000a200 97ffffff1c0000000000210000000b0007000000a200 - {e=>0,a=>-18,d=>3,j=>'SEM4',c=>0,k=>76,h=>6,b=>7,g=>7,f=>'UE1',i=>-3} eeffffffc70000000000390000002e00040000004c00 eeffffffc70000000000390000002e00040000004c00 eeffffffc70000000000390000002e00040000004c00 eeffffffc70000000000390000002e00040000004c00 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; }; - {e=>0,a=>-72,d=>1,j=>'SE1',l=>1,c=>2,k=>-123,h=>6,b=>0,g=>0,f=>'UE0',i=>2} b8ffffff500000000000000000001600010000008501 b8ffffff500000000000000000001600010000008501 b8ffffff500000000000000000001600010000008501 b8ffffff500000000000000000001600010000008501 - {e=>4,a=>38,d=>0,j=>'SE3',l=>3,c=>-3,k=>109,h=>0,b=>0,g=>6,f=>'UE4',i=>-2} 26000000280000000400340000003000030000006d03 26000000280000000400340000003000030000006d03 26000000280000000400340000003000030000006d03 26000000280000000400340000003000030000006d03 - {e=>1,a=>-38,d=>0,j=>'SEM4',l=>7,c=>1,k=>88,h=>4,b=>5,g=>1,f=>'UE2',i=>0} daffffff0d00000001000a0000000400040000005807 daffffff0d00000001000a0000000400040000005807 daffffff0d00000001000a0000000400040000005807 daffffff0d00000001000a0000000400040000005807 - {e=>3,a=>-30,d=>-3,j=>'SEM3',l=>1,c=>0,k=>47,h=>7,b=>3,g=>4,f=>'UE1',i=>1} e2ffffff430100000300210000000f00050000002f01 e2ffffff430100000300210000000f00050000002f01 e2ffffff430100000300210000000f00050000002f01 e2ffffff430100000300210000000f00050000002f01 - {e=>2,a=>49,d=>-4,j=>'SEM3',l=>5,c=>2,k=>101,h=>0,b=>0,g=>1,f=>'UE5',i=>-4} 310000001001000002000d0000002000050000006505 310000001001000002000d0000002000050000006505 310000001001000002000d0000002000050000006505 310000001001000002000d0000002000050000006505 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; }; - {e=>2,a=>72,m=>-1,d=>-1,j=>'SE1',l=>2,c=>-3,k=>28,h=>7,b=>0,g=>6,f=>'UE7',i=>0} 48000000e80100000200370000000700010000001c3a 48000000e80100000200370000000700010000001c3a 48000000e80100000200370000000700010000001c3a 48000000e80100000200370000000700010000001c3a - {e=>5,a=>-114,m=>3,d=>3,j=>'SE0',l=>7,c=>-3,k=>-79,h=>1,b=>2,g=>6,f=>'UE1',i=>2} 8effffffea000000050031000000110000000000b11f 8effffffea000000050031000000110000000000b11f 8effffffea000000050031000000110000000000b11f 8effffffea000000050031000000110000000000b11f - {e=>6,a=>-48,m=>1,d=>-3,j=>'SE2',l=>2,c=>-3,k=>78,h=>0,b=>5,g=>1,f=>'UE7',i=>-4} d0ffffff6d01000006000f0000002000020000004e0a d0ffffff6d01000006000f0000002000020000004e0a d0ffffff6d01000006000f0000002000020000004e0a d0ffffff6d01000006000f0000002000020000004e0a - {e=>5,a=>101,m=>-2,d=>3,j=>'SE3',l=>3,c=>-3,k=>-125,h=>5,b=>4,g=>0,f=>'UE1',i=>-3} 65000000ec0000000500010000002d00030000008333 65000000ec0000000500010000002d00030000008333 65000000ec0000000500010000002d00030000008333 65000000ec0000000500010000002d00030000008333 - {e=>4,a=>-7,m=>2,d=>1,j=>'SE1',l=>7,c=>-2,k=>8,h=>4,b=>7,g=>5,f=>'UE1',i=>-2} f9ffffff770000000400290000003400010000000817 f9ffffff770000000400290000003400010000000817 f9ffffff770000000400290000003400010000000817 f9ffffff770000000400290000003400010000000817 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; }; - {e=>3,n=>2,a=>-110,m=>-1,d=>3,j=>'SEM1',l=>6,c=>-3,k=>119,h=>0,b=>3,g=>3,f=>'UE4',i=>0} 92ffffffeb00000003001c000000000007000000773e02000000 92ffffffeb00000003001c000000000007000000773e02000000 92ffffffeb00000003001c000000000007000000773e02000000 92ffffffeb00000003001c000000000007000000773e02000000 - {e=>4,n=>0,a=>-68,m=>3,d=>-1,j=>'SEM4',l=>7,c=>0,k=>57,h=>0,b=>3,g=>7,f=>'UE7',i=>-2} bcffffffc301000004003f000000300004000000391f00000000 bcffffffc301000004003f000000300004000000391f00000000 bcffffffc301000004003f000000300004000000391f00000000 bcffffffc301000004003f000000300004000000391f00000000 - {e=>4,n=>6,a=>-6,m=>-2,d=>-1,j=>'SE1',l=>3,c=>3,k=>127,h=>3,b=>6,g=>5,f=>'UE3',i=>2} faffffffde01000004002b0000001300010000007f3306000000 faffffffde01000004002b0000001300010000007f3306000000 faffffffde01000004002b0000001300010000007f3306000000 faffffffde01000004002b0000001300010000007f3306000000 - {e=>1,n=>0,a=>-116,m=>-2,d=>1,j=>'SE1',l=>7,c=>-2,k=>-82,h=>7,b=>1,g=>4,f=>'UE7',i=>3} 8cffffff710000000100270000001f0001000000ae3700000000 8cffffff710000000100270000001f0001000000ae3700000000 8cffffff710000000100270000001f0001000000ae3700000000 8cffffff710000000100270000001f0001000000ae3700000000 - {e=>5,n=>5,a=>122,m=>-3,d=>3,j=>'SEM2',l=>2,c=>-2,k=>31,h=>3,b=>1,g=>5,f=>'UE0',i=>1} 7a000000f10000000500280000000b00060000001f2a05000000 7a000000f10000000500280000000b00060000001f2a05000000 7a000000f10000000500280000000b00060000001f2a05000000 7a000000f10000000500280000000b00060000001f2a05000000 = typedef int foo; enum en_u { UE0, UE1, UE2, UE3, UE4, UE5, UE6, UE7 }; enum en_s { SEM4=-4, SEM3, SEM2, SEM1, SE0, SE1, SE2, SE3 }; #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct enum_pack_2 { long a; unsigned int b:3; signed int c:3; foo d:3; unsigned char e:3; enum en_u f:3; unsigned int g:3; int :0; unsigned char h:3; signed char i:3; enum en_s j:3; char k; unsigned char l:3; signed char m:3; unsigned int n:3; unsigned char o; }; - {e=>5,n=>1,a=>-10,m=>1,d=>-1,j=>'SE2',l=>2,c=>0,k=>99,h=>6,b=>3,g=>7,f=>'UE6',o=>213,i=>-2} f6ffffffc301000005003e000000360002000000630a01000000d500 f6ffffffc301000005003e000000360002000000630a01000000d500 f6ffffffc301000005003e000000360002000000630a01000000d500 f6ffffffc301000005003e000000360002000000630a01000000d500 - {e=>0,n=>3,a=>53,m=>-2,d=>-1,j=>'SE1',l=>7,c=>1,k=>25,h=>3,b=>2,g=>5,f=>'UE3',o=>128,i=>3} 35000000ca01000000002b0000001b00010000001937030000008000 35000000ca01000000002b0000001b00010000001937030000008000 35000000ca01000000002b0000001b00010000001937030000008000 35000000ca01000000002b0000001b00010000001937030000008000 - {e=>5,n=>2,a=>23,m=>1,d=>-2,j=>'SEM2',l=>3,c=>-3,k=>-114,h=>1,b=>1,g=>2,f=>'UE6',o=>170,i=>-4} 17000000a90100000500160000002100060000008e0b02000000aa00 17000000a90100000500160000002100060000008e0b02000000aa00 17000000a90100000500160000002100060000008e0b02000000aa00 17000000a90100000500160000002100060000008e0b02000000aa00 - {e=>7,n=>7,a=>-19,m=>-1,d=>-1,j=>'SE3',l=>2,c=>0,k=>-61,h=>3,b=>3,g=>7,f=>'UE6',o=>181,i=>-1} edffffffc301000007003e0000003b0003000000c33a07000000b500 edffffffc301000007003e0000003b0003000000c33a07000000b500 edffffffc301000007003e0000003b0003000000c33a07000000b500 edffffffc301000007003e0000003b0003000000c33a07000000b500 - {e=>5,n=>5,a=>-62,m=>0,d=>-4,j=>'SEM4',l=>6,c=>-2,k=>-114,h=>3,b=>4,g=>6,f=>'UE0',o=>248,i=>3} c2ffffff340100000500300000001b00040000008e0605000000f800 c2ffffff340100000500300000001b00040000008e0605000000f800 c2ffffff340100000500300000001b00040000008e0605000000f800 c2ffffff340100000500300000001b00040000008e0605000000f800 = struct toobig { unsigned char a:2; }; - {a=>0} 00 00 00 00 - {a=>0} 00 00 00 00 - {a=>2} 02 02 02 02 - {a=>1} 01 01 01 01 - {a=>1} 01 01 01 01 = struct toobig { unsigned char a:2; unsigned char b:7; }; - {a=>0,b=>93} 005d 005d 005d 005d - {a=>3,b=>125} 037d 037d 037d 037d - {a=>1,b=>103} 0167 0167 0167 0167 - {a=>0,b=>44} 002c 002c 002c 002c - {a=>2,b=>56} 0238 0238 0238 0238 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>1,b=>105} 0169 0169 0169 0169 - {a=>1,b=>69} 0145 0145 0145 0145 - {a=>0,b=>100} 0064 0064 0064 0064 - {a=>1,b=>64} 0140 0140 0140 0140 - {a=>1,b=>29} 011d 011d 011d 011d = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>2,a=>1,b=>120} 01780200 01780200 01780200 01780200 - {c=>3,a=>3,b=>117} 03750300 03750300 03750300 03750300 - {c=>2,a=>3,b=>66} 03420200 03420200 03420200 03420200 - {c=>2,a=>3,b=>40} 03280200 03280200 03280200 03280200 - {c=>3,a=>1,b=>78} 014e0300 014e0300 014e0300 014e0300 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>1,a=>0,b=>40,d=>29011} 002801005371 002801005371 002801005371 002801005371 - {c=>1,a=>1,b=>52,d=>7870} 01340100be1e 01340100be1e 01340100be1e 01340100be1e - {c=>3,a=>0,b=>127,d=>24484} 007f0300a45f 007f0300a45f 007f0300a45f 007f0300a45f - {c=>0,a=>1,b=>117,d=>2770} 01750000d20a 01750000d20a 01750000d20a 01750000d20a - {c=>0,a=>2,b=>117,d=>21525} 027500001554 027500001554 027500001554 027500001554 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>0,a=>2,b=>47,d=>5532} 022f00009c15 022f00009c15 022f00009c150000 022f00009c150000 - {c=>0,a=>2,b=>53,d=>17293} 023500008d43 023500008d43 023500008d430000 023500008d430000 - {c=>0,a=>0,b=>42,d=>15065} 002a0000d93a 002a0000d93a 002a0000d93a0000 002a0000d93a0000 - {c=>1,a=>2,b=>43,d=>26082} 022b0100e265 022b0100e265 022b0100e2650000 022b0100e2650000 - {c=>2,a=>0,b=>3,d=>23011} 00030200e359 00030200e359 00030200e3590000 00030200e3590000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>0,c=>2,a=>1,b=>107,d=>14008} 016b0200b83600000000 016b0200b83600000000 016b0200b836000000000000 016b0200b836000000000000 - {e=>1,c=>1,a=>0,b=>109,d=>31882} 006d01008a7c01000000 006d01008a7c01000000 006d01008a7c000001000000 006d01008a7c000001000000 - {e=>2,c=>1,a=>0,b=>83,d=>27991} 00530100576d02000000 00530100576d02000000 00530100576d000002000000 00530100576d000002000000 - {e=>0,c=>3,a=>1,b=>74,d=>7214} 014a03002e1c00000000 014a03002e1c00000000 014a03002e1c000000000000 014a03002e1c000000000000 - {e=>0,c=>1,a=>0,b=>93,d=>28404} 005d0100f46e00000000 005d0100f46e00000000 005d0100f46e000000000000 005d0100f46e000000000000 = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>2,c=>3,a=>2,b=>66,d=>17839,f=>37720169} 02420300af450200000069903f02 02420300af450200000069903f02 02420300af4500000200000069903f02 02420300af4500000200000069903f02 - {e=>2,c=>0,a=>2,b=>81,d=>29158,f=>19309962} 02510000e671020000008aa52601 02510000e671020000008aa52601 02510000e6710000020000008aa52601 02510000e6710000020000008aa52601 - {e=>0,c=>1,a=>2,b=>98,d=>18169,f=>163308787} 02620100f94600000000f3e4bb09 02620100f94600000000f3e4bb09 02620100f946000000000000f3e4bb09 02620100f946000000000000f3e4bb09 - {e=>0,c=>3,a=>3,b=>41,d=>24753,f=>707702915} 03290300b1600000000083b02e2a 03290300b1600000000083b02e2a 03290300b16000000000000083b02e2a 03290300b16000000000000083b02e2a - {e=>3,c=>0,a=>2,b=>18,d=>28569,f=>199312493} 02120000996f030000006d44e10b 02120000996f030000006d44e10b 02120000996f0000030000006d44e10b 02120000996f0000030000006d44e10b = struct toobig { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>3,c=>0,a=>3,g=>253,b=>73,d=>20290,f=>324422081} 03490000424f03000000c1495613fd 03490000424f03000000c1495613fd00 03490000424f000003000000c1495613fd000000 03490000424f000003000000c1495613fd000000 - {e=>2,c=>1,a=>2,g=>98,b=>58,d=>14829,f=>1109100526} 023a0100ed3902000000ee871b4262 023a0100ed3902000000ee871b426200 023a0100ed39000002000000ee871b4262000000 023a0100ed39000002000000ee871b4262000000 - {e=>1,c=>2,a=>3,g=>243,b=>82,d=>31588,f=>727978398} 03520200647b010000009e11642bf3 03520200647b010000009e11642bf300 03520200647b0000010000009e11642bf3000000 03520200647b0000010000009e11642bf3000000 - {e=>1,c=>1,a=>1,g=>104,b=>26,d=>22162,f=>432784954} 011a01009256010000003ac6cb1968 011a01009256010000003ac6cb196800 011a010092560000010000003ac6cb1968000000 011a010092560000010000003ac6cb1968000000 - {e=>0,c=>3,a=>3,g=>167,b=>62,d=>17539,f=>1939871904} 033e0300834400000000a018a073a7 033e0300834400000000a018a073a700 033e03008344000000000000a018a073a7000000 033e03008344000000000000a018a073a7000000 = struct toobig { char a; unsigned char b:2; }; - {a=>-24,b=>1} e801 e801 e801 e801 - {a=>61,b=>3} 3d03 3d03 3d03 3d03 - {a=>-95,b=>1} a101 a101 a101 a101 - {a=>-2,b=>2} fe02 fe02 fe02 fe02 - {a=>-71,b=>3} b903 b903 b903 b903 = struct toobig { char a; unsigned char b:2; unsigned char c:7; }; - {c=>113,a=>-30,b=>1} e20171 e20171 e20171 e20171 - {c=>77,a=>93,b=>3} 5d034d 5d034d 5d034d 5d034d - {c=>76,a=>-105,b=>0} 97004c 97004c 97004c 97004c - {c=>113,a=>-106,b=>0} 960071 960071 960071 960071 - {c=>111,a=>21,b=>3} 15036f 15036f 15036f 15036f = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>117,a=>4,b=>0} 040075 04007500 04007500 04007500 - {c=>110,a=>92,b=>1} 5c016e 5c016e00 5c016e00 5c016e00 - {c=>80,a=>1,b=>0} 010050 01005000 01005000 01005000 - {c=>115,a=>49,b=>0} 310073 31007300 31007300 31007300 - {c=>119,a=>-53,b=>1} cb0177 cb017700 cb017700 cb017700 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>119,a=>99,b=>1,d=>2} 6301770200 630177000200 630177000200 630177000200 - {c=>52,a=>-52,b=>2,d=>1} cc02340100 cc0234000100 cc0234000100 cc0234000100 - {c=>59,a=>2,b=>2,d=>0} 02023b0000 02023b000000 02023b000000 02023b000000 - {c=>25,a=>59,b=>3,d=>1} 3b03190100 3b0319000100 3b0319000100 3b0319000100 - {c=>52,a=>-19,b=>0,d=>0} ed00340000 ed0034000000 ed0034000000 ed0034000000 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>10626,c=>62,a=>76,b=>3,d=>2} 4c033e02008229 4c033e0002008229 4c033e0002008229 4c033e0002008229 - {e=>16013,c=>106,a=>-123,b=>2,d=>2} 85026a02008d3e 85026a0002008d3e 85026a0002008d3e 85026a0002008d3e - {e=>15778,c=>84,a=>-66,b=>1,d=>3} be01540300a23d be0154000300a23d be0154000300a23d be0154000300a23d - {e=>3225,c=>25,a=>-124,b=>1,d=>1} 8401190100990c 840119000100990c 840119000100990c 840119000100990c - {e=>27218,c=>32,a=>-118,b=>0,d=>2} 8a00200200526a 8a0020000200526a 8a0020000200526a 8a0020000200526a = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>21377,c=>115,a=>-29,b=>0,d=>3} e3007303008153 e300730003008153 e300730003008153 e300730003008153 - {e=>21700,c=>42,a=>-64,b=>3,d=>0} c0032a0000c454 c0032a000000c454 c0032a000000c454 c0032a000000c454 - {e=>20468,c=>93,a=>104,b=>0,d=>3} 68005d0300f44f 68005d000300f44f 68005d000300f44f 68005d000300f44f - {e=>31677,c=>22,a=>109,b=>2,d=>3} 6d02160300bd7b 6d0216000300bd7b 6d0216000300bd7b 6d0216000300bd7b - {e=>23636,c=>112,a=>-2,b=>1,d=>0} fe01700000545c fe0170000000545c fe0170000000545c fe0170000000545c = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>1537,c=>102,a=>-45,b=>3,d=>3,f=>0} d303660300010600000000 d30366000300010600000000 d30366000300010600000000 d30366000300010600000000 - {e=>22539,c=>10,a=>-66,b=>3,d=>1,f=>1} be030a01000b5801000000 be030a0001000b5801000000 be030a0001000b5801000000 be030a0001000b5801000000 - {e=>28767,c=>112,a=>28,b=>1,d=>1,f=>1} 1c017001005f7001000000 1c01700001005f7001000000 1c01700001005f7001000000 1c01700001005f7001000000 - {e=>10945,c=>37,a=>-128,b=>0,d=>0,f=>1} 8000250000c12a01000000 800025000000c12a01000000 800025000000c12a01000000 800025000000c12a01000000 - {e=>7837,c=>65,a=>-30,b=>2,d=>1,f=>2} e2024101009d1e02000000 e202410001009d1e02000000 e202410001009d1e02000000 e202410001009d1e02000000 = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16952,c=>81,a=>-69,g=>1806494585,b=>0,d=>0,f=>1} bb0051000038420100000079ebac6b bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b bb005100000038420100000079ebac6b - {e=>22905,c=>42,a=>28,g=>718498820,b=>3,d=>3,f=>0} 1c032a0300795900000000046cd32a 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a 1c032a000300795900000000046cd32a - {e=>25314,c=>59,a=>-52,g=>851143488,b=>3,d=>3,f=>0} cc033b0300e26200000000406bbb32 cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 cc033b000300e26200000000406bbb32 - {e=>9562,c=>91,a=>-56,g=>17470223,b=>0,d=>1,f=>0} c8005b01005a25000000000f930a01 c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 c8005b0001005a25000000000f930a01 - {e=>19455,c=>19,a=>7,g=>1006255369,b=>0,d=>2,f=>3} 0700130200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b 070013000200ff4b03000000093dfa3b = struct toobig { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>19431,a=>126,d=>3,c=>84,h=>119,b=>2,g=>10182399,f=>1} 7e02540300e74b01000000ff5e9b0077 7e0254000300e74b01000000ff5e9b007700 7e0254000300e74b01000000ff5e9b0077000000 7e0254000300e74b01000000ff5e9b0077000000 - {e=>1236,a=>51,d=>0,c=>82,h=>240,b=>2,g=>1480777427,f=>1} 3302520000d40401000000d3de4258f0 330252000000d40401000000d3de4258f000 330252000000d40401000000d3de4258f0000000 330252000000d40401000000d3de4258f0000000 - {e=>30136,a=>-73,d=>2,c=>69,h=>69,b=>0,g=>579636421,f=>2} b700450200b87502000000c58c8c2245 b70045000200b87502000000c58c8c224500 b70045000200b87502000000c58c8c2245000000 b70045000200b87502000000c58c8c2245000000 - {e=>25530,a=>-39,d=>2,c=>73,h=>143,b=>3,g=>1327623552,f=>3} d903490200ba630300000080ed214f8f d90349000200ba630300000080ed214f8f00 d90349000200ba630300000080ed214f8f000000 d90349000200ba630300000080ed214f8f000000 - {e=>29715,a=>81,d=>0,c=>33,h=>85,b=>0,g=>909633605,f=>1} 510021000013740100000045e8373655 51002100000013740100000045e837365500 51002100000013740100000045e8373655000000 51002100000013740100000045e8373655000000 = struct toobig { short a; unsigned char b:2; }; - {a=>-69,b=>3} bbff03 bbff0300 bbff0300 bbff0300 - {a=>-109,b=>1} 93ff01 93ff0100 93ff0100 93ff0100 - {a=>68,b=>2} 440002 44000200 44000200 44000200 - {a=>-46,b=>1} d2ff01 d2ff0100 d2ff0100 d2ff0100 - {a=>109,b=>0} 6d0000 6d000000 6d000000 6d000000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; }; - {c=>54,a=>-126,b=>1} 82ff0136 82ff0136 82ff0136 82ff0136 - {c=>117,a=>49,b=>0} 31000075 31000075 31000075 31000075 - {c=>60,a=>-49,b=>3} cfff033c cfff033c cfff033c cfff033c - {c=>21,a=>117,b=>0} 75000015 75000015 75000015 75000015 - {c=>6,a=>-91,b=>2} a5ff0206 a5ff0206 a5ff0206 a5ff0206 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>126,a=>87,b=>0} 5700007e 5700007e 5700007e 5700007e - {c=>27,a=>-45,b=>1} d3ff011b d3ff011b d3ff011b d3ff011b - {c=>6,a=>-11,b=>2} f5ff0206 f5ff0206 f5ff0206 f5ff0206 - {c=>55,a=>63,b=>0} 3f000037 3f000037 3f000037 3f000037 - {c=>121,a=>81,b=>0} 51000079 51000079 51000079 51000079 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>11,a=>-34,b=>0,d=>1} deff000b0100 deff000b0100 deff000b0100 deff000b0100 - {c=>109,a=>-11,b=>2,d=>1} f5ff026d0100 f5ff026d0100 f5ff026d0100 f5ff026d0100 - {c=>79,a=>-9,b=>1,d=>2} f7ff014f0200 f7ff014f0200 f7ff014f0200 f7ff014f0200 - {c=>12,a=>121,b=>3,d=>3} 7900030c0300 7900030c0300 7900030c0300 7900030c0300 - {c=>3,a=>-105,b=>1,d=>0} 97ff01030000 97ff01030000 97ff01030000 97ff01030000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>16815,c=>31,a=>-103,b=>3,d=>0} 99ff031f0000af41 99ff031f0000af41 99ff031f0000af41 99ff031f0000af41 - {e=>30240,c=>36,a=>-51,b=>1,d=>2} cdff012402002076 cdff012402002076 cdff012402002076 cdff012402002076 - {e=>7916,c=>40,a=>47,b=>3,d=>1} 2f0003280100ec1e 2f0003280100ec1e 2f0003280100ec1e 2f0003280100ec1e - {e=>18293,c=>39,a=>19,b=>3,d=>2} 1300032702007547 1300032702007547 1300032702007547 1300032702007547 - {e=>20458,c=>127,a=>-47,b=>1,d=>3} d1ff017f0300ea4f d1ff017f0300ea4f d1ff017f0300ea4f d1ff017f0300ea4f = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>4625,c=>71,a=>-47,b=>0,d=>0} d1ff004700001112 d1ff004700001112 d1ff004700001112 d1ff004700001112 - {e=>32168,c=>81,a=>26,b=>2,d=>1} 1a0002510100a87d 1a0002510100a87d 1a0002510100a87d 1a0002510100a87d - {e=>16938,c=>8,a=>95,b=>0,d=>2} 5f00000802002a42 5f00000802002a42 5f00000802002a42 5f00000802002a42 - {e=>7085,c=>73,a=>-59,b=>0,d=>1} c5ff00490100ad1b c5ff00490100ad1b c5ff00490100ad1b c5ff00490100ad1b - {e=>22949,c=>98,a=>-95,b=>2,d=>0} a1ff02620000a559 a1ff02620000a559 a1ff02620000a559 a1ff02620000a559 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>15082,c=>111,a=>-95,b=>0,d=>0,f=>2} a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 a1ff006f0000ea3a02000000 - {e=>2765,c=>57,a=>35,b=>3,d=>0,f=>3} 230003390000cd0a03000000 230003390000cd0a03000000 230003390000cd0a03000000 230003390000cd0a03000000 - {e=>10395,c=>112,a=>-21,b=>2,d=>3,f=>1} ebff027003009b2801000000 ebff027003009b2801000000 ebff027003009b2801000000 ebff027003009b2801000000 - {e=>27935,c=>81,a=>-93,b=>3,d=>1,f=>3} a3ff035101001f6d03000000 a3ff035101001f6d03000000 a3ff035101001f6d03000000 a3ff035101001f6d03000000 - {e=>9978,c=>10,a=>-112,b=>2,d=>1,f=>0} 90ff020a0100fa2600000000 90ff020a0100fa2600000000 90ff020a0100fa2600000000 90ff020a0100fa2600000000 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7540,c=>19,a=>-11,g=>1471494247,b=>0,d=>2,f=>2} f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 f5ff00130200741d020000006738b557 - {e=>21082,c=>15,a=>-52,g=>380642011,b=>2,d=>3,f=>0} ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 ccff020f03005a5200000000db22b016 - {e=>20626,c=>108,a=>-96,g=>1260212640,b=>2,d=>1,f=>2} a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b a0ff026c0100925002000000a0511d4b - {e=>9472,c=>8,a=>-4,g=>1691591019,b=>2,d=>1,f=>2} fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 fcff020801000025020000006ba1d364 - {e=>9356,c=>8,a=>78,g=>959851153,b=>3,d=>3,f=>2} 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 4e00030803008c2402000000912a3639 = struct toobig { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>15569,a=>49,d=>0,c=>98,h=>100,b=>2,g=>783521155,f=>1} 310002620000d13c010000008395b32e64 310002620000d13c010000008395b32e6400 310002620000d13c010000008395b32e64000000 310002620000d13c010000008395b32e64000000 - {e=>16972,a=>63,d=>1,c=>69,h=>90,b=>2,g=>609013294,f=>3} 3f00024501004c42030000002ece4c245a 3f00024501004c42030000002ece4c245a00 3f00024501004c42030000002ece4c245a000000 3f00024501004c42030000002ece4c245a000000 - {e=>28524,a=>82,d=>1,c=>98,h=>95,b=>0,g=>948610449,f=>0} 5200006201006c6f0000000091a58a385f 5200006201006c6f0000000091a58a385f00 5200006201006c6f0000000091a58a385f000000 5200006201006c6f0000000091a58a385f000000 - {e=>15555,a=>-7,d=>0,c=>124,h=>184,b=>1,g=>1579365922,f=>3} f9ff017c0000c33c030000002236235eb8 f9ff017c0000c33c030000002236235eb800 f9ff017c0000c33c030000002236235eb8000000 f9ff017c0000c33c030000002236235eb8000000 - {e=>30807,a=>89,d=>3,c=>74,h=>1,b=>3,g=>681792943,f=>3} 5900034a0300577803000000af55a32801 5900034a0300577803000000af55a3280100 5900034a0300577803000000af55a32801000000 5900034a0300577803000000af55a32801000000 = struct toobig { int a; unsigned char b:2; }; - {a=>95,b=>2} 5f00000002 5f0000000200 5f00000002000000 5f00000002000000 - {a=>81,b=>1} 5100000001 510000000100 5100000001000000 5100000001000000 - {a=>-17,b=>1} efffffff01 efffffff0100 efffffff01000000 efffffff01000000 - {a=>-1,b=>2} ffffffff02 ffffffff0200 ffffffff02000000 ffffffff02000000 - {a=>117,b=>2} 7500000002 750000000200 7500000002000000 7500000002000000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; }; - {c=>67,a=>69,b=>0} 450000000043 450000000043 4500000000430000 4500000000430000 - {c=>61,a=>-71,b=>3} b9ffffff033d b9ffffff033d b9ffffff033d0000 b9ffffff033d0000 - {c=>36,a=>-65,b=>0} bfffffff0024 bfffffff0024 bfffffff00240000 bfffffff00240000 - {c=>115,a=>-65,b=>2} bfffffff0273 bfffffff0273 bfffffff02730000 bfffffff02730000 - {c=>98,a=>-9,b=>1} f7ffffff0162 f7ffffff0162 f7ffffff01620000 f7ffffff01620000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>110,a=>-90,b=>2} a6ffffff026e a6ffffff026e a6ffffff026e0000 a6ffffff026e0000 - {c=>89,a=>109,b=>3} 6d0000000359 6d0000000359 6d00000003590000 6d00000003590000 - {c=>119,a=>55,b=>2} 370000000277 370000000277 3700000002770000 3700000002770000 - {c=>78,a=>-95,b=>2} a1ffffff024e a1ffffff024e a1ffffff024e0000 a1ffffff024e0000 - {c=>108,a=>-76,b=>2} b4ffffff026c b4ffffff026c b4ffffff026c0000 b4ffffff026c0000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>67,a=>-11,b=>2,d=>2} f5ffffff02430200 f5ffffff02430200 f5ffffff02430200 f5ffffff02430200 - {c=>94,a=>-43,b=>2,d=>0} d5ffffff025e0000 d5ffffff025e0000 d5ffffff025e0000 d5ffffff025e0000 - {c=>13,a=>12,b=>0,d=>3} 0c000000000d0300 0c000000000d0300 0c000000000d0300 0c000000000d0300 - {c=>20,a=>75,b=>1,d=>3} 4b00000001140300 4b00000001140300 4b00000001140300 4b00000001140300 - {c=>16,a=>99,b=>2,d=>0} 6300000002100000 6300000002100000 6300000002100000 6300000002100000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>15944,c=>81,a=>-88,b=>1,d=>1} a8ffffff01510100483e a8ffffff01510100483e a8ffffff01510100483e0000 a8ffffff01510100483e0000 - {e=>28784,c=>113,a=>-26,b=>3,d=>2} e6ffffff037102007070 e6ffffff037102007070 e6ffffff0371020070700000 e6ffffff0371020070700000 - {e=>25323,c=>4,a=>3,b=>2,d=>3} 0300000002040300eb62 0300000002040300eb62 0300000002040300eb620000 0300000002040300eb620000 - {e=>5631,c=>25,a=>126,b=>2,d=>2} 7e00000002190200ff15 7e00000002190200ff15 7e00000002190200ff150000 7e00000002190200ff150000 - {e=>30242,c=>81,a=>43,b=>1,d=>2} 2b000000015102002276 2b000000015102002276 2b0000000151020022760000 2b0000000151020022760000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>26399,c=>49,a=>-62,b=>2,d=>1} c2ffffff023101001f67 c2ffffff023101001f67 c2ffffff023101001f670000 c2ffffff023101001f670000 - {e=>29626,c=>6,a=>-98,b=>2,d=>1} 9effffff02060100ba73 9effffff02060100ba73 9effffff02060100ba730000 9effffff02060100ba730000 - {e=>10198,c=>108,a=>64,b=>2,d=>1} 40000000026c0100d627 40000000026c0100d627 40000000026c0100d6270000 40000000026c0100d6270000 - {e=>10521,c=>124,a=>34,b=>0,d=>3} 22000000007c03001929 22000000007c03001929 22000000007c030019290000 22000000007c030019290000 - {e=>25536,c=>37,a=>88,b=>3,d=>3} 5800000003250300c063 5800000003250300c063 5800000003250300c0630000 5800000003250300c0630000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>22897,c=>65,a=>-113,b=>1,d=>3,f=>2} 8fffffff01410300715902000000 8fffffff01410300715902000000 8fffffff014103007159000002000000 8fffffff014103007159000002000000 - {e=>28655,c=>21,a=>107,b=>1,d=>3,f=>0} 6b00000001150300ef6f00000000 6b00000001150300ef6f00000000 6b00000001150300ef6f000000000000 6b00000001150300ef6f000000000000 - {e=>11486,c=>82,a=>27,b=>0,d=>2,f=>1} 1b00000000520200de2c01000000 1b00000000520200de2c01000000 1b00000000520200de2c000001000000 1b00000000520200de2c000001000000 - {e=>8829,c=>47,a=>-44,b=>2,d=>1,f=>3} d4ffffff022f01007d2203000000 d4ffffff022f01007d2203000000 d4ffffff022f01007d22000003000000 d4ffffff022f01007d22000003000000 - {e=>24395,c=>33,a=>-122,b=>1,d=>0,f=>0} 86ffffff012100004b5f00000000 86ffffff012100004b5f00000000 86ffffff012100004b5f000000000000 86ffffff012100004b5f000000000000 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>21026,c=>66,a=>92,g=>1659281310,b=>0,d=>2,f=>1} 5c000000004202002252010000009e9fe662 5c000000004202002252010000009e9fe662 5c0000000042020022520000010000009e9fe662 5c0000000042020022520000010000009e9fe662 - {e=>12920,c=>104,a=>10,g=>2107984876,b=>2,d=>2,f=>2} 0a00000002680200783202000000ec4ba57d 0a00000002680200783202000000ec4ba57d 0a000000026802007832000002000000ec4ba57d 0a000000026802007832000002000000ec4ba57d - {e=>3821,c=>93,a=>-11,g=>664990743,b=>1,d=>0,f=>0} f5ffffff015d0000ed0e0000000017f4a227 f5ffffff015d0000ed0e0000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 f5ffffff015d0000ed0e00000000000017f4a227 - {e=>5353,c=>99,a=>-47,g=>171749847,b=>0,d=>1,f=>1} d1ffffff00630100e91401000000d7b13c0a d1ffffff00630100e91401000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a d1ffffff00630100e914000001000000d7b13c0a - {e=>3580,c=>89,a=>24,g=>668072177,b=>3,d=>3,f=>0} 1800000003590300fc0d00000000f1f8d127 1800000003590300fc0d00000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 1800000003590300fc0d000000000000f1f8d127 = struct toobig { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>26214,a=>3,d=>3,c=>2,h=>13,b=>0,g=>1018602210,f=>1} 0300000000020300666601000000e2a2b63c0d 0300000000020300666601000000e2a2b63c0d00 03000000000203006666000001000000e2a2b63c0d000000 03000000000203006666000001000000e2a2b63c0d000000 - {e=>1638,a=>90,d=>0,c=>29,h=>15,b=>0,g=>1932291266,f=>2} 5a000000001d0000660602000000c26c2c730f 5a000000001d0000660602000000c26c2c730f00 5a000000001d00006606000002000000c26c2c730f000000 5a000000001d00006606000002000000c26c2c730f000000 - {e=>19392,a=>98,d=>2,c=>117,h=>142,b=>2,g=>1646528382,f=>3} 6200000002750200c04b030000007e0724628e 6200000002750200c04b030000007e0724628e00 6200000002750200c04b0000030000007e0724628e000000 6200000002750200c04b0000030000007e0724628e000000 - {e=>9394,a=>18,d=>2,c=>23,h=>96,b=>0,g=>1695469510,f=>0} 1200000000170200b22400000000c6cf0e6560 1200000000170200b22400000000c6cf0e656000 1200000000170200b224000000000000c6cf0e6560000000 1200000000170200b224000000000000c6cf0e6560000000 - {e=>21676,a=>69,d=>2,c=>106,h=>240,b=>1,g=>2126836617,f=>2} 45000000016a0200ac540200000089f3c47ef0 45000000016a0200ac540200000089f3c47ef000 45000000016a0200ac5400000200000089f3c47ef0000000 45000000016a0200ac5400000200000089f3c47ef0000000 = struct toobig { long a; unsigned char b:2; }; - {a=>-12,b=>2} f4ffffff02 f4ffffff0200 f4ffffff02000000 f4ffffff02000000 - {a=>0,b=>1} 0000000001 000000000100 0000000001000000 0000000001000000 - {a=>60,b=>2} 3c00000002 3c0000000200 3c00000002000000 3c00000002000000 - {a=>61,b=>3} 3d00000003 3d0000000300 3d00000003000000 3d00000003000000 - {a=>122,b=>1} 7a00000001 7a0000000100 7a00000001000000 7a00000001000000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; }; - {c=>127,a=>-21,b=>2} ebffffff027f ebffffff027f ebffffff027f0000 ebffffff027f0000 - {c=>6,a=>-60,b=>0} c4ffffff0006 c4ffffff0006 c4ffffff00060000 c4ffffff00060000 - {c=>118,a=>-112,b=>2} 90ffffff0276 90ffffff0276 90ffffff02760000 90ffffff02760000 - {c=>100,a=>-92,b=>3} a4ffffff0364 a4ffffff0364 a4ffffff03640000 a4ffffff03640000 - {c=>11,a=>123,b=>1} 7b000000010b 7b000000010b 7b000000010b0000 7b000000010b0000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>82,a=>18,b=>3} 120000000352 120000000352 1200000003520000 1200000003520000 - {c=>34,a=>45,b=>2} 2d0000000222 2d0000000222 2d00000002220000 2d00000002220000 - {c=>18,a=>-66,b=>2} beffffff0212 beffffff0212 beffffff02120000 beffffff02120000 - {c=>41,a=>53,b=>1} 350000000129 350000000129 3500000001290000 3500000001290000 - {c=>97,a=>60,b=>0} 3c0000000061 3c0000000061 3c00000000610000 3c00000000610000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>124,a=>18,b=>1,d=>1} 12000000017c0100 12000000017c0100 12000000017c0100 12000000017c0100 - {c=>4,a=>-25,b=>3,d=>0} e7ffffff03040000 e7ffffff03040000 e7ffffff03040000 e7ffffff03040000 - {c=>9,a=>8,b=>0,d=>2} 0800000000090200 0800000000090200 0800000000090200 0800000000090200 - {c=>74,a=>-10,b=>2,d=>3} f6ffffff024a0300 f6ffffff024a0300 f6ffffff024a0300 f6ffffff024a0300 - {c=>20,a=>-100,b=>0,d=>3} 9cffffff00140300 9cffffff00140300 9cffffff00140300 9cffffff00140300 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>8288,c=>27,a=>27,b=>1,d=>0} 1b000000011b00006020 1b000000011b00006020 1b000000011b000060200000 1b000000011b000060200000 - {e=>31476,c=>62,a=>15,b=>2,d=>0} 0f000000023e0000f47a 0f000000023e0000f47a 0f000000023e0000f47a0000 0f000000023e0000f47a0000 - {e=>28645,c=>102,a=>-2,b=>0,d=>3} feffffff00660300e56f feffffff00660300e56f feffffff00660300e56f0000 feffffff00660300e56f0000 - {e=>5175,c=>47,a=>123,b=>3,d=>3} 7b000000032f03003714 7b000000032f03003714 7b000000032f030037140000 7b000000032f030037140000 - {e=>3986,c=>9,a=>92,b=>2,d=>2} 5c00000002090200920f 5c00000002090200920f 5c00000002090200920f0000 5c00000002090200920f0000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>26564,c=>47,a=>75,b=>2,d=>1} 4b000000022f0100c467 4b000000022f0100c467 4b000000022f0100c4670000 4b000000022f0100c4670000 - {e=>13162,c=>83,a=>-7,b=>3,d=>2} f9ffffff035302006a33 f9ffffff035302006a33 f9ffffff035302006a330000 f9ffffff035302006a330000 - {e=>21769,c=>111,a=>-87,b=>3,d=>2} a9ffffff036f02000955 a9ffffff036f02000955 a9ffffff036f020009550000 a9ffffff036f020009550000 - {e=>5436,c=>68,a=>-101,b=>3,d=>0} 9bffffff034400003c15 9bffffff034400003c15 9bffffff034400003c150000 9bffffff034400003c150000 - {e=>13380,c=>90,a=>86,b=>2,d=>0} 56000000025a00004434 56000000025a00004434 56000000025a000044340000 56000000025a000044340000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>23505,c=>0,a=>-30,b=>2,d=>3,f=>3} e2ffffff02000300d15b03000000 e2ffffff02000300d15b03000000 e2ffffff02000300d15b000003000000 e2ffffff02000300d15b000003000000 - {e=>29524,c=>34,a=>72,b=>2,d=>2,f=>0} 4800000002220200547300000000 4800000002220200547300000000 48000000022202005473000000000000 48000000022202005473000000000000 - {e=>8502,c=>60,a=>85,b=>1,d=>1,f=>1} 55000000013c0100362101000000 55000000013c0100362101000000 55000000013c01003621000001000000 55000000013c01003621000001000000 - {e=>3686,c=>42,a=>-13,b=>2,d=>0,f=>1} f3ffffff022a0000660e01000000 f3ffffff022a0000660e01000000 f3ffffff022a0000660e000001000000 f3ffffff022a0000660e000001000000 - {e=>26261,c=>48,a=>-62,b=>1,d=>0,f=>1} c2ffffff01300000956601000000 c2ffffff01300000956601000000 c2ffffff013000009566000001000000 c2ffffff013000009566000001000000 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>25271,c=>5,a=>23,g=>1549434592,b=>0,d=>0,f=>3} 1700000000050000b76203000000e07e5a5c 1700000000050000b76203000000e07e5a5c 1700000000050000b762000003000000e07e5a5c 1700000000050000b762000003000000e07e5a5c - {e=>29769,c=>70,a=>53,g=>485498167,b=>3,d=>3,f=>3} 3500000003460300497403000000371df01c 3500000003460300497403000000371df01c 35000000034603004974000003000000371df01c 35000000034603004974000003000000371df01c - {e=>4324,c=>68,a=>105,g=>554750747,b=>0,d=>0,f=>1} 6900000000440000e410010000001bd31021 6900000000440000e410010000001bd31021 6900000000440000e4100000010000001bd31021 6900000000440000e4100000010000001bd31021 - {e=>17511,c=>94,a=>58,g=>250165519,b=>2,d=>2,f=>3} 3a000000025e02006744030000000f39e90e 3a000000025e02006744030000000f39e90e 3a000000025e020067440000030000000f39e90e 3a000000025e020067440000030000000f39e90e - {e=>14283,c=>79,a=>-97,g=>1714885120,b=>1,d=>2,f=>1} 9fffffff014f0200cb370100000000123766 9fffffff014f0200cb370100000000123766 9fffffff014f0200cb3700000100000000123766 9fffffff014f0200cb3700000100000000123766 = struct toobig { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22593,a=>-105,d=>2,c=>125,h=>86,b=>2,g=>490502662,f=>2} 97ffffff027d0200415802000000067a3c1d56 97ffffff027d0200415802000000067a3c1d5600 97ffffff027d02004158000002000000067a3c1d56000000 97ffffff027d02004158000002000000067a3c1d56000000 - {e=>22467,a=>-25,d=>0,c=>60,h=>208,b=>0,g=>371229021,f=>0} e7ffffff003c0000c357000000005d812016d0 e7ffffff003c0000c357000000005d812016d000 e7ffffff003c0000c3570000000000005d812016d0000000 e7ffffff003c0000c3570000000000005d812016d0000000 - {e=>31600,a=>-7,d=>2,c=>78,h=>234,b=>0,g=>1056003073,f=>2} f9ffffff004e0200707b020000000154f13eea f9ffffff004e0200707b020000000154f13eea00 f9ffffff004e0200707b0000020000000154f13eea000000 f9ffffff004e0200707b0000020000000154f13eea000000 - {e=>12252,a=>38,d=>2,c=>1,h=>15,b=>1,g=>1441179725,f=>2} 2600000001010200dc2f020000004da8e6550f 2600000001010200dc2f020000004da8e6550f00 2600000001010200dc2f0000020000004da8e6550f000000 2600000001010200dc2f0000020000004da8e6550f000000 - {e=>29268,a=>28,d=>0,c=>18,h=>157,b=>1,g=>2064430442,f=>1} 1c000000011200005472010000006ab50c7b9d 1c000000011200005472010000006ab50c7b9d00 1c0000000112000054720000010000006ab50c7b9d000000 1c0000000112000054720000010000006ab50c7b9d000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>2} 02 02 02 02 - {a=>3} 03 03 03 03 - {a=>0} 00 00 00 00 - {a=>3} 03 03 03 03 - {a=>1} 01 01 01 01 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>3,b=>122} 037a 037a 037a 037a - {a=>0,b=>7} 0007 0007 0007 0007 - {a=>3,b=>2} 0302 0302 0302 0302 - {a=>1,b=>102} 0166 0166 0166 0166 - {a=>1,b=>57} 0139 0139 0139 0139 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>3,b=>86} 0356 0356 0356 0356 - {a=>2,b=>116} 0274 0274 0274 0274 - {a=>2,b=>29} 021d 021d 021d 021d - {a=>3,b=>95} 035f 035f 035f 035f - {a=>1,b=>22} 0116 0116 0116 0116 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>0,a=>1,b=>74} 014a0000 014a0000 014a0000 014a0000 - {c=>0,a=>2,b=>114} 02720000 02720000 02720000 02720000 - {c=>2,a=>3,b=>123} 037b0200 037b0200 037b0200 037b0200 - {c=>1,a=>2,b=>78} 024e0100 024e0100 024e0100 024e0100 - {c=>1,a=>2,b=>67} 02430100 02430100 02430100 02430100 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>0,a=>2,b=>89,d=>17148} 02590000fc42 02590000fc42 02590000fc42 02590000fc42 - {c=>3,a=>3,b=>1,d=>7923} 03010300f31e 03010300f31e 03010300f31e 03010300f31e - {c=>3,a=>3,b=>36,d=>24620} 032403002c60 032403002c60 032403002c60 032403002c60 - {c=>1,a=>1,b=>110,d=>27219} 016e0100536a 016e0100536a 016e0100536a 016e0100536a - {c=>1,a=>2,b=>119,d=>25127} 027701002762 027701002762 027701002762 027701002762 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>2,a=>1,b=>55,d=>24370} 01370200325f 01370200325f 01370200325f 01370200325f - {c=>3,a=>1,b=>76,d=>484} 014c0300e401 014c0300e401 014c0300e401 014c0300e401 - {c=>3,a=>0,b=>72,d=>28441} 00480300196f 00480300196f 00480300196f 00480300196f - {c=>0,a=>1,b=>4,d=>20335} 010400006f4f 010400006f4f 010400006f4f 010400006f4f - {c=>1,a=>3,b=>108,d=>25748} 036c01009464 036c01009464 036c01009464 036c01009464 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>2,c=>1,a=>3,b=>25,d=>14129} 03190100313702000000 03190100313702000000 03190100313702000000 03190100313702000000 - {e=>2,c=>1,a=>0,b=>43,d=>29105} 002b0100b17102000000 002b0100b17102000000 002b0100b17102000000 002b0100b17102000000 - {e=>2,c=>0,a=>2,b=>27,d=>17807} 021b00008f4502000000 021b00008f4502000000 021b00008f4502000000 021b00008f4502000000 - {e=>3,c=>0,a=>0,b=>93,d=>809} 005d0000290303000000 005d0000290303000000 005d0000290303000000 005d0000290303000000 - {e=>0,c=>3,a=>1,b=>44,d=>30562} 012c0300627700000000 012c0300627700000000 012c0300627700000000 012c0300627700000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>3,c=>2,a=>2,b=>10,d=>5501,f=>1254374167} 020a02007d1503000000173bc44a 020a02007d1503000000173bc44a 020a02007d1503000000173bc44a 020a02007d1503000000173bc44a - {e=>0,c=>3,a=>3,b=>108,d=>4783,f=>549387562} 036c0300af12000000002afdbe20 036c0300af12000000002afdbe20 036c0300af12000000002afdbe20 036c0300af12000000002afdbe20 - {e=>2,c=>1,a=>1,b=>71,d=>5216,f=>457981324} 014701006014020000008c3d4c1b 014701006014020000008c3d4c1b 014701006014020000008c3d4c1b 014701006014020000008c3d4c1b - {e=>0,c=>1,a=>0,b=>108,d=>3389,f=>260729659} 006c01003d0d000000003b6b8a0f 006c01003d0d000000003b6b8a0f 006c01003d0d000000003b6b8a0f 006c01003d0d000000003b6b8a0f - {e=>2,c=>3,a=>3,b=>78,d=>9795,f=>22588338} 034e0300432602000000b2ab5801 034e0300432602000000b2ab5801 034e0300432602000000b2ab5801 034e0300432602000000b2ab5801 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>0,c=>0,a=>3,g=>96,b=>9,d=>3499,f=>226878349} 03090000ab0d000000008de3850d60 03090000ab0d000000008de3850d60 03090000ab0d000000008de3850d60 03090000ab0d000000008de3850d60 - {e=>2,c=>0,a=>0,g=>93,b=>30,d=>5449,f=>524944825} 001e0000491502000000b9054a1f5d 001e0000491502000000b9054a1f5d 001e0000491502000000b9054a1f5d 001e0000491502000000b9054a1f5d - {e=>3,c=>2,a=>0,g=>121,b=>95,d=>26776,f=>1524019449} 005f0200986803000000f9b0d65a79 005f0200986803000000f9b0d65a79 005f0200986803000000f9b0d65a79 005f0200986803000000f9b0d65a79 - {e=>0,c=>1,a=>1,g=>154,b=>21,d=>23517,f=>1699556351} 01150100dd5b00000000ff2b4d659a 01150100dd5b00000000ff2b4d659a 01150100dd5b00000000ff2b4d659a 01150100dd5b00000000ff2b4d659a - {e=>0,c=>0,a=>1,g=>149,b=>13,d=>27687,f=>223666191} 010d0000276c000000000fe0540d95 010d0000276c000000000fe0540d95 010d0000276c000000000fe0540d95 010d0000276c000000000fe0540d95 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>-93,b=>2} a302 a302 a302 a302 - {a=>-56,b=>0} c800 c800 c800 c800 - {a=>-79,b=>1} b101 b101 b101 b101 - {a=>-126,b=>2} 8202 8202 8202 8202 - {a=>44,b=>0} 2c00 2c00 2c00 2c00 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>88,a=>99,b=>0} 630058 630058 630058 630058 - {c=>14,a=>-42,b=>3} d6030e d6030e d6030e d6030e - {c=>110,a=>-33,b=>2} df026e df026e df026e df026e - {c=>83,a=>37,b=>3} 250353 250353 250353 250353 - {c=>75,a=>2,b=>0} 02004b 02004b 02004b 02004b = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>63,a=>-71,b=>0} b9003f b9003f b9003f b9003f - {c=>61,a=>68,b=>0} 44003d 44003d 44003d 44003d - {c=>111,a=>-7,b=>1} f9016f f9016f f9016f f9016f - {c=>6,a=>-14,b=>3} f20306 f20306 f20306 f20306 - {c=>25,a=>42,b=>0} 2a0019 2a0019 2a0019 2a0019 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>78,a=>-62,b=>3,d=>2} c2034e0200 c2034e0200 c2034e0200 c2034e0200 - {c=>120,a=>110,b=>1,d=>1} 6e01780100 6e01780100 6e01780100 6e01780100 - {c=>125,a=>-39,b=>1,d=>2} d9017d0200 d9017d0200 d9017d0200 d9017d0200 - {c=>49,a=>-83,b=>1,d=>3} ad01310300 ad01310300 ad01310300 ad01310300 - {c=>102,a=>-96,b=>2,d=>3} a002660300 a002660300 a002660300 a002660300 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>11659,c=>16,a=>72,b=>3,d=>2} 48031002008b2d 48031002008b2d 48031002008b2d 48031002008b2d - {e=>3023,c=>30,a=>121,b=>2,d=>1} 79021e0100cf0b 79021e0100cf0b 79021e0100cf0b 79021e0100cf0b - {e=>8049,c=>55,a=>-115,b=>1,d=>2} 8d01370200711f 8d01370200711f 8d01370200711f 8d01370200711f - {e=>11589,c=>80,a=>-12,b=>1,d=>1} f401500100452d f401500100452d f401500100452d f401500100452d - {e=>1954,c=>66,a=>-32,b=>0,d=>0} e000420000a207 e000420000a207 e000420000a207 e000420000a207 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>5026,c=>9,a=>122,b=>2,d=>3} 7a02090300a213 7a02090300a213 7a02090300a213 7a02090300a213 - {e=>31797,c=>98,a=>-83,b=>0,d=>2} ad00620200357c ad00620200357c ad00620200357c ad00620200357c - {e=>10931,c=>103,a=>-107,b=>2,d=>2} 9502670200b32a 9502670200b32a 9502670200b32a 9502670200b32a - {e=>6859,c=>82,a=>6,b=>1,d=>3} 0601520300cb1a 0601520300cb1a 0601520300cb1a 0601520300cb1a - {e=>27967,c=>53,a=>90,b=>1,d=>2} 5a013502003f6d 5a013502003f6d 5a013502003f6d 5a013502003f6d = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>32078,c=>33,a=>90,b=>0,d=>1,f=>1} 5a002101004e7d01000000 5a002101004e7d01000000 5a002101004e7d01000000 5a002101004e7d01000000 - {e=>30999,c=>21,a=>-47,b=>1,d=>1,f=>2} d101150100177902000000 d101150100177902000000 d101150100177902000000 d101150100177902000000 - {e=>5469,c=>52,a=>117,b=>0,d=>2,f=>0} 75003402005d1500000000 75003402005d1500000000 75003402005d1500000000 75003402005d1500000000 - {e=>30192,c=>87,a=>-54,b=>3,d=>3,f=>1} ca03570300f07501000000 ca03570300f07501000000 ca03570300f07501000000 ca03570300f07501000000 - {e=>5881,c=>2,a=>23,b=>1,d=>3,f=>0} 1701020300f91600000000 1701020300f91600000000 1701020300f91600000000 1701020300f91600000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16281,c=>25,a=>111,g=>1820714982,b=>1,d=>0,f=>0} 6f01190000993f00000000e6e7856c 6f01190000993f00000000e6e7856c 6f01190000993f00000000e6e7856c 6f01190000993f00000000e6e7856c - {e=>6891,c=>53,a=>-40,g=>97596344,b=>2,d=>2,f=>0} d802350200eb1a00000000b833d105 d802350200eb1a00000000b833d105 d802350200eb1a00000000b833d105 d802350200eb1a00000000b833d105 - {e=>3360,c=>31,a=>63,g=>761179706,b=>1,d=>0,f=>0} 3f011f0000200d000000003aae5e2d 3f011f0000200d000000003aae5e2d 3f011f0000200d000000003aae5e2d 3f011f0000200d000000003aae5e2d - {e=>16476,c=>63,a=>-85,g=>512020589,b=>3,d=>0,f=>3} ab033f00005c40030000006dd0841e ab033f00005c40030000006dd0841e ab033f00005c40030000006dd0841e ab033f00005c40030000006dd0841e - {e=>15061,c=>102,a=>-67,g=>473075273,b=>1,d=>1,f=>0} bd01660100d53a00000000498e321c bd01660100d53a00000000498e321c bd01660100d53a00000000498e321c bd01660100d53a00000000498e321c = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22977,a=>-2,d=>2,c=>83,h=>109,b=>1,g=>868418545,f=>3} fe01530200c15903000000f103c3336d fe01530200c15903000000f103c3336d fe01530200c15903000000f103c3336d fe01530200c15903000000f103c3336d - {e=>12366,a=>-40,d=>0,c=>7,h=>103,b=>1,g=>1323876095,f=>1} d8010700004e3001000000ffbee84e67 d8010700004e3001000000ffbee84e67 d8010700004e3001000000ffbee84e67 d8010700004e3001000000ffbee84e67 - {e=>28796,a=>-113,d=>1,c=>90,h=>201,b=>3,g=>1452786621,f=>3} 8f035a01007c7003000000bdc39756c9 8f035a01007c7003000000bdc39756c9 8f035a01007c7003000000bdc39756c9 8f035a01007c7003000000bdc39756c9 - {e=>11159,a=>98,d=>2,c=>57,h=>40,b=>0,g=>1298924782,f=>1} 6200390200972b01000000ee046c4d28 6200390200972b01000000ee046c4d28 6200390200972b01000000ee046c4d28 6200390200972b01000000ee046c4d28 - {e=>2986,a=>35,d=>3,c=>121,h=>161,b=>3,g=>287355737,f=>1} 2303790300aa0b0100000059b32011a1 2303790300aa0b0100000059b32011a1 2303790300aa0b0100000059b32011a1 2303790300aa0b0100000059b32011a1 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>36,b=>2} 240002 240002 240002 240002 - {a=>-42,b=>0} d6ff00 d6ff00 d6ff00 d6ff00 - {a=>52,b=>2} 340002 340002 340002 340002 - {a=>52,b=>2} 340002 340002 340002 340002 - {a=>-48,b=>1} d0ff01 d0ff01 d0ff01 d0ff01 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>9,a=>-31,b=>1} e1ff0109 e1ff0109 e1ff0109 e1ff0109 - {c=>116,a=>-67,b=>0} bdff0074 bdff0074 bdff0074 bdff0074 - {c=>96,a=>-109,b=>3} 93ff0360 93ff0360 93ff0360 93ff0360 - {c=>112,a=>110,b=>1} 6e000170 6e000170 6e000170 6e000170 - {c=>85,a=>-99,b=>1} 9dff0155 9dff0155 9dff0155 9dff0155 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>59,a=>-96,b=>3} a0ff033b a0ff033b a0ff033b a0ff033b - {c=>67,a=>-103,b=>2} 99ff0243 99ff0243 99ff0243 99ff0243 - {c=>92,a=>-115,b=>1} 8dff015c 8dff015c 8dff015c 8dff015c - {c=>64,a=>19,b=>0} 13000040 13000040 13000040 13000040 - {c=>112,a=>95,b=>0} 5f000070 5f000070 5f000070 5f000070 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>78,a=>-30,b=>0,d=>1} e2ff004e0100 e2ff004e0100 e2ff004e0100 e2ff004e0100 - {c=>18,a=>106,b=>3,d=>1} 6a0003120100 6a0003120100 6a0003120100 6a0003120100 - {c=>55,a=>-74,b=>1,d=>2} b6ff01370200 b6ff01370200 b6ff01370200 b6ff01370200 - {c=>73,a=>20,b=>2,d=>0} 140002490000 140002490000 140002490000 140002490000 - {c=>17,a=>-82,b=>2,d=>0} aeff02110000 aeff02110000 aeff02110000 aeff02110000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>23152,c=>68,a=>35,b=>3,d=>1} 230003440100705a 230003440100705a 230003440100705a 230003440100705a - {e=>11271,c=>14,a=>65,b=>1,d=>1} 4100010e0100072c 4100010e0100072c 4100010e0100072c 4100010e0100072c - {e=>14141,c=>13,a=>16,b=>1,d=>2} 1000010d02003d37 1000010d02003d37 1000010d02003d37 1000010d02003d37 - {e=>13679,c=>79,a=>119,b=>3,d=>0} 7700034f00006f35 7700034f00006f35 7700034f00006f35 7700034f00006f35 - {e=>32421,c=>57,a=>49,b=>1,d=>0} 310001390000a57e 310001390000a57e 310001390000a57e 310001390000a57e = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>13261,c=>104,a=>-64,b=>3,d=>2} c0ff03680200cd33 c0ff03680200cd33 c0ff03680200cd33 c0ff03680200cd33 - {e=>14081,c=>16,a=>118,b=>2,d=>0} 7600021000000137 7600021000000137 7600021000000137 7600021000000137 - {e=>18138,c=>125,a=>-105,b=>3,d=>3} 97ff037d0300da46 97ff037d0300da46 97ff037d0300da46 97ff037d0300da46 - {e=>10748,c=>38,a=>-13,b=>0,d=>0} f3ff00260000fc29 f3ff00260000fc29 f3ff00260000fc29 f3ff00260000fc29 - {e=>2078,c=>92,a=>59,b=>0,d=>1} 3b00005c01001e08 3b00005c01001e08 3b00005c01001e08 3b00005c01001e08 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>7575,c=>96,a=>14,b=>1,d=>2,f=>0} 0e0001600200971d00000000 0e0001600200971d00000000 0e0001600200971d00000000 0e0001600200971d00000000 - {e=>14550,c=>56,a=>-116,b=>1,d=>0,f=>0} 8cff01380000d63800000000 8cff01380000d63800000000 8cff01380000d63800000000 8cff01380000d63800000000 - {e=>31077,c=>102,a=>118,b=>0,d=>3,f=>0} 760000660300657900000000 760000660300657900000000 760000660300657900000000 760000660300657900000000 - {e=>14802,c=>1,a=>-81,b=>2,d=>0,f=>3} afff02010000d23903000000 afff02010000d23903000000 afff02010000d23903000000 afff02010000d23903000000 - {e=>14877,c=>55,a=>26,b=>2,d=>2,f=>2} 1a00023702001d3a02000000 1a00023702001d3a02000000 1a00023702001d3a02000000 1a00023702001d3a02000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7844,c=>54,a=>27,g=>751275513,b=>0,d=>2,f=>1} 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c 1b0000360200a41e01000000f98dc72c - {e=>11268,c=>97,a=>-121,g=>109432832,b=>2,d=>3,f=>3} 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 87ff02610300042c0300000000d08506 - {e=>23652,c=>90,a=>107,g=>836655276,b=>1,d=>3,f=>1} 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 6b00015a0300645c01000000ac58de31 - {e=>29274,c=>92,a=>101,g=>1563176679,b=>1,d=>1,f=>1} 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d 6500015c01005a7201000000e72e2c5d - {e=>24723,c=>105,a=>-77,g=>980506780,b=>0,d=>3,f=>2} b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a b3ff006903009360020000009c58713a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>17518,a=>-39,d=>3,c=>91,h=>162,b=>3,g=>1543066247,f=>1} d9ff035b03006e44010000008752f95ba2 d9ff035b03006e44010000008752f95ba2 d9ff035b03006e44010000008752f95ba2 d9ff035b03006e44010000008752f95ba2 - {e=>8378,a=>71,d=>1,c=>66,h=>137,b=>0,g=>834780984,f=>3} 470000420100ba200300000038bfc13189 470000420100ba200300000038bfc13189 470000420100ba200300000038bfc13189 470000420100ba200300000038bfc13189 - {e=>28729,a=>-103,d=>3,c=>19,h=>150,b=>3,g=>458128972,f=>2} 99ff031303003970020000004c7e4e1b96 99ff031303003970020000004c7e4e1b96 99ff031303003970020000004c7e4e1b96 99ff031303003970020000004c7e4e1b96 - {e=>2388,a=>86,d=>2,c=>85,h=>7,b=>2,g=>1947211790,f=>3} 5600025502005409030000000e18107407 5600025502005409030000000e18107407 5600025502005409030000000e18107407 5600025502005409030000000e18107407 - {e=>25964,a=>-72,d=>2,c=>127,h=>252,b=>3,g=>338601299,f=>3} b8ff037f02006c650300000053a52e14fc b8ff037f02006c650300000053a52e14fc b8ff037f02006c650300000053a52e14fc b8ff037f02006c650300000053a52e14fc = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>23,b=>3} 1700000003 1700000003 1700000003 1700000003 - {a=>93,b=>0} 5d00000000 5d00000000 5d00000000 5d00000000 - {a=>82,b=>3} 5200000003 5200000003 5200000003 5200000003 - {a=>-120,b=>3} 88ffffff03 88ffffff03 88ffffff03 88ffffff03 - {a=>-6,b=>2} faffffff02 faffffff02 faffffff02 faffffff02 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>118,a=>39,b=>1} 270000000176 270000000176 270000000176 270000000176 - {c=>36,a=>70,b=>1} 460000000124 460000000124 460000000124 460000000124 - {c=>28,a=>12,b=>1} 0c000000011c 0c000000011c 0c000000011c 0c000000011c - {c=>0,a=>-92,b=>0} a4ffffff0000 a4ffffff0000 a4ffffff0000 a4ffffff0000 - {c=>54,a=>84,b=>0} 540000000036 540000000036 540000000036 540000000036 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>29,a=>0,b=>1} 00000000011d 00000000011d 00000000011d 00000000011d - {c=>42,a=>-2,b=>3} feffffff032a feffffff032a feffffff032a feffffff032a - {c=>79,a=>100,b=>2} 64000000024f 64000000024f 64000000024f 64000000024f - {c=>46,a=>-76,b=>2} b4ffffff022e b4ffffff022e b4ffffff022e b4ffffff022e - {c=>57,a=>13,b=>3} 0d0000000339 0d0000000339 0d0000000339 0d0000000339 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>42,a=>54,b=>1,d=>3} 36000000012a0300 36000000012a0300 36000000012a0300 36000000012a0300 - {c=>23,a=>120,b=>3,d=>1} 7800000003170100 7800000003170100 7800000003170100 7800000003170100 - {c=>65,a=>67,b=>3,d=>3} 4300000003410300 4300000003410300 4300000003410300 4300000003410300 - {c=>36,a=>-14,b=>0,d=>2} f2ffffff00240200 f2ffffff00240200 f2ffffff00240200 f2ffffff00240200 - {c=>6,a=>61,b=>2,d=>3} 3d00000002060300 3d00000002060300 3d00000002060300 3d00000002060300 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>6171,c=>80,a=>-30,b=>1,d=>0} e2ffffff015000001b18 e2ffffff015000001b18 e2ffffff015000001b18 e2ffffff015000001b18 - {e=>13986,c=>17,a=>16,b=>2,d=>1} 1000000002110100a236 1000000002110100a236 1000000002110100a236 1000000002110100a236 - {e=>10321,c=>77,a=>-41,b=>2,d=>1} d7ffffff024d01005128 d7ffffff024d01005128 d7ffffff024d01005128 d7ffffff024d01005128 - {e=>4855,c=>52,a=>-59,b=>2,d=>2} c5ffffff02340200f712 c5ffffff02340200f712 c5ffffff02340200f712 c5ffffff02340200f712 - {e=>4433,c=>3,a=>-57,b=>2,d=>2} c7ffffff020302005111 c7ffffff020302005111 c7ffffff020302005111 c7ffffff020302005111 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>924,c=>33,a=>-21,b=>0,d=>1} ebffffff002101009c03 ebffffff002101009c03 ebffffff002101009c03 ebffffff002101009c03 - {e=>6351,c=>54,a=>-34,b=>1,d=>0} deffffff01360000cf18 deffffff01360000cf18 deffffff01360000cf18 deffffff01360000cf18 - {e=>1879,c=>52,a=>35,b=>1,d=>1} 23000000013401005707 23000000013401005707 23000000013401005707 23000000013401005707 - {e=>8238,c=>76,a=>32,b=>2,d=>1} 20000000024c01002e20 20000000024c01002e20 20000000024c01002e20 20000000024c01002e20 - {e=>31420,c=>54,a=>0,b=>1,d=>3} 0000000001360300bc7a 0000000001360300bc7a 0000000001360300bc7a 0000000001360300bc7a = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>26010,c=>9,a=>2,b=>3,d=>0,f=>0} 02000000030900009a6500000000 02000000030900009a6500000000 02000000030900009a6500000000 02000000030900009a6500000000 - {e=>2064,c=>80,a=>-119,b=>3,d=>3,f=>3} 89ffffff03500300100803000000 89ffffff03500300100803000000 89ffffff03500300100803000000 89ffffff03500300100803000000 - {e=>31255,c=>2,a=>-82,b=>0,d=>0,f=>2} aeffffff00020000177a02000000 aeffffff00020000177a02000000 aeffffff00020000177a02000000 aeffffff00020000177a02000000 - {e=>3569,c=>113,a=>86,b=>2,d=>2,f=>1} 5600000002710200f10d01000000 5600000002710200f10d01000000 5600000002710200f10d01000000 5600000002710200f10d01000000 - {e=>17551,c=>23,a=>-128,b=>1,d=>3,f=>3} 80ffffff011703008f4403000000 80ffffff011703008f4403000000 80ffffff011703008f4403000000 80ffffff011703008f4403000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>22897,c=>67,a=>93,g=>236819416,b=>2,d=>0,f=>0} 5d00000002430000715900000000d8931d0e 5d00000002430000715900000000d8931d0e 5d00000002430000715900000000d8931d0e 5d00000002430000715900000000d8931d0e - {e=>31111,c=>74,a=>119,g=>1459711425,b=>2,d=>1,f=>3} 77000000024a0100877903000000c16d0157 77000000024a0100877903000000c16d0157 77000000024a0100877903000000c16d0157 77000000024a0100877903000000c16d0157 - {e=>13989,c=>102,a=>70,g=>1058309672,b=>3,d=>0,f=>2} 4600000003660000a536020000002886143f 4600000003660000a536020000002886143f 4600000003660000a536020000002886143f 4600000003660000a536020000002886143f - {e=>26791,c=>57,a=>7,g=>1365065929,b=>1,d=>2,f=>1} 0700000001390200a76801000000c9405d51 0700000001390200a76801000000c9405d51 0700000001390200a76801000000c9405d51 0700000001390200a76801000000c9405d51 - {e=>6858,c=>70,a=>-7,g=>1686921269,b=>3,d=>3,f=>1} f9ffffff03460300ca1a0100000035608c64 f9ffffff03460300ca1a0100000035608c64 f9ffffff03460300ca1a0100000035608c64 f9ffffff03460300ca1a0100000035608c64 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>32326,a=>82,d=>2,c=>71,h=>163,b=>1,g=>1658102310,f=>1} 5200000001470200467e0100000026a2d462a3 5200000001470200467e0100000026a2d462a3 5200000001470200467e0100000026a2d462a3 5200000001470200467e0100000026a2d462a3 - {e=>6558,a=>54,d=>0,c=>114,h=>224,b=>0,g=>240808537,f=>1} 36000000007200009e190100000059725a0ee0 36000000007200009e190100000059725a0ee0 36000000007200009e190100000059725a0ee0 36000000007200009e190100000059725a0ee0 - {e=>7128,a=>-105,d=>3,c=>78,h=>139,b=>2,g=>1841705631,f=>2} 97ffffff024e0300d81b020000009f32c66d8b 97ffffff024e0300d81b020000009f32c66d8b 97ffffff024e0300d81b020000009f32c66d8b 97ffffff024e0300d81b020000009f32c66d8b - {e=>30661,a=>87,d=>2,c=>117,h=>158,b=>1,g=>176849329,f=>1} 5700000001750200c57701000000b1818a0a9e 5700000001750200c57701000000b1818a0a9e 5700000001750200c57701000000b1818a0a9e 5700000001750200c57701000000b1818a0a9e - {e=>20458,a=>-35,d=>3,c=>6,h=>255,b=>3,g=>1305982333,f=>0} ddffffff03060300ea4f000000007db5d74dff ddffffff03060300ea4f000000007db5d74dff ddffffff03060300ea4f000000007db5d74dff ddffffff03060300ea4f000000007db5d74dff = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>-94,b=>3} a2ffffff03 a2ffffff03 a2ffffff03 a2ffffff03 - {a=>-70,b=>3} baffffff03 baffffff03 baffffff03 baffffff03 - {a=>-56,b=>0} c8ffffff00 c8ffffff00 c8ffffff00 c8ffffff00 - {a=>42,b=>1} 2a00000001 2a00000001 2a00000001 2a00000001 - {a=>80,b=>0} 5000000000 5000000000 5000000000 5000000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>70,a=>33,b=>2} 210000000246 210000000246 210000000246 210000000246 - {c=>99,a=>28,b=>2} 1c0000000263 1c0000000263 1c0000000263 1c0000000263 - {c=>31,a=>-81,b=>3} afffffff031f afffffff031f afffffff031f afffffff031f - {c=>60,a=>50,b=>1} 32000000013c 32000000013c 32000000013c 32000000013c - {c=>63,a=>-105,b=>3} 97ffffff033f 97ffffff033f 97ffffff033f 97ffffff033f = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>48,a=>-2,b=>1} feffffff0130 feffffff0130 feffffff0130 feffffff0130 - {c=>12,a=>35,b=>1} 23000000010c 23000000010c 23000000010c 23000000010c - {c=>66,a=>83,b=>0} 530000000042 530000000042 530000000042 530000000042 - {c=>88,a=>9,b=>0} 090000000058 090000000058 090000000058 090000000058 - {c=>96,a=>41,b=>1} 290000000160 290000000160 290000000160 290000000160 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>116,a=>-52,b=>3,d=>2} ccffffff03740200 ccffffff03740200 ccffffff03740200 ccffffff03740200 - {c=>2,a=>-30,b=>3,d=>2} e2ffffff03020200 e2ffffff03020200 e2ffffff03020200 e2ffffff03020200 - {c=>22,a=>31,b=>3,d=>2} 1f00000003160200 1f00000003160200 1f00000003160200 1f00000003160200 - {c=>103,a=>99,b=>1,d=>1} 6300000001670100 6300000001670100 6300000001670100 6300000001670100 - {c=>110,a=>-15,b=>0,d=>3} f1ffffff006e0300 f1ffffff006e0300 f1ffffff006e0300 f1ffffff006e0300 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>13673,c=>84,a=>122,b=>1,d=>3} 7a000000015403006935 7a000000015403006935 7a000000015403006935 7a000000015403006935 - {e=>31547,c=>111,a=>-80,b=>1,d=>0} b0ffffff016f00003b7b b0ffffff016f00003b7b b0ffffff016f00003b7b b0ffffff016f00003b7b - {e=>19845,c=>63,a=>77,b=>1,d=>3} 4d000000013f0300854d 4d000000013f0300854d 4d000000013f0300854d 4d000000013f0300854d - {e=>6913,c=>104,a=>127,b=>2,d=>1} 7f00000002680100011b 7f00000002680100011b 7f00000002680100011b 7f00000002680100011b - {e=>16426,c=>0,a=>57,b=>1,d=>0} 39000000010000002a40 39000000010000002a40 39000000010000002a40 39000000010000002a40 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>30485,c=>17,a=>-61,b=>1,d=>2} c3ffffff011102001577 c3ffffff011102001577 c3ffffff011102001577 c3ffffff011102001577 - {e=>4491,c=>69,a=>-114,b=>1,d=>3} 8effffff014503008b11 8effffff014503008b11 8effffff014503008b11 8effffff014503008b11 - {e=>1064,c=>91,a=>-67,b=>0,d=>0} bdffffff005b00002804 bdffffff005b00002804 bdffffff005b00002804 bdffffff005b00002804 - {e=>26263,c=>40,a=>2,b=>2,d=>1} 02000000022801009766 02000000022801009766 02000000022801009766 02000000022801009766 - {e=>1533,c=>107,a=>-62,b=>3,d=>3} c2ffffff036b0300fd05 c2ffffff036b0300fd05 c2ffffff036b0300fd05 c2ffffff036b0300fd05 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>6622,c=>119,a=>103,b=>2,d=>1,f=>3} 6700000002770100de1903000000 6700000002770100de1903000000 6700000002770100de1903000000 6700000002770100de1903000000 - {e=>7645,c=>92,a=>55,b=>0,d=>1,f=>3} 37000000005c0100dd1d03000000 37000000005c0100dd1d03000000 37000000005c0100dd1d03000000 37000000005c0100dd1d03000000 - {e=>23069,c=>56,a=>60,b=>3,d=>0,f=>2} 3c000000033800001d5a02000000 3c000000033800001d5a02000000 3c000000033800001d5a02000000 3c000000033800001d5a02000000 - {e=>27949,c=>1,a=>-7,b=>2,d=>3,f=>3} f9ffffff020103002d6d03000000 f9ffffff020103002d6d03000000 f9ffffff020103002d6d03000000 f9ffffff020103002d6d03000000 - {e=>11648,c=>90,a=>72,b=>2,d=>3,f=>1} 48000000025a0300802d01000000 48000000025a0300802d01000000 48000000025a0300802d01000000 48000000025a0300802d01000000 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>20058,c=>21,a=>-54,g=>527765798,b=>2,d=>1,f=>2} caffffff021501005a4e020000002611751f caffffff021501005a4e020000002611751f caffffff021501005a4e020000002611751f caffffff021501005a4e020000002611751f - {e=>31782,c=>68,a=>19,g=>946001649,b=>3,d=>0,f=>3} 1300000003440000267c03000000f1d66238 1300000003440000267c03000000f1d66238 1300000003440000267c03000000f1d66238 1300000003440000267c03000000f1d66238 - {e=>7380,c=>37,a=>-52,g=>464958575,b=>2,d=>3,f=>1} ccffffff02250300d41c010000006fb4b61b ccffffff02250300d41c010000006fb4b61b ccffffff02250300d41c010000006fb4b61b ccffffff02250300d41c010000006fb4b61b - {e=>21112,c=>42,a=>42,g=>906361925,b=>1,d=>0,f=>2} 2a000000012a000078520200000045fc0536 2a000000012a000078520200000045fc0536 2a000000012a000078520200000045fc0536 2a000000012a000078520200000045fc0536 - {e=>30855,c=>1,a=>53,g=>1190588411,b=>0,d=>0,f=>1} 3500000000010000877801000000fbeff646 3500000000010000877801000000fbeff646 3500000000010000877801000000fbeff646 3500000000010000877801000000fbeff646 = #if defined PACK_PAREN #pragma pack( 1 ) #elif defined PACK_NO_PAREN #pragma pack 1 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>12949,a=>112,d=>2,c=>46,h=>27,b=>1,g=>348067209,f=>0} 70000000012e02009532000000008915bf141b 70000000012e02009532000000008915bf141b 70000000012e02009532000000008915bf141b 70000000012e02009532000000008915bf141b - {e=>12614,a=>-75,d=>0,c=>88,h=>124,b=>2,g=>2115801870,f=>3} b5ffffff025800004631030000000e931c7e7c b5ffffff025800004631030000000e931c7e7c b5ffffff025800004631030000000e931c7e7c b5ffffff025800004631030000000e931c7e7c - {e=>22026,a=>-26,d=>1,c=>44,h=>122,b=>2,g=>1176974089,f=>1} e6ffffff022c01000a5601000000093327467a e6ffffff022c01000a5601000000093327467a e6ffffff022c01000a5601000000093327467a e6ffffff022c01000a5601000000093327467a - {e=>23544,a=>64,d=>3,c=>24,h=>65,b=>3,g=>598810224,f=>3} 4000000003180300f85b03000000701eb12341 4000000003180300f85b03000000701eb12341 4000000003180300f85b03000000701eb12341 4000000003180300f85b03000000701eb12341 - {e=>30624,a=>65,d=>0,c=>53,h=>114,b=>1,g=>378284213,f=>2} 4100000001350000a07702000000b5288c1672 4100000001350000a07702000000b5288c1672 4100000001350000a07702000000b5288c1672 4100000001350000a07702000000b5288c1672 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>0} 00 00 00 00 - {a=>3} 03 03 03 03 - {a=>2} 02 02 02 02 - {a=>1} 01 01 01 01 - {a=>3} 03 03 03 03 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>1,b=>60} 013c 013c 013c 013c - {a=>3,b=>93} 035d 035d 035d 035d - {a=>3,b=>13} 030d 030d 030d 030d - {a=>0,b=>66} 0042 0042 0042 0042 - {a=>0,b=>56} 0038 0038 0038 0038 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>2,b=>26} 021a 021a 021a 021a - {a=>1,b=>51} 0133 0133 0133 0133 - {a=>0,b=>90} 005a 005a 005a 005a - {a=>0,b=>63} 003f 003f 003f 003f - {a=>3,b=>46} 032e 032e 032e 032e = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>0,a=>3,b=>10} 030a0000 030a0000 030a0000 030a0000 - {c=>2,a=>1,b=>22} 01160200 01160200 01160200 01160200 - {c=>2,a=>3,b=>21} 03150200 03150200 03150200 03150200 - {c=>3,a=>1,b=>40} 01280300 01280300 01280300 01280300 - {c=>3,a=>2,b=>35} 02230300 02230300 02230300 02230300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>1,a=>3,b=>106,d=>4863} 036a0100ff12 036a0100ff12 036a0100ff12 036a0100ff12 - {c=>2,a=>3,b=>103,d=>15834} 03670200da3d 03670200da3d 03670200da3d 03670200da3d - {c=>2,a=>0,b=>63,d=>15070} 003f0200de3a 003f0200de3a 003f0200de3a 003f0200de3a - {c=>2,a=>3,b=>122,d=>25867} 037a02000b65 037a02000b65 037a02000b65 037a02000b65 - {c=>3,a=>3,b=>3,d=>19726} 030303000e4d 030303000e4d 030303000e4d 030303000e4d = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>3,a=>2,b=>61,d=>16632} 023d0300f840 023d0300f840 023d0300f840 023d0300f840 - {c=>3,a=>2,b=>27,d=>3303} 021b0300e70c 021b0300e70c 021b0300e70c 021b0300e70c - {c=>3,a=>0,b=>104,d=>32422} 00680300a67e 00680300a67e 00680300a67e 00680300a67e - {c=>2,a=>2,b=>11,d=>4097} 020b02000110 020b02000110 020b02000110 020b02000110 - {c=>0,a=>2,b=>22,d=>2075} 021600001b08 021600001b08 021600001b08 021600001b08 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>3,c=>2,a=>3,b=>70,d=>22538} 034602000a5803000000 034602000a5803000000 034602000a5803000000 034602000a5803000000 - {e=>1,c=>0,a=>2,b=>126,d=>20675} 027e0000c35001000000 027e0000c35001000000 027e0000c35001000000 027e0000c35001000000 - {e=>2,c=>0,a=>1,b=>97,d=>22568} 01610000285802000000 01610000285802000000 01610000285802000000 01610000285802000000 - {e=>2,c=>0,a=>3,b=>84,d=>1178} 035400009a0402000000 035400009a0402000000 035400009a0402000000 035400009a0402000000 - {e=>0,c=>3,a=>0,b=>125,d=>500} 007d0300f40100000000 007d0300f40100000000 007d0300f40100000000 007d0300f40100000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>3,c=>3,a=>1,b=>44,d=>24620,f=>1808311042} 012c03002c600300000002a3c86b 012c03002c600300000002a3c86b 012c03002c600300000002a3c86b 012c03002c600300000002a3c86b - {e=>1,c=>2,a=>1,b=>25,d=>25227,f=>801958710} 011902008b620100000036ebcc2f 011902008b620100000036ebcc2f 011902008b620100000036ebcc2f 011902008b620100000036ebcc2f - {e=>1,c=>3,a=>3,b=>101,d=>18705,f=>1451666857} 03650300114901000000a9ad8656 03650300114901000000a9ad8656 03650300114901000000a9ad8656 03650300114901000000a9ad8656 - {e=>0,c=>1,a=>3,b=>11,d=>27785,f=>1658211394} 030b0100896c00000000424cd662 030b0100896c00000000424cd662 030b0100896c00000000424cd662 030b0100896c00000000424cd662 - {e=>2,c=>3,a=>2,b=>99,d=>30270,f=>922018987} 026303003e7602000000abe4f436 026303003e7602000000abe4f436 026303003e7602000000abe4f436 026303003e7602000000abe4f436 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>2,c=>1,a=>3,g=>159,b=>94,d=>10039,f=>410307155} 035e010037270200000053ca74189f00 035e010037270200000053ca74189f00 035e010037270200000053ca74189f00 035e010037270200000053ca74189f00 - {e=>2,c=>1,a=>2,g=>50,b=>106,d=>11247,f=>668484590} 026a0100ef2b02000000ee43d8273200 026a0100ef2b02000000ee43d8273200 026a0100ef2b02000000ee43d8273200 026a0100ef2b02000000ee43d8273200 - {e=>0,c=>0,a=>3,g=>181,b=>49,d=>12908,f=>38446332} 033100006c3200000000fca44a02b500 033100006c3200000000fca44a02b500 033100006c3200000000fca44a02b500 033100006c3200000000fca44a02b500 - {e=>0,c=>2,a=>0,g=>106,b=>119,d=>27698,f=>1629435493} 00770200326c0000000065361f616a00 00770200326c0000000065361f616a00 00770200326c0000000065361f616a00 00770200326c0000000065361f616a00 - {e=>3,c=>2,a=>3,g=>36,b=>28,d=>17585,f=>1462750237} 031c0200b144030000001dcc2f572400 031c0200b144030000001dcc2f572400 031c0200b144030000001dcc2f572400 031c0200b144030000001dcc2f572400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>97,b=>0} 6100 6100 6100 6100 - {a=>-113,b=>1} 8f01 8f01 8f01 8f01 - {a=>97,b=>1} 6101 6101 6101 6101 - {a=>43,b=>0} 2b00 2b00 2b00 2b00 - {a=>8,b=>2} 0802 0802 0802 0802 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>121,a=>95,b=>1} 5f0179 5f0179 5f0179 5f0179 - {c=>47,a=>-39,b=>1} d9012f d9012f d9012f d9012f - {c=>126,a=>-116,b=>3} 8c037e 8c037e 8c037e 8c037e - {c=>60,a=>-8,b=>3} f8033c f8033c f8033c f8033c - {c=>50,a=>-3,b=>3} fd0332 fd0332 fd0332 fd0332 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>91,a=>-79,b=>2} b1025b00 b1025b00 b1025b00 b1025b00 - {c=>51,a=>-12,b=>1} f4013300 f4013300 f4013300 f4013300 - {c=>113,a=>104,b=>2} 68027100 68027100 68027100 68027100 - {c=>40,a=>105,b=>3} 69032800 69032800 69032800 69032800 - {c=>3,a=>-77,b=>3} b3030300 b3030300 b3030300 b3030300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>80,a=>-57,b=>1,d=>2} c70150000200 c70150000200 c70150000200 c70150000200 - {c=>73,a=>13,b=>2,d=>0} 0d0249000000 0d0249000000 0d0249000000 0d0249000000 - {c=>36,a=>-29,b=>0,d=>0} e30024000000 e30024000000 e30024000000 e30024000000 - {c=>123,a=>-35,b=>1,d=>3} dd017b000300 dd017b000300 dd017b000300 dd017b000300 - {c=>124,a=>10,b=>3,d=>0} 0a037c000000 0a037c000000 0a037c000000 0a037c000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>28834,c=>110,a=>-15,b=>3,d=>3} f1036e000300a270 f1036e000300a270 f1036e000300a270 f1036e000300a270 - {e=>1691,c=>38,a=>110,b=>1,d=>3} 6e01260003009b06 6e01260003009b06 6e01260003009b06 6e01260003009b06 - {e=>28902,c=>77,a=>121,b=>0,d=>0} 79004d000000e670 79004d000000e670 79004d000000e670 79004d000000e670 - {e=>5288,c=>45,a=>70,b=>1,d=>3} 46012d000300a814 46012d000300a814 46012d000300a814 46012d000300a814 - {e=>5983,c=>60,a=>35,b=>2,d=>1} 23023c0001005f17 23023c0001005f17 23023c0001005f17 23023c0001005f17 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>22747,c=>99,a=>17,b=>0,d=>3} 110063000300db58 110063000300db58 110063000300db58 110063000300db58 - {e=>8890,c=>116,a=>111,b=>3,d=>0} 6f0374000000ba22 6f0374000000ba22 6f0374000000ba22 6f0374000000ba22 - {e=>26859,c=>36,a=>-47,b=>3,d=>0} d10324000000eb68 d10324000000eb68 d10324000000eb68 d10324000000eb68 - {e=>4561,c=>1,a=>-82,b=>1,d=>2} ae0101000200d111 ae0101000200d111 ae0101000200d111 ae0101000200d111 - {e=>862,c=>125,a=>22,b=>1,d=>3} 16017d0003005e03 16017d0003005e03 16017d0003005e03 16017d0003005e03 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>7083,c=>105,a=>101,b=>1,d=>1,f=>1} 650169000100ab1b01000000 650169000100ab1b01000000 650169000100ab1b01000000 650169000100ab1b01000000 - {e=>26777,c=>7,a=>85,b=>2,d=>2,f=>0} 550207000200996800000000 550207000200996800000000 550207000200996800000000 550207000200996800000000 - {e=>2370,c=>62,a=>-56,b=>3,d=>0,f=>0} c8033e000000420900000000 c8033e000000420900000000 c8033e000000420900000000 c8033e000000420900000000 - {e=>17701,c=>23,a=>112,b=>0,d=>2,f=>0} 700017000200254500000000 700017000200254500000000 700017000200254500000000 700017000200254500000000 - {e=>7327,c=>107,a=>105,b=>0,d=>1,f=>1} 69006b0001009f1c01000000 69006b0001009f1c01000000 69006b0001009f1c01000000 69006b0001009f1c01000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>25941,c=>65,a=>-78,g=>738858833,b=>0,d=>1,f=>3} b2004100010055650300000051170a2c b2004100010055650300000051170a2c b2004100010055650300000051170a2c b2004100010055650300000051170a2c - {e=>16369,c=>84,a=>23,g=>253726160,b=>2,d=>3,f=>0} 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f 170254000300f13f00000000d08d1f0f - {e=>20549,c=>68,a=>-90,g=>1840050508,b=>0,d=>3,f=>2} a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d a600440003004550020000004cf1ac6d - {e=>4229,c=>122,a=>68,g=>163350911,b=>3,d=>1,f=>3} 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 44037a0001008510030000007f89bc09 - {e=>2131,c=>18,a=>-48,g=>1460988621,b=>3,d=>3,f=>1} d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 d00312000300530801000000cdea1457 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>28672,a=>-38,d=>3,c=>3,h=>230,b=>0,g=>1572591659,f=>3} da00030003000070030000002bd8bb5de600 da00030003000070030000002bd8bb5de600 da00030003000070030000002bd8bb5de600 da00030003000070030000002bd8bb5de600 - {e=>21420,a=>6,d=>3,c=>126,h=>29,b=>1,g=>1987843785,f=>2} 06017e000300ac5302000000c9167c761d00 06017e000300ac5302000000c9167c761d00 06017e000300ac5302000000c9167c761d00 06017e000300ac5302000000c9167c761d00 - {e=>24974,a=>83,d=>3,c=>26,h=>197,b=>0,g=>375167546,f=>0} 53001a0003008e61000000003a9a5c16c500 53001a0003008e61000000003a9a5c16c500 53001a0003008e61000000003a9a5c16c500 53001a0003008e61000000003a9a5c16c500 - {e=>10987,a=>91,d=>0,c=>96,h=>171,b=>1,g=>1441248927,f=>3} 5b0160000000eb2a030000009fb6e755ab00 5b0160000000eb2a030000009fb6e755ab00 5b0160000000eb2a030000009fb6e755ab00 5b0160000000eb2a030000009fb6e755ab00 - {e=>7107,a=>62,d=>3,c=>84,h=>49,b=>0,g=>1539603978,f=>0} 3e0054000300c31b000000000a7ec45b3100 3e0054000300c31b000000000a7ec45b3100 3e0054000300c31b000000000a7ec45b3100 3e0054000300c31b000000000a7ec45b3100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>-78,b=>1} b2ff0100 b2ff0100 b2ff0100 b2ff0100 - {a=>-18,b=>2} eeff0200 eeff0200 eeff0200 eeff0200 - {a=>3,b=>3} 03000300 03000300 03000300 03000300 - {a=>-8,b=>0} f8ff0000 f8ff0000 f8ff0000 f8ff0000 - {a=>114,b=>1} 72000100 72000100 72000100 72000100 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>46,a=>40,b=>3} 2800032e 2800032e 2800032e 2800032e - {c=>26,a=>116,b=>1} 7400011a 7400011a 7400011a 7400011a - {c=>116,a=>-66,b=>3} beff0374 beff0374 beff0374 beff0374 - {c=>45,a=>-35,b=>2} ddff022d ddff022d ddff022d ddff022d - {c=>30,a=>75,b=>3} 4b00031e 4b00031e 4b00031e 4b00031e = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>51,a=>56,b=>2} 38000233 38000233 38000233 38000233 - {c=>76,a=>38,b=>0} 2600004c 2600004c 2600004c 2600004c - {c=>31,a=>-74,b=>3} b6ff031f b6ff031f b6ff031f b6ff031f - {c=>95,a=>53,b=>0} 3500005f 3500005f 3500005f 3500005f - {c=>65,a=>-118,b=>2} 8aff0241 8aff0241 8aff0241 8aff0241 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>104,a=>-99,b=>1,d=>3} 9dff01680300 9dff01680300 9dff01680300 9dff01680300 - {c=>113,a=>-77,b=>0,d=>3} b3ff00710300 b3ff00710300 b3ff00710300 b3ff00710300 - {c=>38,a=>119,b=>1,d=>3} 770001260300 770001260300 770001260300 770001260300 - {c=>120,a=>-5,b=>0,d=>0} fbff00780000 fbff00780000 fbff00780000 fbff00780000 - {c=>94,a=>-19,b=>3,d=>2} edff035e0200 edff035e0200 edff035e0200 edff035e0200 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>9932,c=>43,a=>-80,b=>2,d=>3} b0ff022b0300cc26 b0ff022b0300cc26 b0ff022b0300cc26 b0ff022b0300cc26 - {e=>30764,c=>117,a=>-54,b=>0,d=>2} caff007502002c78 caff007502002c78 caff007502002c78 caff007502002c78 - {e=>13093,c=>118,a=>118,b=>3,d=>0} 7600037600002533 7600037600002533 7600037600002533 7600037600002533 - {e=>20007,c=>75,a=>-56,b=>3,d=>2} c8ff034b0200274e c8ff034b0200274e c8ff034b0200274e c8ff034b0200274e - {e=>29692,c=>120,a=>45,b=>1,d=>3} 2d0001780300fc73 2d0001780300fc73 2d0001780300fc73 2d0001780300fc73 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>1707,c=>51,a=>-92,b=>2,d=>0} a4ff02330000ab06 a4ff02330000ab06 a4ff02330000ab06 a4ff02330000ab06 - {e=>22195,c=>16,a=>-106,b=>0,d=>3} 96ff00100300b356 96ff00100300b356 96ff00100300b356 96ff00100300b356 - {e=>26092,c=>101,a=>-52,b=>3,d=>0} ccff03650000ec65 ccff03650000ec65 ccff03650000ec65 ccff03650000ec65 - {e=>10767,c=>23,a=>120,b=>3,d=>0} 7800031700000f2a 7800031700000f2a 7800031700000f2a 7800031700000f2a - {e=>22371,c=>42,a=>97,b=>0,d=>3} 6100002a03006357 6100002a03006357 6100002a03006357 6100002a03006357 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>5426,c=>73,a=>107,b=>1,d=>2,f=>3} 6b0001490200321503000000 6b0001490200321503000000 6b0001490200321503000000 6b0001490200321503000000 - {e=>25684,c=>82,a=>-99,b=>3,d=>2,f=>1} 9dff03520200546401000000 9dff03520200546401000000 9dff03520200546401000000 9dff03520200546401000000 - {e=>5420,c=>23,a=>75,b=>2,d=>1,f=>0} 4b00021701002c1500000000 4b00021701002c1500000000 4b00021701002c1500000000 4b00021701002c1500000000 - {e=>2354,c=>11,a=>-63,b=>0,d=>1,f=>3} c1ff000b0100320903000000 c1ff000b0100320903000000 c1ff000b0100320903000000 c1ff000b0100320903000000 - {e=>14868,c=>64,a=>-6,b=>1,d=>3,f=>0} faff01400300143a00000000 faff01400300143a00000000 faff01400300143a00000000 faff01400300143a00000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>7432,c=>46,a=>-97,g=>1876506977,b=>1,d=>2,f=>0} 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f 9fff012e0200081d000000006139d96f - {e=>19949,c=>124,a=>32,g=>396727791,b=>2,d=>1,f=>2} 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 2000027c0100ed4d02000000ef95a517 - {e=>1774,c=>10,a=>110,g=>861455959,b=>0,d=>3,f=>3} 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 6e00000a0300ee060300000057c65833 - {e=>17159,c=>124,a=>-113,g=>2079899019,b=>2,d=>3,f=>0} 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b 8fff027c03000743000000008bbdf87b - {e=>30127,c=>49,a=>-70,g=>1975146991,b=>0,d=>0,f=>3} baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 baff00310000af7503000000ef59ba75 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>3,a=>85,d=>1,c=>69,h=>236,b=>0,g=>486067682,f=>2} 550000450100030002000000e2cdf81cec00 550000450100030002000000e2cdf81cec00 550000450100030002000000e2cdf81cec00 550000450100030002000000e2cdf81cec00 - {e=>30273,a=>-71,d=>3,c=>51,h=>105,b=>2,g=>1361574005,f=>3} b9ff0233030041760300000075f827516900 b9ff0233030041760300000075f827516900 b9ff0233030041760300000075f827516900 b9ff0233030041760300000075f827516900 - {e=>25503,a=>-67,d=>3,c=>19,h=>175,b=>1,g=>190963807,f=>1} bdff011303009f63010000005fe0610baf00 bdff011303009f63010000005fe0610baf00 bdff011303009f63010000005fe0610baf00 bdff011303009f63010000005fe0610baf00 - {e=>18177,a=>-30,d=>1,c=>47,h=>200,b=>1,g=>976748818,f=>3} e2ff012f01000147030000001201383ac800 e2ff012f01000147030000001201383ac800 e2ff012f01000147030000001201383ac800 e2ff012f01000147030000001201383ac800 - {e=>29900,a=>97,d=>1,c=>20,h=>124,b=>0,g=>261624382,f=>3} 610000140100cc74030000003e12980f7c00 610000140100cc74030000003e12980f7c00 610000140100cc74030000003e12980f7c00 610000140100cc74030000003e12980f7c00 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>-90,b=>3} a6ffffff0300 a6ffffff0300 a6ffffff0300 a6ffffff0300 - {a=>41,b=>1} 290000000100 290000000100 290000000100 290000000100 - {a=>-89,b=>0} a7ffffff0000 a7ffffff0000 a7ffffff0000 a7ffffff0000 - {a=>96,b=>0} 600000000000 600000000000 600000000000 600000000000 - {a=>-20,b=>3} ecffffff0300 ecffffff0300 ecffffff0300 ecffffff0300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>30,a=>-27,b=>1} e5ffffff011e e5ffffff011e e5ffffff011e e5ffffff011e - {c=>124,a=>-69,b=>0} bbffffff007c bbffffff007c bbffffff007c bbffffff007c - {c=>28,a=>-28,b=>0} e4ffffff001c e4ffffff001c e4ffffff001c e4ffffff001c - {c=>99,a=>50,b=>0} 320000000063 320000000063 320000000063 320000000063 - {c=>63,a=>-67,b=>3} bdffffff033f bdffffff033f bdffffff033f bdffffff033f = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>26,a=>-54,b=>2} caffffff021a caffffff021a caffffff021a caffffff021a - {c=>38,a=>126,b=>2} 7e0000000226 7e0000000226 7e0000000226 7e0000000226 - {c=>107,a=>-7,b=>0} f9ffffff006b f9ffffff006b f9ffffff006b f9ffffff006b - {c=>13,a=>98,b=>3} 62000000030d 62000000030d 62000000030d 62000000030d - {c=>97,a=>84,b=>2} 540000000261 540000000261 540000000261 540000000261 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>110,a=>-46,b=>1,d=>2} d2ffffff016e0200 d2ffffff016e0200 d2ffffff016e0200 d2ffffff016e0200 - {c=>99,a=>-7,b=>1,d=>1} f9ffffff01630100 f9ffffff01630100 f9ffffff01630100 f9ffffff01630100 - {c=>88,a=>-1,b=>1,d=>2} ffffffff01580200 ffffffff01580200 ffffffff01580200 ffffffff01580200 - {c=>65,a=>-40,b=>0,d=>2} d8ffffff00410200 d8ffffff00410200 d8ffffff00410200 d8ffffff00410200 - {c=>59,a=>-76,b=>0,d=>0} b4ffffff003b0000 b4ffffff003b0000 b4ffffff003b0000 b4ffffff003b0000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>32442,c=>51,a=>3,b=>0,d=>0} 0300000000330000ba7e 0300000000330000ba7e 0300000000330000ba7e 0300000000330000ba7e - {e=>9995,c=>67,a=>48,b=>2,d=>2} 30000000024302000b27 30000000024302000b27 30000000024302000b27 30000000024302000b27 - {e=>29590,c=>74,a=>75,b=>0,d=>2} 4b000000004a02009673 4b000000004a02009673 4b000000004a02009673 4b000000004a02009673 - {e=>31156,c=>54,a=>-49,b=>1,d=>3} cfffffff01360300b479 cfffffff01360300b479 cfffffff01360300b479 cfffffff01360300b479 - {e=>29653,c=>12,a=>-35,b=>3,d=>0} ddffffff030c0000d573 ddffffff030c0000d573 ddffffff030c0000d573 ddffffff030c0000d573 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>29970,c=>42,a=>-35,b=>0,d=>2} ddffffff002a02001275 ddffffff002a02001275 ddffffff002a02001275 ddffffff002a02001275 - {e=>5805,c=>46,a=>15,b=>0,d=>0} 0f000000002e0000ad16 0f000000002e0000ad16 0f000000002e0000ad16 0f000000002e0000ad16 - {e=>32451,c=>91,a=>82,b=>3,d=>1} 52000000035b0100c37e 52000000035b0100c37e 52000000035b0100c37e 52000000035b0100c37e - {e=>4579,c=>50,a=>-33,b=>2,d=>1} dfffffff02320100e311 dfffffff02320100e311 dfffffff02320100e311 dfffffff02320100e311 - {e=>21164,c=>115,a=>-64,b=>0,d=>2} c0ffffff00730200ac52 c0ffffff00730200ac52 c0ffffff00730200ac52 c0ffffff00730200ac52 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>23029,c=>127,a=>-67,b=>1,d=>3,f=>0} bdffffff017f0300f55900000000 bdffffff017f0300f55900000000 bdffffff017f0300f55900000000 bdffffff017f0300f55900000000 - {e=>16590,c=>24,a=>-103,b=>2,d=>3,f=>0} 99ffffff02180300ce4000000000 99ffffff02180300ce4000000000 99ffffff02180300ce4000000000 99ffffff02180300ce4000000000 - {e=>6342,c=>83,a=>-124,b=>3,d=>2,f=>3} 84ffffff03530200c61803000000 84ffffff03530200c61803000000 84ffffff03530200c61803000000 84ffffff03530200c61803000000 - {e=>20449,c=>25,a=>51,b=>1,d=>2,f=>0} 3300000001190200e14f00000000 3300000001190200e14f00000000 3300000001190200e14f00000000 3300000001190200e14f00000000 - {e=>6146,c=>52,a=>40,b=>2,d=>0,f=>3} 2800000002340000021803000000 2800000002340000021803000000 2800000002340000021803000000 2800000002340000021803000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>3892,c=>48,a=>-46,g=>316743879,b=>2,d=>1,f=>3} d2ffffff02300100340f03000000c720e112 d2ffffff02300100340f03000000c720e112 d2ffffff02300100340f03000000c720e112 d2ffffff02300100340f03000000c720e112 - {e=>26400,c=>46,a=>-27,g=>151740613,b=>2,d=>3,f=>1} e5ffffff022e0300206701000000c5600b09 e5ffffff022e0300206701000000c5600b09 e5ffffff022e0300206701000000c5600b09 e5ffffff022e0300206701000000c5600b09 - {e=>26192,c=>62,a=>24,g=>1861908220,b=>2,d=>0,f=>3} 18000000023e0000506603000000fc76fa6e 18000000023e0000506603000000fc76fa6e 18000000023e0000506603000000fc76fa6e 18000000023e0000506603000000fc76fa6e - {e=>21869,c=>35,a=>48,g=>1165253908,b=>2,d=>3,f=>1} 30000000022303006d5501000000145d7445 30000000022303006d5501000000145d7445 30000000022303006d5501000000145d7445 30000000022303006d5501000000145d7445 - {e=>31408,c=>111,a=>30,g=>1811810369,b=>1,d=>0,f=>0} 1e000000016f0000b07a000000004108fe6b 1e000000016f0000b07a000000004108fe6b 1e000000016f0000b07a000000004108fe6b 1e000000016f0000b07a000000004108fe6b = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>22792,a=>69,d=>0,c=>81,h=>223,b=>0,g=>1807892872,f=>2} 45000000005100000859020000008841c26bdf00 45000000005100000859020000008841c26bdf00 45000000005100000859020000008841c26bdf00 45000000005100000859020000008841c26bdf00 - {e=>6988,a=>-93,d=>1,c=>27,h=>182,b=>3,g=>374359030,f=>1} a3ffffff031b01004c1b01000000f6435016b600 a3ffffff031b01004c1b01000000f6435016b600 a3ffffff031b01004c1b01000000f6435016b600 a3ffffff031b01004c1b01000000f6435016b600 - {e=>14822,a=>-84,d=>0,c=>16,h=>181,b=>0,g=>1852459803,f=>2} acffffff00100000e639020000001b4b6a6eb500 acffffff00100000e639020000001b4b6a6eb500 acffffff00100000e639020000001b4b6a6eb500 acffffff00100000e639020000001b4b6a6eb500 - {e=>21205,a=>118,d=>1,c=>107,h=>123,b=>2,g=>1241312097,f=>2} 76000000026b0100d5520200000061ebfc497b00 76000000026b0100d5520200000061ebfc497b00 76000000026b0100d5520200000061ebfc497b00 76000000026b0100d5520200000061ebfc497b00 - {e=>15889,a=>-72,d=>3,c=>115,h=>148,b=>3,g=>812033748,f=>2} b8ffffff03730300113e02000000d4a666309400 b8ffffff03730300113e02000000d4a666309400 b8ffffff03730300113e02000000d4a666309400 b8ffffff03730300113e02000000d4a666309400 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>-83,b=>1} adffffff0100 adffffff0100 adffffff0100 adffffff0100 - {a=>-66,b=>2} beffffff0200 beffffff0200 beffffff0200 beffffff0200 - {a=>29,b=>2} 1d0000000200 1d0000000200 1d0000000200 1d0000000200 - {a=>3,b=>3} 030000000300 030000000300 030000000300 030000000300 - {a=>96,b=>0} 600000000000 600000000000 600000000000 600000000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>65,a=>58,b=>1} 3a0000000141 3a0000000141 3a0000000141 3a0000000141 - {c=>69,a=>121,b=>3} 790000000345 790000000345 790000000345 790000000345 - {c=>64,a=>43,b=>0} 2b0000000040 2b0000000040 2b0000000040 2b0000000040 - {c=>119,a=>-117,b=>3} 8bffffff0377 8bffffff0377 8bffffff0377 8bffffff0377 - {c=>121,a=>-9,b=>2} f7ffffff0279 f7ffffff0279 f7ffffff0279 f7ffffff0279 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>105,a=>-106,b=>1} 96ffffff0169 96ffffff0169 96ffffff0169 96ffffff0169 - {c=>123,a=>94,b=>1} 5e000000017b 5e000000017b 5e000000017b 5e000000017b - {c=>116,a=>-82,b=>1} aeffffff0174 aeffffff0174 aeffffff0174 aeffffff0174 - {c=>123,a=>72,b=>2} 48000000027b 48000000027b 48000000027b 48000000027b - {c=>73,a=>-126,b=>3} 82ffffff0349 82ffffff0349 82ffffff0349 82ffffff0349 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>95,a=>0,b=>2,d=>1} 00000000025f0100 00000000025f0100 00000000025f0100 00000000025f0100 - {c=>66,a=>121,b=>3,d=>3} 7900000003420300 7900000003420300 7900000003420300 7900000003420300 - {c=>26,a=>99,b=>2,d=>2} 63000000021a0200 63000000021a0200 63000000021a0200 63000000021a0200 - {c=>88,a=>98,b=>0,d=>1} 6200000000580100 6200000000580100 6200000000580100 6200000000580100 - {c=>3,a=>-14,b=>2,d=>3} f2ffffff02030300 f2ffffff02030300 f2ffffff02030300 f2ffffff02030300 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>9767,c=>60,a=>-61,b=>1,d=>2} c3ffffff013c02002726 c3ffffff013c02002726 c3ffffff013c02002726 c3ffffff013c02002726 - {e=>12740,c=>73,a=>45,b=>1,d=>0} 2d00000001490000c431 2d00000001490000c431 2d00000001490000c431 2d00000001490000c431 - {e=>19242,c=>24,a=>3,b=>2,d=>3} 03000000021803002a4b 03000000021803002a4b 03000000021803002a4b 03000000021803002a4b - {e=>22616,c=>113,a=>104,b=>2,d=>0} 68000000027100005858 68000000027100005858 68000000027100005858 68000000027100005858 - {e=>25298,c=>80,a=>59,b=>3,d=>0} 3b00000003500000d262 3b00000003500000d262 3b00000003500000d262 3b00000003500000d262 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>20592,c=>52,a=>-37,b=>2,d=>2} dbffffff023402007050 dbffffff023402007050 dbffffff023402007050 dbffffff023402007050 - {e=>276,c=>125,a=>90,b=>3,d=>0} 5a000000037d00001401 5a000000037d00001401 5a000000037d00001401 5a000000037d00001401 - {e=>32279,c=>46,a=>100,b=>2,d=>3} 64000000022e0300177e 64000000022e0300177e 64000000022e0300177e 64000000022e0300177e - {e=>25090,c=>74,a=>5,b=>1,d=>2} 05000000014a02000262 05000000014a02000262 05000000014a02000262 05000000014a02000262 - {e=>3865,c=>84,a=>-99,b=>0,d=>1} 9dffffff00540100190f 9dffffff00540100190f 9dffffff00540100190f 9dffffff00540100190f = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>21175,c=>59,a=>-120,b=>1,d=>1,f=>3} 88ffffff013b0100b75203000000 88ffffff013b0100b75203000000 88ffffff013b0100b75203000000 88ffffff013b0100b75203000000 - {e=>28600,c=>26,a=>40,b=>1,d=>0,f=>3} 28000000011a0000b86f03000000 28000000011a0000b86f03000000 28000000011a0000b86f03000000 28000000011a0000b86f03000000 - {e=>28585,c=>40,a=>111,b=>2,d=>1,f=>0} 6f00000002280100a96f00000000 6f00000002280100a96f00000000 6f00000002280100a96f00000000 6f00000002280100a96f00000000 - {e=>5446,c=>49,a=>-10,b=>0,d=>3,f=>2} f6ffffff00310300461502000000 f6ffffff00310300461502000000 f6ffffff00310300461502000000 f6ffffff00310300461502000000 - {e=>8086,c=>115,a=>71,b=>1,d=>3,f=>2} 4700000001730300961f02000000 4700000001730300961f02000000 4700000001730300961f02000000 4700000001730300961f02000000 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>2515,c=>39,a=>-81,g=>1557846639,b=>0,d=>2,f=>0} afffffff00270200d309000000006fdada5c afffffff00270200d309000000006fdada5c afffffff00270200d309000000006fdada5c afffffff00270200d309000000006fdada5c - {e=>24554,c=>76,a=>-55,g=>397475554,b=>0,d=>3,f=>1} c9ffffff004c0300ea5f01000000e2feb017 c9ffffff004c0300ea5f01000000e2feb017 c9ffffff004c0300ea5f01000000e2feb017 c9ffffff004c0300ea5f01000000e2feb017 - {e=>21564,c=>75,a=>-60,g=>1965999580,b=>1,d=>1,f=>0} c4ffffff014b01003c5400000000dcc52e75 c4ffffff014b01003c5400000000dcc52e75 c4ffffff014b01003c5400000000dcc52e75 c4ffffff014b01003c5400000000dcc52e75 - {e=>4819,c=>95,a=>5,g=>1426045861,b=>2,d=>3,f=>0} 05000000025f0300d31200000000a5bbff54 05000000025f0300d31200000000a5bbff54 05000000025f0300d31200000000a5bbff54 05000000025f0300d31200000000a5bbff54 - {e=>9300,c=>73,a=>-128,g=>2026652952,b=>2,d=>2,f=>0} 80ffffff024902005424000000001845cc78 80ffffff024902005424000000001845cc78 80ffffff024902005424000000001845cc78 80ffffff024902005424000000001845cc78 = #if defined PACK_PAREN #pragma pack( 2 ) #elif defined PACK_NO_PAREN #pragma pack 2 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>21952,a=>-109,d=>2,c=>25,h=>45,b=>2,g=>1114185827,f=>3} 93ffffff02190200c05503000000632069422d00 93ffffff02190200c05503000000632069422d00 93ffffff02190200c05503000000632069422d00 93ffffff02190200c05503000000632069422d00 - {e=>26940,a=>-113,d=>2,c=>52,h=>252,b=>0,g=>1775585392,f=>2} 8fffffff003402003c69020000007048d569fc00 8fffffff003402003c69020000007048d569fc00 8fffffff003402003c69020000007048d569fc00 8fffffff003402003c69020000007048d569fc00 - {e=>15281,a=>-108,d=>2,c=>32,h=>104,b=>0,g=>334972013,f=>0} 94ffffff00200200b13b000000006d44f7136800 94ffffff00200200b13b000000006d44f7136800 94ffffff00200200b13b000000006d44f7136800 94ffffff00200200b13b000000006d44f7136800 - {e=>2768,a=>-8,d=>2,c=>44,h=>179,b=>0,g=>1813704477,f=>2} f8ffffff002c0200d00a020000001def1a6cb300 f8ffffff002c0200d00a020000001def1a6cb300 f8ffffff002c0200d00a020000001def1a6cb300 f8ffffff002c0200d00a020000001def1a6cb300 - {e=>4766,a=>-98,d=>1,c=>110,h=>87,b=>3,g=>1617177070,f=>1} 9effffff036e01009e1201000000ee2964605700 9effffff036e01009e1201000000ee2964605700 9effffff036e01009e1201000000ee2964605700 9effffff036e01009e1201000000ee2964605700 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; }; - {a=>2} 02 02 02 02 - {a=>1} 01 01 01 01 - {a=>2} 02 02 02 02 - {a=>3} 03 03 03 03 - {a=>3} 03 03 03 03 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; }; - {a=>1,b=>53} 0135 0135 0135 0135 - {a=>1,b=>50} 0132 0132 0132 0132 - {a=>1,b=>123} 017b 017b 017b 017b - {a=>1,b=>14} 010e 010e 010e 010e - {a=>1,b=>30} 011e 011e 011e 011e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; }; - {a=>0,b=>46} 002e 002e 002e 002e - {a=>0,b=>81} 0051 0051 0051 0051 - {a=>2,b=>74} 024a 024a 024a 024a - {a=>0,b=>65} 0041 0041 0041 0041 - {a=>2,b=>109} 026d 026d 026d 026d = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; }; - {c=>3,a=>2,b=>16} 02100300 02100300 02100300 02100300 - {c=>1,a=>2,b=>62} 023e0100 023e0100 023e0100 023e0100 - {c=>3,a=>1,b=>111} 016f0300 016f0300 016f0300 016f0300 - {c=>1,a=>1,b=>68} 01440100 01440100 01440100 01440100 - {c=>2,a=>2,b=>45} 022d0200 022d0200 022d0200 022d0200 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; }; - {c=>3,a=>1,b=>26,d=>16785} 011a03009141 011a03009141 011a03009141 011a03009141 - {c=>1,a=>2,b=>72,d=>27478} 02480100566b 02480100566b 02480100566b 02480100566b - {c=>0,a=>2,b=>38,d=>5575} 02260000c715 02260000c715 02260000c715 02260000c715 - {c=>0,a=>0,b=>9,d=>15309} 00090000cd3b 00090000cd3b 00090000cd3b 00090000cd3b - {c=>1,a=>0,b=>50,d=>15196} 003201005c3b 003201005c3b 003201005c3b 003201005c3b = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; }; - {c=>3,a=>0,b=>45,d=>19854} 002d03008e4d0000 002d03008e4d0000 002d03008e4d0000 002d03008e4d0000 - {c=>1,a=>1,b=>98,d=>13023} 01620100df320000 01620100df320000 01620100df320000 01620100df320000 - {c=>0,a=>0,b=>60,d=>21600} 003c000060540000 003c000060540000 003c000060540000 003c000060540000 - {c=>0,a=>3,b=>66,d=>5095} 03420000e7130000 03420000e7130000 03420000e7130000 03420000e7130000 - {c=>1,a=>2,b=>6,d=>28001} 02060100616d0000 02060100616d0000 02060100616d0000 02060100616d0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; }; - {e=>3,c=>3,a=>0,b=>58,d=>11881} 003a0300692e000003000000 003a0300692e000003000000 003a0300692e000003000000 003a0300692e000003000000 - {e=>1,c=>2,a=>3,b=>55,d=>28258} 03370200626e000001000000 03370200626e000001000000 03370200626e000001000000 03370200626e000001000000 - {e=>0,c=>2,a=>0,b=>80,d=>21967} 00500200cf55000000000000 00500200cf55000000000000 00500200cf55000000000000 00500200cf55000000000000 - {e=>3,c=>1,a=>2,b=>45,d=>10113} 022d01008127000003000000 022d01008127000003000000 022d01008127000003000000 022d01008127000003000000 - {e=>2,c=>1,a=>1,b=>95,d=>17218} 015f01004243000002000000 015f01004243000002000000 015f01004243000002000000 015f01004243000002000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; }; - {e=>0,c=>2,a=>3,b=>80,d=>2111,f=>1422571903} 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 035002003f080000000000007fb9ca54 - {e=>2,c=>1,a=>3,b=>64,d=>2000,f=>1965034422} 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 03400100d007000002000000b60b2075 - {e=>2,c=>3,a=>1,b=>54,d=>28927,f=>969485170} 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 01360300ff70000002000000722bc939 - {e=>2,c=>1,a=>3,b=>123,d=>20823,f=>1458057064} 037b01005751000002000000682fe856 037b01005751000002000000682fe856 037b01005751000002000000682fe856 037b01005751000002000000682fe856 - {e=>1,c=>2,a=>0,b=>6,d=>12501,f=>1351383989} 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 00060200d530000001000000b57b8c50 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { unsigned char a:2; unsigned char b:7; short :0; unsigned short c:2; unsigned short d:15; int :0; unsigned int e:2; unsigned int f:31; unsigned char g; }; - {e=>0,c=>2,a=>3,g=>84,b=>89,d=>9214,f=>106393136} 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 03590200fe23000000000000306e570654000000 - {e=>0,c=>1,a=>3,g=>127,b=>82,d=>23276,f=>741050135} 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 03520100ec5a00000000000017872b2c7f000000 - {e=>1,c=>2,a=>3,g=>51,b=>86,d=>27154,f=>843170060} 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 03560200126a0000010000000cc1413233000000 - {e=>2,c=>0,a=>1,g=>50,b=>109,d=>21142,f=>302068161} 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 016d00009652000002000000c131011232000000 - {e=>0,c=>0,a=>0,g=>115,b=>39,d=>28818,f=>1653939669} 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 002700009270000000000000d51d956273000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; }; - {a=>127,b=>3} 7f03 7f03 7f03 7f03 - {a=>80,b=>3} 5003 5003 5003 5003 - {a=>-62,b=>3} c203 c203 c203 c203 - {a=>-100,b=>0} 9c00 9c00 9c00 9c00 - {a=>14,b=>0} 0e00 0e00 0e00 0e00 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; }; - {c=>39,a=>-40,b=>3} d80327 d80327 d80327 d80327 - {c=>16,a=>1,b=>2} 010210 010210 010210 010210 - {c=>127,a=>117,b=>2} 75027f 75027f 75027f 75027f - {c=>19,a=>-78,b=>3} b20313 b20313 b20313 b20313 - {c=>78,a=>-31,b=>3} e1034e e1034e e1034e e1034e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>49,a=>86,b=>0} 56003100 56003100 56003100 56003100 - {c=>37,a=>-76,b=>0} b4002500 b4002500 b4002500 b4002500 - {c=>41,a=>-78,b=>1} b2012900 b2012900 b2012900 b2012900 - {c=>48,a=>-122,b=>1} 86013000 86013000 86013000 86013000 - {c=>80,a=>38,b=>1} 26015000 26015000 26015000 26015000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>64,a=>67,b=>0,d=>3} 430040000300 430040000300 430040000300 430040000300 - {c=>7,a=>32,b=>0,d=>3} 200007000300 200007000300 200007000300 200007000300 - {c=>48,a=>-66,b=>2,d=>3} be0230000300 be0230000300 be0230000300 be0230000300 - {c=>36,a=>98,b=>1,d=>0} 620124000000 620124000000 620124000000 620124000000 - {c=>52,a=>-93,b=>0,d=>0} a30034000000 a30034000000 a30034000000 a30034000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>26785,c=>119,a=>-1,b=>1,d=>0} ff0177000000a168 ff0177000000a168 ff0177000000a168 ff0177000000a168 - {e=>21340,c=>96,a=>-74,b=>2,d=>0} b602600000005c53 b602600000005c53 b602600000005c53 b602600000005c53 - {e=>28806,c=>61,a=>26,b=>3,d=>1} 1a033d0001008670 1a033d0001008670 1a033d0001008670 1a033d0001008670 - {e=>28589,c=>26,a=>-114,b=>2,d=>2} 8e021a000200ad6f 8e021a000200ad6f 8e021a000200ad6f 8e021a000200ad6f - {e=>26902,c=>48,a=>-95,b=>0,d=>1} a100300001001669 a100300001001669 a100300001001669 a100300001001669 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>3552,c=>17,a=>-7,b=>2,d=>3} f90211000300e00d f90211000300e00d f90211000300e00d f90211000300e00d - {e=>26031,c=>93,a=>25,b=>2,d=>2} 19025d000200af65 19025d000200af65 19025d000200af65 19025d000200af65 - {e=>22073,c=>127,a=>50,b=>3,d=>2} 32037f0002003956 32037f0002003956 32037f0002003956 32037f0002003956 - {e=>2767,c=>28,a=>125,b=>3,d=>0} 7d031c000000cf0a 7d031c000000cf0a 7d031c000000cf0a 7d031c000000cf0a - {e=>13191,c=>78,a=>100,b=>1,d=>0} 64014e0000008733 64014e0000008733 64014e0000008733 64014e0000008733 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>30976,c=>57,a=>34,b=>3,d=>1,f=>2} 220339000100007902000000 220339000100007902000000 220339000100007902000000 220339000100007902000000 - {e=>6346,c=>73,a=>-3,b=>3,d=>2,f=>2} fd0349000200ca1802000000 fd0349000200ca1802000000 fd0349000200ca1802000000 fd0349000200ca1802000000 - {e=>6949,c=>88,a=>-4,b=>0,d=>0,f=>1} fc0058000000251b01000000 fc0058000000251b01000000 fc0058000000251b01000000 fc0058000000251b01000000 - {e=>28006,c=>111,a=>-33,b=>1,d=>1,f=>2} df016f000100666d02000000 df016f000100666d02000000 df016f000100666d02000000 df016f000100666d02000000 - {e=>14019,c=>108,a=>-96,b=>0,d=>2,f=>0} a0006c000200c33600000000 a0006c000200c33600000000 a0006c000200c33600000000 a0006c000200c33600000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>9791,c=>22,a=>-47,g=>647164236,b=>2,d=>2,f=>1} d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 d102160002003f26010000004cf19226 - {e=>27793,c=>21,a=>-62,g=>1814066393,b=>1,d=>3,f=>1} c20115000300916c01000000d974206c c20115000300916c01000000d974206c c20115000300916c01000000d974206c c20115000300916c01000000d974206c - {e=>21047,c=>89,a=>-117,g=>455211358,b=>1,d=>2,f=>2} 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b 8b01590002003752020000005ef9211b - {e=>17235,c=>47,a=>-82,g=>2001830733,b=>1,d=>1,f=>0} ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 ae012f0001005343000000004d835177 - {e=>1178,c=>72,a=>-128,g=>1850197261,b=>3,d=>2,f=>2} 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e 8003480002009a04020000000dc5476e = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { char a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>4992,a=>101,d=>0,c=>45,h=>179,b=>3,g=>1764834428,f=>2} 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 65032d0000008013020000007c3c3169b3000000 - {e=>28162,a=>-27,d=>2,c=>19,h=>16,b=>1,g=>1368222481,f=>3} e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 e50113000200026e03000000116b8d5110000000 - {e=>9500,a=>102,d=>2,c=>48,h=>250,b=>2,g=>153279384,f=>3} 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 6602300002001c250300000098db2209fa000000 - {e=>6190,a=>-9,d=>3,c=>84,h=>49,b=>1,g=>1357610161,f=>0} f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 f701540003002e1800000000b17ceb5031000000 - {e=>18540,a=>-57,d=>3,c=>110,h=>172,b=>1,g=>1540619102,f=>1} c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 c7016e0003006c48010000005efbd35bac000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; }; - {a=>12,b=>0} 0c000000 0c000000 0c000000 0c000000 - {a=>56,b=>0} 38000000 38000000 38000000 38000000 - {a=>-4,b=>1} fcff0100 fcff0100 fcff0100 fcff0100 - {a=>-26,b=>1} e6ff0100 e6ff0100 e6ff0100 e6ff0100 - {a=>108,b=>0} 6c000000 6c000000 6c000000 6c000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; }; - {c=>4,a=>-80,b=>3} b0ff0304 b0ff0304 b0ff0304 b0ff0304 - {c=>37,a=>1,b=>1} 01000125 01000125 01000125 01000125 - {c=>79,a=>-80,b=>2} b0ff024f b0ff024f b0ff024f b0ff024f - {c=>19,a=>36,b=>0} 24000013 24000013 24000013 24000013 - {c=>71,a=>74,b=>3} 4a000347 4a000347 4a000347 4a000347 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>100,a=>40,b=>1} 28000164 28000164 28000164 28000164 - {c=>34,a=>-110,b=>1} 92ff0122 92ff0122 92ff0122 92ff0122 - {c=>74,a=>109,b=>2} 6d00024a 6d00024a 6d00024a 6d00024a - {c=>106,a=>85,b=>3} 5500036a 5500036a 5500036a 5500036a - {c=>103,a=>-49,b=>2} cfff0267 cfff0267 cfff0267 cfff0267 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>65,a=>120,b=>3,d=>2} 780003410200 780003410200 780003410200 780003410200 - {c=>0,a=>-65,b=>1,d=>0} bfff01000000 bfff01000000 bfff01000000 bfff01000000 - {c=>45,a=>-28,b=>3,d=>3} e4ff032d0300 e4ff032d0300 e4ff032d0300 e4ff032d0300 - {c=>47,a=>-69,b=>0,d=>1} bbff002f0100 bbff002f0100 bbff002f0100 bbff002f0100 - {c=>58,a=>-126,b=>2,d=>3} 82ff023a0300 82ff023a0300 82ff023a0300 82ff023a0300 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>23184,c=>121,a=>-111,b=>3,d=>2} 91ff03790200905a 91ff03790200905a 91ff03790200905a 91ff03790200905a - {e=>10634,c=>6,a=>0,b=>0,d=>1} 0000000601008a29 0000000601008a29 0000000601008a29 0000000601008a29 - {e=>1052,c=>95,a=>-110,b=>0,d=>3} 92ff005f03001c04 92ff005f03001c04 92ff005f03001c04 92ff005f03001c04 - {e=>30124,c=>4,a=>-80,b=>0,d=>1} b0ff00040100ac75 b0ff00040100ac75 b0ff00040100ac75 b0ff00040100ac75 - {e=>6111,c=>70,a=>-3,b=>0,d=>2} fdff00460200df17 fdff00460200df17 fdff00460200df17 fdff00460200df17 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>27293,c=>0,a=>6,b=>1,d=>1} 0600010001009d6a 0600010001009d6a 0600010001009d6a 0600010001009d6a - {e=>7905,c=>88,a=>-84,b=>2,d=>1} acff02580100e11e acff02580100e11e acff02580100e11e acff02580100e11e - {e=>25121,c=>6,a=>8,b=>1,d=>3} 0800010603002162 0800010603002162 0800010603002162 0800010603002162 - {e=>31153,c=>31,a=>-128,b=>0,d=>1} 80ff001f0100b179 80ff001f0100b179 80ff001f0100b179 80ff001f0100b179 - {e=>26840,c=>3,a=>-81,b=>0,d=>1} afff00030100d868 afff00030100d868 afff00030100d868 afff00030100d868 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>14623,c=>76,a=>81,b=>1,d=>0,f=>0} 5100014c00001f3900000000 5100014c00001f3900000000 5100014c00001f3900000000 5100014c00001f3900000000 - {e=>15019,c=>26,a=>124,b=>1,d=>1,f=>0} 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 7c00011a0100ab3a00000000 - {e=>20293,c=>73,a=>-24,b=>3,d=>1,f=>2} e8ff03490100454f02000000 e8ff03490100454f02000000 e8ff03490100454f02000000 e8ff03490100454f02000000 - {e=>10913,c=>40,a=>116,b=>1,d=>3,f=>3} 740001280300a12a03000000 740001280300a12a03000000 740001280300a12a03000000 740001280300a12a03000000 - {e=>7039,c=>44,a=>-19,b=>1,d=>3,f=>3} edff012c03007f1b03000000 edff012c03007f1b03000000 edff012c03007f1b03000000 edff012c03007f1b03000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>24746,c=>73,a=>96,g=>1050064470,b=>1,d=>2,f=>3} 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e 600001490200aa600300000056b6963e - {e=>3803,c=>22,a=>94,g=>1842484087,b=>1,d=>2,f=>1} 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d 5e0001160200db0e010000007713d26d - {e=>214,c=>123,a=>77,g=>1848243584,b=>0,d=>3,f=>3} 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e 4d00007b0300d6000300000080f5296e - {e=>26881,c=>70,a=>-34,g=>434815639,b=>2,d=>3,f=>2} deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 deff0246030001690200000097c2ea19 - {e=>29110,c=>65,a=>70,g=>1149188362,b=>3,d=>1,f=>1} 460003410100b671010000000a397f44 460003410100b671010000000a397f44 460003410100b671010000000a397f44 460003410100b671010000000a397f44 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { short a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>14421,a=>-30,d=>3,c=>26,h=>141,b=>1,g=>4188654,f=>3} e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 e2ff011a0300553803000000eee93f008d000000 - {e=>8456,a=>9,d=>3,c=>14,h=>64,b=>1,g=>622335221,f=>2} 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 0900010e0300082102000000f514182540000000 - {e=>4776,a=>81,d=>2,c=>60,h=>86,b=>1,g=>767737936,f=>2} 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 5100013c0200a8120200000050c0c22d56000000 - {e=>23388,a=>-75,d=>2,c=>8,h=>15,b=>3,g=>884282703,f=>1} b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 b5ff030802005c5b010000004f15b5340f000000 - {e=>12562,a=>25,d=>1,c=>64,h=>193,b=>0,g=>817252271,f=>0} 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 190000400100123100000000af47b630c1000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; }; - {a=>103,b=>3} 6700000003000000 6700000003000000 6700000003000000 6700000003000000 - {a=>40,b=>0} 2800000000000000 2800000000000000 2800000000000000 2800000000000000 - {a=>49,b=>1} 3100000001000000 3100000001000000 3100000001000000 3100000001000000 - {a=>21,b=>0} 1500000000000000 1500000000000000 1500000000000000 1500000000000000 - {a=>111,b=>0} 6f00000000000000 6f00000000000000 6f00000000000000 6f00000000000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; }; - {c=>103,a=>-126,b=>1} 82ffffff01670000 82ffffff01670000 82ffffff01670000 82ffffff01670000 - {c=>66,a=>-92,b=>1} a4ffffff01420000 a4ffffff01420000 a4ffffff01420000 a4ffffff01420000 - {c=>11,a=>61,b=>0} 3d000000000b0000 3d000000000b0000 3d000000000b0000 3d000000000b0000 - {c=>87,a=>-84,b=>2} acffffff02570000 acffffff02570000 acffffff02570000 acffffff02570000 - {c=>62,a=>-50,b=>2} ceffffff023e0000 ceffffff023e0000 ceffffff023e0000 ceffffff023e0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>107,a=>0,b=>0} 00000000006b0000 00000000006b0000 00000000006b0000 00000000006b0000 - {c=>118,a=>-118,b=>1} 8affffff01760000 8affffff01760000 8affffff01760000 8affffff01760000 - {c=>69,a=>-37,b=>1} dbffffff01450000 dbffffff01450000 dbffffff01450000 dbffffff01450000 - {c=>30,a=>91,b=>2} 5b000000021e0000 5b000000021e0000 5b000000021e0000 5b000000021e0000 - {c=>29,a=>124,b=>0} 7c000000001d0000 7c000000001d0000 7c000000001d0000 7c000000001d0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>61,a=>67,b=>2,d=>0} 43000000023d0000 43000000023d0000 43000000023d0000 43000000023d0000 - {c=>127,a=>17,b=>2,d=>1} 11000000027f0100 11000000027f0100 11000000027f0100 11000000027f0100 - {c=>119,a=>32,b=>1,d=>1} 2000000001770100 2000000001770100 2000000001770100 2000000001770100 - {c=>65,a=>-115,b=>0,d=>2} 8dffffff00410200 8dffffff00410200 8dffffff00410200 8dffffff00410200 - {c=>83,a=>98,b=>1,d=>1} 6200000001530100 6200000001530100 6200000001530100 6200000001530100 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>5523,c=>25,a=>-32,b=>3,d=>2} e0ffffff0319020093150000 e0ffffff0319020093150000 e0ffffff0319020093150000 e0ffffff0319020093150000 - {e=>17834,c=>17,a=>118,b=>3,d=>1} 7600000003110100aa450000 7600000003110100aa450000 7600000003110100aa450000 7600000003110100aa450000 - {e=>25877,c=>64,a=>-78,b=>2,d=>3} b2ffffff0240030015650000 b2ffffff0240030015650000 b2ffffff0240030015650000 b2ffffff0240030015650000 - {e=>5816,c=>42,a=>71,b=>2,d=>3} 47000000022a0300b8160000 47000000022a0300b8160000 47000000022a0300b8160000 47000000022a0300b8160000 - {e=>29371,c=>34,a=>49,b=>0,d=>0} 3100000000220000bb720000 3100000000220000bb720000 3100000000220000bb720000 3100000000220000bb720000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>24240,c=>104,a=>-100,b=>1,d=>0} 9cffffff01680000b05e0000 9cffffff01680000b05e0000 9cffffff01680000b05e0000 9cffffff01680000b05e0000 - {e=>12831,c=>111,a=>9,b=>1,d=>3} 09000000016f03001f320000 09000000016f03001f320000 09000000016f03001f320000 09000000016f03001f320000 - {e=>30312,c=>91,a=>97,b=>1,d=>2} 61000000015b020068760000 61000000015b020068760000 61000000015b020068760000 61000000015b020068760000 - {e=>10363,c=>58,a=>-82,b=>1,d=>0} aeffffff013a00007b280000 aeffffff013a00007b280000 aeffffff013a00007b280000 aeffffff013a00007b280000 - {e=>29377,c=>72,a=>39,b=>0,d=>0} 2700000000480000c1720000 2700000000480000c1720000 2700000000480000c1720000 2700000000480000c1720000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>17692,c=>26,a=>9,b=>2,d=>0,f=>3} 09000000021a00001c45000003000000 09000000021a00001c45000003000000 09000000021a00001c45000003000000 09000000021a00001c45000003000000 - {e=>27254,c=>68,a=>-9,b=>3,d=>1,f=>2} f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 f7ffffff03440100766a000002000000 - {e=>6512,c=>116,a=>59,b=>0,d=>3,f=>0} 3b000000007403007019000000000000 3b000000007403007019000000000000 3b000000007403007019000000000000 3b000000007403007019000000000000 - {e=>1930,c=>119,a=>83,b=>0,d=>0,f=>3} 53000000007700008a07000003000000 53000000007700008a07000003000000 53000000007700008a07000003000000 53000000007700008a07000003000000 - {e=>15816,c=>57,a=>52,b=>1,d=>3,f=>3} 3400000001390300c83d000003000000 3400000001390300c83d000003000000 3400000001390300c83d000003000000 3400000001390300c83d000003000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>30223,c=>33,a=>-100,g=>121180495,b=>1,d=>2,f=>0} 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 9cffffff012102000f760000000000004f113907 - {e=>18201,c=>67,a=>-52,g=>392025226,b=>0,d=>0,f=>2} ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 ccffffff0043000019470000020000008ad45d17 - {e=>17360,c=>19,a=>-73,g=>394570984,b=>1,d=>1,f=>3} b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 b7ffffff01130100d043000003000000e8ac8417 - {e=>10287,c=>34,a=>-106,g=>498558563,b=>2,d=>3,f=>3} 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d 96ffffff022203002f280000030000006366b71d - {e=>9740,c=>45,a=>86,g=>1880755291,b=>1,d=>0,f=>2} 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 56000000012d00000c260000020000005b0c1a70 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { int a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>23079,a=>112,d=>1,c=>76,h=>172,b=>0,g=>635357675,f=>2} 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 70000000004c0100275a000002000000ebc9de25ac000000 - {e=>26130,a=>-73,d=>3,c=>118,h=>116,b=>0,g=>1812500274,f=>1} b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 b7ffffff007603001266000001000000328f086c74000000 - {e=>24159,a=>-26,d=>2,c=>104,h=>134,b=>0,g=>700333779,f=>0} e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 e6ffffff006802005f5e000000000000d33ebe2986000000 - {e=>2660,a=>-41,d=>2,c=>126,h=>49,b=>2,g=>1088641385,f=>0} d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 d7ffffff027e0200640a0000000000006959e34031000000 - {e=>25739,a=>-16,d=>2,c=>114,h=>244,b=>1,g=>1079005221,f=>1} f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 f0ffffff017202008b6400000100000025505040f4000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; }; - {a=>90,b=>1} 5a00000001000000 5a00000001000000 5a00000001000000 5a00000001000000 - {a=>-80,b=>0} b0ffffff00000000 b0ffffff00000000 b0ffffff00000000 b0ffffff00000000 - {a=>68,b=>2} 4400000002000000 4400000002000000 4400000002000000 4400000002000000 - {a=>-83,b=>3} adffffff03000000 adffffff03000000 adffffff03000000 adffffff03000000 - {a=>-41,b=>3} d7ffffff03000000 d7ffffff03000000 d7ffffff03000000 d7ffffff03000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; }; - {c=>109,a=>96,b=>1} 60000000016d0000 60000000016d0000 60000000016d0000 60000000016d0000 - {c=>31,a=>-56,b=>2} c8ffffff021f0000 c8ffffff021f0000 c8ffffff021f0000 c8ffffff021f0000 - {c=>61,a=>16,b=>3} 10000000033d0000 10000000033d0000 10000000033d0000 10000000033d0000 - {c=>108,a=>110,b=>1} 6e000000016c0000 6e000000016c0000 6e000000016c0000 6e000000016c0000 - {c=>19,a=>38,b=>3} 2600000003130000 2600000003130000 2600000003130000 2600000003130000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; }; - {c=>11,a=>-122,b=>1} 86ffffff010b0000 86ffffff010b0000 86ffffff010b0000 86ffffff010b0000 - {c=>97,a=>16,b=>1} 1000000001610000 1000000001610000 1000000001610000 1000000001610000 - {c=>80,a=>-128,b=>2} 80ffffff02500000 80ffffff02500000 80ffffff02500000 80ffffff02500000 - {c=>14,a=>123,b=>0} 7b000000000e0000 7b000000000e0000 7b000000000e0000 7b000000000e0000 - {c=>103,a=>47,b=>2} 2f00000002670000 2f00000002670000 2f00000002670000 2f00000002670000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; }; - {c=>34,a=>-101,b=>0,d=>3} 9bffffff00220300 9bffffff00220300 9bffffff00220300 9bffffff00220300 - {c=>68,a=>-41,b=>0,d=>2} d7ffffff00440200 d7ffffff00440200 d7ffffff00440200 d7ffffff00440200 - {c=>43,a=>8,b=>0,d=>3} 08000000002b0300 08000000002b0300 08000000002b0300 08000000002b0300 - {c=>1,a=>-35,b=>1,d=>1} ddffffff01010100 ddffffff01010100 ddffffff01010100 ddffffff01010100 - {c=>76,a=>104,b=>1,d=>0} 68000000014c0000 68000000014c0000 68000000014c0000 68000000014c0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; }; - {e=>24942,c=>46,a=>6,b=>3,d=>1} 06000000032e01006e610000 06000000032e01006e610000 06000000032e01006e610000 06000000032e01006e610000 - {e=>21474,c=>50,a=>-44,b=>1,d=>1} d4ffffff01320100e2530000 d4ffffff01320100e2530000 d4ffffff01320100e2530000 d4ffffff01320100e2530000 - {e=>3529,c=>20,a=>82,b=>2,d=>1} 5200000002140100c90d0000 5200000002140100c90d0000 5200000002140100c90d0000 5200000002140100c90d0000 - {e=>17185,c=>27,a=>101,b=>1,d=>1} 65000000011b010021430000 65000000011b010021430000 65000000011b010021430000 65000000011b010021430000 - {e=>16801,c=>73,a=>65,b=>2,d=>0} 4100000002490000a1410000 4100000002490000a1410000 4100000002490000a1410000 4100000002490000a1410000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; }; - {e=>19824,c=>4,a=>-13,b=>0,d=>3} f3ffffff00040300704d0000 f3ffffff00040300704d0000 f3ffffff00040300704d0000 f3ffffff00040300704d0000 - {e=>26529,c=>110,a=>-18,b=>0,d=>0} eeffffff006e0000a1670000 eeffffff006e0000a1670000 eeffffff006e0000a1670000 eeffffff006e0000a1670000 - {e=>19156,c=>80,a=>-61,b=>3,d=>3} c3ffffff03500300d44a0000 c3ffffff03500300d44a0000 c3ffffff03500300d44a0000 c3ffffff03500300d44a0000 - {e=>3691,c=>27,a=>-58,b=>3,d=>1} c6ffffff031b01006b0e0000 c6ffffff031b01006b0e0000 c6ffffff031b01006b0e0000 c6ffffff031b01006b0e0000 - {e=>19252,c=>104,a=>-126,b=>0,d=>3} 82ffffff00680300344b0000 82ffffff00680300344b0000 82ffffff00680300344b0000 82ffffff00680300344b0000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; }; - {e=>26648,c=>18,a=>21,b=>0,d=>0,f=>3} 15000000001200001868000003000000 15000000001200001868000003000000 15000000001200001868000003000000 15000000001200001868000003000000 - {e=>4058,c=>41,a=>53,b=>2,d=>1,f=>1} 3500000002290100da0f000001000000 3500000002290100da0f000001000000 3500000002290100da0f000001000000 3500000002290100da0f000001000000 - {e=>32076,c=>52,a=>69,b=>0,d=>3,f=>0} 45000000003403004c7d000000000000 45000000003403004c7d000000000000 45000000003403004c7d000000000000 45000000003403004c7d000000000000 - {e=>1444,c=>19,a=>67,b=>0,d=>3,f=>2} 4300000000130300a405000002000000 4300000000130300a405000002000000 4300000000130300a405000002000000 4300000000130300a405000002000000 - {e=>24969,c=>106,a=>-88,b=>3,d=>1,f=>2} a8ffffff036a01008961000002000000 a8ffffff036a01008961000002000000 a8ffffff036a01008961000002000000 a8ffffff036a01008961000002000000 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; }; - {e=>16632,c=>60,a=>-40,g=>1817886941,b=>2,d=>3,f=>0} d8ffffff023c0300f840000000000000ddc05a6c d8ffffff023c0300f840000000000000ddc05a6c d8ffffff023c0300f840000000000000ddc05a6c d8ffffff023c0300f840000000000000ddc05a6c - {e=>473,c=>72,a=>-41,g=>52496826,b=>2,d=>0,f=>3} d7ffffff02480000d901000003000000ba092103 d7ffffff02480000d901000003000000ba092103 d7ffffff02480000d901000003000000ba092103 d7ffffff02480000d901000003000000ba092103 - {e=>11344,c=>93,a=>112,g=>612815542,b=>2,d=>3,f=>3} 70000000025d0300502c000003000000b6d28624 70000000025d0300502c000003000000b6d28624 70000000025d0300502c000003000000b6d28624 70000000025d0300502c000003000000b6d28624 - {e=>19196,c=>13,a=>-21,g=>359321552,b=>3,d=>0,f=>1} ebffffff030d0000fc4a000001000000d0cf6a15 ebffffff030d0000fc4a000001000000d0cf6a15 ebffffff030d0000fc4a000001000000d0cf6a15 ebffffff030d0000fc4a000001000000d0cf6a15 - {e=>17883,c=>107,a=>108,g=>578088007,b=>3,d=>0,f=>1} 6c000000036b0000db4500000100000047ec7422 6c000000036b0000db4500000100000047ec7422 6c000000036b0000db4500000100000047ec7422 6c000000036b0000db4500000100000047ec7422 = #if defined PACK_PAREN #pragma pack( 4 ) #elif defined PACK_NO_PAREN #pragma pack 4 #endif struct toobig_pack_1 { long a; unsigned char b:2; unsigned char c:7; short :0; unsigned short d:2; unsigned short e:15; int :0; unsigned int f:2; unsigned int g:31; unsigned char h; }; - {e=>12541,a=>64,d=>0,c=>105,h=>135,b=>2,g=>30539544,f=>0} 4000000002690000fd3000000000000018ffd10187000000 4000000002690000fd3000000000000018ffd10187000000 4000000002690000fd3000000000000018ffd10187000000 4000000002690000fd3000000000000018ffd10187000000 - {e=>20492,a=>-87,d=>3,c=>8,h=>213,b=>1,g=>1628818689,f=>3} a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 a9ffffff010803000c5000000300000001cd1561d5000000 - {e=>19965,a=>102,d=>3,c=>44,h=>160,b=>1,g=>1186990891,f=>0} 66000000012c0300fd4d0000000000002b0bc046a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 66000000012c0300fd4d0000000000002b0bc046a0000000 - {e=>4623,a=>123,d=>0,c=>12,h=>32,b=>0,g=>776268733,f=>1} 7b000000000c00000f12000001000000bdeb442e20000000 7b000000000c00000f12000001000000bdeb442e20000000 7b000000000c00000f12000001000000bdeb442e20000000 7b000000000c00000f12000001000000bdeb442e20000000 - {e=>32210,a=>87,d=>3,c=>96,h=>9,b=>0,g=>416850484,f=>1} 5700000000600300d27d00000100000034a2d81809000000 5700000000600300d27d00000100000034a2d81809000000 5700000000600300d27d00000100000034a2d81809000000 5700000000600300d27d00000100000034a2d81809000000 = Convert-Binary-C-0.76/tests/219_def.t0000644000175000001440000000714611550664620015700 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:23 +0200 $ # $Revision: 16 $ # $Source: /tests/219_def.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 119; } $SIG{__WARN__} = sub { push @warn, $_[0] }; eval { $c = new Convert::Binary::C; }; ok($@,'',"failed to create Convert::Binary::C object"); @tests = ( ['foo' => undef ], ['int' => 'basic'], [' unsigned long long int ' => 'basic'], ); run_tests( $c, @tests ); ok( scalar @warn, 0 ); @warn = (); $c->parse( < undef ], ['int' => 'basic' ], [' long double' => 'basic' ], ['__int' => 'typedef'], ['__array' => 'typedef'], ['__ptr' => 'typedef'], ['__ptr.foo' => '' ], ['__ptr [10]' => '' ], ['__ptr !&' => '' ], ['test' => 'typedef'], ['struct test' => 'struct' ], ['test2' => 'typedef'], ['undef' => '' ], ['undef2' => 'typedef'], ['struct undef' => '' ], ['uni' => 'typedef'], ['noenu' => '' ], ['enum enu' => 'enum' ], ['enu' => 'typedef'], ['su' => 'struct' ], ['union uni' => '' ], ['struct bar' => undef ], ['uni2' => 'union' ], ['enu2' => 'enum' ], ['test.foo' => 'member' ], ['test.bar' => '' ], ['test2.foo' => 'member' ], ['test2[3]' => '' ], ['test2.foo.x' => '' ], ['test2.foo[1]' => '' ], ['uni2.foo[1]' => 'member' ], ['uni2.foo[2][3]' => 'member' ], ['uni2.foo[-1]' => 'member' ], ['uni2.foo[2][-1]' => 'member' ], ['uni2.foo[3]' => 'member' ], ['uni2.foo[2][4]' => 'member' ], ['undef.x' => '' ], ['__array[9]' => 'member' ], ['__array[10]' => 'member' ], ['__array.xxx' => '' ], ['enu.xxx' => '' ], ['enu???' => '' ], ['enu[0]' => '' ], ['noenu.xxx' => '' ], ['noenu???' => '' ], ['noenu[0]' => '' ], ['.xxx' => undef ], ['???' => undef ], ['[0]' => undef ], ['foo.xxx' => undef ], ['foo???' => undef ], ['foo[0]' => undef ], ['short int .xxx' => undef ], ['short int ???' => undef ], ['short int [0]' => undef ], ); run_tests( $c, @tests ); ok( scalar @warn, 0 ); sub run_tests { my $c = shift; for( @_ ) { my $rv = eval { $c->def($_->[0]) }; ok( $@, '' ); unless( defined $rv and defined $_->[1] ) { ok( defined $rv, defined $_->[1] ); } else { ok( $rv, $_->[1], "wrong result for '$_->[0]'" ); } } } Convert-Binary-C-0.76/tests/237_parser.t0000644000175000001440000000402611550664621016431 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:26 +0200 $ # $Revision: 10 $ # $Source: /tests/237_parser.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 18 } my $c = eval { new Convert::Binary::C }; ok($@,'',"failed to create Convert::Binary::C object"); $c->PointerSize(4)->IntSize(2)->CharSize(1); @test = ( [ 'const volatile' => $c->IntSize ], [ 'volatile [3]' => 3 * $c->IntSize ], [ 'restrict *' => $c->PointerSize ], ); for my $t (@test) { eval { $c->clean->parse("typedef char array[sizeof($t->[0])];") }; ok($@, ''); ok($c->sizeof('array'), $t->[1]); } # bitfield size tests @test = ( [ 'int :-1' => qr/negative width for bit-field/ ], [ 'int :0' => '' ], [ 'int :1' => '' ], [ 'int bf:-1' => qr/negative width for bit-field 'bf'/ ], [ 'int bf:0' => qr/zero width for bit-field 'bf'/ ], [ 'int bf:1' => '' ], ); for my $t (@test) { eval { $c->clean->parse("struct bitfield { $t->[0]; };") }; ok($@, $t->[1]); } # short-circuiting test # XXX: this doesn't mean we're really short-circuiting, only # that we're cheating good enough ;-) @test = ( [ '1 || (1 / 0) ? 2 : 3' => 2 ], [ '0 && (1 / 0) ? 2 : 3' => 3 ], ); for my $t (@test) { eval { $c->clean->parse("typedef char array[$t->[0]];") }; ok($@, ''); ok($c->sizeof('array'), $t->[1]); } # TODO: operator precedence tests # TODO: array size tests # test typedef behaviour eval { $c->clean->parse(< 4, EnumSize => 4, IntSize => 4, LongSize => 4, Alignment => 2, ByteOrder => 'BigEndian', EnumType => 'String'; $q = new Convert::Binary::C; }; ok($@,''); #----------------------------------- # create some average ( ?? :-) code #----------------------------------- $code = <<'CCODE'; #define ONLY_ONE 1 typedef struct abc abc_type; typedef struct never ever; struct abc { abc_type *p1; #if ONLY_ONE > 1 abc_type *p2; #endif }; typedef unsigned long u32; #define Day( which ) \ which ## DAY typedef enum { Day( MON ), Day( TUES ), Day( WEDNES ), } day; # \ define __SIX__ \ ( sizeof( unsigned char * ) + sizeof( short ) ) # define SIXTEEN \ (sizeof "Hello\"\xfworld\069!") typedef union zap { signed long za[__SIX__]; short zb[SIXTEEN]; char zc[sizeof(struct never (*[2][3])[4])]; ever *zd[sizeof( abc_type )]; } ZAP; CCODE #----------------------- # try to parse the code #----------------------- eval { $p->parse( $code ); $q->parse( $code ); }; ok($@,''); #------------------------ # reconfigure the parser #------------------------ eval { $p->configure( Alignment => 8, EnumSize => 0 ); }; ok($@,''); #-------------------------------- # and parse some additional code #-------------------------------- $code = <<'CCODE'; typedef struct { abc_type xxx; u32 dusel, *fusel; int musel[((1<<1)+4)&0x00000002]; union { char bytes[(12/2)%4][(0x10|010)>>3]; day today; long value; } test; struct ints fubar; union zap hello; } husel; #pragma pack( push, 1 ) struct packer { char i; short am; char really; long packed; }; #pragma pack( pop ) struct nopack { char i; short am; char not; long packed; }; CCODE $c99_code = <<'CCODE' . $code; #define \ MYINTS( ... \ ) { int __VA_ARGS__; } struct ints MYINTS( a, b, c ); CCODE #----------------------- # try to parse the code #----------------------- eval { $q->HasMacroVAARGS( 0 ); $q->parse( $c99_code ); }; ok($@ =~ /invalid macro argument/); eval { $p->parse( $c99_code ) }; ok($@,''); #------------------------ # reconfigure the parser #------------------------ eval { $p->Alignment( 4 ) }; ok($@,''); #------------------- # test some offsets #------------------- ok($p->offsetof('packer', 'i'), 0); ok($p->offsetof('packer', 'am'), 1); ok($p->offsetof('packer', 'really'), 3); ok($p->offsetof('packer', 'packed'), 4); ok($p->offsetof('nopack', 'i'), 0); ok($p->offsetof('nopack', 'am'), 2); ok($p->offsetof('nopack', 'not'), 4); ok($p->offsetof('nopack', 'packed'), 8); #------------------------ # now try some unpacking #------------------------ # on a pack()ed struct $data = pack( 'cnCN', -47, 0x1234, 0x55, 2000000000 ); eval { $result = $p->unpack( 'packer', $data ) }; ok($@,''); $refres = { i => -47, am => 0x1234, really => 0x55, packed => 2000000000, }; reccmp( $refres, $result ); # on a 'normal' struct $data = pack( 'cxnCx3N', -47, 0x1234, 0x55, 2000000000 ); eval { $result = $p->unpack( 'nopack', $data ) }; ok($@,''); $refres = { 'i' => -47, 'am' => 0x1234, 'not' => 0x55, 'packed' => 2000000000, }; reccmp( $refres, $result ); #----------------------- # test something bigger #----------------------- $data = pack( "N5c8N3C48", 123, 4711, 0xDEADBEEF, -42, 42, 1, 0, 0, 0, -2, 3, 0, 0, -10000, 5000, 8000, 1..48 ); eval { $result = $p->unpack( 'husel', $data ) }; ok($@,''); eval { undef $p }; ok($@,''); $refres = { xxx => { p1 => 123 }, dusel => 4711, fusel => 0xDEADBEEF, musel => [ -42, 42 ], test => { bytes => [ [ 1, 0, 0 ], [ 0, -2, 3 ] ], today => 'TUESDAY', value => 16777216, }, fubar => { a => -10000, b => 5000, c => 8000, }, hello => { za => [16909060, 84281096, 151653132, 219025168, 286397204, 353769240], zb => [258, 772, 1286, 1800, 2314, 2828, 3342, 3856, 4370, 4884, 5398, 5912, 6426, 6940, 7454, 7968], zc => [1..24], zd => [16909060, 84281096, 151653132, 219025168], }, }; reccmp( $refres, $result ); #------------------------------------------------ # test pack/unpack/sizeof/typeof for basic types #------------------------------------------------ $p = new Convert::Binary::C; @tests = ( ['char', $p->CharSize ], ['short', $p->ShortSize ], ['int', $p->IntSize ], ['long', $p->LongSize ], ['long long', $p->LongLongSize ], ['float', $p->FloatSize ], ['double', $p->DoubleSize ], ['long double', $p->LongDoubleSize], ); for( @tests ) { my $size = eval { $p->sizeof( $_->[0] ) }; ok( $@, '' ); ok( $size, $_->[1] ); } check_basic( $p ); # must work without parse data, too $p->clean; check_basic( $p ); #-------------------------------- # test offsetof in strange cases #-------------------------------- eval { $p->configure( IntSize => 4 , LongSize => 4 , PointerSize => 4 , EnumSize => 4 , Alignment => 4 )->parse(<offsetof( $_->[0], $_->[1] ) }; ok( $@, '' ); ok( $off, $_->[2] ); } ok( scalar @warn, 1 ); ok( $warn[0] =~ /^Empty string passed as member expression/ ); #------------------------------ # some simple tests for member #------------------------------ @tests = ( ['foo', '.ary[0].x', 4], ['foo.ary[2]', '.x', 0], ['foo.ary[2]', '.y', 4], ['foo.ary', '[2].y', 20], ['foo.aryary[2]', '[2].y', 20], ['a', '[9]', 36], ['test', '.zap[5].day', 64], ['test.zap[2]', '.day', 4], ['test', '.zap[5].day+1', 65], ); @warn = (); ok( $@, '' ); for( @tests ) { my @m = eval { $p->member( $_->[0], $_->[2] ) }; ok( $@, '' ); ok( scalar @m, 1 ); ok( $m[0], $_->[1] ); } ok( scalar @warn, 0 ); #------------------------------ # test 64-bit negative numbers #------------------------------ $p->clean->parse(<LongLongSize(8); for my $bo (qw( BigEndian LittleEndian )) { $p->ByteOrder($bo); my $x = $p->pack('i_64', -1); ok($x, pack('C*', (255)x8)); } sub check_basic { my $c = shift; for my $t ( 'signed char' , 'unsigned short int' , 'long int' , 'signed int' , 'long long' ) { ok( eval { $c->typeof( $t ) }, $t ); ok( eval { $c->sizeof( $t ) } > 0 ); ok( eval { $c->unpack( $t, $c->pack($t, 42) ) }, 42 ); } } sub reccmp { my($ref, $val) = @_; my $id = ref $ref; unless( $id ) { ok( $ref, $val ); return; } if( $id eq 'ARRAY' ) { ok( @$ref == @$val ); for( 0..$#$ref ) { reccmp( $ref->[$_], $val->[$_] ); } } elsif( $id eq 'HASH' ) { ok( @{[keys %$ref]} == @{[keys %$val]} ); for( keys %$ref ) { reccmp( $ref->{$_}, $val->{$_} ); } } } #------------ # test hooks #------------ $p->ByteOrder('BigEndian'); $p->clean->parse(<<'ENDC'); typedef unsigned long u_32; struct String { u_32 len; char buf[]; }; ENDC sub string_pack { { len => length $_[0], buf => [unpack 'c*', $_[0]] } } sub string_unpack { pack "c$_[0]->{len}", @{$_[0]->{buf}} } $p->tag('String', Hooks => { 'pack' => \&string_pack, 'unpack' => \&string_unpack }); $data = pack("N", 4) . "FOO!"; $unpacked = eval { $p->unpack('String', $data) }; ok($@, ''); ok($unpacked, 'FOO!'); $packed = eval { $p->pack('String', $unpacked) }; ok($@, ''); ok($packed, $data); Convert-Binary-C-0.76/tests/227_flexarray.t0000644000175000001440000000627511550664621017141 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:25 +0200 $ # $Revision: 12 $ # $Source: /tests/227_flexarray.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test; use Convert::Binary::C @ARGV; $^W = 1; BEGIN { plan tests => 49 } my $c = new Convert::Binary::C IntSize => 4, ShortSize => 2, Alignment => 4; $c->parse(<sizeof('flex1'), 24); ok($c->offsetof('flex1', 'e[1].a'), 24); ok($c->offsetof('flex1', 'e[0].b[0][0]'), 24); ok($c->sizeof('flex2'), 4); ok($c->offsetof('flex2', 'b[0].b'), 6); ok($c->sizeof('flex3'), 4); ok($c->sizeof('flex3.b'), 0); ok($c->sizeof('flex3.b[0]'), 96); ok($c->sizeof('flex3.b[0][1]'), 48); ok($c->sizeof('flex3.b[0][1][2]'), 16); ok($c->sizeof('flex3.b[0][1][2][3]'), 4); ok($c->offsetof('flex3', 'b[0]'), 4); ok($c->offsetof('flex3', 'b[0][0]'), 4); ok($c->offsetof('flex3', 'b[0][0][0]'), 4); ok($c->offsetof('flex3', 'b[0][0][0][0]'), 4); ok($c->offsetof('flex3', 'b[1]'), 100); ok($c->offsetof('flex3', 'b[0][1]'), 52); ok($c->offsetof('flex3', 'b[0][0][1]'), 20); ok($c->offsetof('flex3', 'b[0][0][0][1]'), 8); ok($c->sizeof('incomplete'), 0); ok($c->offsetof('incomplete', '[10]'), 40); my($u, $p); my $d = pack 'C*', 1 .. 4; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 0); $d .= pack 'C', 5; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 1); ok(scalar @{$u->{b}[0]{a}}, 2); ok($u->{b}[0]{a}[0], 5); ok(not defined $u->{b}[0]{b}); $d .= pack 'C', 6; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 1); ok(scalar @{$u->{b}[0]{a}}, 2); ok($u->{b}[0]{a}[0], 5); ok($u->{b}[0]{a}[1], 6); ok(not defined $u->{b}[0]{b}); $d .= pack 'C', 7; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 1); ok(scalar @{$u->{b}[0]{a}}, 2); ok($u->{b}[0]{a}[0], 5); ok($u->{b}[0]{a}[1], 6); ok(exists $u->{b}[0]{b}); ok(not defined $u->{b}[0]{b}); $d .= pack 'C', 8; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 1); ok(scalar @{$u->{b}[0]{a}}, 2); ok($u->{b}[0]{a}[0], 5); ok($u->{b}[0]{a}[1], 6); ok(exists $u->{b}[0]{b}); ok(defined $u->{b}[0]{b}); $d .= pack 'C', 9; $u = $c->unpack('flex2', $d); ok(scalar @{$u->{b}}, 2); $d = pack 'C*', map { $_ % 256 } 1 .. (10*$c->sizeof('flex3.b[0]')); $u = $c->unpack('flex3.b', $d); $p = $c->pack('flex3.b', $u); ok($d, $p); for my $member (qw( b[0] b[0][1] b[0][1][2] b[0][1][2][3] )) { $d = pack 'C*', 1 .. $c->sizeof("flex3.$member"); $u = $c->unpack("flex3.$member", $d); $p = $c->pack("flex3.$member", $u); ok($d, $p); } Convert-Binary-C-0.76/tests/242_dimension.t0000644000175000001440000003041211550664621017114 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:27 +0200 $ # $Revision: 6 $ # $Source: /tests/242_dimension.t $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Test::More tests => 1535; use Convert::Binary::C @ARGV; use strict; $^W = 1; my $c = new Convert::Binary::C CharSize => 1 , ShortSize => 2 , IntSize => 4 , Alignment => 1 , ByteOrder => 'BigEndian'; $c->parse(<<'ENDC'); struct string { char len; char data[3]; }; struct flex_string { char len; char data[]; }; typedef unsigned array[7]; typedef unsigned flex_array[]; ENDC my (@types, @tests, $is_pack, $data); $data = pack "C*", 42, 0 .. 100; @types = ( { type => 'string', raw_unpacked => { len => 42, data => [0 .. 2] }, raw_packed => pack('C*', 42, 0 .. 2) }, { type => 'flex_string', raw_unpacked => { len => 42, data => [0 .. 100] }, raw_packed => pack('C*', 42, 0 .. 100) }, ); @tests = ( { member => '.data', tag => { Dimension => 23 }, unpacked => { len => 42, data => [0 .. 22] }, packed => pack('C*', 42, 0 .. 22) }, { member => '.data', tag => { Dimension => '*' }, unpacked => { len => 42, data => [0 .. 100] }, packed => pack('C*', 42, 0 .. 100) }, { member => '.data', tag => { Dimension => 'len' }, unpacked => { len => 42, data => [0 .. 41] }, packed => pack('C*', 42, 0 .. 41) }, { member => '.data', tag => { Dimension => sub { is_deeply(\@_, [{len => 42, ($is_pack ? (data => [0 .. 76]) : ())}], 'params'); 77 } }, unpacked => { len => 42, data => [0 .. 76] }, packed => pack('C*', 42, 0 .. 76) }, { member => '.data', tag => { Dimension => [sub { is_deeply(\@_, [], 'params'); 78 }] }, unpacked => { len => 42, data => [0 .. 77] }, packed => pack('C*', 42, 0 .. 77) }, { member => '.data', tag => { Dimension => [sub { is_deeply(\@_, [1, 2, 3], 'params'); 79 }, 1, 2, 3] }, unpacked => { len => 42, data => [0 .. 78] }, packed => pack('C*', 42, 0 .. 78) }, { member => '.data', tag => { Dimension => [sub { is_deeply(\@_, [$c, 42, {len => 42, ($is_pack ? (data => [0 .. 79]) : ())}], 'params'); 80 }, $c->arg('SELF'), 42, $c->arg('DATA')] }, unpacked => { len => 42, data => [0 .. 79] }, packed => pack('C*', 42, 0 .. 79) }, { member => '.data', tag => { Format => 'Binary', Dimension => 23 }, unpacked => { len => 42, data => pack('C*', 0 .. 22) }, packed => pack('C*', 42, 0 .. 22) }, { member => '.data', tag => { Format => 'Binary', Dimension => '*' }, unpacked => { len => 42, data => pack('C*', 0 .. 100) }, packed => pack('C*', 42, 0 .. 100) }, { member => '.data', tag => { Format => 'Binary', Dimension => 'len' }, unpacked => { len => 42, data => pack('C*', 0 .. 41) }, packed => pack('C*', 42, 0 .. 41) }, { member => '.data', tag => { Dimension => sub { is_deeply(\@_, [{len => 42, ($is_pack ? (data => [0 .. 51]) : ())}], 'params'); '52' } }, unpacked => { len => 42, data => [0 .. 51] }, packed => pack('C*', 42, 0 .. 51) }, { member => '.data', tag => { Dimension => sub { is_deeply(\@_, [{len => 42, ($is_pack ? (data => [0 .. 56]) : ())}], 'params'); my $a = '7'x13 . '57'; substr $a, 13; } }, unpacked => { len => 42, data => [0 .. 56] }, packed => pack('C*', 42, 0 .. 56) }, { member => '.data', tag => { Dimension => sub { is_deeply(\@_, [{len => 42, ($is_pack ? (data => [0 .. 52]) : ())}], 'params'); my $a = '7'x42 . '53' . '9'x11; substr $a, 42, 2; } }, unpacked => { len => 42, data => [0 .. 52] }, packed => pack('C*', 42, 0 .. 52) }, ); run_tests(\@types, \@tests); $data = pack "N*", 0 .. 100; @types = ( { type => 'array', raw_unpacked => [0 .. 6], raw_packed => pack('N*', 0 .. 6) }, { type => 'flex_array', raw_unpacked => [0 .. 100], raw_packed => pack('N*', 0 .. 100) }, ); @tests = ( { tag => { Dimension => 21 }, unpacked => [0 .. 20], packed => pack('N*', 0 .. 20) }, { tag => { Dimension => '*' }, unpacked => [0 .. 100], packed => pack('N*', 0 .. 100) }, { tag => { Dimension => sub { is_deeply(\@_, [], 'params'); 77 } }, unpacked => [0 .. 76], packed => pack('N*', 0 .. 76) }, { tag => { Dimension => [sub { is_deeply(\@_, [], 'params'); 78 }] }, unpacked => [0 .. 77], packed => pack('N*', 0 .. 77) }, { tag => { Dimension => [sub { is_deeply(\@_, [1, 2, 3], 'params'); 79 }, 1, 2, 3] }, unpacked => [0 .. 78], packed => pack('N*', 0 .. 78) }, { tag => { Dimension => [sub { is_deeply(\@_, [$c, 42], 'params'); 80 }, $c->arg('SELF'), 42] }, unpacked => [0 .. 79], packed => pack('N*', 0 .. 79) }, { tag => { Format => 'Binary', Dimension => 23 }, unpacked => pack('N*', 0 .. 22), packed => pack('N*', 0 .. 22) }, { tag => { Format => 'Binary', Dimension => '*' }, unpacked => pack('N*', 0 .. 100), packed => pack('N*', 0 .. 100) }, { tag => { Dimension => sub { is_deeply(\@_, [], 'params'); '52' } }, unpacked => [0 .. 51], packed => pack('N*', 0 .. 51) }, { tag => { Dimension => sub { is_deeply(\@_, [], 'params'); my $a = '7'x13 . '57'; substr $a, 13; } }, unpacked => [0 .. 56], packed => pack('N*', 0 .. 56) }, { tag => { Dimension => sub { is_deeply(\@_, [], 'params'); my $a = '7'x42 . '53' . '9'x11; substr $a, 42, 2; } }, unpacked => [0 .. 52], packed => pack('N*', 0 .. 52) }, ); run_tests(\@types, \@tests); $c->clean->parse(<<'ENDC'); struct outer { struct inner { struct { char c; } a; char b[2]; } i; char array[]; }; ENDC { my($u, @warn); local $SIG{__WARN__} = sub { push @warn, @_ }; # --- test normal case --- $c->tag('outer.array', Dimension => 'i.b[0]'); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is_deeply(\@warn, [], 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => [ 42, 7 ] }, array => [0 .. 41] }, 'unpack outer results'); # --- test for missing parent --- @warn = (); $u = eval { $c->unpack('outer.array', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer.array'); is(scalar @warn, 1, 'unpack outer.array warnings'); like($warn[0], qr/^Missing parent to look up 'i\.b\[0\]'/, 'unpack outer.array warnings'); is_deeply($u, [], 'unpack outer.array results'); # --- test for unexpectedly wrong type --- @warn = (); $c->tag('outer.i.b', Format => 'Binary'); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Expected an array reference to look up index '0' in 'i\.b\[0\]'/, 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => pack("C*", 42, 7) }, array => [] }, 'unpack outer results'); $c->untag('outer.i.b', 'Format'); @warn = (); $c->tag('outer.array', Dimension => 'i.a.c'); $c->tag('outer.i.a', Format => 'Binary'); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Expected a hash reference to look up member 'c' in 'i\.a\.c'/, 'unpack outer warnings'); is_deeply($u, { i => { a => pack("C", 13), b => [ 42, 7 ] }, array => [] }, 'unpack outer results'); $c->untag('outer.i.a', 'Format'); # --- test for non-existent keys/indices --- @warn = (); $c->tag('outer.i.a', Hooks => { unpack => sub { return { d => 77 } } }); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Cannot find member 'c' in hash \(in 'i\.a\.c'\)/, 'unpack outer warnings'); is_deeply($u, { i => { a => { d => 77 }, b => [ 42, 7 ] }, array => [] }, 'unpack outer results'); $c->untag('outer.i.a', 'Hooks'); @warn = (); $c->tag('outer.array', Dimension => 'i.b[1]'); $c->tag('outer.i.b', Hooks => { unpack => sub { return [ 33 ] } }); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Cannot lookup index '1' in array of size '1' \(in 'i\.b\[1\]'\)/, 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => [ 33 ] }, array => [] }, 'unpack outer results'); $c->untag('outer.i.a', 'Hooks'); # --- check for invalid type --- @warn = (); $c->tag('outer.i.b', Hooks => { unpack => sub { return [ 33, 'foobar' ] } }); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Cannot use a string value \('foobar'\) in 'i\.b\[1\]' as dimension/, 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => [ 33, 'foobar' ] }, array => [] }, 'unpack outer results'); @warn = (); $c->tag('outer.i.b', Hooks => { unpack => sub { return [ 33, undef ] } }); $u = eval { $c->unpack('outer', pack('C*', 13, 42, 7, 0 .. 100)) }; is($@, '', 'unpack outer'); is(scalar @warn, 1, 'unpack outer warnings'); like($warn[0], qr/^Cannot use an undefined value in 'i\.b\[1\]' as dimension/, 'unpack outer warnings'); is_deeply($u, { i => { a => { c => 13 }, b => [ 33, undef ] }, array => [] }, 'unpack outer results'); $c->untag('outer.i.b', 'Hooks'); } sub run_tests { my($types, $tests) = @_; for my $type (@$types) { for my $t (@$tests) { my($tag, $u, $p); my $member = $t->{member} || ''; $tag = eval { $c->tag("$type->{type}$member", 'Dimension') }; is($@, '', 'get dimension tag'); is($tag, undef, 'compare dimension tag'); $is_pack = 0; $u = eval { $c->unpack($type->{type}, $data) }; is($@, '', 'unpack untagged'); is_deeply($u, $type->{raw_unpacked}, 'unpack raw'); $is_pack = 1; $p = eval { $c->pack($type->{type}, $u) }; is($@, '', 'pack untagged'); is($p, $type->{raw_packed}, 'pack raw'); eval { $c->tag("$type->{type}$member", %{$t->{tag}}) }; is($@, '', 'set tags'); $tag = eval { $c->tag("$type->{type}$member", 'Dimension') }; is($@, '', 'get dimension tag'); is_deeply($tag, $t->{tag}{Dimension}, 'compare dimension tag'); $tag = eval { $c->tag("$type->{type}$member") }; is($@, '', 'get all tags'); is_deeply($tag, $t->{tag}, 'compare tags'); $is_pack = 0; $u = eval { $c->unpack($type->{type}, $data) }; is($@, '', 'unpack tagged'); is_deeply($u, $t->{unpacked}, 'unpack'); $is_pack = 1; $p = eval { $c->pack($type->{type}, $u) }; is($@, '', 'pack tagged'); is($p, $t->{packed}, 'pack'); $c = eval { $c->clone }; is($@, '', 'clone tags'); $tag = eval { $c->tag("$type->{type}$member", 'Dimension') }; is($@, '', 'get dimension tag after clone'); is_deeply($tag, $t->{tag}{Dimension}, 'compare dimension tag after clone'); $tag = eval { $c->tag("$type->{type}$member") }; is($@, '', 'get all tags after clone'); is_deeply($tag, $t->{tag}, 'compare tags after clone'); $is_pack = 0; $u = eval { $c->unpack($type->{type}, $data) }; is($@, '', 'unpack tagged after clone'); is_deeply($u, $t->{unpacked}, 'unpack after clone'); $is_pack = 1; $p = eval { $c->pack($type->{type}, $u) }; is($@, '', 'pack tagged after clone'); is($p, $t->{packed}, 'pack after clone'); eval { $c->tag("$type->{type}$member", map { ($_ => undef) } keys %{$t->{tag}}) }; is($@, '', 'unset tags'); $tag = eval { $c->tag("$type->{type}$member", 'Dimension') }; is($@, '', 'get dimension tag'); is($tag, undef, 'compare dimension tag'); $is_pack = 0; $u = eval { $c->unpack($type->{type}, $data) }; is($@, '', 'unpack untagged'); is_deeply($u, $type->{raw_unpacked}, 'unpack raw'); } } } Convert-Binary-C-0.76/token/0000755000175000001440000000000011550665107014331 5ustar mhxusersConvert-Binary-C-0.76/token/t_sourcify.c0000644000175000001440000000170711550664635016675 0ustar mhxuserstypedef enum { SOURCIFY_OPTION_Context, SOURCIFY_OPTION_Defines, INVALID_SOURCIFY_OPTION } SourcifyConfigOption; static SourcifyConfigOption get_sourcify_config_option( const char *option ) { switch (option[0]) { case 'C': if (option[1] == 'o' && option[2] == 'n' && option[3] == 't' && option[4] == 'e' && option[5] == 'x' && option[6] == 't' && option[7] == '\0') { /* Context */ return SOURCIFY_OPTION_Context; } goto unknown; case 'D': if (option[1] == 'e' && option[2] == 'f' && option[3] == 'i' && option[4] == 'n' && option[5] == 'e' && option[6] == 's' && option[7] == '\0') { /* Defines */ return SOURCIFY_OPTION_Defines; } goto unknown; default: goto unknown; } unknown: return INVALID_SOURCIFY_OPTION; } Convert-Binary-C-0.76/token/parser.pl0000644000175000001440000000562711550664631016175 0ustar mhxusers################################################################################ # # PROGRAM: parser.pl # ################################################################################ # # DESCRIPTION: Generate tokenizer code for C parser # ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:29 +0200 $ # $Revision: 23 $ # $Source: /token/parser.pl $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Devel::Tokenizer::C; # keywords that cannot be disabled @no_disable = qw( break case char continue default do else for goto if int return sizeof struct switch typedef union while ); # keywords that can be disabled @disable = qw( asm auto const double enum extern float inline long register restrict short signed static unsigned void volatile ); @basic = qw( char double float int long short signed unsigned ); # put them in a hash @NDIS{@no_disable} = (1) x @no_disable; $file = shift; if( $file =~ /parser/ ) { $t = Devel::Tokenizer::C->new( TokenFunc => \&t_parser ) ->add_tokens( @disable, @no_disable ); } elsif( $file =~ /basic/ ) { $t = Devel::Tokenizer::C->new( TokenFunc => \&t_basic, TokenString => 'c', TokenEnd => '*name', ) ->add_tokens( @basic ); } elsif( $file =~ /keywords/ ) { $t = Devel::Tokenizer::C->new( TokenFunc => \&t_keywords, TokenString => 'str' ) ->add_tokens( @disable ); } elsif( $file =~ /ckeytok/ ) { $t = Devel::Tokenizer::C->new( TokenFunc => \&t_ckeytok, TokenString => 'name' ) ->add_tokens( @disable, @no_disable ); } else { die "invalid file: $file\n" } open OUT, ">$file" or die "$file: $!"; print OUT $t->generate; close OUT; sub t_parser { my $token = shift; if( exists $NDIS{$token} ) { return "return \U$token\E_TOK;\n"; } else { return "if( pState->pCPC->keywords & HAS_KEYWORD_\U$token\E )\n" . " return \U$token\E_TOK;\n"; } }; sub t_basic { my $token = shift; if( $token eq 'long' ) { return <new( TokenFunc => sub { "return ${PRE}_$_[0];\n" }, TokenString => 'option' ) ->add_tokens( @OPT )->generate; open OUT, ">$file" or die $!; print OUT <pCPC->keywords & HAS_KEYWORD_ASM ) return ASM_TOK; } goto unknown; case 'u': if (tokstr[2] == 't' && tokstr[3] == 'o' && tokstr[4] == '\0') { /* auto */ if( pState->pCPC->keywords & HAS_KEYWORD_AUTO ) return AUTO_TOK; } goto unknown; default: goto unknown; } case 'b': if (tokstr[1] == 'r' && tokstr[2] == 'e' && tokstr[3] == 'a' && tokstr[4] == 'k' && tokstr[5] == '\0') { /* break */ return BREAK_TOK; } goto unknown; case 'c': switch (tokstr[1]) { case 'a': if (tokstr[2] == 's' && tokstr[3] == 'e' && tokstr[4] == '\0') { /* case */ return CASE_TOK; } goto unknown; case 'h': if (tokstr[2] == 'a' && tokstr[3] == 'r' && tokstr[4] == '\0') { /* char */ return CHAR_TOK; } goto unknown; case 'o': switch (tokstr[2]) { case 'n': switch (tokstr[3]) { case 's': if (tokstr[4] == 't' && tokstr[5] == '\0') { /* const */ if( pState->pCPC->keywords & HAS_KEYWORD_CONST ) return CONST_TOK; } goto unknown; case 't': if (tokstr[4] == 'i' && tokstr[5] == 'n' && tokstr[6] == 'u' && tokstr[7] == 'e' && tokstr[8] == '\0') { /* continue */ return CONTINUE_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'd': switch (tokstr[1]) { case 'e': if (tokstr[2] == 'f' && tokstr[3] == 'a' && tokstr[4] == 'u' && tokstr[5] == 'l' && tokstr[6] == 't' && tokstr[7] == '\0') { /* default */ return DEFAULT_TOK; } goto unknown; case 'o': switch (tokstr[2]) { case '\0': { /* do */ return DO_TOK; } case 'u': if (tokstr[3] == 'b' && tokstr[4] == 'l' && tokstr[5] == 'e' && tokstr[6] == '\0') { /* double */ if( pState->pCPC->keywords & HAS_KEYWORD_DOUBLE ) return DOUBLE_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 'e': switch (tokstr[1]) { case 'l': if (tokstr[2] == 's' && tokstr[3] == 'e' && tokstr[4] == '\0') { /* else */ return ELSE_TOK; } goto unknown; case 'n': if (tokstr[2] == 'u' && tokstr[3] == 'm' && tokstr[4] == '\0') { /* enum */ if( pState->pCPC->keywords & HAS_KEYWORD_ENUM ) return ENUM_TOK; } goto unknown; case 'x': if (tokstr[2] == 't' && tokstr[3] == 'e' && tokstr[4] == 'r' && tokstr[5] == 'n' && tokstr[6] == '\0') { /* extern */ if( pState->pCPC->keywords & HAS_KEYWORD_EXTERN ) return EXTERN_TOK; } goto unknown; default: goto unknown; } case 'f': switch (tokstr[1]) { case 'l': if (tokstr[2] == 'o' && tokstr[3] == 'a' && tokstr[4] == 't' && tokstr[5] == '\0') { /* float */ if( pState->pCPC->keywords & HAS_KEYWORD_FLOAT ) return FLOAT_TOK; } goto unknown; case 'o': if (tokstr[2] == 'r' && tokstr[3] == '\0') { /* for */ return FOR_TOK; } goto unknown; default: goto unknown; } case 'g': if (tokstr[1] == 'o' && tokstr[2] == 't' && tokstr[3] == 'o' && tokstr[4] == '\0') { /* goto */ return GOTO_TOK; } goto unknown; case 'i': switch (tokstr[1]) { case 'f': if (tokstr[2] == '\0') { /* if */ return IF_TOK; } goto unknown; case 'n': switch (tokstr[2]) { case 'l': if (tokstr[3] == 'i' && tokstr[4] == 'n' && tokstr[5] == 'e' && tokstr[6] == '\0') { /* inline */ if( pState->pCPC->keywords & HAS_KEYWORD_INLINE ) return INLINE_TOK; } goto unknown; case 't': if (tokstr[3] == '\0') { /* int */ return INT_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 'l': if (tokstr[1] == 'o' && tokstr[2] == 'n' && tokstr[3] == 'g' && tokstr[4] == '\0') { /* long */ if( pState->pCPC->keywords & HAS_KEYWORD_LONG ) return LONG_TOK; } goto unknown; case 'r': switch (tokstr[1]) { case 'e': switch (tokstr[2]) { case 'g': if (tokstr[3] == 'i' && tokstr[4] == 's' && tokstr[5] == 't' && tokstr[6] == 'e' && tokstr[7] == 'r' && tokstr[8] == '\0') { /* register */ if( pState->pCPC->keywords & HAS_KEYWORD_REGISTER ) return REGISTER_TOK; } goto unknown; case 's': if (tokstr[3] == 't' && tokstr[4] == 'r' && tokstr[5] == 'i' && tokstr[6] == 'c' && tokstr[7] == 't' && tokstr[8] == '\0') { /* restrict */ if( pState->pCPC->keywords & HAS_KEYWORD_RESTRICT ) return RESTRICT_TOK; } goto unknown; case 't': if (tokstr[3] == 'u' && tokstr[4] == 'r' && tokstr[5] == 'n' && tokstr[6] == '\0') { /* return */ return RETURN_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 's': switch (tokstr[1]) { case 'h': if (tokstr[2] == 'o' && tokstr[3] == 'r' && tokstr[4] == 't' && tokstr[5] == '\0') { /* short */ if( pState->pCPC->keywords & HAS_KEYWORD_SHORT ) return SHORT_TOK; } goto unknown; case 'i': switch (tokstr[2]) { case 'g': if (tokstr[3] == 'n' && tokstr[4] == 'e' && tokstr[5] == 'd' && tokstr[6] == '\0') { /* signed */ if( pState->pCPC->keywords & HAS_KEYWORD_SIGNED ) return SIGNED_TOK; } goto unknown; case 'z': if (tokstr[3] == 'e' && tokstr[4] == 'o' && tokstr[5] == 'f' && tokstr[6] == '\0') { /* sizeof */ return SIZEOF_TOK; } goto unknown; default: goto unknown; } case 't': switch (tokstr[2]) { case 'a': if (tokstr[3] == 't' && tokstr[4] == 'i' && tokstr[5] == 'c' && tokstr[6] == '\0') { /* static */ if( pState->pCPC->keywords & HAS_KEYWORD_STATIC ) return STATIC_TOK; } goto unknown; case 'r': if (tokstr[3] == 'u' && tokstr[4] == 'c' && tokstr[5] == 't' && tokstr[6] == '\0') { /* struct */ return STRUCT_TOK; } goto unknown; default: goto unknown; } case 'w': if (tokstr[2] == 'i' && tokstr[3] == 't' && tokstr[4] == 'c' && tokstr[5] == 'h' && tokstr[6] == '\0') { /* switch */ return SWITCH_TOK; } goto unknown; default: goto unknown; } case 't': if (tokstr[1] == 'y' && tokstr[2] == 'p' && tokstr[3] == 'e' && tokstr[4] == 'd' && tokstr[5] == 'e' && tokstr[6] == 'f' && tokstr[7] == '\0') { /* typedef */ return TYPEDEF_TOK; } goto unknown; case 'u': switch (tokstr[1]) { case 'n': switch (tokstr[2]) { case 'i': if (tokstr[3] == 'o' && tokstr[4] == 'n' && tokstr[5] == '\0') { /* union */ return UNION_TOK; } goto unknown; case 's': if (tokstr[3] == 'i' && tokstr[4] == 'g' && tokstr[5] == 'n' && tokstr[6] == 'e' && tokstr[7] == 'd' && tokstr[8] == '\0') { /* unsigned */ if( pState->pCPC->keywords & HAS_KEYWORD_UNSIGNED ) return UNSIGNED_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 'v': switch (tokstr[1]) { case 'o': switch (tokstr[2]) { case 'i': if (tokstr[3] == 'd' && tokstr[4] == '\0') { /* void */ if( pState->pCPC->keywords & HAS_KEYWORD_VOID ) return VOID_TOK; } goto unknown; case 'l': if (tokstr[3] == 'a' && tokstr[4] == 't' && tokstr[5] == 'i' && tokstr[6] == 'l' && tokstr[7] == 'e' && tokstr[8] == '\0') { /* volatile */ if( pState->pCPC->keywords & HAS_KEYWORD_VOLATILE ) return VOLATILE_TOK; } goto unknown; default: goto unknown; } default: goto unknown; } case 'w': if (tokstr[1] == 'h' && tokstr[2] == 'i' && tokstr[3] == 'l' && tokstr[4] == 'e' && tokstr[5] == '\0') { /* while */ return WHILE_TOK; } goto unknown; default: goto unknown; } Convert-Binary-C-0.76/token/t_tag.c0000644000175000001440000001714611550664635015611 0ustar mhxusers/********************************************************************** * * Prototypes * **********************************************************************/ static enum CbcTagId get_tag_id(const char *tag); static TAG_SET(ByteOrder); static TAG_GET(ByteOrder); static TAG_VERIFY(ByteOrder); static enum CbcTagByteOrder GetTagByteOrder(const char *t); static TAG_INIT(Dimension); static TAG_CLONE(Dimension); static TAG_FREE(Dimension); static TAG_SET(Dimension); static TAG_GET(Dimension); static TAG_VERIFY(Dimension); static TAG_SET(Format); static TAG_GET(Format); static TAG_VERIFY(Format); static enum CbcTagFormat GetTagFormat(const char *t); static TAG_INIT(Hooks); static TAG_CLONE(Hooks); static TAG_FREE(Hooks); static TAG_SET(Hooks); static TAG_GET(Hooks); /********************************************************************** * * Tag IDs * **********************************************************************/ static const char *gs_TagIdStr[] = { "ByteOrder", "Dimension", "Format", "Hooks", "<>" }; /********************************************************************** * * Dimension Vtable * **********************************************************************/ static CtTagVtable gs_Dimension_vtable = { Dimension_Init, Dimension_Clone, Dimension_Free }; /********************************************************************** * * Hooks Vtable * **********************************************************************/ static CtTagVtable gs_Hooks_vtable = { Hooks_Init, Hooks_Clone, Hooks_Free }; /********************************************************************** * * Tag Method Table * **********************************************************************/ static const struct tag_tbl_ent { TagSetMethod set; TagGetMethod get; TagVerifyMethod verify; CtTagVtable *vtbl; } gs_TagTbl[] = { { ByteOrder_Set, ByteOrder_Get, ByteOrder_Verify, NULL }, { Dimension_Set, Dimension_Get, Dimension_Verify, &gs_Dimension_vtable }, { Format_Set, Format_Get, Format_Verify, NULL }, { Hooks_Set, Hooks_Get, NULL, &gs_Hooks_vtable }, {NULL, NULL, NULL, NULL} }; /********************************************************************** * * Main Tag Tokenizer * **********************************************************************/ static enum CbcTagId get_tag_id(const char *tag) { switch (tag[0]) { case 'B': if (tag[1] == 'y' && tag[2] == 't' && tag[3] == 'e' && tag[4] == 'O' && tag[5] == 'r' && tag[6] == 'd' && tag[7] == 'e' && tag[8] == 'r' && tag[9] == '\0') { /* ByteOrder */ return CBC_TAG_BYTE_ORDER; } goto unknown; case 'D': if (tag[1] == 'i' && tag[2] == 'm' && tag[3] == 'e' && tag[4] == 'n' && tag[5] == 's' && tag[6] == 'i' && tag[7] == 'o' && tag[8] == 'n' && tag[9] == '\0') { /* Dimension */ return CBC_TAG_DIMENSION; } goto unknown; case 'F': if (tag[1] == 'o' && tag[2] == 'r' && tag[3] == 'm' && tag[4] == 'a' && tag[5] == 't' && tag[6] == '\0') { /* Format */ return CBC_TAG_FORMAT; } goto unknown; case 'H': if (tag[1] == 'o' && tag[2] == 'o' && tag[3] == 'k' && tag[4] == 's' && tag[5] == '\0') { /* Hooks */ return CBC_TAG_HOOKS; } goto unknown; default: goto unknown; } unknown: return CBC_INVALID_TAG; } /********************************************************************** * * ByteOrder Tokenizer * **********************************************************************/ static enum CbcTagByteOrder GetTagByteOrder(const char *t) { switch (t[0]) { case 'B': if (t[1] == 'i' && t[2] == 'g' && t[3] == 'E' && t[4] == 'n' && t[5] == 'd' && t[6] == 'i' && t[7] == 'a' && t[8] == 'n' && t[9] == '\0') { /* BigEndian */ return CBC_TAG_BYTE_ORDER_BIG_ENDIAN; } goto unknown; case 'L': if (t[1] == 'i' && t[2] == 't' && t[3] == 't' && t[4] == 'l' && t[5] == 'e' && t[6] == 'E' && t[7] == 'n' && t[8] == 'd' && t[9] == 'i' && t[10] == 'a' && t[11] == 'n' && t[12] == '\0') { /* LittleEndian */ return CBC_TAG_BYTE_ORDER_LITTLE_ENDIAN; } goto unknown; default: goto unknown; } unknown: return CBC_INVALID_BYTE_ORDER; } /********************************************************************** * * Format Tokenizer * **********************************************************************/ static enum CbcTagFormat GetTagFormat(const char *t) { switch (t[0]) { case 'B': if (t[1] == 'i' && t[2] == 'n' && t[3] == 'a' && t[4] == 'r' && t[5] == 'y' && t[6] == '\0') { /* Binary */ return CBC_TAG_FORMAT_BINARY; } goto unknown; case 'S': if (t[1] == 't' && t[2] == 'r' && t[3] == 'i' && t[4] == 'n' && t[5] == 'g' && t[6] == '\0') { /* String */ return CBC_TAG_FORMAT_STRING; } goto unknown; default: goto unknown; } unknown: return CBC_INVALID_FORMAT; } /********************************************************************** * * ByteOrder Set/Get Methods * **********************************************************************/ static TAG_SET(ByteOrder) { if (SvOK(val)) { if (SvROK(val)) Perl_croak(aTHX_ "Value for ByteOrder tag must not be a reference"); else { const char *valstr = SvPV_nolen(val); enum CbcTagByteOrder ByteOrder = GetTagByteOrder(valstr); if (ByteOrder == CBC_INVALID_BYTE_ORDER) Perl_croak(aTHX_ "Invalid value '%s' for ByteOrder tag", valstr); tag->flags = ByteOrder; return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET(ByteOrder) { static const char *val[] = { "BigEndian", "LittleEndian" }; if (tag->flags >= sizeof(val) / sizeof(val[0])) fatal("Invalid value (%d) for ByteOrder tag", tag->flags); return newSVpv(val[tag->flags], 0); } /********************************************************************** * * Format Set/Get Methods * **********************************************************************/ static TAG_SET(Format) { if (SvOK(val)) { if (SvROK(val)) Perl_croak(aTHX_ "Value for Format tag must not be a reference"); else { const char *valstr = SvPV_nolen(val); enum CbcTagFormat Format = GetTagFormat(valstr); if (Format == CBC_INVALID_FORMAT) Perl_croak(aTHX_ "Invalid value '%s' for Format tag", valstr); tag->flags = Format; return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET(Format) { static const char *val[] = { "String", "Binary" }; if (tag->flags >= sizeof(val) / sizeof(val[0])) fatal("Invalid value (%d) for Format tag", tag->flags); return newSVpv(val[tag->flags], 0); } Convert-Binary-C-0.76/token/t_tag.h0000644000175000001440000000051311550664635015604 0ustar mhxusersenum CbcTagId { CBC_TAG_BYTE_ORDER, CBC_TAG_DIMENSION, CBC_TAG_FORMAT, CBC_TAG_HOOKS, CBC_INVALID_TAG }; enum CbcTagByteOrder { CBC_TAG_BYTE_ORDER_BIG_ENDIAN, CBC_TAG_BYTE_ORDER_LITTLE_ENDIAN, CBC_INVALID_BYTE_ORDER }; enum CbcTagFormat { CBC_TAG_FORMAT_STRING, CBC_TAG_FORMAT_BINARY, CBC_INVALID_FORMAT }; Convert-Binary-C-0.76/token/t_config.c0000644000175000001440000004150211550664635016274 0ustar mhxuserstypedef enum { OPTION_UnsignedBitfields, OPTION_UnsignedChars, OPTION_Warnings, OPTION_PointerSize, OPTION_EnumSize, OPTION_IntSize, OPTION_CharSize, OPTION_ShortSize, OPTION_LongSize, OPTION_LongLongSize, OPTION_FloatSize, OPTION_DoubleSize, OPTION_LongDoubleSize, OPTION_Alignment, OPTION_CompoundAlignment, OPTION_Include, OPTION_Define, OPTION_Assert, OPTION_DisabledKeywords, OPTION_KeywordMap, OPTION_ByteOrder, OPTION_EnumType, OPTION_HasCPPComments, OPTION_HasMacroVAARGS, OPTION_OrderMembers, OPTION_Bitfields, OPTION_StdCVersion, OPTION_HostedC, INVALID_OPTION } ConfigOption; static ConfigOption get_config_option( const char *option ) { switch (option[0]) { case 'A': switch (option[1]) { case 'l': if (option[2] == 'i' && option[3] == 'g' && option[4] == 'n' && option[5] == 'm' && option[6] == 'e' && option[7] == 'n' && option[8] == 't' && option[9] == '\0') { /* Alignment */ return OPTION_Alignment; } goto unknown; case 's': if (option[2] == 's' && option[3] == 'e' && option[4] == 'r' && option[5] == 't' && option[6] == '\0') { /* Assert */ return OPTION_Assert; } goto unknown; default: goto unknown; } case 'B': switch (option[1]) { case 'i': if (option[2] == 't' && option[3] == 'f' && option[4] == 'i' && option[5] == 'e' && option[6] == 'l' && option[7] == 'd' && option[8] == 's' && option[9] == '\0') { /* Bitfields */ return OPTION_Bitfields; } goto unknown; case 'y': if (option[2] == 't' && option[3] == 'e' && option[4] == 'O' && option[5] == 'r' && option[6] == 'd' && option[7] == 'e' && option[8] == 'r' && option[9] == '\0') { /* ByteOrder */ return OPTION_ByteOrder; } goto unknown; default: goto unknown; } case 'C': switch (option[1]) { case 'h': if (option[2] == 'a' && option[3] == 'r' && option[4] == 'S' && option[5] == 'i' && option[6] == 'z' && option[7] == 'e' && option[8] == '\0') { /* CharSize */ return OPTION_CharSize; } goto unknown; case 'o': if (option[2] == 'm' && option[3] == 'p' && option[4] == 'o' && option[5] == 'u' && option[6] == 'n' && option[7] == 'd' && option[8] == 'A' && option[9] == 'l' && option[10] == 'i' && option[11] == 'g' && option[12] == 'n' && option[13] == 'm' && option[14] == 'e' && option[15] == 'n' && option[16] == 't' && option[17] == '\0') { /* CompoundAlignment */ return OPTION_CompoundAlignment; } goto unknown; default: goto unknown; } case 'D': switch (option[1]) { case 'e': if (option[2] == 'f' && option[3] == 'i' && option[4] == 'n' && option[5] == 'e' && option[6] == '\0') { /* Define */ return OPTION_Define; } goto unknown; case 'i': if (option[2] == 's' && option[3] == 'a' && option[4] == 'b' && option[5] == 'l' && option[6] == 'e' && option[7] == 'd' && option[8] == 'K' && option[9] == 'e' && option[10] == 'y' && option[11] == 'w' && option[12] == 'o' && option[13] == 'r' && option[14] == 'd' && option[15] == 's' && option[16] == '\0') { /* DisabledKeywords */ return OPTION_DisabledKeywords; } goto unknown; case 'o': if (option[2] == 'u' && option[3] == 'b' && option[4] == 'l' && option[5] == 'e' && option[6] == 'S' && option[7] == 'i' && option[8] == 'z' && option[9] == 'e' && option[10] == '\0') { /* DoubleSize */ return OPTION_DoubleSize; } goto unknown; default: goto unknown; } case 'E': switch (option[1]) { case 'n': switch (option[2]) { case 'u': switch (option[3]) { case 'm': switch (option[4]) { case 'S': if (option[5] == 'i' && option[6] == 'z' && option[7] == 'e' && option[8] == '\0') { /* EnumSize */ return OPTION_EnumSize; } goto unknown; case 'T': if (option[5] == 'y' && option[6] == 'p' && option[7] == 'e' && option[8] == '\0') { /* EnumType */ return OPTION_EnumType; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'F': if (option[1] == 'l' && option[2] == 'o' && option[3] == 'a' && option[4] == 't' && option[5] == 'S' && option[6] == 'i' && option[7] == 'z' && option[8] == 'e' && option[9] == '\0') { /* FloatSize */ return OPTION_FloatSize; } goto unknown; case 'H': switch (option[1]) { case 'a': switch (option[2]) { case 's': switch (option[3]) { case 'C': if (option[4] == 'P' && option[5] == 'P' && option[6] == 'C' && option[7] == 'o' && option[8] == 'm' && option[9] == 'm' && option[10] == 'e' && option[11] == 'n' && option[12] == 't' && option[13] == 's' && option[14] == '\0') { /* HasCPPComments */ return OPTION_HasCPPComments; } goto unknown; case 'M': if (option[4] == 'a' && option[5] == 'c' && option[6] == 'r' && option[7] == 'o' && option[8] == 'V' && option[9] == 'A' && option[10] == 'A' && option[11] == 'R' && option[12] == 'G' && option[13] == 'S' && option[14] == '\0') { /* HasMacroVAARGS */ return OPTION_HasMacroVAARGS; } goto unknown; default: goto unknown; } default: goto unknown; } case 'o': if (option[2] == 's' && option[3] == 't' && option[4] == 'e' && option[5] == 'd' && option[6] == 'C' && option[7] == '\0') { /* HostedC */ return OPTION_HostedC; } goto unknown; default: goto unknown; } case 'I': switch (option[1]) { case 'n': switch (option[2]) { case 'c': if (option[3] == 'l' && option[4] == 'u' && option[5] == 'd' && option[6] == 'e' && option[7] == '\0') { /* Include */ return OPTION_Include; } goto unknown; case 't': if (option[3] == 'S' && option[4] == 'i' && option[5] == 'z' && option[6] == 'e' && option[7] == '\0') { /* IntSize */ return OPTION_IntSize; } goto unknown; default: goto unknown; } default: goto unknown; } case 'K': if (option[1] == 'e' && option[2] == 'y' && option[3] == 'w' && option[4] == 'o' && option[5] == 'r' && option[6] == 'd' && option[7] == 'M' && option[8] == 'a' && option[9] == 'p' && option[10] == '\0') { /* KeywordMap */ return OPTION_KeywordMap; } goto unknown; case 'L': switch (option[1]) { case 'o': switch (option[2]) { case 'n': switch (option[3]) { case 'g': switch (option[4]) { case 'D': if (option[5] == 'o' && option[6] == 'u' && option[7] == 'b' && option[8] == 'l' && option[9] == 'e' && option[10] == 'S' && option[11] == 'i' && option[12] == 'z' && option[13] == 'e' && option[14] == '\0') { /* LongDoubleSize */ return OPTION_LongDoubleSize; } goto unknown; case 'L': if (option[5] == 'o' && option[6] == 'n' && option[7] == 'g' && option[8] == 'S' && option[9] == 'i' && option[10] == 'z' && option[11] == 'e' && option[12] == '\0') { /* LongLongSize */ return OPTION_LongLongSize; } goto unknown; case 'S': if (option[5] == 'i' && option[6] == 'z' && option[7] == 'e' && option[8] == '\0') { /* LongSize */ return OPTION_LongSize; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'O': if (option[1] == 'r' && option[2] == 'd' && option[3] == 'e' && option[4] == 'r' && option[5] == 'M' && option[6] == 'e' && option[7] == 'm' && option[8] == 'b' && option[9] == 'e' && option[10] == 'r' && option[11] == 's' && option[12] == '\0') { /* OrderMembers */ return OPTION_OrderMembers; } goto unknown; case 'P': if (option[1] == 'o' && option[2] == 'i' && option[3] == 'n' && option[4] == 't' && option[5] == 'e' && option[6] == 'r' && option[7] == 'S' && option[8] == 'i' && option[9] == 'z' && option[10] == 'e' && option[11] == '\0') { /* PointerSize */ return OPTION_PointerSize; } goto unknown; case 'S': switch (option[1]) { case 'h': if (option[2] == 'o' && option[3] == 'r' && option[4] == 't' && option[5] == 'S' && option[6] == 'i' && option[7] == 'z' && option[8] == 'e' && option[9] == '\0') { /* ShortSize */ return OPTION_ShortSize; } goto unknown; case 't': if (option[2] == 'd' && option[3] == 'C' && option[4] == 'V' && option[5] == 'e' && option[6] == 'r' && option[7] == 's' && option[8] == 'i' && option[9] == 'o' && option[10] == 'n' && option[11] == '\0') { /* StdCVersion */ return OPTION_StdCVersion; } goto unknown; default: goto unknown; } case 'U': switch (option[1]) { case 'n': switch (option[2]) { case 's': switch (option[3]) { case 'i': switch (option[4]) { case 'g': switch (option[5]) { case 'n': switch (option[6]) { case 'e': switch (option[7]) { case 'd': switch (option[8]) { case 'B': if (option[9] == 'i' && option[10] == 't' && option[11] == 'f' && option[12] == 'i' && option[13] == 'e' && option[14] == 'l' && option[15] == 'd' && option[16] == 's' && option[17] == '\0') { /* UnsignedBitfields */ return OPTION_UnsignedBitfields; } goto unknown; case 'C': if (option[9] == 'h' && option[10] == 'a' && option[11] == 'r' && option[12] == 's' && option[13] == '\0') { /* UnsignedChars */ return OPTION_UnsignedChars; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'W': if (option[1] == 'a' && option[2] == 'r' && option[3] == 'n' && option[4] == 'i' && option[5] == 'n' && option[6] == 'g' && option[7] == 's' && option[8] == '\0') { /* Warnings */ return OPTION_Warnings; } goto unknown; default: goto unknown; } unknown: return INVALID_OPTION; } Convert-Binary-C-0.76/token/t_hookid.c0000644000175000001440000000523011550664635016302 0ustar mhxusersstatic const char *gs_HookIdStr[] = { "pack", "unpack", "pack_ptr", "unpack_ptr" }; static enum HookId get_hook_id(const char *hook) { switch (hook[0]) { case 'p': switch (hook[1]) { case 'a': switch (hook[2]) { case 'c': switch (hook[3]) { case 'k': switch (hook[4]) { case '\0': { /* pack */ return HOOKID_pack; } case '_': if (hook[5] == 'p' && hook[6] == 't' && hook[7] == 'r' && hook[8] == '\0') { /* pack_ptr */ return HOOKID_pack_ptr; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'u': switch (hook[1]) { case 'n': switch (hook[2]) { case 'p': switch (hook[3]) { case 'a': switch (hook[4]) { case 'c': switch (hook[5]) { case 'k': switch (hook[6]) { case '\0': { /* unpack */ return HOOKID_unpack; } case '_': if (hook[7] == 'p' && hook[8] == 't' && hook[9] == 'r' && hook[10] == '\0') { /* unpack_ptr */ return HOOKID_unpack_ptr; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } default: goto unknown; } unknown: return HOOKID_INVALID; } Convert-Binary-C-0.76/token/t_hookid.h0000644000175000001440000000017311550664635016310 0ustar mhxusersenum HookId { HOOKID_pack, HOOKID_unpack, HOOKID_pack_ptr, HOOKID_unpack_ptr, HOOKID_COUNT, HOOKID_INVALID }; Convert-Binary-C-0.76/token/t_ckeytok.c0000644000175000001440000003225611550664635016506 0ustar mhxusersswitch (name[0]) { case 'a': switch (name[1]) { case 's': if (name[2] == 'm' && name[3] == '\0') { /* asm */ static const CKeywordToken ckt = { ASM_TOK, "asm" }; return &ckt; } goto unknown; case 'u': if (name[2] == 't' && name[3] == 'o' && name[4] == '\0') { /* auto */ static const CKeywordToken ckt = { AUTO_TOK, "auto" }; return &ckt; } goto unknown; default: goto unknown; } case 'b': if (name[1] == 'r' && name[2] == 'e' && name[3] == 'a' && name[4] == 'k' && name[5] == '\0') { /* break */ static const CKeywordToken ckt = { BREAK_TOK, "break" }; return &ckt; } goto unknown; case 'c': switch (name[1]) { case 'a': if (name[2] == 's' && name[3] == 'e' && name[4] == '\0') { /* case */ static const CKeywordToken ckt = { CASE_TOK, "case" }; return &ckt; } goto unknown; case 'h': if (name[2] == 'a' && name[3] == 'r' && name[4] == '\0') { /* char */ static const CKeywordToken ckt = { CHAR_TOK, "char" }; return &ckt; } goto unknown; case 'o': switch (name[2]) { case 'n': switch (name[3]) { case 's': if (name[4] == 't' && name[5] == '\0') { /* const */ static const CKeywordToken ckt = { CONST_TOK, "const" }; return &ckt; } goto unknown; case 't': if (name[4] == 'i' && name[5] == 'n' && name[6] == 'u' && name[7] == 'e' && name[8] == '\0') { /* continue */ static const CKeywordToken ckt = { CONTINUE_TOK, "continue" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } case 'd': switch (name[1]) { case 'e': if (name[2] == 'f' && name[3] == 'a' && name[4] == 'u' && name[5] == 'l' && name[6] == 't' && name[7] == '\0') { /* default */ static const CKeywordToken ckt = { DEFAULT_TOK, "default" }; return &ckt; } goto unknown; case 'o': switch (name[2]) { case '\0': { /* do */ static const CKeywordToken ckt = { DO_TOK, "do" }; return &ckt; } case 'u': if (name[3] == 'b' && name[4] == 'l' && name[5] == 'e' && name[6] == '\0') { /* double */ static const CKeywordToken ckt = { DOUBLE_TOK, "double" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 'e': switch (name[1]) { case 'l': if (name[2] == 's' && name[3] == 'e' && name[4] == '\0') { /* else */ static const CKeywordToken ckt = { ELSE_TOK, "else" }; return &ckt; } goto unknown; case 'n': if (name[2] == 'u' && name[3] == 'm' && name[4] == '\0') { /* enum */ static const CKeywordToken ckt = { ENUM_TOK, "enum" }; return &ckt; } goto unknown; case 'x': if (name[2] == 't' && name[3] == 'e' && name[4] == 'r' && name[5] == 'n' && name[6] == '\0') { /* extern */ static const CKeywordToken ckt = { EXTERN_TOK, "extern" }; return &ckt; } goto unknown; default: goto unknown; } case 'f': switch (name[1]) { case 'l': if (name[2] == 'o' && name[3] == 'a' && name[4] == 't' && name[5] == '\0') { /* float */ static const CKeywordToken ckt = { FLOAT_TOK, "float" }; return &ckt; } goto unknown; case 'o': if (name[2] == 'r' && name[3] == '\0') { /* for */ static const CKeywordToken ckt = { FOR_TOK, "for" }; return &ckt; } goto unknown; default: goto unknown; } case 'g': if (name[1] == 'o' && name[2] == 't' && name[3] == 'o' && name[4] == '\0') { /* goto */ static const CKeywordToken ckt = { GOTO_TOK, "goto" }; return &ckt; } goto unknown; case 'i': switch (name[1]) { case 'f': if (name[2] == '\0') { /* if */ static const CKeywordToken ckt = { IF_TOK, "if" }; return &ckt; } goto unknown; case 'n': switch (name[2]) { case 'l': if (name[3] == 'i' && name[4] == 'n' && name[5] == 'e' && name[6] == '\0') { /* inline */ static const CKeywordToken ckt = { INLINE_TOK, "inline" }; return &ckt; } goto unknown; case 't': if (name[3] == '\0') { /* int */ static const CKeywordToken ckt = { INT_TOK, "int" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 'l': if (name[1] == 'o' && name[2] == 'n' && name[3] == 'g' && name[4] == '\0') { /* long */ static const CKeywordToken ckt = { LONG_TOK, "long" }; return &ckt; } goto unknown; case 'r': switch (name[1]) { case 'e': switch (name[2]) { case 'g': if (name[3] == 'i' && name[4] == 's' && name[5] == 't' && name[6] == 'e' && name[7] == 'r' && name[8] == '\0') { /* register */ static const CKeywordToken ckt = { REGISTER_TOK, "register" }; return &ckt; } goto unknown; case 's': if (name[3] == 't' && name[4] == 'r' && name[5] == 'i' && name[6] == 'c' && name[7] == 't' && name[8] == '\0') { /* restrict */ static const CKeywordToken ckt = { RESTRICT_TOK, "restrict" }; return &ckt; } goto unknown; case 't': if (name[3] == 'u' && name[4] == 'r' && name[5] == 'n' && name[6] == '\0') { /* return */ static const CKeywordToken ckt = { RETURN_TOK, "return" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 's': switch (name[1]) { case 'h': if (name[2] == 'o' && name[3] == 'r' && name[4] == 't' && name[5] == '\0') { /* short */ static const CKeywordToken ckt = { SHORT_TOK, "short" }; return &ckt; } goto unknown; case 'i': switch (name[2]) { case 'g': if (name[3] == 'n' && name[4] == 'e' && name[5] == 'd' && name[6] == '\0') { /* signed */ static const CKeywordToken ckt = { SIGNED_TOK, "signed" }; return &ckt; } goto unknown; case 'z': if (name[3] == 'e' && name[4] == 'o' && name[5] == 'f' && name[6] == '\0') { /* sizeof */ static const CKeywordToken ckt = { SIZEOF_TOK, "sizeof" }; return &ckt; } goto unknown; default: goto unknown; } case 't': switch (name[2]) { case 'a': if (name[3] == 't' && name[4] == 'i' && name[5] == 'c' && name[6] == '\0') { /* static */ static const CKeywordToken ckt = { STATIC_TOK, "static" }; return &ckt; } goto unknown; case 'r': if (name[3] == 'u' && name[4] == 'c' && name[5] == 't' && name[6] == '\0') { /* struct */ static const CKeywordToken ckt = { STRUCT_TOK, "struct" }; return &ckt; } goto unknown; default: goto unknown; } case 'w': if (name[2] == 'i' && name[3] == 't' && name[4] == 'c' && name[5] == 'h' && name[6] == '\0') { /* switch */ static const CKeywordToken ckt = { SWITCH_TOK, "switch" }; return &ckt; } goto unknown; default: goto unknown; } case 't': if (name[1] == 'y' && name[2] == 'p' && name[3] == 'e' && name[4] == 'd' && name[5] == 'e' && name[6] == 'f' && name[7] == '\0') { /* typedef */ static const CKeywordToken ckt = { TYPEDEF_TOK, "typedef" }; return &ckt; } goto unknown; case 'u': switch (name[1]) { case 'n': switch (name[2]) { case 'i': if (name[3] == 'o' && name[4] == 'n' && name[5] == '\0') { /* union */ static const CKeywordToken ckt = { UNION_TOK, "union" }; return &ckt; } goto unknown; case 's': if (name[3] == 'i' && name[4] == 'g' && name[5] == 'n' && name[6] == 'e' && name[7] == 'd' && name[8] == '\0') { /* unsigned */ static const CKeywordToken ckt = { UNSIGNED_TOK, "unsigned" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 'v': switch (name[1]) { case 'o': switch (name[2]) { case 'i': if (name[3] == 'd' && name[4] == '\0') { /* void */ static const CKeywordToken ckt = { VOID_TOK, "void" }; return &ckt; } goto unknown; case 'l': if (name[3] == 'a' && name[4] == 't' && name[5] == 'i' && name[6] == 'l' && name[7] == 'e' && name[8] == '\0') { /* volatile */ static const CKeywordToken ckt = { VOLATILE_TOK, "volatile" }; return &ckt; } goto unknown; default: goto unknown; } default: goto unknown; } case 'w': if (name[1] == 'h' && name[2] == 'i' && name[3] == 'l' && name[4] == 'e' && name[5] == '\0') { /* while */ static const CKeywordToken ckt = { WHILE_TOK, "while" }; return &ckt; } goto unknown; default: goto unknown; } Convert-Binary-C-0.76/token/t_pragma.c0000644000175000001440000000172711550664635016303 0ustar mhxusersswitch (tokstr[0]) { case 'p': switch (tokstr[1]) { case 'a': if (tokstr[2] == 'c' && tokstr[3] == 'k' && tokstr[4] == PRAGMA_TOKEN_END) { /* pack */ toklen = 4; tokval = PACK_TOK; goto success; } goto unknown; case 'o': if (tokstr[2] == 'p' && tokstr[3] == PRAGMA_TOKEN_END) { /* pop */ toklen = 3; tokval = POP_TOK; goto success; } goto unknown; case 'u': if (tokstr[2] == 's' && tokstr[3] == 'h' && tokstr[4] == PRAGMA_TOKEN_END) { /* push */ toklen = 4; tokval = PUSH_TOK; goto success; } goto unknown; default: goto unknown; } default: goto unknown; } Convert-Binary-C-0.76/token/t_basic.c0000644000175000001440000000441411550664635016111 0ustar mhxusersswitch (c[0]) { case 'c': if (c[1] == 'h' && c[2] == 'a' && c[3] == 'r' && c[4] == *name) { /* char */ tflags |= T_CHAR; goto success; } goto unknown; case 'd': if (c[1] == 'o' && c[2] == 'u' && c[3] == 'b' && c[4] == 'l' && c[5] == 'e' && c[6] == *name) { /* double */ tflags |= T_DOUBLE; goto success; } goto unknown; case 'f': if (c[1] == 'l' && c[2] == 'o' && c[3] == 'a' && c[4] == 't' && c[5] == *name) { /* float */ tflags |= T_FLOAT; goto success; } goto unknown; case 'i': if (c[1] == 'n' && c[2] == 't' && c[3] == *name) { /* int */ tflags |= T_INT; goto success; } goto unknown; case 'l': if (c[1] == 'o' && c[2] == 'n' && c[3] == 'g' && c[4] == *name) { /* long */ tflags |= tflags & T_LONG ? T_LONGLONG : T_LONG; goto success; } goto unknown; case 's': switch (c[1]) { case 'h': if (c[2] == 'o' && c[3] == 'r' && c[4] == 't' && c[5] == *name) { /* short */ tflags |= T_SHORT; goto success; } goto unknown; case 'i': if (c[2] == 'g' && c[3] == 'n' && c[4] == 'e' && c[5] == 'd' && c[6] == *name) { /* signed */ tflags |= T_SIGNED; goto success; } goto unknown; default: goto unknown; } case 'u': if (c[1] == 'n' && c[2] == 's' && c[3] == 'i' && c[4] == 'g' && c[5] == 'n' && c[6] == 'e' && c[7] == 'd' && c[8] == *name) { /* unsigned */ tflags |= T_UNSIGNED; goto success; } goto unknown; default: goto unknown; } Convert-Binary-C-0.76/token/t_keywords.c0000644000175000001440000001355311550664635016703 0ustar mhxusersswitch (str[0]) { case 'a': switch (str[1]) { case 's': if (str[2] == 'm' && str[3] == '\0') { /* asm */ keywords &= ~HAS_KEYWORD_ASM; goto success; } goto unknown; case 'u': if (str[2] == 't' && str[3] == 'o' && str[4] == '\0') { /* auto */ keywords &= ~HAS_KEYWORD_AUTO; goto success; } goto unknown; default: goto unknown; } case 'c': if (str[1] == 'o' && str[2] == 'n' && str[3] == 's' && str[4] == 't' && str[5] == '\0') { /* const */ keywords &= ~HAS_KEYWORD_CONST; goto success; } goto unknown; case 'd': if (str[1] == 'o' && str[2] == 'u' && str[3] == 'b' && str[4] == 'l' && str[5] == 'e' && str[6] == '\0') { /* double */ keywords &= ~HAS_KEYWORD_DOUBLE; goto success; } goto unknown; case 'e': switch (str[1]) { case 'n': if (str[2] == 'u' && str[3] == 'm' && str[4] == '\0') { /* enum */ keywords &= ~HAS_KEYWORD_ENUM; goto success; } goto unknown; case 'x': if (str[2] == 't' && str[3] == 'e' && str[4] == 'r' && str[5] == 'n' && str[6] == '\0') { /* extern */ keywords &= ~HAS_KEYWORD_EXTERN; goto success; } goto unknown; default: goto unknown; } case 'f': if (str[1] == 'l' && str[2] == 'o' && str[3] == 'a' && str[4] == 't' && str[5] == '\0') { /* float */ keywords &= ~HAS_KEYWORD_FLOAT; goto success; } goto unknown; case 'i': if (str[1] == 'n' && str[2] == 'l' && str[3] == 'i' && str[4] == 'n' && str[5] == 'e' && str[6] == '\0') { /* inline */ keywords &= ~HAS_KEYWORD_INLINE; goto success; } goto unknown; case 'l': if (str[1] == 'o' && str[2] == 'n' && str[3] == 'g' && str[4] == '\0') { /* long */ keywords &= ~HAS_KEYWORD_LONG; goto success; } goto unknown; case 'r': switch (str[1]) { case 'e': switch (str[2]) { case 'g': if (str[3] == 'i' && str[4] == 's' && str[5] == 't' && str[6] == 'e' && str[7] == 'r' && str[8] == '\0') { /* register */ keywords &= ~HAS_KEYWORD_REGISTER; goto success; } goto unknown; case 's': if (str[3] == 't' && str[4] == 'r' && str[5] == 'i' && str[6] == 'c' && str[7] == 't' && str[8] == '\0') { /* restrict */ keywords &= ~HAS_KEYWORD_RESTRICT; goto success; } goto unknown; default: goto unknown; } default: goto unknown; } case 's': switch (str[1]) { case 'h': if (str[2] == 'o' && str[3] == 'r' && str[4] == 't' && str[5] == '\0') { /* short */ keywords &= ~HAS_KEYWORD_SHORT; goto success; } goto unknown; case 'i': if (str[2] == 'g' && str[3] == 'n' && str[4] == 'e' && str[5] == 'd' && str[6] == '\0') { /* signed */ keywords &= ~HAS_KEYWORD_SIGNED; goto success; } goto unknown; case 't': if (str[2] == 'a' && str[3] == 't' && str[4] == 'i' && str[5] == 'c' && str[6] == '\0') { /* static */ keywords &= ~HAS_KEYWORD_STATIC; goto success; } goto unknown; default: goto unknown; } case 'u': if (str[1] == 'n' && str[2] == 's' && str[3] == 'i' && str[4] == 'g' && str[5] == 'n' && str[6] == 'e' && str[7] == 'd' && str[8] == '\0') { /* unsigned */ keywords &= ~HAS_KEYWORD_UNSIGNED; goto success; } goto unknown; case 'v': switch (str[1]) { case 'o': switch (str[2]) { case 'i': if (str[3] == 'd' && str[4] == '\0') { /* void */ keywords &= ~HAS_KEYWORD_VOID; goto success; } goto unknown; case 'l': if (str[3] == 'a' && str[4] == 't' && str[5] == 'i' && str[6] == 'l' && str[7] == 'e' && str[8] == '\0') { /* volatile */ keywords &= ~HAS_KEYWORD_VOLATILE; goto success; } goto unknown; default: goto unknown; } default: goto unknown; } default: goto unknown; } Convert-Binary-C-0.76/token/tag.pl0000644000175000001440000001415411550664631015447 0ustar mhxusers################################################################################ # # PROGRAM: tag.pl # ################################################################################ # # DESCRIPTION: Generate code for CBC tags # ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:29 +0200 $ # $Revision: 22 $ # $Source: /token/tag.pl $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Devel::Tokenizer::C; my $TAG_PRE = 'CBC_TAG'; my %tags = ( Hooks => { vtable => 1, }, Format => { strval => [qw( String Binary )], verify => 1, }, ByteOrder => { strval => [qw( BigEndian LittleEndian )], verify => 1, }, Dimension => { vtable => 1, verify => 1, }, ); my @tags = sort keys %tags; sub tag2def { my $tag = shift; $tag =~ s/([A-Z])/_$1/g; return "\U$tag\E"; } my $file = shift; if ($file =~ /\.h$/i) { open OUT, ">$file" or die "$file: $!"; my $s_tags = join ",\n", map { " $TAG_PRE" . tag2def($_) } @tags; print OUT <new(TokenFunc => sub { "return $TAG_PRE" . tag2def($t.$_[0]) . ";\n" }, TokenString => 't') ->add_tokens(@{$tags{$t}{strval}}) ->generate; $switch =~ s/^/ /gm; push @tokenizer, <flags = $t; return TSRV_UPDATE; } } return TSRV_DELETE; } static TAG_GET($t) { static const char *val[] = { $valstr }; if (tag->flags >= sizeof(val) / sizeof(val[0])) fatal("Invalid value (%d) for $t tag", tag->flags); return newSVpv(val[tag->flags], 0); } ENDC push @proto, "static enum CbcTag$t GetTag$t(const char *t);"; } } my $s_tags = join ",\n", map { qq( "$_") } @tags; my $s_tagmethods = join ",\n", @tagmeth; my $s_vtables = join "\n", @vtable; my $s_protos = join "\n", @proto; my $s_tokenizers = join "\n", @tokenizer; my $s_methods = join "\n", @method; my $tag_switch = Devel::Tokenizer::C->new(TokenFunc => sub { "return $TAG_PRE" . tag2def($_[0]) . ";\n" }, TokenString => 'tag') ->add_tokens(@tags)->generate; $tag_switch =~ s/^/ /gm; open OUT, ">$file" or die "$file: $!"; print OUT <>" }; $s_vtables /********************************************************************** * * Tag Method Table * **********************************************************************/ static const struct tag_tbl_ent { TagSetMethod set; TagGetMethod get; TagVerifyMethod verify; CtTagVtable *vtbl; } gs_TagTbl[] = { $s_tagmethods, {NULL, NULL, NULL, NULL} }; /********************************************************************** * * Main Tag Tokenizer * **********************************************************************/ static enum CbcTagId get_tag_id(const char *tag) { $tag_switch unknown: return CBC_INVALID_TAG; } $s_tokenizers $s_methods END close OUT; } Convert-Binary-C-0.76/token/pragma.pl0000644000175000001440000000232111550664631016134 0ustar mhxusers################################################################################ # # PROGRAM: pragma.pl # ################################################################################ # # DESCRIPTION: Generate tokenizer code for pragma parser # ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:29 +0200 $ # $Revision: 18 $ # $Source: /token/pragma.pl $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ use Devel::Tokenizer::C; $t = new Devel::Tokenizer::C TokenFunc => \&tok_code, TokenEnd => 'PRAGMA_TOKEN_END'; $t->add_tokens( qw( pack push pop )); open OUT, ">$ARGV[0]" or die $!; print OUT $t->generate; close OUT; sub tok_code { my $token = shift; my $toklen = length $token; return <$file" or die "$file: $!"; my $hooks = join ",\n", map { " HOOKID_$_" } @hooks; print OUT <new(TokenFunc => sub { "return HOOKID_$_[0];\n" }, TokenString => 'hook') ->add_tokens(@hooks)->generate; open OUT, ">$file" or die "$file: $!"; my $s_hookids = join ",\n", map { qq( "$_") } @hooks; print OUT < { option => 0 }, MaxAlign => { option => 0 }, Align => { option => 0 }, ByteOrder => { option => 0, choice => [qw( BigEndian LittleEndian )] }, ); my %engines = ( Generic => { @mandatory, # FillDirection => { option => 1, member => 'direction', choice => [qw( Left Right )] }, # TypeMatters => { option => 1 }, ??? }, Microsoft => { @mandatory, }, Simple => { @mandatory, # FillDirection => { option => 1, member => 'direction', choice => [qw( Left Right )] }, BlockSize => { option => 1 }, }, ); my @properties = do { my %seen; grep !$seen{$_}++, map keys %$_, values %engines }; my @values = do { my %seen; grep !$seen{$_}++, map { map { exists $_->{choice} ? @{$_->{choice}} : () } values %$_ } values %engines }; my $file = shift; my $fh = IO::File->new(">$file") or die "$file: $!\n"; sub to_name { my($pre, $s) = @_; $s =~ s/([A-Z])(?=[a-z])/_$1/g; $s = "_$s" unless $s =~ /^_/; return $pre . uc $s; } sub to_member { my $s = shift; $s =~ s/([A-Z])/_$1/g; $s =~ s/^_//; return lc $s; } if ($file =~ /\.h$/) { my $blp = join "\n", map " $_,", map { to_name('BLP', $_) } @properties; my $blpv = join "\n", map " $_,", map { to_name('BLPV', $_) } @values; my $guard = uc $file; $guard =~ s/\W+/_/g; $fh->print(<{$opt}; my $name = to_name('BLP', $opt); my $type = exists $os->{choice} ? 'str' : 'int'; my $uctype = uc $type; my $member = exists $os->{member} ? $os->{member} : to_member($opt); if ($os->{option}) { if (exists $os->{choice}) { $m_option .= " static const BLPropValStr $opt\[] = {\n " . join(", ", map { to_name('BLPV', $_) } @{$os->{choice}}) . "\n };\n\n"; push @optspec, "{ $name, BLPVT_$uctype, sizeof $opt / sizeof $opt\[0], &$opt\[0] }"; } else { push @optspec, "{ $name, BLPVT_$uctype, 0, 0 }"; } } $m_get .= <type = BLPVT_$uctype; value->v.v_$type = self->$member; break; END $m_set .= <{readonly}; case $name: assert(value->type == BLPVT_$uctype); self->$member = value->v.v_$type; break; END } if (@optspec) { my $options = join ",\n", map " $_", @optspec; $m_option .= <print($m_get . $m_set . $m_option); } my $blp_switch = Devel::Tokenizer::C->new(TokenFunc => sub { "return ".to_name('BLP', $_[0]).";\n" }, TokenString => 'property') ->add_tokens(@properties)->generate(Indent => ' '); my $blpv_switch = Devel::Tokenizer::C->new(TokenFunc => sub { "return ".to_name('BLPV', $_[0]).";\n" }, TokenString => 'propval') ->add_tokens(@values)->generate(Indent => ' '); my $blp_strings = join ",\n", map { qq[ "$_"] } @properties; my $blpv_strings = join ",\n", map { qq[ "$_"] } @values; $fh->print(<type = BLPVT_INT; value->v.v_int = self->align; break; case BLP_BYTE_ORDER: value->type = BLPVT_STR; value->v.v_str = self->byte_order; break; case BLP_MAX_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->max_align; break; case BLP_OFFSET: value->type = BLPVT_INT; value->v.v_int = self->offset; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static enum BLError Generic_set(aSELF, BLProperty prop, const BLPropValue *value) { BL_SELF(Generic); switch (prop) { case BLP_ALIGN: assert(value->type == BLPVT_INT); self->align = value->v.v_int; break; case BLP_BYTE_ORDER: assert(value->type == BLPVT_STR); self->byte_order = value->v.v_str; break; case BLP_MAX_ALIGN: assert(value->type == BLPVT_INT); self->max_align = value->v.v_int; break; case BLP_OFFSET: assert(value->type == BLPVT_INT); self->offset = value->v.v_int; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static const BLOption *Generic_options(aSELF, int *count) { assert(count != NULL); *count = 0; return NULL; } static enum BLError Microsoft_get(aSELF, BLProperty prop, BLPropValue *value) { BL_SELF(Microsoft); switch (prop) { case BLP_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->align; break; case BLP_BYTE_ORDER: value->type = BLPVT_STR; value->v.v_str = self->byte_order; break; case BLP_MAX_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->max_align; break; case BLP_OFFSET: value->type = BLPVT_INT; value->v.v_int = self->offset; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static enum BLError Microsoft_set(aSELF, BLProperty prop, const BLPropValue *value) { BL_SELF(Microsoft); switch (prop) { case BLP_ALIGN: assert(value->type == BLPVT_INT); self->align = value->v.v_int; break; case BLP_BYTE_ORDER: assert(value->type == BLPVT_STR); self->byte_order = value->v.v_str; break; case BLP_MAX_ALIGN: assert(value->type == BLPVT_INT); self->max_align = value->v.v_int; break; case BLP_OFFSET: assert(value->type == BLPVT_INT); self->offset = value->v.v_int; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static const BLOption *Microsoft_options(aSELF, int *count) { assert(count != NULL); *count = 0; return NULL; } static enum BLError Simple_get(aSELF, BLProperty prop, BLPropValue *value) { BL_SELF(Simple); switch (prop) { case BLP_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->align; break; case BLP_BLOCK_SIZE: value->type = BLPVT_INT; value->v.v_int = self->block_size; break; case BLP_BYTE_ORDER: value->type = BLPVT_STR; value->v.v_str = self->byte_order; break; case BLP_MAX_ALIGN: value->type = BLPVT_INT; value->v.v_int = self->max_align; break; case BLP_OFFSET: value->type = BLPVT_INT; value->v.v_int = self->offset; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static enum BLError Simple_set(aSELF, BLProperty prop, const BLPropValue *value) { BL_SELF(Simple); switch (prop) { case BLP_ALIGN: assert(value->type == BLPVT_INT); self->align = value->v.v_int; break; case BLP_BLOCK_SIZE: assert(value->type == BLPVT_INT); self->block_size = value->v.v_int; break; case BLP_BYTE_ORDER: assert(value->type == BLPVT_STR); self->byte_order = value->v.v_str; break; case BLP_MAX_ALIGN: assert(value->type == BLPVT_INT); self->max_align = value->v.v_int; break; case BLP_OFFSET: assert(value->type == BLPVT_INT); self->offset = value->v.v_int; break; default: return BLE_INVALID_PROPERTY; } return BLE_NO_ERROR; } static const BLOption *Simple_options(aSELF, int *count) { static const BLOption options[] = { { BLP_BLOCK_SIZE, BLPVT_INT, 0, 0 } }; assert(count != NULL); *count = sizeof options / sizeof options[0]; return &options[0]; } BLProperty bl_property(const char *property) { switch (property[0]) { case 'A': if (property[1] == 'l' && property[2] == 'i' && property[3] == 'g' && property[4] == 'n' && property[5] == '\0') { /* Align */ return BLP_ALIGN; } goto unknown; case 'B': switch (property[1]) { case 'l': if (property[2] == 'o' && property[3] == 'c' && property[4] == 'k' && property[5] == 'S' && property[6] == 'i' && property[7] == 'z' && property[8] == 'e' && property[9] == '\0') { /* BlockSize */ return BLP_BLOCK_SIZE; } goto unknown; case 'y': if (property[2] == 't' && property[3] == 'e' && property[4] == 'O' && property[5] == 'r' && property[6] == 'd' && property[7] == 'e' && property[8] == 'r' && property[9] == '\0') { /* ByteOrder */ return BLP_BYTE_ORDER; } goto unknown; default: goto unknown; } case 'M': if (property[1] == 'a' && property[2] == 'x' && property[3] == 'A' && property[4] == 'l' && property[5] == 'i' && property[6] == 'g' && property[7] == 'n' && property[8] == '\0') { /* MaxAlign */ return BLP_MAX_ALIGN; } goto unknown; case 'O': if (property[1] == 'f' && property[2] == 'f' && property[3] == 's' && property[4] == 'e' && property[5] == 't' && property[6] == '\0') { /* Offset */ return BLP_OFFSET; } goto unknown; default: goto unknown; } unknown: return INVALID_BLPROPERTY; } BLPropValStr bl_propval(const char *propval) { switch (propval[0]) { case 'B': if (propval[1] == 'i' && propval[2] == 'g' && propval[3] == 'E' && propval[4] == 'n' && propval[5] == 'd' && propval[6] == 'i' && propval[7] == 'a' && propval[8] == 'n' && propval[9] == '\0') { /* BigEndian */ return BLPV_BIG_ENDIAN; } goto unknown; case 'L': if (propval[1] == 'i' && propval[2] == 't' && propval[3] == 't' && propval[4] == 'l' && propval[5] == 'e' && propval[6] == 'E' && propval[7] == 'n' && propval[8] == 'd' && propval[9] == 'i' && propval[10] == 'a' && propval[11] == 'n' && propval[12] == '\0') { /* LittleEndian */ return BLPV_LITTLE_ENDIAN; } goto unknown; default: goto unknown; } unknown: return INVALID_BLPROPVAL; } const char *bl_property_string(BLProperty property) { static const char *properties[] = { "Align", "Offset", "ByteOrder", "MaxAlign", "BlockSize" }; if (property < sizeof properties / sizeof properties[0]) return properties[property]; return NULL; } const char *bl_propval_string(BLPropValStr propval) { static const char *propvalues[] = { "BigEndian", "LittleEndian" }; if (propval < sizeof propvalues / sizeof propvalues[0]) return propvalues[propval]; return NULL; } Convert-Binary-C-0.76/token/t_blproperty.h0000644000175000001440000000044411550664635017236 0ustar mhxusers#ifndef _TOKEN_T_BLPROPERTY_H #define _TOKEN_T_BLPROPERTY_H typedef enum { BLP_ALIGN, BLP_OFFSET, BLP_BYTE_ORDER, BLP_MAX_ALIGN, BLP_BLOCK_SIZE, INVALID_BLPROPERTY } BLProperty; typedef enum { BLPV_BIG_ENDIAN, BLPV_LITTLE_ENDIAN, INVALID_BLPROPVAL } BLPropValStr; #endif Convert-Binary-C-0.76/xsubs/0000755000175000001440000000000011550665107014355 5ustar mhxusersConvert-Binary-C-0.76/xsubs/initializer.xs0000644000175000001440000000245311550664633017263 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:32 +0200 $ # $Revision: 8 $ # $Source: /xsubs/initializer.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: initializer # # WRITTEN BY: Marcus Holland-Moritz ON: Jun 2003 # CHANGED BY: ON: # ################################################################################ SV * CBC::initializer(type, init = &PL_sv_undef) const char *type SV *init PREINIT: CBC_METHOD(initializer); MemberInfo mi; CODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; if (!get_member_info(aTHX_ THIS, type, &mi, CBC_GMI_NO_CALC)) Perl_croak(aTHX_ "Cannot find '%s'", type); SvGETMAGIC(init); RETVAL = get_initializer_string(aTHX_ THIS, &mi, init, type); OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/native.xs0000644000175000001440000000314411550664633016224 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:33 +0200 $ # $Revision: 9 $ # $Source: /xsubs/native.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # FUNCTION: native # # WRITTEN BY: Marcus Holland-Moritz ON: Aug 2004 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Get property of the native platform. # ################################################################################ SV * native(...) PREINIT: CBC_METHOD(native); int method_call; CODE: method_call = items > 0 && sv_isobject(ST(0)); if (items > (method_call ? 2 : 1)) Perl_croak(aTHX_ "Usage: Convert::Binary::C::native(property)"); CHECK_VOID_CONTEXT; if (items == (method_call ? 1 : 0)) { RETVAL = get_native_property(aTHX_ NULL); } else { const char *property = (const char *)SvPV_nolen(ST(items-1)); RETVAL = get_native_property(aTHX_ property); if (RETVAL == NULL) Perl_croak(aTHX_ "Invalid property '%s'", property); } OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/clone.xs0000644000175000001440000000222511550664633016035 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:31 +0200 $ # $Revision: 6 $ # $Source: /xsubs/clone.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: clone # # WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 # CHANGED BY: ON: # ################################################################################ void CBC::clone() PREINIT: CBC_METHOD(clone); CBC *clone; const char *class; PPCODE: CT_DEBUG_METHOD; CHECK_VOID_CONTEXT; class = HvNAME(SvSTASH(SvRV(ST(0)))); clone = cbc_clone(aTHX_ THIS); ST(0) = sv_2mortal(cbc_bless(aTHX_ clone, class)); XSRETURN(1); Convert-Binary-C-0.76/xsubs/offsetof.xs0000644000175000001440000000323611550664634016554 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:33 +0200 $ # $Revision: 14 $ # $Source: /xsubs/offsetof.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: offsetof # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ SV * CBC::offsetof(type, member) const char *type const char *member PREINIT: CBC_METHOD(offsetof); MemberInfo mi, mi2; const char *m = member; CODE: CT_DEBUG_METHOD2("'%s', '%s'", type, member); CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; while (isSPACE(*m)) m++; if (*m == '\0') WARN((aTHX_ "Empty string passed as member expression")); NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); (void) get_member(aTHX_ &mi, member, &mi2, CBC_GM_ACCEPT_DOTLESS_MEMBER); if (mi2.pDecl && mi2.pDecl->bitfield_flag) Perl_croak(aTHX_ "Cannot use %s on bitfields", method); if (mi.flags) WARN_FLAGS(type, mi.flags); RETVAL = newSViv(mi2.offset); OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/compound.xs0000644000175000001440000001122711550664633016563 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:31 +0200 $ # $Revision: 12 $ # $Source: /xsubs/compound.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: compound_names / struct_names / union_names # # WRITTEN BY: Marcus Holland-Moritz ON: Aug 2002 # CHANGED BY: ON: # ################################################################################ void CBC::compound_names() ALIAS: struct_names = 1 union_names = 2 PREINIT: CBC_METHOD_VAR; ListIterator li; Struct *pStruct; int count = 0; U32 context; u_32 mask; PPCODE: switch (ix) { case 1: /* struct_names */ CBC_METHOD_SET("struct_names"); mask = T_STRUCT; break; case 2: /* union_names */ CBC_METHOD_SET("union_names"); mask = T_UNION; break; default: /* compound_names */ CBC_METHOD_SET("compound_names"); mask = T_STRUCT | T_UNION; break; } CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; LL_foreach(pStruct, li, THIS->cpi.structs) if (pStruct->identifier[0] && pStruct->declarations && pStruct->tflags & mask) { if (context == G_ARRAY) XPUSHs(sv_2mortal(newSVpv(pStruct->identifier, 0))); count++; } if (context == G_ARRAY) XSRETURN(count); else XSRETURN_IV(count); ################################################################################ # # METHOD: compound / struct / union # # WRITTEN BY: Marcus Holland-Moritz ON: Aug 2002 # CHANGED BY: ON: # ################################################################################ void CBC::compound(...) ALIAS: struct = 1 union = 2 PREINIT: CBC_METHOD_VAR; Struct *pStruct; U32 context; u_32 mask; PPCODE: switch(ix) { case 1: /* struct */ CBC_METHOD_SET("struct"); mask = T_STRUCT; break; case 2: /* union */ CBC_METHOD_SET("union"); mask = T_UNION; break; default: /* compound */ CBC_METHOD_SET("compound"); mask = T_STRUCT | T_UNION; break; } CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; if (context == G_SCALAR && items != 2) { if (items > 1) XSRETURN_IV(items-1); else if (mask == (T_STRUCT|T_UNION)) XSRETURN_IV(LL_count(THIS->cpi.structs)); else { ListIterator li; int count = 0; LL_foreach(pStruct, li, THIS->cpi.structs) if (pStruct->tflags & mask) count++; XSRETURN_IV(count); } } NEED_PARSE_DATA; if (items > 1) { int i; for (i = 1; i < items; i++) { const char *name; u_32 limit = mask; name = SvPV_nolen(ST(i)); /* skip optional union/struct */ if(mask & T_UNION && name[0] == 'u' && name[1] == 'n' && name[2] == 'i' && name[3] == 'o' && name[4] == 'n' && isSPACE(name[5])) { name += 6; limit = T_UNION; } else if(mask & T_STRUCT && name[0] == 's' && name[1] == 't' && name[2] == 'r' && name[3] == 'u' && name[4] == 'c' && name[5] == 't' && isSPACE(name[6])) { name += 7; limit = T_STRUCT; } while (isSPACE(*name)) name++; pStruct = HT_get(THIS->cpi.htStructs, name, 0, 0); if (pStruct && pStruct->tflags & limit) PUSHs(sv_2mortal(get_struct_spec_def(aTHX_ &THIS->cfg, pStruct))); else PUSHs(&PL_sv_undef); } XSRETURN(items-1); } else { ListIterator li; int count = 0; LL_foreach(pStruct, li, THIS->cpi.structs) if (pStruct->tflags & mask) { XPUSHs(sv_2mortal(get_struct_spec_def(aTHX_ &THIS->cfg, pStruct))); count++; } XSRETURN(count); } Convert-Binary-C-0.76/xsubs/macro.xs0000644000175000001440000000552111550664633016040 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:33 +0200 $ # $Revision: 6 $ # $Source: /xsubs/macro.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: macro_names # # WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 # CHANGED BY: ON: # ################################################################################ void CBC::macro_names() PREINIT: CBC_METHOD(macro_names); PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; if (GIMME_V == G_ARRAY) { LinkedList ll = macros_get_names(aTHX_ &THIS->cpi, NULL); int count = LL_count(ll); SV *sv; EXTEND(SP, count); while ((sv = LL_pop(ll)) != NULL) PUSHs(sv_2mortal(sv)); assert(LL_count(ll) == 0); LL_delete(ll); XSRETURN(count); } else { size_t count; (void) macros_get_names(aTHX_ &THIS->cpi, &count); XSRETURN_IV((int)count); } ################################################################################ # # METHOD: macro # # WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 # CHANGED BY: ON: # ################################################################################ void CBC::macro(...) PREINIT: CBC_METHOD(macro); PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; if (GIMME_V == G_SCALAR && items != 2) { if (items > 1) { XSRETURN_IV(items-1); } else { size_t count; (void) macros_get_names(aTHX_ &THIS->cpi, &count); XSRETURN_IV((int)count); } } if (items > 1) { int i; for (i = 1; i < items; i++) { const char *name = SvPV_nolen(ST(i)); size_t len; char *def = macro_get_def(&THIS->cpi, name, &len); if (def) { PUSHs(sv_2mortal(newSVpvn(def, len))); macro_free_def(def); } else PUSHs(&PL_sv_undef); } XSRETURN(items-1); } else { LinkedList ll = macros_get_definitions(aTHX_ &THIS->cpi); int count = LL_count(ll); SV *sv; EXTEND(SP, count); while ((sv = LL_pop(ll)) != NULL) PUSHs(sv_2mortal(sv)); assert(LL_count(ll) == 0); LL_delete(ll); XSRETURN(count); } Convert-Binary-C-0.76/xsubs/configure.xs0000644000175000001440000000400411550664633016713 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:32 +0200 $ # $Revision: 15 $ # $Source: /xsubs/configure.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: configure # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ SV * CBC::configure(...) PREINIT: CBC_METHOD(configure); CODE: CT_DEBUG_METHOD; if (items <= 2 && GIMME_V == G_VOID) { WARN_VOID_CONTEXT; XSRETURN_EMPTY; } else if (items == 1) RETVAL = get_configuration(aTHX_ THIS); else if (items == 2) handle_option(aTHX_ THIS, ST(1), NULL, &RETVAL, NULL); else if (items % 2) { int i, changes = 0, layout = 0, preproc = 0; HandleOptionResult res; for (i = 1; i < items; i += 2) { handle_option(aTHX_ THIS, ST(i), ST(i+1), NULL, &res); if (res.option_modified) changes = 1; if (res.impacts_layout) layout = 1; if (res.impacts_preproc) preproc = 1; } if (changes) { if (layout) { basic_types_reset(THIS->basic); if (THIS->cpi.available && THIS->cpi.ready) reset_parse_info(&THIS->cpi); } if (preproc) { reset_preprocessor(&THIS->cpi); } } XSRETURN(1); } else Perl_croak(aTHX_ "Invalid number of arguments to %s", method); OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/enum.xs0000644000175000001440000000570411550664633015706 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:32 +0200 $ # $Revision: 12 $ # $Source: /xsubs/enum.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: enum_names # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::enum_names() PREINIT: CBC_METHOD(enum_names); ListIterator li; EnumSpecifier *pEnumSpec; int count = 0; U32 context; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; LL_foreach(pEnumSpec, li, THIS->cpi.enums) if (pEnumSpec->identifier[0] && pEnumSpec->enumerators) { if (context == G_ARRAY) XPUSHs(sv_2mortal(newSVpv(pEnumSpec->identifier, 0))); count++; } if (context == G_ARRAY) XSRETURN(count); else XSRETURN_IV(count); ################################################################################ # # METHOD: enum # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::enum(...) PREINIT: CBC_METHOD(enum); EnumSpecifier *pEnumSpec; U32 context; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; if (context == G_SCALAR && items != 2) XSRETURN_IV(items > 1 ? items-1 : LL_count(THIS->cpi.enums)); if (items > 1) { int i; for (i = 1; i < items; i++) { const char *name = SvPV_nolen(ST(i)); /* skip optional enum */ if (name[0] == 'e' && name[1] == 'n' && name[2] == 'u' && name[3] == 'm' && isSPACE(name[4])) name += 5; while (isSPACE(*name)) name++; pEnumSpec = HT_get(THIS->cpi.htEnums, name, 0, 0); if (pEnumSpec) PUSHs(sv_2mortal(get_enum_spec_def(aTHX_ &THIS->cfg, pEnumSpec))); else PUSHs(&PL_sv_undef); } XSRETURN(items-1); } else { ListIterator li; int size = LL_count(THIS->cpi.enums); if (size <= 0) XSRETURN_EMPTY; EXTEND(SP, size); LL_foreach(pEnumSpec, li, THIS->cpi.enums) PUSHs(sv_2mortal(get_enum_spec_def(aTHX_ &THIS->cfg, pEnumSpec))); XSRETURN(size); } Convert-Binary-C-0.76/xsubs/typeof.xs0000644000175000001440000000231411550664634016243 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:34 +0200 $ # $Revision: 9 $ # $Source: /xsubs/typeof.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: typeof # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2003 # CHANGED BY: ON: # ################################################################################ SV * CBC::typeof(type) const char *type PREINIT: CBC_METHOD(typeof); MemberInfo mi; CODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; if (!get_member_info(aTHX_ THIS, type, &mi, CBC_GMI_NO_CALC)) Perl_croak(aTHX_ "Cannot find '%s'", type); RETVAL = get_type_name_string(aTHX_ &mi); OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/dependencies.xs0000644000175000001440000000402111550664633017357 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:32 +0200 $ # $Revision: 7 $ # $Source: /xsubs/dependencies.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: dependencies # # WRITTEN BY: Marcus Holland-Moritz ON: Sep 2002 # CHANGED BY: ON: # ################################################################################ void CBC::dependencies() PREINIT: CBC_METHOD(dependencies); HashIterator hi; const char *pKey; FileInfo *pFI; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; if (GIMME_V == G_SCALAR) { HV *hv = newHV(); HT_foreach(pKey, pFI, hi, THIS->cpi.htFiles) { if (pFI && pFI->valid) { SV *attr; HV *hattr = newHV(); HV_STORE_CONST(hattr, "size", newSVuv(pFI->size)); HV_STORE_CONST(hattr, "mtime", newSViv(pFI->modify_time)); HV_STORE_CONST(hattr, "ctime", newSViv(pFI->change_time)); attr = newRV_noinc((SV *) hattr); if (hv_store(hv, pFI->name, strlen(pFI->name), attr, 0) == NULL) SvREFCNT_dec(attr); } } XPUSHs(sv_2mortal(newRV_noinc((SV *) hv))); XSRETURN(1); } else { int keylen, count = 0; HI_init(&hi, THIS->cpi.htFiles); while (HI_next(&hi, &pKey, &keylen, (void **) &pFI)) if (pFI && pFI->valid) { XPUSHs(sv_2mortal(newSVpvn(CONST_CHAR(pKey), keylen))); count++; } XSRETURN(count); } Convert-Binary-C-0.76/xsubs/parse.xs0000644000175000001440000000423511550664634016053 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:33 +0200 $ # $Revision: 10 $ # $Source: /xsubs/parse.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: parse # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::parse(code) SV *code PREINIT: CBC_METHOD(parse); SV *temp = NULL; STRLEN len; Buffer buf; CODE: CT_DEBUG_METHOD; buf.buffer = SvPV(code, len); if (!((len == 0) || (len >= 1 && (buf.buffer[len-1] == '\n' || buf.buffer[len-1] == '\r')))) { /* append a newline to a temporary copy */ temp = newSVsv(code); sv_catpvn(temp, "\n", 1); buf.buffer = SvPV(temp, len); } buf.length = len; buf.pos = 0; (void) parse_buffer(NULL, &buf, &THIS->cfg, &THIS->cpi); if (temp) SvREFCNT_dec(temp); handle_parse_errors(aTHX_ THIS->cpi.errorStack); if (GIMME_V != G_VOID) XSRETURN(1); ################################################################################ # # METHOD: parse_file # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::parse_file(file) const char *file PREINIT: CBC_METHOD(parse_file); CODE: CT_DEBUG_METHOD1("'%s'", file); (void) parse_buffer(file, NULL, &THIS->cfg, &THIS->cpi); handle_parse_errors(aTHX_ THIS->cpi.errorStack); if (GIMME_V != G_VOID) XSRETURN(1); Convert-Binary-C-0.76/xsubs/arg.xs0000644000175000001440000000346711550664633015517 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:31 +0200 $ # $Revision: 6 $ # $Source: /xsubs/arg.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: arg # # WRITTEN BY: Marcus Holland-Moritz ON: Jun 2004 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Turn string arguments into blessed object, so we can recognize # them later on. # ################################################################################ void CBC::arg(...) PREINIT: CBC_METHOD(arg); int i; PPCODE: CT_DEBUG_METHOD; CHECK_VOID_CONTEXT; for (i = 1; i < items; i++) { const char *argstr; STRLEN len; HookArgType type; SV *sv; argstr = SvPV(ST(i), len); if (strEQ(argstr, "SELF")) type = HOOK_ARG_SELF; else if (strEQ(argstr, "TYPE")) type = HOOK_ARG_TYPE; else if (strEQ(argstr, "DATA")) type = HOOK_ARG_DATA; else if (strEQ(argstr, "HOOK")) type = HOOK_ARG_HOOK; else Perl_croak(aTHX_ "Unknown argument type '%s' in %s", argstr, method); sv = newRV_noinc(newSViv(type)); sv_bless(sv, gv_stashpv(ARGTYPE_PACKAGE, 1)); ST(i-1) = sv_2mortal(sv); } XSRETURN(items-1); Convert-Binary-C-0.76/xsubs/cbc.xs0000644000175000001440000000446711550664633015476 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:31 +0200 $ # $Revision: 13 $ # $Source: /xsubs/cbc.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # CONSTRUCTOR # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::new(...) PREINIT: CBC_METHOD(new); PPCODE: CT_DEBUG_METHOD; if (items % 2 == 0) Perl_croak(aTHX_ "Number of configuration arguments " "to %s must be even", method); else { int i; CBC *THIS = cbc_new(aTHX); if (gs_DisableParser) { Perl_warn(aTHX_ XSCLASS " parser is DISABLED"); THIS->cfg.disable_parser = 1; } /* Only preset the option here, user may explicitly */ /* disable OrderMembers in the constructor */ if (gs_OrderMembers) THIS->order_members = 1; /* * bless the new object here, because handle_option() * may croak and DESTROY would not be called to free * the memory that has been allocated */ ST(0) = sv_2mortal(cbc_bless(aTHX_ THIS, CLASS)); for (i = 1; i < items; i += 2) handle_option(aTHX_ THIS, ST(i), ST(i+1), NULL, NULL); if (gs_OrderMembers && THIS->order_members) load_indexed_hash_module(aTHX_ THIS); XSRETURN(1); } ################################################################################ # # DESTRUCTOR # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::DESTROY() PREINIT: CBC_METHOD(DESTROY); CODE: CT_DEBUG_METHOD; cbc_delete(aTHX_ THIS); Convert-Binary-C-0.76/xsubs/def.xs0000644000175000001440000000415411550664633015476 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:32 +0200 $ # $Revision: 10 $ # $Source: /xsubs/def.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: def # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ char * CBC::def(type) const char *type PREINIT: CBC_METHOD(def); MemberInfo mi; const char *member = NULL; CODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; if (get_type_spec(THIS, type, &member, &mi.type) == 0) XSRETURN_UNDEF; if (mi.type.ptr == NULL) RETVAL = "basic"; else { void *ptr = mi.type.ptr; switch (GET_CTYPE(ptr)) { case TYP_TYPEDEF: RETVAL = is_typedef_defined((Typedef *) ptr) ? "typedef" : ""; break; case TYP_STRUCT: if (((Struct *) ptr)->declarations) RETVAL = ((Struct *) ptr)->tflags & T_STRUCT ? "struct" : "union"; else RETVAL = ""; break; case TYP_ENUM: RETVAL = ((EnumSpecifier *) ptr)->enumerators ? "enum" : ""; break; default: fatal("Invalid type (%d) in " XSCLASS "::%s( '%s' )", GET_CTYPE(ptr), method, type); break; } if (member && *member != '\0' && *RETVAL != '\0') { mi.pDecl = NULL; mi.level = 0; RETVAL = get_member(aTHX_ &mi, member, NULL, CBC_GM_DONT_CROAK | CBC_GM_NO_OFFSET_SIZE_CALC) ? "member" : ""; } } OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/sizeof.xs0000644000175000001440000000254711550664634016244 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:33 +0200 $ # $Revision: 11 $ # $Source: /xsubs/sizeof.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: sizeof # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ SV * CBC::sizeof(type) const char *type PREINIT: CBC_METHOD(sizeof); MemberInfo mi; CODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); if (mi.pDecl && mi.pDecl->bitfield_flag) Perl_croak(aTHX_ "Cannot use %s on bitfields", method); if (mi.flags) WARN_FLAGS(type, mi.flags); RETVAL = newSVuv(mi.size); OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/typedef.xs0000644000175000001440000000564211550664634016404 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:34 +0200 $ # $Revision: 10 $ # $Source: /xsubs/typedef.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: typedef_names # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::typedef_names() PREINIT: CBC_METHOD(typedef_names); ListIterator tli, ti; TypedefList *pTDL; Typedef *pTypedef; int count = 0; U32 context; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; LL_foreach(pTDL, tli, THIS->cpi.typedef_lists) LL_foreach(pTypedef, ti, pTDL->typedefs) if (is_typedef_defined(pTypedef)) { if (context == G_ARRAY) XPUSHs(sv_2mortal(newSVpv(pTypedef->pDecl->identifier, 0))); count++; } if (context == G_ARRAY) XSRETURN(count); else XSRETURN_IV(count); ################################################################################ # # METHOD: typedef # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::typedef(...) PREINIT: CBC_METHOD(typedef); Typedef *pTypedef; U32 context; PPCODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; context = GIMME_V; if (context == G_SCALAR && items != 2) XSRETURN_IV(items > 1 ? items-1 : HT_count(THIS->cpi.htTypedefs)); NEED_PARSE_DATA; if (items > 1) { int i; for (i = 1; i < items; i++) { const char *name = SvPV_nolen(ST(i)); pTypedef = HT_get(THIS->cpi.htTypedefs, name, 0, 0); if (pTypedef) PUSHs(sv_2mortal(get_typedef_def(aTHX_ &THIS->cfg, pTypedef))); else PUSHs(&PL_sv_undef); } XSRETURN(items-1); } else { ListIterator tli, ti; TypedefList *pTDL; int size = HT_count(THIS->cpi.htTypedefs); if (size <= 0) XSRETURN_EMPTY; EXTEND(SP, size); LL_foreach(pTDL, tli, THIS->cpi.typedef_lists) LL_foreach(pTypedef, ti, pTDL->typedefs) PUSHs(sv_2mortal(get_typedef_def(aTHX_ &THIS->cfg, pTypedef))); XSRETURN(size); } Convert-Binary-C-0.76/xsubs/tag.xs0000644000175000001440000000470011550664634015511 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:34 +0200 $ # $Revision: 13 $ # $Source: /xsubs/tag.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: tag / untag # # WRITTEN BY: Marcus Holland-Moritz ON: Dec 2004 # CHANGED BY: ON: # ################################################################################ void CBC::tag(type, ...) const char *type ALIAS: untag = 1 PREINIT: CBC_METHOD_VAR; TagTypeInfo tti; CtTagList *taglist; CODE: switch (ix) { case 0: CBC_METHOD_SET("tag"); break; case 1: CBC_METHOD_SET("untag"); break; default: fatal("Invalid alias (%d) for tag method", ix); break; } CT_DEBUG_METHOD1("'%s'", type); if (ix == 0 && items <= 3 && GIMME_V == G_VOID) { WARN_VOID_CONTEXT; XSRETURN_EMPTY; } NEED_PARSE_DATA; tti.type = type; if (!get_member_info(aTHX_ THIS, type, &tti.mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); if (tti.mi.level != 0) Perl_croak(aTHX_ "Cannot tag array members"); taglist = tti.mi.pDecl ? &tti.mi.pDecl->tags : find_taglist_ptr(tti.mi.type.ptr); assert(taglist != NULL); if (ix == 0) /* tag */ { if (items == 2) ST(0) = get_tags(aTHX_ &tti, *taglist); else if (items == 3) handle_tag(aTHX_ &tti, taglist, ST(2), NULL, &ST(0)); else if (items % 2 == 0) { int i; for (i = 2; i < items; i += 2) handle_tag(aTHX_ &tti, taglist, ST(i), ST(i+1), NULL); } else Perl_croak(aTHX_ "Invalid number of arguments to %s", method); } else /* untag */ { if (items == 2) delete_all_tags(taglist); else { int i; for (i = 2; i < items; i++) handle_tag(aTHX_ &tti, taglist, ST(i), &PL_sv_undef, NULL); } } XSRETURN(1); Convert-Binary-C-0.76/xsubs/defined.xs0000644000175000001440000000227211550664633016335 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:32 +0200 $ # $Revision: 5 $ # $Source: /xsubs/defined.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: defined # # WRITTEN BY: Marcus Holland-Moritz ON: Feb 2006 # CHANGED BY: ON: # ################################################################################ bool CBC::defined(name) const char *name PREINIT: CBC_METHOD(defined); CODE: CT_DEBUG_METHOD; /* TODO: probably we can do without parse data (would require special handling of the pp object) */ CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; RETVAL = macro_is_defined(&THIS->cpi, name); OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/member.xs0000644000175000001440000000620111550664633016202 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:33 +0200 $ # $Revision: 12 $ # $Source: /xsubs/member.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: member # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::member(type, offset = NULL) const char *type SV *offset PREINIT: CBC_METHOD(member); MemberInfo mi; int have_offset, off; PPCODE: off = (have_offset = DEFINED(offset)) ? SvIV(offset) : 0; CT_DEBUG_METHOD2("'%s', %d", type, off); CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); check_allowed_types(aTHX_ &mi, method, ALLOW_STRUCTS | ALLOW_UNIONS | ALLOW_ARRAYS); if (mi.flags) { u_32 flags = mi.flags; /* bitfields are not a problem without offset given */ if (!have_offset) flags &= ~T_HASBITFIELD; WARN_FLAGS(type, flags); } if (have_offset) { if (off < 0 || off >= (int) mi.size) Perl_croak(aTHX_ "Offset %d out of range (0 <= offset < %d)", off, mi.size); if (GIMME_V == G_ARRAY) { ListIterator li; GMSInfo info; SV *member; int count; info.hit = LL_new(); info.off = LL_new(); info.pad = LL_new(); (void) get_member_string(aTHX_ &mi, off, &info); count = LL_count(info.hit) + LL_count(info.off) + LL_count(info.pad); EXTEND(SP, count); LL_foreach(member, li, info.hit) PUSHs(member); LL_foreach(member, li, info.off) PUSHs(member); LL_foreach(member, li, info.pad) PUSHs(member); LL_destroy(info.hit, NULL); LL_destroy(info.off, NULL); LL_destroy(info.pad, NULL); XSRETURN(count); } else { SV *member = get_member_string(aTHX_ &mi, off, NULL); PUSHs(member); XSRETURN(1); } } else { LinkedList list; SV *member; int count; list = GIMME_V == G_ARRAY ? LL_new() : NULL; count = get_all_member_strings(aTHX_ &mi, list); if (GIMME_V == G_ARRAY) { ListIterator li; EXTEND(SP, count); LL_foreach(member, li, list) PUSHs(member); LL_destroy(list, NULL); XSRETURN(count); } else XSRETURN_IV(count); } Convert-Binary-C-0.76/xsubs/pack.xs0000644000175000001440000001226311550664634015657 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:33 +0200 $ # $Revision: 21 $ # $Source: /xsubs/pack.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: pack # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::pack(type, data = &PL_sv_undef, string = NULL) const char *type SV *data SV *string PREINIT: CBC_METHOD(pack); char *buffer; MemberInfo mi; PackHandle pack; SV *rv; dXCPT; CODE: CT_DEBUG_METHOD1("'%s'", type); if (string == NULL && GIMME_V == G_VOID) { WARN_VOID_CONTEXT; XSRETURN_EMPTY; } if (string != NULL) { SvGETMAGIC(string); if ((SvFLAGS(string) & (SVf_POK|SVp_POK)) == 0) Perl_croak(aTHX_ "Type of arg 3 to pack must be string"); if (GIMME_V == G_VOID && SvREADONLY(string)) Perl_croak(aTHX_ "Modification of a read-only value attempted"); } NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); if (mi.flags) WARN_FLAGS(type, mi.flags); if (string == NULL) { rv = newSV(mi.size); /* force rv into a PV when mi.size is zero (bug #3753) */ if (mi.size == 0) sv_grow(rv, 1); SvPOK_only(rv); SvCUR_set(rv, mi.size); buffer = SvPVX(rv); /* We get an mi.size+1 buffer from newSV. So the following */ /* call will properly \0-terminate our return value. */ Zero(buffer, mi.size+1, char); } else { STRLEN len = SvCUR(string); STRLEN max = mi.size > len ? mi.size : len; if (GIMME_V == G_VOID) { rv = NULL; buffer = SvGROW(string, max+1); SvCUR_set(string, max); } else { rv = newSV(max); SvPOK_only(rv); buffer = SvPVX(rv); SvCUR_set(rv, max); Copy(SvPVX(string), buffer, len, char); } if(max > len) Zero(buffer+len, max+1-len, char); } pack = pk_create(THIS, ST(0)); pk_set_type(pack, type); pk_set_buffer(pack, rv ? rv : string, buffer, mi.size); SvGETMAGIC(data); XCPT_TRY_START { pk_pack(aTHX_ pack, &mi.type, mi.pDecl, mi.level, data); } XCPT_TRY_END pk_delete(pack); XCPT_CATCH { if (rv) SvREFCNT_dec(rv); XCPT_RETHROW; } /* this makes substr() as third argument work */ if (string) SvSETMAGIC(string); if (rv == NULL) XSRETURN_EMPTY; ST(0) = sv_2mortal(rv); XSRETURN(1); ################################################################################ # # METHOD: unpack # # WRITTEN BY: Marcus Holland-Moritz ON: Jan 2002 # CHANGED BY: ON: # ################################################################################ void CBC::unpack(type, string) const char *type SV *string PREINIT: CBC_METHOD(unpack); char *buf; STRLEN len; MemberInfo mi; unsigned long count; PPCODE: CT_DEBUG_METHOD1("'%s'", type); CHECK_VOID_CONTEXT; SvGETMAGIC(string); if ((SvFLAGS(string) & (SVf_POK|SVp_POK)) == 0) Perl_croak(aTHX_ "Type of arg 2 to unpack must be string"); NEED_PARSE_DATA; if (!get_member_info(aTHX_ THIS, type, &mi, 0)) Perl_croak(aTHX_ "Cannot find '%s'", type); if (mi.flags) WARN_FLAGS(type, mi.flags); buf = SvPV(string, len); if (GIMME_V == G_SCALAR) { if (mi.size > len) WARN((aTHX_ "Data too short")); count = 1; } else count = mi.size == 0 ? 1 : len / mi.size; if (count > 0) { dXCPT; unsigned long i; PackHandle pack; SV **sva; /* newHV_indexed() messes with the stack, so we cannot * store the return values on the stack immediately... */ Newz(0, sva, count, SV *); pack = pk_create(THIS, ST(0)); pk_set_buffer(pack, NULL, buf, len); XCPT_TRY_START { for (i = 0; i < count; i++) { pk_set_buffer_pos(pack, i*mi.size); sva[i] = pk_unpack(aTHX_ pack, &mi.type, mi.pDecl, mi.level); } } XCPT_TRY_END pk_delete(pack); XCPT_CATCH { for (i = 0; i < count; i++) if (sva[i]) SvREFCNT_dec(sva[i]); Safefree(sva); XCPT_RETHROW; } /* A hook may have moved our stack */ SPAGAIN; SP -= items; EXTEND(SP, count); for (i = 0; i < count; i++) PUSHs(sv_2mortal(sva[i])); Safefree(sva); } XSRETURN(count); Convert-Binary-C-0.76/xsubs/sourcify.xs0000644000175000001440000000303111550664634016575 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:34 +0200 $ # $Revision: 8 $ # $Source: /xsubs/sourcify.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: sourcify # # WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 # CHANGED BY: ON: # ################################################################################ SV * CBC::sourcify(...) PREINIT: CBC_METHOD(sourcify); SourcifyConfig sc; CODE: CT_DEBUG_METHOD; CHECK_PARSE_DATA; CHECK_VOID_CONTEXT; /* preset with defaults */ sc.context = 0; sc.defines = 0; if (items == 2 && SvROK(ST(1))) { SV *sv = SvRV(ST(1)); if (SvTYPE(sv) == SVt_PVHV) get_sourcify_config(aTHX_ (HV *) sv, &sc); else Perl_croak(aTHX_ "Need a hash reference for configuration options"); } else if (items >= 2) Perl_croak(aTHX_ "Sourcification of individual types is not yet supported"); RETVAL = get_parsed_definitions_string(aTHX_ &THIS->cpi, &sc); OUTPUT: RETVAL Convert-Binary-C-0.76/xsubs/include.xs0000644000175000001440000000433611550664633016365 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:32 +0200 $ # $Revision: 8 $ # $Source: /xsubs/include.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: Include / Define / Assert # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ void CBC::Include(...) ALIAS: Define = 1 Assert = 2 PREINIT: CBC_METHOD_VAR; LinkedList list; int hasRval; SV *rval, *inval; PPCODE: switch (ix) { case 1: /* Define */ CBC_METHOD_SET("Define"); list = THIS->cfg.defines; break; case 2: /* Assert */ CBC_METHOD_SET("Assert"); list = THIS->cfg.assertions; break; default: /* Include */ CBC_METHOD_SET("Include"); list = THIS->cfg.includes; break; } CT_DEBUG_METHOD; hasRval = GIMME_V != G_VOID && items <= 1; if (GIMME_V == G_VOID && items <= 1) { WARN_VOID_CONTEXT; XSRETURN_EMPTY; } if (items > 1 && !SvROK(ST(1))) { int i; inval = NULL; for (i = 1; i < items; i++) { if (SvROK(ST(i))) Perl_croak(aTHX_ "Argument %d to %s must not be a reference", i, method); LL_push(list, string_new_fromSV(aTHX_ ST(i))); } } else { if (items > 2) Perl_croak(aTHX_ "Invalid number of arguments to %s", method); inval = items == 2 ? ST(1) : NULL; } if (inval != NULL || hasRval) handle_string_list(aTHX_ method, list, inval, hasRval ? &rval : NULL); if (hasRval) ST(0) = sv_2mortal(rval); reset_preprocessor(&THIS->cpi); XSRETURN(1); Convert-Binary-C-0.76/xsubs/clean.xs0000644000175000001440000000201411550664633016013 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:31 +0200 $ # $Revision: 6 $ # $Source: /xsubs/clean.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # METHOD: clean # # WRITTEN BY: Marcus Holland-Moritz ON: Oct 2002 # CHANGED BY: ON: # ################################################################################ void CBC::clean() PREINIT: CBC_METHOD(clean); CODE: CT_DEBUG_METHOD; free_parse_info(&THIS->cpi); if (GIMME_V != G_VOID) XSRETURN(1); Convert-Binary-C-0.76/xsubs/feature.xs0000644000175000001440000000353111550664633016371 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:32 +0200 $ # $Revision: 7 $ # $Source: /xsubs/feature.xs $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ ################################################################################ # # FUNCTION: feature # # WRITTEN BY: Marcus Holland-Moritz ON: Mar 2002 # CHANGED BY: ON: # ################################################################################ # # DESCRIPTION: Check if the module was compiled with a certain feature. # ################################################################################ void feature(...) PREINIT: CBC_METHOD(feature); int method_call; const char *feat; PPCODE: method_call = items > 0 && sv_isobject(ST(0)); if (items != (method_call ? 2 : 1)) Perl_croak(aTHX_ "Usage: Convert::Binary::C::feature(feat)"); CHECK_VOID_CONTEXT; feat = (const char *)SvPV_nolen(ST(items-1)); switch (*feat) { case 'd': if (strEQ(feat, "debug")) #ifdef CBC_DEBUGGING XSRETURN_YES; #else XSRETURN_NO; #endif break; case 'i': if (strEQ(feat, "ieeefp")) #ifdef CBC_HAVE_IEEE_FP XSRETURN_YES; #else XSRETURN_NO; #endif break; case 't': if (strEQ(feat, "threads")) #ifdef CBC_THREAD_SAFE XSRETURN_YES; #else XSRETURN_NO; #endif break; } XSRETURN_UNDEF; Convert-Binary-C-0.76/README0000644000175000001440000001444711550664607014107 0ustar mhxusersCONTENTS 1. DESCRIPTION 2. INSTALLATION 3. UPGRADING 4. DOCUMENTATION 5. MAILING LIST 6. CONFIGURATION 7. COMPATIBILITY 8. FEATURES 9. COPYRIGHT -------------- 1. DESCRIPTION -------------- Convert::Binary::C is a preprocessor and parser for C type definitions. It is highly configurable and should support arbitrarily complex data structures. Its object-oriented interface has pack and unpack methods that act as replacements for Perl's pack and unpack and allow to use the C types instead of a string representation of the data structure for conversion of binary data from and to Perl's complex data structures. Actually, what Convert::Binary::C does is not very different from what a C compiler does, just that it doesn't compile the source code into an object file or executable, but only parses the code and allows Perl to use the enumerations, structs, unions and typedefs that have been defined within your C source for binary data conversion, similar to Perl's pack and unpack. Beyond that, the module offers a lot of convenience methods to retrieve information about the C types that have been parsed. --------------- 2. INSTALLATION --------------- Installation of the Convert::Binary::C module follows the standard Perl Way and should not be harder than: perl Makefile.PL make make test make install Note that you may need to become superuser to 'make install'. If you're building the module under Windows, you may need to use a different make program, such as 'nmake', instead of 'make'. When running 'make test' on on slower systems please be patient, since some of the tests are quite time consuming. The time required for running the whole test suite depends on your Perl version, the features you're building the module with, and of course your machine. ------------ 3. UPGRADING ------------ If you are upgrading from a previous release of Convert::Binary::C, please check the Changes file. In its current state, the module is still subject to changes that may affect compatibility with older releases. ---------------- 4. DOCUMENTATION ---------------- To see the documentation, use the perldoc command: perldoc Convert::Binary::C perldoc Convert::Binary::C::Cached You can also visit CPAN Search and see the documentation online as pretty nice HTML. This is also where you will find the most recent version of this module: http://search.cpan.org/~mhx/Convert-Binary-C/ Even though the documentation contains some example code, you might want some working example scripts. You can find them in the examples subdirectory after you've built the module. These scripts normally require Convert::Binary::C to be installed on your system. If you want to test the examples prior to installing Convert::Binary::C, you can start the examples like this after building the module: perl -Mblib examples/script.pl Otherwise just run the example scripts like any other Perl script. --------------- 5. MAILING LIST --------------- There's also a mailing list that you can join: convert-binary-c@yahoogroups.com To subscribe, simply send mail to: convert-binary-c-subscribe@yahoogroups.com ---------------- 6. CONFIGURATION ---------------- Configuring a Convert::Binary::C object correctly can be quite painful if you don't know every little detail about your compiler. However, if you're lucky, you can use the 'ccconfig' tool that comes with this package. It was written to automatically retrieve the complete compiler configuration. This may not work always, or retrieve the complete configuration, but it should at least give you some point to start from. Just run ccconfig -c compiler with 'compiler' being the name of your compiler executable. You can see the documentation for 'ccconfig' using the perldoc command: perldoc ccconfig As the tool is very experimental, any feedback on 'ccconfig' is really appreciated! ---------------- 7. COMPATIBILITY ---------------- The module should build on most of the platforms that Perl runs on. I have tested it on: - Various Linux systems - Various BSD systems - HP-UX - Compaq/HP Tru64 Unix - Mac-OS X - Cygwin - Windows 98/NT/2000/XP Also, most architectures should be supported. Tests were done on: - Various Intel Pentium and Itanium systems - Various Alpha systems - HP PA-RISC - Power-PC - StrongARM (the module worked fine on an IPAQ system) The module should build with any perl from 5.005 up to the latest development version. It will also build with perl 5.004, but then the test suite cannot be run completely. Multithreaded perl binaries are explicitly supported, as the module is intended to be thread-safe. ----------- 8. FEATURES ----------- You can enable or disable certain features at compile time by adding options to the Makefile.PL call. However, you can safely leave them at their default. Available features are 'debug' to build the module with debugging support and 'ieeefp' to explicitly enable or disable IEEE floating point support. The 'debug' feature depend on how your perl binary was built. If it was built with the DEBUGGING flag, the 'debug' feature is enabled, otherwise it is disabled by default. The 'ieeefp' feature depends on how your machine stores floating point values. If they are stored in IEEE format, this feature will be enabled automatically. You should really only change the default if you know what you're doing. You can enable or disable features explicitly by adding the arguments enable-feature disable-feature to the Makefile.PL call. To explicitly build the module with debugging enabled, you would say: perl Makefile.PL enable-debug This will still allow you to pass other 'standard' arguments to Makefile.PL, like perl Makefile.PL enable-debug OPTIMIZE=-O3 ------------ 9. COPYRIGHT ------------ Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The ucpp library is (c) 1998-2002 Thomas Pornin. For license and redistribution details refer to 'ctlib/ucpp/README'. Portions copyright (c) 1989, 1990 James A. Roskind. The include files located in 'tests/include/include', which are used in some of the test scripts are (c) 1991-1999, 2000, 2001 Free Software Foundation, Inc. They are neither required to create the binary nor linked to the source code of this module in any other way. Convert-Binary-C-0.76/Changes0000644000175000001440000005454111550664607014521 0ustar mhxusers------------------------- Version 0.76 (2011-04-11) ------------------------- * it looks like I've found the source of the test failures reported in cpan #56369; this version is an attempt to fix the problem, but without fully understanding it -- if a windows guru can explain to me why setjmp() deadlocks if the jmp_buf structure was allocated through Perl's API (New, Newz, etc), I'd really appreciate it ------------------------- Version 0.75 (2011-04-10) ------------------------- * fix cpan #63381 / perl #79854: make sure warnings cause a cache file not to be used (thanks to Andreas König for reporting this) * fix bug in unpack where the code would attempt to create an array with negative size when running out of input data * make sure elf.PL reads/writes in binary mode (thanks to רחלי מרל for finding this problem) ------------------------- Version 0.74 (2009-04-18) ------------------------- * fix sourcification of flexible array members (triggered by cpan #45105; thanks to Alexander Ost for being persistent in his attempt to convince me that there's a bug in sourcify) ------------------------- Version 0.73 (2009-03-16) ------------------------- * fix META.yml generation with newer versions of ExtUtils::MakeMaker * work around an include path handling bug present in some versions of Test::Harness ------------------------- Version 0.72 (2009-03-15) ------------------------- * fix cpan #43119: patch to allow Convert::Binary::C to build with GCC 4.4.x (thanks to Alex Lancaster for providing a patch) ------------------------- Version 0.71 (2008-04-15) ------------------------- * added new 'StdCVersion' and 'HostedC' options for configuring the predefined macros of the preprocessor * fix debugging build with development version of Perl ------------------------- Version 0.70 (2007-12-24) ------------------------- -- released without changes -- ---------------------------- Version 0.69_01 (2007-12-08) ---------------------------- * fix UV generation on platforms where NVs don't preserve UVs (e.g. amd64) and perl doesn't know about UVs (<5.6.0) * make the test suite more noisy when something goes wrong ------------------------- Version 0.69 (2007-12-06) ------------------------- * fix: unpack would return garbage when an unpack hook causes the perl stack to be reallocated * make ccconfig handle blanks in paths correctly * slightly improve ELF parser example * fix debug format strings ------------------------- Version 0.68 (2007-06-25) ------------------------- * allow #pragma pack(0) to reset to default alignment, just like #pragma pack * add checks for invalid #pragma pack() arguments ------------------------- Version 0.67 (2006-12-29) ------------------------- * bleeding edge perl versions don't have SVt_PVBM anymore, which broke compilation of cbc/util.c ------------------------- Version 0.66 (2006-11-02) ------------------------- * fix a bug in the parser that accidentially allowed qualified enum specifiers as unnamed compound members * update test suite for better coverage of recent compiler features and bitfields ------------------------- Version 0.65 (2006-08-27) ------------------------- * fix compilation issues with perls configured with threads and debugging; these issues were caused by a buggy implementation of the assert() macro in the 5.8 series of perl * fix compilation issues with HP compiler on itanium systems * fix: hooks for the same type were not re-entrant (i.e. you could not pack/unpack the same type within a hook registered for that type) * fix: passing sparse hashes or arrays to pack() in combination with pack hooks was causing an assertion * fix an integer promotion bug in the preprocessor * add better support for C99-style array declarator * fix enumerator handling: it was impossible to reuse the name of an enumerator as an identifer * ccconfig fix: macros defined to the empty string were not properly detected ---------------------------- Version 0.64_02 (2006-03-24) ---------------------------- * struct members are now treated more Cish than before * added experimental Dimension tag * cleaned up some internals ---------------------------- Version 0.64_01 (2006-02-27) ---------------------------- * added new methods to interface with the preprocessor: o the 'defined' method tests if a macro is defined o the 'macro_names' method returns a list of all defined macro names o the 'macro' method returns macro definitions * added 'Defines' option for 'sourcify' method; with this option turned on, macro definition are also sourcified * the speed of the 'sourcify' method has been greatly improved * add a new pod coverage test * fix a pod2usage call in elf.pl example * improve warning when trying to pack references into format tagged types * make the module and some basic tests compatible with perl 5.004 * the native() function/method now also supports the 'UnsignedChars' and 'UnsignedBitfields' properties * the 'threads' feature is deprecated and will be removed in a future relase ------------------------- Version 0.64 (2006-01-16) ------------------------- * fix version handling in *.pm files * don't index bin/elf.PL * upgrade ppport.h ---------------------------- Version 0.63_01 (2006-01-09) ---------------------------- * fix: using the Format tag on bitfield members now throws an exception * added experimental ByteOrder tag * added ELF parser example * improve internals o better encapsulation of the pack/unpack code o avoid unneccessary computations o thanks to the cachegrind tool (http://valgrind.org), some expressions in the lexer code of the ucpp preprocessor could be optimized, making the preprocessor more than 10% faster on x86 platforms; this means that parsing should be about 7% faster now * improve test coverage ------------------------- Version 0.63 (2005-12-29) ------------------------- * fix a problem with the test suite when run in a directory that contains whitespace characters * (hopefully) fix the no_index problem in the META.yml by replacing "dir" with "directory" ------------------------- Version 0.62 (2005-12-01) ------------------------- * fixed a bug in unpack() that would cause an error when repeatedly passing a substr() as the data argument; this is not a critical bug, because there's no silent failure ------------------------- Version 0.61 (2005-10-27) ------------------------- * fix Makefile.PL / META.yml ------------------------- Version 0.60 (2005-10-26) ------------------------- * fixed: the byte order setting was not correctly handed to the bitfield layouter when using configure() before using parse(); since that's what C::B::C::Cached does, C::B::C::Cached could be using the wrong byte order for bitfields * the deprecated methods add_hooks(), delete_hooks() and delete_all_hooks() have been removed * silence some warnings with newer gcc versions * start moving test suite to use Test::More * bundle Test, Test::More and Test::Harness for older perl versions * extend compatibility down to perl 5.005 ------------------------- Version 0.59 (2005-06-13) ------------------------- * fixed: dying hooks no longer leak memory * added new 'UnsignedBitfields' option * removed 'Bitfields are unsupported' warning * documented bitfield support * the usual cleanups and corrections ---------------------------- Version 0.58_01 (2005-05-23) ---------------------------- * bitfields are now supported; since bitfield implementations differ from compiler to compiler (sometimes significantly), the bitfield layouting engine can be exchanged at runtime; bitfield support is, however, still considered experimental * the memory used by internal data structures as well as the number of malloc/free calls has been reduced by about 15 percent; besides saving memory, this also makes parsing and cloning a bit faster * the whole pack()/unpack() engine was re-doing the work that has previously been done by the compound layouter; this redundancy has been removed, making the code more readable (and a little bit faster) * the compound layouter implementation has been separated and can now be exchanged at runtime (which is currently unused as there's only one implementation) * the bison parser is now making use of the %destructor feature introduced recently; this makes the parser code a lot easier to read and maintain, and makes the parser a bit faster; you need at least bison-2.0a to regenerate the files * when packing 'string' numbers, the 0b... syntax is now supported for binary numbers * ccconfig's interface and internals have been updated * ccconfig now has a lot more options that hopefully allow you to test compilers with strange commandline interface * ccconfig is now more robust against compiler failures * lots of minor tweaks and fixes ------------------------- Version 0.58 (2005-02-21) ------------------------- * there's now a mailing list; see the documentation or README for details * new tag() method provides a generic way of tagging properties such as hooks to types * the hooks methods are deprecated and will be removed in a future release (new interface is provided through tag() / untag()) * completely restructured the XS/C internals, since C.xs was getting way too large; the code should be a lot more modular and organized now * make the preprocessor handle (read: ignore) any #ident directives (problem spotted by Ronnie Kelly) * use faster preprocessor tokenizer routine * ccconfig: add --output-file and --output-format options * fix invalid read bug when redefining a macro with trailing whitespace (spotted by valgrind) * make sure pack() returns null-terminated strings; not doing so can confuse the regex engine * strip redundant warnings from enum/compound/typedef methods * fix deep recursion in llex() that causes bus error on hpux (this should fix the activestate test failures) * make util / ucpp use Perl's memory allocation functions (this should fix problems with -Dusethreads and -Dusemymalloc) * as usual, more tests and more docs ------------------------- Version 0.57 (2004-11-23) ------------------------- * allow empty initializers (spotted by Mike Lamb) * add CharSize option to support architectures where chars are larger than 8 bits (spotted by Esa Östring) ------------------------- Version 0.56 (2004-09-19) ------------------------- * allow empty member declaration lists * minor doc fixes ------------------------- Version 0.55 (2004-08-22) ------------------------- * new native() function to query native properties * feature() and native() can now also be called as methods * allow setting Alignment and CompoundAlignment to zero to request native alignment and compound alignment * prefix compile-time defaults with CBC_ and document them * upgrade ppport.h * minor cleanups ------------------------- Version 0.54 (2004-07-01) ------------------------- * improved hooks features * changed handling of autogenerated files that has been causing trouble with crappy archiving tools * minor bugfixes ------------------------- Version 0.53 (2004-05-25) ------------------------- * fixed a bug that messed up the return values when using unpack in list context together with OrderMembers => 1 ------------------------- Version 0.52 (2004-05-24) ------------------------- * added new CompoundAlignment option * added new behaviour for unpack method in list context * simplify inheriting from Convert::Binary::C * fixed a bug in the initializer method that caused wrong initialization strings for unnamed unions * fixed a systematic bug that caused sourcify to return invalid C code in a few special cases ------------------------- Version 0.51 (2004-03-23) ------------------------- * added method chaining for add_hooks, delete_hooks and delete_all_hooks * fixed some bugs when using substr() with pack and unpack * documentation fixes and updates ------------------------- Version 0.50 (2004-03-22) ------------------------- * added support for flexible array members and incomplete types * added support for registering pack/unpack hooks to allow user-defined packing/unpacking * ucpp is now reentrant, thus there's no more locking of parse/parse_file * fixed a memory leak when using OrderMembers => 1 * improved ccconfig's detection of ability to compile object/executable files * lots of minor bugfixes and code cleanups ------------------------- Version 0.49 (2003-11-24) ------------------------- * fixed build problem on multi-threaded 5.6.x perls by removing irrelevant code from ppport.h * changed error reporting: preprocessor errors are no longer only warnings (this fixes an issue with Convert::Binary::C::Cached creating an empty cache file if none of the #include'd files could be found) * fixed some error/warnings reporting problems with Convert::Binary::C::Cached * minor cleanups ------------------------- Version 0.48 (2003-11-03) ------------------------- * added new 'OrderMembers' option: this option allows you to tie all hashes returned by the unpack method to either Tie::Hash::Indexed or Tie::IxHash, thus preserving the order of compound members when e.g. dumping the hashes or iterating through their keys/values * slightly improved performance for pack method * added META.yml * lots of code cleanups * small bugfixes ------------------------- Version 0.47 (2003-09-11) ------------------------- * enhanced behaviour of def() method * added new pod test * fixed some buglets ------------------------- Version 0.46 (2003-09-09) ------------------------- * fixed bug #3753 "packing a struct/member/field causes a bus error" * added new warnings when packing/unpacking zero-sized types * updated the docs with links to http://rt.cpan.org and http://cpanratings.perl.org ------------------------- Version 0.45 (2003-08-18) ------------------------- * fixed/improved sourcify output for #pragma pack * added Context option for sourcify method ------------------------- Version 0.44 (2003-08-17) ------------------------- * fixed behaviour of typeof method for bitfields * dependencies method now returns plain list of files when called in list context * doc fixes ------------------------- Version 0.43 (2003-07-24) ------------------------- * fixed: undef values returned by unpack were not writable and caused problems with almost all versions of perl * fixed: sizeof() could return garbage when used on array types * fixed bogus warning generated by pack when explicitly passing 'undef' * improved warning messages generated by pack * added error when using offsetof on bitfields * added new initializer method * the offset argument to the member method is now optional; without the offset argument, a list of all possible members is returned * code cleanups ------------------------- Version 0.42 (2003-06-23) ------------------------- * added new 'ieeefp' feature * new floating point conversion code to support both IEEE and non-IEEE sytems o on machines using the IEEE format to store floating point numbers, you can pack/unpack arbitrary byteorder floating point values for all supported native sizes o on machines not using the IEEE format, packing and unpacking of floating point values is restricted to the types natively available * floating point conversion checks and warnings have been improved * added floating point format detection to ccconfig * some code cleanups ------------------------- Version 0.41 (2003-06-10) ------------------------- * added support for gcc's asm syntax * some cleanups ------------------------- Version 0.40 (2003-04-20) ------------------------- * same as 0.13, just to make CPAN(?:PLUS|-indexer)? happy ------------------------- Version 0.13 (2003-04-20) ------------------------- * changed behaviour of member method in list context o doesn't return the member's type any longer o returns all matching members instead, if multiple members match the given offset o this change is NOT backward compatible o to get the old behaviour, turn ($member, $typeof) = $c->member( $type, $offset ); into $member = $c->member( $type, $offset ); $typeof = $c->typeof( $type.$member ); * fixed lots of memory leaks resulting from using sv_dec() where SvREFCNT_dec() should have been used instead * fixed memory leak when object construction fails * fixed sourcify for enums in special cases * fixed segfault in debugging mode * removed lots of limitations and fixed lots of bugs when dealing with member expressions * changed module/ccconfig versioning; now $Convert::Binary::C::VERSION $Convert::Binary::C::Cached::VERSION as well as the version of ccconfig are all set to the version of the distribution to avoid confusion * added new typeof method * added dwimmy handling of offset suffixes * added basic type support for many methods * allowed basic types to be used without parsing any code * allowed enum/struct/union prefixes for enum, compound, struct and union methods * improved performance when using a threaded perl binary by about 20%; performance is now only 5% worse than with a non-threaded binary * added new "understanding types" section to documentation * fixed some inconsistencies in documentation * added some new warnings * added lots of new tests, some based on coverage analysis using gcov * fixed some tests that could fail due to random binary input when (un)packing floating point values * used ppport.h for compatibility * added check for unsupported perl binary configuration with usemymalloc=y _and_ threads * lots of code cleanups ------------------------- Version 0.12 (2003-03-18) ------------------------- * fixed some bugs in ccconfig * fixed dealing with cache file corruption * minor fixes in documentation * use Devel::Tokenizer::C for tokenizer generation ------------------------- Version 0.11 (2003-02-27) ------------------------- * fixed problem with recursive data structures in sourcify * minor cleanups ------------------------- Version 0.10 (2003-01-23) ------------------------- * added --version for ccconfig * cleaned up and fixed format strings * updated README ------------------------- Version 0.09 (2003-01-20) ------------------------- * fixed problems with va_list on Linux-PPC that caused some tests to segfault * updated preprocessor output detection in ccconfig for "smart" preprocessors * minor fixes and cleanups * minor documentation updates ------------------------- Version 0.08 (2003-01-15) ------------------------- * added ccconfig --nodelete option * added context info for structs/unions/enums * removed 'c99' feature * documentation updates and fixes ------------------------- Version 0.07 (2003-01-09) ------------------------- * fixed packing/unpacking for #pragma pack * complete rewrite of member() algorithm * added 'KeywordMap' option to add keywords directly to the parser * added new behaviour for EnumSize => -1 * extended ranges of some integer options * integrated new version of ucpp * added 'ccconfig' script * example scripts are now generated * added and improved tests * documentation updates * lots of other tiny tweaks * deprecated 'c99' feature, will be removed in 0.08 ------------------------- Version 0.06 (2002-12-13) ------------------------- * removed options 'HasVOID' and 'HasC99Keywords' * added 'DisabledKeywords' option, which replaces both 'HasVOID' and 'HasC99Keywords', and allows to disable a lot of other keywords, too: HasVOID => 0 --> DisabledKeywords => ['void'] HasC99Keywords => 0 --> DisabledKeywords => [qw(inline restrict)] * updated parser to ignore type definitions within code blocks * fixed an access violation when cleaning up the preprocessor * removed warning when using sourcify method * added some more tests * added examples directory and some example scripts * added more examples to documentation * documentation fixes/updates ------------------------- Version 0.05 (2002-11-28) ------------------------- * fixed a bug that suppressed the error message when the cache file could not be created, and added a test for it ------------------------- Version 0.04 (2002-11-27) ------------------------- * support for 64-bit data types on all platforms * additional data types o long long o long double * new methods o clean -- cleaning an object o clone -- cloning an object o depencencies -- retrieve an object's dependencies o sourcify -- emit an object's parsed data as C source * changed method behaviour o configure - The 'HashSize' option has been removed. I didn't like it anyway, and since the hash tables are now growing automatically, it's completely useless. o def - Instead of undef, 0 and 1, the def method will now return undef, '' (the empty string) or the kind of the type you passed as an argument, e.g. 'typedef' or 'union'. * added method behaviour o configure - Calls to configure (and other configuration methods) can be chained together when they're 'set' method calls. o parse, parse_file - All method calls that have no return value will return a reference to their object, so method chaining is possible. o pack, unpack, sizeof, offsetof, member - These methods now can all operate on compound members, i.e. you could say $obj->sizeof( 'type.foo.x' ). o member - The member method now can optionally return the type of the requested member. * new Convert::Binary::C::Cached module o cached Convert::Binary::C objects o identical interface o can speed up parsing by up to 10 - 20 times * increased speed for packing and unpacking arrays * increased portability * added new and improved existing tests * some bug fixes and a lot of code cleanups * upgraded to bison 1.75 ------------------------- Version 0.03 (2002-09-25) ------------------------- * fixed default sizes for floats and double in object constructor * fixed some 64-bit architecture issues * fixed bug in bison parser * fixed problems with some tests * added support for dec_osf platform ------------------------- Version 0.02 (2002-08-31) ------------------------- * decreased the complex test file, which speeds up the complex test and decreases the size of the distribution file * decreased the number of threads in the threads test * added copyright notice to the README file * minor corrections/cleanups ------------------------- Version 0.01 (2002-08-30) ------------------------- * initial release Convert-Binary-C-0.76/test.pl0000755000175000001440000000325611550664620014535 0ustar mhxusers#!/usr/bin/perl -w ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:21 +0200 $ # $Revision: 11 $ # $Source: /test.pl $ # ################################################################################ # # Copyright (c) 2005-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ BEGIN { $only_basic = $] < 5.005; if ($only_basic) { print STDERR < WARNING: The version of perl you're using ($]) is very old. --> --> The complete test suite cannot be run with perl < 5.005. --> --> I will only run some very basic tests now. ENDWARN eval q{ use Test::Harness; $Test::Harness::switches = "-w"; }; } else { eval { $thv = `$^X -MTest::Harness -le'print \$Test::Harness::VERSION'` }; eval q{ use lib './support' } unless defined $thv && $thv >= 2.62; eval q{ use File::Spec; use Test::Harness; use Cwd; $lib = File::Spec->catfile(getcwd, 'support'); $lib = qq["$lib"] if $lib =~ /\s/; $Test::Harness::switches = "-I$lib -w"; }; } } @tests = @ARGV ? @ARGV : find_tests(); die "*** Can't find any test files\n" unless @tests; $ENV{PERL_DL_NONLAZY} = 1; runtests(@tests); sub find_tests { use File::Find; my $fd = $only_basic ? '1' : $ENV{ONLY_FAST_TESTS} ? '[0123478]' : '\d'; my %t; find(sub { -f and /^$fd\d{2}_\w+\.t$/ and $t{$File::Find::name}++ }, 'tests'); return sort keys %t; } Convert-Binary-C-0.76/support/0000755000175000001440000000000011550665107014725 5ustar mhxusersConvert-Binary-C-0.76/support/Test/0000755000175000001440000000000011550665107015644 5ustar mhxusersConvert-Binary-C-0.76/support/Test/Harness.pm0000644000175000001440000007753611550664617017634 0ustar mhxusers# -*- Mode: cperl; cperl-indent-level: 4 -*- package Test::Harness; require 5.00405; use Test::Harness::Straps; use Test::Harness::Assert; use Exporter; use Benchmark; use Config; use strict; use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK $Verbose $Switches $Debug $verbose $switches $debug $Columns $Timer $ML $Last_ML_Print $Strap $has_time_hires ); BEGIN { eval "use Time::HiRes 'time'"; $has_time_hires = !$@; } =head1 NAME Test::Harness - Run Perl standard test scripts with statistics =head1 VERSION Version 2.62 =cut $VERSION = '2.62'; # Backwards compatibility for exportable variable names. *verbose = *Verbose; *switches = *Switches; *debug = *Debug; $ENV{HARNESS_ACTIVE} = 1; $ENV{HARNESS_VERSION} = $VERSION; END { # For VMS. delete $ENV{HARNESS_ACTIVE}; delete $ENV{HARNESS_VERSION}; } my $Files_In_Dir = $ENV{HARNESS_FILELEAK_IN_DIR}; $Strap = Test::Harness::Straps->new; sub strap { return $Strap }; @ISA = ('Exporter'); @EXPORT = qw(&runtests); @EXPORT_OK = qw(&execute_tests $verbose $switches); $Verbose = $ENV{HARNESS_VERBOSE} || 0; $Debug = $ENV{HARNESS_DEBUG} || 0; $Switches = "-w"; $Columns = $ENV{HARNESS_COLUMNS} || $ENV{COLUMNS} || 80; $Columns--; # Some shells have trouble with a full line of text. $Timer = $ENV{HARNESS_TIMER} || 0; =head1 SYNOPSIS use Test::Harness; runtests(@test_files); =head1 DESCRIPTION B If all you want to do is write a test script, consider using Test::Simple. Test::Harness is the module that reads the output from Test::Simple, Test::More and other modules based on Test::Builder. You don't need to know about Test::Harness to use those modules. Test::Harness runs tests and expects output from the test in a certain format. That format is called TAP, the Test Anything Protocol. It is defined in L. C runs all the testscripts named as arguments and checks standard output for the expected strings in TAP format. The F utility is a thin wrapper around Test::Harness. =head2 Taint mode Test::Harness will honor the C<-T> or C<-t> in the #! line on your test files. So if you begin a test with: #!perl -T the test will be run with taint mode on. =head2 Configuration variables. These variables can be used to configure the behavior of Test::Harness. They are exported on request. =over 4 =item C<$Test::Harness::Verbose> The package variable C<$Test::Harness::Verbose> is exportable and can be used to let C display the standard output of the script without altering the behavior otherwise. The F utility's C<-v> flag will set this. =item C<$Test::Harness::switches> The package variable C<$Test::Harness::switches> is exportable and can be used to set perl command line options used for running the test script(s). The default value is C<-w>. It overrides C. =item C<$Test::Harness::Timer> If set to true, and C is available, print elapsed seconds after each test file. =back =head2 Failure When tests fail, analyze the summary report: t/base..............ok t/nonumbers.........ok t/ok................ok t/test-harness......ok t/waterloo..........dubious Test returned status 3 (wstat 768, 0x300) DIED. FAILED tests 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 Failed 10/20 tests, 50.00% okay Failed Test Stat Wstat Total Fail List of Failed --------------------------------------------------------------- t/waterloo.t 3 768 20 10 1 3 5 7 9 11 13 15 17 19 Failed 1/5 test scripts, 80.00% okay. 10/44 subtests failed, 77.27% okay. Everything passed but F. It failed 10 of 20 tests and exited with non-zero status indicating something dubious happened. The columns in the summary report mean: =over 4 =item B The test file which failed. =item B If the test exited with non-zero, this is its exit status. =item B The wait status of the test. =item B Total number of tests expected to run. =item B Number which failed, either from "not ok" or because they never ran. =item B A list of the tests which failed. Successive failures may be abbreviated (ie. 15-20 to indicate that tests 15, 16, 17, 18, 19 and 20 failed). =back =head1 FUNCTIONS The following functions are available. =head2 runtests( @test_files ) This runs all the given I<@test_files> and divines whether they passed or failed based on their output to STDOUT (details above). It prints out each individual test which failed along with a summary report and a how long it all took. It returns true if everything was ok. Otherwise it will C with one of the messages in the DIAGNOSTICS section. =cut sub runtests { my(@tests) = @_; local ($\, $,); my ($tot, $failedtests,$todo_passed) = execute_tests(tests => \@tests); print get_results($tot, $failedtests,$todo_passed); my $ok = _all_ok($tot); assert(($ok xor keys %$failedtests), q{ok status jives with $failedtests}); if (! $ok) { die("Failed $tot->{bad}/$tot->{tests} test programs. " . "@{[$tot->{max} - $tot->{ok}]}/$tot->{max} subtests failed.\n"); } return $ok; } # my $ok = _all_ok(\%tot); # Tells you if this test run is overall successful or not. sub _all_ok { my($tot) = shift; return $tot->{bad} == 0 && ($tot->{max} || $tot->{skipped}) ? 1 : 0; } # Returns all the files in a directory. This is shorthand for backwards # compatibility on systems where C doesn't work right. sub _globdir { local *DIRH; opendir DIRH, shift; my @f = readdir DIRH; closedir DIRH; return @f; } =head2 execute_tests( tests => \@test_files, out => \*FH ) Runs all the given C<@test_files> (just like C) but doesn't generate the final report. During testing, progress information will be written to the currently selected output filehandle (usually C), or to the filehandle given by the C parameter. The I is optional. Returns a list of two values, C<$total> and C<$failed>, describing the results. C<$total> is a hash ref summary of all the tests run. Its keys and values are this: bonus Number of individual todo tests unexpectedly passed max Number of individual tests ran ok Number of individual tests passed sub_skipped Number of individual tests skipped todo Number of individual todo tests files Number of test files ran good Number of test files passed bad Number of test files failed tests Number of test files originally given skipped Number of test files skipped If C<< $total->{bad} == 0 >> and C<< $total->{max} > 0 >>, you've got a successful test. C<$failed> is a hash ref of all the test scripts that failed. Each key is the name of a test script, each value is another hash representing how that script failed. Its keys are these: name Name of the test which failed estat Script's exit value wstat Script's wait status max Number of individual tests failed Number which failed canon List of tests which failed (as string). C<$failed> should be empty if everything passed. =cut sub execute_tests { my %args = @_; my @tests = @{$args{tests}}; my $out = $args{out} || select(); # We allow filehandles that are symbolic refs no strict 'refs'; _autoflush($out); _autoflush(\*STDERR); my %failedtests; my %todo_passed; # Test-wide totals. my(%tot) = ( bonus => 0, max => 0, ok => 0, files => 0, bad => 0, good => 0, tests => scalar @tests, sub_skipped => 0, todo => 0, skipped => 0, bench => 0, ); my @dir_files; @dir_files = _globdir $Files_In_Dir if defined $Files_In_Dir; my $run_start_time = new Benchmark; my $width = _leader_width(@tests); foreach my $tfile (@tests) { $Last_ML_Print = 0; # so each test prints at least once my($leader, $ml) = _mk_leader($tfile, $width); local $ML = $ml; print $out $leader; $tot{files}++; $Strap->{_seen_header} = 0; if ( $Test::Harness::Debug ) { print $out "# Running: ", $Strap->_command_line($tfile), "\n"; } my $test_start_time = $Timer ? time : 0; my %results = $Strap->analyze_file($tfile) or do { warn $Strap->{error}, "\n"; next }; my $elapsed; if ( $Timer ) { $elapsed = time - $test_start_time; if ( $has_time_hires ) { $elapsed = sprintf( " %8d ms", $elapsed*1000 ); } else { $elapsed = sprintf( " %8s s", $elapsed ? $elapsed : "<1" ); } } else { $elapsed = ""; } # state of the current test. my @failed = grep { !$results{details}[$_-1]{ok} } 1..@{$results{details}}; my @todo_pass = grep { $results{details}[$_-1]{actual_ok} && $results{details}[$_-1]{type} eq 'todo' } 1..@{$results{details}}; my %test = ( ok => $results{ok}, 'next' => $Strap->{'next'}, max => $results{max}, failed => \@failed, todo_pass => \@todo_pass, todo => $results{todo}, bonus => $results{bonus}, skipped => $results{skip}, skip_reason => $results{skip_reason}, skip_all => $Strap->{skip_all}, ml => $ml, ); $tot{bonus} += $results{bonus}; $tot{max} += $results{max}; $tot{ok} += $results{ok}; $tot{todo} += $results{todo}; $tot{sub_skipped} += $results{skip}; my($estatus, $wstatus) = @results{qw(exit wait)}; if ($results{passing}) { # XXX Combine these first two if ($test{max} and $test{skipped} + $test{bonus}) { my @msg; push(@msg, "$test{skipped}/$test{max} skipped: $test{skip_reason}") if $test{skipped}; if ($test{bonus}) { my ($txt, $canon) = _canondetail($test{todo},0,'TODO passed', @{$test{todo_pass}}); $todo_passed{$tfile} = { canon => $canon, max => $test{todo}, failed => $test{bonus}, name => $tfile, estat => '', wstat => '', }; push(@msg, "$test{bonus}/$test{max} unexpectedly succeeded\n$txt"); } print $out "$test{ml}ok$elapsed\n ".join(', ', @msg)."\n"; } elsif ( $test{max} ) { print $out "$test{ml}ok$elapsed\n"; } elsif ( defined $test{skip_all} and length $test{skip_all} ) { print $out "skipped\n all skipped: $test{skip_all}\n"; $tot{skipped}++; } else { print $out "skipped\n all skipped: no reason given\n"; $tot{skipped}++; } $tot{good}++; } else { # List unrun tests as failures. if ($test{'next'} <= $test{max}) { push @{$test{failed}}, $test{'next'}..$test{max}; } # List overruns as failures. else { my $details = $results{details}; foreach my $overrun ($test{max}+1..@$details) { next unless ref $details->[$overrun-1]; push @{$test{failed}}, $overrun } } if ($wstatus) { $failedtests{$tfile} = _dubious_return(\%test, \%tot, $estatus, $wstatus); $failedtests{$tfile}{name} = $tfile; } elsif($results{seen}) { if (@{$test{failed}} and $test{max}) { my ($txt, $canon) = _canondetail($test{max},$test{skipped},'Failed', @{$test{failed}}); print $out "$test{ml}$txt"; $failedtests{$tfile} = { canon => $canon, max => $test{max}, failed => scalar @{$test{failed}}, name => $tfile, estat => '', wstat => '', }; } else { print $out "Don't know which tests failed: got $test{ok} ok, ". "expected $test{max}\n"; $failedtests{$tfile} = { canon => '??', max => $test{max}, failed => '??', name => $tfile, estat => '', wstat => '', }; } $tot{bad}++; } else { print $out "FAILED before any test output arrived\n"; $tot{bad}++; $failedtests{$tfile} = { canon => '??', max => '??', failed => '??', name => $tfile, estat => '', wstat => '', }; } } if (defined $Files_In_Dir) { my @new_dir_files = _globdir $Files_In_Dir; if (@new_dir_files != @dir_files) { my %f; @f{@new_dir_files} = (1) x @new_dir_files; delete @f{@dir_files}; my @f = sort keys %f; print $out "LEAKED FILES: @f\n"; @dir_files = @new_dir_files; } } } # foreach test $tot{bench} = timediff(new Benchmark, $run_start_time); $Strap->_restore_PERL5LIB; return(\%tot, \%failedtests, \%todo_passed); } # Turns on autoflush for the handle passed sub _autoflush { my $flushy_fh = shift; my $old_fh = select $flushy_fh; $| = 1; select $old_fh; } =for private _mk_leader my($leader, $ml) = _mk_leader($test_file, $width); Generates the 't/foo........' leader for the given C<$test_file> as well as a similar version which will overwrite the current line (by use of \r and such). C<$ml> may be empty if Test::Harness doesn't think you're on TTY. The C<$width> is the width of the "yada/blah.." string. =cut sub _mk_leader { my($te, $width) = @_; chomp($te); $te =~ s/\.\w+$/./; if ($^O eq 'VMS') { $te =~ s/^.*\.t\./\[.t./s; } my $leader = "$te" . '.' x ($width - length($te)); my $ml = ""; if ( -t STDOUT and not $ENV{HARNESS_NOTTY} and not $Verbose ) { $ml = "\r" . (' ' x 77) . "\r$leader" } return($leader, $ml); } =for private _leader_width my($width) = _leader_width(@test_files); Calculates how wide the leader should be based on the length of the longest test name. =cut sub _leader_width { my $maxlen = 0; my $maxsuflen = 0; foreach (@_) { my $suf = /\.(\w+)$/ ? $1 : ''; my $len = length; my $suflen = length $suf; $maxlen = $len if $len > $maxlen; $maxsuflen = $suflen if $suflen > $maxsuflen; } # + 3 : we want three dots between the test name and the "ok" return $maxlen + 3 - $maxsuflen; } sub get_results { my $tot = shift; my $failedtests = shift; my $todo_passed = shift; my $out = ''; my $bonusmsg = _bonusmsg($tot); if (_all_ok($tot)) { $out .= "All tests successful$bonusmsg.\n"; if ($tot->{bonus}) { my($fmt_top, $fmt) = _create_fmts("Passed TODO",$todo_passed); # Now write to formats $out .= swrite( $fmt_top ); for my $script (sort keys %{$todo_passed||{}}) { my $Curtest = $todo_passed->{$script}; $out .= swrite( $fmt, @{ $Curtest }{qw(name estat wstat max failed canon)} ); } } } elsif (!$tot->{tests}){ die "FAILED--no tests were run for some reason.\n"; } elsif (!$tot->{max}) { my $blurb = $tot->{tests}==1 ? "script" : "scripts"; die "FAILED--$tot->{tests} test $blurb could be run, ". "alas--no output ever seen\n"; } else { my $subresults = sprintf( " %d/%d subtests failed.", $tot->{max} - $tot->{ok}, $tot->{max} ); my($fmt_top, $fmt1, $fmt2) = _create_fmts("Failed Test",$failedtests); # Now write to formats $out .= swrite( $fmt_top ); for my $script (sort keys %$failedtests) { my $Curtest = $failedtests->{$script}; $out .= swrite( $fmt1, @{ $Curtest }{qw(name estat wstat max failed canon)} ); $out .= swrite( $fmt2, $Curtest->{canon} ); } if ($tot->{bad}) { $bonusmsg =~ s/^,\s*//; $out .= "$bonusmsg.\n" if $bonusmsg; $out .= "Failed $tot->{bad}/$tot->{tests} test scripts.$subresults\n"; } } $out .= sprintf("Files=%d, Tests=%d, %s\n", $tot->{files}, $tot->{max}, timestr($tot->{bench}, 'nop')); return $out; } sub swrite { my $format = shift; $^A = ''; formline($format,@_); my $out = $^A; $^A = ''; return $out; } my %Handlers = ( header => \&header_handler, test => \&test_handler, bailout => \&bailout_handler, ); $Strap->{callback} = \&strap_callback; sub strap_callback { my($self, $line, $type, $totals) = @_; print $line if $Verbose; my $meth = $Handlers{$type}; $meth->($self, $line, $type, $totals) if $meth; }; sub header_handler { my($self, $line, $type, $totals) = @_; warn "Test header seen more than once!\n" if $self->{_seen_header}; $self->{_seen_header}++; warn "1..M can only appear at the beginning or end of tests\n" if $totals->{seen} && $totals->{max} < $totals->{seen}; }; sub test_handler { my($self, $line, $type, $totals) = @_; my $curr = $totals->{seen}; my $next = $self->{'next'}; my $max = $totals->{max}; my $detail = $totals->{details}[-1]; if( $detail->{ok} ) { _print_ml_less("ok $curr/$max"); if( $detail->{type} eq 'skip' ) { $totals->{skip_reason} = $detail->{reason} unless defined $totals->{skip_reason}; $totals->{skip_reason} = 'various reasons' if $totals->{skip_reason} ne $detail->{reason}; } } else { _print_ml("NOK $curr"); } if( $curr > $next ) { print "Test output counter mismatch [test $curr]\n"; } elsif( $curr < $next ) { print "Confused test output: test $curr answered after ". "test ", $next - 1, "\n"; } }; sub bailout_handler { my($self, $line, $type, $totals) = @_; die "FAILED--Further testing stopped" . ($self->{bailout_reason} ? ": $self->{bailout_reason}\n" : ".\n"); }; sub _print_ml { print join '', $ML, @_ if $ML; } # Print updates only once per second. sub _print_ml_less { my $now = CORE::time; if ( $Last_ML_Print != $now ) { _print_ml(@_); $Last_ML_Print = $now; } } sub _bonusmsg { my($tot) = @_; my $bonusmsg = ''; $bonusmsg = (" ($tot->{bonus} subtest".($tot->{bonus} > 1 ? 's' : ''). " UNEXPECTEDLY SUCCEEDED)") if $tot->{bonus}; if ($tot->{skipped}) { $bonusmsg .= ", $tot->{skipped} test" . ($tot->{skipped} != 1 ? 's' : ''); if ($tot->{sub_skipped}) { $bonusmsg .= " and $tot->{sub_skipped} subtest" . ($tot->{sub_skipped} != 1 ? 's' : ''); } $bonusmsg .= ' skipped'; } elsif ($tot->{sub_skipped}) { $bonusmsg .= ", $tot->{sub_skipped} subtest" . ($tot->{sub_skipped} != 1 ? 's' : '') . " skipped"; } return $bonusmsg; } # Test program go boom. sub _dubious_return { my($test, $tot, $estatus, $wstatus) = @_; my $failed = '??'; my $canon = '??'; printf "$test->{ml}dubious\n\tTest returned status $estatus ". "(wstat %d, 0x%x)\n", $wstatus,$wstatus; print "\t\t(VMS status is $estatus)\n" if $^O eq 'VMS'; $tot->{bad}++; if ($test->{max}) { if ($test->{'next'} == $test->{max} + 1 and not @{$test->{failed}}) { print "\tafter all the subtests completed successfully\n"; $failed = 0; # But we do not set $canon! } else { push @{$test->{failed}}, $test->{'next'}..$test->{max}; $failed = @{$test->{failed}}; (my $txt, $canon) = _canondetail($test->{max},$test->{skipped},'Failed',@{$test->{failed}}); print "DIED. ",$txt; } } return { canon => $canon, max => $test->{max} || '??', failed => $failed, estat => $estatus, wstat => $wstatus, }; } sub _create_fmts { my $failed_str = shift; my $failedtests = shift; my ($type) = split /\s/,$failed_str; my $short = substr($type,0,4); my $total = $short eq 'Pass' ? 'TODOs' : 'Total'; my $middle_str = " Stat Wstat $total $short "; my $list_str = "List of $type"; # Figure out our longest name string for formatting purposes. my $max_namelen = length($failed_str); foreach my $script (keys %$failedtests) { my $namelen = length $failedtests->{$script}->{name}; $max_namelen = $namelen if $namelen > $max_namelen; } my $list_len = $Columns - length($middle_str) - $max_namelen; if ($list_len < length($list_str)) { $list_len = length($list_str); $max_namelen = $Columns - length($middle_str) - $list_len; if ($max_namelen < length($failed_str)) { $max_namelen = length($failed_str); $Columns = $max_namelen + length($middle_str) + $list_len; } } my $fmt_top = sprintf("%-${max_namelen}s", $failed_str) . $middle_str . $list_str . "\n" . "-" x $Columns . "\n"; my $fmt1 = "@" . "<" x ($max_namelen - 1) . " @>> @>>>> @>>>> @>>> " . "^" . "<" x ($list_len - 1) . "\n"; my $fmt2 = "~~" . " " x ($Columns - $list_len - 2) . "^" . "<" x ($list_len - 1) . "\n"; return($fmt_top, $fmt1, $fmt2); } sub _canondetail { my $max = shift; my $skipped = shift; my $type = shift; my @detail = @_; my %seen; @detail = sort {$a <=> $b} grep !$seen{$_}++, @detail; my $detail = @detail; my @result = (); my @canon = (); my $min; my $last = $min = shift @detail; my $canon; my $uc_type = uc($type); if (@detail) { for (@detail, $detail[-1]) { # don't forget the last one if ($_ > $last+1 || $_ == $last) { push @canon, ($min == $last) ? $last : "$min-$last"; $min = $_; } $last = $_; } local $" = ", "; push @result, "$uc_type tests @canon\n"; $canon = join ' ', @canon; } else { push @result, "$uc_type test $last\n"; $canon = $last; } return (join("", @result), $canon) if $type=~/todo/i; push @result, "\t$type $detail/$max tests, "; if ($max) { push @result, sprintf("%.2f",100*(1-$detail/$max)), "% okay"; } else { push @result, "?% okay"; } my $ender = 's' x ($skipped > 1); if ($skipped) { my $good = $max - $detail - $skipped; my $skipmsg = " (less $skipped skipped test$ender: $good okay, "; if ($max) { my $goodper = sprintf("%.2f",100*($good/$max)); $skipmsg .= "$goodper%)"; } else { $skipmsg .= "?%)"; } push @result, $skipmsg; } push @result, "\n"; my $txt = join "", @result; return ($txt, $canon); } 1; __END__ =head1 EXPORT C<&runtests> is exported by Test::Harness by default. C<&execute_tests>, C<$verbose>, C<$switches> and C<$debug> are exported upon request. =head1 DIAGNOSTICS =over 4 =item C If all tests are successful some statistics about the performance are printed. =item C For any single script that has failing subtests statistics like the above are printed. =item C Scripts that return a non-zero exit status, both C<$? EE 8> and C<$?> are printed in a message similar to the above. =item C =item C If not all tests were successful, the script dies with one of the above messages. =item C If a single subtest decides that further testing will not make sense, the script dies with this message. =back =head1 ENVIRONMENT VARIABLES THAT TEST::HARNESS SETS Test::Harness sets these before executing the individual tests. =over 4 =item C This is set to a true value. It allows the tests to determine if they are being executed through the harness or by any other means. =item C This is the version of Test::Harness. =back =head1 ENVIRONMENT VARIABLES THAT AFFECT TEST::HARNESS =over 4 =item C This value will be used for the width of the terminal. If it is not set then it will default to C. If this is not set, it will default to 80. Note that users of Bourne-sh based shells will need to C for this module to use that variable. =item C When true it will make harness attempt to compile the test using C before running it. B This currently only works when sitting in the perl source directory! =item C If true, Test::Harness will print debugging information about itself as it runs the tests. This is different from C, which prints the output from the test being run. Setting C<$Test::Harness::Debug> will override this, or you can use the C<-d> switch in the F utility. =item C When set to the name of a directory, harness will check after each test whether new files appeared in that directory, and report them as LEAKED FILES: scr.tmp 0 my.db If relative, directory name is with respect to the current directory at the moment runtests() was called. Putting absolute path into C may give more predictable results. =item C When set to a true value, forces it to behave as though STDOUT were not a console. You may need to set this if you don't want harness to output more frequent progress messages using carriage returns. Some consoles may not handle carriage returns properly (which results in a somewhat messy output). =item C Usually your tests will be run by C<$^X>, the currently-executing Perl. However, you may want to have it run by a different executable, such as a threading perl, or a different version. If you're using the F utility, you can use the C<--perl> switch. =item C Its value will be prepended to the switches used to invoke perl on each test. For example, setting C to C<-W> will run all tests with all warnings enabled. =item C Setting this to true will make the harness display the number of milliseconds each test took. You can also use F's C<--timer> switch. =item C If true, Test::Harness will output the verbose results of running its tests. Setting C<$Test::Harness::verbose> will override this, or you can use the C<-v> switch in the F utility. =back =head1 EXAMPLE Here's how Test::Harness tests itself $ cd ~/src/devel/Test-Harness $ perl -Mblib -e 'use Test::Harness qw(&runtests $verbose); $verbose=0; runtests @ARGV;' t/*.t Using /home/schwern/src/devel/Test-Harness/blib t/base..............ok t/nonumbers.........ok t/ok................ok t/test-harness......ok All tests successful. Files=4, Tests=24, 2 wallclock secs ( 0.61 cusr + 0.41 csys = 1.02 CPU) =head1 SEE ALSO The included F utility for running test scripts from the command line, L and L for writing test scripts, L for the underlying timing routines, and L for test coverage analysis. =head1 TODO Provide a way of running tests quietly (ie. no printing) for automated validation of tests. This will probably take the form of a version of runtests() which rather than printing its output returns raw data on the state of the tests. (Partially done in Test::Harness::Straps) Document the format. Fix HARNESS_COMPILE_TEST without breaking its core usage. Figure a way to report test names in the failure summary. Rework the test summary so long test names are not truncated as badly. (Partially done with new skip test styles) Add option for coverage analysis. Trap STDERR. Implement Straps total_results() Remember exit code Completely redo the print summary code. Implement Straps callbacks. (experimentally implemented) Straps->analyze_file() not taint clean, don't know if it can be Fix that damned VMS nit. Add a test for verbose. Change internal list of test results to a hash. Fix stats display when there's an overrun. Fix so perls with spaces in the filename work. Keeping whittling away at _run_all_tests() Clean up how the summary is printed. Get rid of those damned formats. =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT You can find documentation for this module with the F command. perldoc Test::Harness You can get docs for F with prove --man You can also look for information at: =over 4 =item * AnnoCPAN: Annotated CPAN documentation L =item * CPAN Ratings L =item * RT: CPAN's request tracker L =item * Search CPAN L =back =head1 SOURCE CODE The source code repository for Test::Harness is at L. =head1 AUTHORS Either Tim Bunce or Andreas Koenig, we don't know. What we know for sure is, that it was inspired by Larry Wall's F script that came with perl distributions for ages. Numerous anonymous contributors exist. Andreas Koenig held the torch for many years, and then Michael G Schwern. Current maintainer is Andy Lester C<< >>. =head1 COPYRIGHT Copyright 2002-2006 by Michael G Schwern C<< >>, Andy Lester C<< >>. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See L. =cut Convert-Binary-C-0.76/support/Test/Builder/0000755000175000001440000000000011550665107017232 5ustar mhxusersConvert-Binary-C-0.76/support/Test/Builder/Tester/0000755000175000001440000000000011550665107020500 5ustar mhxusersConvert-Binary-C-0.76/support/Test/Builder/Tester/Color.pm0000644000175000001440000000166111550664617022125 0ustar mhxuserspackage Test::Builder::Tester::Color; use strict; require Test::Builder::Tester; =head1 NAME Test::Builder::Tester::Color - turn on colour in Test::Builder::Tester =head1 SYNOPSIS When running a test script perl -MTest::Builder::Tester::Color test.t =head1 DESCRIPTION Importing this module causes the subroutine color in Test::Builder::Tester to be called with a true value causing colour highlighting to be turned on in debug output. The sole purpose of this module is to enable colour highlighting from the command line. =cut sub import { Test::Builder::Tester::color(1); } =head1 AUTHOR Copyright Mark Fowler Emark@twoshortplanks.comE 2002. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 BUGS This module will have no effect unless Term::ANSIColor is installed. =head1 SEE ALSO L, L =cut 1; Convert-Binary-C-0.76/support/Test/Builder/Module.pm0000644000175000001440000000743111550664617021027 0ustar mhxuserspackage Test::Builder::Module; use Test::Builder; require Exporter; @ISA = qw(Exporter); $VERSION = '0.03'; use strict; # 5.004's Exporter doesn't have export_to_level. my $_export_to_level = sub { my $pkg = shift; my $level = shift; (undef) = shift; # redundant arg my $callpkg = caller($level); $pkg->export($callpkg, @_); }; =head1 NAME Test::Builder::Module - Base class for test modules =head1 SYNOPSIS # Emulates Test::Simple package Your::Module; my $CLASS = __PACKAGE__; use base 'Test::Builder::Module'; @EXPORT = qw(ok); sub ok ($;$) { my $tb = $CLASS->builder; return $tb->ok(@_); } 1; =head1 DESCRIPTION This is a superclass for Test::Builder-based modules. It provides a handful of common functionality and a method of getting at the underlying Test::Builder object. =head2 Importing Test::Builder::Module is a subclass of Exporter which means your module is also a subclass of Exporter. @EXPORT, @EXPORT_OK, etc... all act normally. A few methods are provided to do the C 23> part for you. =head3 import Test::Builder::Module provides an import() method which acts in the same basic way as Test::More's, setting the plan and controling exporting of functions and variables. This allows your module to set the plan independent of Test::More. All arguments passed to import() are passed onto C<< Your::Module->builder->plan() >> with the exception of C[qw(things to import)]>. use Your::Module import => [qw(this that)], tests => 23; says to import the functions this() and that() as well as set the plan to be 23 tests. import() also sets the exported_to() attribute of your builder to be the caller of the import() function. Additional behaviors can be added to your import() method by overriding import_extra(). =cut sub import { my($class) = shift; my $test = $class->builder; my $caller = caller; $test->exported_to($caller); $class->import_extra(\@_); my(@imports) = $class->_strip_imports(\@_); $test->plan(@_); $class->$_export_to_level(1, $class, @imports); } sub _strip_imports { my $class = shift; my $list = shift; my @imports = (); my @other = (); my $idx = 0; while( $idx <= $#{$list} ) { my $item = $list->[$idx]; if( defined $item and $item eq 'import' ) { push @imports, @{$list->[$idx+1]}; $idx++; } else { push @other, $item; } $idx++; } @$list = @other; return @imports; } =head3 import_extra Your::Module->import_extra(\@import_args); import_extra() is called by import(). It provides an opportunity for you to add behaviors to your module based on its import list. Any extra arguments which shouldn't be passed on to plan() should be stripped off by this method. See Test::More for an example of its use. B This mechanism is I as it feels like a bit of an ugly hack in its current form. =cut sub import_extra {} =head2 Builder Test::Builder::Module provides some methods of getting at the underlying Test::Builder object. =head3 builder my $builder = Your::Class->builder; This method returns the Test::Builder object associated with Your::Class. It is not a constructor so you can call it as often as you like. This is the preferred way to get the Test::Builder object. You should I get it via C<< Test::Builder->new >> as was previously recommended. The object returned by builder() may change at runtime so you should call builder() inside each function rather than store it in a global. sub ok { my $builder = Your::Class->builder; return $builder->ok(@_); } =cut sub builder { return Test::Builder->new; } 1; Convert-Binary-C-0.76/support/Test/Builder/Tester.pm0000644000175000001440000003663011550664617021053 0ustar mhxuserspackage Test::Builder::Tester; use strict; use vars qw(@EXPORT $VERSION @ISA); $VERSION = "1.04"; use Test::Builder; use Symbol; use Carp; =head1 NAME Test::Builder::Tester - test testsuites that have been built with Test::Builder =head1 SYNOPSIS use Test::Builder::Tester tests => 1; use Test::More; test_out("not ok 1 - foo"); test_fail(+1); fail("foo"); test_test("fail works"); =head1 DESCRIPTION A module that helps you test testing modules that are built with B. The testing system is designed to be used by performing a three step process for each test you wish to test. This process starts with using C and C in advance to declare what the testsuite you are testing will output with B to stdout and stderr. You then can run the test(s) from your test suite that call B. At this point the output of B is safely captured by B rather than being interpreted as real test output. The final stage is to call C that will simply compare what you predeclared to what B actually outputted, and report the results back with a "ok" or "not ok" (with debugging) to the normal output. =cut #### # set up testing #### my $t = Test::Builder->new; ### # make us an exporter ### use Exporter; @ISA = qw(Exporter); @EXPORT = qw(test_out test_err test_fail test_diag test_test line_num); # _export_to_level and import stolen directly from Test::More. I am # the king of cargo cult programming ;-) # 5.004's Exporter doesn't have export_to_level. sub _export_to_level { my $pkg = shift; my $level = shift; (undef) = shift; # XXX redundant arg my $callpkg = caller($level); $pkg->export($callpkg, @_); } sub import { my $class = shift; my(@plan) = @_; my $caller = caller; $t->exported_to($caller); $t->plan(@plan); my @imports = (); foreach my $idx (0..$#plan) { if( $plan[$idx] eq 'import' ) { @imports = @{$plan[$idx+1]}; last; } } __PACKAGE__->_export_to_level(1, __PACKAGE__, @imports); } ### # set up file handles ### # create some private file handles my $output_handle = gensym; my $error_handle = gensym; # and tie them to this package my $out = tie *$output_handle, "Test::Builder::Tester::Tie", "STDOUT"; my $err = tie *$error_handle, "Test::Builder::Tester::Tie", "STDERR"; #### # exported functions #### # for remembering that we're testing and where we're testing at my $testing = 0; my $testing_num; # remembering where the file handles were originally connected my $original_output_handle; my $original_failure_handle; my $original_todo_handle; my $original_test_number; my $original_harness_state; my $original_harness_env; # function that starts testing and redirects the filehandles for now sub _start_testing { # even if we're running under Test::Harness pretend we're not # for now. This needed so Test::Builder doesn't add extra spaces $original_harness_env = $ENV{HARNESS_ACTIVE} || 0; $ENV{HARNESS_ACTIVE} = 0; # remember what the handles were set to $original_output_handle = $t->output(); $original_failure_handle = $t->failure_output(); $original_todo_handle = $t->todo_output(); # switch out to our own handles $t->output($output_handle); $t->failure_output($error_handle); $t->todo_output($error_handle); # clear the expected list $out->reset(); $err->reset(); # remeber that we're testing $testing = 1; $testing_num = $t->current_test; $t->current_test(0); # look, we shouldn't do the ending stuff $t->no_ending(1); } =head2 Functions These are the six methods that are exported as default. =over 4 =item test_out =item test_err Procedures for predeclaring the output that your test suite is expected to produce until C is called. These procedures automatically assume that each line terminates with "\n". So test_out("ok 1","ok 2"); is the same as test_out("ok 1\nok 2"); which is even the same as test_out("ok 1"); test_out("ok 2"); Once C or C (or C or C) have been called once all further output from B will be captured by B. This means that your will not be able perform further tests to the normal output in the normal way until you call C (well, unless you manually meddle with the output filehandles) =cut sub test_out(@) { # do we need to do any setup? _start_testing() unless $testing; $out->expect(@_) } sub test_err(@) { # do we need to do any setup? _start_testing() unless $testing; $err->expect(@_) } =item test_fail Because the standard failure message that B produces whenever a test fails will be a common occurrence in your test error output, and because has changed between Test::Builder versions, rather than forcing you to call C with the string all the time like so test_err("# Failed test ($0 at line ".line_num(+1).")"); C exists as a convenience function that can be called instead. It takes one argument, the offset from the current line that the line that causes the fail is on. test_fail(+1); This means that the example in the synopsis could be rewritten more simply as: test_out("not ok 1 - foo"); test_fail(+1); fail("foo"); test_test("fail works"); =cut sub test_fail { # do we need to do any setup? _start_testing() unless $testing; # work out what line we should be on my ($package, $filename, $line) = caller; $line = $line + (shift() || 0); # prevent warnings # expect that on stderr $err->expect("# Failed test ($0 at line $line)"); } =item test_diag As most of the remaining expected output to the error stream will be created by Test::Builder's C function, B provides a convience function C that you can use instead of C. The C function prepends comment hashes and spacing to the start and newlines to the end of the expected output passed to it and adds it to the list of expected error output. So, instead of writing test_err("# Couldn't open file"); you can write test_diag("Couldn't open file"); Remember that B's diag function will not add newlines to the end of output and test_diag will. So to check Test::Builder->new->diag("foo\n","bar\n"); You would do test_diag("foo","bar") without the newlines. =cut sub test_diag { # do we need to do any setup? _start_testing() unless $testing; # expect the same thing, but prepended with "# " local $_; $err->expect(map {"# $_"} @_) } =item test_test Actually performs the output check testing the tests, comparing the data (with C) that we have captured from B against that that was declared with C and C. This takes name/value pairs that effect how the test is run. =over =item title (synonym 'name', 'label') The name of the test that will be displayed after the C or C. =item skip_out Setting this to a true value will cause the test to ignore if the output sent by the test to the output stream does not match that declared with C. =item skip_err Setting this to a true value will cause the test to ignore if the output sent by the test to the error stream does not match that declared with C. =back As a convience, if only one argument is passed then this argument is assumed to be the name of the test (as in the above examples.) Once C has been run test output will be redirected back to the original filehandles that B was connected to (probably STDOUT and STDERR,) meaning any further tests you run will function normally and cause success/errors for B. =cut sub test_test { # decode the arguements as described in the pod my $mess; my %args; if (@_ == 1) { $mess = shift } else { %args = @_; $mess = $args{name} if exists($args{name}); $mess = $args{title} if exists($args{title}); $mess = $args{label} if exists($args{label}); } # er, are we testing? croak "Not testing. You must declare output with a test function first." unless $testing; # okay, reconnect the test suite back to the saved handles $t->output($original_output_handle); $t->failure_output($original_failure_handle); $t->todo_output($original_todo_handle); # restore the test no, etc, back to the original point $t->current_test($testing_num); $testing = 0; # re-enable the original setting of the harness $ENV{HARNESS_ACTIVE} = $original_harness_env; # check the output we've stashed unless ($t->ok( ($args{skip_out} || $out->check) && ($args{skip_err} || $err->check), $mess)) { # print out the diagnostic information about why this # test failed local $_; $t->diag(map {"$_\n"} $out->complaint) unless $args{skip_out} || $out->check; $t->diag(map {"$_\n"} $err->complaint) unless $args{skip_err} || $err->check; } } =item line_num A utility function that returns the line number that the function was called on. You can pass it an offset which will be added to the result. This is very useful for working out the correct text of diagnostic functions that contain line numbers. Essentially this is the same as the C<__LINE__> macro, but the C idiom is arguably nicer. =cut sub line_num { my ($package, $filename, $line) = caller; return $line + (shift() || 0); # prevent warnings } =back In addition to the six exported functions there there exists one function that can only be accessed with a fully qualified function call. =over 4 =item color When C is called and the output that your tests generate does not match that which you declared, C will print out debug information showing the two conflicting versions. As this output itself is debug information it can be confusing which part of the output is from C and which was the original output from your original tests. Also, it may be hard to spot things like extraneous whitespace at the end of lines that may cause your test to fail even though the output looks similar. To assist you, if you have the B module installed (which you should do by default from perl 5.005 onwards), C can colour the background of the debug information to disambiguate the different types of output. The debug output will have it's background coloured green and red. The green part represents the text which is the same between the executed and actual output, the red shows which part differs. The C function determines if colouring should occur or not. Passing it a true or false value will enable or disable colouring respectively, and the function called with no argument will return the current setting. To enable colouring from the command line, you can use the B module like so: perl -Mlib=Text::Builder::Tester::Color test.t Or by including the B module directly in the PERL5LIB. =cut my $color; sub color { $color = shift if @_; $color; } =back =head1 BUGS Calls C<no_ending>> turning off the ending tests. This is needed as otherwise it will trip out because we've run more tests than we strictly should have and it'll register any failures we had that we were testing for as real failures. The color function doesn't work unless B is installed and is compatible with your terminal. Bugs (and requests for new features) can be reported to the author though the CPAN RT system: L =head1 AUTHOR Copyright Mark Fowler Emark@twoshortplanks.comE 2002, 2004. Some code taken from B and B, written by by Michael G Schwern Eschwern@pobox.comE. Hence, those parts Copyright Micheal G Schwern 2001. Used and distributed with permission. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 NOTES This code has been tested explicitly on the following versions of perl: 5.7.3, 5.6.1, 5.6.0, 5.005_03, 5.004_05 and 5.004. Thanks to Richard Clamp Erichardc@unixbeard.netE for letting me use his testing system to try this module out on. =head1 SEE ALSO L, L, L. =cut 1; #################################################################### # Helper class that is used to remember expected and received data package Test::Builder::Tester::Tie; ## # add line(s) to be expected sub expect { my $self = shift; my @checks = @_; foreach my $check (@checks) { $check = $self->_translate_Failed_check($check); push @{$self->[2]}, ref $check ? $check : "$check\n"; } } sub _translate_Failed_check { my($self, $check) = @_; if( $check =~ /\A(.*)# (Failed .*test) \((.*?) at line (\d+)\)\z/ ) { $check = qr/\Q$1\E#\s+\Q$2\E.*?\n?.*?\Q$3\E at line \Q$4\E.*\n?/; } return $check; } ## # return true iff the expected data matches the got data sub check { my $self = shift; # turn off warnings as these might be undef local $^W = 0; my @checks = @{$self->[2]}; my $got = $self->[1]; foreach my $check (@checks) { $check = qr/^\Q$check\E/ unless ref $check; return 0 unless $got =~ s/^$check//; } return length $got == 0; } ## # a complaint message about the inputs not matching (to be # used for debugging messages) sub complaint { my $self = shift; my $type = $self->type; my $got = $self->got; my $wanted = join "\n", @{$self->wanted}; # are we running in colour mode? if (Test::Builder::Tester::color) { # get color eval "require Term::ANSIColor"; unless ($@) { # colours my $green = Term::ANSIColor::color("black"). Term::ANSIColor::color("on_green"); my $red = Term::ANSIColor::color("black"). Term::ANSIColor::color("on_red"); my $reset = Term::ANSIColor::color("reset"); # work out where the two strings start to differ my $char = 0; $char++ while substr($got, $char, 1) eq substr($wanted, $char, 1); # get the start string and the two end strings my $start = $green . substr($wanted, 0, $char); my $gotend = $red . substr($got , $char) . $reset; my $wantedend = $red . substr($wanted, $char) . $reset; # make the start turn green on and off $start =~ s/\n/$reset\n$green/g; # make the ends turn red on and off $gotend =~ s/\n/$reset\n$red/g; $wantedend =~ s/\n/$reset\n$red/g; # rebuild the strings $got = $start . $gotend; $wanted = $start . $wantedend; } } return "$type is:\n" . "$got\nnot:\n$wanted\nas expected" } ## # forget all expected and got data sub reset { my $self = shift; @$self = ($self->[0], '', []); } sub got { my $self = shift; return $self->[1]; } sub wanted { my $self = shift; return $self->[2]; } sub type { my $self = shift; return $self->[0]; } ### # tie interface ### sub PRINT { my $self = shift; $self->[1] .= join '', @_; } sub TIEHANDLE { my($class, $type) = @_; my $self = bless [$type], $class; $self->reset; return $self; } sub READ {} sub READLINE {} sub GETC {} sub FILENO {} 1; Convert-Binary-C-0.76/support/Test/Builder.pm0000644000175000001440000011536511550664617017610 0ustar mhxuserspackage Test::Builder; use 5.004; # $^C was only introduced in 5.005-ish. We do this to prevent # use of uninitialized value warnings in older perls. $^C ||= 0; use strict; use vars qw($VERSION); $VERSION = '0.33'; $VERSION = eval $VERSION; # make the alpha version come out as a number # Make Test::Builder thread-safe for ithreads. BEGIN { use Config; # Load threads::shared when threads are turned on if( $] >= 5.008 && $Config{useithreads} && $INC{'threads.pm'}) { require threads::shared; # Hack around YET ANOTHER threads::shared bug. It would # occassionally forget the contents of the variable when sharing it. # So we first copy the data, then share, then put our copy back. *share = sub (\[$@%]) { my $type = ref $_[0]; my $data; if( $type eq 'HASH' ) { %$data = %{$_[0]}; } elsif( $type eq 'ARRAY' ) { @$data = @{$_[0]}; } elsif( $type eq 'SCALAR' ) { $$data = ${$_[0]}; } else { die "Unknown type: ".$type; } $_[0] = &threads::shared::share($_[0]); if( $type eq 'HASH' ) { %{$_[0]} = %$data; } elsif( $type eq 'ARRAY' ) { @{$_[0]} = @$data; } elsif( $type eq 'SCALAR' ) { ${$_[0]} = $$data; } else { die "Unknown type: ".$type; } return $_[0]; }; } # 5.8.0's threads::shared is busted when threads are off. # We emulate it here. else { *share = sub { return $_[0] }; *lock = sub { 0 }; } } =head1 NAME Test::Builder - Backend for building test libraries =head1 SYNOPSIS package My::Test::Module; use Test::Builder; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(ok); my $Test = Test::Builder->new; $Test->output('my_logfile'); sub import { my($self) = shift; my $pack = caller; $Test->exported_to($pack); $Test->plan(@_); $self->export_to_level(1, $self, 'ok'); } sub ok { my($test, $name) = @_; $Test->ok($test, $name); } =head1 DESCRIPTION Test::Simple and Test::More have proven to be popular testing modules, but they're not always flexible enough. Test::Builder provides the a building block upon which to write your own test libraries I. =head2 Construction =over 4 =item B my $Test = Test::Builder->new; Returns a Test::Builder object representing the current state of the test. Since you only run one test per program C always returns the same Test::Builder object. No matter how many times you call new(), you're getting the same object. This is called a singleton. This is done so that multiple modules share such global information as the test counter and where test output is going. If you want a completely new Test::Builder object different from the singleton, use C. =cut my $Test = Test::Builder->new; sub new { my($class) = shift; $Test ||= $class->create; return $Test; } =item B my $Test = Test::Builder->create; Ok, so there can be more than one Test::Builder object and this is how you get it. You might use this instead of C if you're testing a Test::Builder based module, but otherwise you probably want C. B: the implementation is not complete. C, for example, is still shared amongst B Test::Builder objects, even ones created using this method. Also, the method name may change in the future. =cut sub create { my $class = shift; my $self = bless {}, $class; $self->reset; return $self; } =item B $Test->reset; Reinitializes the Test::Builder singleton to its original state. Mostly useful for tests run in persistent environments where the same test might be run multiple times in the same process. =cut use vars qw($Level); sub reset { my ($self) = @_; # We leave this a global because it has to be localized and localizing # hash keys is just asking for pain. Also, it was documented. $Level = 1; $self->{Test_Died} = 0; $self->{Have_Plan} = 0; $self->{No_Plan} = 0; $self->{Original_Pid} = $$; share($self->{Curr_Test}); $self->{Curr_Test} = 0; $self->{Test_Results} = &share([]); $self->{Exported_To} = undef; $self->{Expected_Tests} = 0; $self->{Skip_All} = 0; $self->{Use_Nums} = 1; $self->{No_Header} = 0; $self->{No_Ending} = 0; $self->_dup_stdhandles unless $^C; return undef; } =back =head2 Setting up tests These methods are for setting up tests and declaring how many there are. You usually only want to call one of these methods. =over 4 =item B my $pack = $Test->exported_to; $Test->exported_to($pack); Tells Test::Builder what package you exported your functions to. This is important for getting TODO tests right. =cut sub exported_to { my($self, $pack) = @_; if( defined $pack ) { $self->{Exported_To} = $pack; } return $self->{Exported_To}; } =item B $Test->plan('no_plan'); $Test->plan( skip_all => $reason ); $Test->plan( tests => $num_tests ); A convenient way to set up your tests. Call this and Test::Builder will print the appropriate headers and take the appropriate actions. If you call plan(), don't call any of the other methods below. =cut sub plan { my($self, $cmd, $arg) = @_; return unless $cmd; if( $self->{Have_Plan} ) { die sprintf "You tried to plan twice! Second plan at %s line %d\n", ($self->caller)[1,2]; } if( $cmd eq 'no_plan' ) { $self->no_plan; } elsif( $cmd eq 'skip_all' ) { return $self->skip_all($arg); } elsif( $cmd eq 'tests' ) { if( $arg ) { return $self->expected_tests($arg); } elsif( !defined $arg ) { die "Got an undefined number of tests. Looks like you tried to ". "say how many tests you plan to run but made a mistake.\n"; } elsif( !$arg ) { die "You said to run 0 tests! You've got to run something.\n"; } } else { require Carp; my @args = grep { defined } ($cmd, $arg); Carp::croak("plan() doesn't understand @args"); } return 1; } =item B my $max = $Test->expected_tests; $Test->expected_tests($max); Gets/sets the # of tests we expect this test to run and prints out the appropriate headers. =cut sub expected_tests { my $self = shift; my($max) = @_; if( @_ ) { die "Number of tests must be a postive integer. You gave it '$max'.\n" unless $max =~ /^\+?\d+$/ and $max > 0; $self->{Expected_Tests} = $max; $self->{Have_Plan} = 1; $self->_print("1..$max\n") unless $self->no_header; } return $self->{Expected_Tests}; } =item B $Test->no_plan; Declares that this test will run an indeterminate # of tests. =cut sub no_plan { my $self = shift; $self->{No_Plan} = 1; $self->{Have_Plan} = 1; } =item B $plan = $Test->has_plan Find out whether a plan has been defined. $plan is either C (no plan has been set), C (indeterminate # of tests) or an integer (the number of expected tests). =cut sub has_plan { my $self = shift; return($self->{Expected_Tests}) if $self->{Expected_Tests}; return('no_plan') if $self->{No_Plan}; return(undef); }; =item B $Test->skip_all; $Test->skip_all($reason); Skips all the tests, using the given $reason. Exits immediately with 0. =cut sub skip_all { my($self, $reason) = @_; my $out = "1..0"; $out .= " # Skip $reason" if $reason; $out .= "\n"; $self->{Skip_All} = 1; $self->_print($out) unless $self->no_header; exit(0); } =back =head2 Running tests These actually run the tests, analogous to the functions in Test::More. $name is always optional. =over 4 =item B $Test->ok($test, $name); Your basic test. Pass if $test is true, fail if $test is false. Just like Test::Simple's ok(). =cut sub ok { my($self, $test, $name) = @_; # $test might contain an object which we don't want to accidentally # store, so we turn it into a boolean. $test = $test ? 1 : 0; unless( $self->{Have_Plan} ) { require Carp; Carp::croak("You tried to run a test without a plan! Gotta have a plan."); } lock $self->{Curr_Test}; $self->{Curr_Test}++; # In case $name is a string overloaded object, force it to stringify. $self->_unoverload_str(\$name); $self->diag(<caller; my $todo = $self->todo($pack); $self->_unoverload_str(\$todo); my $out; my $result = &share({}); unless( $test ) { $out .= "not "; @$result{ 'ok', 'actual_ok' } = ( ( $todo ? 1 : 0 ), 0 ); } else { @$result{ 'ok', 'actual_ok' } = ( 1, $test ); } $out .= "ok"; $out .= " $self->{Curr_Test}" if $self->use_numbers; if( defined $name ) { $name =~ s|#|\\#|g; # # in a name can confuse Test::Harness. $out .= " - $name"; $result->{name} = $name; } else { $result->{name} = ''; } if( $todo ) { $out .= " # TODO $todo"; $result->{reason} = $todo; $result->{type} = 'todo'; } else { $result->{reason} = ''; $result->{type} = ''; } $self->{Test_Results}[$self->{Curr_Test}-1] = $result; $out .= "\n"; $self->_print($out); unless( $test ) { my $msg = $todo ? "Failed (TODO)" : "Failed"; $self->_print_diag("\n") if $ENV{HARNESS_ACTIVE}; if( defined $name ) { $self->diag(qq[ $msg test '$name'\n]); $self->diag(qq[ in $file at line $line.\n]); } else { $self->diag(qq[ $msg test in $file at line $line.\n]); } } return $test ? 1 : 0; } sub _unoverload { my $self = shift; my $type = shift; local($@,$!); eval { require overload } || return; foreach my $thing (@_) { eval { if( _is_object($$thing) ) { if( my $string_meth = overload::Method($$thing, $type) ) { $$thing = $$thing->$string_meth(); } } }; } } sub _is_object { my $thing = shift; return eval { ref $thing && $thing->isa('UNIVERSAL') } ? 1 : 0; } sub _unoverload_str { my $self = shift; $self->_unoverload(q[""], @_); } sub _unoverload_num { my $self = shift; $self->_unoverload('0+', @_); for my $val (@_) { next unless $self->_is_dualvar($$val); $$val = $$val+0; } } # This is a hack to detect a dualvar such as $! sub _is_dualvar { my($self, $val) = @_; local $^W = 0; my $numval = $val+0; return 1 if $numval != 0 and $numval ne $val; } =item B $Test->is_eq($got, $expected, $name); Like Test::More's is(). Checks if $got eq $expected. This is the string version. =item B $Test->is_num($got, $expected, $name); Like Test::More's is(). Checks if $got == $expected. This is the numeric version. =cut sub is_eq { my($self, $got, $expect, $name) = @_; local $Level = $Level + 1; $self->_unoverload_str(\$got, \$expect); if( !defined $got || !defined $expect ) { # undef only matches undef and nothing else my $test = !defined $got && !defined $expect; $self->ok($test, $name); $self->_is_diag($got, 'eq', $expect) unless $test; return $test; } return $self->cmp_ok($got, 'eq', $expect, $name); } sub is_num { my($self, $got, $expect, $name) = @_; local $Level = $Level + 1; $self->_unoverload_num(\$got, \$expect); if( !defined $got || !defined $expect ) { # undef only matches undef and nothing else my $test = !defined $got && !defined $expect; $self->ok($test, $name); $self->_is_diag($got, '==', $expect) unless $test; return $test; } return $self->cmp_ok($got, '==', $expect, $name); } sub _is_diag { my($self, $got, $type, $expect) = @_; foreach my $val (\$got, \$expect) { if( defined $$val ) { if( $type eq 'eq' ) { # quote and force string context $$val = "'$$val'" } else { # force numeric context $self->_unoverload_num($val); } } else { $$val = 'undef'; } } return $self->diag(sprintf < $Test->isnt_eq($got, $dont_expect, $name); Like Test::More's isnt(). Checks if $got ne $dont_expect. This is the string version. =item B $Test->isnt_num($got, $dont_expect, $name); Like Test::More's isnt(). Checks if $got ne $dont_expect. This is the numeric version. =cut sub isnt_eq { my($self, $got, $dont_expect, $name) = @_; local $Level = $Level + 1; if( !defined $got || !defined $dont_expect ) { # undef only matches undef and nothing else my $test = defined $got || defined $dont_expect; $self->ok($test, $name); $self->_cmp_diag($got, 'ne', $dont_expect) unless $test; return $test; } return $self->cmp_ok($got, 'ne', $dont_expect, $name); } sub isnt_num { my($self, $got, $dont_expect, $name) = @_; local $Level = $Level + 1; if( !defined $got || !defined $dont_expect ) { # undef only matches undef and nothing else my $test = defined $got || defined $dont_expect; $self->ok($test, $name); $self->_cmp_diag($got, '!=', $dont_expect) unless $test; return $test; } return $self->cmp_ok($got, '!=', $dont_expect, $name); } =item B $Test->like($this, qr/$regex/, $name); $Test->like($this, '/$regex/', $name); Like Test::More's like(). Checks if $this matches the given $regex. You'll want to avoid qr// if you want your tests to work before 5.005. =item B $Test->unlike($this, qr/$regex/, $name); $Test->unlike($this, '/$regex/', $name); Like Test::More's unlike(). Checks if $this B the given $regex. =cut sub like { my($self, $this, $regex, $name) = @_; local $Level = $Level + 1; $self->_regex_ok($this, $regex, '=~', $name); } sub unlike { my($self, $this, $regex, $name) = @_; local $Level = $Level + 1; $self->_regex_ok($this, $regex, '!~', $name); } =item B $Test->maybe_regex(qr/$regex/); $Test->maybe_regex('/$regex/'); Convenience method for building testing functions that take regular expressions as arguments, but need to work before perl 5.005. Takes a quoted regular expression produced by qr//, or a string representing a regular expression. Returns a Perl value which may be used instead of the corresponding regular expression, or undef if it's argument is not recognised. For example, a version of like(), sans the useful diagnostic messages, could be written as: sub laconic_like { my ($self, $this, $regex, $name) = @_; my $usable_regex = $self->maybe_regex($regex); die "expecting regex, found '$regex'\n" unless $usable_regex; $self->ok($this =~ m/$usable_regex/, $name); } =cut sub maybe_regex { my ($self, $regex) = @_; my $usable_regex = undef; return $usable_regex unless defined $regex; my($re, $opts); # Check for qr/foo/ if( ref $regex eq 'Regexp' ) { $usable_regex = $regex; } # Check for '/foo/' or 'm,foo,' elsif( ($re, $opts) = $regex =~ m{^ /(.*)/ (\w*) $ }sx or (undef, $re, $opts) = $regex =~ m,^ m([^\w\s]) (.+) \1 (\w*) $,sx ) { $usable_regex = length $opts ? "(?$opts)$re" : $re; } return $usable_regex; }; sub _regex_ok { my($self, $this, $regex, $cmp, $name) = @_; my $ok = 0; my $usable_regex = $self->maybe_regex($regex); unless (defined $usable_regex) { $ok = $self->ok( 0, $name ); $self->diag(" '$regex' doesn't look much like a regex to me."); return $ok; } { my $test; my $code = $self->_caller_context; local($@, $!); # Yes, it has to look like this or 5.4.5 won't see the #line directive. # Don't ask me, man, I just work here. $test = eval " $code" . q{$test = $this =~ /$usable_regex/ ? 1 : 0}; $test = !$test if $cmp eq '!~'; local $Level = $Level + 1; $ok = $self->ok( $test, $name ); } unless( $ok ) { $this = defined $this ? "'$this'" : 'undef'; my $match = $cmp eq '=~' ? "doesn't match" : "matches"; $self->diag(sprintf < $Test->cmp_ok($this, $type, $that, $name); Works just like Test::More's cmp_ok(). $Test->cmp_ok($big_num, '!=', $other_big_num); =cut my %numeric_cmps = map { ($_, 1) } ("<", "<=", ">", ">=", "==", "!=", "<=>"); sub cmp_ok { my($self, $got, $type, $expect, $name) = @_; # Treat overloaded objects as numbers if we're asked to do a # numeric comparison. my $unoverload = $numeric_cmps{$type} ? '_unoverload_num' : '_unoverload_str'; $self->$unoverload(\$got, \$expect); my $test; { local($@,$!); # don't interfere with $@ # eval() sometimes resets $! my $code = $self->_caller_context; # Yes, it has to look like this or 5.4.5 won't see the #line directive. # Don't ask me, man, I just work here. $test = eval " $code" . "\$got $type \$expect;"; } local $Level = $Level + 1; my $ok = $self->ok($test, $name); unless( $ok ) { if( $type =~ /^(eq|==)$/ ) { $self->_is_diag($got, $type, $expect); } else { $self->_cmp_diag($got, $type, $expect); } } return $ok; } sub _cmp_diag { my($self, $got, $type, $expect) = @_; $got = defined $got ? "'$got'" : 'undef'; $expect = defined $expect ? "'$expect'" : 'undef'; return $self->diag(sprintf <caller(1); my $code = ''; $code .= "#line $line $file\n" if defined $file and defined $line; return $code; } =item B $Test->BAIL_OUT($reason); Indicates to the Test::Harness that things are going so badly all testing should terminate. This includes running any additional test scripts. It will exit with 255. =cut sub BAIL_OUT { my($self, $reason) = @_; $self->{Bailed_Out} = 1; $self->_print("Bail out! $reason"); exit 255; } =for deprecated BAIL_OUT() used to be BAILOUT() =cut *BAILOUT = \&BAIL_OUT; =item B $Test->skip; $Test->skip($why); Skips the current test, reporting $why. =cut sub skip { my($self, $why) = @_; $why ||= ''; $self->_unoverload_str(\$why); unless( $self->{Have_Plan} ) { require Carp; Carp::croak("You tried to run tests without a plan! Gotta have a plan."); } lock($self->{Curr_Test}); $self->{Curr_Test}++; $self->{Test_Results}[$self->{Curr_Test}-1] = &share({ 'ok' => 1, actual_ok => 1, name => '', type => 'skip', reason => $why, }); my $out = "ok"; $out .= " $self->{Curr_Test}" if $self->use_numbers; $out .= " # skip"; $out .= " $why" if length $why; $out .= "\n"; $self->_print($out); return 1; } =item B $Test->todo_skip; $Test->todo_skip($why); Like skip(), only it will declare the test as failing and TODO. Similar to print "not ok $tnum # TODO $why\n"; =cut sub todo_skip { my($self, $why) = @_; $why ||= ''; unless( $self->{Have_Plan} ) { require Carp; Carp::croak("You tried to run tests without a plan! Gotta have a plan."); } lock($self->{Curr_Test}); $self->{Curr_Test}++; $self->{Test_Results}[$self->{Curr_Test}-1] = &share({ 'ok' => 1, actual_ok => 0, name => '', type => 'todo_skip', reason => $why, }); my $out = "not ok"; $out .= " $self->{Curr_Test}" if $self->use_numbers; $out .= " # TODO & SKIP $why\n"; $self->_print($out); return 1; } =begin _unimplemented =item B $Test->skip_rest; $Test->skip_rest($reason); Like skip(), only it skips all the rest of the tests you plan to run and terminates the test. If you're running under no_plan, it skips once and terminates the test. =end _unimplemented =back =head2 Test style =over 4 =item B $Test->level($how_high); How far up the call stack should $Test look when reporting where the test failed. Defaults to 1. Setting $Test::Builder::Level overrides. This is typically useful localized: { local $Test::Builder::Level = 2; $Test->ok($test); } =cut sub level { my($self, $level) = @_; if( defined $level ) { $Level = $level; } return $Level; } =item B $Test->use_numbers($on_or_off); Whether or not the test should output numbers. That is, this if true: ok 1 ok 2 ok 3 or this if false ok ok ok Most useful when you can't depend on the test output order, such as when threads or forking is involved. Test::Harness will accept either, but avoid mixing the two styles. Defaults to on. =cut sub use_numbers { my($self, $use_nums) = @_; if( defined $use_nums ) { $self->{Use_Nums} = $use_nums; } return $self->{Use_Nums}; } =item B $Test->no_diag($no_diag); If set true no diagnostics will be printed. This includes calls to diag(). =item B $Test->no_ending($no_ending); Normally, Test::Builder does some extra diagnostics when the test ends. It also changes the exit code as described below. If this is true, none of that will be done. =item B $Test->no_header($no_header); If set to true, no "1..N" header will be printed. =cut foreach my $attribute (qw(No_Header No_Ending No_Diag)) { my $method = lc $attribute; my $code = sub { my($self, $no) = @_; if( defined $no ) { $self->{$attribute} = $no; } return $self->{$attribute}; }; no strict 'refs'; *{__PACKAGE__.'::'.$method} = $code; } =back =head2 Output Controlling where the test output goes. It's ok for your test to change where STDOUT and STDERR point to, Test::Builder's default output settings will not be affected. =over 4 =item B $Test->diag(@msgs); Prints out the given @msgs. Like C, arguments are simply appended together. Normally, it uses the failure_output() handle, but if this is for a TODO test, the todo_output() handle is used. Output will be indented and marked with a # so as not to interfere with test output. A newline will be put on the end if there isn't one already. We encourage using this rather than calling print directly. Returns false. Why? Because diag() is often used in conjunction with a failing test (C) it "passes through" the failure. return ok(...) || diag(...); =for blame transfer Mark Fowler =cut sub diag { my($self, @msgs) = @_; return if $self->no_diag; return unless @msgs; # Prevent printing headers when compiling (i.e. -c) return if $^C; # Smash args together like print does. # Convert undef to 'undef' so its readable. my $msg = join '', map { defined($_) ? $_ : 'undef' } @msgs; # Escape each line with a #. $msg =~ s/^/# /gm; # Stick a newline on the end if it needs it. $msg .= "\n" unless $msg =~ /\n\Z/; local $Level = $Level + 1; $self->_print_diag($msg); return 0; } =begin _private =item B<_print> $Test->_print(@msgs); Prints to the output() filehandle. =end _private =cut sub _print { my($self, @msgs) = @_; # Prevent printing headers when only compiling. Mostly for when # tests are deparsed with B::Deparse return if $^C; my $msg = join '', @msgs; local($\, $", $,) = (undef, ' ', ''); my $fh = $self->output; # Escape each line after the first with a # so we don't # confuse Test::Harness. $msg =~ s/\n(.)/\n# $1/sg; # Stick a newline on the end if it needs it. $msg .= "\n" unless $msg =~ /\n\Z/; print $fh $msg; } =item B<_print_diag> $Test->_print_diag(@msg); Like _print, but prints to the current diagnostic filehandle. =cut sub _print_diag { my $self = shift; local($\, $", $,) = (undef, ' ', ''); my $fh = $self->todo ? $self->todo_output : $self->failure_output; print $fh @_; } =item B $Test->output($fh); $Test->output($file); Where normal "ok/not ok" test output should go. Defaults to STDOUT. =item B $Test->failure_output($fh); $Test->failure_output($file); Where diagnostic output on test failures and diag() should go. Defaults to STDERR. =item B $Test->todo_output($fh); $Test->todo_output($file); Where diagnostics about todo test failures and diag() should go. Defaults to STDOUT. =cut sub output { my($self, $fh) = @_; if( defined $fh ) { $self->{Out_FH} = _new_fh($fh); } return $self->{Out_FH}; } sub failure_output { my($self, $fh) = @_; if( defined $fh ) { $self->{Fail_FH} = _new_fh($fh); } return $self->{Fail_FH}; } sub todo_output { my($self, $fh) = @_; if( defined $fh ) { $self->{Todo_FH} = _new_fh($fh); } return $self->{Todo_FH}; } sub _new_fh { my($file_or_fh) = shift; my $fh; if( _is_fh($file_or_fh) ) { $fh = $file_or_fh; } else { $fh = do { local *FH }; open $fh, ">$file_or_fh" or die "Can't open test output log $file_or_fh: $!"; _autoflush($fh); } return $fh; } sub _is_fh { my $maybe_fh = shift; return 0 unless defined $maybe_fh; return 1 if ref \$maybe_fh eq 'GLOB'; # its a glob return UNIVERSAL::isa($maybe_fh, 'GLOB') || UNIVERSAL::isa($maybe_fh, 'IO::Handle') || # 5.5.4's tied() and can() doesn't like getting undef UNIVERSAL::can((tied($maybe_fh) || ''), 'TIEHANDLE'); } sub _autoflush { my($fh) = shift; my $old_fh = select $fh; $| = 1; select $old_fh; } sub _dup_stdhandles { my $self = shift; $self->_open_testhandles; # Set everything to unbuffered else plain prints to STDOUT will # come out in the wrong order from our own prints. _autoflush(\*TESTOUT); _autoflush(\*STDOUT); _autoflush(\*TESTERR); _autoflush(\*STDERR); $self->output(\*TESTOUT); $self->failure_output(\*TESTERR); $self->todo_output(\*TESTOUT); } my $Opened_Testhandles = 0; sub _open_testhandles { return if $Opened_Testhandles; # We dup STDOUT and STDERR so people can change them in their # test suites while still getting normal test output. open(TESTOUT, ">&STDOUT") or die "Can't dup STDOUT: $!"; open(TESTERR, ">&STDERR") or die "Can't dup STDERR: $!"; $Opened_Testhandles = 1; } =back =head2 Test Status and Info =over 4 =item B my $curr_test = $Test->current_test; $Test->current_test($num); Gets/sets the current test number we're on. You usually shouldn't have to set this. If set forward, the details of the missing tests are filled in as 'unknown'. if set backward, the details of the intervening tests are deleted. You can erase history if you really want to. =cut sub current_test { my($self, $num) = @_; lock($self->{Curr_Test}); if( defined $num ) { unless( $self->{Have_Plan} ) { require Carp; Carp::croak("Can't change the current test number without a plan!"); } $self->{Curr_Test} = $num; # If the test counter is being pushed forward fill in the details. my $test_results = $self->{Test_Results}; if( $num > @$test_results ) { my $start = @$test_results ? @$test_results : 0; for ($start..$num-1) { $test_results->[$_] = &share({ 'ok' => 1, actual_ok => undef, reason => 'incrementing test number', type => 'unknown', name => undef }); } } # If backward, wipe history. Its their funeral. elsif( $num < @$test_results ) { $#{$test_results} = $num - 1; } } return $self->{Curr_Test}; } =item B

my @tests = $Test->summary; A simple summary of the tests so far. True for pass, false for fail. This is a logical pass/fail, so todos are passes. Of course, test #1 is $tests[0], etc... =cut sub summary { my($self) = shift; return map { $_->{'ok'} } @{ $self->{Test_Results} }; } =item B
my @tests = $Test->details; Like summary(), but with a lot more detail. $tests[$test_num - 1] = { 'ok' => is the test considered a pass? actual_ok => did it literally say 'ok'? name => name of the test (if any) type => type of test (if any, see below). reason => reason for the above (if any) }; 'ok' is true if Test::Harness will consider the test to be a pass. 'actual_ok' is a reflection of whether or not the test literally printed 'ok' or 'not ok'. This is for examining the result of 'todo' tests. 'name' is the name of the test. 'type' indicates if it was a special test. Normal tests have a type of ''. Type can be one of the following: skip see skip() todo see todo() todo_skip see todo_skip() unknown see below Sometimes the Test::Builder test counter is incremented without it printing any test output, for example, when current_test() is changed. In these cases, Test::Builder doesn't know the result of the test, so it's type is 'unkown'. These details for these tests are filled in. They are considered ok, but the name and actual_ok is left undef. For example "not ok 23 - hole count # TODO insufficient donuts" would result in this structure: $tests[22] = # 23 - 1, since arrays start from 0. { ok => 1, # logically, the test passed since it's todo actual_ok => 0, # in absolute terms, it failed name => 'hole count', type => 'todo', reason => 'insufficient donuts' }; =cut sub details { my $self = shift; return @{ $self->{Test_Results} }; } =item B my $todo_reason = $Test->todo; my $todo_reason = $Test->todo($pack); todo() looks for a $TODO variable in your tests. If set, all tests will be considered 'todo' (see Test::More and Test::Harness for details). Returns the reason (ie. the value of $TODO) if running as todo tests, false otherwise. todo() is about finding the right package to look for $TODO in. It uses the exported_to() package to find it. If that's not set, it's pretty good at guessing the right package to look at based on $Level. Sometimes there is some confusion about where todo() should be looking for the $TODO variable. If you want to be sure, tell it explicitly what $pack to use. =cut sub todo { my($self, $pack) = @_; $pack = $pack || $self->exported_to || $self->caller($Level); return 0 unless $pack; no strict 'refs'; return defined ${$pack.'::TODO'} ? ${$pack.'::TODO'} : 0; } =item B my $package = $Test->caller; my($pack, $file, $line) = $Test->caller; my($pack, $file, $line) = $Test->caller($height); Like the normal caller(), except it reports according to your level(). =cut sub caller { my($self, $height) = @_; $height ||= 0; my @caller = CORE::caller($self->level + $height + 1); return wantarray ? @caller : $caller[0]; } =back =cut =begin _private =over 4 =item B<_sanity_check> $self->_sanity_check(); Runs a bunch of end of test sanity checks to make sure reality came through ok. If anything is wrong it will die with a fairly friendly error message. =cut #'# sub _sanity_check { my $self = shift; _whoa($self->{Curr_Test} < 0, 'Says here you ran a negative number of tests!'); _whoa(!$self->{Have_Plan} and $self->{Curr_Test}, 'Somehow your tests ran without a plan!'); _whoa($self->{Curr_Test} != @{ $self->{Test_Results} }, 'Somehow you got a different number of results than tests ran!'); } =item B<_whoa> _whoa($check, $description); A sanity check, similar to assert(). If the $check is true, something has gone horribly wrong. It will die with the given $description and a note to contact the author. =cut sub _whoa { my($check, $desc) = @_; if( $check ) { die < _my_exit($exit_num); Perl seems to have some trouble with exiting inside an END block. 5.005_03 and 5.6.1 both seem to do odd things. Instead, this function edits $? directly. It should ONLY be called from inside an END block. It doesn't actually exit, that's your job. =cut sub _my_exit { $? = $_[0]; return 1; } =back =end _private =cut $SIG{__DIE__} = sub { # We don't want to muck with death in an eval, but $^S isn't # totally reliable. 5.005_03 and 5.6.1 both do the wrong thing # with it. Instead, we use caller. This also means it runs under # 5.004! my $in_eval = 0; for( my $stack = 1; my $sub = (CORE::caller($stack))[3]; $stack++ ) { $in_eval = 1 if $sub =~ /^\(eval\)/; } $Test->{Test_Died} = 1 unless $in_eval; }; sub _ending { my $self = shift; $self->_sanity_check(); # Don't bother with an ending if this is a forked copy. Only the parent # should do the ending. # Exit if plan() was never called. This is so "require Test::Simple" # doesn't puke. # Don't do an ending if we bailed out. if( ($self->{Original_Pid} != $$) or (!$self->{Have_Plan} && !$self->{Test_Died}) or $self->{Bailed_Out} ) { _my_exit($?); return; } # Figure out if we passed or failed and print helpful messages. my $test_results = $self->{Test_Results}; if( @$test_results ) { # The plan? We have no plan. if( $self->{No_Plan} ) { $self->_print("1..$self->{Curr_Test}\n") unless $self->no_header; $self->{Expected_Tests} = $self->{Curr_Test}; } # Auto-extended arrays and elements which aren't explicitly # filled in with a shared reference will puke under 5.8.0 # ithreads. So we have to fill them in by hand. :( my $empty_result = &share({}); for my $idx ( 0..$self->{Expected_Tests}-1 ) { $test_results->[$idx] = $empty_result unless defined $test_results->[$idx]; } my $num_failed = grep !$_->{'ok'}, @{$test_results}[0..$self->{Curr_Test}-1]; my $num_extra = $self->{Curr_Test} - $self->{Expected_Tests}; if( $num_extra < 0 ) { my $s = $self->{Expected_Tests} == 1 ? '' : 's'; $self->diag(<<"FAIL"); Looks like you planned $self->{Expected_Tests} test$s but only ran $self->{Curr_Test}. FAIL } elsif( $num_extra > 0 ) { my $s = $self->{Expected_Tests} == 1 ? '' : 's'; $self->diag(<<"FAIL"); Looks like you planned $self->{Expected_Tests} test$s but ran $num_extra extra. FAIL } if ( $num_failed ) { my $num_tests = $self->{Curr_Test}; my $s = $num_failed == 1 ? '' : 's'; my $qualifier = $num_extra == 0 ? '' : ' run'; $self->diag(<<"FAIL"); Looks like you failed $num_failed test$s of $num_tests$qualifier. FAIL } if( $self->{Test_Died} ) { $self->diag(<<"FAIL"); Looks like your test died just after $self->{Curr_Test}. FAIL _my_exit( 255 ) && return; } my $exit_code; if( $num_failed ) { $exit_code = $num_failed <= 254 ? $num_failed : 254; } elsif( $num_extra != 0 ) { $exit_code = 255; } else { $exit_code = 0; } _my_exit( $exit_code ) && return; } elsif ( $self->{Skip_All} ) { _my_exit( 0 ) && return; } elsif ( $self->{Test_Died} ) { $self->diag(<<'FAIL'); Looks like your test died before it could output anything. FAIL _my_exit( 255 ) && return; } else { $self->diag("No tests run!\n"); _my_exit( 255 ) && return; } } END { $Test->_ending if defined $Test and !$Test->no_ending; } =head1 EXIT CODES If all your tests passed, Test::Builder will exit with zero (which is normal). If anything failed it will exit with how many failed. If you run less (or more) tests than you planned, the missing (or extras) will be considered failures. If no tests were ever run Test::Builder will throw a warning and exit with 255. If the test died, even after having successfully completed all its tests, it will still be considered a failure and will exit with 255. So the exit codes are... 0 all tests successful 255 test died or all passed but wrong # of tests run any other number how many failed (including missing or extras) If you fail more than 254 tests, it will be reported as 254. =head1 THREADS In perl 5.8.0 and later, Test::Builder is thread-safe. The test number is shared amongst all threads. This means if one thread sets the test number using current_test() they will all be effected. Test::Builder is only thread-aware if threads.pm is loaded I Test::Builder. =head1 EXAMPLES CPAN can provide the best examples. Test::Simple, Test::More, Test::Exception and Test::Differences all use Test::Builder. =head1 SEE ALSO Test::Simple, Test::More, Test::Harness =head1 AUTHORS Original code by chromatic, maintained by Michael G Schwern Eschwern@pobox.comE =head1 COPYRIGHT Copyright 2002, 2004 by chromatic Echromatic@wgz.orgE and Michael G Schwern Eschwern@pobox.comE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F =cut 1; Convert-Binary-C-0.76/support/Test/More.pm0000644000175000001440000011452211550664620017110 0ustar mhxuserspackage Test::More; use 5.004; use strict; # Can't use Carp because it might cause use_ok() to accidentally succeed # even though the module being used forgot to use Carp. Yes, this # actually happened. sub _carp { my($file, $line) = (caller(1))[1,2]; warn @_, " at $file line $line\n"; } use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS $TODO); $VERSION = '0.64'; $VERSION = eval $VERSION; # make the alpha version come out as a number use Test::Builder::Module; @ISA = qw(Test::Builder::Module); @EXPORT = qw(ok use_ok require_ok is isnt like unlike is_deeply cmp_ok skip todo todo_skip pass fail eq_array eq_hash eq_set $TODO plan can_ok isa_ok diag BAIL_OUT ); =head1 NAME Test::More - yet another framework for writing test scripts =head1 SYNOPSIS use Test::More tests => $Num_Tests; # or use Test::More qw(no_plan); # or use Test::More skip_all => $reason; BEGIN { use_ok( 'Some::Module' ); } require_ok( 'Some::Module' ); # Various ways to say "ok" ok($this eq $that, $test_name); is ($this, $that, $test_name); isnt($this, $that, $test_name); # Rather than print STDERR "# here's what went wrong\n" diag("here's what went wrong"); like ($this, qr/that/, $test_name); unlike($this, qr/that/, $test_name); cmp_ok($this, '==', $that, $test_name); is_deeply($complex_structure1, $complex_structure2, $test_name); SKIP: { skip $why, $how_many unless $have_some_feature; ok( foo(), $test_name ); is( foo(42), 23, $test_name ); }; TODO: { local $TODO = $why; ok( foo(), $test_name ); is( foo(42), 23, $test_name ); }; can_ok($module, @methods); isa_ok($object, $class); pass($test_name); fail($test_name); BAIL_OUT($why); # UNIMPLEMENTED!!! my @status = Test::More::status; =head1 DESCRIPTION B If you're just getting started writing tests, have a look at Test::Simple first. This is a drop in replacement for Test::Simple which you can switch to once you get the hang of basic testing. The purpose of this module is to provide a wide range of testing utilities. Various ways to say "ok" with better diagnostics, facilities to skip tests, test future features and compare complicated data structures. While you can do almost anything with a simple C function, it doesn't provide good diagnostic output. =head2 I love it when a plan comes together Before anything else, you need a testing plan. This basically declares how many tests your script is going to run to protect against premature failure. The preferred way to do this is to declare a plan when you C. use Test::More tests => $Num_Tests; There are rare cases when you will not know beforehand how many tests your script is going to run. In this case, you can declare that you have no plan. (Try to avoid using this as it weakens your test.) use Test::More qw(no_plan); B: using no_plan requires a Test::Harness upgrade else it will think everything has failed. See L). In some cases, you'll want to completely skip an entire testing script. use Test::More skip_all => $skip_reason; Your script will declare a skip with the reason why you skipped and exit immediately with a zero (success). See L for details. If you want to control what functions Test::More will export, you have to use the 'import' option. For example, to import everything but 'fail', you'd do: use Test::More tests => 23, import => ['!fail']; Alternatively, you can use the plan() function. Useful for when you have to calculate the number of tests. use Test::More; plan tests => keys %Stuff * 3; or for deciding between running the tests at all: use Test::More; if( $^O eq 'MacOS' ) { plan skip_all => 'Test irrelevant on MacOS'; } else { plan tests => 42; } =cut sub plan { my $tb = Test::More->builder; $tb->plan(@_); } # This implements "use Test::More 'no_diag'" but the behavior is # deprecated. sub import_extra { my $class = shift; my $list = shift; my @other = (); my $idx = 0; while( $idx <= $#{$list} ) { my $item = $list->[$idx]; if( defined $item and $item eq 'no_diag' ) { $class->builder->no_diag(1); } else { push @other, $item; } $idx++; } @$list = @other; } =head2 Test names By convention, each test is assigned a number in order. This is largely done automatically for you. However, it's often very useful to assign a name to each test. Which would you rather see: ok 4 not ok 5 ok 6 or ok 4 - basic multi-variable not ok 5 - simple exponential ok 6 - force == mass * acceleration The later gives you some idea of what failed. It also makes it easier to find the test in your script, simply search for "simple exponential". All test functions take a name argument. It's optional, but highly suggested that you use it. =head2 I'm ok, you're not ok. The basic purpose of this module is to print out either "ok #" or "not ok #" depending on if a given test succeeded or failed. Everything else is just gravy. All of the following print "ok" or "not ok" depending on if the test succeeded or failed. They all also return true or false, respectively. =over 4 =item B ok($this eq $that, $test_name); This simply evaluates any expression (C<$this eq $that> is just a simple example) and uses that to determine if the test succeeded or failed. A true expression passes, a false one fails. Very simple. For example: ok( $exp{9} == 81, 'simple exponential' ); ok( Film->can('db_Main'), 'set_db()' ); ok( $p->tests == 4, 'saw tests' ); ok( !grep !defined $_, @items, 'items populated' ); (Mnemonic: "This is ok.") $test_name is a very short description of the test that will be printed out. It makes it very easy to find a test in your script when it fails and gives others an idea of your intentions. $test_name is optional, but we B strongly encourage its use. Should an ok() fail, it will produce some diagnostics: not ok 18 - sufficient mucus # Failed test 'sufficient mucus' # in foo.t at line 42. This is actually Test::Simple's ok() routine. =cut sub ok ($;$) { my($test, $name) = @_; my $tb = Test::More->builder; $tb->ok($test, $name); } =item B =item B is ( $this, $that, $test_name ); isnt( $this, $that, $test_name ); Similar to ok(), is() and isnt() compare their two arguments with C and C respectively and use the result of that to determine if the test succeeded or failed. So these: # Is the ultimate answer 42? is( ultimate_answer(), 42, "Meaning of Life" ); # $foo isn't empty isnt( $foo, '', "Got some foo" ); are similar to these: ok( ultimate_answer() eq 42, "Meaning of Life" ); ok( $foo ne '', "Got some foo" ); (Mnemonic: "This is that." "This isn't that.") So why use these? They produce better diagnostics on failure. ok() cannot know what you are testing for (beyond the name), but is() and isnt() know what the test was and why it failed. For example this test: my $foo = 'waffle'; my $bar = 'yarblokos'; is( $foo, $bar, 'Is foo the same as bar?' ); Will produce something like this: not ok 17 - Is foo the same as bar? # Failed test 'Is foo the same as bar?' # in foo.t at line 139. # got: 'waffle' # expected: 'yarblokos' So you can figure out what went wrong without rerunning the test. You are encouraged to use is() and isnt() over ok() where possible, however do not be tempted to use them to find out if something is true or false! # XXX BAD! is( exists $brooklyn{tree}, 1, 'A tree grows in Brooklyn' ); This does not check if C is true, it checks if it returns 1. Very different. Similar caveats exist for false and 0. In these cases, use ok(). ok( exists $brooklyn{tree}, 'A tree grows in Brooklyn' ); For those grammatical pedants out there, there's an C function which is an alias of isnt(). =cut sub is ($$;$) { my $tb = Test::More->builder; $tb->is_eq(@_); } sub isnt ($$;$) { my $tb = Test::More->builder; $tb->isnt_eq(@_); } *isn't = \&isnt; =item B like( $this, qr/that/, $test_name ); Similar to ok(), like() matches $this against the regex C. So this: like($this, qr/that/, 'this is like that'); is similar to: ok( $this =~ /that/, 'this is like that'); (Mnemonic "This is like that".) The second argument is a regular expression. It may be given as a regex reference (i.e. C) or (for better compatibility with older perls) as a string that looks like a regex (alternative delimiters are currently not supported): like( $this, '/that/', 'this is like that' ); Regex options may be placed on the end (C<'/that/i'>). Its advantages over ok() are similar to that of is() and isnt(). Better diagnostics on failure. =cut sub like ($$;$) { my $tb = Test::More->builder; $tb->like(@_); } =item B unlike( $this, qr/that/, $test_name ); Works exactly as like(), only it checks if $this B match the given pattern. =cut sub unlike ($$;$) { my $tb = Test::More->builder; $tb->unlike(@_); } =item B cmp_ok( $this, $op, $that, $test_name ); Halfway between ok() and is() lies cmp_ok(). This allows you to compare two arguments using any binary perl operator. # ok( $this eq $that ); cmp_ok( $this, 'eq', $that, 'this eq that' ); # ok( $this == $that ); cmp_ok( $this, '==', $that, 'this == that' ); # ok( $this && $that ); cmp_ok( $this, '&&', $that, 'this && that' ); ...etc... Its advantage over ok() is when the test fails you'll know what $this and $that were: not ok 1 # Failed test in foo.t at line 12. # '23' # && # undef It's also useful in those cases where you are comparing numbers and is()'s use of C will interfere: cmp_ok( $big_hairy_number, '==', $another_big_hairy_number ); =cut sub cmp_ok($$$;$) { my $tb = Test::More->builder; $tb->cmp_ok(@_); } =item B can_ok($module, @methods); can_ok($object, @methods); Checks to make sure the $module or $object can do these @methods (works with functions, too). can_ok('Foo', qw(this that whatever)); is almost exactly like saying: ok( Foo->can('this') && Foo->can('that') && Foo->can('whatever') ); only without all the typing and with a better interface. Handy for quickly testing an interface. No matter how many @methods you check, a single can_ok() call counts as one test. If you desire otherwise, use: foreach my $meth (@methods) { can_ok('Foo', $meth); } =cut sub can_ok ($@) { my($proto, @methods) = @_; my $class = ref $proto || $proto; my $tb = Test::More->builder; unless( $class ) { my $ok = $tb->ok( 0, "->can(...)" ); $tb->diag(' can_ok() called with empty class or reference'); return $ok; } unless( @methods ) { my $ok = $tb->ok( 0, "$class->can(...)" ); $tb->diag(' can_ok() called with no methods'); return $ok; } my @nok = (); foreach my $method (@methods) { local($!, $@); # don't interfere with caller's $@ # eval sometimes resets $! eval { $proto->can($method) } || push @nok, $method; } my $name; $name = @methods == 1 ? "$class->can('$methods[0]')" : "$class->can(...)"; my $ok = $tb->ok( !@nok, $name ); $tb->diag(map " $class->can('$_') failed\n", @nok); return $ok; } =item B isa_ok($object, $class, $object_name); isa_ok($ref, $type, $ref_name); Checks to see if the given C<< $object->isa($class) >>. Also checks to make sure the object was defined in the first place. Handy for this sort of thing: my $obj = Some::Module->new; isa_ok( $obj, 'Some::Module' ); where you'd otherwise have to write my $obj = Some::Module->new; ok( defined $obj && $obj->isa('Some::Module') ); to safeguard against your test script blowing up. It works on references, too: isa_ok( $array_ref, 'ARRAY' ); The diagnostics of this test normally just refer to 'the object'. If you'd like them to be more specific, you can supply an $object_name (for example 'Test customer'). =cut sub isa_ok ($$;$) { my($object, $class, $obj_name) = @_; my $tb = Test::More->builder; my $diag; $obj_name = 'The object' unless defined $obj_name; my $name = "$obj_name isa $class"; if( !defined $object ) { $diag = "$obj_name isn't defined"; } elsif( !ref $object ) { $diag = "$obj_name isn't a reference"; } else { # We can't use UNIVERSAL::isa because we want to honor isa() overrides local($@, $!); # eval sometimes resets $! my $rslt = eval { $object->isa($class) }; if( $@ ) { if( $@ =~ /^Can't call method "isa" on unblessed reference/ ) { if( !UNIVERSAL::isa($object, $class) ) { my $ref = ref $object; $diag = "$obj_name isn't a '$class' it's a '$ref'"; } } else { die <isa on your object and got some weird error. This should never happen. Please contact the author immediately. Here's the error. $@ WHOA } } elsif( !$rslt ) { my $ref = ref $object; $diag = "$obj_name isn't a '$class' it's a '$ref'"; } } my $ok; if( $diag ) { $ok = $tb->ok( 0, $name ); $tb->diag(" $diag\n"); } else { $ok = $tb->ok( 1, $name ); } return $ok; } =item B =item B pass($test_name); fail($test_name); Sometimes you just want to say that the tests have passed. Usually the case is you've got some complicated condition that is difficult to wedge into an ok(). In this case, you can simply use pass() (to declare the test ok) or fail (for not ok). They are synonyms for ok(1) and ok(0). Use these very, very, very sparingly. =cut sub pass (;$) { my $tb = Test::More->builder; $tb->ok(1, @_); } sub fail (;$) { my $tb = Test::More->builder; $tb->ok(0, @_); } =back =head2 Module tests You usually want to test if the module you're testing loads ok, rather than just vomiting if its load fails. For such purposes we have C and C. =over 4 =item B BEGIN { use_ok($module); } BEGIN { use_ok($module, @imports); } These simply use the given $module and test to make sure the load happened ok. It's recommended that you run use_ok() inside a BEGIN block so its functions are exported at compile-time and prototypes are properly honored. If @imports are given, they are passed through to the use. So this: BEGIN { use_ok('Some::Module', qw(foo bar)) } is like doing this: use Some::Module qw(foo bar); Version numbers can be checked like so: # Just like "use Some::Module 1.02" BEGIN { use_ok('Some::Module', 1.02) } Don't try to do this: BEGIN { use_ok('Some::Module'); ...some code that depends on the use... ...happening at compile time... } because the notion of "compile-time" is relative. Instead, you want: BEGIN { use_ok('Some::Module') } BEGIN { ...some code that depends on the use... } =cut sub use_ok ($;@) { my($module, @imports) = @_; @imports = () unless @imports; my $tb = Test::More->builder; my($pack,$filename,$line) = caller; local($@,$!); # eval sometimes interferes with $! if( @imports == 1 and $imports[0] =~ /^\d+(?:\.\d+)?$/ ) { # probably a version check. Perl needs to see the bare number # for it to work with non-Exporter based modules. eval <ok( !$@, "use $module;" ); unless( $ok ) { chomp $@; $@ =~ s{^BEGIN failed--compilation aborted at .*$} {BEGIN failed--compilation aborted at $filename line $line.}m; $tb->diag(< require_ok($module); require_ok($file); Like use_ok(), except it requires the $module or $file. =cut sub require_ok ($) { my($module) = shift; my $tb = Test::More->builder; my $pack = caller; # Try to deterine if we've been given a module name or file. # Module names must be barewords, files not. $module = qq['$module'] unless _is_module_name($module); local($!, $@); # eval sometimes interferes with $! eval <ok( !$@, "require $module;" ); unless( $ok ) { chomp $@; $tb->diag(< I'm not quite sure what will happen with filehandles. =over 4 =item B is_deeply( $this, $that, $test_name ); Similar to is(), except that if $this and $that are references, it does a deep comparison walking each data structure to see if they are equivalent. If the two structures are different, it will display the place where they start differing. is_deeply() compares the dereferenced values of references, the references themselves (except for their type) are ignored. This means aspects such as blessing and ties are not considered "different". is_deeply() current has very limited handling of function reference and globs. It merely checks if they have the same referent. This may improve in the future. Test::Differences and Test::Deep provide more in-depth functionality along these lines. =cut use vars qw(@Data_Stack %Refs_Seen); my $DNE = bless [], 'Does::Not::Exist'; sub is_deeply { my $tb = Test::More->builder; unless( @_ == 2 or @_ == 3 ) { my $msg = <ok(0); } my($this, $that, $name) = @_; $tb->_unoverload_str(\$that, \$this); my $ok; if( !ref $this and !ref $that ) { # neither is a reference $ok = $tb->is_eq($this, $that, $name); } elsif( !ref $this xor !ref $that ) { # one's a reference, one isn't $ok = $tb->ok(0, $name); $tb->diag( _format_stack({ vals => [ $this, $that ] }) ); } else { # both references local @Data_Stack = (); if( _deep_check($this, $that) ) { $ok = $tb->ok(1, $name); } else { $ok = $tb->ok(0, $name); $tb->diag(_format_stack(@Data_Stack)); } } return $ok; } sub _format_stack { my(@Stack) = @_; my $var = '$FOO'; my $did_arrow = 0; foreach my $entry (@Stack) { my $type = $entry->{type} || ''; my $idx = $entry->{'idx'}; if( $type eq 'HASH' ) { $var .= "->" unless $did_arrow++; $var .= "{$idx}"; } elsif( $type eq 'ARRAY' ) { $var .= "->" unless $did_arrow++; $var .= "[$idx]"; } elsif( $type eq 'REF' ) { $var = "\${$var}"; } } my @vals = @{$Stack[-1]{vals}}[0,1]; my @vars = (); ($vars[0] = $var) =~ s/\$FOO/ \$got/; ($vars[1] = $var) =~ s/\$FOO/\$expected/; my $out = "Structures begin differing at:\n"; foreach my $idx (0..$#vals) { my $val = $vals[$idx]; $vals[$idx] = !defined $val ? 'undef' : $val eq $DNE ? "Does not exist" : ref $val ? "$val" : "'$val'"; } $out .= "$vars[0] = $vals[0]\n"; $out .= "$vars[1] = $vals[1]\n"; $out =~ s/^/ /msg; return $out; } sub _type { my $thing = shift; return '' if !ref $thing; for my $type (qw(ARRAY HASH REF SCALAR GLOB CODE Regexp)) { return $type if UNIVERSAL::isa($thing, $type); } return ''; } =back =head2 Diagnostics If you pick the right test function, you'll usually get a good idea of what went wrong when it failed. But sometimes it doesn't work out that way. So here we have ways for you to write your own diagnostic messages which are safer than just C. =over 4 =item B diag(@diagnostic_message); Prints a diagnostic message which is guaranteed not to interfere with test output. Like C @diagnostic_message is simply concatenated together. Handy for this sort of thing: ok( grep(/foo/, @users), "There's a foo user" ) or diag("Since there's no foo, check that /etc/bar is set up right"); which would produce: not ok 42 - There's a foo user # Failed test 'There's a foo user' # in foo.t at line 52. # Since there's no foo, check that /etc/bar is set up right. You might remember C with the mnemonic C. B The exact formatting of the diagnostic output is still changing, but it is guaranteed that whatever you throw at it it won't interfere with the test. =cut sub diag { my $tb = Test::More->builder; $tb->diag(@_); } =back =head2 Conditional tests Sometimes running a test under certain conditions will cause the test script to die. A certain function or method isn't implemented (such as fork() on MacOS), some resource isn't available (like a net connection) or a module isn't available. In these cases it's necessary to skip tests, or declare that they are supposed to fail but will work in the future (a todo test). For more details on the mechanics of skip and todo tests see L. The way Test::More handles this is with a named block. Basically, a block of tests which can be skipped over or made todo. It's best if I just show you... =over 4 =item B SKIP: { skip $why, $how_many if $condition; ...normal testing code goes here... } This declares a block of tests that might be skipped, $how_many tests there are, $why and under what $condition to skip them. An example is the easiest way to illustrate: SKIP: { eval { require HTML::Lint }; skip "HTML::Lint not installed", 2 if $@; my $lint = new HTML::Lint; isa_ok( $lint, "HTML::Lint" ); $lint->parse( $html ); is( $lint->errors, 0, "No errors found in HTML" ); } If the user does not have HTML::Lint installed, the whole block of code I. Test::More will output special ok's which Test::Harness interprets as skipped, but passing, tests. It's important that $how_many accurately reflects the number of tests in the SKIP block so the # of tests run will match up with your plan. If your plan is C $how_many is optional and will default to 1. It's perfectly safe to nest SKIP blocks. Each SKIP block must have the label C, or Test::More can't work its magic. You don't skip tests which are failing because there's a bug in your program, or for which you don't yet have code written. For that you use TODO. Read on. =cut #'# sub skip { my($why, $how_many) = @_; my $tb = Test::More->builder; unless( defined $how_many ) { # $how_many can only be avoided when no_plan is in use. _carp "skip() needs to know \$how_many tests are in the block" unless $tb->has_plan eq 'no_plan'; $how_many = 1; } if( defined $how_many and $how_many =~ /\D/ ) { _carp "skip() was passed a non-numeric number of tests. Did you get the arguments backwards?"; $how_many = 1; } for( 1..$how_many ) { $tb->skip($why); } local $^W = 0; last SKIP; } =item B TODO: { local $TODO = $why if $condition; ...normal testing code goes here... } Declares a block of tests you expect to fail and $why. Perhaps it's because you haven't fixed a bug or haven't finished a new feature: TODO: { local $TODO = "URI::Geller not finished"; my $card = "Eight of clubs"; is( URI::Geller->your_card, $card, 'Is THIS your card?' ); my $spoon; URI::Geller->bend_spoon; is( $spoon, 'bent', "Spoon bending, that's original" ); } With a todo block, the tests inside are expected to fail. Test::More will run the tests normally, but print out special flags indicating they are "todo". Test::Harness will interpret failures as being ok. Should anything succeed, it will report it as an unexpected success. You then know the thing you had todo is done and can remove the TODO flag. The nice part about todo tests, as opposed to simply commenting out a block of tests, is it's like having a programmatic todo list. You know how much work is left to be done, you're aware of what bugs there are, and you'll know immediately when they're fixed. Once a todo test starts succeeding, simply move it outside the block. When the block is empty, delete it. B: TODO tests require a Test::Harness upgrade else it will treat it as a normal failure. See L). =item B TODO: { todo_skip $why, $how_many if $condition; ...normal testing code... } With todo tests, it's best to have the tests actually run. That way you'll know when they start passing. Sometimes this isn't possible. Often a failing test will cause the whole program to die or hang, even inside an C with and using C. In these extreme cases you have no choice but to skip over the broken tests entirely. The syntax and behavior is similar to a C except the tests will be marked as failing but todo. Test::Harness will interpret them as passing. =cut sub todo_skip { my($why, $how_many) = @_; my $tb = Test::More->builder; unless( defined $how_many ) { # $how_many can only be avoided when no_plan is in use. _carp "todo_skip() needs to know \$how_many tests are in the block" unless $tb->has_plan eq 'no_plan'; $how_many = 1; } for( 1..$how_many ) { $tb->todo_skip($why); } local $^W = 0; last TODO; } =item When do I use SKIP vs. TODO? B, use SKIP. This includes optional modules that aren't installed, running under an OS that doesn't have some feature (like fork() or symlinks), or maybe you need an Internet connection and one isn't available. B, use TODO. This is for any code you haven't written yet, or bugs you have yet to fix, but want to put tests in your testing script (always a good idea). =back =head2 Test control =over 4 =item B BAIL_OUT($reason); Indicates to the harness that things are going so badly all testing should terminate. This includes the running any additional test scripts. This is typically used when testing cannot continue such as a critical module failing to compile or a necessary external utility not being available such as a database connection failing. The test will exit with 255. =cut sub BAIL_OUT { my $reason = shift; my $tb = Test::More->builder; $tb->BAIL_OUT($reason); } =back =head2 Discouraged comparison functions The use of the following functions is discouraged as they are not actually testing functions and produce no diagnostics to help figure out what went wrong. They were written before is_deeply() existed because I couldn't figure out how to display a useful diff of two arbitrary data structures. These functions are usually used inside an ok(). ok( eq_array(\@this, \@that) ); C can do that better and with diagnostics. is_deeply( \@this, \@that ); They may be deprecated in future versions. =over 4 =item B my $is_eq = eq_array(\@this, \@that); Checks if two arrays are equivalent. This is a deep check, so multi-level structures are handled correctly. =cut #'# sub eq_array { local @Data_Stack; _deep_check(@_); } sub _eq_array { my($a1, $a2) = @_; if( grep !_type($_) eq 'ARRAY', $a1, $a2 ) { warn "eq_array passed a non-array ref"; return 0; } return 1 if $a1 eq $a2; my $ok = 1; my $max = $#$a1 > $#$a2 ? $#$a1 : $#$a2; for (0..$max) { my $e1 = $_ > $#$a1 ? $DNE : $a1->[$_]; my $e2 = $_ > $#$a2 ? $DNE : $a2->[$_]; push @Data_Stack, { type => 'ARRAY', idx => $_, vals => [$e1, $e2] }; $ok = _deep_check($e1,$e2); pop @Data_Stack if $ok; last unless $ok; } return $ok; } sub _deep_check { my($e1, $e2) = @_; my $tb = Test::More->builder; my $ok = 0; # Effectively turn %Refs_Seen into a stack. This avoids picking up # the same referenced used twice (such as [\$a, \$a]) to be considered # circular. local %Refs_Seen = %Refs_Seen; { # Quiet uninitialized value warnings when comparing undefs. local $^W = 0; $tb->_unoverload_str(\$e1, \$e2); # Either they're both references or both not. my $same_ref = !(!ref $e1 xor !ref $e2); my $not_ref = (!ref $e1 and !ref $e2); if( defined $e1 xor defined $e2 ) { $ok = 0; } elsif ( $e1 == $DNE xor $e2 == $DNE ) { $ok = 0; } elsif ( $same_ref and ($e1 eq $e2) ) { $ok = 1; } elsif ( $not_ref ) { push @Data_Stack, { type => '', vals => [$e1, $e2] }; $ok = 0; } else { if( $Refs_Seen{$e1} ) { return $Refs_Seen{$e1} eq $e2; } else { $Refs_Seen{$e1} = "$e2"; } my $type = _type($e1); $type = 'DIFFERENT' unless _type($e2) eq $type; if( $type eq 'DIFFERENT' ) { push @Data_Stack, { type => $type, vals => [$e1, $e2] }; $ok = 0; } elsif( $type eq 'ARRAY' ) { $ok = _eq_array($e1, $e2); } elsif( $type eq 'HASH' ) { $ok = _eq_hash($e1, $e2); } elsif( $type eq 'REF' ) { push @Data_Stack, { type => $type, vals => [$e1, $e2] }; $ok = _deep_check($$e1, $$e2); pop @Data_Stack if $ok; } elsif( $type eq 'SCALAR' ) { push @Data_Stack, { type => 'REF', vals => [$e1, $e2] }; $ok = _deep_check($$e1, $$e2); pop @Data_Stack if $ok; } elsif( $type ) { push @Data_Stack, { type => $type, vals => [$e1, $e2] }; $ok = 0; } else { _whoa(1, "No type in _deep_check"); } } } return $ok; } sub _whoa { my($check, $desc) = @_; if( $check ) { die < my $is_eq = eq_hash(\%this, \%that); Determines if the two hashes contain the same keys and values. This is a deep check. =cut sub eq_hash { local @Data_Stack; return _deep_check(@_); } sub _eq_hash { my($a1, $a2) = @_; if( grep !_type($_) eq 'HASH', $a1, $a2 ) { warn "eq_hash passed a non-hash ref"; return 0; } return 1 if $a1 eq $a2; my $ok = 1; my $bigger = keys %$a1 > keys %$a2 ? $a1 : $a2; foreach my $k (keys %$bigger) { my $e1 = exists $a1->{$k} ? $a1->{$k} : $DNE; my $e2 = exists $a2->{$k} ? $a2->{$k} : $DNE; push @Data_Stack, { type => 'HASH', idx => $k, vals => [$e1, $e2] }; $ok = _deep_check($e1, $e2); pop @Data_Stack if $ok; last unless $ok; } return $ok; } =item B my $is_eq = eq_set(\@this, \@that); Similar to eq_array(), except the order of the elements is B important. This is a deep check, but the irrelevancy of order only applies to the top level. ok( eq_set(\@this, \@that) ); Is better written: is_deeply( [sort @this], [sort @that] ); B By historical accident, this is not a true set comparison. While the order of elements does not matter, duplicate elements do. B eq_set() does not know how to deal with references at the top level. The following is an example of a comparison which might not work: eq_set([\1, \2], [\2, \1]); Test::Deep contains much better set comparison functions. =cut sub eq_set { my($a1, $a2) = @_; return 0 unless @$a1 == @$a2; # There's faster ways to do this, but this is easiest. local $^W = 0; # It really doesn't matter how we sort them, as long as both arrays are # sorted with the same algorithm. # # Ensure that references are not accidentally treated the same as a # string containing the reference. # # Have to inline the sort routine due to a threading/sort bug. # See [rt.cpan.org 6782] # # I don't know how references would be sorted so we just don't sort # them. This means eq_set doesn't really work with refs. return eq_array( [grep(ref, @$a1), sort( grep(!ref, @$a1) )], [grep(ref, @$a2), sort( grep(!ref, @$a2) )], ); } =back =head2 Extending and Embedding Test::More Sometimes the Test::More interface isn't quite enough. Fortunately, Test::More is built on top of Test::Builder which provides a single, unified backend for any test library to use. This means two test libraries which both use Test::Builder B. If you simply want to do a little tweaking of how the tests behave, you can access the underlying Test::Builder object like so: =over 4 =item B my $test_builder = Test::More->builder; Returns the Test::Builder object underlying Test::More for you to play with. =back =head1 EXIT CODES If all your tests passed, Test::Builder will exit with zero (which is normal). If anything failed it will exit with how many failed. If you run less (or more) tests than you planned, the missing (or extras) will be considered failures. If no tests were ever run Test::Builder will throw a warning and exit with 255. If the test died, even after having successfully completed all its tests, it will still be considered a failure and will exit with 255. So the exit codes are... 0 all tests successful 255 test died or all passed but wrong # of tests run any other number how many failed (including missing or extras) If you fail more than 254 tests, it will be reported as 254. B This behavior may go away in future versions. =head1 CAVEATS and NOTES =over 4 =item Backwards compatibility Test::More works with Perls as old as 5.004_05. =item Overloaded objects String overloaded objects are compared B (or in cmp_ok()'s case, strings or numbers as appropriate to the comparison op). This prevents Test::More from piercing an object's interface allowing better blackbox testing. So if a function starts returning overloaded objects instead of bare strings your tests won't notice the difference. This is good. However, it does mean that functions like is_deeply() cannot be used to test the internals of string overloaded objects. In this case I would suggest Test::Deep which contains more flexible testing functions for complex data structures. =item Threads Test::More will only be aware of threads if "use threads" has been done I Test::More is loaded. This is ok: use threads; use Test::More; This may cause problems: use Test::More use threads; =item Test::Harness upgrade no_plan and todo depend on new Test::Harness features and fixes. If you're going to distribute tests that use no_plan or todo your end-users will have to upgrade Test::Harness to the latest one on CPAN. If you avoid no_plan and TODO tests, the stock Test::Harness will work fine. Installing Test::More should also upgrade Test::Harness. =back =head1 HISTORY This is a case of convergent evolution with Joshua Pritikin's Test module. I was largely unaware of its existence when I'd first written my own ok() routines. This module exists because I can't figure out how to easily wedge test names into Test's interface (along with a few other problems). The goal here is to have a testing utility that's simple to learn, quick to use and difficult to trip yourself up with while still providing more flexibility than the existing Test.pm. As such, the names of the most common routines are kept tiny, special cases and magic side-effects are kept to a minimum. WYSIWYG. =head1 SEE ALSO L if all this confuses you and you just want to write some tests. You can upgrade to Test::More later (it's forward compatible). L is the old testing module. Its main benefit is that it has been distributed with Perl since 5.004_05. L for details on how your test results are interpreted by Perl. L for more ways to test complex data structures. And it plays well with Test::More. L is like XUnit but more perlish. L gives you more powerful complex data structure testing. L is XUnit style testing. L shows the idea of embedded testing. L installs a whole bunch of useful test modules. =head1 AUTHORS Michael G Schwern Eschwern@pobox.comE with much inspiration from Joshua Pritikin's Test module and lots of help from Barrie Slaymaker, Tony Bowden, blackstar.co.uk, chromatic, Fergal Daly and the perl-qa gang. =head1 BUGS See F to report and view bugs. =head1 COPYRIGHT Copyright 2001, 2002, 2004 by Michael G Schwern Eschwern@pobox.comE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F =cut 1; Convert-Binary-C-0.76/support/Test/Harness/0000755000175000001440000000000011550665107017247 5ustar mhxusersConvert-Binary-C-0.76/support/Test/Harness/Iterator.pm0000644000175000001440000000241011550664617021400 0ustar mhxuserspackage Test::Harness::Iterator; use strict; use vars qw($VERSION); $VERSION = 0.02; =head1 NAME Test::Harness::Iterator - Internal Test::Harness Iterator =head1 SYNOPSIS use Test::Harness::Iterator; my $it = Test::Harness::Iterator->new(\*TEST); my $it = Test::Harness::Iterator->new(\@array); my $line = $it->next; =head1 DESCRIPTION B This is a simple iterator wrapper for arrays and filehandles. =head2 new() Create an iterator. =head2 next() Iterate through it, of course. =cut sub new { my($proto, $thing) = @_; my $self = {}; if( ref $thing eq 'GLOB' ) { bless $self, 'Test::Harness::Iterator::FH'; $self->{fh} = $thing; } elsif( ref $thing eq 'ARRAY' ) { bless $self, 'Test::Harness::Iterator::ARRAY'; $self->{idx} = 0; $self->{array} = $thing; } else { warn "Can't iterate with a ", ref $thing; } return $self; } package Test::Harness::Iterator::FH; sub next { my $fh = $_[0]->{fh}; # readline() doesn't work so good on 5.5.4. return scalar <$fh>; } package Test::Harness::Iterator::ARRAY; sub next { my $self = shift; return $self->{array}->[$self->{idx}++]; } "Steve Peters, Master Of True Value Finding, was here."; Convert-Binary-C-0.76/support/Test/Harness/Straps.pm0000644000175000001440000004144511550664617021076 0ustar mhxusers# -*- Mode: cperl; cperl-indent-level: 4 -*- package Test::Harness::Straps; use strict; use vars qw($VERSION); $VERSION = '0.26'; use Config; use Test::Harness::Assert; use Test::Harness::Iterator; use Test::Harness::Point; # Flags used as return values from our methods. Just for internal # clarification. my $YES = (1==1); my $NO = !$YES; =head1 NAME Test::Harness::Straps - detailed analysis of test results =head1 SYNOPSIS use Test::Harness::Straps; my $strap = Test::Harness::Straps->new; # Various ways to interpret a test my %results = $strap->analyze($name, \@test_output); my %results = $strap->analyze_fh($name, $test_filehandle); my %results = $strap->analyze_file($test_file); # UNIMPLEMENTED my %total = $strap->total_results; # Altering the behavior of the strap UNIMPLEMENTED my $verbose_output = $strap->dump_verbose(); $strap->dump_verbose_fh($output_filehandle); =head1 DESCRIPTION B in that the interface is subject to change in incompatible ways. It is otherwise stable. Test::Harness is limited to printing out its results. This makes analysis of the test results difficult for anything but a human. To make it easier for programs to work with test results, we provide Test::Harness::Straps. Instead of printing the results, straps provide them as raw data. You can also configure how the tests are to be run. The interface is currently incomplete. I contact the author if you'd like a feature added or something change or just have comments. =head1 CONSTRUCTION =head2 new() my $strap = Test::Harness::Straps->new; Initialize a new strap. =cut sub new { my $class = shift; my $self = bless {}, $class; $self->_init; return $self; } =for private $strap->_init $strap->_init; Initialize the internal state of a strap to make it ready for parsing. =cut sub _init { my($self) = shift; $self->{_is_vms} = ( $^O eq 'VMS' ); $self->{_is_win32} = ( $^O =~ /^(MS)?Win32$/ ); $self->{_is_macos} = ( $^O eq 'MacOS' ); } =head1 ANALYSIS =head2 $strap->analyze( $name, \@output_lines ) my %results = $strap->analyze($name, \@test_output); Analyzes the output of a single test, assigning it the given C<$name> for use in the total report. Returns the C<%results> of the test. See L. C<@test_output> should be the raw output from the test, including newlines. =cut sub analyze { my($self, $name, $test_output) = @_; my $it = Test::Harness::Iterator->new($test_output); return $self->_analyze_iterator($name, $it); } sub _analyze_iterator { my($self, $name, $it) = @_; $self->_reset_file_state; $self->{file} = $name; my %totals = ( max => 0, seen => 0, ok => 0, todo => 0, skip => 0, bonus => 0, details => [] ); # Set them up here so callbacks can have them. $self->{totals}{$name} = \%totals; while( defined(my $line = $it->next) ) { $self->_analyze_line($line, \%totals); last if $self->{saw_bailout}; } $totals{skip_all} = $self->{skip_all} if defined $self->{skip_all}; my $passed = ($totals{max} == 0 && defined $totals{skip_all}) || ($totals{max} && $totals{seen} && $totals{max} == $totals{seen} && $totals{max} == $totals{ok}); $totals{passing} = $passed ? 1 : 0; return %totals; } sub _analyze_line { my $self = shift; my $line = shift; my $totals = shift; $self->{line}++; my $linetype; my $point = Test::Harness::Point->from_test_line( $line ); if ( $point ) { $linetype = 'test'; $totals->{seen}++; $point->set_number( $self->{'next'} ) unless $point->number; # sometimes the 'not ' and the 'ok' are on different lines, # happens often on VMS if you do: # print "not " unless $test; # print "ok $num\n"; if ( $self->{lone_not_line} && ($self->{lone_not_line} == $self->{line} - 1) ) { $point->set_ok( 0 ); } if ( $self->{todo}{$point->number} ) { $point->set_directive_type( 'todo' ); } if ( $point->is_todo ) { $totals->{todo}++; $totals->{bonus}++ if $point->ok; } elsif ( $point->is_skip ) { $totals->{skip}++; } $totals->{ok}++ if $point->pass; if ( ($point->number > 100_000) && ($point->number > ($self->{max}||100_000)) ) { if ( !$self->{too_many_tests}++ ) { warn "Enormous test number seen [test ", $point->number, "]\n"; warn "Can't detailize, too big.\n"; } } else { my $details = { ok => $point->pass, actual_ok => $point->ok, name => _def_or_blank( $point->description ), type => _def_or_blank( $point->directive_type ), reason => _def_or_blank( $point->directive_reason ), }; assert( defined( $details->{ok} ) && defined( $details->{actual_ok} ) ); $totals->{details}[$point->number - 1] = $details; } } # test point elsif ( $line =~ /^not\s+$/ ) { $linetype = 'other'; # Sometimes the "not " and "ok" will be on separate lines on VMS. # We catch this and remember we saw it. $self->{lone_not_line} = $self->{line}; } elsif ( $self->_is_header($line) ) { $linetype = 'header'; $self->{saw_header}++; $totals->{max} += $self->{max}; } elsif ( $self->_is_bail_out($line, \$self->{bailout_reason}) ) { $linetype = 'bailout'; $self->{saw_bailout} = 1; } elsif (my $diagnostics = $self->_is_diagnostic_line( $line )) { $linetype = 'other'; my $test = $totals->{details}[-1]; $test->{diagnostics} ||= ''; $test->{diagnostics} .= $diagnostics; } else { $linetype = 'other'; } $self->{callback}->($self, $line, $linetype, $totals) if $self->{callback}; $self->{'next'} = $point->number + 1 if $point; } # _analyze_line sub _is_diagnostic_line { my ($self, $line) = @_; return if index( $line, '# Looks like you failed' ) == 0; $line =~ s/^#\s//; return $line; } =for private $strap->analyze_fh( $name, $test_filehandle ) my %results = $strap->analyze_fh($name, $test_filehandle); Like C, but it reads from the given filehandle. =cut sub analyze_fh { my($self, $name, $fh) = @_; my $it = Test::Harness::Iterator->new($fh); return $self->_analyze_iterator($name, $it); } =head2 $strap->analyze_file( $test_file ) my %results = $strap->analyze_file($test_file); Like C, but it runs the given C<$test_file> and parses its results. It will also use that name for the total report. =cut sub analyze_file { my($self, $file) = @_; unless( -e $file ) { $self->{error} = "$file does not exist"; return; } unless( -r $file ) { $self->{error} = "$file is not readable"; return; } local $ENV{PERL5LIB} = $self->_INC2PERL5LIB; if ( $Test::Harness::Debug ) { local $^W=0; # ignore undef warnings print "# PERL5LIB=$ENV{PERL5LIB}\n"; } # *sigh* this breaks under taint, but open -| is unportable. my $line = $self->_command_line($file); unless ( open(FILE, "$line|" )) { print "can't run $file. $!\n"; return; } my %results = $self->analyze_fh($file, \*FILE); my $exit = close FILE; $results{'wait'} = $?; if( $? && $self->{_is_vms} ) { eval q{use vmsish "status"; $results{'exit'} = $?}; } else { $results{'exit'} = _wait2exit($?); } $results{passing} = 0 unless $? == 0; $self->_restore_PERL5LIB(); return %results; } eval { require POSIX; &POSIX::WEXITSTATUS(0) }; if( $@ ) { *_wait2exit = sub { $_[0] >> 8 }; } else { *_wait2exit = sub { POSIX::WEXITSTATUS($_[0]) } } =for private $strap->_command_line( $file ) Returns the full command line that will be run to test I<$file>. =cut sub _command_line { my $self = shift; my $file = shift; my $command = $self->_command(); my $switches = $self->_switches($file); $file = qq["$file"] if ($file =~ /\s/) && ($file !~ /^".*"$/); my $line = "$command $switches $file"; return $line; } =for private $strap->_command() Returns the command that runs the test. Combine this with C<_switches()> to build a command line. Typically this is C<$^X>, but you can set C<$ENV{HARNESS_PERL}> to use a different Perl than what you're running the harness under. This might be to run a threaded Perl, for example. You can also overload this method if you've built your own strap subclass, such as a PHP interpreter for a PHP-based strap. =cut sub _command { my $self = shift; return $ENV{HARNESS_PERL} if defined $ENV{HARNESS_PERL}; return qq["$^X"] if $self->{_is_win32} && ($^X =~ /[^\w\.\/\\]/); return $^X; } =for private $strap->_switches( $file ) Formats and returns the switches necessary to run the test. =cut sub _switches { my($self, $file) = @_; my @existing_switches = $self->_cleaned_switches( $Test::Harness::Switches, $ENV{HARNESS_PERL_SWITCHES} ); my @derived_switches; local *TEST; open(TEST, $file) or print "can't open $file. $!\n"; my $shebang = ; close(TEST) or print "can't close $file. $!\n"; my $taint = ( $shebang =~ /^#!.*\bperl.*\s-\w*([Tt]+)/ ); push( @derived_switches, "-$1" ) if $taint; # When taint mode is on, PERL5LIB is ignored. So we need to put # all that on the command line as -Is. # MacPerl's putenv is broken, so it will not see PERL5LIB, tainted or not. if ( $taint || $self->{_is_macos} ) { my @inc = $self->_filtered_INC; push @derived_switches, map { "-I$_" } @inc; } # Quote the argument if there's any whitespace in it, or if # we're VMS, since VMS requires all parms quoted. Also, don't quote # it if it's already quoted. for ( @derived_switches ) { $_ = qq["$_"] if ((/\s/ || $self->{_is_vms}) && !/^".*"$/ ); } return join( " ", @existing_switches, @derived_switches ); } =for private $strap->_cleaned_switches( @switches_from_user ) Returns only defined, non-blank, trimmed switches from the parms passed. =cut sub _cleaned_switches { my $self = shift; local $_; my @switches; for ( @_ ) { my $switch = $_; next unless defined $switch; $switch =~ s/^\s+//; $switch =~ s/\s+$//; push( @switches, $switch ) if $switch ne ""; } return @switches; } =for private $strap->_INC2PERL5LIB local $ENV{PERL5LIB} = $self->_INC2PERL5LIB; Takes the current value of C<@INC> and turns it into something suitable for putting onto C. =cut sub _INC2PERL5LIB { my($self) = shift; $self->{_old5lib} = $ENV{PERL5LIB}; return join $Config{path_sep}, $self->_filtered_INC; } =for private $strap->_filtered_INC() my @filtered_inc = $self->_filtered_INC; Shortens C<@INC> by removing redundant and unnecessary entries. Necessary for OSes with limited command line lengths, like VMS. =cut sub _filtered_INC { my($self, @inc) = @_; @inc = @INC unless @inc; if( $self->{_is_vms} ) { # VMS has a 255-byte limit on the length of %ENV entries, so # toss the ones that involve perl_root, the install location @inc = grep !/perl_root/i, @inc; } elsif ( $self->{_is_win32} ) { # Lose any trailing backslashes in the Win32 paths s/[\\\/+]$// foreach @inc; } my %seen; $seen{$_}++ foreach $self->_default_inc(); @inc = grep !$seen{$_}++, @inc; return @inc; } { # Without caching, _default_inc() takes a huge amount of time my %cache; sub _default_inc { my $self = shift; my $perl = $self->_command; $cache{$perl} ||= [do { local $ENV{PERL5LIB}; my @inc =`$perl -le "print join qq[\\n], \@INC"`; chomp @inc; }]; return @{$cache{$perl}}; } } =for private $strap->_restore_PERL5LIB() $self->_restore_PERL5LIB; This restores the original value of the C environment variable. Necessary on VMS, otherwise a no-op. =cut sub _restore_PERL5LIB { my($self) = shift; return unless $self->{_is_vms}; if (defined $self->{_old5lib}) { $ENV{PERL5LIB} = $self->{_old5lib}; } } =head1 Parsing Methods for identifying what sort of line you're looking at. =for private _is_diagnostic my $is_diagnostic = $strap->_is_diagnostic($line, \$comment); Checks if the given line is a comment. If so, it will place it into C<$comment> (sans #). =cut sub _is_diagnostic { my($self, $line, $comment) = @_; if( $line =~ /^\s*\#(.*)/ ) { $$comment = $1; return $YES; } else { return $NO; } } =for private _is_header my $is_header = $strap->_is_header($line); Checks if the given line is a header (1..M) line. If so, it places how many tests there will be in C<< $strap->{max} >>, a list of which tests are todo in C<< $strap->{todo} >> and if the whole test was skipped C<< $strap->{skip_all} >> contains the reason. =cut # Regex for parsing a header. Will be run with /x my $Extra_Header_Re = <<'REGEX'; ^ (?: \s+ todo \s+ ([\d \t]+) )? # optional todo set (?: \s* \# \s* ([\w:]+\s?) (.*) )? # optional skip with optional reason REGEX sub _is_header { my($self, $line) = @_; if( my($max, $extra) = $line =~ /^1\.\.(\d+)(.*)/ ) { $self->{max} = $max; assert( $self->{max} >= 0, 'Max # of tests looks right' ); if( defined $extra ) { my($todo, $skip, $reason) = $extra =~ /$Extra_Header_Re/xo; $self->{todo} = { map { $_ => 1 } split /\s+/, $todo } if $todo; if( $self->{max} == 0 ) { $reason = '' unless defined $skip and $skip =~ /^Skip/i; } $self->{skip_all} = $reason; } return $YES; } else { return $NO; } } =for private _is_bail_out my $is_bail_out = $strap->_is_bail_out($line, \$reason); Checks if the line is a "Bail out!". Places the reason for bailing (if any) in $reason. =cut sub _is_bail_out { my($self, $line, $reason) = @_; if( $line =~ /^Bail out!\s*(.*)/i ) { $$reason = $1 if $1; return $YES; } else { return $NO; } } =for private _reset_file_state $strap->_reset_file_state; Resets things like C<< $strap->{max} >> , C<< $strap->{skip_all} >>, etc. so it's ready to parse the next file. =cut sub _reset_file_state { my($self) = shift; delete @{$self}{qw(max skip_all todo too_many_tests)}; $self->{line} = 0; $self->{saw_header} = 0; $self->{saw_bailout}= 0; $self->{lone_not_line} = 0; $self->{bailout_reason} = ''; $self->{'next'} = 1; } =head1 Results The C<%results> returned from C contain the following information: passing true if the whole test is considered a pass (or skipped), false if its a failure exit the exit code of the test run, if from a file wait the wait code of the test run, if from a file max total tests which should have been run seen total tests actually seen skip_all if the whole test was skipped, this will contain the reason. ok number of tests which passed (including todo and skips) todo number of todo tests seen bonus number of todo tests which unexpectedly passed skip number of tests skipped So a successful test should have max == seen == ok. There is one final item, the details. details an array ref reporting the result of each test looks like this: $results{details}[$test_num - 1] = { ok => is the test considered ok? actual_ok => did it literally say 'ok'? name => name of the test (if any) diagnostics => test diagnostics (if any) type => 'skip' or 'todo' (if any) reason => reason for the above (if any) }; Element 0 of the details is test #1. I tried it with element 1 being #1 and 0 being empty, this is less awkward. =head1 EXAMPLES See F for an example of use. =head1 AUTHOR Michael G Schwern C<< >>, currently maintained by Andy Lester C<< >>. =head1 SEE ALSO L =cut sub _def_or_blank { return $_[0] if defined $_[0]; return ""; } 1; Convert-Binary-C-0.76/support/Test/Harness/Assert.pm0000644000175000001440000000161711550664617021060 0ustar mhxuserspackage Test::Harness::Assert; use strict; require Exporter; use vars qw($VERSION @EXPORT @ISA); $VERSION = '0.02'; @ISA = qw(Exporter); @EXPORT = qw(assert); =head1 NAME Test::Harness::Assert - simple assert =head1 SYNOPSIS ### FOR INTERNAL USE ONLY ### use Test::Harness::Assert; assert( EXPR, $name ); =head1 DESCRIPTION A simple assert routine since we don't have Carp::Assert handy. B =head1 FUNCTIONS =head2 C assert( EXPR, $name ); If the expression is false the program aborts. =cut sub assert ($;$) { my($assert, $name) = @_; unless( $assert ) { require Carp; my $msg = 'Assert failed'; $msg .= " - '$name'" if defined $name; $msg .= '!'; Carp::croak($msg); } } =head1 AUTHOR Michael G Schwern C<< >> =head1 SEE ALSO L =cut 1; Convert-Binary-C-0.76/support/Test/Harness/Point.pm0000644000175000001440000000646011550664617020711 0ustar mhxusers# -*- Mode: cperl; cperl-indent-level: 4 -*- package Test::Harness::Point; use strict; use vars qw($VERSION); $VERSION = '0.01'; =head1 NAME Test::Harness::Point - object for tracking a single test point =head1 SYNOPSIS One Test::Harness::Point object represents a single test point. =head1 CONSTRUCTION =head2 new() my $point = new Test::Harness::Point; Create a test point object. =cut sub new { my $class = shift; my $self = bless {}, $class; return $self; } =head1 from_test_line( $line ) Constructor from a TAP test line, or empty return if the test line is not a test line. =cut sub from_test_line { my $class = shift; my $line = shift or return; # We pulverize the line down into pieces in three parts. my ($not, $number, $extra) = ($line =~ /^(not )?ok\b(?:\s+(\d+))?\s*(.*)/) or return; my $point = $class->new; $point->set_number( $number ); $point->set_ok( !$not ); if ( $extra ) { my ($description,$directive) = split( /(?:[^\\]|^)#/, $extra, 2 ); $description =~ s/^- //; # Test::More puts it in there $point->set_description( $description ); if ( $directive ) { $point->set_directive( $directive ); } } # if $extra return $point; } # from_test_line() =head1 ACCESSORS Each of the following fields has a getter and setter method. =over 4 =item * ok =item * number =cut sub ok { my $self = shift; $self->{ok} } sub set_ok { my $self = shift; my $ok = shift; $self->{ok} = $ok ? 1 : 0; } sub pass { my $self = shift; return ($self->ok || $self->is_todo || $self->is_skip) ? 1 : 0; } sub number { my $self = shift; $self->{number} } sub set_number { my $self = shift; $self->{number} = shift } sub description { my $self = shift; $self->{description} } sub set_description { my $self = shift; $self->{description} = shift; $self->{name} = $self->{description}; # history } sub directive { my $self = shift; $self->{directive} } sub set_directive { my $self = shift; my $directive = shift; $directive =~ s/^\s+//; $directive =~ s/\s+$//; $self->{directive} = $directive; my ($type,$reason) = ($directive =~ /^\s*(\S+)(?:\s+(.*))?$/); $self->set_directive_type( $type ); $reason = "" unless defined $reason; $self->{directive_reason} = $reason; } sub set_directive_type { my $self = shift; $self->{directive_type} = lc shift; $self->{type} = $self->{directive_type}; # History } sub set_directive_reason { my $self = shift; $self->{directive_reason} = shift; } sub directive_type { my $self = shift; $self->{directive_type} } sub type { my $self = shift; $self->{directive_type} } sub directive_reason{ my $self = shift; $self->{directive_reason} } sub reason { my $self = shift; $self->{directive_reason} } sub is_todo { my $self = shift; my $type = $self->directive_type; return $type && ( $type eq 'todo' ); } sub is_skip { my $self = shift; my $type = $self->directive_type; return $type && ( $type eq 'skip' ); } sub diagnostics { my $self = shift; return @{$self->{diagnostics}} if wantarray; return join( "\n", @{$self->{diagnostics}} ); } sub add_diagnostic { my $self = shift; push @{$self->{diagnostics}}, @_ } 1; Convert-Binary-C-0.76/support/Test.pm0000644000175000001440000007027711550664617016224 0ustar mhxusers require 5.004; package Test; # Time-stamp: "2004-04-28 21:46:51 ADT" use strict; use Carp; use vars (qw($VERSION @ISA @EXPORT @EXPORT_OK $ntest $TestLevel), #public-ish qw($TESTOUT $TESTERR %Program_Lines $told_about_diff $ONFAIL %todo %history $planned @FAILDETAIL) #private-ish ); # In case a test is run in a persistent environment. sub _reset_globals { %todo = (); %history = (); @FAILDETAIL = (); $ntest = 1; $TestLevel = 0; # how many extra stack frames to skip $planned = 0; } $VERSION = '1.25'; require Exporter; @ISA=('Exporter'); @EXPORT = qw(&plan &ok &skip); @EXPORT_OK = qw($ntest $TESTOUT $TESTERR); $|=1; $TESTOUT = *STDOUT{IO}; $TESTERR = *STDERR{IO}; # Use of this variable is strongly discouraged. It is set mainly to # help test coverage analyzers know which test is running. $ENV{REGRESSION_TEST} = $0; =head1 NAME Test - provides a simple framework for writing test scripts =head1 SYNOPSIS use strict; use Test; # use a BEGIN block so we print our plan before MyModule is loaded BEGIN { plan tests => 14, todo => [3,4] } # load your module... use MyModule; # Helpful notes. All note-lines must start with a "#". print "# I'm testing MyModule version $MyModule::VERSION\n"; ok(0); # failure ok(1); # success ok(0); # ok, expected failure (see todo list, above) ok(1); # surprise success! ok(0,1); # failure: '0' ne '1' ok('broke','fixed'); # failure: 'broke' ne 'fixed' ok('fixed','fixed'); # success: 'fixed' eq 'fixed' ok('fixed',qr/x/); # success: 'fixed' =~ qr/x/ ok(sub { 1+1 }, 2); # success: '2' eq '2' ok(sub { 1+1 }, 3); # failure: '2' ne '3' my @list = (0,0); ok @list, 3, "\@list=".join(',',@list); #extra notes ok 'segmentation fault', '/(?i)success/'; #regex match skip( $^O =~ m/MSWin/ ? "Skip if MSWin" : 0, # whether to skip $foo, $bar # arguments just like for ok(...) ); skip( $^O =~ m/MSWin/ ? 0 : "Skip unless MSWin", # whether to skip $foo, $bar # arguments just like for ok(...) ); =head1 DESCRIPTION This module simplifies the task of writing test files for Perl modules, such that their output is in the format that L expects to see. =head1 QUICK START GUIDE To write a test for your new (and probably not even done) module, create a new file called F (in a new F directory). If you have multiple test files, to test the "foo", "bar", and "baz" feature sets, then feel free to call your files F, F, and F =head2 Functions This module defines three public functions, C, C, and C. By default, all three are exported by the C statement. =over 4 =item C BEGIN { plan %theplan; } This should be the first thing you call in your test script. It declares your testing plan, how many there will be, if any of them should be allowed to fail, and so on. Typical usage is just: use Test; BEGIN { plan tests => 23 } These are the things that you can put in the parameters to plan: =over =item C I> The number of tests in your script. This means all ok() and skip() calls. =item C [I<1,5,14>]> A reference to a list of tests which are allowed to fail. See L. =item C sub { ... }> =item C \&some_sub> A subroutine reference to be run at the end of the test script, if any of the tests fail. See L. =back You must call C once and only once. You should call it in a C block, like so: BEGIN { plan tests => 23 } =cut sub plan { croak "Test::plan(%args): odd number of arguments" if @_ & 1; croak "Test::plan(): should not be called more than once" if $planned; local($\, $,); # guard against -l and other things that screw with # print _reset_globals(); _read_program( (caller)[1] ); my $max=0; while (@_) { my ($k,$v) = splice(@_, 0, 2); if ($k =~ /^test(s)?$/) { $max = $v; } elsif ($k eq 'todo' or $k eq 'failok') { for (@$v) { $todo{$_}=1; }; } elsif ($k eq 'onfail') { ref $v eq 'CODE' or croak "Test::plan(onfail => $v): must be CODE"; $ONFAIL = $v; } else { carp "Test::plan(): skipping unrecognized directive '$k'" } } my @todo = sort { $a <=> $b } keys %todo; if (@todo) { print $TESTOUT "1..$max todo ".join(' ', @todo).";\n"; } else { print $TESTOUT "1..$max\n"; } ++$planned; print $TESTOUT "# Running under perl version $] for $^O", (chr(65) eq 'A') ? "\n" : " in a non-ASCII world\n"; print $TESTOUT "# Win32::BuildNumber ", &Win32::BuildNumber(), "\n" if defined(&Win32::BuildNumber) and defined &Win32::BuildNumber(); print $TESTOUT "# MacPerl version $MacPerl::Version\n" if defined $MacPerl::Version; printf $TESTOUT "# Current time local: %s\n# Current time GMT: %s\n", scalar(localtime($^T)), scalar(gmtime($^T)); print $TESTOUT "# Using Test.pm version $VERSION\n"; # Retval never used: return undef; } sub _read_program { my($file) = shift; return unless defined $file and length $file and -e $file and -f _ and -r _; open(SOURCEFILE, "<$file") || return; $Program_Lines{$file} = []; close(SOURCEFILE); foreach my $x (@{$Program_Lines{$file}}) { $x =~ tr/\cm\cj\n\r//d } unshift @{$Program_Lines{$file}}, ''; return 1; } =begin _private =item B<_to_value> my $value = _to_value($input); Converts an C parameter to its value. Typically this just means running it, if it's a code reference. You should run all inputted values through this. =cut sub _to_value { my ($v) = @_; return ref $v eq 'CODE' ? $v->() : $v; } sub _quote { my $str = $_[0]; return "" unless defined $str; $str =~ s/\\/\\\\/g; $str =~ s/"/\\"/g; $str =~ s/\a/\\a/g; $str =~ s/[\b]/\\b/g; $str =~ s/\e/\\e/g; $str =~ s/\f/\\f/g; $str =~ s/\n/\\n/g; $str =~ s/\r/\\r/g; $str =~ s/\t/\\t/g; $str =~ s/([\0-\037])(?!\d)/sprintf('\\%o',ord($1))/eg; $str =~ s/([\0-\037\177-\377])/sprintf('\\x%02X',ord($1))/eg; $str =~ s/([^\0-\176])/sprintf('\\x{%X}',ord($1))/eg; #if( $_[1] ) { # substr( $str , 218-3 ) = "..." # if length($str) >= 218 and !$ENV{PERL_TEST_NO_TRUNC}; #} return qq("$str"); } =end _private =item C ok(1 + 1 == 2); ok($have, $expect); ok($have, $expect, $diagnostics); This function is the reason for C's existence. It's the basic function that handles printing "C" or "C", along with the current test number. (That's what C wants to see.) In its most basic usage, C simply takes a single scalar expression. If its value is true, the test passes; if false, the test fails. Examples: # Examples of ok(scalar) ok( 1 + 1 == 2 ); # ok if 1 + 1 == 2 ok( $foo =~ /bar/ ); # ok if $foo contains 'bar' ok( baz($x + $y) eq 'Armondo' ); # ok if baz($x + $y) returns # 'Armondo' ok( @a == @b ); # ok if @a and @b are the same length The expression is evaluated in scalar context. So the following will work: ok( @stuff ); # ok if @stuff has any elements ok( !grep !defined $_, @stuff ); # ok if everything in @stuff is # defined. A special case is if the expression is a subroutine reference (in either C syntax or C<\&foo> syntax). In that case, it is executed and its value (true or false) determines if the test passes or fails. For example, ok( sub { # See whether sleep works at least passably my $start_time = time; sleep 5; time() - $start_time >= 4 }); In its two-argument form, C, I)> compares the two scalar values to see if they match. They match if both are undefined, or if I is a regex that matches I, or if they compare equal with C. # Example of ok(scalar, scalar) ok( "this", "that" ); # not ok, 'this' ne 'that' ok( "", undef ); # not ok, "" is defined The second argument is considered a regex if it is either a regex object or a string that looks like a regex. Regex objects are constructed with the qr// operator in recent versions of perl. A string is considered to look like a regex if its first and last characters are "/", or if the first character is "m" and its second and last characters are both the same non-alphanumeric non-whitespace character. These regexp Regex examples: ok( 'JaffO', '/Jaff/' ); # ok, 'JaffO' =~ /Jaff/ ok( 'JaffO', 'm|Jaff|' ); # ok, 'JaffO' =~ m|Jaff| ok( 'JaffO', qr/Jaff/ ); # ok, 'JaffO' =~ qr/Jaff/; ok( 'JaffO', '/(?i)jaff/ ); # ok, 'JaffO' =~ /jaff/i; If either (or both!) is a subroutine reference, it is run and used as the value for comparing. For example: ok sub { open(OUT, ">x.dat") || die $!; print OUT "\x{e000}"; close OUT; my $bytecount = -s 'x.dat'; unlink 'x.dat' or warn "Can't unlink : $!"; return $bytecount; }, 4 ; The above test passes two values to C -- the first a coderef, and the second is the number 4. Before C compares them, it calls the coderef, and uses its return value as the real value of this parameter. Assuming that C<$bytecount> returns 4, C ends up testing C<4 eq 4>. Since that's true, this test passes. Finally, you can append an optional third argument, in C,I, I)>, where I is a string value that will be printed if the test fails. This should be some useful information about the test, pertaining to why it failed, and/or a description of the test. For example: ok( grep($_ eq 'something unique', @stuff), 1, "Something that should be unique isn't!\n". '@stuff = '.join ', ', @stuff ); Unfortunately, a note cannot be used with the single argument style of C. That is, if you try C, I)>, then C will interpret this as C, I)>, and probably end up testing C eq I> -- and that's not what you want! All of the above special cases can occasionally cause some problems. See L. =cut # A past maintainer of this module said: # <> # sub ok ($;$$) { croak "ok: plan before you test!" if !$planned; local($\,$,); # guard against -l and other things that screw with # print my ($pkg,$file,$line) = caller($TestLevel); my $repetition = ++$history{"$file:$line"}; my $context = ("$file at line $line". ($repetition > 1 ? " fail \#$repetition" : '')); # Are we comparing two values? my $compare = 0; my $ok=0; my $result = _to_value(shift); my ($expected, $isregex, $regex); if (@_ == 0) { $ok = $result; } else { $compare = 1; $expected = _to_value(shift); if (!defined $expected) { $ok = !defined $result; } elsif (!defined $result) { $ok = 0; } elsif (ref($expected) eq 'Regexp') { $ok = $result =~ /$expected/; $regex = $expected; } elsif (($regex) = ($expected =~ m,^ / (.+) / $,sx) or (undef, $regex) = ($expected =~ m,^ m([^\w\s]) (.+) \1 $,sx)) { $ok = $result =~ /$regex/; } else { $ok = $result eq $expected; } } my $todo = $todo{$ntest}; if ($todo and $ok) { $context .= ' TODO?!' if $todo; print $TESTOUT "ok $ntest # ($context)\n"; } else { # Issuing two seperate prints() causes problems on VMS. if (!$ok) { print $TESTOUT "not ok $ntest\n"; } else { print $TESTOUT "ok $ntest\n"; } $ok or _complain($result, $expected, { 'repetition' => $repetition, 'package' => $pkg, 'result' => $result, 'todo' => $todo, 'file' => $file, 'line' => $line, 'context' => $context, 'compare' => $compare, @_ ? ('diagnostic' => _to_value(shift)) : (), }); } ++ $ntest; $ok; } sub _complain { my($result, $expected, $detail) = @_; $$detail{expected} = $expected if defined $expected; # Get the user's diagnostic, protecting against multi-line # diagnostics. my $diag = $$detail{diagnostic}; $diag =~ s/\n/\n#/g if defined $diag; $$detail{context} .= ' *TODO*' if $$detail{todo}; if (!$$detail{compare}) { if (!$diag) { print $TESTERR "# Failed test $ntest in $$detail{context}\n"; } else { print $TESTERR "# Failed test $ntest in $$detail{context}: $diag\n"; } } else { my $prefix = "Test $ntest"; print $TESTERR "# $prefix got: " . _quote($result) . " ($$detail{context})\n"; $prefix = ' ' x (length($prefix) - 5); my $expected_quoted = (defined $$detail{regex}) ? 'qr{'.($$detail{regex}).'}' : _quote($expected); print $TESTERR "# $prefix Expected: $expected_quoted", $diag ? " ($diag)" : (), "\n"; _diff_complain( $result, $expected, $detail, $prefix ) if defined($expected) and 2 < ($expected =~ tr/\n//); } if(defined $Program_Lines{ $$detail{file} }[ $$detail{line} ]) { print $TESTERR "# $$detail{file} line $$detail{line} is: $Program_Lines{ $$detail{file} }[ $$detail{line} ]\n" if $Program_Lines{ $$detail{file} }[ $$detail{line} ] =~ m/[^\s\#\(\)\{\}\[\]\;]/; # Otherwise it's uninformative undef $Program_Lines{ $$detail{file} }[ $$detail{line} ]; # So we won't repeat it. } push @FAILDETAIL, $detail; return; } sub _diff_complain { my($result, $expected, $detail, $prefix) = @_; return _diff_complain_external(@_) if $ENV{PERL_TEST_DIFF}; return _diff_complain_algdiff(@_) if eval { require Algorithm::Diff; Algorithm::Diff->VERSION(1.15); 1; }; $told_about_diff++ or print $TESTERR <<"EOT"; # $prefix (Install the Algorithm::Diff module to have differences in multiline # $prefix output explained. You might also set the PERL_TEST_DIFF environment # $prefix variable to run a diff program on the output.) EOT ; return; } sub _diff_complain_external { my($result, $expected, $detail, $prefix) = @_; my $diff = $ENV{PERL_TEST_DIFF} || die "WHAAAA?"; require File::Temp; my($got_fh, $got_filename) = File::Temp::tempfile("test-got-XXXXX"); my($exp_fh, $exp_filename) = File::Temp::tempfile("test-exp-XXXXX"); unless ($got_fh && $exp_fh) { warn "Can't get tempfiles"; return; } print $got_fh $result; print $exp_fh $expected; if (close($got_fh) && close($exp_fh)) { my $diff_cmd = "$diff $exp_filename $got_filename"; print $TESTERR "#\n# $prefix $diff_cmd\n"; if (open(DIFF, "$diff_cmd |")) { local $_; while () { print $TESTERR "# $prefix $_"; } close(DIFF); } else { warn "Can't run diff: $!"; } } else { warn "Can't write to tempfiles: $!"; } unlink($got_filename); unlink($exp_filename); return; } sub _diff_complain_algdiff { my($result, $expected, $detail, $prefix) = @_; my @got = split(/^/, $result); my @exp = split(/^/, $expected); my $diff_kind; my @diff_lines; my $diff_flush = sub { return unless $diff_kind; my $count_lines = @diff_lines; my $s = $count_lines == 1 ? "" : "s"; my $first_line = $diff_lines[0][0] + 1; print $TESTERR "# $prefix "; if ($diff_kind eq "GOT") { print $TESTERR "Got $count_lines extra line$s at line $first_line:\n"; for my $i (@diff_lines) { print $TESTERR "# $prefix + " . _quote($got[$i->[0]]) . "\n"; } } elsif ($diff_kind eq "EXP") { if ($count_lines > 1) { my $last_line = $diff_lines[-1][0] + 1; print $TESTERR "Lines $first_line-$last_line are"; } else { print $TESTERR "Line $first_line is"; } print $TESTERR " missing:\n"; for my $i (@diff_lines) { print $TESTERR "# $prefix - " . _quote($exp[$i->[1]]) . "\n"; } } elsif ($diff_kind eq "CH") { if ($count_lines > 1) { my $last_line = $diff_lines[-1][0] + 1; print $TESTERR "Lines $first_line-$last_line are"; } else { print $TESTERR "Line $first_line is"; } print $TESTERR " changed:\n"; for my $i (@diff_lines) { print $TESTERR "# $prefix - " . _quote($exp[$i->[1]]) . "\n"; print $TESTERR "# $prefix + " . _quote($got[$i->[0]]) . "\n"; } } # reset $diff_kind = undef; @diff_lines = (); }; my $diff_collect = sub { my $kind = shift; &$diff_flush() if $diff_kind && $diff_kind ne $kind; $diff_kind = $kind; push(@diff_lines, [@_]); }; Algorithm::Diff::traverse_balanced( \@got, \@exp, { DISCARD_A => sub { &$diff_collect("GOT", @_) }, DISCARD_B => sub { &$diff_collect("EXP", @_) }, CHANGE => sub { &$diff_collect("CH", @_) }, MATCH => sub { &$diff_flush() }, }, ); &$diff_flush(); return; } #~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~ =item C, I)> This is used for tests that under some conditions can be skipped. It's basically equivalent to: if( $skip_if_true ) { ok(1); } else { ok( args... ); } ...except that the C emits not just "C>" but actually "C # I>". The arguments after the I are what is fed to C if this test isn't skipped. Example usage: my $if_MSWin = $^O =~ m/MSWin/ ? 'Skip if under MSWin' : ''; # A test to be skipped if under MSWin (i.e., run except under MSWin) skip($if_MSWin, thing($foo), thing($bar) ); Or, going the other way: my $unless_MSWin = $^O =~ m/MSWin/ ? '' : 'Skip unless under MSWin'; # A test to be skipped unless under MSWin (i.e., run only under MSWin) skip($unless_MSWin, thing($foo), thing($bar) ); The tricky thing to remember is that the first parameter is true if you want to I the test, not I it; and it also doubles as a note about why it's being skipped. So in the first codeblock above, read the code as "skip if MSWin -- (otherwise) test whether C is C" or for the second case, "skip unless MSWin...". Also, when your I string is true, it really should (for backwards compatibility with older Test.pm versions) start with the string "Skip", as shown in the above examples. Note that in the above cases, C and C I evaluated -- but as long as the C is true, then we C just tosses out their value (i.e., not bothering to treat them like values to C. But if you need to I eval the arguments when skipping the test, use this format: skip( $unless_MSWin, sub { # This code returns true if the test passes. # (But it doesn't even get called if the test is skipped.) thing($foo) eq thing($bar) } ); or even this, which is basically equivalent: skip( $unless_MSWin, sub { thing($foo) }, sub { thing($bar) } ); That is, both are like this: if( $unless_MSWin ) { ok(1); # but it actually appends "# $unless_MSWin" # so that Test::Harness can tell it's a skip } else { # Not skipping, so actually call and evaluate... ok( sub { thing($foo) }, sub { thing($bar) } ); } =cut sub skip ($;$$$) { local($\, $,); # guard against -l and other things that screw with # print my $whyskip = _to_value(shift); if (!@_ or $whyskip) { $whyskip = '' if $whyskip =~ m/^\d+$/; $whyskip =~ s/^[Ss]kip(?:\s+|$)//; # backwards compatibility, old # versions required the reason # to start with 'skip' # We print in one shot for VMSy reasons. my $ok = "ok $ntest # skip"; $ok .= " $whyskip" if length $whyskip; $ok .= "\n"; print $TESTOUT $ok; ++ $ntest; return 1; } else { # backwards compatiblity (I think). skip() used to be # called like ok(), which is weird. I haven't decided what to do with # this yet. # warn <(\@FAILDETAIL) if @FAILDETAIL && $ONFAIL; } 1; __END__ =head1 TEST TYPES =over 4 =item * NORMAL TESTS These tests are expected to succeed. Usually, most or all of your tests are in this category. If a normal test doesn't succeed, then that means that something is I. =item * SKIPPED TESTS The C function is for tests that might or might not be possible to run, depending on the availability of platform-specific features. The first argument should evaluate to true (think "yes, please skip") if the required feature is I available. After the first argument, C works exactly the same way as C does. =item * TODO TESTS TODO tests are designed for maintaining an B. These tests are I If a TODO test does succeed, then the feature in question shouldn't be on the TODO list, now should it? Packages should NOT be released with succeeding TODO tests. As soon as a TODO test starts working, it should be promoted to a normal test, and the newly working feature should be documented in the release notes or in the change log. =back =head1 ONFAIL BEGIN { plan test => 4, onfail => sub { warn "CALL 911!" } } Although test failures should be enough, extra diagnostics can be triggered at the end of a test run. C is passed an array ref of hash refs that describe each test failure. Each hash will contain at least the following fields: C, C, and C. (You shouldn't rely on any other fields being present.) If the test had an expected value or a diagnostic (or "note") string, these will also be included. The I C hook might be used simply to print out the version of your package and/or how to report problems. It might also be used to generate extremely sophisticated diagnostics for a particularly bizarre test failure. However it's not a panacea. Core dumps or other unrecoverable errors prevent the C hook from running. (It is run inside an C block.) Besides, C is probably over-kill in most cases. (Your test code should be simpler than the code it is testing, yes?) =head1 BUGS and CAVEATS =over =item * C's special handing of strings which look like they might be regexes can also cause unexpected behavior. An innocent: ok( $fileglob, '/path/to/some/*stuff/' ); will fail, since Test.pm considers the second argument to be a regex! The best bet is to use the one-argument form: ok( $fileglob eq '/path/to/some/*stuff/' ); =item * C's use of string C can sometimes cause odd problems when comparing numbers, especially if you're casting a string to a number: $foo = "1.0"; ok( $foo, 1 ); # not ok, "1.0" ne 1 Your best bet is to use the single argument form: ok( $foo == 1 ); # ok "1.0" == 1 =item * As you may have inferred from the above documentation and examples, C's prototype is C<($;$$)> (and, incidentally, C's is C<($;$$$)>). This means, for example, that you can do C to compare the I of the two arrays. But don't be fooled into thinking that C means a comparison of the contents of two arrays -- you're comparing I the number of elements of each. It's so easy to make that mistake in reading C that you might want to be very explicit about it, and instead write C. =item * This almost definitely doesn't do what you expect: ok $thingy->can('some_method'); Why? Because C returns a coderef to mean "yes it can (and the method is this...)", and then C sees a coderef and thinks you're passing a function that you want it to call and consider the truth of the result of! I.e., just like: ok $thingy->can('some_method')->(); What you probably want instead is this: ok $thingy->can('some_method') && 1; If the C returns false, then that is passed to C. If it returns true, then the larger expression S<< C<< $thingy->can('some_method') && 1 >> >> returns 1, which C sees as a simple signal of success, as you would expect. =item * The syntax for C is about the only way it can be, but it's still quite confusing. Just start with the above examples and you'll be okay. Moreover, users may expect this: skip $unless_mswin, foo($bar), baz($quux); to not evaluate C and C when the test is being skipped. But in reality, they I evaluated, but C just won't bother comparing them if C<$unless_mswin> is true. You could do this: skip $unless_mswin, sub{foo($bar)}, sub{baz($quux)}; But that's not terribly pretty. You may find it simpler or clearer in the long run to just do things like this: if( $^O =~ m/MSWin/ ) { print "# Yay, we're under $^O\n"; ok foo($bar), baz($quux); ok thing($whatever), baz($stuff); ok blorp($quux, $whatever); ok foo($barzbarz), thang($quux); } else { print "# Feh, we're under $^O. Watch me skip some tests...\n"; for(1 .. 4) { skip "Skip unless under MSWin" } } But be quite sure that C is called exactly as many times in the first block as C is called in the second block. =back =head1 ENVIRONMENT If C environment variable is set, it will be used as a command for comparing unexpected multiline results. If you have GNU diff installed, you might want to set C to C. If you don't have a suitable program, you might install the C module and then set C to be C. If C isn't set but the C module is available, then it will be used to show the differences in multiline results. =for comment If C is set, then the initial "Got 'something' but expected 'something_else'" readings for long multiline output values aren't truncated at about the 230th column, as they normally could be in some cases. Normally you won't need to use this, unless you were carefully parsing the output of your test programs. =head1 NOTE A past developer of this module once said that it was no longer being actively developed. However, rumors of its demise were greatly exaggerated. Feedback and suggestions are quite welcome. Be aware that the main value of this module is its simplicity. Note that there are already more ambitious modules out there, such as L and L. Some earlier versions of this module had docs with some confusing typoes in the description of C. =head1 SEE ALSO L L, L, L L for building your own testing library. L is an interesting XUnit-style testing library. L and L let you embed tests in code. =head1 AUTHOR Copyright (c) 1998-2000 Joshua Nathaniel Pritikin. All rights reserved. Copyright (c) 2001-2002 Michael G. Schwern. Copyright (c) 2002-2004 and counting Sean M. Burke. Current maintainer: Sean M. Burke. Esburke@cpan.orgE This package is free software and is provided "as is" without express or implied warranty. It may be used, redistributed and/or modified under the same terms as Perl itself. =cut # "Your mistake was a hidden intention." # -- /Oblique Strategies/, Brian Eno and Peter Schmidt Convert-Binary-C-0.76/Makefile.PL0000755000175000001440000004554411550664607015206 0ustar mhxusers#!/usr/bin/perl ################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:20 +0200 $ # $Revision: 114 $ # $Source: /Makefile.PL $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ # Check which version of perl the user is running, # and emit some warnings when appropriate. BEGIN { if ($] < 5.006) { print STDERR < WARNING: The version of perl you're using ($]) is very old. --> --> Convert::Binary::C is intended to build cleanly on --> perl versions >= 5.6.0. However, there are some hacks --> to make the code compatible with older versions. --> ENDWARN if ($] < 5.004) { print STDERR "--> But the module will not build with perl < 5.004.\n\n"; exit; } elsif ($] < 5.005) { print STDERR "--> Chances are quite good that the module will\n", "--> build successfully, but you won't be able to\n", "--> run the full test suite, as it uses features\n", "--> not available in perl < 5.005.\n"; } else { print STDERR "--> Chances are quite good that the module will\n", "--> build and test successfully.\n"; } print STDERR < --> You can try to build the module with this version of --> perl, but you should rather update your perl installation. ENDWARN } } # Use some standard modules use ExtUtils::MakeMaker; use File::Find; use Cwd; use Config; $MODULE = 'Convert::Binary::C'; # We need bison only when the source code is modified # Actually, we need a recent version of bison ( >= 1.31 ), # but this isn't checked here. $BISON = $Config{bison} || 'bison'; # Where to look for includes @INC_PATH = qw( . ); # All object files (without extension) @OBJECT = qw( cbc/basic cbc/dimension cbc/hook cbc/idl cbc/init cbc/macros cbc/member cbc/object cbc/option cbc/pack cbc/sourcify cbc/tag cbc/type cbc/typeinfo cbc/util ctlib/bitfields ctlib/byteorder ctlib/cterror ctlib/ctparse ctlib/cttags ctlib/cttype ctlib/fileinfo ctlib/layout ctlib/y_parser ctlib/y_pragma ucpp/assert ucpp/cpp ucpp/eval ucpp/nhash ucpp/lexer ucpp/macro ucpp/mem util/hash util/list util/memalloc ); @DBGOBJ = qw( cbc/debug ctlib/ctdebug ); unshift @OBJECT, $MODULE =~ /([^:]+)$/; # Files additionally to be removed on 'make realclean' @REALCLEAN = qw( ctlib/y_parser.output ctlib/y_pragma.output tests/debug.out ); @CLEAN = qw( $(OBJECT) tests/*.vg tests/*.vgo tests/cache.cbc ); @DEFINE = qw( UCPP_CONFIG UTIL_HAVE_CONFIG_H ); # On AIX systems, this should be defined for ucpp $^O eq 'aix' and push @DEFINE, qw( POSIX_JMP ); # Supported features, and flags to set when (e)nabled or (d)isabled %FEATURES = ( debug => { enabled => $Config{ccflags} =~ /-DDEBUGGING\b/ ? 1 : 0, e_flags => [qw( CBC_DEBUGGING CTLIB_DEBUGGING DEBUG_MEMALLOC DEBUG_UTIL_HASH DEBUG_UTIL_LIST YYDEBUG=1 )], d_flags => [qw( NDEBUG )], }, ieeefp => { enabled => undef, e_flags => [qw( CBC_HAVE_IEEE_FP )], d_flags => [qw()], }, ($Config{usethreads} || $Config{use5005threads} || $Config{useithreads}) ? ( '~threads' => { enabled => 1, e_flags => [qw( CBC_THREAD_SAFE )], d_flags => [qw()], } ) : (), $Config{gccversion} ? ( '$format-check' => { enabled => 0, e_flags => [qw( CTLIB_FORMAT_CHECK UTIL_FORMAT_CHECK )], d_flags => [qw()], }, '$coverage' => { enabled => 0, e_flags => [qw()], d_flags => [qw()], } ) : (), '$mem-check' => { enabled => 0, e_flags => [qw( MEM_DEBUG DEBUG_MEMALLOC TRACE_MEMALLOC AUTOPURGE_MEMALLOC )], d_flags => [qw()], }, ); # Automatically generated files %EXAMPLES = ( map { my $x=$_; s/^bin/examples/; s/PL$/pl/; ($x => $_) } glob "bin/*.PL" ); %GENERATE = ( %EXAMPLES, 'ctlib/arch.pl' => 'ctlib/arch.h', ); push @REALCLEAN, map { ref $_ ? @$_ : $_ } values %GENERATE; # Extract features/optimizations from the commandline arguments @ARGV = map { my $myopt = 0; if( my($what, $feat) = /^(en|dis)able-(\S+)$/ ) { for my $pre ('', '$', '~') { if (exists $FEATURES{$pre.$feat}) { warn "WARNING: Feature '$feat' is deprecated and will be removed!\n" if $pre eq '~'; $feat = $pre.$feat; last; } } unless (exists $FEATURES{$feat}) { my @feat = join ', ', map { s/^[\$\~]//; "'$_'" } sort keys %FEATURES; die "Invalid feature '$feat'. Use one of @feat.\n"; } $FEATURES{$feat}{enabled} = $what eq 'en'; $myopt = 1; } elsif( /^help$/ ) { die < !!!!!!!!!! -------------------------------------------------- --> !! WHOA !! You did not pass the IEEE floating point check! --> !!!!!!!!!! -------------------------------------------------- --> --> This means I've done a couple of very simple tests to see if your machine --> is storing floating point numbers in IEEE format or not. From the results --> I concluded that your machine does _NOT_ store floating point values in --> IEEE format. --> --> These are the values for which the IEEE test failed: --> --> value format expected got --> --------------------------------------------------------------------------- ENDMSG my $hex = sub { join ' ', map { sprintf "%02X", $_ } unpack "C*", $_[0] }; for my $t (@ieee_fail) { printf "--> %-15s %-7s %-24s %-24s\n", $t->{value}, $t->{check}, $hex->( $t->{expected} ), $hex->( $t->{got} ); } print < --------------------------------------------------------------------------- --> --> If you're aware of the fact that your machine does not support IEEE --> floating point, please ignore the junk above. You can suppress this --> message by explicitly disabling the 'ieeefp' feature: --> --> $^X Makefile.PL disable-ieeefp --> --> If you're sure that your machine has IEEE floating point support and the --> tests are just complete crap, you can force IEEE support by explicitly --> enabling the 'ieeefp' feature: --> --> $^X Makefile.PL enable-ieeefp ENDMSG } } WriteMakefile( 'NAME' => $MODULE, 'VERSION_FROM' => 'lib/Convert/Binary/C.pm', 'OBJECT' => join( ' ', map { "$_\$(OBJ_EXT)" } sort @OBJECT ), 'INC' => join( ' ', map { "-I$_" } @INC_PATH ), 'EXE_FILES' => ['bin/ccconfig'], 'PL_FILES' => \%GENERATE, 'CONFIGURE' => \&configure, 'clean' => { FILES => "@CLEAN" }, 'realclean' => { FILES => "@REALCLEAN" }, ); ############################################################################# sub configure { # Configure and print information about features for (keys %FEATURES) { my $feat = $_; my $f = $FEATURES{$feat}; my $class = ''; $class = 'DEVELOPMENT-ONLY ' if $feat =~ s/^\$//; $class = 'DEPRECATED ' if $feat =~ s/^~//; $f->{enabled} and print "Building with ${class}feature '$feat'\n"; push @DEFINE, @{$f->{enabled} ? $f->{e_flags} : $f->{d_flags} }; } my $config = { 'CCFLAGS' => $Config{ccflags}, 'DEFINE' => join(' ', map("-D$_", @DEFINE)), 'depend' => { find_depend( @INC_PATH ) }, }; if ($FEATURES{'$coverage'}{enabled}) { $config->{'CCFLAGS'} .= ' -g -fprofile-arcs -ftest-coverage'; if ($Config{gccversion} =~ /(\d+)\.(\d+)\.(\d+)/ && ($1+1e-3*$2+1e-6*$3) >= 3.004) { $config->{'LDLOADLIBS'} = '-lgcov'; # not a valid parameter, but works... } } if ($FEATURES{'$format-check'}{enabled}) { $config->{'CCFLAGS'} .= ' -Wformat=2'; } if (eval $ExtUtils::MakeMaker::VERSION >= 6) { $config->{'AUTHOR'} = 'Marcus Holland-Moritz '; $config->{'ABSTRACT_FROM'} = 'lib/Convert/Binary/C.pm'; } if (eval $ExtUtils::MakeMaker::VERSION >= 6.30_01) { print "Setting license tag...\n"; $config->{'LICENSE'} = 'perl'; if (eval $ExtUtils::MakeMaker::VERSION >= 6.45_01) { $config->{'META_MERGE'} = { no_index => { directory => [qw( support )], file => [qw( bin/elf.PL )], }, resources => { license => 'http://dev.perl.org/licenses/', homepage => 'http://search.cpan.org/~mhx/Convert-Binary-C/', bugtracker => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=Convert-Binary-C', MailingList => 'convert-binary-c@yahoogroups.com', }, } } else { $config->{'EXTRA_META'} = <<'META'; no_index: directory: - support file: - bin/elf.PL META } } $config; } sub MY::c_o { package MY; my $c_o = shift->SUPER::c_o(@_); if (!$ENV{CBC_MAKEFILE_DEBUG} and eval $ExtUtils::MakeMaker::VERSION >= 6.17) { $c_o =~ s/^(\s+)(\$\(CCCMD\).*)$/$1\$(NOECHO) \$(ECHO) Compiling [\$(CC) \$(OPTIMIZE)] \$<\n$1\$(NOECHO) $2\n$1\$(NOECHO) \$(MV) \$(\@F) t_object.tmp\n$1\$(NOECHO) \$(MV) t_object.tmp \$\@/mg; } else { $c_o =~ s/^\s+\$\(CCCMD\).*$/$&\n\t\$(MV) \$(\@F) t_object.tmp\n\t\$(MV) t_object.tmp \$\@/mg; } $c_o; } sub MY::constants { package MY; shift->SUPER::constants(@_).< '$(YACC) -v -p c_ -o {dst} {src}', src => 'ctlib/parser.y', dst => ['ctlib/y_parser.c'], }, { cmd => '$(YACC) -v -p pragma_ -o {dst} {src}', src => 'ctlib/pragma.y', dst => ['ctlib/y_pragma.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/parser.pl', dst => ['token/t_parser.c', 'token/t_keywords.c', 'token/t_ckeytok.c', 'token/t_basic.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/pragma.pl', dst => ['token/t_pragma.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/config.pl', dst => ['token/t_config.c', 'token/t_sourcify.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/tag.pl', dst => ['token/t_tag.h', 'token/t_tag.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/hook.pl', dst => ['token/t_hookid.h', 'token/t_hookid.c'], }, { cmd => '$(PERL) {src} {dst}', src => 'token/blproperty.pl', dst => ['token/t_blproperty.h', 'token/t_blproperty.c'], }, ); my(@gen, @old_dst, @old_src, @missing); for my $s (@spec) { for my $dst (@{$s->{dst}}) { my $cmd = $s->{cmd}; $cmd =~ s/\{dst\}/$dst/g; $cmd =~ s/\{(\w+)\}/$s->{$1}/g; push @gen, $cmd; if (-f $dst) { if (-M $s->{src} < -M $dst) { push @old_dst, $dst; push @old_src, $s->{src}; } } else { push @missing, $dst; } } } @old_src = do { my %s; grep !$s{$_}++, @old_src }; my $make = $Config{'make'} || 'make'; if (@missing) { print STDERR < WARNING: The following autogenerated files are missing: --> --> @missing --> --> Please run: --> --> $make regen --> --> If you just extracted the source distribution and did --> not modify or delete any files, something is seriously --> wrong. ENDWARN } elsif (@old_dst) { print STDERR < WARNING: The following generated files are out of date with --> respect to their source files: --> --> @old_dst --> --> Either you've used a nasty program to extract the files in --> this distribution, or you've modified these source files --> --> @old_src --> --> intentionally and forgot to run --> --> $make regen --> --> afterwards. --> --> If you don't understand anything of the above, you're most --> probably safe if you just run --> --> $make --> --> now. ENDWARN } my $postamble = shift->SUPER::postamble(@_); $postamble .= "\nregen:\n\t" . join("\n\t", @gen) . "\n"; $postamble .= <\$\$file.vg 2>&1 || exit 2; \\ mv \$\$file.vg \$\$file.vgo; \\ fi; \\ grep "==.*==.*$sym" \$\$file.vgo; \\ done END } else { $postamble .= <SUPER::test(@_); $::FEATURES{debug}{enabled} and $test =~ s!^test\s*:.*!$&$/\t\@\$(RM_F) tests/debug.out!m; $test } sub MY::installbin { package MY; my $ibin = shift->SUPER::installbin(@_); my @ex = values %::EXAMPLES; unless ($ibin =~ s!^pure_all\s*:+\s*!$&@ex !m) { $ibin .= "\npure_all :: @ex\n"; } $ibin } sub MY::perldepend { package MY; my $dep = shift->SUPER::perldepend(@_); my @deps; open FILE, "C.xs" or die "C.xs: $!"; while () { /^INCLUDE:\s*(\S+)/ or next; push @deps, $1; } close FILE; $dep =~ s/^(C\.c\s*:)/$1 @deps /m; $dep } # The following routines will extract the include dependencies # from the source files. sub find_depend { my @inc_path = ('.', @_); my(%depend, %d); my $cwd = getcwd; printf "Finding dependencies...\n"; for (@inc_path) { /\/$/ or $_ .= '/'; } File::Find::find(sub { /\.(?:(xs)|[chy])$/ or return; $File::Find::dir =~ /^\.[\/\\]tests[\/\\]/ and return; # exclude test directory my @incs; open FILE, $_ or die "$_: $!"; my $olddir = getcwd; chdir $cwd; while () { my($inc,$base) = /^\s*#\s*include\s*"([^"]+\.\w+)"/ or next; for my $path (@inc_path, "$File::Find::dir/") { if (-e "$path$inc") { push @incs, $path . $inc; } } for my $gen (keys %GENERATE) { push @incs, grep /\E$inc/, (ref $GENERATE{$gen} ? @{$GENERATE{$gen}} : $GENERATE{$gen}); } } close FILE; chdir $olddir; return unless @incs; my $name = $File::Find::name; for (@incs, $name) { s/\.[\\\/]//; s/^\.\/|\/\.(?=\/)//g; s/[^\/]+\/\.\.\///g; } @{$depend{$name}}{@incs} = (1)x@incs; }, '.'); for my $o (@OBJECT) { my $name = $o; for my $ext (qw( xs y c )) { -e "$name.$ext" and $name .= ".$ext" and last; } my %incs; rec_depend($name, \%depend, \%incs); $d{"$o\$(OBJ_EXT)"} = join ' ', sort keys %incs; } %d; } sub rec_depend { my($f,$d,$i) = @_; my $h = $d->{$f}; for (keys %$h) { exists $i->{$_} and next; $i->{$_} = 1; exists $d->{$_} and rec_depend($_, $d, $i); } } sub is_big_endian { my $byteorder = $Config{byteorder} || unpack( "a*", pack "L", 0x34333231 ); die "Native byte order ($byteorder) not supported!\n" if $byteorder ne '1234' and $byteorder ne '4321' and $byteorder ne '12345678' and $byteorder ne '87654321'; $byteorder eq '4321' or $byteorder eq '87654321'; } sub check_ieee_fp { my @test = ( { value => '-1.0', double => pack( 'C*', 0xBF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0xBF, 0x80, 0x00, 0x00 ), }, { value => '0.0', double => pack( 'C*', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x00, 0x00, 0x00, 0x00 ), }, { value => '0.4', double => pack( 'C*', 0x3F, 0xD9, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9A ), single => pack( 'C*', 0x3E, 0xCC, 0xCC, 0xCD ), }, { value => '1.0', double => pack( 'C*', 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x3F, 0x80, 0x00, 0x00 ), }, { value => '3.1415926535', double => pack( 'C*', 0x40, 0x09, 0x21, 0xFB, 0x54, 0x41, 0x17, 0x44 ), single => pack( 'C*', 0x40, 0x49, 0x0F, 0xDB ), }, { value => '1.220703125e-4', double => pack( 'C*', 0x3F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ), single => pack( 'C*', 0x39, 0x00, 0x00, 0x00 ), }, ); my @fail; for my $t ( @test ) { my $s = pack 'f', $t->{value}; my $d = pack 'd', $t->{value}; unless( &is_big_endian ) { for( $s, $d ) { $_ = reverse $_ } } $s eq $t->{single} or push @fail, { value => $t->{value}, check => 'single', expected => $t->{single}, got => $s }; $d eq $t->{double} or push @fail, { value => $t->{value}, check => 'double', expected => $t->{double}, got => $d }; } return @fail; } Convert-Binary-C-0.76/ppport.h0000644000175000001440000052142611550664617014725 0ustar mhxusers#if 0 <<'SKIP'; #endif /* ---------------------------------------------------------------------- ppport.h -- Perl/Pollution/Portability Version 3.17 Automatically created by Devel::PPPort running under perl 5.011000. Do NOT edit this file directly! -- Edit PPPort_pm.PL and the includes in parts/inc/ instead. Use 'perldoc ppport.h' to view the documentation below. ---------------------------------------------------------------------- SKIP =pod =head1 NAME ppport.h - Perl/Pollution/Portability version 3.17 =head1 SYNOPSIS perl ppport.h [options] [source files] Searches current directory for files if no [source files] are given --help show short help --version show version --patch=file write one patch file with changes --copy=suffix write changed copies with suffix --diff=program use diff program and options --compat-version=version provide compatibility with Perl version --cplusplus accept C++ comments --quiet don't output anything except fatal errors --nodiag don't show diagnostics --nohints don't show hints --nochanges don't suggest changes --nofilter don't filter input files --strip strip all script and doc functionality from ppport.h --list-provided list provided API --list-unsupported list unsupported API --api-info=name show Perl API portability information =head1 COMPATIBILITY This version of F is designed to support operation with Perl installations back to 5.003, and has been tested up to 5.10.0. =head1 OPTIONS =head2 --help Display a brief usage summary. =head2 --version Display the version of F. =head2 --patch=I If this option is given, a single patch file will be created if any changes are suggested. This requires a working diff program to be installed on your system. =head2 --copy=I If this option is given, a copy of each file will be saved with the given suffix that contains the suggested changes. This does not require any external programs. Note that this does not automagially add a dot between the original filename and the suffix. If you want the dot, you have to include it in the option argument. If neither C<--patch> or C<--copy> are given, the default is to simply print the diffs for each file. This requires either C or a C program to be installed. =head2 --diff=I Manually set the diff program and options to use. The default is to use C, when installed, and output unified context diffs. =head2 --compat-version=I Tell F to check for compatibility with the given Perl version. The default is to check for compatibility with Perl version 5.003. You can use this option to reduce the output of F if you intend to be backward compatible only down to a certain Perl version. =head2 --cplusplus Usually, F will detect C++ style comments and replace them with C style comments for portability reasons. Using this option instructs F to leave C++ comments untouched. =head2 --quiet Be quiet. Don't print anything except fatal errors. =head2 --nodiag Don't output any diagnostic messages. Only portability alerts will be printed. =head2 --nohints Don't output any hints. Hints often contain useful portability notes. Warnings will still be displayed. =head2 --nochanges Don't suggest any changes. Only give diagnostic output and hints unless these are also deactivated. =head2 --nofilter Don't filter the list of input files. By default, files not looking like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. =head2 --strip Strip all script and documentation functionality from F. This reduces the size of F dramatically and may be useful if you want to include F in smaller modules without increasing their distribution size too much. The stripped F will have a C<--unstrip> option that allows you to undo the stripping, but only if an appropriate C module is installed. =head2 --list-provided Lists the API elements for which compatibility is provided by F. Also lists if it must be explicitly requested, if it has dependencies, and if there are hints or warnings for it. =head2 --list-unsupported Lists the API elements that are known not to be supported by F and below which version of Perl they probably won't be available or work. =head2 --api-info=I Show portability information for API elements matching I. If I is surrounded by slashes, it is interpreted as a regular expression. =head1 DESCRIPTION In order for a Perl extension (XS) module to be as portable as possible across differing versions of Perl itself, certain steps need to be taken. =over 4 =item * Including this header is the first major one. This alone will give you access to a large part of the Perl API that hasn't been available in earlier Perl releases. Use perl ppport.h --list-provided to see which API elements are provided by ppport.h. =item * You should avoid using deprecated parts of the API. For example, using global Perl variables without the C prefix is deprecated. Also, some API functions used to have a C prefix. Using this form is also deprecated. You can safely use the supported API, as F will provide wrappers for older Perl versions. =item * If you use one of a few functions or variables that were not present in earlier versions of Perl, and that can't be provided using a macro, you have to explicitly request support for these functions by adding one or more C<#define>s in your source code before the inclusion of F. These functions or variables will be marked C in the list shown by C<--list-provided>. Depending on whether you module has a single or multiple files that use such functions or variables, you want either C or global variants. For a C function or variable (used only in a single source file), use: #define NEED_function #define NEED_variable For a global function or variable (used in multiple source files), use: #define NEED_function_GLOBAL #define NEED_variable_GLOBAL Note that you mustn't have more than one global request for the same function or variable in your project. Function / Variable Static Request Global Request ----------------------------------------------------------------------------------------- PL_parser NEED_PL_parser NEED_PL_parser_GLOBAL PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL grok_number() NEED_grok_number NEED_grok_number_GLOBAL grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL load_module() NEED_load_module NEED_load_module_GLOBAL my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL my_sprintf() NEED_my_sprintf NEED_my_sprintf_GLOBAL my_strlcat() NEED_my_strlcat NEED_my_strlcat_GLOBAL my_strlcpy() NEED_my_strlcpy NEED_my_strlcpy_GLOBAL newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL newSVpvn_flags() NEED_newSVpvn_flags NEED_newSVpvn_flags_GLOBAL newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL pv_display() NEED_pv_display NEED_pv_display_GLOBAL pv_escape() NEED_pv_escape NEED_pv_escape_GLOBAL pv_pretty() NEED_pv_pretty NEED_pv_pretty_GLOBAL sv_2pv_flags() NEED_sv_2pv_flags NEED_sv_2pv_flags_GLOBAL sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL sv_pvn_force_flags() NEED_sv_pvn_force_flags NEED_sv_pvn_force_flags_GLOBAL sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL vload_module() NEED_vload_module NEED_vload_module_GLOBAL vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL warner() NEED_warner NEED_warner_GLOBAL To avoid namespace conflicts, you can change the namespace of the explicitly exported functions / variables using the C macro. Just C<#define> the macro before including C: #define DPPP_NAMESPACE MyOwnNamespace_ #include "ppport.h" The default namespace is C. =back The good thing is that most of the above can be checked by running F on your source code. See the next section for details. =head1 EXAMPLES To verify whether F is needed for your module, whether you should make any changes to your code, and whether any special defines should be used, F can be run as a Perl script to check your source code. Simply say: perl ppport.h The result will usually be a list of patches suggesting changes that should at least be acceptable, if not necessarily the most efficient solution, or a fix for all possible problems. If you know that your XS module uses features only available in newer Perl releases, if you're aware that it uses C++ comments, and if you want all suggestions as a single patch file, you could use something like this: perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff If you only want your code to be scanned without any suggestions for changes, use: perl ppport.h --nochanges You can specify a different C program or options, using the C<--diff> option: perl ppport.h --diff='diff -C 10' This would output context diffs with 10 lines of context. If you want to create patched copies of your files instead, use: perl ppport.h --copy=.new To display portability information for the C function, use: perl ppport.h --api-info=newSVpvn Since the argument to C<--api-info> can be a regular expression, you can use perl ppport.h --api-info=/_nomg$/ to display portability information for all C<_nomg> functions or perl ppport.h --api-info=/./ to display information for all known API elements. =head1 BUGS If this version of F is causing failure during the compilation of this module, please check if newer versions of either this module or C are available on CPAN before sending a bug report. If F was generated using the latest version of C and is causing failure of this module, please file a bug report using the CPAN Request Tracker at L. Please include the following information: =over 4 =item 1. The complete output from running "perl -V" =item 2. This file. =item 3. The name and version of the module you were trying to build. =item 4. A full log of the build that failed. =item 5. Any other information that you think could be relevant. =back For the latest version of this code, please get the C module from CPAN. =head1 COPYRIGHT Version 3.x, Copyright (c) 2004-2009, Marcus Holland-Moritz. Version 2.x, Copyright (C) 2001, Paul Marquess. Version 1.x, Copyright (C) 1999, Kenneth Albanowski. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 SEE ALSO See L. =cut use strict; # Disable broken TRIE-optimization BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } my $VERSION = 3.17; my %opt = ( quiet => 0, diag => 1, hints => 1, changes => 1, cplusplus => 0, filter => 1, strip => 0, version => 0, ); my($ppport) = $0 =~ /([\w.]+)$/; my $LF = '(?:\r\n|[\r\n])'; # line feed my $HS = "[ \t]"; # horizontal whitespace # Never use C comments in this file! my $ccs = '/'.'*'; my $cce = '*'.'/'; my $rccs = quotemeta $ccs; my $rcce = quotemeta $cce; eval { require Getopt::Long; Getopt::Long::GetOptions(\%opt, qw( help quiet diag! filter! hints! changes! cplusplus strip version patch=s copy=s diff=s compat-version=s list-provided list-unsupported api-info=s )) or usage(); }; if ($@ and grep /^-/, @ARGV) { usage() if "@ARGV" =~ /^--?h(?:elp)?$/; die "Getopt::Long not found. Please don't use any options.\n"; } if ($opt{version}) { print "This is $0 $VERSION.\n"; exit 0; } usage() if $opt{help}; strip() if $opt{strip}; if (exists $opt{'compat-version'}) { my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) }; if ($@) { die "Invalid version number format: '$opt{'compat-version'}'\n"; } die "Only Perl 5 is supported\n" if $r != 5; die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; } else { $opt{'compat-version'} = 5; } my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ ? ( $1 => { ($2 ? ( base => $2 ) : ()), ($3 ? ( todo => $3 ) : ()), (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()), } ) : die "invalid spec: $_" } qw( AvFILLp|5.004050||p AvFILL||| CLASS|||n CPERLscope|5.005000||p CX_CURPAD_SAVE||| CX_CURPAD_SV||| CopFILEAV|5.006000||p CopFILEGV_set|5.006000||p CopFILEGV|5.006000||p CopFILESV|5.006000||p CopFILE_set|5.006000||p CopFILE|5.006000||p CopSTASHPV_set|5.006000||p CopSTASHPV|5.006000||p CopSTASH_eq|5.006000||p CopSTASH_set|5.006000||p CopSTASH|5.006000||p CopyD|5.009002||p Copy||| CvPADLIST||| CvSTASH||| CvWEAKOUTSIDE||| DEFSV_set|5.011000||p DEFSV|5.004050||p END_EXTERN_C|5.005000||p ENTER||| ERRSV|5.004050||p EXTEND||| EXTERN_C|5.005000||p F0convert|||n FREETMPS||| GIMME_V||5.004000|n GIMME|||n GROK_NUMERIC_RADIX|5.007002||p G_ARRAY||| G_DISCARD||| G_EVAL||| G_METHOD|5.006001||p G_NOARGS||| G_SCALAR||| G_VOID||5.004000| GetVars||| GvSV||| Gv_AMupdate||| HEf_SVKEY||5.004000| HeHASH||5.004000| HeKEY||5.004000| HeKLEN||5.004000| HePV||5.004000| HeSVKEY_force||5.004000| HeSVKEY_set||5.004000| HeSVKEY||5.004000| HeUTF8||5.011000| HeVAL||5.004000| HvNAME||| INT2PTR|5.006000||p IN_LOCALE_COMPILETIME|5.007002||p IN_LOCALE_RUNTIME|5.007002||p IN_LOCALE|5.007002||p IN_PERL_COMPILETIME|5.008001||p IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p IS_NUMBER_INFINITY|5.007002||p IS_NUMBER_IN_UV|5.007002||p IS_NUMBER_NAN|5.007003||p IS_NUMBER_NEG|5.007002||p IS_NUMBER_NOT_INT|5.007002||p IVSIZE|5.006000||p IVTYPE|5.006000||p IVdf|5.006000||p LEAVE||| LVRET||| MARK||| MULTICALL||5.011000| MY_CXT_CLONE|5.009002||p MY_CXT_INIT|5.007003||p MY_CXT|5.007003||p MoveD|5.009002||p Move||| NOOP|5.005000||p NUM2PTR|5.006000||p NVTYPE|5.006000||p NVef|5.006001||p NVff|5.006001||p NVgf|5.006001||p Newxc|5.009003||p Newxz|5.009003||p Newx|5.009003||p Nullav||| Nullch||| Nullcv||| Nullhv||| Nullsv||| ORIGMARK||| PAD_BASE_SV||| PAD_CLONE_VARS||| PAD_COMPNAME_FLAGS||| PAD_COMPNAME_GEN_set||| PAD_COMPNAME_GEN||| PAD_COMPNAME_OURSTASH||| PAD_COMPNAME_PV||| PAD_COMPNAME_TYPE||| PAD_DUP||| PAD_RESTORE_LOCAL||| PAD_SAVE_LOCAL||| PAD_SAVE_SETNULLPAD||| PAD_SETSV||| PAD_SET_CUR_NOSAVE||| PAD_SET_CUR||| PAD_SVl||| PAD_SV||| PERLIO_FUNCS_CAST|5.009003||p PERLIO_FUNCS_DECL|5.009003||p PERL_ABS|5.008001||p PERL_BCDVERSION|5.011000||p PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p PERL_HASH|5.004000||p PERL_INT_MAX|5.004000||p PERL_INT_MIN|5.004000||p PERL_LONG_MAX|5.004000||p PERL_LONG_MIN|5.004000||p PERL_MAGIC_arylen|5.007002||p PERL_MAGIC_backref|5.007002||p PERL_MAGIC_bm|5.007002||p PERL_MAGIC_collxfrm|5.007002||p PERL_MAGIC_dbfile|5.007002||p PERL_MAGIC_dbline|5.007002||p PERL_MAGIC_defelem|5.007002||p PERL_MAGIC_envelem|5.007002||p PERL_MAGIC_env|5.007002||p PERL_MAGIC_ext|5.007002||p PERL_MAGIC_fm|5.007002||p PERL_MAGIC_glob|5.011000||p PERL_MAGIC_isaelem|5.007002||p PERL_MAGIC_isa|5.007002||p PERL_MAGIC_mutex|5.011000||p PERL_MAGIC_nkeys|5.007002||p PERL_MAGIC_overload_elem|5.007002||p PERL_MAGIC_overload_table|5.007002||p PERL_MAGIC_overload|5.007002||p PERL_MAGIC_pos|5.007002||p PERL_MAGIC_qr|5.007002||p PERL_MAGIC_regdata|5.007002||p PERL_MAGIC_regdatum|5.007002||p PERL_MAGIC_regex_global|5.007002||p PERL_MAGIC_shared_scalar|5.007003||p PERL_MAGIC_shared|5.007003||p PERL_MAGIC_sigelem|5.007002||p PERL_MAGIC_sig|5.007002||p PERL_MAGIC_substr|5.007002||p PERL_MAGIC_sv|5.007002||p PERL_MAGIC_taint|5.007002||p PERL_MAGIC_tiedelem|5.007002||p PERL_MAGIC_tiedscalar|5.007002||p PERL_MAGIC_tied|5.007002||p PERL_MAGIC_utf8|5.008001||p PERL_MAGIC_uvar_elem|5.007003||p PERL_MAGIC_uvar|5.007002||p PERL_MAGIC_vec|5.007002||p PERL_MAGIC_vstring|5.008001||p PERL_PV_ESCAPE_ALL|5.009004||p PERL_PV_ESCAPE_FIRSTCHAR|5.009004||p PERL_PV_ESCAPE_NOBACKSLASH|5.009004||p PERL_PV_ESCAPE_NOCLEAR|5.009004||p PERL_PV_ESCAPE_QUOTE|5.009004||p PERL_PV_ESCAPE_RE|5.009005||p PERL_PV_ESCAPE_UNI_DETECT|5.009004||p PERL_PV_ESCAPE_UNI|5.009004||p PERL_PV_PRETTY_DUMP|5.009004||p PERL_PV_PRETTY_ELLIPSES|5.010000||p PERL_PV_PRETTY_LTGT|5.009004||p PERL_PV_PRETTY_NOCLEAR|5.010000||p PERL_PV_PRETTY_QUOTE|5.009004||p PERL_PV_PRETTY_REGPROP|5.009004||p PERL_QUAD_MAX|5.004000||p PERL_QUAD_MIN|5.004000||p PERL_REVISION|5.006000||p PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p PERL_SCAN_DISALLOW_PREFIX|5.007003||p PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p PERL_SCAN_SILENT_ILLDIGIT|5.008001||p PERL_SHORT_MAX|5.004000||p PERL_SHORT_MIN|5.004000||p PERL_SIGNALS_UNSAFE_FLAG|5.008001||p PERL_SUBVERSION|5.006000||p PERL_UCHAR_MAX|5.004000||p PERL_UCHAR_MIN|5.004000||p PERL_UINT_MAX|5.004000||p PERL_UINT_MIN|5.004000||p PERL_ULONG_MAX|5.004000||p PERL_ULONG_MIN|5.004000||p PERL_UNUSED_ARG|5.009003||p PERL_UNUSED_CONTEXT|5.009004||p PERL_UNUSED_DECL|5.007002||p PERL_UNUSED_VAR|5.007002||p PERL_UQUAD_MAX|5.004000||p PERL_UQUAD_MIN|5.004000||p PERL_USE_GCC_BRACE_GROUPS|5.009004||p PERL_USHORT_MAX|5.004000||p PERL_USHORT_MIN|5.004000||p PERL_VERSION|5.006000||p PL_DBsignal|5.005000||p PL_DBsingle|||pn PL_DBsub|||pn PL_DBtrace|||pn PL_Sv|5.005000||p PL_bufend|5.011000||p PL_bufptr|5.011000||p PL_compiling|5.004050||p PL_copline|5.011000||p PL_curcop|5.004050||p PL_curstash|5.004050||p PL_debstash|5.004050||p PL_defgv|5.004050||p PL_diehook|5.004050||p PL_dirty|5.004050||p PL_dowarn|||pn PL_errgv|5.004050||p PL_expect|5.011000||p PL_hexdigit|5.005000||p PL_hints|5.005000||p PL_last_in_gv|||n PL_laststatval|5.005000||p PL_lex_state|5.011000||p PL_lex_stuff|5.011000||p PL_linestr|5.011000||p PL_modglobal||5.005000|n PL_na|5.004050||pn PL_no_modify|5.006000||p PL_ofsgv|||n PL_parser|5.009005||p PL_perl_destruct_level|5.004050||p PL_perldb|5.004050||p PL_ppaddr|5.006000||p PL_rsfp_filters|5.004050||p PL_rsfp|5.004050||p PL_rs|||n PL_signals|5.008001||p PL_stack_base|5.004050||p PL_stack_sp|5.004050||p PL_statcache|5.005000||p PL_stdingv|5.004050||p PL_sv_arenaroot|5.004050||p PL_sv_no|5.004050||pn PL_sv_undef|5.004050||pn PL_sv_yes|5.004050||pn PL_tainted|5.004050||p PL_tainting|5.004050||p PL_tokenbuf|5.011000||p POP_MULTICALL||5.011000| POPi|||n POPl|||n POPn|||n POPpbytex||5.007001|n POPpx||5.005030|n POPp|||n POPs|||n PTR2IV|5.006000||p PTR2NV|5.006000||p PTR2UV|5.006000||p PTR2nat|5.009003||p PTR2ul|5.007001||p PTRV|5.006000||p PUSHMARK||| PUSH_MULTICALL||5.011000| PUSHi||| PUSHmortal|5.009002||p PUSHn||| PUSHp||| PUSHs||| PUSHu|5.004000||p PUTBACK||| PerlIO_clearerr||5.007003| PerlIO_close||5.007003| PerlIO_context_layers||5.009004| PerlIO_eof||5.007003| PerlIO_error||5.007003| PerlIO_fileno||5.007003| PerlIO_fill||5.007003| PerlIO_flush||5.007003| PerlIO_get_base||5.007003| PerlIO_get_bufsiz||5.007003| PerlIO_get_cnt||5.007003| PerlIO_get_ptr||5.007003| PerlIO_read||5.007003| PerlIO_seek||5.007003| PerlIO_set_cnt||5.007003| PerlIO_set_ptrcnt||5.007003| PerlIO_setlinebuf||5.007003| PerlIO_stderr||5.007003| PerlIO_stdin||5.007003| PerlIO_stdout||5.007003| PerlIO_tell||5.007003| PerlIO_unread||5.007003| PerlIO_write||5.007003| Perl_signbit||5.009005|n PoisonFree|5.009004||p PoisonNew|5.009004||p PoisonWith|5.009004||p Poison|5.008000||p RETVAL|||n Renewc||| Renew||| SAVECLEARSV||| SAVECOMPPAD||| SAVEPADSV||| SAVETMPS||| SAVE_DEFSV|5.004050||p SPAGAIN||| SP||| START_EXTERN_C|5.005000||p START_MY_CXT|5.007003||p STMT_END|||p STMT_START|||p STR_WITH_LEN|5.009003||p ST||| SV_CONST_RETURN|5.009003||p SV_COW_DROP_PV|5.008001||p SV_COW_SHARED_HASH_KEYS|5.009005||p SV_GMAGIC|5.007002||p SV_HAS_TRAILING_NUL|5.009004||p SV_IMMEDIATE_UNREF|5.007001||p SV_MUTABLE_RETURN|5.009003||p SV_NOSTEAL|5.009002||p SV_SMAGIC|5.009003||p SV_UTF8_NO_ENCODING|5.008001||p SVf_UTF8|5.006000||p SVf|5.006000||p SVt_IV||| SVt_NV||| SVt_PVAV||| SVt_PVCV||| SVt_PVHV||| SVt_PVMG||| SVt_PV||| Safefree||| Slab_Alloc||| Slab_Free||| Slab_to_rw||| StructCopy||| SvCUR_set||| SvCUR||| SvEND||| SvGAMAGIC||5.006001| SvGETMAGIC|5.004050||p SvGROW||| SvIOK_UV||5.006000| SvIOK_notUV||5.006000| SvIOK_off||| SvIOK_only_UV||5.006000| SvIOK_only||| SvIOK_on||| SvIOKp||| SvIOK||| SvIVX||| SvIV_nomg|5.009001||p SvIV_set||| SvIVx||| SvIV||| SvIsCOW_shared_hash||5.008003| SvIsCOW||5.008003| SvLEN_set||| SvLEN||| SvLOCK||5.007003| SvMAGIC_set|5.009003||p SvNIOK_off||| SvNIOKp||| SvNIOK||| SvNOK_off||| SvNOK_only||| SvNOK_on||| SvNOKp||| SvNOK||| SvNVX||| SvNV_set||| SvNVx||| SvNV||| SvOK||| SvOOK_offset||5.011000| SvOOK||| SvPOK_off||| SvPOK_only_UTF8||5.006000| SvPOK_only||| SvPOK_on||| SvPOKp||| SvPOK||| SvPVX_const|5.009003||p SvPVX_mutable|5.009003||p SvPVX||| SvPV_const|5.009003||p SvPV_flags_const_nolen|5.009003||p SvPV_flags_const|5.009003||p SvPV_flags_mutable|5.009003||p SvPV_flags|5.007002||p SvPV_force_flags_mutable|5.009003||p SvPV_force_flags_nolen|5.009003||p SvPV_force_flags|5.007002||p SvPV_force_mutable|5.009003||p SvPV_force_nolen|5.009003||p SvPV_force_nomg_nolen|5.009003||p SvPV_force_nomg|5.007002||p SvPV_force|||p SvPV_mutable|5.009003||p SvPV_nolen_const|5.009003||p SvPV_nolen|5.006000||p SvPV_nomg_const_nolen|5.009003||p SvPV_nomg_const|5.009003||p SvPV_nomg|5.007002||p SvPV_renew|5.009003||p SvPV_set||| SvPVbyte_force||5.009002| SvPVbyte_nolen||5.006000| SvPVbytex_force||5.006000| SvPVbytex||5.006000| SvPVbyte|5.006000||p SvPVutf8_force||5.006000| SvPVutf8_nolen||5.006000| SvPVutf8x_force||5.006000| SvPVutf8x||5.006000| SvPVutf8||5.006000| SvPVx||| SvPV||| SvREFCNT_dec||| SvREFCNT_inc_NN|5.009004||p SvREFCNT_inc_simple_NN|5.009004||p SvREFCNT_inc_simple_void_NN|5.009004||p SvREFCNT_inc_simple_void|5.009004||p SvREFCNT_inc_simple|5.009004||p SvREFCNT_inc_void_NN|5.009004||p SvREFCNT_inc_void|5.009004||p SvREFCNT_inc|||p SvREFCNT||| SvROK_off||| SvROK_on||| SvROK||| SvRV_set|5.009003||p SvRV||| SvRXOK||5.009005| SvRX||5.009005| SvSETMAGIC||| SvSHARED_HASH|5.009003||p SvSHARE||5.007003| SvSTASH_set|5.009003||p SvSTASH||| SvSetMagicSV_nosteal||5.004000| SvSetMagicSV||5.004000| SvSetSV_nosteal||5.004000| SvSetSV||| SvTAINTED_off||5.004000| SvTAINTED_on||5.004000| SvTAINTED||5.004000| SvTAINT||| SvTRUE||| SvTYPE||| SvUNLOCK||5.007003| SvUOK|5.007001|5.006000|p SvUPGRADE||| SvUTF8_off||5.006000| SvUTF8_on||5.006000| SvUTF8||5.006000| SvUVXx|5.004000||p SvUVX|5.004000||p SvUV_nomg|5.009001||p SvUV_set|5.009003||p SvUVx|5.004000||p SvUV|5.004000||p SvVOK||5.008001| SvVSTRING_mg|5.009004||p THIS|||n UNDERBAR|5.009002||p UTF8_MAXBYTES|5.009002||p UVSIZE|5.006000||p UVTYPE|5.006000||p UVXf|5.007001||p UVof|5.006000||p UVuf|5.006000||p UVxf|5.006000||p WARN_ALL|5.006000||p WARN_AMBIGUOUS|5.006000||p WARN_ASSERTIONS|5.011000||p WARN_BAREWORD|5.006000||p WARN_CLOSED|5.006000||p WARN_CLOSURE|5.006000||p WARN_DEBUGGING|5.006000||p WARN_DEPRECATED|5.006000||p WARN_DIGIT|5.006000||p WARN_EXEC|5.006000||p WARN_EXITING|5.006000||p WARN_GLOB|5.006000||p WARN_INPLACE|5.006000||p WARN_INTERNAL|5.006000||p WARN_IO|5.006000||p WARN_LAYER|5.008000||p WARN_MALLOC|5.006000||p WARN_MISC|5.006000||p WARN_NEWLINE|5.006000||p WARN_NUMERIC|5.006000||p WARN_ONCE|5.006000||p WARN_OVERFLOW|5.006000||p WARN_PACK|5.006000||p WARN_PARENTHESIS|5.006000||p WARN_PIPE|5.006000||p WARN_PORTABLE|5.006000||p WARN_PRECEDENCE|5.006000||p WARN_PRINTF|5.006000||p WARN_PROTOTYPE|5.006000||p WARN_QW|5.006000||p WARN_RECURSION|5.006000||p WARN_REDEFINE|5.006000||p WARN_REGEXP|5.006000||p WARN_RESERVED|5.006000||p WARN_SEMICOLON|5.006000||p WARN_SEVERE|5.006000||p WARN_SIGNAL|5.006000||p WARN_SUBSTR|5.006000||p WARN_SYNTAX|5.006000||p WARN_TAINT|5.006000||p WARN_THREADS|5.008000||p WARN_UNINITIALIZED|5.006000||p WARN_UNOPENED|5.006000||p WARN_UNPACK|5.006000||p WARN_UNTIE|5.006000||p WARN_UTF8|5.006000||p WARN_VOID|5.006000||p XCPT_CATCH|5.009002||p XCPT_RETHROW|5.009002||p XCPT_TRY_END|5.009002||p XCPT_TRY_START|5.009002||p XPUSHi||| XPUSHmortal|5.009002||p XPUSHn||| XPUSHp||| XPUSHs||| XPUSHu|5.004000||p XSRETURN_EMPTY||| XSRETURN_IV||| XSRETURN_NO||| XSRETURN_NV||| XSRETURN_PV||| XSRETURN_UNDEF||| XSRETURN_UV|5.008001||p XSRETURN_YES||| XSRETURN|||p XST_mIV||| XST_mNO||| XST_mNV||| XST_mPV||| XST_mUNDEF||| XST_mUV|5.008001||p XST_mYES||| XS_VERSION_BOOTCHECK||| XS_VERSION||| XSprePUSH|5.006000||p XS||| ZeroD|5.009002||p Zero||| _aMY_CXT|5.007003||p _pMY_CXT|5.007003||p aMY_CXT_|5.007003||p aMY_CXT|5.007003||p aTHXR_|5.011000||p aTHXR|5.011000||p aTHX_|5.006000||p aTHX|5.006000||p add_data|||n addmad||| allocmy||| amagic_call||| amagic_cmp_locale||| amagic_cmp||| amagic_i_ncmp||| amagic_ncmp||| any_dup||| ao||| append_elem||| append_list||| append_madprops||| apply_attrs_my||| apply_attrs_string||5.006001| apply_attrs||| apply||| atfork_lock||5.007003|n atfork_unlock||5.007003|n av_arylen_p||5.009003| av_clear||| av_create_and_push||5.009005| av_create_and_unshift_one||5.009005| av_delete||5.006000| av_exists||5.006000| av_extend||| av_fetch||| av_fill||| av_iter_p||5.011000| av_len||| av_make||| av_pop||| av_push||| av_reify||| av_shift||| av_store||| av_undef||| av_unshift||| ax|||n bad_type||| bind_match||| block_end||| block_gimme||5.004000| block_start||| boolSV|5.004000||p boot_core_PerlIO||| boot_core_UNIVERSAL||| boot_core_mro||| boot_core_xsutils||| bytes_from_utf8||5.007001| bytes_to_uni|||n bytes_to_utf8||5.006001| call_argv|5.006000||p call_atexit||5.006000| call_list||5.004000| call_method|5.006000||p call_pv|5.006000||p call_sv|5.006000||p calloc||5.007002|n cando||| cast_i32||5.006000| cast_iv||5.006000| cast_ulong||5.006000| cast_uv||5.006000| check_type_and_open||| check_uni||| checkcomma||| checkposixcc||| ckWARN|5.006000||p ck_anoncode||| ck_bitop||| ck_concat||| ck_defined||| ck_delete||| ck_die||| ck_each||| ck_eof||| ck_eval||| ck_exec||| ck_exists||| ck_exit||| ck_ftst||| ck_fun||| ck_glob||| ck_grep||| ck_index||| ck_join||| ck_lfun||| ck_listiob||| ck_match||| ck_method||| ck_null||| ck_open||| ck_readline||| ck_repeat||| ck_require||| ck_return||| ck_rfun||| ck_rvconst||| ck_sassign||| ck_select||| ck_shift||| ck_sort||| ck_spair||| ck_split||| ck_subr||| ck_substr||| ck_svconst||| ck_trunc||| ck_unpack||| ckwarn_d||5.009003| ckwarn||5.009003| cl_and|||n cl_anything|||n cl_init_zero|||n cl_init|||n cl_is_anything|||n cl_or|||n clear_placeholders||| closest_cop||| convert||| cop_free||| cr_textfilter||| create_eval_scope||| croak_nocontext|||vn croak_xs_usage||5.011000| croak|||v csighandler||5.009003|n curmad||| custom_op_desc||5.007003| custom_op_name||5.007003| cv_ckproto_len||| cv_clone||| cv_const_sv||5.004000| cv_dump||| cv_undef||| cx_dump||5.005000| cx_dup||| cxinc||| dAXMARK|5.009003||p dAX|5.007002||p dITEMS|5.007002||p dMARK||| dMULTICALL||5.009003| dMY_CXT_SV|5.007003||p dMY_CXT|5.007003||p dNOOP|5.006000||p dORIGMARK||| dSP||| dTHR|5.004050||p dTHXR|5.011000||p dTHXa|5.006000||p dTHXoa|5.006000||p dTHX|5.006000||p dUNDERBAR|5.009002||p dVAR|5.009003||p dXCPT|5.009002||p dXSARGS||| dXSI32||| dXSTARG|5.006000||p deb_curcv||| deb_nocontext|||vn deb_stack_all||| deb_stack_n||| debop||5.005000| debprofdump||5.005000| debprof||| debstackptrs||5.007003| debstack||5.007003| debug_start_match||| deb||5.007003|v del_sv||| delete_eval_scope||| delimcpy||5.004000| deprecate_old||| deprecate||| despatch_signals||5.007001| destroy_matcher||| die_nocontext|||vn die_where||| die|||v dirp_dup||| div128||| djSP||| do_aexec5||| do_aexec||| do_aspawn||| do_binmode||5.004050| do_chomp||| do_chop||| do_close||| do_dump_pad||| do_eof||| do_exec3||| do_execfree||| do_exec||| do_gv_dump||5.006000| do_gvgv_dump||5.006000| do_hv_dump||5.006000| do_ipcctl||| do_ipcget||| do_join||| do_kv||| do_magic_dump||5.006000| do_msgrcv||| do_msgsnd||| do_oddball||| do_op_dump||5.006000| do_op_xmldump||| do_open9||5.006000| do_openn||5.007001| do_open||5.004000| do_pmop_dump||5.006000| do_pmop_xmldump||| do_print||| do_readline||| do_seek||| do_semop||| do_shmio||| do_smartmatch||| do_spawn_nowait||| do_spawn||| do_sprintf||| do_sv_dump||5.006000| do_sysseek||| do_tell||| do_trans_complex_utf8||| do_trans_complex||| do_trans_count_utf8||| do_trans_count||| do_trans_simple_utf8||| do_trans_simple||| do_trans||| do_vecget||| do_vecset||| do_vop||| docatch||| doeval||| dofile||| dofindlabel||| doform||| doing_taint||5.008001|n dooneliner||| doopen_pm||| doparseform||| dopoptoeval||| dopoptogiven||| dopoptolabel||| dopoptoloop||| dopoptosub_at||| dopoptowhen||| doref||5.009003| dounwind||| dowantarray||| dump_all||5.006000| dump_eval||5.006000| dump_exec_pos||| dump_fds||| dump_form||5.006000| dump_indent||5.006000|v dump_mstats||| dump_packsubs||5.006000| dump_sub||5.006000| dump_sv_child||| dump_trie_interim_list||| dump_trie_interim_table||| dump_trie||| dump_vindent||5.006000| dumpuntil||| dup_attrlist||| emulate_cop_io||| eval_pv|5.006000||p eval_sv|5.006000||p exec_failed||| expect_number||| fbm_compile||5.005000| fbm_instr||5.005000| feature_is_enabled||| fetch_cop_label||5.011000| filter_add||| filter_del||| filter_gets||| filter_read||| find_and_forget_pmops||| find_array_subscript||| find_beginning||| find_byclass||| find_hash_subscript||| find_in_my_stash||| find_runcv||5.008001| find_rundefsvoffset||5.009002| find_script||| find_uninit_var||| first_symbol|||n fold_constants||| forbid_setid||| force_ident||| force_list||| force_next||| force_version||| force_word||| forget_pmop||| form_nocontext|||vn form||5.004000|v fp_dup||| fprintf_nocontext|||vn free_global_struct||| free_tied_hv_pool||| free_tmps||| gen_constant_list||| get_arena||| get_aux_mg||| get_av|5.006000||p get_context||5.006000|n get_cvn_flags||5.009005| get_cv|5.006000||p get_db_sub||| get_debug_opts||| get_hash_seed||| get_hv|5.006000||p get_isa_hash||| get_mstats||| get_no_modify||| get_num||| get_op_descs||5.005000| get_op_names||5.005000| get_opargs||| get_ppaddr||5.006000| get_re_arg||| get_sv|5.006000||p get_vtbl||5.005030| getcwd_sv||5.007002| getenv_len||| glob_2number||| glob_2pv||| glob_assign_glob||| glob_assign_ref||| gp_dup||| gp_free||| gp_ref||| grok_bin|5.007003||p grok_hex|5.007003||p grok_number|5.007002||p grok_numeric_radix|5.007002||p grok_oct|5.007003||p group_end||| gv_AVadd||| gv_HVadd||| gv_IOadd||| gv_SVadd||| gv_autoload4||5.004000| gv_check||| gv_const_sv||5.009003| gv_dump||5.006000| gv_efullname3||5.004000| gv_efullname4||5.006001| gv_efullname||| gv_ename||| gv_fetchfile_flags||5.009005| gv_fetchfile||| gv_fetchmeth_autoload||5.007003| gv_fetchmethod_autoload||5.004000| gv_fetchmethod_flags||5.011000| gv_fetchmethod||| gv_fetchmeth||| gv_fetchpvn_flags||5.009002| gv_fetchpv||| gv_fetchsv||5.009002| gv_fullname3||5.004000| gv_fullname4||5.006001| gv_fullname||| gv_get_super_pkg||| gv_handler||5.007001| gv_init_sv||| gv_init||| gv_name_set||5.009004| gv_stashpvn|5.004000||p gv_stashpvs||5.009003| gv_stashpv||| gv_stashsv||| he_dup||| hek_dup||| hfreeentries||| hsplit||| hv_assert||5.011000| hv_auxinit|||n hv_backreferences_p||| hv_clear_placeholders||5.009001| hv_clear||| hv_common_key_len||5.010000| hv_common||5.010000| hv_copy_hints_hv||| hv_delayfree_ent||5.004000| hv_delete_common||| hv_delete_ent||5.004000| hv_delete||| hv_eiter_p||5.009003| hv_eiter_set||5.009003| hv_exists_ent||5.004000| hv_exists||| hv_fetch_ent||5.004000| hv_fetchs|5.009003||p hv_fetch||| hv_free_ent||5.004000| hv_iterinit||| hv_iterkeysv||5.004000| hv_iterkey||| hv_iternext_flags||5.008000| hv_iternextsv||| hv_iternext||| hv_iterval||| hv_kill_backrefs||| hv_ksplit||5.004000| hv_magic_check|||n hv_magic||| hv_name_set||5.009003| hv_notallowed||| hv_placeholders_get||5.009003| hv_placeholders_p||5.009003| hv_placeholders_set||5.009003| hv_riter_p||5.009003| hv_riter_set||5.009003| hv_scalar||5.009001| hv_store_ent||5.004000| hv_store_flags||5.008000| hv_stores|5.009004||p hv_store||| hv_undef||| ibcmp_locale||5.004000| ibcmp_utf8||5.007003| ibcmp||| incline||| incpush_if_exists||| incpush_use_sep||| incpush||| ingroup||| init_argv_symbols||| init_debugger||| init_global_struct||| init_i18nl10n||5.006000| init_i18nl14n||5.006000| init_ids||| init_interp||| init_main_stash||| init_perllib||| init_postdump_symbols||| init_predump_symbols||| init_stacks||5.005000| init_tm||5.007002| instr||| intro_my||| intuit_method||| intuit_more||| invert||| io_close||| isALNUMC|5.006000||p isALNUM||| isALPHA||| isASCII|5.006000||p isBLANK|5.006001||p isCNTRL|5.006000||p isDIGIT||| isGRAPH|5.006000||p isLOWER||| isPRINT|5.004000||p isPSXSPC|5.006001||p isPUNCT|5.006000||p isSPACE||| isUPPER||| isXDIGIT|5.006000||p is_an_int||| is_gv_magical_sv||| is_handle_constructor|||n is_list_assignment||| is_lvalue_sub||5.007001| is_uni_alnum_lc||5.006000| is_uni_alnumc_lc||5.006000| is_uni_alnumc||5.006000| is_uni_alnum||5.006000| is_uni_alpha_lc||5.006000| is_uni_alpha||5.006000| is_uni_ascii_lc||5.006000| is_uni_ascii||5.006000| is_uni_cntrl_lc||5.006000| is_uni_cntrl||5.006000| is_uni_digit_lc||5.006000| is_uni_digit||5.006000| is_uni_graph_lc||5.006000| is_uni_graph||5.006000| is_uni_idfirst_lc||5.006000| is_uni_idfirst||5.006000| is_uni_lower_lc||5.006000| is_uni_lower||5.006000| is_uni_print_lc||5.006000| is_uni_print||5.006000| is_uni_punct_lc||5.006000| is_uni_punct||5.006000| is_uni_space_lc||5.006000| is_uni_space||5.006000| is_uni_upper_lc||5.006000| is_uni_upper||5.006000| is_uni_xdigit_lc||5.006000| is_uni_xdigit||5.006000| is_utf8_alnumc||5.006000| is_utf8_alnum||5.006000| is_utf8_alpha||5.006000| is_utf8_ascii||5.006000| is_utf8_char_slow|||n is_utf8_char||5.006000| is_utf8_cntrl||5.006000| is_utf8_common||| is_utf8_digit||5.006000| is_utf8_graph||5.006000| is_utf8_idcont||5.008000| is_utf8_idfirst||5.006000| is_utf8_lower||5.006000| is_utf8_mark||5.006000| is_utf8_print||5.006000| is_utf8_punct||5.006000| is_utf8_space||5.006000| is_utf8_string_loclen||5.009003| is_utf8_string_loc||5.008001| is_utf8_string||5.006001| is_utf8_upper||5.006000| is_utf8_xdigit||5.006000| isa_lookup||| items|||n ix|||n jmaybe||| join_exact||| keyword||| leave_scope||| lex_end||| lex_start||| linklist||| listkids||| list||| load_module_nocontext|||vn load_module|5.006000||pv localize||| looks_like_bool||| looks_like_number||| lop||| mPUSHi|5.009002||p mPUSHn|5.009002||p mPUSHp|5.009002||p mPUSHs|5.011000||p mPUSHu|5.009002||p mXPUSHi|5.009002||p mXPUSHn|5.009002||p mXPUSHp|5.009002||p mXPUSHs|5.011000||p mXPUSHu|5.009002||p mad_free||| madlex||| madparse||| magic_clear_all_env||| magic_clearenv||| magic_clearhint||| magic_clearisa||| magic_clearpack||| magic_clearsig||| magic_dump||5.006000| magic_existspack||| magic_freearylen_p||| magic_freeovrld||| magic_getarylen||| magic_getdefelem||| magic_getnkeys||| magic_getpack||| magic_getpos||| magic_getsig||| magic_getsubstr||| magic_gettaint||| magic_getuvar||| magic_getvec||| magic_get||| magic_killbackrefs||| magic_len||| magic_methcall||| magic_methpack||| magic_nextpack||| magic_regdata_cnt||| magic_regdatum_get||| magic_regdatum_set||| magic_scalarpack||| magic_set_all_env||| magic_setamagic||| magic_setarylen||| magic_setcollxfrm||| magic_setdbline||| magic_setdefelem||| magic_setenv||| magic_sethint||| magic_setisa||| magic_setmglob||| magic_setnkeys||| magic_setpack||| magic_setpos||| magic_setregexp||| magic_setsig||| magic_setsubstr||| magic_settaint||| magic_setutf8||| magic_setuvar||| magic_setvec||| magic_set||| magic_sizepack||| magic_wipepack||| make_matcher||| make_trie_failtable||| make_trie||| malloc_good_size|||n malloced_size|||n malloc||5.007002|n markstack_grow||| matcher_matches_sv||| measure_struct||| memEQ|5.004000||p memNE|5.004000||p mem_collxfrm||| mem_log_common|||n mess_alloc||| mess_nocontext|||vn mess||5.006000|v method_common||| mfree||5.007002|n mg_clear||| mg_copy||| mg_dup||| mg_find||| mg_free||| mg_get||| mg_length||5.005000| mg_localize||| mg_magical||| mg_set||| mg_size||5.005000| mini_mktime||5.007002| missingterm||| mode_from_discipline||| modkids||| mod||| more_bodies||| more_sv||| moreswitches||| mro_get_from_name||5.011000| mro_get_linear_isa_dfs||| mro_get_linear_isa||5.009005| mro_get_private_data||5.011000| mro_isa_changed_in||| mro_meta_dup||| mro_meta_init||| mro_method_changed_in||5.009005| mro_register||5.011000| mro_set_mro||5.011000| mro_set_private_data||5.011000| mul128||| mulexp10|||n my_atof2||5.007002| my_atof||5.006000| my_attrs||| my_bcopy|||n my_betoh16|||n my_betoh32|||n my_betoh64|||n my_betohi|||n my_betohl|||n my_betohs|||n my_bzero|||n my_chsize||| my_clearenv||| my_cxt_index||| my_cxt_init||| my_dirfd||5.009005| my_exit_jump||| my_exit||| my_failure_exit||5.004000| my_fflush_all||5.006000| my_fork||5.007003|n my_htobe16|||n my_htobe32|||n my_htobe64|||n my_htobei|||n my_htobel|||n my_htobes|||n my_htole16|||n my_htole32|||n my_htole64|||n my_htolei|||n my_htolel|||n my_htoles|||n my_htonl||| my_kid||| my_letoh16|||n my_letoh32|||n my_letoh64|||n my_letohi|||n my_letohl|||n my_letohs|||n my_lstat||| my_memcmp||5.004000|n my_memset|||n my_ntohl||| my_pclose||5.004000| my_popen_list||5.007001| my_popen||5.004000| my_setenv||| my_snprintf|5.009004||pvn my_socketpair||5.007003|n my_sprintf|5.009003||pvn my_stat||| my_strftime||5.007002| my_strlcat|5.009004||pn my_strlcpy|5.009004||pn my_swabn|||n my_swap||| my_unexec||| my_vsnprintf||5.009004|n need_utf8|||n newANONATTRSUB||5.006000| newANONHASH||| newANONLIST||| newANONSUB||| newASSIGNOP||| newATTRSUB||5.006000| newAVREF||| newAV||| newBINOP||| newCONDOP||| newCONSTSUB|5.004050||p newCVREF||| newDEFSVOP||| newFORM||| newFOROP||| newGIVENOP||5.009003| newGIVWHENOP||| newGP||| newGVOP||| newGVREF||| newGVgen||| newHVREF||| newHVhv||5.005000| newHV||| newIO||| newLISTOP||| newLOGOP||| newLOOPEX||| newLOOPOP||| newMADPROP||| newMADsv||| newMYSUB||| newNULLLIST||| newOP||| newPADOP||| newPMOP||| newPROG||| newPVOP||| newRANGE||| newRV_inc|5.004000||p newRV_noinc|5.004000||p newRV||| newSLICEOP||| newSTATEOP||| newSUB||| newSVOP||| newSVREF||| newSV_type||5.009005| newSVhek||5.009003| newSViv||| newSVnv||| newSVpvf_nocontext|||vn newSVpvf||5.004000|v newSVpvn_flags|5.011000||p newSVpvn_share|5.007001||p newSVpvn_utf8|5.011000||p newSVpvn|5.004050||p newSVpvs_flags|5.011000||p newSVpvs_share||5.009003| newSVpvs|5.009003||p newSVpv||| newSVrv||| newSVsv||| newSVuv|5.006000||p newSV||| newTOKEN||| newUNOP||| newWHENOP||5.009003| newWHILEOP||5.009003| newXS_flags||5.009004| newXSproto||5.006000| newXS||5.006000| new_collate||5.006000| new_constant||| new_ctype||5.006000| new_he||| new_logop||| new_numeric||5.006000| new_stackinfo||5.005000| new_version||5.009000| new_warnings_bitfield||| next_symbol||| nextargv||| nextchar||| ninstr||| no_bareword_allowed||| no_fh_allowed||| no_op||| not_a_number||| nothreadhook||5.008000| nuke_stacks||| num_overflow|||n offer_nice_chunk||| oopsAV||| oopsHV||| op_clear||| op_const_sv||| op_dump||5.006000| op_free||| op_getmad_weak||| op_getmad||| op_null||5.007002| op_refcnt_dec||| op_refcnt_inc||| op_refcnt_lock||5.009002| op_refcnt_unlock||5.009002| op_xmldump||| open_script||| pMY_CXT_|5.007003||p pMY_CXT|5.007003||p pTHX_|5.006000||p pTHX|5.006000||p packWARN|5.007003||p pack_cat||5.007003| pack_rec||| package||| packlist||5.008001| pad_add_anon||| pad_add_name||| pad_alloc||| pad_block_start||| pad_check_dup||| pad_compname_type||| pad_findlex||| pad_findmy||| pad_fixup_inner_anons||| pad_free||| pad_leavemy||| pad_new||| pad_peg|||n pad_push||| pad_reset||| pad_setsv||| pad_sv||5.011000| pad_swipe||| pad_tidy||| pad_undef||| parse_body||| parse_unicode_opts||| parser_dup||| parser_free||| path_is_absolute|||n peep||| pending_Slabs_to_ro||| perl_alloc_using|||n perl_alloc|||n perl_clone_using|||n perl_clone|||n perl_construct|||n perl_destruct||5.007003|n perl_free|||n perl_parse||5.006000|n perl_run|||n pidgone||| pm_description||| pmflag||| pmop_dump||5.006000| pmop_xmldump||| pmruntime||| pmtrans||| pop_scope||| pregcomp||5.009005| pregexec||| pregfree2||5.011000| pregfree||| prepend_elem||| prepend_madprops||| printbuf||| printf_nocontext|||vn process_special_blocks||| ptr_table_clear||5.009005| ptr_table_fetch||5.009005| ptr_table_find|||n ptr_table_free||5.009005| ptr_table_new||5.009005| ptr_table_split||5.009005| ptr_table_store||5.009005| push_scope||| put_byte||| pv_display|5.006000||p pv_escape|5.009004||p pv_pretty|5.009004||p pv_uni_display||5.007003| qerror||| qsortsvu||| re_compile||5.009005| re_croak2||| re_dup_guts||| re_intuit_start||5.009005| re_intuit_string||5.006000| readpipe_override||| realloc||5.007002|n reentrant_free||| reentrant_init||| reentrant_retry|||vn reentrant_size||| ref_array_or_hash||| refcounted_he_chain_2hv||| refcounted_he_fetch||| refcounted_he_free||| refcounted_he_new_common||| refcounted_he_new||| refcounted_he_value||| refkids||| refto||| ref||5.011000| reg_check_named_buff_matched||| reg_named_buff_all||5.009005| reg_named_buff_exists||5.009005| reg_named_buff_fetch||5.009005| reg_named_buff_firstkey||5.009005| reg_named_buff_iter||| reg_named_buff_nextkey||5.009005| reg_named_buff_scalar||5.009005| reg_named_buff||| reg_namedseq||| reg_node||| reg_numbered_buff_fetch||| reg_numbered_buff_length||| reg_numbered_buff_store||| reg_qr_package||| reg_recode||| reg_scan_name||| reg_skipcomment||| reg_temp_copy||| reganode||| regatom||| regbranch||| regclass_swash||5.009004| regclass||| regcppop||| regcppush||| regcurly|||n regdump_extflags||| regdump||5.005000| regdupe_internal||| regexec_flags||5.005000| regfree_internal||5.009005| reghop3|||n reghop4|||n reghopmaybe3|||n reginclass||| reginitcolors||5.006000| reginsert||| regmatch||| regnext||5.005000| regpiece||| regpposixcc||| regprop||| regrepeat||| regtail_study||| regtail||| regtry||| reguni||| regwhite|||n reg||| repeatcpy||| report_evil_fh||| report_uninit||| require_pv||5.006000| require_tie_mod||| restore_magic||| rninstr||| rsignal_restore||| rsignal_save||| rsignal_state||5.004000| rsignal||5.004000| run_body||| run_user_filter||| runops_debug||5.005000| runops_standard||5.005000| rvpv_dup||| rxres_free||| rxres_restore||| rxres_save||| safesyscalloc||5.006000|n safesysfree||5.006000|n safesysmalloc||5.006000|n safesysrealloc||5.006000|n same_dirent||| save_I16||5.004000| save_I32||| save_I8||5.006000| save_adelete||5.011000| save_aelem||5.004050| save_alloc||5.006000| save_aptr||| save_ary||| save_bool||5.008001| save_clearsv||| save_delete||| save_destructor_x||5.006000| save_destructor||5.006000| save_freeop||| save_freepv||| save_freesv||| save_generic_pvref||5.006001| save_generic_svref||5.005030| save_gp||5.004000| save_hash||| save_hek_flags|||n save_helem_flags||5.011000| save_helem||5.004050| save_hints||| save_hptr||| save_int||| save_item||| save_iv||5.005000| save_lines||| save_list||| save_long||| save_magic||| save_mortalizesv||5.007001| save_nogv||| save_op||| save_padsv_and_mortalize||5.011000| save_pptr||| save_pushi32ptr||| save_pushptri32ptr||| save_pushptrptr||| save_pushptr||5.011000| save_re_context||5.006000| save_scalar_at||| save_scalar||| save_set_svflags||5.009000| save_shared_pvref||5.007003| save_sptr||| save_svref||| save_vptr||5.006000| savepvn||| savepvs||5.009003| savepv||| savesharedpvn||5.009005| savesharedpv||5.007003| savestack_grow_cnt||5.008001| savestack_grow||| savesvpv||5.009002| sawparens||| scalar_mod_type|||n scalarboolean||| scalarkids||| scalarseq||| scalarvoid||| scalar||| scan_bin||5.006000| scan_commit||| scan_const||| scan_formline||| scan_heredoc||| scan_hex||| scan_ident||| scan_inputsymbol||| scan_num||5.007001| scan_oct||| scan_pat||| scan_str||| scan_subst||| scan_trans||| scan_version||5.009001| scan_vstring||5.009005| scan_word||| scope||| screaminstr||5.005000| search_const||| seed||5.008001| sequence_num||| sequence_tail||| sequence||| set_context||5.006000|n set_numeric_local||5.006000| set_numeric_radix||5.006000| set_numeric_standard||5.006000| setdefout||| share_hek_flags||| share_hek||5.004000| si_dup||| sighandler|||n simplify_sort||| skipspace0||| skipspace1||| skipspace2||| skipspace||| softref2xv||| sortcv_stacked||| sortcv_xsub||| sortcv||| sortsv_flags||5.009003| sortsv||5.007003| space_join_names_mortal||| ss_dup||| stack_grow||| start_force||| start_glob||| start_subparse||5.004000| stashpv_hvname_match||5.011000| stdize_locale||| store_cop_label||| strEQ||| strGE||| strGT||| strLE||| strLT||| strNE||| str_to_version||5.006000| strip_return||| strnEQ||| strnNE||| study_chunk||| sub_crush_depth||| sublex_done||| sublex_push||| sublex_start||| sv_2bool||| sv_2cv||| sv_2io||| sv_2iuv_common||| sv_2iuv_non_preserve||| sv_2iv_flags||5.009001| sv_2iv||| sv_2mortal||| sv_2num||| sv_2nv||| sv_2pv_flags|5.007002||p sv_2pv_nolen|5.006000||p sv_2pvbyte_nolen|5.006000||p sv_2pvbyte|5.006000||p sv_2pvutf8_nolen||5.006000| sv_2pvutf8||5.006000| sv_2pv||| sv_2uv_flags||5.009001| sv_2uv|5.004000||p sv_add_arena||| sv_add_backref||| sv_backoff||| sv_bless||| sv_cat_decode||5.008001| sv_catpv_mg|5.004050||p sv_catpvf_mg_nocontext|||pvn sv_catpvf_mg|5.006000|5.004000|pv sv_catpvf_nocontext|||vn sv_catpvf||5.004000|v sv_catpvn_flags||5.007002| sv_catpvn_mg|5.004050||p sv_catpvn_nomg|5.007002||p sv_catpvn||| sv_catpvs|5.009003||p sv_catpv||| sv_catsv_flags||5.007002| sv_catsv_mg|5.004050||p sv_catsv_nomg|5.007002||p sv_catsv||| sv_catxmlpvn||| sv_catxmlsv||| sv_chop||| sv_clean_all||| sv_clean_objs||| sv_clear||| sv_cmp_locale||5.004000| sv_cmp||| sv_collxfrm||| sv_compile_2op||5.008001| sv_copypv||5.007003| sv_dec||| sv_del_backref||| sv_derived_from||5.004000| sv_destroyable||5.010000| sv_does||5.009004| sv_dump||| sv_dup||| sv_eq||| sv_exp_grow||| sv_force_normal_flags||5.007001| sv_force_normal||5.006000| sv_free2||| sv_free_arenas||| sv_free||| sv_gets||5.004000| sv_grow||| sv_i_ncmp||| sv_inc||| sv_insert_flags||5.011000| sv_insert||| sv_isa||| sv_isobject||| sv_iv||5.005000| sv_kill_backrefs||| sv_len_utf8||5.006000| sv_len||| sv_magic_portable|5.011000|5.004000|p sv_magicext||5.007003| sv_magic||| sv_mortalcopy||| sv_ncmp||| sv_newmortal||| sv_newref||| sv_nolocking||5.007003| sv_nosharing||5.007003| sv_nounlocking||| sv_nv||5.005000| sv_peek||5.005000| sv_pos_b2u_midway||| sv_pos_b2u||5.006000| sv_pos_u2b_cached||| sv_pos_u2b_forwards|||n sv_pos_u2b_midway|||n sv_pos_u2b||5.006000| sv_pvbyten_force||5.006000| sv_pvbyten||5.006000| sv_pvbyte||5.006000| sv_pvn_force_flags|5.007002||p sv_pvn_force||| sv_pvn_nomg|5.007003|5.005000|p sv_pvn||5.005000| sv_pvutf8n_force||5.006000| sv_pvutf8n||5.006000| sv_pvutf8||5.006000| sv_pv||5.006000| sv_recode_to_utf8||5.007003| sv_reftype||| sv_release_COW||| sv_replace||| sv_report_used||| sv_reset||| sv_rvweaken||5.006000| sv_setiv_mg|5.004050||p sv_setiv||| sv_setnv_mg|5.006000||p sv_setnv||| sv_setpv_mg|5.004050||p sv_setpvf_mg_nocontext|||pvn sv_setpvf_mg|5.006000|5.004000|pv sv_setpvf_nocontext|||vn sv_setpvf||5.004000|v sv_setpviv_mg||5.008001| sv_setpviv||5.008001| sv_setpvn_mg|5.004050||p sv_setpvn||| sv_setpvs|5.009004||p sv_setpv||| sv_setref_iv||| sv_setref_nv||| sv_setref_pvn||| sv_setref_pv||| sv_setref_uv||5.007001| sv_setsv_cow||| sv_setsv_flags||5.007002| sv_setsv_mg|5.004050||p sv_setsv_nomg|5.007002||p sv_setsv||| sv_setuv_mg|5.004050||p sv_setuv|5.004000||p sv_tainted||5.004000| sv_taint||5.004000| sv_true||5.005000| sv_unglob||| sv_uni_display||5.007003| sv_unmagic||| sv_unref_flags||5.007001| sv_unref||| sv_untaint||5.004000| sv_upgrade||| sv_usepvn_flags||5.009004| sv_usepvn_mg|5.004050||p sv_usepvn||| sv_utf8_decode||5.006000| sv_utf8_downgrade||5.006000| sv_utf8_encode||5.006000| sv_utf8_upgrade_flags_grow||5.011000| sv_utf8_upgrade_flags||5.007002| sv_utf8_upgrade_nomg||5.007002| sv_utf8_upgrade||5.007001| sv_uv|5.005000||p sv_vcatpvf_mg|5.006000|5.004000|p sv_vcatpvfn||5.004000| sv_vcatpvf|5.006000|5.004000|p sv_vsetpvf_mg|5.006000|5.004000|p sv_vsetpvfn||5.004000| sv_vsetpvf|5.006000|5.004000|p sv_xmlpeek||| svtype||| swallow_bom||| swap_match_buff||| swash_fetch||5.007002| swash_get||| swash_init||5.006000| sys_init3||5.010000|n sys_init||5.010000|n sys_intern_clear||| sys_intern_dup||| sys_intern_init||| sys_term||5.010000|n taint_env||| taint_proper||| tmps_grow||5.006000| toLOWER||| toUPPER||| to_byte_substr||| to_uni_fold||5.007003| to_uni_lower_lc||5.006000| to_uni_lower||5.007003| to_uni_title_lc||5.006000| to_uni_title||5.007003| to_uni_upper_lc||5.006000| to_uni_upper||5.007003| to_utf8_case||5.007003| to_utf8_fold||5.007003| to_utf8_lower||5.007003| to_utf8_substr||| to_utf8_title||5.007003| to_utf8_upper||5.007003| token_free||| token_getmad||| tokenize_use||| tokeq||| tokereport||| too_few_arguments||| too_many_arguments||| uiv_2buf|||n unlnk||| unpack_rec||| unpack_str||5.007003| unpackstring||5.008001| unshare_hek_or_pvn||| unshare_hek||| unsharepvn||5.004000| unwind_handler_stack||| update_debugger_info||| upg_version||5.009005| usage||| utf16_to_utf8_reversed||5.006001| utf16_to_utf8||5.006001| utf8_distance||5.006000| utf8_hop||5.006000| utf8_length||5.007001| utf8_mg_pos_cache_update||| utf8_to_bytes||5.006001| utf8_to_uvchr||5.007001| utf8_to_uvuni||5.007001| utf8n_to_uvchr||| utf8n_to_uvuni||5.007001| utilize||| uvchr_to_utf8_flags||5.007003| uvchr_to_utf8||| uvuni_to_utf8_flags||5.007003| uvuni_to_utf8||5.007001| validate_suid||| varname||| vcmp||5.009000| vcroak||5.006000| vdeb||5.007003| vdie_common||| vdie_croak_common||| vdie||| vform||5.006000| visit||| vivify_defelem||| vivify_ref||| vload_module|5.006000||p vmess||5.006000| vnewSVpvf|5.006000|5.004000|p vnormal||5.009002| vnumify||5.009000| vstringify||5.009000| vverify||5.009003| vwarner||5.006000| vwarn||5.006000| wait4pid||| warn_nocontext|||vn warner_nocontext|||vn warner|5.006000|5.004000|pv warn|||v watch||| whichsig||| write_no_mem||| write_to_stderr||| xmldump_all||| xmldump_attr||| xmldump_eval||| xmldump_form||| xmldump_indent|||v xmldump_packsubs||| xmldump_sub||| xmldump_vindent||| yyerror||| yylex||| yyparse||| yywarn||| ); if (exists $opt{'list-unsupported'}) { my $f; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $API{$f}{todo}; print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n"; } exit 0; } # Scan for possible replacement candidates my(%replace, %need, %hints, %warnings, %depends); my $replace = 0; my($hint, $define, $function); sub find_api { my $code = shift; $code =~ s{ / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*) | "[^"\\]*(?:\\.[^"\\]*)*" | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx; grep { exists $API{$_} } $code =~ /(\w+)/mg; } while () { if ($hint) { my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings; if (m{^\s*\*\s(.*?)\s*$}) { for (@{$hint->[1]}) { $h->{$_} ||= ''; # suppress warning with older perls $h->{$_} .= "$1\n"; } } else { undef $hint } } $hint = [$1, [split /,?\s+/, $2]] if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$}; if ($define) { if ($define->[1] =~ /\\$/) { $define->[1] .= $_; } else { if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) { my @n = find_api($define->[1]); push @{$depends{$define->[0]}}, @n if @n } undef $define; } } $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)}; if ($function) { if (/^}/) { if (exists $API{$function->[0]}) { my @n = find_api($function->[1]); push @{$depends{$function->[0]}}, @n if @n } undef $function; } else { $function->[1] .= $_; } } $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)}; $replace = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$}; $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)}; $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce}; $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$}; if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) { my @deps = map { s/\s+//g; $_ } split /,/, $3; my $d; for $d (map { s/\s+//g; $_ } split /,/, $1) { push @{$depends{$d}}, @deps; } } $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)}; } for (values %depends) { my %s; $_ = [sort grep !$s{$_}++, @$_]; } if (exists $opt{'api-info'}) { my $f; my $count = 0; my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$"; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $f =~ /$match/; print "\n=== $f ===\n\n"; my $info = 0; if ($API{$f}{base} || $API{$f}{todo}) { my $base = format_version($API{$f}{base} || $API{$f}{todo}); print "Supported at least starting from perl-$base.\n"; $info++; } if ($API{$f}{provided}) { my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003"; print "Support by $ppport provided back to perl-$todo.\n"; print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f}; print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f}; print "\n$hints{$f}" if exists $hints{$f}; print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f}; $info++; } print "No portability information available.\n" unless $info; $count++; } $count or print "Found no API matching '$opt{'api-info'}'."; print "\n"; exit 0; } if (exists $opt{'list-provided'}) { my $f; for $f (sort { lc $a cmp lc $b } keys %API) { next unless $API{$f}{provided}; my @flags; push @flags, 'explicit' if exists $need{$f}; push @flags, 'depend' if exists $depends{$f}; push @flags, 'hint' if exists $hints{$f}; push @flags, 'warning' if exists $warnings{$f}; my $flags = @flags ? ' ['.join(', ', @flags).']' : ''; print "$f$flags\n"; } exit 0; } my @files; my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc ); my $srcext = join '|', map { quotemeta $_ } @srcext; if (@ARGV) { my %seen; for (@ARGV) { if (-e) { if (-f) { push @files, $_ unless $seen{$_}++; } else { warn "'$_' is not a file.\n" } } else { my @new = grep { -f } glob $_ or warn "'$_' does not exist.\n"; push @files, grep { !$seen{$_}++ } @new; } } } else { eval { require File::Find; File::Find::find(sub { $File::Find::name =~ /($srcext)$/i and push @files, $File::Find::name; }, '.'); }; if ($@) { @files = map { glob "*$_" } @srcext; } } if (!@ARGV || $opt{filter}) { my(@in, @out); my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files; for (@files) { my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i; push @{ $out ? \@out : \@in }, $_; } if (@ARGV && @out) { warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out); } @files = @in; } die "No input files given!\n" unless @files; my(%files, %global, %revreplace); %revreplace = reverse %replace; my $filename; my $patch_opened = 0; for $filename (@files) { unless (open IN, "<$filename") { warn "Unable to read from $filename: $!\n"; next; } info("Scanning $filename ..."); my $c = do { local $/; }; close IN; my %file = (orig => $c, changes => 0); # Temporarily remove C/XS comments and strings from the code my @ccom; $c =~ s{ ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]* | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* ) | ( ^$HS*\#[^\r\n]* | "[^"\\]*(?:\\.[^"\\]*)*" | '[^'\\]*(?:\\.[^'\\]*)*' | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) ) }{ defined $2 and push @ccom, $2; defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex; $file{ccom} = \@ccom; $file{code} = $c; $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m; my $func; for $func (keys %API) { my $match = $func; $match .= "|$revreplace{$func}" if exists $revreplace{$func}; if ($c =~ /\b(?:Perl_)?($match)\b/) { $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func}; $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/; if (exists $API{$func}{provided}) { $file{uses_provided}{$func}++; if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) { $file{uses}{$func}++; my @deps = rec_depend($func); if (@deps) { $file{uses_deps}{$func} = \@deps; for (@deps) { $file{uses}{$_} = 0 unless exists $file{uses}{$_}; } } for ($func, @deps) { $file{needs}{$_} = 'static' if exists $need{$_}; } } } if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) { if ($c =~ /\b$func\b/) { $file{uses_todo}{$func}++; } } } } while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) { if (exists $need{$2}) { $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++; } else { warning("Possibly wrong #define $1 in $filename") } } for (qw(uses needs uses_todo needed_global needed_static)) { for $func (keys %{$file{$_}}) { push @{$global{$_}{$func}}, $filename; } } $files{$filename} = \%file; } # Globally resolve NEED_'s my $need; for $need (keys %{$global{needs}}) { if (@{$global{needs}{$need}} > 1) { my @targets = @{$global{needs}{$need}}; my @t = grep $files{$_}{needed_global}{$need}, @targets; @targets = @t if @t; @t = grep /\.xs$/i, @targets; @targets = @t if @t; my $target = shift @targets; $files{$target}{needs}{$need} = 'global'; for (@{$global{needs}{$need}}) { $files{$_}{needs}{$need} = 'extern' if $_ ne $target; } } } for $filename (@files) { exists $files{$filename} or next; info("=== Analyzing $filename ==="); my %file = %{$files{$filename}}; my $func; my $c = $file{code}; my $warnings = 0; for $func (sort keys %{$file{uses_Perl}}) { if ($API{$func}{varargs}) { unless ($API{$func}{nothxarg}) { my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))} { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge); if ($changes) { warning("Doesn't pass interpreter argument aTHX to Perl_$func"); $file{changes} += $changes; } } } else { warning("Uses Perl_$func instead of $func"); $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*} {$func$1(}g); } } for $func (sort keys %{$file{uses_replace}}) { warning("Uses $func instead of $replace{$func}"); $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g); } for $func (sort keys %{$file{uses_provided}}) { if ($file{uses}{$func}) { if (exists $file{uses_deps}{$func}) { diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}})); } else { diag("Uses $func"); } } $warnings += hint($func); } unless ($opt{quiet}) { for $func (sort keys %{$file{uses_todo}}) { print "*** WARNING: Uses $func, which may not be portable below perl ", format_version($API{$func}{todo}), ", even with '$ppport'\n"; $warnings++; } } for $func (sort keys %{$file{needed_static}}) { my $message = ''; if (not exists $file{uses}{$func}) { $message = "No need to define NEED_$func if $func is never used"; } elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') { $message = "No need to define NEED_$func when already needed globally"; } if ($message) { diag($message); $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg); } } for $func (sort keys %{$file{needed_global}}) { my $message = ''; if (not exists $global{uses}{$func}) { $message = "No need to define NEED_${func}_GLOBAL if $func is never used"; } elsif (exists $file{needs}{$func}) { if ($file{needs}{$func} eq 'extern') { $message = "No need to define NEED_${func}_GLOBAL when already needed globally"; } elsif ($file{needs}{$func} eq 'static') { $message = "No need to define NEED_${func}_GLOBAL when only used in this file"; } } if ($message) { diag($message); $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg); } } $file{needs_inc_ppport} = keys %{$file{uses}}; if ($file{needs_inc_ppport}) { my $pp = ''; for $func (sort keys %{$file{needs}}) { my $type = $file{needs}{$func}; next if $type eq 'extern'; my $suffix = $type eq 'global' ? '_GLOBAL' : ''; unless (exists $file{"needed_$type"}{$func}) { if ($type eq 'global') { diag("Files [@{$global{needs}{$func}}] need $func, adding global request"); } else { diag("File needs $func, adding static request"); } $pp .= "#define NEED_$func$suffix\n"; } } if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) { $pp = ''; $file{changes}++; } unless ($file{has_inc_ppport}) { diag("Needs to include '$ppport'"); $pp .= qq(#include "$ppport"\n) } if ($pp) { $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms) || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m) || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m) || ($c =~ s/^/$pp/); } } else { if ($file{has_inc_ppport}) { diag("No need to include '$ppport'"); $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m); } } # put back in our C comments my $ix; my $cppc = 0; my @ccom = @{$file{ccom}}; for $ix (0 .. $#ccom) { if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) { $cppc++; $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/; } else { $c =~ s/$rccs$ix$rcce/$ccom[$ix]/; } } if ($cppc) { my $s = $cppc != 1 ? 's' : ''; warning("Uses $cppc C++ style comment$s, which is not portable"); } my $s = $warnings != 1 ? 's' : ''; my $warn = $warnings ? " ($warnings warning$s)" : ''; info("Analysis completed$warn"); if ($file{changes}) { if (exists $opt{copy}) { my $newfile = "$filename$opt{copy}"; if (-e $newfile) { error("'$newfile' already exists, refusing to write copy of '$filename'"); } else { local *F; if (open F, ">$newfile") { info("Writing copy of '$filename' with changes to '$newfile'"); print F $c; close F; } else { error("Cannot open '$newfile' for writing: $!"); } } } elsif (exists $opt{patch} || $opt{changes}) { if (exists $opt{patch}) { unless ($patch_opened) { if (open PATCH, ">$opt{patch}") { $patch_opened = 1; } else { error("Cannot open '$opt{patch}' for writing: $!"); delete $opt{patch}; $opt{changes} = 1; goto fallback; } } mydiff(\*PATCH, $filename, $c); } else { fallback: info("Suggested changes:"); mydiff(\*STDOUT, $filename, $c); } } else { my $s = $file{changes} == 1 ? '' : 's'; info("$file{changes} potentially required change$s detected"); } } else { info("Looks good"); } } close PATCH if $patch_opened; exit 0; sub try_use { eval "use @_;"; return $@ eq '' } sub mydiff { local *F = shift; my($file, $str) = @_; my $diff; if (exists $opt{diff}) { $diff = run_diff($opt{diff}, $file, $str); } if (!defined $diff and try_use('Text::Diff')) { $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' }); $diff = <
$tmp") { print F $str; close F; if (open F, "$prog $file $tmp |") { while () { s/\Q$tmp\E/$file.patched/; $diff .= $_; } close F; unlink $tmp; return $diff; } unlink $tmp; } else { error("Cannot open '$tmp' for writing: $!"); } return undef; } sub rec_depend { my($func, $seen) = @_; return () unless exists $depends{$func}; $seen = {%{$seen||{}}}; return () if $seen->{$func}++; my %s; grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}}; } sub parse_version { my $ver = shift; if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) { return ($1, $2, $3); } elsif ($ver !~ /^\d+\.[\d_]+$/) { die "cannot parse version '$ver'\n"; } $ver =~ s/_//g; $ver =~ s/$/000000/; my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; $v = int $v; $s = int $s; if ($r < 5 || ($r == 5 && $v < 6)) { if ($s % 10) { die "cannot parse version '$ver'\n"; } } return ($r, $v, $s); } sub format_version { my $ver = shift; $ver =~ s/$/000000/; my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/; $v = int $v; $s = int $s; if ($r < 5 || ($r == 5 && $v < 6)) { if ($s % 10) { die "invalid version '$ver'\n"; } $s /= 10; $ver = sprintf "%d.%03d", $r, $v; $s > 0 and $ver .= sprintf "_%02d", $s; return $ver; } return sprintf "%d.%d.%d", $r, $v, $s; } sub info { $opt{quiet} and return; print @_, "\n"; } sub diag { $opt{quiet} and return; $opt{diag} and print @_, "\n"; } sub warning { $opt{quiet} and return; print "*** ", @_, "\n"; } sub error { print "*** ERROR: ", @_, "\n"; } my %given_hints; my %given_warnings; sub hint { $opt{quiet} and return; my $func = shift; my $rv = 0; if (exists $warnings{$func} && !$given_warnings{$func}++) { my $warn = $warnings{$func}; $warn =~ s!^!*** !mg; print "*** WARNING: $func\n", $warn; $rv++; } if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) { my $hint = $hints{$func}; $hint =~ s/^/ /mg; print " --- hint for $func ---\n", $hint; } $rv; } sub usage { my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms; my %M = ( 'I' => '*' ); $usage =~ s/^\s*perl\s+\S+/$^X $0/; $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g; print < }; my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms; $copy =~ s/^(?=\S+)/ /gms; $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms; $self =~ s/^SKIP.*(?=^__DATA__)/SKIP if (\@ARGV && \$ARGV[0] eq '--unstrip') { eval { require Devel::PPPort }; \$@ and die "Cannot require Devel::PPPort, please install.\\n"; if (eval \$Devel::PPPort::VERSION < $VERSION) { die "$0 was originally generated with Devel::PPPort $VERSION.\\n" . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n" . "Please install a newer version, or --unstrip will not work.\\n"; } Devel::PPPort::WriteFile(\$0); exit 0; } print <$0" or die "cannot strip $0: $!\n"; print OUT "$pl$c\n"; exit 0; } __DATA__ */ #ifndef _P_P_PORTABILITY_H_ #define _P_P_PORTABILITY_H_ #ifndef DPPP_NAMESPACE # define DPPP_NAMESPACE DPPP_ #endif #define DPPP_CAT2(x,y) CAT2(x,y) #define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name) #ifndef PERL_REVISION # if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION)) # define PERL_PATCHLEVEL_H_IMPLICIT # include # endif # if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL))) # include # endif # ifndef PERL_REVISION # define PERL_REVISION (5) /* Replace: 1 */ # define PERL_VERSION PATCHLEVEL # define PERL_SUBVERSION SUBVERSION /* Replace PERL_PATCHLEVEL with PERL_VERSION */ /* Replace: 0 */ # endif #endif #define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10)) #define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION)) /* It is very unlikely that anyone will try to use this with Perl 6 (or greater), but who knows. */ #if PERL_REVISION != 5 # error ppport.h only works with Perl version 5 #endif /* PERL_REVISION != 5 */ #ifndef dTHR # define dTHR dNOOP #endif #ifndef dTHX # define dTHX dNOOP #endif #ifndef dTHXa # define dTHXa(x) dNOOP #endif #ifndef pTHX # define pTHX void #endif #ifndef pTHX_ # define pTHX_ #endif #ifndef aTHX # define aTHX #endif #ifndef aTHX_ # define aTHX_ #endif #if (PERL_BCDVERSION < 0x5006000) # ifdef USE_THREADS # define aTHXR thr # define aTHXR_ thr, # else # define aTHXR # define aTHXR_ # endif # define dTHXR dTHR #else # define aTHXR aTHX # define aTHXR_ aTHX_ # define dTHXR dTHX #endif #ifndef dTHXoa # define dTHXoa(x) dTHXa(x) #endif #ifdef I_LIMITS # include #endif #ifndef PERL_UCHAR_MIN # define PERL_UCHAR_MIN ((unsigned char)0) #endif #ifndef PERL_UCHAR_MAX # ifdef UCHAR_MAX # define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) # else # ifdef MAXUCHAR # define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) # else # define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) # endif # endif #endif #ifndef PERL_USHORT_MIN # define PERL_USHORT_MIN ((unsigned short)0) #endif #ifndef PERL_USHORT_MAX # ifdef USHORT_MAX # define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) # else # ifdef MAXUSHORT # define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) # else # ifdef USHRT_MAX # define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) # else # define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) # endif # endif # endif #endif #ifndef PERL_SHORT_MAX # ifdef SHORT_MAX # define PERL_SHORT_MAX ((short)SHORT_MAX) # else # ifdef MAXSHORT /* Often used in */ # define PERL_SHORT_MAX ((short)MAXSHORT) # else # ifdef SHRT_MAX # define PERL_SHORT_MAX ((short)SHRT_MAX) # else # define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) # endif # endif # endif #endif #ifndef PERL_SHORT_MIN # ifdef SHORT_MIN # define PERL_SHORT_MIN ((short)SHORT_MIN) # else # ifdef MINSHORT # define PERL_SHORT_MIN ((short)MINSHORT) # else # ifdef SHRT_MIN # define PERL_SHORT_MIN ((short)SHRT_MIN) # else # define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) # endif # endif # endif #endif #ifndef PERL_UINT_MAX # ifdef UINT_MAX # define PERL_UINT_MAX ((unsigned int)UINT_MAX) # else # ifdef MAXUINT # define PERL_UINT_MAX ((unsigned int)MAXUINT) # else # define PERL_UINT_MAX (~(unsigned int)0) # endif # endif #endif #ifndef PERL_UINT_MIN # define PERL_UINT_MIN ((unsigned int)0) #endif #ifndef PERL_INT_MAX # ifdef INT_MAX # define PERL_INT_MAX ((int)INT_MAX) # else # ifdef MAXINT /* Often used in */ # define PERL_INT_MAX ((int)MAXINT) # else # define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) # endif # endif #endif #ifndef PERL_INT_MIN # ifdef INT_MIN # define PERL_INT_MIN ((int)INT_MIN) # else # ifdef MININT # define PERL_INT_MIN ((int)MININT) # else # define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) # endif # endif #endif #ifndef PERL_ULONG_MAX # ifdef ULONG_MAX # define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) # else # ifdef MAXULONG # define PERL_ULONG_MAX ((unsigned long)MAXULONG) # else # define PERL_ULONG_MAX (~(unsigned long)0) # endif # endif #endif #ifndef PERL_ULONG_MIN # define PERL_ULONG_MIN ((unsigned long)0L) #endif #ifndef PERL_LONG_MAX # ifdef LONG_MAX # define PERL_LONG_MAX ((long)LONG_MAX) # else # ifdef MAXLONG # define PERL_LONG_MAX ((long)MAXLONG) # else # define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) # endif # endif #endif #ifndef PERL_LONG_MIN # ifdef LONG_MIN # define PERL_LONG_MIN ((long)LONG_MIN) # else # ifdef MINLONG # define PERL_LONG_MIN ((long)MINLONG) # else # define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) # endif # endif #endif #if defined(HAS_QUAD) && (defined(convex) || defined(uts)) # ifndef PERL_UQUAD_MAX # ifdef ULONGLONG_MAX # define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX) # else # ifdef MAXULONGLONG # define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG) # else # define PERL_UQUAD_MAX (~(unsigned long long)0) # endif # endif # endif # ifndef PERL_UQUAD_MIN # define PERL_UQUAD_MIN ((unsigned long long)0L) # endif # ifndef PERL_QUAD_MAX # ifdef LONGLONG_MAX # define PERL_QUAD_MAX ((long long)LONGLONG_MAX) # else # ifdef MAXLONGLONG # define PERL_QUAD_MAX ((long long)MAXLONGLONG) # else # define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1)) # endif # endif # endif # ifndef PERL_QUAD_MIN # ifdef LONGLONG_MIN # define PERL_QUAD_MIN ((long long)LONGLONG_MIN) # else # ifdef MINLONGLONG # define PERL_QUAD_MIN ((long long)MINLONGLONG) # else # define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) # endif # endif # endif #endif /* This is based on code from 5.003 perl.h */ #ifdef HAS_QUAD # ifdef cray #ifndef IVTYPE # define IVTYPE int #endif #ifndef IV_MIN # define IV_MIN PERL_INT_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_INT_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_UINT_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_UINT_MAX #endif # ifdef INTSIZE #ifndef IVSIZE # define IVSIZE INTSIZE #endif # endif # else # if defined(convex) || defined(uts) #ifndef IVTYPE # define IVTYPE long long #endif #ifndef IV_MIN # define IV_MIN PERL_QUAD_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_QUAD_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_UQUAD_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_UQUAD_MAX #endif # ifdef LONGLONGSIZE #ifndef IVSIZE # define IVSIZE LONGLONGSIZE #endif # endif # else #ifndef IVTYPE # define IVTYPE long #endif #ifndef IV_MIN # define IV_MIN PERL_LONG_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_LONG_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_ULONG_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_ULONG_MAX #endif # ifdef LONGSIZE #ifndef IVSIZE # define IVSIZE LONGSIZE #endif # endif # endif # endif #ifndef IVSIZE # define IVSIZE 8 #endif #ifndef PERL_QUAD_MIN # define PERL_QUAD_MIN IV_MIN #endif #ifndef PERL_QUAD_MAX # define PERL_QUAD_MAX IV_MAX #endif #ifndef PERL_UQUAD_MIN # define PERL_UQUAD_MIN UV_MIN #endif #ifndef PERL_UQUAD_MAX # define PERL_UQUAD_MAX UV_MAX #endif #else #ifndef IVTYPE # define IVTYPE long #endif #ifndef IV_MIN # define IV_MIN PERL_LONG_MIN #endif #ifndef IV_MAX # define IV_MAX PERL_LONG_MAX #endif #ifndef UV_MIN # define UV_MIN PERL_ULONG_MIN #endif #ifndef UV_MAX # define UV_MAX PERL_ULONG_MAX #endif #endif #ifndef IVSIZE # ifdef LONGSIZE # define IVSIZE LONGSIZE # else # define IVSIZE 4 /* A bold guess, but the best we can make. */ # endif #endif #ifndef UVTYPE # define UVTYPE unsigned IVTYPE #endif #ifndef UVSIZE # define UVSIZE IVSIZE #endif #ifndef sv_setuv # define sv_setuv(sv, uv) \ STMT_START { \ UV TeMpUv = uv; \ if (TeMpUv <= IV_MAX) \ sv_setiv(sv, TeMpUv); \ else \ sv_setnv(sv, (double)TeMpUv); \ } STMT_END #endif #ifndef newSVuv # define newSVuv(uv) ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv)) #endif #ifndef sv_2uv # define sv_2uv(sv) ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv))) #endif #ifndef SvUVX # define SvUVX(sv) ((UV)SvIVX(sv)) #endif #ifndef SvUVXx # define SvUVXx(sv) SvUVX(sv) #endif #ifndef SvUV # define SvUV(sv) (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv)) #endif #ifndef SvUVx # define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv)) #endif /* Hint: sv_uv * Always use the SvUVx() macro instead of sv_uv(). */ #ifndef sv_uv # define sv_uv(sv) SvUVx(sv) #endif #if !defined(SvUOK) && defined(SvIOK_UV) # define SvUOK(sv) SvIOK_UV(sv) #endif #ifndef XST_mUV # define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) ) #endif #ifndef XSRETURN_UV # define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END #endif #ifndef PUSHu # define PUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG; } STMT_END #endif #ifndef XPUSHu # define XPUSHu(u) STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END #endif #ifdef HAS_MEMCMP #ifndef memNE # define memNE(s1,s2,l) (memcmp(s1,s2,l)) #endif #ifndef memEQ # define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) #endif #else #ifndef memNE # define memNE(s1,s2,l) (bcmp(s1,s2,l)) #endif #ifndef memEQ # define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) #endif #endif #ifndef MoveD # define MoveD(s,d,n,t) memmove((char*)(d),(char*)(s), (n) * sizeof(t)) #endif #ifndef CopyD # define CopyD(s,d,n,t) memcpy((char*)(d),(char*)(s), (n) * sizeof(t)) #endif #ifdef HAS_MEMSET #ifndef ZeroD # define ZeroD(d,n,t) memzero((char*)(d), (n) * sizeof(t)) #endif #else #ifndef ZeroD # define ZeroD(d,n,t) ((void)memzero((char*)(d), (n) * sizeof(t)), d) #endif #endif #ifndef PoisonWith # define PoisonWith(d,n,t,b) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)) #endif #ifndef PoisonNew # define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB) #endif #ifndef PoisonFree # define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF) #endif #ifndef Poison # define Poison(d,n,t) PoisonFree(d,n,t) #endif #ifndef Newx # define Newx(v,n,t) New(0,v,n,t) #endif #ifndef Newxc # define Newxc(v,n,t,c) Newc(0,v,n,t,c) #endif #ifndef Newxz # define Newxz(v,n,t) Newz(0,v,n,t) #endif #ifndef PERL_UNUSED_DECL # ifdef HASATTRIBUTE # if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER) # define PERL_UNUSED_DECL # else # define PERL_UNUSED_DECL __attribute__((unused)) # endif # else # define PERL_UNUSED_DECL # endif #endif #ifndef PERL_UNUSED_ARG # if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ # include # define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) # else # define PERL_UNUSED_ARG(x) ((void)x) # endif #endif #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(x) ((void)x) #endif #ifndef PERL_UNUSED_CONTEXT # ifdef USE_ITHREADS # define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl) # else # define PERL_UNUSED_CONTEXT # endif #endif #ifndef NOOP # define NOOP /*EMPTY*/(void)0 #endif #ifndef dNOOP # define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL #endif #ifndef NVTYPE # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) # define NVTYPE long double # else # define NVTYPE double # endif typedef NVTYPE NV; #endif #ifndef INT2PTR # if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE) # define PTRV UV # define INT2PTR(any,d) (any)(d) # else # if PTRSIZE == LONGSIZE # define PTRV unsigned long # else # define PTRV unsigned # endif # define INT2PTR(any,d) (any)(PTRV)(d) # endif #endif #ifndef PTR2ul # if PTRSIZE == LONGSIZE # define PTR2ul(p) (unsigned long)(p) # else # define PTR2ul(p) INT2PTR(unsigned long,p) # endif #endif #ifndef PTR2nat # define PTR2nat(p) (PTRV)(p) #endif #ifndef NUM2PTR # define NUM2PTR(any,d) (any)PTR2nat(d) #endif #ifndef PTR2IV # define PTR2IV(p) INT2PTR(IV,p) #endif #ifndef PTR2UV # define PTR2UV(p) INT2PTR(UV,p) #endif #ifndef PTR2NV # define PTR2NV(p) NUM2PTR(NV,p) #endif #undef START_EXTERN_C #undef END_EXTERN_C #undef EXTERN_C #ifdef __cplusplus # define START_EXTERN_C extern "C" { # define END_EXTERN_C } # define EXTERN_C extern "C" #else # define START_EXTERN_C # define END_EXTERN_C # define EXTERN_C extern #endif #if defined(PERL_GCC_PEDANTIC) # ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN # define PERL_GCC_BRACE_GROUPS_FORBIDDEN # endif #endif #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus) # ifndef PERL_USE_GCC_BRACE_GROUPS # define PERL_USE_GCC_BRACE_GROUPS # endif #endif #undef STMT_START #undef STMT_END #ifdef PERL_USE_GCC_BRACE_GROUPS # define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ # define STMT_END ) #else # if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__) # define STMT_START if (1) # define STMT_END else (void)0 # else # define STMT_START do # define STMT_END while (0) # endif #endif #ifndef boolSV # define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no) #endif /* DEFSV appears first in 5.004_56 */ #ifndef DEFSV # define DEFSV GvSV(PL_defgv) #endif #ifndef SAVE_DEFSV # define SAVE_DEFSV SAVESPTR(GvSV(PL_defgv)) #endif #ifndef DEFSV_set # define DEFSV_set(sv) (DEFSV = (sv)) #endif /* Older perls (<=5.003) lack AvFILLp */ #ifndef AvFILLp # define AvFILLp AvFILL #endif #ifndef ERRSV # define ERRSV get_sv("@",FALSE) #endif /* Hint: gv_stashpvn * This function's backport doesn't support the length parameter, but * rather ignores it. Portability can only be ensured if the length * parameter is used for speed reasons, but the length can always be * correctly computed from the string argument. */ #ifndef gv_stashpvn # define gv_stashpvn(str,len,create) gv_stashpv(str,create) #endif /* Replace: 1 */ #ifndef get_cv # define get_cv perl_get_cv #endif #ifndef get_sv # define get_sv perl_get_sv #endif #ifndef get_av # define get_av perl_get_av #endif #ifndef get_hv # define get_hv perl_get_hv #endif /* Replace: 0 */ #ifndef dUNDERBAR # define dUNDERBAR dNOOP #endif #ifndef UNDERBAR # define UNDERBAR DEFSV #endif #ifndef dAX # define dAX I32 ax = MARK - PL_stack_base + 1 #endif #ifndef dITEMS # define dITEMS I32 items = SP - MARK #endif #ifndef dXSTARG # define dXSTARG SV * targ = sv_newmortal() #endif #ifndef dAXMARK # define dAXMARK I32 ax = POPMARK; \ register SV ** const mark = PL_stack_base + ax++ #endif #ifndef XSprePUSH # define XSprePUSH (sp = PL_stack_base + ax - 1) #endif #if (PERL_BCDVERSION < 0x5005000) # undef XSRETURN # define XSRETURN(off) \ STMT_START { \ PL_stack_sp = PL_stack_base + ax + ((off) - 1); \ return; \ } STMT_END #endif #ifndef PERL_ABS # define PERL_ABS(x) ((x) < 0 ? -(x) : (x)) #endif #ifndef dVAR # define dVAR dNOOP #endif #ifndef SVf # define SVf "_" #endif #ifndef UTF8_MAXBYTES # define UTF8_MAXBYTES UTF8_MAXLEN #endif #ifndef CPERLscope # define CPERLscope(x) x #endif #ifndef PERL_HASH # define PERL_HASH(hash,str,len) \ STMT_START { \ const char *s_PeRlHaSh = str; \ I32 i_PeRlHaSh = len; \ U32 hash_PeRlHaSh = 0; \ while (i_PeRlHaSh--) \ hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \ (hash) = hash_PeRlHaSh; \ } STMT_END #endif #ifndef PERLIO_FUNCS_DECL # ifdef PERLIO_FUNCS_CONST # define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs # define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs) # else # define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs # define PERLIO_FUNCS_CAST(funcs) (funcs) # endif #endif /* provide these typedefs for older perls */ #if (PERL_BCDVERSION < 0x5009003) # ifdef ARGSproto typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto); # else typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX); # endif typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*); #endif #ifndef isPSXSPC # define isPSXSPC(c) (isSPACE(c) || (c) == '\v') #endif #ifndef isBLANK # define isBLANK(c) ((c) == ' ' || (c) == '\t') #endif #ifdef EBCDIC #ifndef isALNUMC # define isALNUMC(c) isalnum(c) #endif #ifndef isASCII # define isASCII(c) isascii(c) #endif #ifndef isCNTRL # define isCNTRL(c) iscntrl(c) #endif #ifndef isGRAPH # define isGRAPH(c) isgraph(c) #endif #ifndef isPRINT # define isPRINT(c) isprint(c) #endif #ifndef isPUNCT # define isPUNCT(c) ispunct(c) #endif #ifndef isXDIGIT # define isXDIGIT(c) isxdigit(c) #endif #else # if (PERL_BCDVERSION < 0x5010000) /* Hint: isPRINT * The implementation in older perl versions includes all of the * isSPACE() characters, which is wrong. The version provided by * Devel::PPPort always overrides a present buggy version. */ # undef isPRINT # endif #ifndef isALNUMC # define isALNUMC(c) (isALPHA(c) || isDIGIT(c)) #endif #ifndef isASCII # define isASCII(c) ((c) <= 127) #endif #ifndef isCNTRL # define isCNTRL(c) ((c) < ' ' || (c) == 127) #endif #ifndef isGRAPH # define isGRAPH(c) (isALNUM(c) || isPUNCT(c)) #endif #ifndef isPRINT # define isPRINT(c) (((c) >= 32 && (c) < 127)) #endif #ifndef isPUNCT # define isPUNCT(c) (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64) || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126)) #endif #ifndef isXDIGIT # define isXDIGIT(c) (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) #endif #endif #ifndef PERL_SIGNALS_UNSAFE_FLAG #define PERL_SIGNALS_UNSAFE_FLAG 0x0001 #if (PERL_BCDVERSION < 0x5008000) # define D_PPP_PERL_SIGNALS_INIT PERL_SIGNALS_UNSAFE_FLAG #else # define D_PPP_PERL_SIGNALS_INIT 0 #endif #if defined(NEED_PL_signals) static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; #elif defined(NEED_PL_signals_GLOBAL) U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT; #else extern U32 DPPP_(my_PL_signals); #endif #define PL_signals DPPP_(my_PL_signals) #endif /* Hint: PL_ppaddr * Calling an op via PL_ppaddr requires passing a context argument * for threaded builds. Since the context argument is different for * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will * automatically be defined as the correct argument. */ #if (PERL_BCDVERSION <= 0x5005005) /* Replace: 1 */ # define PL_ppaddr ppaddr # define PL_no_modify no_modify /* Replace: 0 */ #endif #if (PERL_BCDVERSION <= 0x5004005) /* Replace: 1 */ # define PL_DBsignal DBsignal # define PL_DBsingle DBsingle # define PL_DBsub DBsub # define PL_DBtrace DBtrace # define PL_Sv Sv # define PL_bufend bufend # define PL_bufptr bufptr # define PL_compiling compiling # define PL_copline copline # define PL_curcop curcop # define PL_curstash curstash # define PL_debstash debstash # define PL_defgv defgv # define PL_diehook diehook # define PL_dirty dirty # define PL_dowarn dowarn # define PL_errgv errgv # define PL_expect expect # define PL_hexdigit hexdigit # define PL_hints hints # define PL_laststatval laststatval # define PL_lex_state lex_state # define PL_lex_stuff lex_stuff # define PL_linestr linestr # define PL_na na # define PL_perl_destruct_level perl_destruct_level # define PL_perldb perldb # define PL_rsfp_filters rsfp_filters # define PL_rsfp rsfp # define PL_stack_base stack_base # define PL_stack_sp stack_sp # define PL_statcache statcache # define PL_stdingv stdingv # define PL_sv_arenaroot sv_arenaroot # define PL_sv_no sv_no # define PL_sv_undef sv_undef # define PL_sv_yes sv_yes # define PL_tainted tainted # define PL_tainting tainting # define PL_tokenbuf tokenbuf /* Replace: 0 */ #endif /* Warning: PL_parser * For perl versions earlier than 5.9.5, this is an always * non-NULL dummy. Also, it cannot be dereferenced. Don't * use it if you can avoid is and unless you absolutely know * what you're doing. * If you always check that PL_parser is non-NULL, you can * define DPPP_PL_parser_NO_DUMMY to avoid the creation of * a dummy parser structure. */ #if (PERL_BCDVERSION >= 0x5009005) # ifdef DPPP_PL_parser_NO_DUMMY # define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ (croak("panic: PL_parser == NULL in %s:%d", \ __FILE__, __LINE__), (yy_parser *) NULL))->var) # else # ifdef DPPP_PL_parser_NO_DUMMY_WARNING # define D_PPP_parser_dummy_warning(var) # else # define D_PPP_parser_dummy_warning(var) \ warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__), # endif # define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \ (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var) #if defined(NEED_PL_parser) static yy_parser DPPP_(dummy_PL_parser); #elif defined(NEED_PL_parser_GLOBAL) yy_parser DPPP_(dummy_PL_parser); #else extern yy_parser DPPP_(dummy_PL_parser); #endif # endif /* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */ /* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf * Do not use this variable unless you know exactly what you're * doint. It is internal to the perl parser and may change or even * be removed in the future. As of perl 5.9.5, you have to check * for (PL_parser != NULL) for this variable to have any effect. * An always non-NULL PL_parser dummy is provided for earlier * perl versions. * If PL_parser is NULL when you try to access this variable, a * dummy is being accessed instead and a warning is issued unless * you define DPPP_PL_parser_NO_DUMMY_WARNING. * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access * this variable will croak with a panic message. */ # define PL_expect D_PPP_my_PL_parser_var(expect) # define PL_copline D_PPP_my_PL_parser_var(copline) # define PL_rsfp D_PPP_my_PL_parser_var(rsfp) # define PL_rsfp_filters D_PPP_my_PL_parser_var(rsfp_filters) # define PL_linestr D_PPP_my_PL_parser_var(linestr) # define PL_bufptr D_PPP_my_PL_parser_var(bufptr) # define PL_bufend D_PPP_my_PL_parser_var(bufend) # define PL_lex_state D_PPP_my_PL_parser_var(lex_state) # define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff) # define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf) #else /* ensure that PL_parser != NULL and cannot be dereferenced */ # define PL_parser ((void *) 1) #endif #ifndef mPUSHs # define mPUSHs(s) PUSHs(sv_2mortal(s)) #endif #ifndef PUSHmortal # define PUSHmortal PUSHs(sv_newmortal()) #endif #ifndef mPUSHp # define mPUSHp(p,l) sv_setpvn(PUSHmortal, (p), (l)) #endif #ifndef mPUSHn # define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n)) #endif #ifndef mPUSHi # define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i)) #endif #ifndef mPUSHu # define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u)) #endif #ifndef mXPUSHs # define mXPUSHs(s) XPUSHs(sv_2mortal(s)) #endif #ifndef XPUSHmortal # define XPUSHmortal XPUSHs(sv_newmortal()) #endif #ifndef mXPUSHp # define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END #endif #ifndef mXPUSHn # define mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END #endif #ifndef mXPUSHi # define mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END #endif #ifndef mXPUSHu # define mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END #endif /* Replace: 1 */ #ifndef call_sv # define call_sv perl_call_sv #endif #ifndef call_pv # define call_pv perl_call_pv #endif #ifndef call_argv # define call_argv perl_call_argv #endif #ifndef call_method # define call_method perl_call_method #endif #ifndef eval_sv # define eval_sv perl_eval_sv #endif /* Replace: 0 */ #ifndef PERL_LOADMOD_DENY # define PERL_LOADMOD_DENY 0x1 #endif #ifndef PERL_LOADMOD_NOIMPORT # define PERL_LOADMOD_NOIMPORT 0x2 #endif #ifndef PERL_LOADMOD_IMPORT_OPS # define PERL_LOADMOD_IMPORT_OPS 0x4 #endif #ifndef G_METHOD # define G_METHOD 64 # ifdef call_sv # undef call_sv # endif # if (PERL_BCDVERSION < 0x5006000) # define call_sv(sv, flags) ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \ (flags) & ~G_METHOD) : perl_call_sv(sv, flags)) # else # define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \ (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags)) # endif #endif /* Replace perl_eval_pv with eval_pv */ #ifndef eval_pv #if defined(NEED_eval_pv) static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); static #else extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error); #endif #ifdef eval_pv # undef eval_pv #endif #define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b) #define Perl_eval_pv DPPP_(my_eval_pv) #if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL) SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error) { dSP; SV* sv = newSVpv(p, 0); PUSHMARK(sp); eval_sv(sv, G_SCALAR); SvREFCNT_dec(sv); SPAGAIN; sv = POPs; PUTBACK; if (croak_on_error && SvTRUE(GvSV(errgv))) croak(SvPVx(GvSV(errgv), na)); return sv; } #endif #endif #ifndef vload_module #if defined(NEED_vload_module) static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); static #else extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args); #endif #ifdef vload_module # undef vload_module #endif #define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d) #define Perl_vload_module DPPP_(my_vload_module) #if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL) void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args) { dTHR; dVAR; OP *veop, *imop; OP * const modname = newSVOP(OP_CONST, 0, name); /* 5.005 has a somewhat hacky force_normal that doesn't croak on SvREADONLY() if PL_compling is true. Current perls take care in ck_require() to correctly turn off SvREADONLY before calling force_normal_flags(). This seems a better fix than fudging PL_compling */ SvREADONLY_off(((SVOP*)modname)->op_sv); modname->op_private |= OPpCONST_BARE; if (ver) { veop = newSVOP(OP_CONST, 0, ver); } else veop = NULL; if (flags & PERL_LOADMOD_NOIMPORT) { imop = sawparens(newNULLLIST()); } else if (flags & PERL_LOADMOD_IMPORT_OPS) { imop = va_arg(*args, OP*); } else { SV *sv; imop = NULL; sv = va_arg(*args, SV*); while (sv) { imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv)); sv = va_arg(*args, SV*); } } { const line_t ocopline = PL_copline; COP * const ocurcop = PL_curcop; const int oexpect = PL_expect; #if (PERL_BCDVERSION >= 0x5004000) utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0), veop, modname, imop); #else utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(), modname, imop); #endif PL_expect = oexpect; PL_copline = ocopline; PL_curcop = ocurcop; } } #endif #endif #ifndef load_module #if defined(NEED_load_module) static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); static #else extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...); #endif #ifdef load_module # undef load_module #endif #define load_module DPPP_(my_load_module) #define Perl_load_module DPPP_(my_load_module) #if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL) void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...) { va_list args; va_start(args, ver); vload_module(flags, name, ver, &args); va_end(args); } #endif #endif #ifndef newRV_inc # define newRV_inc(sv) newRV(sv) /* Replace */ #endif #ifndef newRV_noinc #if defined(NEED_newRV_noinc) static SV * DPPP_(my_newRV_noinc)(SV *sv); static #else extern SV * DPPP_(my_newRV_noinc)(SV *sv); #endif #ifdef newRV_noinc # undef newRV_noinc #endif #define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a) #define Perl_newRV_noinc DPPP_(my_newRV_noinc) #if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL) SV * DPPP_(my_newRV_noinc)(SV *sv) { SV *rv = (SV *)newRV(sv); SvREFCNT_dec(sv); return rv; } #endif #endif /* Hint: newCONSTSUB * Returns a CV* as of perl-5.7.1. This return value is not supported * by Devel::PPPort. */ /* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */ #if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005) #if defined(NEED_newCONSTSUB) static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); static #else extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv); #endif #ifdef newCONSTSUB # undef newCONSTSUB #endif #define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c) #define Perl_newCONSTSUB DPPP_(my_newCONSTSUB) #if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL) /* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */ /* (There's no PL_parser in perl < 5.005, so this is completely safe) */ #define D_PPP_PL_copline PL_copline void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv) { U32 oldhints = PL_hints; HV *old_cop_stash = PL_curcop->cop_stash; HV *old_curstash = PL_curstash; line_t oldline = PL_curcop->cop_line; PL_curcop->cop_line = D_PPP_PL_copline; PL_hints &= ~HINT_BLOCK_SCOPE; if (stash) PL_curstash = PL_curcop->cop_stash = stash; newSUB( #if (PERL_BCDVERSION < 0x5003022) start_subparse(), #elif (PERL_BCDVERSION == 0x5003022) start_subparse(0), #else /* 5.003_23 onwards */ start_subparse(FALSE, 0), #endif newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)), newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */ newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv)) ); PL_hints = oldhints; PL_curcop->cop_stash = old_cop_stash; PL_curstash = old_curstash; PL_curcop->cop_line = oldline; } #endif #endif /* * Boilerplate macros for initializing and accessing interpreter-local * data from C. All statics in extensions should be reworked to use * this, if you want to make the extension thread-safe. See ext/re/re.xs * for an example of the use of these macros. * * Code that uses these macros is responsible for the following: * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts" * 2. Declare a typedef named my_cxt_t that is a structure that contains * all the data that needs to be interpreter-local. * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t. * 4. Use the MY_CXT_INIT macro such that it is called exactly once * (typically put in the BOOT: section). * 5. Use the members of the my_cxt_t structure everywhere as * MY_CXT.member. * 6. Use the dMY_CXT macro (a declaration) in all the functions that * access MY_CXT. */ #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \ defined(PERL_CAPI) || defined(PERL_IMPLICIT_CONTEXT) #ifndef START_MY_CXT /* This must appear in all extensions that define a my_cxt_t structure, * right after the definition (i.e. at file scope). The non-threads * case below uses it to declare the data as static. */ #define START_MY_CXT #if (PERL_BCDVERSION < 0x5004068) /* Fetches the SV that keeps the per-interpreter data. */ #define dMY_CXT_SV \ SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE) #else /* >= perl5.004_68 */ #define dMY_CXT_SV \ SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY, \ sizeof(MY_CXT_KEY)-1, TRUE) #endif /* < perl5.004_68 */ /* This declaration should be used within all functions that use the * interpreter-local data. */ #define dMY_CXT \ dMY_CXT_SV; \ my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv)) /* Creates and zeroes the per-interpreter data. * (We allocate my_cxtp in a Perl SV so that it will be released when * the interpreter goes away.) */ #define MY_CXT_INIT \ dMY_CXT_SV; \ /* newSV() allocates one more than needed */ \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Zero(my_cxtp, 1, my_cxt_t); \ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) /* This macro must be used to access members of the my_cxt_t structure. * e.g. MYCXT.some_data */ #define MY_CXT (*my_cxtp) /* Judicious use of these macros can reduce the number of times dMY_CXT * is used. Use is similar to pTHX, aTHX etc. */ #define pMY_CXT my_cxt_t *my_cxtp #define pMY_CXT_ pMY_CXT, #define _pMY_CXT ,pMY_CXT #define aMY_CXT my_cxtp #define aMY_CXT_ aMY_CXT, #define _aMY_CXT ,aMY_CXT #endif /* START_MY_CXT */ #ifndef MY_CXT_CLONE /* Clones the per-interpreter data. */ #define MY_CXT_CLONE \ dMY_CXT_SV; \ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\ Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\ sv_setuv(my_cxt_sv, PTR2UV(my_cxtp)) #endif #else /* single interpreter */ #ifndef START_MY_CXT #define START_MY_CXT static my_cxt_t my_cxt; #define dMY_CXT_SV dNOOP #define dMY_CXT dNOOP #define MY_CXT_INIT NOOP #define MY_CXT my_cxt #define pMY_CXT void #define pMY_CXT_ #define _pMY_CXT #define aMY_CXT #define aMY_CXT_ #define _aMY_CXT #endif /* START_MY_CXT */ #ifndef MY_CXT_CLONE #define MY_CXT_CLONE NOOP #endif #endif #ifndef IVdf # if IVSIZE == LONGSIZE # define IVdf "ld" # define UVuf "lu" # define UVof "lo" # define UVxf "lx" # define UVXf "lX" # else # if IVSIZE == INTSIZE # define IVdf "d" # define UVuf "u" # define UVof "o" # define UVxf "x" # define UVXf "X" # endif # endif #endif #ifndef NVef # if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \ defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000) /* Not very likely, but let's try anyway. */ # define NVef PERL_PRIeldbl # define NVff PERL_PRIfldbl # define NVgf PERL_PRIgldbl # else # define NVef "e" # define NVff "f" # define NVgf "g" # endif #endif #ifndef SvREFCNT_inc # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (SvREFCNT(_sv))++; \ _sv; \ }) # else # define SvREFCNT_inc(sv) \ ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL) # endif #endif #ifndef SvREFCNT_inc_simple # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_simple(sv) \ ({ \ if (sv) \ (SvREFCNT(sv))++; \ (SV *)(sv); \ }) # else # define SvREFCNT_inc_simple(sv) \ ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL) # endif #endif #ifndef SvREFCNT_inc_NN # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_NN(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ SvREFCNT(_sv)++; \ _sv; \ }) # else # define SvREFCNT_inc_NN(sv) \ (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv) # endif #endif #ifndef SvREFCNT_inc_void # ifdef PERL_USE_GCC_BRACE_GROUPS # define SvREFCNT_inc_void(sv) \ ({ \ SV * const _sv = (SV*)(sv); \ if (_sv) \ (void)(SvREFCNT(_sv)++); \ }) # else # define SvREFCNT_inc_void(sv) \ (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0) # endif #endif #ifndef SvREFCNT_inc_simple_void # define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END #endif #ifndef SvREFCNT_inc_simple_NN # define SvREFCNT_inc_simple_NN(sv) (++SvREFCNT(sv), (SV*)(sv)) #endif #ifndef SvREFCNT_inc_void_NN # define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) #endif #ifndef SvREFCNT_inc_simple_void_NN # define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv))) #endif #if (PERL_BCDVERSION < 0x5006000) # define D_PPP_CONSTPV_ARG(x) ((char *) (x)) #else # define D_PPP_CONSTPV_ARG(x) (x) #endif #ifndef newSVpvn # define newSVpvn(data,len) ((data) \ ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \ : newSV(0)) #endif #ifndef newSVpvn_utf8 # define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0) #endif #ifndef SVf_UTF8 # define SVf_UTF8 0 #endif #ifndef newSVpvn_flags #if defined(NEED_newSVpvn_flags) static SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); static #else extern SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags); #endif #ifdef newSVpvn_flags # undef newSVpvn_flags #endif #define newSVpvn_flags(a,b,c) DPPP_(my_newSVpvn_flags)(aTHX_ a,b,c) #define Perl_newSVpvn_flags DPPP_(my_newSVpvn_flags) #if defined(NEED_newSVpvn_flags) || defined(NEED_newSVpvn_flags_GLOBAL) SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags) { SV *sv = newSVpvn(D_PPP_CONSTPV_ARG(s), len); SvFLAGS(sv) |= (flags & SVf_UTF8); return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv; } #endif #endif /* Backwards compatibility stuff... :-( */ #if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen) # define NEED_sv_2pv_flags #endif #if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL) # define NEED_sv_2pv_flags_GLOBAL #endif /* Hint: sv_2pv_nolen * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen(). */ #ifndef sv_2pv_nolen # define sv_2pv_nolen(sv) SvPV_nolen(sv) #endif #ifdef SvPVbyte /* Hint: SvPVbyte * Does not work in perl-5.6.1, ppport.h implements a version * borrowed from perl-5.7.3. */ #if (PERL_BCDVERSION < 0x5007000) #if defined(NEED_sv_2pvbyte) static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); static #else extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp); #endif #ifdef sv_2pvbyte # undef sv_2pvbyte #endif #define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b) #define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte) #if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL) char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp) { sv_utf8_downgrade(sv,0); return SvPV(sv,*lp); } #endif /* Hint: sv_2pvbyte * Use the SvPVbyte() macro instead of sv_2pvbyte(). */ #undef SvPVbyte #define SvPVbyte(sv, lp) \ ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp)) #endif #else # define SvPVbyte SvPV # define sv_2pvbyte sv_2pv #endif #ifndef sv_2pvbyte_nolen # define sv_2pvbyte_nolen(sv) sv_2pv_nolen(sv) #endif /* Hint: sv_pvn * Always use the SvPV() macro instead of sv_pvn(). */ /* Hint: sv_pvn_force * Always use the SvPV_force() macro instead of sv_pvn_force(). */ /* If these are undefined, they're not handled by the core anyway */ #ifndef SV_IMMEDIATE_UNREF # define SV_IMMEDIATE_UNREF 0 #endif #ifndef SV_GMAGIC # define SV_GMAGIC 0 #endif #ifndef SV_COW_DROP_PV # define SV_COW_DROP_PV 0 #endif #ifndef SV_UTF8_NO_ENCODING # define SV_UTF8_NO_ENCODING 0 #endif #ifndef SV_NOSTEAL # define SV_NOSTEAL 0 #endif #ifndef SV_CONST_RETURN # define SV_CONST_RETURN 0 #endif #ifndef SV_MUTABLE_RETURN # define SV_MUTABLE_RETURN 0 #endif #ifndef SV_SMAGIC # define SV_SMAGIC 0 #endif #ifndef SV_HAS_TRAILING_NUL # define SV_HAS_TRAILING_NUL 0 #endif #ifndef SV_COW_SHARED_HASH_KEYS # define SV_COW_SHARED_HASH_KEYS 0 #endif #if (PERL_BCDVERSION < 0x5007002) #if defined(NEED_sv_2pv_flags) static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); static #else extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); #endif #ifdef sv_2pv_flags # undef sv_2pv_flags #endif #define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c) #define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags) #if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL) char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) { STRLEN n_a = (STRLEN) flags; return sv_2pv(sv, lp ? lp : &n_a); } #endif #if defined(NEED_sv_pvn_force_flags) static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); static #else extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags); #endif #ifdef sv_pvn_force_flags # undef sv_pvn_force_flags #endif #define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c) #define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags) #if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL) char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags) { STRLEN n_a = (STRLEN) flags; return sv_pvn_force(sv, lp ? lp : &n_a); } #endif #endif #if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) ) # define DPPP_SVPV_NOLEN_LP_ARG &PL_na #else # define DPPP_SVPV_NOLEN_LP_ARG 0 #endif #ifndef SvPV_const # define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_mutable # define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_flags # define SvPV_flags(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags)) #endif #ifndef SvPV_flags_const # define SvPV_flags_const(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \ (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN)) #endif #ifndef SvPV_flags_const_nolen # define SvPV_flags_const_nolen(sv, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : \ (const char*) sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN)) #endif #ifndef SvPV_flags_mutable # define SvPV_flags_mutable(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \ sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) #endif #ifndef SvPV_force # define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_force_nolen # define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC) #endif #ifndef SvPV_force_mutable # define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC) #endif #ifndef SvPV_force_nomg # define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0) #endif #ifndef SvPV_force_nomg_nolen # define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0) #endif #ifndef SvPV_force_flags # define SvPV_force_flags(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags)) #endif #ifndef SvPV_force_flags_nolen # define SvPV_force_flags_nolen(sv, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? SvPVX(sv) : sv_pvn_force_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags)) #endif #ifndef SvPV_force_flags_mutable # define SvPV_force_flags_mutable(sv, lp, flags) \ ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \ ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \ : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN)) #endif #ifndef SvPV_nolen # define SvPV_nolen(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC)) #endif #ifndef SvPV_nolen_const # define SvPV_nolen_const(sv) \ ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \ ? SvPVX_const(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN)) #endif #ifndef SvPV_nomg # define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0) #endif #ifndef SvPV_nomg_const # define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0) #endif #ifndef SvPV_nomg_const_nolen # define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0) #endif #ifndef SvPV_renew # define SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \ SvPV_set((sv), (char *) saferealloc( \ (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \ } STMT_END #endif #ifndef SvMAGIC_set # define SvMAGIC_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END #endif #if (PERL_BCDVERSION < 0x5009003) #ifndef SvPVX_const # define SvPVX_const(sv) ((const char*) (0 + SvPVX(sv))) #endif #ifndef SvPVX_mutable # define SvPVX_mutable(sv) (0 + SvPVX(sv)) #endif #ifndef SvRV_set # define SvRV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END #endif #else #ifndef SvPVX_const # define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv)) #endif #ifndef SvPVX_mutable # define SvPVX_mutable(sv) ((sv)->sv_u.svu_pv) #endif #ifndef SvRV_set # define SvRV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_RV); \ ((sv)->sv_u.svu_rv = (val)); } STMT_END #endif #endif #ifndef SvSTASH_set # define SvSTASH_set(sv, val) \ STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \ (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END #endif #if (PERL_BCDVERSION < 0x5004000) #ifndef SvUV_set # define SvUV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END #endif #else #ifndef SvUV_set # define SvUV_set(sv, val) \ STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \ (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END #endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf) #if defined(NEED_vnewSVpvf) static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); static #else extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args); #endif #ifdef vnewSVpvf # undef vnewSVpvf #endif #define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b) #define Perl_vnewSVpvf DPPP_(my_vnewSVpvf) #if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL) SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args) { register SV *sv = newSV(0); sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); return sv; } #endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf) # define sv_vcatpvf(sv, pat, args) sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf) # define sv_vsetpvf(sv, pat, args) sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)) #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg) #if defined(NEED_sv_catpvf_mg) static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); static #else extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...); #endif #define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg) #if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL) void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...) { va_list args; va_start(args, pat); sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #ifdef PERL_IMPLICIT_CONTEXT #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext) #if defined(NEED_sv_catpvf_mg_nocontext) static void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); static #else extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...); #endif #define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) #define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext) #if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL) void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...) { dTHX; va_list args; va_start(args, pat); sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #endif /* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */ #ifndef sv_catpvf_mg # ifdef PERL_IMPLICIT_CONTEXT # define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext # else # define sv_catpvf_mg Perl_sv_catpvf_mg # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg) # define sv_vcatpvf_mg(sv, pat, args) \ STMT_START { \ sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ SvSETMAGIC(sv); \ } STMT_END #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg) #if defined(NEED_sv_setpvf_mg) static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); static #else extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...); #endif #define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg) #if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL) void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...) { va_list args; va_start(args, pat); sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #ifdef PERL_IMPLICIT_CONTEXT #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext) #if defined(NEED_sv_setpvf_mg_nocontext) static void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); static #else extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...); #endif #define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) #define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext) #if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL) void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...) { dTHX; va_list args; va_start(args, pat); sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*)); SvSETMAGIC(sv); va_end(args); } #endif #endif #endif /* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */ #ifndef sv_setpvf_mg # ifdef PERL_IMPLICIT_CONTEXT # define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext # else # define sv_setpvf_mg Perl_sv_setpvf_mg # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf_mg) # define sv_vsetpvf_mg(sv, pat, args) \ STMT_START { \ sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*)); \ SvSETMAGIC(sv); \ } STMT_END #endif #ifndef newSVpvn_share #if defined(NEED_newSVpvn_share) static SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); static #else extern SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash); #endif #ifdef newSVpvn_share # undef newSVpvn_share #endif #define newSVpvn_share(a,b,c) DPPP_(my_newSVpvn_share)(aTHX_ a,b,c) #define Perl_newSVpvn_share DPPP_(my_newSVpvn_share) #if defined(NEED_newSVpvn_share) || defined(NEED_newSVpvn_share_GLOBAL) SV * DPPP_(my_newSVpvn_share)(pTHX_ const char *src, I32 len, U32 hash) { SV *sv; if (len < 0) len = -len; if (!hash) PERL_HASH(hash, (char*) src, len); sv = newSVpvn((char *) src, len); sv_upgrade(sv, SVt_PVIV); SvIVX(sv) = hash; SvREADONLY_on(sv); SvPOK_on(sv); return sv; } #endif #endif #ifndef SvSHARED_HASH # define SvSHARED_HASH(sv) (0 + SvUVX(sv)) #endif #ifndef WARN_ALL # define WARN_ALL 0 #endif #ifndef WARN_CLOSURE # define WARN_CLOSURE 1 #endif #ifndef WARN_DEPRECATED # define WARN_DEPRECATED 2 #endif #ifndef WARN_EXITING # define WARN_EXITING 3 #endif #ifndef WARN_GLOB # define WARN_GLOB 4 #endif #ifndef WARN_IO # define WARN_IO 5 #endif #ifndef WARN_CLOSED # define WARN_CLOSED 6 #endif #ifndef WARN_EXEC # define WARN_EXEC 7 #endif #ifndef WARN_LAYER # define WARN_LAYER 8 #endif #ifndef WARN_NEWLINE # define WARN_NEWLINE 9 #endif #ifndef WARN_PIPE # define WARN_PIPE 10 #endif #ifndef WARN_UNOPENED # define WARN_UNOPENED 11 #endif #ifndef WARN_MISC # define WARN_MISC 12 #endif #ifndef WARN_NUMERIC # define WARN_NUMERIC 13 #endif #ifndef WARN_ONCE # define WARN_ONCE 14 #endif #ifndef WARN_OVERFLOW # define WARN_OVERFLOW 15 #endif #ifndef WARN_PACK # define WARN_PACK 16 #endif #ifndef WARN_PORTABLE # define WARN_PORTABLE 17 #endif #ifndef WARN_RECURSION # define WARN_RECURSION 18 #endif #ifndef WARN_REDEFINE # define WARN_REDEFINE 19 #endif #ifndef WARN_REGEXP # define WARN_REGEXP 20 #endif #ifndef WARN_SEVERE # define WARN_SEVERE 21 #endif #ifndef WARN_DEBUGGING # define WARN_DEBUGGING 22 #endif #ifndef WARN_INPLACE # define WARN_INPLACE 23 #endif #ifndef WARN_INTERNAL # define WARN_INTERNAL 24 #endif #ifndef WARN_MALLOC # define WARN_MALLOC 25 #endif #ifndef WARN_SIGNAL # define WARN_SIGNAL 26 #endif #ifndef WARN_SUBSTR # define WARN_SUBSTR 27 #endif #ifndef WARN_SYNTAX # define WARN_SYNTAX 28 #endif #ifndef WARN_AMBIGUOUS # define WARN_AMBIGUOUS 29 #endif #ifndef WARN_BAREWORD # define WARN_BAREWORD 30 #endif #ifndef WARN_DIGIT # define WARN_DIGIT 31 #endif #ifndef WARN_PARENTHESIS # define WARN_PARENTHESIS 32 #endif #ifndef WARN_PRECEDENCE # define WARN_PRECEDENCE 33 #endif #ifndef WARN_PRINTF # define WARN_PRINTF 34 #endif #ifndef WARN_PROTOTYPE # define WARN_PROTOTYPE 35 #endif #ifndef WARN_QW # define WARN_QW 36 #endif #ifndef WARN_RESERVED # define WARN_RESERVED 37 #endif #ifndef WARN_SEMICOLON # define WARN_SEMICOLON 38 #endif #ifndef WARN_TAINT # define WARN_TAINT 39 #endif #ifndef WARN_THREADS # define WARN_THREADS 40 #endif #ifndef WARN_UNINITIALIZED # define WARN_UNINITIALIZED 41 #endif #ifndef WARN_UNPACK # define WARN_UNPACK 42 #endif #ifndef WARN_UNTIE # define WARN_UNTIE 43 #endif #ifndef WARN_UTF8 # define WARN_UTF8 44 #endif #ifndef WARN_VOID # define WARN_VOID 45 #endif #ifndef WARN_ASSERTIONS # define WARN_ASSERTIONS 46 #endif #ifndef packWARN # define packWARN(a) (a) #endif #ifndef ckWARN # ifdef G_WARN_ON # define ckWARN(a) (PL_dowarn & G_WARN_ON) # else # define ckWARN(a) PL_dowarn # endif #endif #if (PERL_BCDVERSION >= 0x5004000) && !defined(warner) #if defined(NEED_warner) static void DPPP_(my_warner)(U32 err, const char *pat, ...); static #else extern void DPPP_(my_warner)(U32 err, const char *pat, ...); #endif #define Perl_warner DPPP_(my_warner) #if defined(NEED_warner) || defined(NEED_warner_GLOBAL) void DPPP_(my_warner)(U32 err, const char *pat, ...) { SV *sv; va_list args; PERL_UNUSED_ARG(err); va_start(args, pat); sv = vnewSVpvf(pat, &args); va_end(args); sv_2mortal(sv); warn("%s", SvPV_nolen(sv)); } #define warner Perl_warner #define Perl_warner_nocontext Perl_warner #endif #endif /* concatenating with "" ensures that only literal strings are accepted as argument * note that STR_WITH_LEN() can't be used as argument to macros or functions that * under some configurations might be macros */ #ifndef STR_WITH_LEN # define STR_WITH_LEN(s) (s ""), (sizeof(s)-1) #endif #ifndef newSVpvs # define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1) #endif #ifndef newSVpvs_flags # define newSVpvs_flags(str, flags) newSVpvn_flags(str "", sizeof(str) - 1, flags) #endif #ifndef sv_catpvs # define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1) #endif #ifndef sv_setpvs # define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1) #endif #ifndef hv_fetchs # define hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) #endif #ifndef hv_stores # define hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0) #endif #ifndef SvGETMAGIC # define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END #endif #ifndef PERL_MAGIC_sv # define PERL_MAGIC_sv '\0' #endif #ifndef PERL_MAGIC_overload # define PERL_MAGIC_overload 'A' #endif #ifndef PERL_MAGIC_overload_elem # define PERL_MAGIC_overload_elem 'a' #endif #ifndef PERL_MAGIC_overload_table # define PERL_MAGIC_overload_table 'c' #endif #ifndef PERL_MAGIC_bm # define PERL_MAGIC_bm 'B' #endif #ifndef PERL_MAGIC_regdata # define PERL_MAGIC_regdata 'D' #endif #ifndef PERL_MAGIC_regdatum # define PERL_MAGIC_regdatum 'd' #endif #ifndef PERL_MAGIC_env # define PERL_MAGIC_env 'E' #endif #ifndef PERL_MAGIC_envelem # define PERL_MAGIC_envelem 'e' #endif #ifndef PERL_MAGIC_fm # define PERL_MAGIC_fm 'f' #endif #ifndef PERL_MAGIC_regex_global # define PERL_MAGIC_regex_global 'g' #endif #ifndef PERL_MAGIC_isa # define PERL_MAGIC_isa 'I' #endif #ifndef PERL_MAGIC_isaelem # define PERL_MAGIC_isaelem 'i' #endif #ifndef PERL_MAGIC_nkeys # define PERL_MAGIC_nkeys 'k' #endif #ifndef PERL_MAGIC_dbfile # define PERL_MAGIC_dbfile 'L' #endif #ifndef PERL_MAGIC_dbline # define PERL_MAGIC_dbline 'l' #endif #ifndef PERL_MAGIC_mutex # define PERL_MAGIC_mutex 'm' #endif #ifndef PERL_MAGIC_shared # define PERL_MAGIC_shared 'N' #endif #ifndef PERL_MAGIC_shared_scalar # define PERL_MAGIC_shared_scalar 'n' #endif #ifndef PERL_MAGIC_collxfrm # define PERL_MAGIC_collxfrm 'o' #endif #ifndef PERL_MAGIC_tied # define PERL_MAGIC_tied 'P' #endif #ifndef PERL_MAGIC_tiedelem # define PERL_MAGIC_tiedelem 'p' #endif #ifndef PERL_MAGIC_tiedscalar # define PERL_MAGIC_tiedscalar 'q' #endif #ifndef PERL_MAGIC_qr # define PERL_MAGIC_qr 'r' #endif #ifndef PERL_MAGIC_sig # define PERL_MAGIC_sig 'S' #endif #ifndef PERL_MAGIC_sigelem # define PERL_MAGIC_sigelem 's' #endif #ifndef PERL_MAGIC_taint # define PERL_MAGIC_taint 't' #endif #ifndef PERL_MAGIC_uvar # define PERL_MAGIC_uvar 'U' #endif #ifndef PERL_MAGIC_uvar_elem # define PERL_MAGIC_uvar_elem 'u' #endif #ifndef PERL_MAGIC_vstring # define PERL_MAGIC_vstring 'V' #endif #ifndef PERL_MAGIC_vec # define PERL_MAGIC_vec 'v' #endif #ifndef PERL_MAGIC_utf8 # define PERL_MAGIC_utf8 'w' #endif #ifndef PERL_MAGIC_substr # define PERL_MAGIC_substr 'x' #endif #ifndef PERL_MAGIC_defelem # define PERL_MAGIC_defelem 'y' #endif #ifndef PERL_MAGIC_glob # define PERL_MAGIC_glob '*' #endif #ifndef PERL_MAGIC_arylen # define PERL_MAGIC_arylen '#' #endif #ifndef PERL_MAGIC_pos # define PERL_MAGIC_pos '.' #endif #ifndef PERL_MAGIC_backref # define PERL_MAGIC_backref '<' #endif #ifndef PERL_MAGIC_ext # define PERL_MAGIC_ext '~' #endif /* That's the best we can do... */ #ifndef sv_catpvn_nomg # define sv_catpvn_nomg sv_catpvn #endif #ifndef sv_catsv_nomg # define sv_catsv_nomg sv_catsv #endif #ifndef sv_setsv_nomg # define sv_setsv_nomg sv_setsv #endif #ifndef sv_pvn_nomg # define sv_pvn_nomg sv_pvn #endif #ifndef SvIV_nomg # define SvIV_nomg SvIV #endif #ifndef SvUV_nomg # define SvUV_nomg SvUV #endif #ifndef sv_catpv_mg # define sv_catpv_mg(sv, ptr) \ STMT_START { \ SV *TeMpSv = sv; \ sv_catpv(TeMpSv,ptr); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_catpvn_mg # define sv_catpvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_catpvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_catsv_mg # define sv_catsv_mg(dsv, ssv) \ STMT_START { \ SV *TeMpSv = dsv; \ sv_catsv(TeMpSv,ssv); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setiv_mg # define sv_setiv_mg(sv, i) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setiv(TeMpSv,i); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setnv_mg # define sv_setnv_mg(sv, num) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setnv(TeMpSv,num); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setpv_mg # define sv_setpv_mg(sv, ptr) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setpv(TeMpSv,ptr); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setpvn_mg # define sv_setpvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setpvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setsv_mg # define sv_setsv_mg(dsv, ssv) \ STMT_START { \ SV *TeMpSv = dsv; \ sv_setsv(TeMpSv,ssv); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_setuv_mg # define sv_setuv_mg(sv, i) \ STMT_START { \ SV *TeMpSv = sv; \ sv_setuv(TeMpSv,i); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef sv_usepvn_mg # define sv_usepvn_mg(sv, ptr, len) \ STMT_START { \ SV *TeMpSv = sv; \ sv_usepvn(TeMpSv,ptr,len); \ SvSETMAGIC(TeMpSv); \ } STMT_END #endif #ifndef SvVSTRING_mg # define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL) #endif /* Hint: sv_magic_portable * This is a compatibility function that is only available with * Devel::PPPort. It is NOT in the perl core. * Its purpose is to mimic the 5.8.0 behaviour of sv_magic() when * it is being passed a name pointer with namlen == 0. In that * case, perl 5.8.0 and later store the pointer, not a copy of it. * The compatibility can be provided back to perl 5.004. With * earlier versions, the code will not compile. */ #if (PERL_BCDVERSION < 0x5004000) /* code that uses sv_magic_portable will not compile */ #elif (PERL_BCDVERSION < 0x5008000) # define sv_magic_portable(sv, obj, how, name, namlen) \ STMT_START { \ SV *SvMp_sv = (sv); \ char *SvMp_name = (char *) (name); \ I32 SvMp_namlen = (namlen); \ if (SvMp_name && SvMp_namlen == 0) \ { \ MAGIC *mg; \ sv_magic(SvMp_sv, obj, how, 0, 0); \ mg = SvMAGIC(SvMp_sv); \ mg->mg_len = -42; /* XXX: this is the tricky part */ \ mg->mg_ptr = SvMp_name; \ } \ else \ { \ sv_magic(SvMp_sv, obj, how, SvMp_name, SvMp_namlen); \ } \ } STMT_END #else # define sv_magic_portable(a, b, c, d, e) sv_magic(a, b, c, d, e) #endif #ifdef USE_ITHREADS #ifndef CopFILE # define CopFILE(c) ((c)->cop_file) #endif #ifndef CopFILEGV # define CopFILEGV(c) (CopFILE(c) ? gv_fetchfile(CopFILE(c)) : Nullgv) #endif #ifndef CopFILE_set # define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv)) #endif #ifndef CopFILESV # define CopFILESV(c) (CopFILE(c) ? GvSV(gv_fetchfile(CopFILE(c))) : Nullsv) #endif #ifndef CopFILEAV # define CopFILEAV(c) (CopFILE(c) ? GvAV(gv_fetchfile(CopFILE(c))) : Nullav) #endif #ifndef CopSTASHPV # define CopSTASHPV(c) ((c)->cop_stashpv) #endif #ifndef CopSTASHPV_set # define CopSTASHPV_set(c,pv) ((c)->cop_stashpv = ((pv) ? savepv(pv) : Nullch)) #endif #ifndef CopSTASH # define CopSTASH(c) (CopSTASHPV(c) ? gv_stashpv(CopSTASHPV(c),GV_ADD) : Nullhv) #endif #ifndef CopSTASH_set # define CopSTASH_set(c,hv) CopSTASHPV_set(c, (hv) ? HvNAME(hv) : Nullch) #endif #ifndef CopSTASH_eq # define CopSTASH_eq(c,hv) ((hv) && (CopSTASHPV(c) == HvNAME(hv) \ || (CopSTASHPV(c) && HvNAME(hv) \ && strEQ(CopSTASHPV(c), HvNAME(hv))))) #endif #else #ifndef CopFILEGV # define CopFILEGV(c) ((c)->cop_filegv) #endif #ifndef CopFILEGV_set # define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv)) #endif #ifndef CopFILE_set # define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv)) #endif #ifndef CopFILESV # define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : Nullsv) #endif #ifndef CopFILEAV # define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : Nullav) #endif #ifndef CopFILE # define CopFILE(c) (CopFILESV(c) ? SvPVX(CopFILESV(c)) : Nullch) #endif #ifndef CopSTASH # define CopSTASH(c) ((c)->cop_stash) #endif #ifndef CopSTASH_set # define CopSTASH_set(c,hv) ((c)->cop_stash = (hv)) #endif #ifndef CopSTASHPV # define CopSTASHPV(c) (CopSTASH(c) ? HvNAME(CopSTASH(c)) : Nullch) #endif #ifndef CopSTASHPV_set # define CopSTASHPV_set(c,pv) CopSTASH_set((c), gv_stashpv(pv,GV_ADD)) #endif #ifndef CopSTASH_eq # define CopSTASH_eq(c,hv) (CopSTASH(c) == (hv)) #endif #endif /* USE_ITHREADS */ #ifndef IN_PERL_COMPILETIME # define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling) #endif #ifndef IN_LOCALE_RUNTIME # define IN_LOCALE_RUNTIME (PL_curcop->op_private & HINT_LOCALE) #endif #ifndef IN_LOCALE_COMPILETIME # define IN_LOCALE_COMPILETIME (PL_hints & HINT_LOCALE) #endif #ifndef IN_LOCALE # define IN_LOCALE (IN_PERL_COMPILETIME ? IN_LOCALE_COMPILETIME : IN_LOCALE_RUNTIME) #endif #ifndef IS_NUMBER_IN_UV # define IS_NUMBER_IN_UV 0x01 #endif #ifndef IS_NUMBER_GREATER_THAN_UV_MAX # define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 #endif #ifndef IS_NUMBER_NOT_INT # define IS_NUMBER_NOT_INT 0x04 #endif #ifndef IS_NUMBER_NEG # define IS_NUMBER_NEG 0x08 #endif #ifndef IS_NUMBER_INFINITY # define IS_NUMBER_INFINITY 0x10 #endif #ifndef IS_NUMBER_NAN # define IS_NUMBER_NAN 0x20 #endif #ifndef GROK_NUMERIC_RADIX # define GROK_NUMERIC_RADIX(sp, send) grok_numeric_radix(sp, send) #endif #ifndef PERL_SCAN_GREATER_THAN_UV_MAX # define PERL_SCAN_GREATER_THAN_UV_MAX 0x02 #endif #ifndef PERL_SCAN_SILENT_ILLDIGIT # define PERL_SCAN_SILENT_ILLDIGIT 0x04 #endif #ifndef PERL_SCAN_ALLOW_UNDERSCORES # define PERL_SCAN_ALLOW_UNDERSCORES 0x01 #endif #ifndef PERL_SCAN_DISALLOW_PREFIX # define PERL_SCAN_DISALLOW_PREFIX 0x02 #endif #ifndef grok_numeric_radix #if defined(NEED_grok_numeric_radix) static bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); static #else extern bool DPPP_(my_grok_numeric_radix)(pTHX_ const char ** sp, const char * send); #endif #ifdef grok_numeric_radix # undef grok_numeric_radix #endif #define grok_numeric_radix(a,b) DPPP_(my_grok_numeric_radix)(aTHX_ a,b) #define Perl_grok_numeric_radix DPPP_(my_grok_numeric_radix) #if defined(NEED_grok_numeric_radix) || defined(NEED_grok_numeric_radix_GLOBAL) bool DPPP_(my_grok_numeric_radix)(pTHX_ const char **sp, const char *send) { #ifdef USE_LOCALE_NUMERIC #ifdef PL_numeric_radix_sv if (PL_numeric_radix_sv && IN_LOCALE) { STRLEN len; char* radix = SvPV(PL_numeric_radix_sv, len); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; } } #else /* older perls don't have PL_numeric_radix_sv so the radix * must manually be requested from locale.h */ #include dTHR; /* needed for older threaded perls */ struct lconv *lc = localeconv(); char *radix = lc->decimal_point; if (radix && IN_LOCALE) { STRLEN len = strlen(radix); if (*sp + len <= send && memEQ(*sp, radix, len)) { *sp += len; return TRUE; } } #endif #endif /* USE_LOCALE_NUMERIC */ /* always try "." if numeric radix didn't match because * we may have data from different locales mixed */ if (*sp < send && **sp == '.') { ++*sp; return TRUE; } return FALSE; } #endif #endif #ifndef grok_number #if defined(NEED_grok_number) static int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); static #else extern int DPPP_(my_grok_number)(pTHX_ const char * pv, STRLEN len, UV * valuep); #endif #ifdef grok_number # undef grok_number #endif #define grok_number(a,b,c) DPPP_(my_grok_number)(aTHX_ a,b,c) #define Perl_grok_number DPPP_(my_grok_number) #if defined(NEED_grok_number) || defined(NEED_grok_number_GLOBAL) int DPPP_(my_grok_number)(pTHX_ const char *pv, STRLEN len, UV *valuep) { const char *s = pv; const char *send = pv + len; const UV max_div_10 = UV_MAX / 10; const char max_mod_10 = UV_MAX % 10; int numtype = 0; int sawinf = 0; int sawnan = 0; while (s < send && isSPACE(*s)) s++; if (s == send) { return 0; } else if (*s == '-') { s++; numtype = IS_NUMBER_NEG; } else if (*s == '+') s++; if (s == send) return 0; /* next must be digit or the radix separator or beginning of infinity */ if (isDIGIT(*s)) { /* UVs are at least 32 bits, so the first 9 decimal digits cannot overflow. */ UV value = *s - '0'; /* This construction seems to be more optimiser friendly. (without it gcc does the isDIGIT test and the *s - '0' separately) With it gcc on arm is managing 6 instructions (6 cycles) per digit. In theory the optimiser could deduce how far to unroll the loop before checking for overflow. */ if (++s < send) { int digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { digit = *s - '0'; if (digit >= 0 && digit <= 9) { value = value * 10 + digit; if (++s < send) { /* Now got 9 digits, so need to check each time for overflow. */ digit = *s - '0'; while (digit >= 0 && digit <= 9 && (value < max_div_10 || (value == max_div_10 && digit <= max_mod_10))) { value = value * 10 + digit; if (++s < send) digit = *s - '0'; else break; } if (digit >= 0 && digit <= 9 && (s < send)) { /* value overflowed. skip the remaining digits, don't worry about setting *valuep. */ do { s++; } while (s < send && isDIGIT(*s)); numtype |= IS_NUMBER_GREATER_THAN_UV_MAX; goto skip_value; } } } } } } } } } } } } } } } } } } numtype |= IS_NUMBER_IN_UV; if (valuep) *valuep = value; skip_value: if (GROK_NUMERIC_RADIX(&s, send)) { numtype |= IS_NUMBER_NOT_INT; while (s < send && isDIGIT(*s)) /* optional digits after the radix */ s++; } } else if (GROK_NUMERIC_RADIX(&s, send)) { numtype |= IS_NUMBER_NOT_INT | IS_NUMBER_IN_UV; /* valuep assigned below */ /* no digits before the radix means we need digits after it */ if (s < send && isDIGIT(*s)) { do { s++; } while (s < send && isDIGIT(*s)); if (valuep) { /* integer approximation is valid - it's 0. */ *valuep = 0; } } else return 0; } else if (*s == 'I' || *s == 'i') { s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; if (s == send || (*s != 'F' && *s != 'f')) return 0; s++; if (s < send && (*s == 'I' || *s == 'i')) { s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; if (s == send || (*s != 'I' && *s != 'i')) return 0; s++; if (s == send || (*s != 'T' && *s != 't')) return 0; s++; if (s == send || (*s != 'Y' && *s != 'y')) return 0; s++; } sawinf = 1; } else if (*s == 'N' || *s == 'n') { /* XXX TODO: There are signaling NaNs and quiet NaNs. */ s++; if (s == send || (*s != 'A' && *s != 'a')) return 0; s++; if (s == send || (*s != 'N' && *s != 'n')) return 0; s++; sawnan = 1; } else return 0; if (sawinf) { numtype &= IS_NUMBER_NEG; /* Keep track of sign */ numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT; } else if (sawnan) { numtype &= IS_NUMBER_NEG; /* Keep track of sign */ numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT; } else if (s < send) { /* we can have an optional exponent part */ if (*s == 'e' || *s == 'E') { /* The only flag we keep is sign. Blow away any "it's UV" */ numtype &= IS_NUMBER_NEG; numtype |= IS_NUMBER_NOT_INT; s++; if (s < send && (*s == '-' || *s == '+')) s++; if (s < send && isDIGIT(*s)) { do { s++; } while (s < send && isDIGIT(*s)); } else return 0; } } while (s < send && isSPACE(*s)) s++; if (s >= send) return numtype; if (len == 10 && memEQ(pv, "0 but true", 10)) { if (valuep) *valuep = 0; return IS_NUMBER_IN_UV; } return 0; } #endif #endif /* * The grok_* routines have been modified to use warn() instead of * Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit, * which is why the stack variable has been renamed to 'xdigit'. */ #ifndef grok_bin #if defined(NEED_grok_bin) static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #ifdef grok_bin # undef grok_bin #endif #define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d) #define Perl_grok_bin DPPP_(my_grok_bin) #if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL) UV DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_2 = UV_MAX / 2; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading b or 0b. for compatibility silently suffer "b" and "0b" as valid binary numbers. */ if (len >= 1) { if (s[0] == 'b') { s++; len--; } else if (len >= 2 && s[0] == '0' && s[1] == 'b') { s+=2; len-=2; } } } for (; len-- && *s; s++) { char bit = *s; if (bit == '0' || bit == '1') { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. With gcc seems to be much straighter code than old scan_bin. */ redo: if (!overflowed) { if (value <= max_div_2) { value = (value << 1) | (bit - '0'); continue; } /* Bah. We're just overflowed. */ warn("Integer overflow in binary number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 2.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount. */ value_nv += (NV)(bit - '0'); continue; } if (bit == '_' && len && allow_underscores && (bit = s[1]) && (bit == '0' || bit == '1')) { --len; ++s; goto redo; } if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal binary digit '%c' ignored", *s); break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Binary number > 0b11111111111111111111111111111111 non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifndef grok_hex #if defined(NEED_grok_hex) static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #ifdef grok_hex # undef grok_hex #endif #define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d) #define Perl_grok_hex DPPP_(my_grok_hex) #if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL) UV DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_16 = UV_MAX / 16; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; const char *xdigit; if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) { /* strip off leading x or 0x. for compatibility silently suffer "x" and "0x" as valid hex numbers. */ if (len >= 1) { if (s[0] == 'x') { s++; len--; } else if (len >= 2 && s[0] == '0' && s[1] == 'x') { s+=2; len-=2; } } } for (; len-- && *s; s++) { xdigit = strchr((char *) PL_hexdigit, *s); if (xdigit) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. With gcc seems to be much straighter code than old scan_hex. */ redo: if (!overflowed) { if (value <= max_div_16) { value = (value << 4) | ((xdigit - PL_hexdigit) & 15); continue; } warn("Integer overflow in hexadecimal number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 16.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount of 16-tuples. */ value_nv += (NV)((xdigit - PL_hexdigit) & 15); continue; } if (*s == '_' && len && allow_underscores && s[1] && (xdigit = strchr((char *) PL_hexdigit, s[1]))) { --len; ++s; goto redo; } if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal hexadecimal digit '%c' ignored", *s); break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Hexadecimal number > 0xffffffff non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #ifndef grok_oct #if defined(NEED_grok_oct) static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); static #else extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result); #endif #ifdef grok_oct # undef grok_oct #endif #define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d) #define Perl_grok_oct DPPP_(my_grok_oct) #if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL) UV DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result) { const char *s = start; STRLEN len = *len_p; UV value = 0; NV value_nv = 0; const UV max_div_8 = UV_MAX / 8; bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES; bool overflowed = FALSE; for (; len-- && *s; s++) { /* gcc 2.95 optimiser not smart enough to figure that this subtraction out front allows slicker code. */ int digit = *s - '0'; if (digit >= 0 && digit <= 7) { /* Write it in this wonky order with a goto to attempt to get the compiler to make the common case integer-only loop pretty tight. */ redo: if (!overflowed) { if (value <= max_div_8) { value = (value << 3) | digit; continue; } /* Bah. We're just overflowed. */ warn("Integer overflow in octal number"); overflowed = TRUE; value_nv = (NV) value; } value_nv *= 8.0; /* If an NV has not enough bits in its mantissa to * represent a UV this summing of small low-order numbers * is a waste of time (because the NV cannot preserve * the low-order bits anyway): we could just remember when * did we overflow and in the end just multiply value_nv by the * right amount of 8-tuples. */ value_nv += (NV)digit; continue; } if (digit == ('_' - '0') && len && allow_underscores && (digit = s[1] - '0') && (digit >= 0 && digit <= 7)) { --len; ++s; goto redo; } /* Allow \octal to work the DWIM way (that is, stop scanning * as soon as non-octal characters are seen, complain only iff * someone seems to want to use the digits eight and nine). */ if (digit == 8 || digit == 9) { if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT)) warn("Illegal octal digit '%c' ignored", *s); } break; } if ( ( overflowed && value_nv > 4294967295.0) #if UVSIZE > 4 || (!overflowed && value > 0xffffffff ) #endif ) { warn("Octal number > 037777777777 non-portable"); } *len_p = s - start; if (!overflowed) { *flags = 0; return value; } *flags = PERL_SCAN_GREATER_THAN_UV_MAX; if (result) *result = value_nv; return UV_MAX; } #endif #endif #if !defined(my_snprintf) #if defined(NEED_my_snprintf) static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); static #else extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...); #endif #define my_snprintf DPPP_(my_my_snprintf) #define Perl_my_snprintf DPPP_(my_my_snprintf) #if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL) int DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...) { dTHX; int retval; va_list ap; va_start(ap, format); #ifdef HAS_VSNPRINTF retval = vsnprintf(buffer, len, format, ap); #else retval = vsprintf(buffer, format, ap); #endif va_end(ap); if (retval < 0 || (len > 0 && (Size_t)retval >= len)) Perl_croak(aTHX_ "panic: my_snprintf buffer overflow"); return retval; } #endif #endif #if !defined(my_sprintf) #if defined(NEED_my_sprintf) static int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); static #else extern int DPPP_(my_my_sprintf)(char * buffer, const char * pat, ...); #endif #define my_sprintf DPPP_(my_my_sprintf) #define Perl_my_sprintf DPPP_(my_my_sprintf) #if defined(NEED_my_sprintf) || defined(NEED_my_sprintf_GLOBAL) int DPPP_(my_my_sprintf)(char *buffer, const char* pat, ...) { va_list args; va_start(args, pat); vsprintf(buffer, pat, args); va_end(args); return strlen(buffer); } #endif #endif #ifdef NO_XSLOCKS # ifdef dJMPENV # define dXCPT dJMPENV; int rEtV = 0 # define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0) # define XCPT_TRY_END JMPENV_POP; # define XCPT_CATCH if (rEtV != 0) # define XCPT_RETHROW JMPENV_JUMP(rEtV) # else # define dXCPT Sigjmp_buf oldTOP; int rEtV = 0 # define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0) # define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf); # define XCPT_CATCH if (rEtV != 0) # define XCPT_RETHROW Siglongjmp(top_env, rEtV) # endif #endif #if !defined(my_strlcat) #if defined(NEED_my_strlcat) static Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); static #else extern Size_t DPPP_(my_my_strlcat)(char * dst, const char * src, Size_t size); #endif #define my_strlcat DPPP_(my_my_strlcat) #define Perl_my_strlcat DPPP_(my_my_strlcat) #if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL) Size_t DPPP_(my_my_strlcat)(char *dst, const char *src, Size_t size) { Size_t used, length, copy; used = strlen(dst); length = strlen(src); if (size > 0 && used < size - 1) { copy = (length >= size - used) ? size - used - 1 : length; memcpy(dst + used, src, copy); dst[used + copy] = '\0'; } return used + length; } #endif #endif #if !defined(my_strlcpy) #if defined(NEED_my_strlcpy) static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); static #else extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size); #endif #define my_strlcpy DPPP_(my_my_strlcpy) #define Perl_my_strlcpy DPPP_(my_my_strlcpy) #if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL) Size_t DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size) { Size_t length, copy; length = strlen(src); if (size > 0) { copy = (length >= size) ? size - 1 : length; memcpy(dst, src, copy); dst[copy] = '\0'; } return length; } #endif #endif #ifndef PERL_PV_ESCAPE_QUOTE # define PERL_PV_ESCAPE_QUOTE 0x0001 #endif #ifndef PERL_PV_PRETTY_QUOTE # define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE #endif #ifndef PERL_PV_PRETTY_ELLIPSES # define PERL_PV_PRETTY_ELLIPSES 0x0002 #endif #ifndef PERL_PV_PRETTY_LTGT # define PERL_PV_PRETTY_LTGT 0x0004 #endif #ifndef PERL_PV_ESCAPE_FIRSTCHAR # define PERL_PV_ESCAPE_FIRSTCHAR 0x0008 #endif #ifndef PERL_PV_ESCAPE_UNI # define PERL_PV_ESCAPE_UNI 0x0100 #endif #ifndef PERL_PV_ESCAPE_UNI_DETECT # define PERL_PV_ESCAPE_UNI_DETECT 0x0200 #endif #ifndef PERL_PV_ESCAPE_ALL # define PERL_PV_ESCAPE_ALL 0x1000 #endif #ifndef PERL_PV_ESCAPE_NOBACKSLASH # define PERL_PV_ESCAPE_NOBACKSLASH 0x2000 #endif #ifndef PERL_PV_ESCAPE_NOCLEAR # define PERL_PV_ESCAPE_NOCLEAR 0x4000 #endif #ifndef PERL_PV_ESCAPE_RE # define PERL_PV_ESCAPE_RE 0x8000 #endif #ifndef PERL_PV_PRETTY_NOCLEAR # define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR #endif #ifndef PERL_PV_PRETTY_DUMP # define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE #endif #ifndef PERL_PV_PRETTY_REGPROP # define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE #endif /* Hint: pv_escape * Note that unicode functionality is only backported to * those perl versions that support it. For older perl * versions, the implementation will fall back to bytes. */ #ifndef pv_escape #if defined(NEED_pv_escape) static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); static #else extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags); #endif #ifdef pv_escape # undef pv_escape #endif #define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f) #define Perl_pv_escape DPPP_(my_pv_escape) #if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL) char * DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags) { const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\'; const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc; char octbuf[32] = "%123456789ABCDF"; STRLEN wrote = 0; STRLEN chsize = 0; STRLEN readsize = 1; #if defined(is_utf8_string) && defined(utf8_to_uvchr) bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0; #endif const char *pv = str; const char * const end = pv + count; octbuf[0] = esc; if (!(flags & PERL_PV_ESCAPE_NOCLEAR)) sv_setpvs(dsv, ""); #if defined(is_utf8_string) && defined(utf8_to_uvchr) if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count)) isuni = 1; #endif for (; pv < end && (!max || wrote < max) ; pv += readsize) { const UV u = #if defined(is_utf8_string) && defined(utf8_to_uvchr) isuni ? utf8_to_uvchr((U8*)pv, &readsize) : #endif (U8)*pv; const U8 c = (U8)u & 0xFF; if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) { if (flags & PERL_PV_ESCAPE_FIRSTCHAR) chsize = my_snprintf(octbuf, sizeof octbuf, "%"UVxf, u); else chsize = my_snprintf(octbuf, sizeof octbuf, "%cx{%"UVxf"}", esc, u); } else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) { chsize = 1; } else { if (c == dq || c == esc || !isPRINT(c)) { chsize = 2; switch (c) { case '\\' : /* fallthrough */ case '%' : if (c == esc) octbuf[1] = esc; else chsize = 1; break; case '\v' : octbuf[1] = 'v'; break; case '\t' : octbuf[1] = 't'; break; case '\r' : octbuf[1] = 'r'; break; case '\n' : octbuf[1] = 'n'; break; case '\f' : octbuf[1] = 'f'; break; case '"' : if (dq == '"') octbuf[1] = '"'; else chsize = 1; break; default: chsize = my_snprintf(octbuf, sizeof octbuf, pv < end && isDIGIT((U8)*(pv+readsize)) ? "%c%03o" : "%c%o", esc, c); } } else { chsize = 1; } } if (max && wrote + chsize > max) { break; } else if (chsize > 1) { sv_catpvn(dsv, octbuf, chsize); wrote += chsize; } else { char tmp[2]; my_snprintf(tmp, sizeof tmp, "%c", c); sv_catpvn(dsv, tmp, 1); wrote++; } if (flags & PERL_PV_ESCAPE_FIRSTCHAR) break; } if (escaped != NULL) *escaped= pv - str; return SvPVX(dsv); } #endif #endif #ifndef pv_pretty #if defined(NEED_pv_pretty) static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); static #else extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags); #endif #ifdef pv_pretty # undef pv_pretty #endif #define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g) #define Perl_pv_pretty DPPP_(my_pv_pretty) #if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL) char * DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags) { const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%'; STRLEN escaped; if (!(flags & PERL_PV_PRETTY_NOCLEAR)) sv_setpvs(dsv, ""); if (dq == '"') sv_catpvs(dsv, "\""); else if (flags & PERL_PV_PRETTY_LTGT) sv_catpvs(dsv, "<"); if (start_color != NULL) sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color)); pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR); if (end_color != NULL) sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color)); if (dq == '"') sv_catpvs(dsv, "\""); else if (flags & PERL_PV_PRETTY_LTGT) sv_catpvs(dsv, ">"); if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count) sv_catpvs(dsv, "..."); return SvPVX(dsv); } #endif #endif #ifndef pv_display #if defined(NEED_pv_display) static char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); static #else extern char * DPPP_(my_pv_display)(pTHX_ SV * dsv, const char * pv, STRLEN cur, STRLEN len, STRLEN pvlim); #endif #ifdef pv_display # undef pv_display #endif #define pv_display(a,b,c,d,e) DPPP_(my_pv_display)(aTHX_ a,b,c,d,e) #define Perl_pv_display DPPP_(my_pv_display) #if defined(NEED_pv_display) || defined(NEED_pv_display_GLOBAL) char * DPPP_(my_pv_display)(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim) { pv_pretty(dsv, pv, cur, pvlim, NULL, NULL, PERL_PV_PRETTY_DUMP); if (len > cur && pv[cur] == '\0') sv_catpvs(dsv, "\\0"); return SvPVX(dsv); } #endif #endif #endif /* _P_P_PORTABILITY_H_ */ /* End of File ppport.h */ Convert-Binary-C-0.76/META.yml0000644000175000001440000000151411550665107014463 0ustar mhxusers--- #YAML:1.0 name: Convert-Binary-C version: 0.76 abstract: Binary Data Conversion using C Types author: - Marcus Holland-Moritz license: perl distribution_type: module configure_requires: ExtUtils::MakeMaker: 0 build_requires: ExtUtils::MakeMaker: 0 requires: {} resources: bugtracker: http://rt.cpan.org/NoAuth/Bugs.html?Dist=Convert-Binary-C homepage: http://search.cpan.org/~mhx/Convert-Binary-C/ license: http://dev.perl.org/licenses/ MailingList: convert-binary-c@yahoogroups.com no_index: directory: - t - inc - support file: - bin/elf.PL generated_by: ExtUtils::MakeMaker version 6.56 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 Convert-Binary-C-0.76/typemap0000644000175000001440000000226511550664631014621 0ustar mhxusers################################################################################ # # $Project: /Convert-Binary-C $ # $Author: mhx $ # $Date: 2011/04/10 12:32:29 +0200 $ # $Revision: 18 $ # $Source: /typemap $ # ################################################################################ # # Copyright (c) 2002-2011 Marcus Holland-Moritz. All rights reserved. # This program is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. # ################################################################################ TYPEMAP const char * T_PV CBC * T_CBC_OBJECT INPUT T_CBC_OBJECT if (sv_isobject($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV) { HV *hv = (HV *) SvRV($arg); SV **sv = hv_fetch(hv, \"\", 0, 0); if (sv) { IV tmp = SvIV(*sv); $var = INT2PTR($type, tmp); if ($var == NULL) Perl_croak(aTHX_ \"${Package}::$func_name(): $var is NULL\"); if ($var->hv != hv) Perl_croak(aTHX_ \"${Package}::$func_name(): $var->hv is corrupt\"); } else Perl_croak(aTHX_ \"${Package}::$func_name(): $var is corrupt\"); } else Perl_croak(aTHX_ \"${Package}::$func_name(): $var is not a blessed hash reference\"); Convert-Binary-C-0.76/examples/0000755000175000001440000000000011550665107015027 5ustar mhxusersConvert-Binary-C-0.76/examples/README0000644000175000001440000000032311550664617015712 0ustar mhxusersThe 'examples' directory is empty until you actually build the module. The example scripts will then be automatically generated. For further information, please consult the README file in the parent directory. Convert-Binary-C-0.76/MANIFEST0000644000175000001440000002372311550665107014351 0ustar mhxusersbin/ccconfig bin/convert.PL bin/elf.PL bin/memmap.PL bin/perltypes.PL C.xs cbc/basic.c cbc/basic.h cbc/cbc.h cbc/debug.c cbc/debug.h cbc/dimension.c cbc/dimension.h cbc/hook.c cbc/hook.h cbc/idl.c cbc/idl.h cbc/init.c cbc/init.h cbc/macros.c cbc/macros.h cbc/member.c cbc/member.h cbc/object.c cbc/object.h cbc/option.c cbc/option.h cbc/pack.c cbc/pack.h cbc/sourcify.c cbc/sourcify.h cbc/tag.c cbc/tag.h cbc/type.c cbc/type.h cbc/typeinfo.c cbc/typeinfo.h cbc/util.c cbc/util.h Changes ctlib/arch.pl ctlib/bitfields.c ctlib/bitfields.h ctlib/byteorder.c ctlib/byteorder.h ctlib/cppreent.h ctlib/ctdebug.c ctlib/ctdebug.h ctlib/cterror.c ctlib/cterror.h ctlib/ctparse.c ctlib/ctparse.h ctlib/cttags.c ctlib/cttags.h ctlib/cttype.c ctlib/cttype.h ctlib/fileinfo.c ctlib/fileinfo.h ctlib/layout.c ctlib/layout.h ctlib/parser.h ctlib/parser.y ctlib/pragma.h ctlib/pragma.y ctlib/y_parser.c ctlib/y_pragma.c examples/README lib/Convert/Binary/C.pm lib/Convert/Binary/C/Cached.pm Makefile.PL MANIFEST ppport.h README support/Test.pm support/Test/Builder.pm support/Test/Builder/Module.pm support/Test/Builder/Tester.pm support/Test/Builder/Tester/Color.pm support/Test/Harness.pm support/Test/Harness/Assert.pm support/Test/Harness/Iterator.pm support/Test/Harness/Point.pm support/Test/Harness/Straps.pm support/Test/More.pm test.pl tests/001_init.t tests/101_basic.t tests/201_config.t tests/202_misc.t tests/203_warnings.t tests/204_enum.t tests/205_pack.t tests/206_parse.t tests/207_typedef.t tests/208_float.t tests/209_sourcify.t tests/210_depend.t tests/211_clone.t tests/212_clean.t tests/213_string.t tests/214_cache.t tests/215_local.t tests/216_language.t tests/217_preproc.t tests/218_member.t tests/219_def.t tests/220_new.t tests/221_asm.t tests/222_ieee.t tests/223_initializer.t tests/224_typeof.t tests/225_magic.t tests/226_indexed.t tests/227_flexarray.t tests/228_hooks.t tests/229_substr.t tests/230_compiler.t tests/231_align.t tests/232_native.t tests/233_tags.t tests/234_format.t tests/235_basic.t tests/236_typeinfo.t tests/237_parser.t tests/238_byteorder.t tests/239_macros.t tests/240_offsetof.t tests/241_sizeof.t tests/242_dimension.t tests/243_parser.t tests/501_bfsimple.t tests/502_bfmicrosoft.t tests/503_bfgeneric.t tests/601_speed.t tests/602_threads.t tests/603_complex.t tests/701_debug.t tests/702_env.t tests/703_bugs.t tests/801_examples.t tests/802_pod.t tests/803_pod_coverage.t tests/901_memory.t tests/cache/cache.1 tests/cache/cache.2 tests/cache/header.1 tests/cache/header.2 tests/cache/sub/dir.1 tests/cache/sub/dir.2 tests/compiler/gcc-arm.bin tests/compiler/gcc-arm.cfg tests/compiler/gcc-arm.dat tests/compiler/gcc-hp64.bin tests/compiler/gcc-hp64.cfg tests/compiler/gcc-hp64.dat tests/compiler/gcc-vax.bin tests/compiler/gcc-vax.cfg tests/compiler/gcc-vax.dat tests/compiler/test.h tests/include/config.pl tests/include/files/empty.h tests/include/files/files.h tests/include/files/ifdef.h tests/include/files/ifnonl.h tests/include/files/ifnull.h tests/include/files/nldos.h tests/include/files/nlmac.h tests/include/files/nlnone.h tests/include/files/nlunix.h tests/include/files/something.h tests/include/files/trigraph.h tests/include/files/unmatched.h tests/include/gccinc/float.h tests/include/gccinc/limits.h tests/include/gccinc/stdarg.h tests/include/gccinc/stddef.h tests/include/gccinc/syslimits.h tests/include/include.c tests/include/include/_G_config.h tests/include/include/alloca.h tests/include/include/arpa/inet.h tests/include/include/asm-generic/errno-base.h tests/include/include/asm-generic/errno.h tests/include/include/asm-generic/ioctl.h tests/include/include/asm/errno.h tests/include/include/asm/ioctl.h tests/include/include/asm/ioctls.h tests/include/include/asm/param.h tests/include/include/asm/sigcontext.h tests/include/include/asm/socket.h tests/include/include/asm/sockios.h tests/include/include/bits/byteswap.h tests/include/include/bits/confname.h tests/include/include/bits/dirent.h tests/include/include/bits/endian.h tests/include/include/bits/environments.h tests/include/include/bits/errno.h tests/include/include/bits/fcntl.h tests/include/include/bits/huge_val.h tests/include/include/bits/huge_valf.h tests/include/include/bits/huge_vall.h tests/include/include/bits/in.h tests/include/include/bits/inf.h tests/include/include/bits/ioctl-types.h tests/include/include/bits/ioctls.h tests/include/include/bits/ipc.h tests/include/include/bits/ipctypes.h tests/include/include/bits/local_lim.h tests/include/include/bits/locale.h tests/include/include/bits/mathcalls.h tests/include/include/bits/mathdef.h tests/include/include/bits/nan.h tests/include/include/bits/netdb.h tests/include/include/bits/posix1_lim.h tests/include/include/bits/posix2_lim.h tests/include/include/bits/posix_opt.h tests/include/include/bits/pthreadtypes.h tests/include/include/bits/resource.h tests/include/include/bits/select.h tests/include/include/bits/sem.h tests/include/include/bits/setjmp.h tests/include/include/bits/sigaction.h tests/include/include/bits/sigcontext.h tests/include/include/bits/siginfo.h tests/include/include/bits/signum.h tests/include/include/bits/sigset.h tests/include/include/bits/sigstack.h tests/include/include/bits/sigthread.h tests/include/include/bits/sockaddr.h tests/include/include/bits/socket.h tests/include/include/bits/stat.h tests/include/include/bits/stdio_lim.h tests/include/include/bits/sys_errlist.h tests/include/include/bits/time.h tests/include/include/bits/types.h tests/include/include/bits/typesizes.h tests/include/include/bits/uio.h tests/include/include/bits/waitflags.h tests/include/include/bits/waitstatus.h tests/include/include/bits/wchar.h tests/include/include/bits/wordsize.h tests/include/include/bits/xopen_lim.h tests/include/include/ctype.h tests/include/include/dirent.h tests/include/include/endian.h tests/include/include/errno.h tests/include/include/fcntl.h tests/include/include/features.h tests/include/include/gconv.h tests/include/include/getopt.h tests/include/include/gnu/stubs-32.h tests/include/include/gnu/stubs.h tests/include/include/inttypes.h tests/include/include/libio.h tests/include/include/limits.h tests/include/include/linux/compiler.h tests/include/include/linux/errno.h tests/include/include/linux/limits.h tests/include/include/linux/param.h tests/include/include/locale.h tests/include/include/math.h tests/include/include/netdb.h tests/include/include/netinet/in.h tests/include/include/rpc/netdb.h tests/include/include/setjmp.h tests/include/include/signal.h tests/include/include/stdint.h tests/include/include/stdio.h tests/include/include/stdlib.h tests/include/include/string.h tests/include/include/sys/cdefs.h tests/include/include/sys/file.h tests/include/include/sys/ioctl.h tests/include/include/sys/ipc.h tests/include/include/sys/param.h tests/include/include/sys/resource.h tests/include/include/sys/select.h tests/include/include/sys/sem.h tests/include/include/sys/socket.h tests/include/include/sys/stat.h tests/include/include/sys/sysmacros.h tests/include/include/sys/time.h tests/include/include/sys/times.h tests/include/include/sys/ttydefaults.h tests/include/include/sys/types.h tests/include/include/sys/ucontext.h tests/include/include/sys/uio.h tests/include/include/sys/wait.h tests/include/include/time.h tests/include/include/unistd.h tests/include/include/wchar.h tests/include/include/xlocale.h tests/include/perlinc/av.h tests/include/perlinc/config.h tests/include/perlinc/cop.h tests/include/perlinc/cv.h tests/include/perlinc/embed.h tests/include/perlinc/embedvar.h tests/include/perlinc/EXTERN.h tests/include/perlinc/form.h tests/include/perlinc/gv.h tests/include/perlinc/handy.h tests/include/perlinc/hv.h tests/include/perlinc/intrpvar.h tests/include/perlinc/iperlsys.h tests/include/perlinc/mg.h tests/include/perlinc/op.h tests/include/perlinc/opcode.h tests/include/perlinc/opnames.h tests/include/perlinc/overload.h tests/include/perlinc/pad.h tests/include/perlinc/patchlevel.h tests/include/perlinc/perl.h tests/include/perlinc/perlio.h tests/include/perlinc/perlvars.h tests/include/perlinc/perly.h tests/include/perlinc/pp.h tests/include/perlinc/pp_proto.h tests/include/perlinc/proto.h tests/include/perlinc/regexp.h tests/include/perlinc/scope.h tests/include/perlinc/sv.h tests/include/perlinc/thrdvar.h tests/include/perlinc/thread.h tests/include/perlinc/unixish.h tests/include/perlinc/utf8.h tests/include/perlinc/util.h tests/include/perlinc/warnings.h tests/include/sizeof.pl tests/include/util.c tests/parser/bug1.c tests/parser/context.c TODO token/blproperty.pl token/config.pl token/hook.pl token/parser.pl token/pragma.pl token/t_basic.c token/t_blproperty.c token/t_blproperty.h token/t_ckeytok.c token/t_config.c token/t_hookid.c token/t_hookid.h token/t_keywords.c token/t_parser.c token/t_pragma.c token/t_sourcify.c token/t_tag.c token/t_tag.h token/tag.pl typemap ucpp/arith.c ucpp/arith.h ucpp/assert.c ucpp/atest.c ucpp/config.h ucpp/cpp.c ucpp/cpp.h ucpp/eval.c ucpp/hash.c ucpp/hash.h ucpp/lexer.c ucpp/macro.c ucpp/Makefile ucpp/mem.c ucpp/mem.h ucpp/nhash.c ucpp/nhash.h ucpp/ppdir.pl ucpp/README ucpp/reent.h ucpp/sample.c ucpp/sample_r.c ucpp/scanppd.c ucpp/tune.h ucpp/ucpp.1 ucpp/ucppi.h util/ARTISTIC util/ccattr.h util/config.h util/doxyfile util/doxyinc/Alloc.c util/doxyinc/doxygen.css util/doxyinc/footer.inc util/doxyinc/header.inc util/doxyinc/LinkedList.c util/doxyinc/mem_debug.dat util/doxyinc/mem_debug.out util/doxyinc/memdb_large.out util/GPL util/hash.c util/hash.h util/list.c util/list.h util/Makefile util/memalloc.c util/memalloc.h util/t/maketests.pl util/t/test_memalloc.pl util/tool/check_alloc.pl util/tool/test util/tool/test.in util/tool/test.out xsubs/arg.xs xsubs/cbc.xs xsubs/clean.xs xsubs/clone.xs xsubs/compound.xs xsubs/configure.xs xsubs/def.xs xsubs/defined.xs xsubs/dependencies.xs xsubs/enum.xs xsubs/feature.xs xsubs/include.xs xsubs/initializer.xs xsubs/macro.xs xsubs/member.xs xsubs/native.xs xsubs/offsetof.xs xsubs/pack.xs xsubs/parse.xs xsubs/sizeof.xs xsubs/sourcify.xs xsubs/tag.xs xsubs/typedef.xs xsubs/typeof.xs META.yml Module meta-data (added by MakeMaker)